@@ -29,6 +29,15 @@ let focusModifiers: [(String, NSEvent.ModifierFlags)] = [
2929 ( " ⇧ Shift " , . shift)
3030]
3131
32+ // The available status item images that the user may pick from.
33+ let statusItemImages : [ ( String , String ) ] = [
34+ ( " Magnifying Glass (Default) " , " icon-default " ) ,
35+ ( " Palette " , " icon-palette " ) ,
36+ ( " Dropper " , " icon-dropper " ) ,
37+ ( " Magnifying Glass Dropper " , " icon-mag-dropper " ) ,
38+ ( " Magnifying Glass Dropper Flat " , " icon-mag-dropper-flat " )
39+ ]
40+
3241extension AppDelegate : NSMenuDelegate {
3342 // Unregister the activating shortcut when the menu is opened/closed so it can't be called when
3443 // setting a new shortcut. Also start a run loop observer so we know when the modifierFlags have
@@ -75,11 +84,12 @@ extension AppDelegate: NSMenuDelegate {
7584 contextMenu. removeAllItems ( )
7685
7786 let pickItem = contextMenu. addItem ( withTitle: " Pick a pixel! " , action: #selector( showPicker) , keyEquivalent: " " )
78- pickItem. image = ICON
87+ pickItem. image = PPState . shared . statusItemImage ( withName : PPState . shared . statusItemImageName )
7988
8089 buildRecentPicks ( )
8190
8291 contextMenu. addItem ( . separator( ) )
92+ buildAppIconMenu ( )
8393 buildShowGridMenu ( )
8494 buildColorSpaceItem ( )
8595 buildColorFormatsMenu ( )
@@ -95,6 +105,27 @@ extension AppDelegate: NSMenuDelegate {
95105 contextMenu. addItem ( withTitle: " Quit \( APP_NAME) " , action: #selector( quitApplication) , keyEquivalent: " " )
96106 }
97107
108+ // Choose the status item icon.
109+ private func buildAppIconMenu( ) {
110+ let submenu = NSMenu ( )
111+ for (name, imageName) in statusItemImages {
112+ let item = submenu. addItem ( withTitle: name, action: #selector( selectAppIcon ( _: ) ) , keyEquivalent: " " )
113+ item. representedObject = imageName
114+ item. state = PPState . shared. statusItemImageName == imageName ? . on : . off
115+ item. image = PPState . shared. statusItemImage ( withName: imageName)
116+ }
117+
118+ let item = contextMenu. addItem ( withTitle: " App Icon " , action: nil , keyEquivalent: " " )
119+ item. submenu = submenu
120+ }
121+
122+ @objc private func selectAppIcon( _ sender: NSMenuItem ) {
123+ if let imageName = sender. representedObject as? String {
124+ menuBarItem. image = PPState . shared. statusItemImage ( withName: imageName)
125+ PPState . shared. statusItemImageName = imageName
126+ }
127+ }
128+
98129 // Choose whether to always draw a grid, never draw one, or only draw one when in focus mode.
99130 private func buildShowGridMenu( ) {
100131 let submenu = NSMenu ( )
0 commit comments