g13button: Swap out the old notification mechanism for triggers

This is a bit cleaner, overall, but also this makes key binding in the UI
actually work again.
This commit is contained in:
June Tate-Gans 2021-05-03 18:12:51 -05:00
parent 003ab3b526
commit 240be20b63

View File

@ -15,15 +15,25 @@ class G13Button(Gtk.MenuButton, GtkObserver):
GtkObserver.__init__(self) GtkObserver.__init__(self)
self._prefs = prefs self._prefs = prefs
self._prefs.registerObserver(self, {'selectedProfile'})
self._keyName = g13KeyName self._keyName = g13KeyName
self._lastProfileName = None self._lastProfileName = None
self._prefs.registerObserver(self, {'selectedProfile', self._keyName})
self.changeTrigger(self.onSelectedProfileChanged,
keys={'selectedProfile'})
self.changeTrigger(self.onBindingChanged, keys={self._keyName})
self._popover = ui.G13ButtonPopover(self, self._prefs, self._keyName) self._popover = ui.G13ButtonPopover(self, self._prefs, self._keyName)
self.set_popover(self._popover) self.set_popover(self._popover)
self.set_can_default(False) self.set_can_default(False)
self.updateProfileRegistration() self.updateProfileRegistration()
def onSelectedProfileChanged(self, subject, changeType, key, data):
self.updateProfileRegistration()
self.updateBindingDisplay()
def onBindingChanged(self, subject, changeType, key, data):
self.updateBindingDisplay() self.updateBindingDisplay()
def updateProfileRegistration(self): def updateProfileRegistration(self):
@ -46,20 +56,11 @@ class G13Button(Gtk.MenuButton, GtkObserver):
if len(bindings) > 0: if len(bindings) > 0:
keybinds = BindsToKeynames(bindings) keybinds = BindsToKeynames(bindings)
accelerator = '+'.join(keybinds) accelerator = '+'.join(keybinds)
shortcut = Gtk.ShortcutsShortcut( label = Gtk.Label(accelerator)
shortcut_type=Gtk.ShortcutType.ACCELERATOR, label.set_halign(Gtk.Align.CENTER)
accelerator=accelerator) self.add(label)
shortcut.set_halign(Gtk.Align.CENTER)
self.add(shortcut)
else: else:
label = Gtk.Label(self._keyName) label = Gtk.Label(self._keyName)
self.add(label) self.add(label)
self.show_all() self.show_all()
def gtkSubjectChanged(self, subject, changeType, key, data=None):
if key == 'selectedProfile':
self.updateProfileRegistration()
self.updateBindingDisplay()
elif key == self._keyName:
self.updateBindingDisplay()