Skip to content

Commit ca3e891

Browse files
Add scripts menu items
1 parent f48c817 commit ca3e891

File tree

5 files changed

+33
-1
lines changed

5 files changed

+33
-1
lines changed

HA Menu/AppDelegate.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ extension AppDelegate {
5454
"domain_inputbooleans": true,
5555
"domain_inputselects": true,
5656
"domain_scenes": true,
57+
"domain_scripts": true,
5758
"betaNotifications": false
5859
])
5960

HA Menu/MenuItemController.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@ final class MenuItemController: NSObject, NSMenuDelegate {
200200
itemType = EntityTypes.automationType
201201
case "scene":
202202
itemType = EntityTypes.sceneType
203+
case "script":
204+
itemType = EntityTypes.scriptType
205+
203206
default:
204207
itemType = nil
205208
}
@@ -305,6 +308,11 @@ final class MenuItemController: NSObject, NSMenuDelegate {
305308
menuItem.state = NSControl.StateValue.off
306309
menuItem.offStateImage = NSImage(named: "PlayButtonImage")
307310
}
311+
else if haEntity.domainType == EntityDomains.scriptDomain {
312+
menuItem.action = #selector(self.turnOnEntity(_:))
313+
menuItem.state = NSControl.StateValue.off
314+
menuItem.offStateImage = NSImage(named: "PlayButtonImage")
315+
}
308316
else {
309317
menuItem.action = #selector(self.toggleEntityState(_:))
310318
menuItem.state = ((haEntity.state == "on") ? NSControl.StateValue.on : NSControl.StateValue.off)

HA Menu/Models/HaEntity.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ enum EntityTypes: Int, CaseIterable {
1616
case inputSelectType = 6
1717
case groupType = 7
1818
case sceneType = 8
19+
case scriptType = 9
1920
case unknownType = 999
2021
}
2122

@@ -26,6 +27,7 @@ enum EntityDomains: String, CaseIterable {
2627
case automationDomain = "automation"
2728
case inputSelectDomain = "input_select"
2829
case sceneDomain = "scene"
30+
case scriptDomain = "script"
2931
case groupDomain = "group"
3032
case unknownDomain = "unknown"
3133
}
@@ -52,6 +54,9 @@ struct HaEntity {
5254
return EntityDomains.inputSelectDomain
5355
case EntityDomains.sceneDomain.rawValue:
5456
return EntityDomains.sceneDomain
57+
case EntityDomains.scriptDomain.rawValue:
58+
return EntityDomains.scriptDomain
59+
5560
case EntityDomains.groupDomain.rawValue:
5661
return EntityDomains.groupDomain
5762
default:
@@ -81,6 +86,9 @@ struct HaEntity {
8186
return EntityTypes.inputSelectType
8287
case EntityDomains.sceneDomain:
8388
return EntityTypes.sceneType
89+
case EntityDomains.scriptDomain:
90+
return EntityTypes.scriptType
91+
8492
case EntityDomains.groupDomain:
8593
return EntityTypes.groupType
8694
default:

HA Menu/Models/Preferences.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,16 @@ struct Preferences {
165165
}
166166
}
167167

168+
var domainScripts: Bool {
169+
get {
170+
return UserDefaults.standard.bool(forKey: "domain_scripts")
171+
}
172+
set {
173+
UserDefaults.standard.set(newValue, forKey: "domain_scripts")
174+
UserDefaults.standard.synchronize()
175+
}
176+
}
177+
168178
var menuItems: [PrefMenuItem] {
169179
get {
170180
var decodedResponse = [PrefMenuItem]()
@@ -183,6 +193,10 @@ struct Preferences {
183193
decodedResponse.append(PrefMenuItem(entityId: "scene", itemType: itemTypes.Domain, subMenu: true, enabled: domainScenes, friendlyName: "Scenes"))
184194
}
185195

196+
if !domainExists(domain: "script", prefs: decodedResponse) {
197+
decodedResponse.append(PrefMenuItem(entityId: "script", itemType: itemTypes.Domain, subMenu: true, enabled: domainScenes, friendlyName: "Scripts"))
198+
}
199+
186200
return decodedResponse
187201
}
188202
catch {
@@ -205,6 +219,7 @@ struct Preferences {
205219

206220
decodedResponse.append(PrefMenuItem(entityId: "scene", itemType: itemTypes.Domain, subMenu: true, enabled: domainScenes, friendlyName: "Scenes"))
207221

222+
decodedResponse.append(PrefMenuItem(entityId: "script", itemType: itemTypes.Domain, subMenu: true, enabled: domainScripts, friendlyName: "Scripts"))
208223

209224
// Init Groups from old setting
210225
for group in groups {

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
A Mac OS Menu Bar app to perform common Home Assistant functions
55
Currently HA Menu supports
66
* Turning available switches, lights, automations and input_boolean's on and off
7-
* Activating scenes
7+
* Activating scenes and scripts
88
* input_select option menus
99

1010
HA Menu supports MacOS 10.13 (High Sierra) and later.

0 commit comments

Comments
 (0)