From 0e259e49357d5389db897414fc52b50b1ce1d14c Mon Sep 17 00:00:00 2001 From: Aylur Date: Wed, 11 Sep 2024 20:52:44 +0000 Subject: example: add lua simple-bar --- core/lua/astal/binding.lua | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'core/lua/astal/binding.lua') 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 -- cgit v1.2.3