diff --git a/g13gui/g13gui/ui/appindicator.py b/g13gui/g13gui/ui/appindicator.py index 882f54b..13a999d 100644 --- a/g13gui/g13gui/ui/appindicator.py +++ b/g13gui/g13gui/ui/appindicator.py @@ -17,13 +17,16 @@ class AppIndicator(GtkObserver): self._initIndicator() self._prefs = prefs - self._prefs.registerObserver(self, {'profile'}) self._mainWindow = mainWindow self._menu = Gtk.Menu() self._menuItems = [] self._indicator.set_menu(self._menu) self._rebuilding = False + self._prefs.registerObserver(self, {'selectedProfile'}) + self.changeTrigger(self.onSelectedProfileChanged, + keys={'selectedProfile'}) + self._rebuildMenu() def _initIndicator(self): @@ -79,7 +82,6 @@ class AppIndicator(GtkObserver): def changeProfile(self, menuItem): self._prefs.setSelectedProfile(menuItem.get_label()) - self._rebuildMenu() - def gtkSubjectChanged(self, subject, changeType, key, data=None): + def onSelectedProfileChanged(self, subject, changeType, key, data): self._rebuildMenu() diff --git a/g13gui/g13gui/ui/g13buttonpopover.py b/g13gui/g13gui/ui/g13buttonpopover.py index ace694c..9d06d11 100644 --- a/g13gui/g13gui/ui/g13buttonpopover.py +++ b/g13gui/g13gui/ui/g13buttonpopover.py @@ -20,6 +20,8 @@ class G13ButtonPopover(Gtk.Popover, GtkObserver): self._prefs = prefs self._prefs.registerObserver(self, {'selectedProfile'}) + self.changeTrigger(self.onSelectedProfileChanged, + keys={'selectedProfile'}) self._inputReader = InputReader() self._inputReader.connect('evdev-key-pressed', self.keypress) @@ -43,7 +45,7 @@ class G13ButtonPopover(Gtk.Popover, GtkObserver): selectedProfile = self._prefs.selectedProfile() self._currentBindings = selectedProfile.keyBinding(self._keyName) - def gtkSubjectChanged(self, subject, changeType, key, data=None): + def onSelectedProfileChanged(self, subject, changeType, key, data): self.updateBinding() def build(self): diff --git a/g13gui/g13gui/ui/mainwindow.py b/g13gui/g13gui/ui/mainwindow.py index b6a74e8..9128dd1 100644 --- a/g13gui/g13gui/ui/mainwindow.py +++ b/g13gui/g13gui/ui/mainwindow.py @@ -28,6 +28,8 @@ class MainWindow(Gtk.Window, GtkObserver): self._prefs.selectedProfile().registerObserver(self) self._lastProfileName = self._prefs.selectedProfileName() + self.changeTrigger(self.onChangeTrigger) + self.setupHeaderBar() self._box = Gtk.Box(spacing=6, orientation=Gtk.Orientation.VERTICAL) @@ -43,7 +45,7 @@ class MainWindow(Gtk.Window, GtkObserver): self.setupG13ButtonGrid() - def gtkSubjectChanged(self, subject, changeType, key, data=None): + def onChangeTrigger(self, subject, changeType, key, data=None): print('Subject changed! Need to save!') pass @@ -53,7 +55,6 @@ class MainWindow(Gtk.Window, GtkObserver): self._headerBar.set_show_close_button(True) self._profileComboBox = ui.ProfileComboBox(self._prefs) - self._profileComboBox.connect('changed', self._profileChanged) self._headerBar.add(self._profileComboBox) addProfileButton = Gtk.MenuButton.new() @@ -104,9 +105,6 @@ class MainWindow(Gtk.Window, GtkObserver): else: self._infoBar.hide() - def _profileChanged(self, widget): - self._doUpload() - def uploadClicked(self, widget): self._doUpload() self._doSave() diff --git a/g13gui/g13gui/ui/profilecombobox.py b/g13gui/g13gui/ui/profilecombobox.py index dea14ce..b4abb08 100644 --- a/g13gui/g13gui/ui/profilecombobox.py +++ b/g13gui/g13gui/ui/profilecombobox.py @@ -24,6 +24,8 @@ class ProfileComboBox(Gtk.ComboBoxText, GtkObserver): self._prefs = prefs self._prefs.registerObserver(self, {'profile', 'selectedProfile'}) + self.changeTrigger(self.onSelectedProfileChanged, + keys={'selectedProfile'}) self._isUpdating = False self._ignoreSelectionChange = False @@ -54,11 +56,11 @@ class ProfileComboBox(Gtk.ComboBoxText, GtkObserver): self.set_active(row) row = row + 1 - def gtkSubjectChanged(self, subject, changeType, key, data=None): - if key == 'profile': - name = list(data.keys())[0] - if changeType == ChangeType.ADD: - self._model.append([name, name]) - - if key == 'selectedProfile' and not self._ignoreSelectionChange: + def onSelectedProfileChanged(self, subject, changeType, key, data): + if not self._ignoreSelectionChange: self.update() + + def onProfileChanged(self, subject, changeType, key, data): + name = list(data.keys())[0] + if changeType == ChangeType.ADD: + self._model.append([name, name])