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