Change profile section only when updating menu
This commit is contained in:
@ -32,10 +32,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
|||||||
@IBOutlet weak var serversMenuItem: NSMenuItem!
|
@IBOutlet weak var serversMenuItem: NSMenuItem!
|
||||||
@IBOutlet var showQRCodeMenuItem: NSMenuItem!
|
@IBOutlet var showQRCodeMenuItem: NSMenuItem!
|
||||||
@IBOutlet var scanQRCodeMenuItem: NSMenuItem!
|
@IBOutlet var scanQRCodeMenuItem: NSMenuItem!
|
||||||
@IBOutlet var showBunchJsonExampleFileItem: NSMenuItem!
|
@IBOutlet var serverProfilesBeginSeparatorMenuItem: NSMenuItem!
|
||||||
@IBOutlet var importBunchJsonFileItem: NSMenuItem!
|
@IBOutlet var serverProfilesEndSeparatorMenuItem: NSMenuItem!
|
||||||
@IBOutlet var exportAllServerProfileItem: NSMenuItem!
|
|
||||||
@IBOutlet var serversPreferencesMenuItem: NSMenuItem!
|
|
||||||
|
|
||||||
@IBOutlet weak var copyHttpProxyExportCmdLineMenuItem: NSMenuItem!
|
@IBOutlet weak var copyHttpProxyExportCmdLineMenuItem: NSMenuItem!
|
||||||
|
|
||||||
@ -478,39 +476,33 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
|||||||
}
|
}
|
||||||
|
|
||||||
func updateServersMenu() {
|
func updateServersMenu() {
|
||||||
|
guard let menu = serversMenuItem.submenu else { return }
|
||||||
|
|
||||||
let mgr = ServerProfileManager.instance
|
let mgr = ServerProfileManager.instance
|
||||||
serversMenuItem.submenu?.removeAllItems()
|
let profiles = mgr.profiles
|
||||||
let preferencesItem = serversPreferencesMenuItem
|
|
||||||
let showBunch = showBunchJsonExampleFileItem
|
|
||||||
let importBuntch = importBunchJsonFileItem
|
|
||||||
let exportAllServer = exportAllServerProfileItem
|
|
||||||
|
|
||||||
serversMenuItem.submenu?.addItem(preferencesItem!)
|
// Remove all profile menu items
|
||||||
serversMenuItem.submenu?.addItem(NSMenuItem.separator())
|
let beginIndex = menu.index(of: serverProfilesBeginSeparatorMenuItem) + 1
|
||||||
|
let endIndex = menu.index(of: serverProfilesEndSeparatorMenuItem)
|
||||||
|
// Remove from end to begin, so the index won't change :)
|
||||||
|
for index in (beginIndex..<endIndex).reversed() {
|
||||||
|
menu.removeItem(at: index)
|
||||||
|
}
|
||||||
|
|
||||||
var i = 0
|
// Insert all profile menu items
|
||||||
for p in mgr.profiles {
|
for (i, profile) in profiles.enumerated().reversed() {
|
||||||
let item = NSMenuItem()
|
let item = NSMenuItem()
|
||||||
item.tag = i + kProfileMenuItemIndexBase
|
item.tag = i + kProfileMenuItemIndexBase
|
||||||
item.title = p.title()
|
item.title = profile.title()
|
||||||
if mgr.activeProfileId == p.uuid {
|
item.state = (mgr.activeProfileId == profile.uuid) ? 1 : 0
|
||||||
item.state = 1
|
item.isEnabled = profile.isValid()
|
||||||
}
|
|
||||||
if !p.isValid() {
|
|
||||||
item.isEnabled = false
|
|
||||||
}
|
|
||||||
item.action = #selector(AppDelegate.selectServer)
|
item.action = #selector(AppDelegate.selectServer)
|
||||||
|
|
||||||
serversMenuItem.submenu?.addItem(item)
|
menu.insertItem(item, at: beginIndex)
|
||||||
i += 1
|
|
||||||
}
|
|
||||||
if !mgr.profiles.isEmpty {
|
|
||||||
serversMenuItem.submenu?.addItem(NSMenuItem.separator())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
serversMenuItem.submenu?.addItem(showBunch!)
|
// End separator is redundant if profile section is empty
|
||||||
serversMenuItem.submenu?.addItem(importBuntch!)
|
serverProfilesEndSeparatorMenuItem.isHidden = profiles.isEmpty
|
||||||
serversMenuItem.submenu?.addItem(exportAllServer!)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleURLEvent(_ event: NSAppleEventDescriptor, withReplyEvent replyEvent: NSAppleEventDescriptor) {
|
func handleURLEvent(_ event: NSAppleEventDescriptor, withReplyEvent replyEvent: NSAppleEventDescriptor) {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12121"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||||
@ -16,15 +16,13 @@
|
|||||||
<connections>
|
<connections>
|
||||||
<outlet property="autoModeMenuItem" destination="r07-Gu-aEz" id="9aH-pQ-Rgi"/>
|
<outlet property="autoModeMenuItem" destination="r07-Gu-aEz" id="9aH-pQ-Rgi"/>
|
||||||
<outlet property="copyHttpProxyExportCmdLineMenuItem" destination="lg6-To-GZA" id="VTb-he-dg4"/>
|
<outlet property="copyHttpProxyExportCmdLineMenuItem" destination="lg6-To-GZA" id="VTb-he-dg4"/>
|
||||||
<outlet property="exportAllServerProfileItem" destination="6k0-gn-DQv" id="W2x-96-ISj"/>
|
|
||||||
<outlet property="globalModeMenuItem" destination="Mw3-Jm-eXA" id="ar5-Yx-3ze"/>
|
<outlet property="globalModeMenuItem" destination="Mw3-Jm-eXA" id="ar5-Yx-3ze"/>
|
||||||
<outlet property="importBunchJsonFileItem" destination="T9g-gy-gvv" id="vua-jg-YWe"/>
|
|
||||||
<outlet property="manualModeMenuItem" destination="8PR-gs-c5N" id="9qz-mU-5kt"/>
|
<outlet property="manualModeMenuItem" destination="8PR-gs-c5N" id="9qz-mU-5kt"/>
|
||||||
<outlet property="runningStatusMenuItem" destination="fzk-mE-CEV" id="Vwm-Rg-Ykn"/>
|
<outlet property="runningStatusMenuItem" destination="fzk-mE-CEV" id="Vwm-Rg-Ykn"/>
|
||||||
<outlet property="scanQRCodeMenuItem" destination="Qe6-bF-paT" id="XHa-pa-nCa"/>
|
<outlet property="scanQRCodeMenuItem" destination="Qe6-bF-paT" id="XHa-pa-nCa"/>
|
||||||
|
<outlet property="serverProfilesBeginSeparatorMenuItem" destination="4iN-w2-but" id="Jyu-48-AzD"/>
|
||||||
|
<outlet property="serverProfilesEndSeparatorMenuItem" destination="3cf-dF-7dx" id="eyc-6W-nWV"/>
|
||||||
<outlet property="serversMenuItem" destination="u5M-hQ-VSc" id="8gp-SY-Y4U"/>
|
<outlet property="serversMenuItem" destination="u5M-hQ-VSc" id="8gp-SY-Y4U"/>
|
||||||
<outlet property="serversPreferencesMenuItem" destination="M5r-E7-44f" id="voe-SX-k6a"/>
|
|
||||||
<outlet property="showBunchJsonExampleFileItem" destination="pdy-JE-50Q" id="xcZ-ep-mON"/>
|
|
||||||
<outlet property="showQRCodeMenuItem" destination="R6A-96-Zcb" id="XHz-pz-nCz"/>
|
<outlet property="showQRCodeMenuItem" destination="R6A-96-Zcb" id="XHz-pz-nCz"/>
|
||||||
<outlet property="statusMenu" destination="Hob-KD-bx9" id="clA-ZW-0pT"/>
|
<outlet property="statusMenu" destination="Hob-KD-bx9" id="clA-ZW-0pT"/>
|
||||||
<outlet property="toggleRunningMenuItem" destination="GSu-Tf-StS" id="XHw-pU-nCa"/>
|
<outlet property="toggleRunningMenuItem" destination="GSu-Tf-StS" id="XHw-pU-nCa"/>
|
||||||
@ -73,6 +71,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem isSeparatorItem="YES" id="4iN-w2-but"/>
|
<menuItem isSeparatorItem="YES" id="4iN-w2-but"/>
|
||||||
|
<menuItem isSeparatorItem="YES" id="3cf-dF-7dx"/>
|
||||||
<menuItem title="Show Bunch Json Example File..." id="pdy-JE-50Q">
|
<menuItem title="Show Bunch Json Example File..." id="pdy-JE-50Q">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
|
Reference in New Issue
Block a user