From 1292e91b33e93e5c96c34706e4c827cfe42bfc6a Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Thu, 18 Aug 2022 17:38:46 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 12 +- .../Common/Extensions/NSMenuExtension.swift | 10 +- .../Extensions/NSMenuItemExtension.swift | 4 +- phpmon/Common/PHP/PhpConfigurationFile.swift | 6 +- phpmon/Domain/Menu/MainMenu+Async.swift | 6 +- phpmon/Domain/Menu/MainMenu.swift | 17 +- phpmon/Domain/Menu/StatusMenu+Items.swift | 181 +++++++++++++++--- phpmon/Domain/Menu/StatusMenu.swift | 157 ++------------- phpmon/Domain/Presets/Preset.swift | 9 +- phpmon/Domain/Warnings/WarningManager.swift | 10 +- 10 files changed, 208 insertions(+), 204 deletions(-) diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index 62bbf61..fd18b20 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -94,8 +94,6 @@ C42337A3281F19F000459A48 /* Xdebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42337A2281F19F000459A48 /* Xdebug.swift */; }; C42759672627662800093CAE /* NSMenuExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42759662627662800093CAE /* NSMenuExtension.swift */; }; C42759682627662800093CAE /* NSMenuExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42759662627662800093CAE /* NSMenuExtension.swift */; }; - C42800AA28452AA10099C999 /* StatusMenu+Items.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42800A928452AA10099C999 /* StatusMenu+Items.swift */; }; - C42800AB28452AA50099C999 /* StatusMenu+Items.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42800A928452AA10099C999 /* StatusMenu+Items.swift */; }; C4297F7A28970D59004C4630 /* WarningView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4297F7928970D59004C4630 /* WarningView.swift */; }; C42C49DB27C2806F0074ABAC /* MainMenu+FixMyValet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42C49DA27C2806F0074ABAC /* MainMenu+FixMyValet.swift */; }; C42CFB1627DFDE7900862737 /* nginx-site.test in Resources */ = {isa = PBXBuildFile; fileRef = C42CFB1527DFDE7900862737 /* nginx-site.test */; }; @@ -210,6 +208,8 @@ C4C0E8EB27F88B80002D32A9 /* ValetProxy+Fake.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8E927F88B80002D32A9 /* ValetProxy+Fake.swift */; }; C4C1019B27C65C6F001FACC2 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C1019A27C65C6F001FACC2 /* Process.swift */; }; C4C1019C27C65C6F001FACC2 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C1019A27C65C6F001FACC2 /* Process.swift */; }; + C4C3643928AE4FCE00C0770E /* StatusMenu+Items.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3643828AE4FCE00C0770E /* StatusMenu+Items.swift */; }; + C4C3643A28AE4FCE00C0770E /* StatusMenu+Items.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3643828AE4FCE00C0770E /* StatusMenu+Items.swift */; }; C4C3ED412783497000AB15D8 /* MainMenu+Startup.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3ED402783497000AB15D8 /* MainMenu+Startup.swift */; }; C4C3ED4327834C5200AB15D8 /* CustomPrefs.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3ED4227834C5200AB15D8 /* CustomPrefs.swift */; }; C4C8E818276F54D8003AC782 /* App+ConfigWatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8E817276F54D8003AC782 /* App+ConfigWatch.swift */; }; @@ -358,7 +358,6 @@ C4232EE42612526500158FC6 /* Credits.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = Credits.html; sourceTree = ""; }; C42337A2281F19F000459A48 /* Xdebug.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Xdebug.swift; sourceTree = ""; }; C42759662627662800093CAE /* NSMenuExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSMenuExtension.swift; sourceTree = ""; }; - C42800A928452AA10099C999 /* StatusMenu+Items.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusMenu+Items.swift"; sourceTree = ""; }; C4297F7928970D59004C4630 /* WarningView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WarningView.swift; sourceTree = ""; }; C42C49DA27C2806F0074ABAC /* MainMenu+FixMyValet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MainMenu+FixMyValet.swift"; sourceTree = ""; }; C42CFB1527DFDE7900862737 /* nginx-site.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "nginx-site.test"; sourceTree = ""; }; @@ -432,6 +431,7 @@ C4C0E8E627F88B41002D32A9 /* ProxyScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyScanner.swift; sourceTree = ""; }; C4C0E8E927F88B80002D32A9 /* ValetProxy+Fake.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ValetProxy+Fake.swift"; sourceTree = ""; }; C4C1019A27C65C6F001FACC2 /* Process.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Process.swift; sourceTree = ""; }; + C4C3643828AE4FCE00C0770E /* StatusMenu+Items.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusMenu+Items.swift"; sourceTree = ""; }; C4C3ED402783497000AB15D8 /* MainMenu+Startup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MainMenu+Startup.swift"; sourceTree = ""; }; C4C3ED4227834C5200AB15D8 /* CustomPrefs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomPrefs.swift; sourceTree = ""; }; C4C8E817276F54D8003AC782 /* App+ConfigWatch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "App+ConfigWatch.swift"; sourceTree = ""; }; @@ -832,7 +832,7 @@ C42C49DA27C2806F0074ABAC /* MainMenu+FixMyValet.swift */, C4F361602836BFD9003598CC /* MainMenu+Actions.swift */, C47331A1247093B7009A0597 /* StatusMenu.swift */, - C42800A928452AA10099C999 /* StatusMenu+Items.swift */, + C4C3643828AE4FCE00C0770E /* StatusMenu+Items.swift */, ); path = Menu; sourceTree = ""; @@ -1325,8 +1325,8 @@ C4B6091A2853AAD300C95265 /* SectionHeaderView.swift in Sources */, C44067F727E258410045BD4E /* DomainListPhpCell.swift in Sources */, C4FACE80288F1C0D00FC478F /* PreferencesWindowController+Hotkey.swift in Sources */, - C42800AA28452AA10099C999 /* StatusMenu+Items.swift in Sources */, C415D3B72770F294005EF286 /* Actions.swift in Sources */, + C4C3643928AE4FCE00C0770E /* StatusMenu+Items.swift in Sources */, C4AC51FC27E27F47008528CA /* DomainListKindCell.swift in Sources */, C4CDA893288F1A71007CE25F /* Keys.swift in Sources */, C4F361612836BFD9003598CC /* MainMenu+Actions.swift in Sources */, @@ -1471,6 +1471,7 @@ C4EED88A27A48778006D7272 /* InterAppHandler.swift in Sources */, C48D6C75279CD3E400F26D7E /* PhpVersionNumberTest.swift in Sources */, C43603A1275E67610028EFC6 /* AppDelegate+Notifications.swift in Sources */, + C4C3643A28AE4FCE00C0770E /* StatusMenu+Items.swift in Sources */, C42759682627662800093CAE /* NSMenuExtension.swift in Sources */, C4D936CB27E3EE4A00BD69FE /* DomainListCellProtocol.swift in Sources */, C4B97B76275CF08C003F3378 /* AppDelegate+MenuOutlets.swift in Sources */, @@ -1482,7 +1483,6 @@ C4068CAB27B0890D00544CD5 /* MenuBarIcons.swift in Sources */, C40C5C9D2846A40600E28255 /* Preset.swift in Sources */, C4F30B09278E1A0E00755FCE /* CustomPrefs.swift in Sources */, - C42800AB28452AA50099C999 /* StatusMenu+Items.swift in Sources */, C40FE738282ABA4F00A302C2 /* AppVersion.swift in Sources */, C415D3E92770F692005EF286 /* AppDelegate+InterApp.swift in Sources */, C484437C2804BB560041A78A /* ValetProxyScanner.swift in Sources */, diff --git a/phpmon/Common/Extensions/NSMenuExtension.swift b/phpmon/Common/Extensions/NSMenuExtension.swift index 23fac8f..f4a9369 100644 --- a/phpmon/Common/Extensions/NSMenuExtension.swift +++ b/phpmon/Common/Extensions/NSMenuExtension.swift @@ -9,13 +9,11 @@ import Cocoa extension NSMenu { - open func addItem( - _ newItem: NSMenuItem, - withKeyModifier modifier: NSEvent.ModifierFlags - ) { - newItem.keyEquivalentModifierMask = modifier - self.addItem(newItem) + /* TODO: convenience initializer with items, target and parent menu item + convenience init() { + super.init() } + */ open func addItems(_ items: [NSMenuItem], target: NSObject? = nil) { for item in items { diff --git a/phpmon/Common/Extensions/NSMenuItemExtension.swift b/phpmon/Common/Extensions/NSMenuItemExtension.swift index 2f2c006..957d2ac 100644 --- a/phpmon/Common/Extensions/NSMenuItemExtension.swift +++ b/phpmon/Common/Extensions/NSMenuItemExtension.swift @@ -14,11 +14,11 @@ extension NSMenuItem { action: Selector? = nil, keyEquivalent: String = "", keyModifier: NSEvent.ModifierFlags = [], - tooltip: String = "", - submenu: NSMenu? = nil + toolTip: String? = nil ) { self.init(title: title, action: action, keyEquivalent: keyEquivalent) self.keyEquivalentModifierMask = keyModifier + self.toolTip = toolTip } } diff --git a/phpmon/Common/PHP/PhpConfigurationFile.swift b/phpmon/Common/PHP/PhpConfigurationFile.swift index bd01dd3..277aa6f 100644 --- a/phpmon/Common/PHP/PhpConfigurationFile.swift +++ b/phpmon/Common/PHP/PhpConfigurationFile.swift @@ -70,10 +70,8 @@ class PhpConfigurationFile: CreatedFromFile { } public func getConfig(for key: String) -> ConfigValue? { - for (_, section) in self.content { - if section.keys.contains(key) { - return section[key]! - } + for (_, section) in self.content where section.keys.contains(key) { + return section[key]! } return nil } diff --git a/phpmon/Domain/Menu/MainMenu+Async.swift b/phpmon/Domain/Menu/MainMenu+Async.swift index 11aea36..8c82f3c 100644 --- a/phpmon/Domain/Menu/MainMenu+Async.swift +++ b/phpmon/Domain/Menu/MainMenu+Async.swift @@ -77,7 +77,11 @@ extension MainMenu { ServicesManager.shared.loadData() } - error == nil ? success() : failure(error!) + if error != nil { + return failure(error!) + } + + success() } } } diff --git a/phpmon/Domain/Menu/MainMenu.swift b/phpmon/Domain/Menu/MainMenu.swift index 7fe10b6..f1ca90b 100644 --- a/phpmon/Domain/Menu/MainMenu.swift +++ b/phpmon/Domain/Menu/MainMenu.swift @@ -51,25 +51,10 @@ class MainMenu: NSObject, NSWindowDelegate, NSMenuDelegate, PhpSwitcherDelegate */ private func rebuildMenu() { let menu = StatusMenu() - - menu.addPhpVersionMenuItems() - menu.addItem(NSMenuItem.separator()) - - menu.addPhpActionMenuItems() - menu.addItem(NSMenuItem.separator()) - - menu.addValetMenuItems() - menu.addItem(NSMenuItem.separator()) - - menu.addRemainingMenuItems() - menu.addItem(NSMenuItem.separator()) - - menu.addCoreMenuItems() - + menu.addMenuItems() menu.items.forEach({ (item) in item.target = self }) - statusItem.menu = menu statusItem.menu?.delegate = self } diff --git a/phpmon/Domain/Menu/StatusMenu+Items.swift b/phpmon/Domain/Menu/StatusMenu+Items.swift index 28f8d84..3662ad0 100644 --- a/phpmon/Domain/Menu/StatusMenu+Items.swift +++ b/phpmon/Domain/Menu/StatusMenu+Items.swift @@ -2,18 +2,105 @@ // StatusMenu+Items.swift // PHP Monitor // -// Created by Nico Verbruggen on 30/05/2022. +// Created by Nico Verbruggen on 18/08/2022. // Copyright © 2022 Nico Verbruggen. All rights reserved. // import Cocoa +// MARK: - PHP Version + extension StatusMenu { - // MARK: Remaining Menu Items + func addPhpVersionMenuItems() { + if PhpEnv.phpInstall.version.error { + let brokenMenuItems = ["mi_php_broken_1", "mi_php_broken_2", "mi_php_broken_3", "mi_php_broken_4"] + return addItems(brokenMenuItems.map { NSMenuItem(title: $0.localized) }) + } + + addItem(HeaderView.asMenuItem( + text: "\("mi_php_version".localized) \(PhpEnv.phpInstall.version.long)") + ) + } + + func addPhpActionMenuItems() { + if PhpEnv.shared.isBusy { + addItem(NSMenuItem(title: "mi_busy".localized)) + return + } + + if PhpEnv.shared.availablePhpVersions.isEmpty { return } + + addSwitchToPhpMenuItems() + + addItems([ + NSMenuItem.separator(), + ServicesView.asMenuItem(), + NSMenuItem.separator() + ]) + } + + func addSwitchToPhpMenuItems() { + var shortcutKey = 1 + for index in (0.. String { var info = extensions.count == 1 - ? "preset.extension".localized(extensions.count) - : "preset.extensions".localized(extensions.count) + ? "preset.extension".localized(extensions.count) + : "preset.extensions".localized(extensions.count) info += ", " info += configuration.count == 1 - ? "preset.preference".localized(configuration.count) - : "preset.preferences".localized(configuration.count) + ? "preset.preference".localized(configuration.count) + : "preset.preferences".localized(configuration.count) if self.version == nil { return "" diff --git a/phpmon/Domain/Warnings/WarningManager.swift b/phpmon/Domain/Warnings/WarningManager.swift index e56d977..0c2a9f0 100644 --- a/phpmon/Domain/Warnings/WarningManager.swift +++ b/phpmon/Domain/Warnings/WarningManager.swift @@ -74,12 +74,10 @@ class WarningManager { } private func loopOverEvaluations() async { - for check in self.evaluations { - if await check.applies() { - Log.info("[DOCTOR] \(check.name) (!)") - self.warnings.append(check) - continue - } + for check in self.evaluations where await check.applies() { + Log.info("[DOCTOR] \(check.name) (!)") + self.warnings.append(check) + continue } } }