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

Add AppMenu class for easy access to main menu

This commit is contained in:
2024-06-27 21:23:59 +02:00
parent 62587bdf65
commit 2c2627dc9f
3 changed files with 60 additions and 13 deletions

View File

@ -597,6 +597,10 @@
C4811D2A22D70F9A00B5F6B3 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */; };
C481F79726164A78004FBCFF /* PreferencesVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5420395826135DC100FB00FA /* PreferencesVC.swift */; };
C481F79A26164A7C004FBCFF /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5420395E2613607600FB00FA /* Preferences.swift */; };
C4821C5A2C2DEDE200357A68 /* AppMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4821C592C2DEDE200357A68 /* AppMenu.swift */; };
C4821C5B2C2DEDE200357A68 /* AppMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4821C592C2DEDE200357A68 /* AppMenu.swift */; };
C4821C5C2C2DEDE200357A68 /* AppMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4821C592C2DEDE200357A68 /* AppMenu.swift */; };
C4821C5D2C2DEDE200357A68 /* AppMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4821C592C2DEDE200357A68 /* AppMenu.swift */; };
C485706D28BF450900539B36 /* NSMenuItemExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40508B028ADAB44008FAC1F /* NSMenuItemExtension.swift */; };
C485706E28BF451C00539B36 /* OnboardingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4FACE82288F1F9700FC478F /* OnboardingWindowController.swift */; };
C485706F28BF452300539B36 /* PhpDoctorWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C422DDAC28A2DAC600CEAC97 /* PhpDoctorWindowController.swift */; };
@ -1074,6 +1078,7 @@
C47DF1AE299D5A3B0007055D /* LoginItemManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginItemManager.swift; sourceTree = "<group>"; };
C4811D2322D70A4700B5F6B3 /* App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = "<group>"; };
C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; };
C4821C592C2DEDE200357A68 /* AppMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppMenu.swift; sourceTree = "<group>"; };
C489E0BA2A220A4200323F5E /* FakeBrewFormulaeHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeBrewFormulaeHandler.swift; sourceTree = "<group>"; };
C48D0C9225CC804200CC7490 /* XibLoadable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XibLoadable.swift; sourceTree = "<group>"; };
C48D6C6F279CD2AC00F26D7E /* VersionNumber.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VersionNumber.swift; sourceTree = "<group>"; };
@ -1856,6 +1861,7 @@
C4F361602836BFD9003598CC /* MainMenu+Actions.swift */,
C47331A1247093B7009A0597 /* StatusMenu.swift */,
C4C3643828AE4FCE00C0770E /* StatusMenu+Items.swift */,
C4821C592C2DEDE200357A68 /* AppMenu.swift */,
);
path = Menu;
sourceTree = "<group>";
@ -2699,6 +2705,7 @@
C44067F927E2585E0045BD4E /* DomainListTypeCell.swift in Sources */,
54D9E0BA27E4F51E003B9AD9 /* ModifierFlagsExtension.swift in Sources */,
C4C3ED412783497000AB15D8 /* MainMenu+Startup.swift in Sources */,
C4821C5A2C2DEDE200357A68 /* AppMenu.swift in Sources */,
C42106662AFA9FF400DF3732 /* PhpVersionManagerView+Actions.swift in Sources */,
C4B79ECB29CA475900A483EE /* RemovePhpVersionCommand.swift in Sources */,
C40D725F2A018AE30054A067 /* BrewFormula+UI.swift in Sources */,
@ -2918,6 +2925,7 @@
C471E7D628F9BA8F0021E251 /* RealFileSystem.swift in Sources */,
C471E81728F9BAE80021E251 /* NSMenuExtension.swift in Sources */,
C40D725C2A018ACC0054A067 /* BusyStatus.swift in Sources */,
C4821C5C2C2DEDE200357A68 /* AppMenu.swift in Sources */,
C471E81328F9BAE80021E251 /* XibLoadable.swift in Sources */,
C4D3661C291173EA006BD146 /* DictionaryExtension.swift in Sources */,
C4B79ECD29CA475900A483EE /* RemovePhpVersionCommand.swift in Sources */,
@ -2996,6 +3004,7 @@
C471E8C128F9BB8F0021E251 /* DomainListVC+ContextMenu.swift in Sources */,
C4BF56AE2949381100379603 /* FakeValetInteractor.swift in Sources */,
C471E8C228F9BB8F0021E251 /* DomainListVC+Actions.swift in Sources */,
C4821C5D2C2DEDE200357A68 /* AppMenu.swift in Sources */,
C4D36618291160A1006BD146 /* WIP.swift in Sources */,
C471E8C328F9BB8F0021E251 /* SelectionVC.swift in Sources */,
C471E8C428F9BB8F0021E251 /* AddSiteVC.swift in Sources */,
@ -3198,6 +3207,7 @@
C4C0E8E327F88B13002D32A9 /* ValetDomainScanner.swift in Sources */,
C4CCBA6D275C567B008C7055 /* PMWindowController.swift in Sources */,
C4B5635F276AB09000F12CCB /* VersionExtractor.swift in Sources */,
C4821C5B2C2DEDE200357A68 /* AppMenu.swift in Sources */,
C463E381284930EE00422731 /* PresetHelper.swift in Sources */,
C441CC572AE8249400DDFACD /* ConfigFSNotifier.swift in Sources */,
C4F520672AF03791006787F2 /* ExtensionEnumeratorTest.swift in Sources */,

