Mac OSX Launcher: Cleanup and update in UI classes. Swift 4.2

This commit is contained in:
meeh
2019-05-02 22:51:35 +00:00
parent 7cb0c9bbb4
commit 540e7c37e0
3 changed files with 54 additions and 45 deletions

View File

@ -41,7 +41,7 @@ class LogViewerViewController : NSTabViewItem {
let nextOutput = previousOutput + "\n" + outputString let nextOutput = previousOutput + "\n" + outputString
self.textFieldView?.string = nextOutput self.textFieldView?.string = nextOutput
let range = NSRange(location:nextOutput.characters.count,length:0) let range = NSRange(location:nextOutput.count,length:0)
self.textFieldView?.scrollRangeToVisible(range) self.textFieldView?.scrollRangeToVisible(range)
} }
DispatchQueue.main.async(execute: workTask) DispatchQueue.main.async(execute: workTask)

View File

@ -34,7 +34,7 @@ import Cocoa
@objc func actionBtnOpenConsole(_ sender: Any?) { @objc func actionBtnOpenConsole(_ sender: Any?) {
SwiftMainDelegate.openLink(url: "http://localhost:7657") SwiftApplicationDelegate.openLink(url: "http://localhost:7657")
} }
@objc func actionBtnStartRouter(_ sender: Any?) { @objc func actionBtnStartRouter(_ sender: Any?) {
@ -80,7 +80,7 @@ import Cocoa
@objc func actionBtnLaunchFirefox(_ sender: Any?) { @objc func actionBtnLaunchFirefox(_ sender: Any?) {
DispatchQueue.global(qos: .background).async { DispatchQueue.global(qos: .background).async {
Swift.print("Starting firefox") Swift.print("Starting firefox")
FirefoxManager.shared().executeFirefox() let _ = FirefoxManager.shared().executeFirefox()
} }
} }

View File

@ -8,46 +8,30 @@
import Foundation import Foundation
import Cocoa import Cocoa
import Sparkle
@objc class StatusBarController: NSObject, NSMenuDelegate { @objc class StatusBarController: NSObject, NSMenuDelegate {
let popover = NSPopover() let popover = NSPopover()
let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength) let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
let storyboard = NSStoryboard(name: "Storyboard", bundle: Bundle.main) let storyboard = NSStoryboard(name: "Storyboard", bundle: Bundle.main)
let updaterObject: SUUpdater = SUUpdater()
var ctrl : PopoverViewController? var ctrl : PopoverViewController?
private static var preferencesController: NSWindowController? private static var preferencesController: NSWindowController?
private static var experimentalConsoleViewController: NSWindowController? private static var experimentalConsoleViewController: NSWindowController?
@IBOutlet var routerStatusTabView: RouterStatusView? @IBOutlet var routerStatusTabView: RouterStatusView?
@IBAction func handleNativePreferencesClicked(_ sender: Any) { @IBAction func handleNativePrefMenuClicked(_ sender: Any) {
StatusBarController.launchPreferences(sender) StatusBarController.launchPreferences(sender)
} }
//var updateObjectRef : SUUpdater? //var updateObjectRef : SUUpdater?
@objc func handleOpenConsole(_ sender: Any?) { @objc func handleOpenConsole(_ sender: Any?) {
SwiftMainDelegate.openLink(url: "http://localhost:7657") SwiftApplicationDelegate.openLink(url: "http://localhost:7657")
}
@objc func constructMenu() -> NSMenu {
let menu = NSMenu()
/*let updateMenuItem = NSMenuItem(title: "Check for updates", action: #selector(self.updateObjectRef?.checkForUpdates(_:)), keyEquivalent: "U")
updateMenuItem.isEnabled = true
*/
let preferencesMenuItem = NSMenuItem(title: "Preferences", action: #selector(StatusBarController.launchPreferences(_:)), keyEquivalent: "P")
preferencesMenuItem.isEnabled = true
menu.addItem(NSMenuItem(title: "Open I2P Console", action: #selector(self.handleOpenConsole(_:)), keyEquivalent: "O"))
menu.addItem(NSMenuItem.separator())
//menu.addItem(updateMenuItem)
menu.addItem(preferencesMenuItem)
menu.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem(title: "Quit I2P Launcher", action: #selector(SwiftMainDelegate.terminate(_:)), keyEquivalent: "q"))
return menu
} }
static func onExperimentalConsoleViewClick(_ sender: NSButton) { static func onExperimentalConsoleViewClick(_ sender: NSButton) {
@ -67,7 +51,7 @@ import Cocoa
} }
} }
static func launchPreferences(_ sender: Any) { @objc static func launchPreferences(_ sender: Any) {
print("Preferences clicked") print("Preferences clicked")
if !(preferencesController != nil) { if !(preferencesController != nil) {
let storyboard = NSStoryboard(name: "Preferences", bundle: Bundle.main) let storyboard = NSStoryboard(name: "Preferences", bundle: Bundle.main)
@ -81,10 +65,14 @@ import Cocoa
} }
} }
@objc func launchPreferencesStaticProxy(_ sender: Any) {
StatusBarController.launchPreferences(sender)
}
static func launchRouterConsole(_ sender: Any) { static func launchRouterConsole(_ sender: Any) {
if (!Preferences.shared().featureToggleExperimental) { if (!Preferences.shared().featureToggleExperimental) {
// The normal... // The normal...
NSWorkspace.shared().open(URL(string: "http://127.0.0.1:7657")!) NSWorkspace.shared.open(URL(string: "http://127.0.0.1:7657")!)
} else { } else {
// Experimental // Experimental
} }
@ -92,7 +80,7 @@ import Cocoa
func pidReaction(information:Any?){ func pidReaction(information:Any?){
let pidStr = information as! String let pidStr = information as! String
NSLog("PID! %@", pidStr) NSLog("Router PID is %@", pidStr)
showPopover(sender: nil) showPopover(sender: nil)
RouterManager.shared().lastRouterPid = pidStr RouterManager.shared().lastRouterPid = pidStr
self.ctrl?.getRouterStatusView()?.needsDisplay = true self.ctrl?.getRouterStatusView()?.needsDisplay = true
@ -111,12 +99,12 @@ import Cocoa
RouterManager.shared().eventManager.listenTo(eventName: "toggle_popover", action: event_toggle) RouterManager.shared().eventManager.listenTo(eventName: "toggle_popover", action: event_toggle)
FirefoxManager.shared().tryAutoDetect() let _ = FirefoxManager.shared().tryAutoDetect()
print("Is Firefox found? \(FirefoxManager.shared().IsFirefoxFound())") print("Is Firefox found? \(FirefoxManager.shared().IsFirefoxFound())")
print("Is Firefox profile extracted at \(Preferences.shared()["I2Pref_firefoxProfilePath"] as! String)? \(FirefoxManager.shared().IsProfileExtracted())") print("Is Firefox profile extracted at \(Preferences.shared()["I2Pref_firefoxProfilePath"] as! String)? \(FirefoxManager.shared().IsProfileExtracted())")
if (!FirefoxManager.shared().IsProfileExtracted()) { if (!FirefoxManager.shared().IsProfileExtracted()) {
FirefoxManager.shared().unzipProfile() let _ = FirefoxManager.shared().unzipProfile()
} }
if let button = statusItem.button { if let button = statusItem.button {
@ -135,27 +123,51 @@ import Cocoa
} }
@IBAction func quitClicked(_ sender: NSMenuItem) { @IBAction func quitClicked(_ sender: NSMenuItem) {
NSApplication.shared().terminate(self) NSApplication.shared.terminate(self)
} }
// Submenu @objc func checkUpdateClicked(_ sender: NSMenuItem) {
//DispatchQueue(label: "updaterqueue").async {}
self.updaterObject.checkForUpdates(sender)
}
@IBAction func startRouterClicked(_ sender: NSMenuItem) { }
/**
*
* Here you find menu & popover trigger related code.
*
*/
extension StatusBarController {
// This is the construction of the context (right-click) menu spawned at the system tray icon.
@objc func constructMenu() -> NSMenu {
let menu = NSMenu()
} let updateMenuItem = NSMenuItem(title: "Check for updates", action: #selector(self.checkUpdateClicked(_:)), keyEquivalent: "U")
updateMenuItem.isEnabled = true
@IBAction func restartRouterClicked(_ sender: NSMenuItem) { updateMenuItem.target = self
}
@IBAction func stopRouterClicked(_ sender: NSMenuItem) {
let preferencesMenuItem = NSMenuItem(title: "Preferences", action: #selector(self.launchPreferencesStaticProxy(_:)), keyEquivalent: "P")
preferencesMenuItem.isEnabled = true
preferencesMenuItem.target = self
menu.addItem(NSMenuItem(title: "Open I2P Console", action: #selector(self.handleOpenConsole(_:)), keyEquivalent: "O"))
menu.addItem(NSMenuItem.separator())
menu.addItem(updateMenuItem)
menu.addItem(preferencesMenuItem)
menu.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem(title: "Quit I2P Launcher", action: #selector(SwiftApplicationDelegate.terminate(_:)), keyEquivalent: "q"))
return menu
} }
func statusBarButtonClicked(sender: NSStatusBarButton) { @objc func statusBarButtonClicked(sender: NSStatusBarButton) {
let event = NSApp.currentEvent! let event = NSApp.currentEvent!
if event.type == NSEventType.rightMouseUp { if event.type == NSEvent.EventType.rightMouseUp {
closePopover(sender: nil) closePopover(sender: nil)
let ctxMenu = constructMenu() let ctxMenu = constructMenu()
@ -191,7 +203,4 @@ import Cocoa
func closePopover(sender: AnyObject?) { func closePopover(sender: AnyObject?) {
popover.performClose(sender) popover.performClose(sender)
} }
} }