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:
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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 = ""
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user