From b2576707ea3f9484aeca515d35881f8e1a5964d5 Mon Sep 17 00:00:00 2001 From: June Tate-Gans Date: Wed, 28 Apr 2021 23:25:02 -0500 Subject: [PATCH] g13gui: Make ProfileComboBox sensitive to profile changes Have to latch it using _ignoreSelectionChange to prevent loops on application start, but this does allow us to change the profile either from the main window or from the appindicator menu. --- g13gui/g13gui/ui/profilecombobox.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/g13gui/g13gui/ui/profilecombobox.py b/g13gui/g13gui/ui/profilecombobox.py index ac21ebd..ef5657d 100644 --- a/g13gui/g13gui/ui/profilecombobox.py +++ b/g13gui/g13gui/ui/profilecombobox.py @@ -23,8 +23,9 @@ class ProfileComboBox(Gtk.ComboBoxText, GtkObserver): GtkObserver.__init__(self) self._prefs = prefs - self._prefs.registerObserver(self, {'profile'}) + self._prefs.registerObserver(self, {'profile', 'selectedProfile'}) self._isUpdating = False + self._ignoreSelectionChange = False self._model = self.get_model() self._model.set_sort_column_id(0, Gtk.SortType.ASCENDING) @@ -35,9 +36,10 @@ class ProfileComboBox(Gtk.ComboBoxText, GtkObserver): def _profileChanged(self, widget): selectedProfile = self.get_active_text() - print('Profile changed to %s' % selectedProfile) if selectedProfile: + self._ignoreSelectionChange = True self._prefs.setSelectedProfile(selectedProfile) + self._ignoreSelectionChange = False def update(self): profiles = self._prefs.profileNames() @@ -53,7 +55,10 @@ class ProfileComboBox(Gtk.ComboBoxText, GtkObserver): row = row + 1 def gtkSubjectChanged(self, subject, changeType, key, data=None): - name = list(data.keys())[0] + if key == 'profile': + name = list(data.keys())[0] + if changeType == ChangeType.ADD: + self._model.append([name, name]) - if changeType == ChangeType.ADD: - self._model.append([name, name]) + if key == 'selectedProfile' and not self._ignoreSelectionChange: + self.update()