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/2e1252c4154f581e790bf4440ead0303629cffdd...fa8bab81a302fe1adc9f91c440940d1538e93c80

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/2e1252c4154f581e790bf4440ead0303629cffdd...fa8bab81a302fe1adc9f91c440940d1538e93c80
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
Commits@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to