1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-06 03:20:09 +02:00

🍱 Add icons to main menu

This commit is contained in:
2025-06-19 12:50:04 +02:00
parent ec0ad13ad0
commit 8ae2031ba5
2 changed files with 59 additions and 17 deletions

View File

@ -9,6 +9,24 @@
import Cocoa
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(
title: String,
action: Selector? = nil,
@ -26,12 +44,20 @@ extension NSMenuItem {
keyEquivalent: String = "",
keyModifier: NSEvent.ModifierFlags = [],
toolTip: String? = nil,
systemImage: String? = nil,
customImage: String? = nil,
submenu: [NSMenuItem],
target: NSObject? = nil
) {
self.init(title: title, action: nil, keyEquivalent: keyEquivalent)
self.keyEquivalentModifierMask = keyModifier
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)
}
}

View File

@ -78,11 +78,12 @@ extension StatusMenu {
let action = #selector(MainMenu.switchToPhpVersion(sender:))
let brew = (shortVersion == PhpEnvironments.brewPhpAlias) ? "php" : "php@\(shortVersion)"
let isActive = (shortVersion == PhpEnvironments.phpInstall?.version.short)
let menuItem = PhpMenuItem(
title: "\("mi_php_switch".localized) \(versionString) (\(brew))",
action: (shortVersion == PhpEnvironments.phpInstall?.version.short)
? nil
: action, keyEquivalent: "\(shortcutKey)"
action: isActive ? nil : action, keyEquivalent: "\(shortcutKey)",
systemImage: isActive ? "checkmark.square.fill" : "square.dotted"
)
menuItem.version = shortVersion
@ -110,12 +111,18 @@ extension StatusMenu {
}
@MainActor func addPreferencesMenuItems() {
addItems([
NSMenuItem.separator(),
NSMenuItem(title: "mi_preferences".localized,
action: #selector(MainMenu.openPrefs), keyEquivalent: ","),
action: #selector(MainMenu.openPrefs),
keyEquivalent: ",",
systemImage: "gear"
),
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),
NSMenuItem(title: "mi_valet_config".localized,
action: #selector(MainMenu.openValetConfigFolder),
keyEquivalent: "v"),
keyEquivalent: "v",
systemImage: "folder.badge.gearshape"),
NSMenuItem(title: "mi_domain_list".localized,
action: #selector(MainMenu.openDomainList),
keyEquivalent: "l"),
keyEquivalent: "l",
systemImage: "globe"),
NSMenuItem.separator()
])
}
@ -151,19 +160,24 @@ extension StatusMenu {
HeaderView.asMenuItem(text: "mi_configuration".localized),
NSMenuItem(title: "mi_php_version_manager".localized,
action: #selector(MainMenu.openPhpVersionManager),
keyEquivalent: "m"),
keyEquivalent: "m",
systemImage: "cpu.fill"),
NSMenuItem(title: "mi_php_ext_manager".localized,
action: #selector(MainMenu.openPhpExtensionManager),
keyEquivalent: "e"),
keyEquivalent: "e",
systemImage: "puzzlepiece.extension"),
NSMenuItem(title: "mi_php_config".localized,
action: #selector(MainMenu.openActiveConfigFolder),
keyEquivalent: "c"),
keyEquivalent: "c",
systemImage: "folder.badge.gearshape"),
NSMenuItem(title: "mi_phpmon_config".localized,
action: #selector(MainMenu.openPhpMonitorConfigurationFile),
keyEquivalent: "y"),
keyEquivalent: "y",
systemImage: "folder.badge.person.crop"),
NSMenuItem(title: "mi_phpinfo".localized,
action: #selector(MainMenu.openPhpInfo),
keyEquivalent: "i")
keyEquivalent: "i",
systemImage: "info.circle.fill")
])
}
@ -175,7 +189,8 @@ extension StatusMenu {
NSMenuItem(
title: "mi_global_composer".localized,
action: #selector(MainMenu.openGlobalComposerFolder),
keyEquivalent: "g"
keyEquivalent: "g",
systemImage: "plus.rectangle.on.folder"
),
NSMenuItem(
title: "mi_update_global_composer".localized,
@ -183,7 +198,8 @@ extension StatusMenu {
? nil
: #selector(MainMenu.updateGlobalComposerDependencies),
keyEquivalent: "g",
keyModifier: [.shift]
keyModifier: [.shift],
systemImage: "arrow.down.to.line.square"
)
])
}
@ -243,7 +259,7 @@ extension StatusMenu {
}
@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.separator(),
NSMenuItem(title: "mi_set_up_presets".localized,
@ -252,7 +268,7 @@ extension StatusMenu {
}
@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(),
HeaderView.asMenuItem(text: "mi_apply_presets_title".localized)
] + PresetMenuItem.getAll() + [
@ -303,7 +319,7 @@ extension StatusMenu {
// MARK: - First Aid & Services
@MainActor func addFirstAidAndServicesMenuItems() {
let services = NSMenuItem(title: "mi_other".localized)
let services = NSMenuItem(title: "mi_other".localized, systemImage: "cross.case")
var items: [NSMenuItem] = [
// FIRST AID