mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-12 22:10:07 +02:00
♻️ Refactor NSMenu structuring
This commit is contained in:
@@ -42,4 +42,24 @@ class EditorMenuItem: NSMenuItem {
|
|||||||
|
|
||||||
class PresetMenuItem: NSMenuItem {
|
class PresetMenuItem: NSMenuItem {
|
||||||
var preset: Preset?
|
var preset: Preset?
|
||||||
|
|
||||||
|
static func getAll() -> [NSMenuItem] {
|
||||||
|
return Preferences.custom.presets!.map { preset in
|
||||||
|
let presetMenuItem = PresetMenuItem(
|
||||||
|
title: preset.getMenuItemText(),
|
||||||
|
action: #selector(MainMenu.togglePreset(sender:))
|
||||||
|
)
|
||||||
|
|
||||||
|
if let attributedString = try? NSMutableAttributedString(
|
||||||
|
data: preset.getMenuItemText().data(using: .utf8)!,
|
||||||
|
options: [.documentType: NSAttributedString.DocumentType.html],
|
||||||
|
documentAttributes: nil
|
||||||
|
) {
|
||||||
|
presetMenuItem.attributedTitle = attributedString
|
||||||
|
}
|
||||||
|
|
||||||
|
presetMenuItem.preset = preset
|
||||||
|
return presetMenuItem
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -85,19 +85,15 @@ extension StatusMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func addEmptyPresetHelp() {
|
func addEmptyPresetHelp() {
|
||||||
let presets = NSMenuItem(title: "mi_presets_title".localized, action: nil, keyEquivalent: "")
|
let presets = NSMenuItem(title: "mi_presets_title".localized)
|
||||||
|
|
||||||
let presetsMenu = NSMenu()
|
let presetsMenu = NSMenu()
|
||||||
|
presetsMenu.addItems([
|
||||||
presetsMenu.addItem(NSMenuItem(title: "mi_no_presets".localized, action: nil, keyEquivalent: ""))
|
NSMenuItem(title: "mi_no_presets".localized),
|
||||||
presetsMenu.addItem(NSMenuItem.separator())
|
NSMenuItem.separator(),
|
||||||
presetsMenu.addItem(NSMenuItem(
|
NSMenuItem(title: "mi_set_up_presets".localized,
|
||||||
title: "mi_set_up_presets".localized,
|
action: #selector(MainMenu.showPresetHelp))
|
||||||
action: #selector(MainMenu.showPresetHelp),
|
], target: MainMenu.shared)
|
||||||
keyEquivalent: "")
|
|
||||||
)
|
|
||||||
|
|
||||||
presetsMenu.items.forEach { $0.target = MainMenu.shared }
|
|
||||||
|
|
||||||
self.setSubmenu(presetsMenu, for: presets)
|
self.setSubmenu(presetsMenu, for: presets)
|
||||||
self.addItem(presets)
|
self.addItem(presets)
|
||||||
@@ -106,50 +102,22 @@ extension StatusMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func addLoadedPresets() {
|
func addLoadedPresets() {
|
||||||
let presets = NSMenuItem(title: "mi_presets_title".localized, action: nil, keyEquivalent: "")
|
let presets = NSMenuItem(title: "mi_presets_title".localized)
|
||||||
|
|
||||||
let presetsMenu = NSMenu()
|
let presetsMenu = NSMenu()
|
||||||
|
|
||||||
presetsMenu.addItem(NSMenuItem.separator())
|
let items = [
|
||||||
presetsMenu.addItem(HeaderView.asMenuItem(text: "mi_apply_presets_title".localized))
|
NSMenuItem.separator(),
|
||||||
|
HeaderView.asMenuItem(text: "mi_apply_presets_title".localized)
|
||||||
|
] + PresetMenuItem.getAll() + [
|
||||||
|
NSMenuItem.separator(),
|
||||||
|
NSMenuItem(title: "mi_revert_to_prev_config".localized,
|
||||||
|
action: PresetHelper.rollbackPreset != nil ? #selector(MainMenu.rollbackPreset) : nil),
|
||||||
|
NSMenuItem.separator(),
|
||||||
|
NSMenuItem(title: "mi_profiles_loaded".localized(Preferences.custom.presets!.count))
|
||||||
|
]
|
||||||
|
|
||||||
for preset in Preferences.custom.presets! {
|
presetsMenu.addItems(items, target: MainMenu.shared)
|
||||||
let presetMenuItem = PresetMenuItem(
|
|
||||||
title: preset.getMenuItemText(),
|
|
||||||
action: #selector(MainMenu.togglePreset(sender:)),
|
|
||||||
keyEquivalent: ""
|
|
||||||
)
|
|
||||||
|
|
||||||
if let attributedString = try? NSMutableAttributedString(
|
|
||||||
data: preset.getMenuItemText().data(using: .utf8)!,
|
|
||||||
options: [.documentType: NSAttributedString.DocumentType.html],
|
|
||||||
documentAttributes: nil
|
|
||||||
) {
|
|
||||||
presetMenuItem.attributedTitle = attributedString
|
|
||||||
}
|
|
||||||
|
|
||||||
presetMenuItem.preset = preset
|
|
||||||
presetsMenu.addItem(presetMenuItem)
|
|
||||||
}
|
|
||||||
|
|
||||||
presetsMenu.addItem(NSMenuItem.separator())
|
|
||||||
presetsMenu.addItem(NSMenuItem(
|
|
||||||
title: "mi_revert_to_prev_config".localized,
|
|
||||||
action: PresetHelper.rollbackPreset != nil
|
|
||||||
? #selector(MainMenu.rollbackPreset)
|
|
||||||
: nil,
|
|
||||||
keyEquivalent: ""
|
|
||||||
))
|
|
||||||
presetsMenu.addItem(NSMenuItem.separator())
|
|
||||||
presetsMenu.addItem(NSMenuItem(
|
|
||||||
title: "mi_profiles_loaded".localized(
|
|
||||||
Preferences.custom.presets!.count
|
|
||||||
),
|
|
||||||
action: nil, keyEquivalent: "")
|
|
||||||
)
|
|
||||||
for item in presetsMenu.items {
|
|
||||||
item.target = MainMenu.shared
|
|
||||||
}
|
|
||||||
self.setSubmenu(presetsMenu, for: presets)
|
self.setSubmenu(presetsMenu, for: presets)
|
||||||
self.addItem(presets)
|
self.addItem(presets)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user