Alexis G
Alexis G

Reputation: 1339

Boolean Variable given by a NSMenuItem

I try to define a global boolean variable by a click/unclick on a NSMenuItem and indicate the value just before the label with a tick, as currently done in f.lux (cf. picture below).

My menu is currently build as below and I do not find on NSMenuItem documentation how to achieve it.

Has someone already done it ?

let menu = NSMenu()

menu.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem(title: "Autocheck", action: #selector(AppDelegate.autocheck(_:)), keyEquivalent: ""))

menu.addItem(NSMenuItem(title: "Quit", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))
statusItem.menu = menu

f.lux

Upvotes: 0

Views: 84

Answers (1)

rmaddy
rmaddy

Reputation: 318884

The way is to use the state property of NSMenuItem. Final code is:

let menu = NSMenu()

menu.addItem(NSMenuItem.separator())
let autocheck = NSMenuItem(title: "Autocheck", action: #selector(AppDelegate.automount_bool(_:)), keyEquivalent: "")

if automount==true{
    autocheck.state = NSControl.StateValue.on
}else{
    autocheck.state = NSControl.StateValue.off
}

menu.addItem(autocheck)
menu.addItem(NSMenuItem(title: "Quit", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))

statusItem.menu = menu

Upvotes: 1

Related Questions