Migrate Swift struct to Swift class to allow generateMenu to be called by objc selector

This commit is contained in:
Felix Förtsch
2019-01-01 17:48:28 +01:00
parent 62505e56bb
commit c41cdb0f80
3 changed files with 29 additions and 20 deletions
+12 -3
View File
@@ -20,23 +20,32 @@ class StatusBarController: NSObject, NSMenuItemValidation {
var matches = [Match]()
override func awakeFromNib() {
// Set the icon of the statusbar item and put it into the statusbar
// Set the icon of the statusbar item and put it into the statusbar.
let icon = NSImage(named: "statusBarIcon")
icon?.isTemplate = true
statusBarItem.image = icon
statusBarItem.menu = statusBar
// Add the starting menu items.
statusBar.addItem(NSMenuItem.init(title: "Refresh", action: #selector(refreshClicked), keyEquivalent: ""))
statusBar.addItem(NSMenuItem.init(title: "Set MatchView", action: #selector(updateView), keyEquivalent: ""))
statusBar.addItem(NSMenuItem.init(title: "Quit", action: #selector(quitClicked), keyEquivalent: ""))
// Set the target to self, so the selectors know what to select.
for item in statusBar.items {
item.target = self
}
//--
statusBar.addItem(NSMenuItem.separator())
// statusBar.insertItem(NSMenuItem.init(title: "Refresh", action: #selector(generateMenu), keyEquivalent: ""), at: 3)
//--
statusBar.insertItem(NSMenuItem.init(title: "Refresh", action: #selector(generateMenu), keyEquivalent: ""), at: 3)
performSelector(inBackground: #selector(refreshClicked), with: nil)
}
func generateMenu(for matches: [Match]) {
@objc func generateMenu(for matches: [Match]) {
for item in statusBar.items {
if item.tag == 1 {
statusBar.removeItem(item)