View File

@ -0,0 +1,41 @@
//
// AppMenu.swift
// PHP Monitor
//
// Created by Nico Verbruggen on 27/06/2024.
// Copyright © 2024 Nico Verbruggen. All rights reserved.
//
import Cocoa
class AppMenu {
// MARK: - Main Menu
static var appMenu: NSMenu? {
return NSApplication.shared.mainMenu?.items[0].submenu
}
static var sitesMenu: NSMenu? {
return NSApplication.shared.mainMenu?.items[1].submenu
}
static var editMenu: NSMenu? {
return NSApplication.shared.mainMenu?.items[2].submenu
}
static var windowMenu: NSMenu? {
return NSApplication.shared.mainMenu?.items[3].submenu
}
static var helpMenu: NSMenu? {
return NSApplication.shared.mainMenu?.items[4].submenu
}
// MARK: - Submenu
static var actionsMenu: NSMenuItem? {
return sitesMenu?.items.last
}
}

View File

@ -10,31 +10,27 @@ import Cocoa
extension DomainListVC {
private var actionsMenu: NSMenuItem? {
return NSApplication.shared.mainMenu?.items[1].submenu?.items.last
}
internal func reloadContextMenu() {
guard let selected = selected else {
tableView.menu = nil
actionsMenu?.title = "mm_actions".localized
actionsMenu?.submenu = nil
actionsMenu?.isEnabled = false
AppMenu.actionsMenu?.title = "mm_actions".localized
AppMenu.actionsMenu?.submenu = nil
AppMenu.actionsMenu?.isEnabled = false
return
}
if let selected = selected as? ValetSite {
tableView.menu = addMenuItemsForSite(selected)
actionsMenu?.title = "mm_actions".localized + " (\(selected.name).\(selected.tld))"
actionsMenu?.submenu = tableView.menu
actionsMenu?.isEnabled = true
AppMenu.actionsMenu?.title = "mm_actions".localized + " (\(selected.name).\(selected.tld))"
AppMenu.actionsMenu?.submenu = tableView.menu
AppMenu.actionsMenu?.isEnabled = true
return
}
if let selected = selected as? ValetProxy {
tableView.menu = addMenuItemsForProxy(selected)
actionsMenu?.title = "mm_actions".localized + " (\(selected.domain).\(selected.tld))"
actionsMenu?.submenu = tableView.menu
actionsMenu?.isEnabled = true
AppMenu.actionsMenu?.title = "mm_actions".localized + " (\(selected.domain).\(selected.tld))"
AppMenu.actionsMenu?.submenu = tableView.menu
AppMenu.actionsMenu?.isEnabled = true
return
}
}