A small menubar app that allows you to switch between R versions quickly (if you have multiple versions of R framework installed).
https://rud.is/rswitch
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
3.1 KiB
66 lines
3.1 KiB
//
|
|
// Utils.swift
|
|
// RSwitch
|
|
//
|
|
// Created by hrbrmstr on 8/24/19.
|
|
// Copyright © 2019 Bob Rudis. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import Cocoa
|
|
|
|
public func browse(_ urlString : String) {
|
|
let url = URL(string: urlString)!
|
|
NSWorkspace.shared.open(url)
|
|
}
|
|
|
|
extension AppDelegate {
|
|
|
|
struct app_urls {
|
|
static let mac_r_project = "https://mac.r-project.org/"
|
|
static let macos_cran = "https://cran.rstudio.org/bin/macosx/"
|
|
static let r_sig_mac = "https://stat.ethz.ch/pipermail/r-sig-mac/"
|
|
static let rstudio_dailies = "https://dailies.rstudio.com/rstudio/oss/mac/"
|
|
static let latest_rstudio_dailies = "https://www.rstudio.org/download/latest/daily/desktop/mac/RStudio-latest.dmg"
|
|
static let r_admin_macos = "https://cran.rstudio.org/doc/manuals/R-admin.html#Installing-R-under-macOS"
|
|
static let r_devel_news = "https://developer.r-project.org/blosxom.cgi/R-devel/NEWS"
|
|
static let r_stackoverflow = "https://stackoverflow.com/questions/tagged/r"
|
|
static let rstudio_community = "https://community.rstudio.com/"
|
|
static let version_check = "https://rud.is/rswitch/releases/current-version.txt"
|
|
static let releases = "https://git.rud.is/hrbrmstr/RSwitch/releases"
|
|
}
|
|
|
|
@objc func browse_r_macos_dev_page(_ sender: NSMenuItem?) { browse(app_urls.mac_r_project) }
|
|
@objc func browse_r_macos_cran_page(_ sender: NSMenuItem?) { browse(app_urls.macos_cran) }
|
|
@objc func browse_r_sig_mac_page(_ sender: NSMenuItem?) { browse(app_urls.r_sig_mac) }
|
|
@objc func browse_rstudio_mac_dailies_page(_ sender: NSMenuItem?) { browse(app_urls.rstudio_dailies) }
|
|
@objc func browse_r_admin_macos_page(_ sender: NSMenuItem?) { browse(app_urls.r_admin_macos) }
|
|
@objc func browse_r_devel_news_page(_ sender: NSMenuItem?) { browse(app_urls.r_devel_news) }
|
|
@objc func browse_r_stackoverflow_page(_ sender: NSMenuItem?) { browse(app_urls.r_stackoverflow) }
|
|
@objc func browse_rstudio_community_page(_ sender: NSMenuItem?) { browse(app_urls.rstudio_community) }
|
|
|
|
// Show about dialog
|
|
@objc func about(_ sender: NSMenuItem?) { abtController.showWindow(self) }
|
|
|
|
// Show the framework dir in a new Finder window
|
|
@objc func openFrameworksDir(_ sender: NSMenuItem?) { NSWorkspace.shared.openFile(app_dirs.macos_r_framework, withApplication: "Finder") }
|
|
|
|
// Launch RStudio
|
|
@objc func launchRStudio(_ sender: NSMenuItem?) {
|
|
if (NSEvent.modifierFlags.contains(NSEvent.ModifierFlags.control)) {
|
|
NSWorkspace.shared.launchApplication(withBundleIdentifier: "org.rstudio.RStudio", options: NSWorkspace.LaunchOptions.newInstance, additionalEventParamDescriptor: nil, launchIdentifier: nil)
|
|
} else {
|
|
NSWorkspace.shared.launchApplication("RStudio.app")
|
|
}
|
|
}
|
|
|
|
// Launch R.app
|
|
@objc func launchRApp(_ sender: NSMenuItem?) {
|
|
if (NSEvent.modifierFlags.contains(NSEvent.ModifierFlags.control)) {
|
|
NSWorkspace.shared.launchApplication(withBundleIdentifier: "org.R-project.R", options: NSWorkspace.LaunchOptions.newInstance, additionalEventParamDescriptor: nil, launchIdentifier: nil)
|
|
} else {
|
|
NSWorkspace.shared.launchApplication("R.app")
|
|
}
|
|
}
|
|
|
|
}
|
|
|