From 183d0bbc30eb28ffcf6c6c6fc14aefa3255ae73e Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Wed, 7 Sep 2022 21:14:56 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Allow=20hiding=20of=20global=20vers?= =?UTF-8?q?ion=20switcher?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phpmon/Domain/Menu/StatusMenu+Items.swift | 8 +++++++- phpmon/Domain/Menu/StatusMenu.swift | 7 ++++++- .../Domain/Preferences/PreferenceName.swift | 4 ++-- phpmon/Domain/Preferences/Preferences.swift | 2 +- phpmon/Domain/Preferences/PrefsVC.swift | 20 ++++++++++++++++++- phpmon/Localizable.strings | 4 ++++ 6 files changed, 39 insertions(+), 6 deletions(-) diff --git a/phpmon/Domain/Menu/StatusMenu+Items.swift b/phpmon/Domain/Menu/StatusMenu+Items.swift index 6d05383..c2a616b 100644 --- a/phpmon/Domain/Menu/StatusMenu+Items.swift +++ b/phpmon/Domain/Menu/StatusMenu+Items.swift @@ -32,9 +32,15 @@ extension StatusMenu { if PhpEnv.shared.availablePhpVersions.isEmpty { return } addSwitchToPhpMenuItems() + self.addItem(NSMenuItem.separator()) + } + + func addValetServicesMenuItems() { + if PhpEnv.shared.isBusy { + return + } addItems([ - NSMenuItem.separator(), ServicesView.asMenuItem(), NSMenuItem.separator() ]) diff --git a/phpmon/Domain/Menu/StatusMenu.swift b/phpmon/Domain/Menu/StatusMenu.swift index 46b598c..c35cc81 100644 --- a/phpmon/Domain/Menu/StatusMenu.swift +++ b/phpmon/Domain/Menu/StatusMenu.swift @@ -12,7 +12,12 @@ class StatusMenu: NSMenu { addPhpVersionMenuItems() addItem(NSMenuItem.separator()) - addPhpActionMenuItems() + if Preferences.isEnabled(.displayGlobalVersionSwitcher) { + addPhpActionMenuItems() + addItem(NSMenuItem.separator()) + } + + addValetServicesMenuItems() addItem(NSMenuItem.separator()) addValetMenuItems() diff --git a/phpmon/Domain/Preferences/PreferenceName.swift b/phpmon/Domain/Preferences/PreferenceName.swift index 98ed039..03a7432 100644 --- a/phpmon/Domain/Preferences/PreferenceName.swift +++ b/phpmon/Domain/Preferences/PreferenceName.swift @@ -35,7 +35,7 @@ enum PreferenceName: String { case notifyAboutGlobalComposerStatus = "notify_about_composer_status" // MENU CUSTOMIZATION - case displayVersionSwitcher = "display_version_switcher" + case displayGlobalVersionSwitcher = "display_global_version_switcher" case displayServicesManager = "display_services_manager" case displayValetConfigFinder = "display_valet_config_finder" case displayPhpConfigFinder = "display_php_config_finder" @@ -66,7 +66,7 @@ enum PreferenceName: String { .notifyAboutGlobalComposerStatus, // UI Preferences - .displayVersionSwitcher, + .displayGlobalVersionSwitcher, .displayServicesManager, .displayValetConfigFinder, .displayPhpConfigFinder, diff --git a/phpmon/Domain/Preferences/Preferences.swift b/phpmon/Domain/Preferences/Preferences.swift index b6eddbf..8f368c6 100644 --- a/phpmon/Domain/Preferences/Preferences.swift +++ b/phpmon/Domain/Preferences/Preferences.swift @@ -65,7 +65,7 @@ class Preferences { PreferenceName.notifyAboutGlobalComposerStatus.rawValue: true, /// Preferences: UI Preferences - PreferenceName.displayVersionSwitcher.rawValue: true, + PreferenceName.displayGlobalVersionSwitcher.rawValue: true, PreferenceName.displayServicesManager.rawValue: true, PreferenceName.displayValetConfigFinder.rawValue: true, PreferenceName.displayPhpConfigFinder.rawValue: true, diff --git a/phpmon/Domain/Preferences/PrefsVC.swift b/phpmon/Domain/Preferences/PrefsVC.swift index ee3f413..a73f29b 100644 --- a/phpmon/Domain/Preferences/PrefsVC.swift +++ b/phpmon/Domain/Preferences/PrefsVC.swift @@ -188,6 +188,23 @@ class GenericPreferenceVC: NSViewController { ) } + func getDisplayMenuSectionPV( + _ localizationKey: String, + _ preference: PreferenceName, + _ first: Bool = false + ) -> NSView { + return CheckboxPreferenceView.make( + sectionText: first ? "prefs.menu_contents".localized : "", + descriptionText: "\(localizationKey)_desc".localized, + checkboxText: localizationKey.localized, + preference: preference, + action: { + MainMenu.shared.refreshIcon() + MainMenu.shared.rebuild() + } + ) + } + // MARK: - Listening for hotkey delegate var listeningForHotkeyView: HotkeyPreferenceView? @@ -251,7 +268,8 @@ class AppearancePreferencesVC: GenericPreferenceVC { vc.views = [ vc.getDynamicIconPV(), vc.getIconOptionsPV(), - vc.getIconDensityPV() + vc.getIconDensityPV(), + vc.getDisplayMenuSectionPV("prefs.display_global_version_switcher", .displayGlobalVersionSwitcher, true) ] return vc diff --git a/phpmon/Localizable.strings b/phpmon/Localizable.strings index 94791b1..c3da498 100644 --- a/phpmon/Localizable.strings +++ b/phpmon/Localizable.strings @@ -227,6 +227,7 @@ "prefs.integrations" = "Integrations:"; "prefs.updates" = "Updates:"; "prefs.notifications" = "Notifications:"; +"prefs.menu_contents" = "Display In Menu:"; "prefs.icon_options.php" = "Display PHP Icon"; "prefs.icon_options.elephant" = "Display Elephant Icon"; @@ -278,6 +279,9 @@ "prefs.notify_about_composer_success_desc" = "Displays a notification when the global Composer configuration was successfully updated."; "prefs.notify_about_composer_success" = "Notify about global composer update"; +"prefs.display_global_version_switcher_desc" = "Display the global PHP version switcher. If disabled, the global switcher will not be accessible via the main menu."; +"prefs.display_global_version_switcher" = "Show Global PHP Switcher"; + // NOTIFICATIONS "notification.version_changed_title" = "PHP %@ now active";