def new(cls, action_name, obj, property_name):
default = obj.get_property(property_name)
self = cls.__new__(cls)
self.obj = obj
self.property_name = property_name
if isinstance(default, str):
self.type_name = "s"
param_type = GLib.VariantType.new("s")
elif isinstance(default, bool):
self.type_name = "b"
param_type = None
else:
raise AssertionError("Don't know what to do with {}".format(type(default)))
self.action = Gio.SimpleAction.new_stateful(action_name, param_type, GLib.Variant(self.type_name, default))
if isinstance(default, str):
self.action.connect('change-state', self.change_state)
elif isinstance(default, bool):
self.action.connect('activate', self.activate)
obj.connect('notify::' + property_name, self.changed)
return self.action
评论列表
文章目录