diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index 971c5f8..5328a9c 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -25,6 +25,7 @@ C476FF9822B0DD830098105B /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C476FF9722B0DD830098105B /* Alert.swift */; }; C4811D2422D70A4700B5F6B3 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2322D70A4700B5F6B3 /* App.swift */; }; C4811D2A22D70F9A00B5F6B3 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */; }; + C486EFFC2586931100A02B2C /* PhpMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C486EFFB2586931100A02B2C /* PhpMenuItem.swift */; }; C4D8016622B1584700C6DA1B /* Startup.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D8016522B1584700C6DA1B /* Startup.swift */; }; C4EE188422D3386B00E126E5 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EE188322D3386B00E126E5 /* Constants.swift */; }; C4F8C0A422D4F12C002EFE61 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F8C0A322D4F12C002EFE61 /* DateExtension.swift */; }; @@ -52,6 +53,7 @@ C476FF9722B0DD830098105B /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = ""; }; C4811D2322D70A4700B5F6B3 /* App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = ""; }; C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = ""; }; + C486EFFB2586931100A02B2C /* PhpMenuItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhpMenuItem.swift; sourceTree = ""; }; C4D8016522B1584700C6DA1B /* Startup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Startup.swift; sourceTree = ""; }; C4E713562570150F00007428 /* SECURITY.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = SECURITY.md; sourceTree = ""; }; C4E713572570151400007428 /* docs */ = {isa = PBXFileReference; lastKnownFileType = folder; path = docs; sourceTree = ""; }; @@ -139,6 +141,7 @@ isa = PBXGroup; children = ( C47331A1247093B7009A0597 /* StatusMenu.swift */, + C486EFFB2586931100A02B2C /* PhpMenuItem.swift */, ); path = Menu; sourceTree = ""; @@ -268,6 +271,7 @@ C412E5FC25700D5300A1FB67 /* HomebrewPackage.swift in Sources */, C41C1B3722B0097F00E7CF16 /* AppDelegate.swift in Sources */, C41C1B4B22B019FF00E7CF16 /* PhpVersion.swift in Sources */, + C486EFFC2586931100A02B2C /* PhpMenuItem.swift in Sources */, C476FF9822B0DD830098105B /* Alert.swift in Sources */, C474B00624C0E98C00066A22 /* LocalNotification.swift in Sources */, C47331A2247093B7009A0597 /* StatusMenu.swift in Sources */, diff --git a/phpmon/Classes/Menu/PhpMenuItem.swift b/phpmon/Classes/Menu/PhpMenuItem.swift new file mode 100644 index 0000000..6c21d0e --- /dev/null +++ b/phpmon/Classes/Menu/PhpMenuItem.swift @@ -0,0 +1,15 @@ +// +// PhpMenuItem.swift +// PHP Monitor +// +// Created by Nico Verbruggen on 13/12/2020. +// Copyright © 2020 Nico Verbruggen. All rights reserved. +// + +import Cocoa + +class PhpMenuItem: NSMenuItem { + + var version: String = "" + +} diff --git a/phpmon/Classes/Menu/StatusMenu.swift b/phpmon/Classes/Menu/StatusMenu.swift index f8a9dfa..6676fe0 100644 --- a/phpmon/Classes/Menu/StatusMenu.swift +++ b/phpmon/Classes/Menu/StatusMenu.swift @@ -36,8 +36,8 @@ class StatusMenu : NSMenu { let version = App.shared.availablePhpVersions[index] let action = #selector(MainMenu.switchToPhpVersion(sender:)) let brew = (version == App.shared.brewPhpVersion) ? "php" : "php@\(version)" - let menuItem = NSMenuItem(title: "\("mi_php_switch".localized) \(version) (\(brew))", action: (version == App.shared.currentVersion?.short) ? nil : action, keyEquivalent: "\(shortcutKey)") - menuItem.tag = index + let menuItem = PhpMenuItem(title: "\("mi_php_switch".localized) \(version) (\(brew))", action: (version == App.shared.currentVersion?.short) ? nil : action, keyEquivalent: "\(shortcutKey)") + menuItem.version = version shortcutKey = shortcutKey + 1 self.addItem(menuItem) } diff --git a/phpmon/Singletons/MainMenu.swift b/phpmon/Singletons/MainMenu.swift index da9d727..ec2d547 100644 --- a/phpmon/Singletons/MainMenu.swift +++ b/phpmon/Singletons/MainMenu.swift @@ -202,6 +202,7 @@ class MainMenu: NSObject, NSWindowDelegate { self.waitAndExecute({ try! " /tmp/phpmon_phpinfo.html") + }, { NSWorkspace.shared.open(URL(string: "file:///private/tmp/phpmon_phpinfo.html")!) }) } @@ -236,11 +237,9 @@ class MainMenu: NSObject, NSWindowDelegate { Actions.openValetConfigFolder() } - @objc public func switchToPhpVersion(sender: AnyObject) { + @objc public func switchToPhpVersion(sender: PhpMenuItem) { + print("Switching to: PHP \(sender.version)") self.setBusyImage() - // TODO: A wise man once said: using tags is not good. Fix this. - let index = sender.tag! - let version = App.shared.availablePhpVersions[index] App.shared.busy = true DispatchQueue.global(qos: .userInitiated).async { [unowned self] in // Update the PHP version in the status bar @@ -249,7 +248,7 @@ class MainMenu: NSObject, NSWindowDelegate { self.update() // Switch the PHP version Actions.switchToPhpVersion( - version: version, + version: sender.version, availableVersions: App.shared.availablePhpVersions ) // Mark as no longer busy @@ -260,8 +259,8 @@ class MainMenu: NSObject, NSWindowDelegate { self.update() // Send a notification that the switch has been completed LocalNotification.send( - title: String(format: "notification.version_changed_title".localized, version), - subtitle: String(format: "notification.version_changed_desc".localized, version) + title: String(format: "notification.version_changed_title".localized, sender.version), + subtitle: String(format: "notification.version_changed_desc".localized, sender.version) ) } }