mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-07 03:50:08 +02:00
🍱 Add icons to main menu
This commit is contained in:
@ -9,6 +9,24 @@
|
|||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
extension NSMenuItem {
|
extension NSMenuItem {
|
||||||
|
convenience init(
|
||||||
|
title: String,
|
||||||
|
action: Selector? = nil,
|
||||||
|
keyEquivalent: String = "",
|
||||||
|
keyModifier: NSEvent.ModifierFlags = [],
|
||||||
|
systemImage: String? = nil,
|
||||||
|
customImage: String? = nil,
|
||||||
|
) {
|
||||||
|
self.init(title: title, action: action, keyEquivalent: keyEquivalent)
|
||||||
|
self.keyEquivalentModifierMask = keyModifier
|
||||||
|
if systemImage != nil {
|
||||||
|
self.image = NSImage(systemSymbolName: systemImage!, accessibilityDescription: "")
|
||||||
|
}
|
||||||
|
if customImage != nil {
|
||||||
|
self.image = NSImage(named: customImage!)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
convenience init(
|
convenience init(
|
||||||
title: String,
|
title: String,
|
||||||
action: Selector? = nil,
|
action: Selector? = nil,
|
||||||
@ -26,12 +44,20 @@ extension NSMenuItem {
|
|||||||
keyEquivalent: String = "",
|
keyEquivalent: String = "",
|
||||||
keyModifier: NSEvent.ModifierFlags = [],
|
keyModifier: NSEvent.ModifierFlags = [],
|
||||||
toolTip: String? = nil,
|
toolTip: String? = nil,
|
||||||
|
systemImage: String? = nil,
|
||||||
|
customImage: String? = nil,
|
||||||
submenu: [NSMenuItem],
|
submenu: [NSMenuItem],
|
||||||
target: NSObject? = nil
|
target: NSObject? = nil
|
||||||
) {
|
) {
|
||||||
self.init(title: title, action: nil, keyEquivalent: keyEquivalent)
|
self.init(title: title, action: nil, keyEquivalent: keyEquivalent)
|
||||||
self.keyEquivalentModifierMask = keyModifier
|
self.keyEquivalentModifierMask = keyModifier
|
||||||
self.toolTip = toolTip
|
self.toolTip = toolTip
|
||||||
|
if systemImage != nil {
|
||||||
|
self.image = NSImage(systemSymbolName: systemImage!, accessibilityDescription: "")
|
||||||
|
}
|
||||||
|
if customImage != nil {
|
||||||
|
self.image = NSImage(named: customImage!)
|
||||||
|
}
|
||||||
self.submenu = NSMenu(items: submenu, target: target)
|
self.submenu = NSMenu(items: submenu, target: target)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,11 +78,12 @@ extension StatusMenu {
|
|||||||
let action = #selector(MainMenu.switchToPhpVersion(sender:))
|
let action = #selector(MainMenu.switchToPhpVersion(sender:))
|
||||||
let brew = (shortVersion == PhpEnvironments.brewPhpAlias) ? "php" : "php@\(shortVersion)"
|
let brew = (shortVersion == PhpEnvironments.brewPhpAlias) ? "php" : "php@\(shortVersion)"
|
||||||
|
|
||||||
|
let isActive = (shortVersion == PhpEnvironments.phpInstall?.version.short)
|
||||||
|
|
||||||
let menuItem = PhpMenuItem(
|
let menuItem = PhpMenuItem(
|
||||||
title: "\("mi_php_switch".localized) \(versionString) (\(brew))",
|
title: "\("mi_php_switch".localized) \(versionString) (\(brew))",
|
||||||
action: (shortVersion == PhpEnvironments.phpInstall?.version.short)
|
action: isActive ? nil : action, keyEquivalent: "\(shortcutKey)",
|
||||||
? nil
|
systemImage: isActive ? "checkmark.square.fill" : "square.dotted"
|
||||||
: action, keyEquivalent: "\(shortcutKey)"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
menuItem.version = shortVersion
|
menuItem.version = shortVersion
|
||||||
@ -110,12 +111,18 @@ extension StatusMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@MainActor func addPreferencesMenuItems() {
|
@MainActor func addPreferencesMenuItems() {
|
||||||
|
|
||||||
addItems([
|
addItems([
|
||||||
NSMenuItem.separator(),
|
NSMenuItem.separator(),
|
||||||
NSMenuItem(title: "mi_preferences".localized,
|
NSMenuItem(title: "mi_preferences".localized,
|
||||||
action: #selector(MainMenu.openPrefs), keyEquivalent: ","),
|
action: #selector(MainMenu.openPrefs),
|
||||||
|
keyEquivalent: ",",
|
||||||
|
systemImage: "gear"
|
||||||
|
),
|
||||||
NSMenuItem(title: "mi_check_for_updates".localized,
|
NSMenuItem(title: "mi_check_for_updates".localized,
|
||||||
action: #selector(MainMenu.checkForUpdates))
|
action: #selector(MainMenu.checkForUpdates),
|
||||||
|
systemImage: "arrow.clockwise.circle"
|
||||||
|
)
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,10 +143,12 @@ extension StatusMenu {
|
|||||||
HeaderView.asMenuItem(text: "mi_valet".localized),
|
HeaderView.asMenuItem(text: "mi_valet".localized),
|
||||||
NSMenuItem(title: "mi_valet_config".localized,
|
NSMenuItem(title: "mi_valet_config".localized,
|
||||||
action: #selector(MainMenu.openValetConfigFolder),
|
action: #selector(MainMenu.openValetConfigFolder),
|
||||||
keyEquivalent: "v"),
|
keyEquivalent: "v",
|
||||||
|
systemImage: "folder.badge.gearshape"),
|
||||||
NSMenuItem(title: "mi_domain_list".localized,
|
NSMenuItem(title: "mi_domain_list".localized,
|
||||||
action: #selector(MainMenu.openDomainList),
|
action: #selector(MainMenu.openDomainList),
|
||||||
keyEquivalent: "l"),
|
keyEquivalent: "l",
|
||||||
|
systemImage: "globe"),
|
||||||
NSMenuItem.separator()
|
NSMenuItem.separator()
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
@ -151,19 +160,24 @@ extension StatusMenu {
|
|||||||
HeaderView.asMenuItem(text: "mi_configuration".localized),
|
HeaderView.asMenuItem(text: "mi_configuration".localized),
|
||||||
NSMenuItem(title: "mi_php_version_manager".localized,
|
NSMenuItem(title: "mi_php_version_manager".localized,
|
||||||
action: #selector(MainMenu.openPhpVersionManager),
|
action: #selector(MainMenu.openPhpVersionManager),
|
||||||
keyEquivalent: "m"),
|
keyEquivalent: "m",
|
||||||
|
systemImage: "cpu.fill"),
|
||||||
NSMenuItem(title: "mi_php_ext_manager".localized,
|
NSMenuItem(title: "mi_php_ext_manager".localized,
|
||||||
action: #selector(MainMenu.openPhpExtensionManager),
|
action: #selector(MainMenu.openPhpExtensionManager),
|
||||||
keyEquivalent: "e"),
|
keyEquivalent: "e",
|
||||||
|
systemImage: "puzzlepiece.extension"),
|
||||||
NSMenuItem(title: "mi_php_config".localized,
|
NSMenuItem(title: "mi_php_config".localized,
|
||||||
action: #selector(MainMenu.openActiveConfigFolder),
|
action: #selector(MainMenu.openActiveConfigFolder),
|
||||||
keyEquivalent: "c"),
|
keyEquivalent: "c",
|
||||||
|
systemImage: "folder.badge.gearshape"),
|
||||||
NSMenuItem(title: "mi_phpmon_config".localized,
|
NSMenuItem(title: "mi_phpmon_config".localized,
|
||||||
action: #selector(MainMenu.openPhpMonitorConfigurationFile),
|
action: #selector(MainMenu.openPhpMonitorConfigurationFile),
|
||||||
keyEquivalent: "y"),
|
keyEquivalent: "y",
|
||||||
|
systemImage: "folder.badge.person.crop"),
|
||||||
NSMenuItem(title: "mi_phpinfo".localized,
|
NSMenuItem(title: "mi_phpinfo".localized,
|
||||||
action: #selector(MainMenu.openPhpInfo),
|
action: #selector(MainMenu.openPhpInfo),
|
||||||
keyEquivalent: "i")
|
keyEquivalent: "i",
|
||||||
|
systemImage: "info.circle.fill")
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +189,8 @@ extension StatusMenu {
|
|||||||
NSMenuItem(
|
NSMenuItem(
|
||||||
title: "mi_global_composer".localized,
|
title: "mi_global_composer".localized,
|
||||||
action: #selector(MainMenu.openGlobalComposerFolder),
|
action: #selector(MainMenu.openGlobalComposerFolder),
|
||||||
keyEquivalent: "g"
|
keyEquivalent: "g",
|
||||||
|
systemImage: "plus.rectangle.on.folder"
|
||||||
),
|
),
|
||||||
NSMenuItem(
|
NSMenuItem(
|
||||||
title: "mi_update_global_composer".localized,
|
title: "mi_update_global_composer".localized,
|
||||||
@ -183,7 +198,8 @@ extension StatusMenu {
|
|||||||
? nil
|
? nil
|
||||||
: #selector(MainMenu.updateGlobalComposerDependencies),
|
: #selector(MainMenu.updateGlobalComposerDependencies),
|
||||||
keyEquivalent: "g",
|
keyEquivalent: "g",
|
||||||
keyModifier: [.shift]
|
keyModifier: [.shift],
|
||||||
|
systemImage: "arrow.down.to.line.square"
|
||||||
)
|
)
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
@ -243,7 +259,7 @@ extension StatusMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@MainActor private func addEmptyPresetHelp() {
|
@MainActor private func addEmptyPresetHelp() {
|
||||||
addItem(NSMenuItem(title: "mi_presets_title".localized, submenu: [
|
addItem(NSMenuItem(title: "mi_presets_title".localized, systemImage: "puzzlepiece.fill", submenu: [
|
||||||
NSMenuItem(title: "mi_no_presets".localized),
|
NSMenuItem(title: "mi_no_presets".localized),
|
||||||
NSMenuItem.separator(),
|
NSMenuItem.separator(),
|
||||||
NSMenuItem(title: "mi_set_up_presets".localized,
|
NSMenuItem(title: "mi_set_up_presets".localized,
|
||||||
@ -252,7 +268,7 @@ extension StatusMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@MainActor private func addLoadedPresets() {
|
@MainActor private func addLoadedPresets() {
|
||||||
addItem(NSMenuItem(title: "mi_presets_title".localized, submenu: [
|
addItem(NSMenuItem(title: "mi_presets_title".localized, systemImage: "puzzlepiece.fill", submenu: [
|
||||||
NSMenuItem.separator(),
|
NSMenuItem.separator(),
|
||||||
HeaderView.asMenuItem(text: "mi_apply_presets_title".localized)
|
HeaderView.asMenuItem(text: "mi_apply_presets_title".localized)
|
||||||
] + PresetMenuItem.getAll() + [
|
] + PresetMenuItem.getAll() + [
|
||||||
@ -303,7 +319,7 @@ extension StatusMenu {
|
|||||||
// MARK: - First Aid & Services
|
// MARK: - First Aid & Services
|
||||||
|
|
||||||
@MainActor func addFirstAidAndServicesMenuItems() {
|
@MainActor func addFirstAidAndServicesMenuItems() {
|
||||||
let services = NSMenuItem(title: "mi_other".localized)
|
let services = NSMenuItem(title: "mi_other".localized, systemImage: "cross.case")
|
||||||
|
|
||||||
var items: [NSMenuItem] = [
|
var items: [NSMenuItem] = [
|
||||||
// FIRST AID
|
// FIRST AID
|
||||||
|
Reference in New Issue
Block a user