Philipp Hörist pushed to branch master at gajim / gajim
Commits: 782602e5 by lovetox at 2020-09-07T17:46:25+02:00 Settings: Add default_text argument for bind_signal()
default_text is returned if the value of the setting is an empty string
- - - - - 43ea1969 by lovetox at 2020-09-07T17:47:35+02:00 Settings: Reset proxy setting if it is deleted
- - - - - 837ade88 by lovetox at 2020-09-07T18:09:18+02:00 PopoverSetting: Use default_text argument
- - - - - fa8bab81 by lovetox at 2020-09-07T18:10:11+02:00 Accounts: Use default_text argument for proxy setting
- - - - -
3 changed files:
- gajim/common/settings.py - gajim/gtk/accounts.py - gajim/gtk/settings.py
Changes:
===================================== gajim/common/settings.py ===================================== @@ -104,14 +104,15 @@ class _Settings: func_name, account=None, jid=None, - inverted=False): + inverted=False, + default_text=None):
callbacks = self._callbacks[(setting, account, jid)] func = getattr(widget, func_name) - callbacks.append((func, inverted)) + callbacks.append((func, inverted, default_text))
def _on_destroy(*args): - callbacks.remove((func, inverted)) + callbacks.remove((func, inverted, default_text))
widget.connect('destroy', _on_destroy)
@@ -121,10 +122,13 @@ class _Settings: callbacks = self._callbacks[(setting, account, jid)] for func in list(callbacks): if isinstance(func, tuple): - func, inverted = func - if inverted: + func, inverted, default_text = func + if isinstance(value, bool) and inverted: value = not value
+ if value == '' and default_text is not None: + value = default_text + try: func(value) except Exception: @@ -825,6 +829,13 @@ class _Settings: del self._settings['proxies'][proxy_name] self._commit_settings('proxies')
+ if self.get_app_setting('global_proxy') == proxy_name: + self.set_app_setting('global_proxy', None) + + for account in self._account_settings: + if self.get_account_setting(account, 'proxy') == proxy_name: + self.set_account_setting(account, 'proxy', None) +
Settings = _Settings()
===================================== gajim/gtk/accounts.py ===================================== @@ -693,6 +693,7 @@ class ConnectionPage(GenericSettingPage): Setting(SettingKind.POPOVER, _('Proxy'), SettingType.ACCOUNT_CONFIG, 'proxy', name='proxy', props={'entries': self._get_proxies(), + 'default-text': _('No Proxy'), 'button-icon-name': 'preferences-system-symbolic', 'button-callback': self._on_proxy_edit}),
@@ -720,10 +721,7 @@ class ConnectionPage(GenericSettingPage):
@staticmethod def _get_proxies(): - proxies = {'': _('No Proxy')} - for proxy in app.settings.get_proxies(): - proxies[proxy] = proxy - return proxies + return {proxy: proxy for proxy in app.settings.get_proxies()}
@staticmethod def _on_proxy_edit(*args):
===================================== gajim/gtk/settings.py ===================================== @@ -542,6 +542,8 @@ class PopoverSetting(GenericSetting): box.set_halign(Gtk.Align.END) box.set_hexpand(True)
+ self._default_text = kwargs.get('default-text') + self._current_label = Gtk.Label() self._current_label.set_valign(Gtk.Align.CENTER) image = Gtk.Image.new_from_icon_name('pan-down-symbolic', @@ -576,7 +578,8 @@ class PopoverSetting(GenericSetting):
self._add_action_button(kwargs)
- self._current_label.set_text(entries.get(self.setting_value, '')) + self._current_label.set_text(entries.get(self.setting_value, + self._default_text or ''))
self._bind_label()
@@ -588,12 +591,17 @@ class PopoverSetting(GenericSetting):
app.settings.bind_signal(self.value, self._current_label, - 'set_text') + 'set_text', + account=self.account, + default_text=self._default_text)
def _add_menu_entries(self, entries): if isinstance(entries, list): entries = {key: key for key in entries}
+ if self._default_text is not None: + self._menu_listbox.add(PopoverRow(self._default_text, '')) + for value, label in entries.items(): self._menu_listbox.add(PopoverRow(label, value))
@@ -601,7 +609,6 @@ class PopoverSetting(GenericSetting):
def _on_menu_row_activated(self, listbox, row): listbox.unselect_all() - self._current_label.set_text(row.label) self._popover.popdown()
self.set_value(row.value)
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/2e1252c4154f581e790bf4440ead0303...