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

♻️ Refactor submenu creation

This commit is contained in:
2022-08-22 19:10:36 +02:00
parent a17512bfad
commit c7bb4c1d37
3 changed files with 36 additions and 47 deletions

View File

@ -9,11 +9,10 @@
import Cocoa
extension NSMenu {
/* TODO: convenience initializer with items, target and parent menu item
convenience init() {
super.init()
convenience init(items: [NSMenuItem], target: NSObject? = nil) {
self.init()
self.addItems(items, target: target)
}
*/
open func addItems(_ items: [NSMenuItem], target: NSObject? = nil) {
for item in items {
@ -24,11 +23,3 @@ extension NSMenu {
}
}
}
@IBDesignable class LocalizedMenuItem: NSMenuItem {
@IBInspectable var localizationKey: String? {
didSet {
self.title = localizationKey?.localized ?? self.title
}
}
}

View File

@ -20,10 +20,32 @@ extension NSMenuItem {
self.keyEquivalentModifierMask = keyModifier
self.toolTip = toolTip
}
convenience init(
title: String,
keyEquivalent: String = "",
keyModifier: NSEvent.ModifierFlags = [],
toolTip: String? = nil,
submenu: [NSMenuItem],
target: NSObject? = nil
) {
self.init(title: title, action: nil, keyEquivalent: keyEquivalent)
self.keyEquivalentModifierMask = keyModifier
self.toolTip = toolTip
self.submenu = NSMenu(items: submenu, target: target)
}
}
// MARK: - NSMenuItem subclasses
@IBDesignable class LocalizedMenuItem: NSMenuItem {
@IBInspectable var localizationKey: String? {
didSet {
self.title = localizationKey?.localized ?? self.title
}
}
}
class PhpMenuItem: NSMenuItem {
var version: String = ""
}

View File

@ -180,28 +180,16 @@ extension StatusMenu {
}
private func addEmptyPresetHelp() {
let presets = NSMenuItem(title: "mi_presets_title".localized)
let presetsMenu = NSMenu()
presetsMenu.addItems([
addItem(NSMenuItem(title: "mi_presets_title".localized, submenu: [
NSMenuItem(title: "mi_no_presets".localized),
NSMenuItem.separator(),
NSMenuItem(title: "mi_set_up_presets".localized,
action: #selector(MainMenu.showPresetHelp))
], target: MainMenu.shared)
setSubmenu(presetsMenu, for: presets)
addItem(presets)
return
], target: MainMenu.shared))
}
private func addLoadedPresets() {
let presets = NSMenuItem(title: "mi_presets_title".localized)
let presetsMenu = NSMenu()
let items = [
addItem(NSMenuItem(title: "mi_presets_title".localized, submenu: [
NSMenuItem.separator(),
HeaderView.asMenuItem(text: "mi_apply_presets_title".localized)
] + PresetMenuItem.getAll() + [
@ -210,11 +198,7 @@ extension StatusMenu {
action: PresetHelper.rollbackPreset != nil ? #selector(MainMenu.rollbackPreset) : nil),
NSMenuItem.separator(),
NSMenuItem(title: "mi_profiles_loaded".localized(Preferences.custom.presets!.count))
]
presetsMenu.addItems(items, target: MainMenu.shared)
setSubmenu(presetsMenu, for: presets)
addItem(presets)
], target: MainMenu.shared))
}
// MARK: - Xdebug
@ -224,23 +208,15 @@ extension StatusMenu {
return
}
let submenu = NSMenu()
submenu.addItems(
[HeaderView.asMenuItem(text: "mi_xdebug_available_modes".localized)]
+ Xdebug.asMenuItems()
+ [HeaderView.asMenuItem(text: "mi_xdebug_actions".localized),
NSMenuItem(title: "mi_xdebug_disable_all".localized,
action: #selector(MainMenu.disableAllXdebugModes))
],
target: MainMenu.shared
)
let xdebugItem = NSMenuItem(title: "mi_xdebug_mode".localized)
setSubmenu(submenu, for: xdebugItem)
addItems([
NSMenuItem.separator(),
xdebugItem
NSMenuItem(title: "mi_xdebug_mode".localized, submenu: [
HeaderView.asMenuItem(text: "mi_xdebug_available_modes".localized)
] + Xdebug.asMenuItems() + [
HeaderView.asMenuItem(text: "mi_xdebug_actions".localized),
NSMenuItem(title: "mi_xdebug_disable_all".localized,
action: #selector(MainMenu.disableAllXdebugModes))
], target: MainMenu.shared)
], target: MainMenu.shared)
}