summaryrefslogtreecommitdiff
path: root/core/lua/astal/binding.lua
diff options
context:
space:
mode:
authorAylur <[email protected]>2024-09-12 00:40:04 +0200
committerGitHub <[email protected]>2024-09-12 00:40:04 +0200
commit6c5d7659a75c093588117c4c28dd046409b3ac8f (patch)
treec120efe485c6d699d29480e12298c2cd7fe4626c /core/lua/astal/binding.lua
parentd203255ec20bb6e3b2917dd4aee53dee3a090137 (diff)
parent8b75dadc76274692988eb317d3cc6ce1aaa44780 (diff)
Merge pull request #5 from Aylur/nix/lua-builder
lua example, nix builder
Diffstat (limited to 'core/lua/astal/binding.lua')
-rw-r--r--core/lua/astal/binding.lua20
1 files changed, 13 insertions, 7 deletions
diff --git a/core/lua/astal/binding.lua b/core/lua/astal/binding.lua
index 50509d1..ba1e6e4 100644
--- a/core/lua/astal/binding.lua
+++ b/core/lua/astal/binding.lua
@@ -29,10 +29,13 @@ function Binding:__tostring()
end
function Binding:get()
+ if self.property ~= nil and GObject.Object:is_type_of(self.emitter) then
+ return self.transformFn(self.emitter[self.property])
+ end
if type(self.emitter.get) == "function" then
return self.transformFn(self.emitter:get())
end
- return self.transformFn(self.emitter[self.property])
+ error("can not get: Not a GObject or a Variable " + self)
end
---@param transform fun(value: any): any
@@ -48,17 +51,20 @@ end
---@param callback fun(value: any)
---@return function
function Binding:subscribe(callback)
+ if self.property ~= nil and GObject.Object:is_type_of(self.emitter) then
+ local id = self.emitter.on_notify:connect(function()
+ callback(self:get())
+ end, self.property, false)
+ return function()
+ GObject.signal_handler_disconnect(self.emitter, id)
+ end
+ end
if type(self.emitter.subscribe) == "function" then
return self.emitter:subscribe(function()
callback(self:get())
end)
end
- local id = self.emitter.on_notify:connect(function()
- callback(self:get())
- end, self.property, false)
- return function()
- GObject.signal_handler_disconnect(self.emitter, id)
- end
+ error("can not subscribe: Not a GObject or a Variable " + self)
end
Binding.__index = Binding