Daniel Brötzmann pushed to branch master at gajim / gajim
Commits: cc11bce2 by wurstsalat at 2022-10-03T20:29:34+02:00 refactor: SourceView: Simplify getting style scheme
- - - - - 44b9de35 by wurstsalat at 2022-10-03T20:34:56+02:00 cfix: PEPConfig: Change view style on theme change, fix finalize
- - - - -
5 changed files:
- gajim/gtk/conversation/code_widget.py - gajim/gtk/pep_config.py - gajim/gtk/util.py - gajim/gtk/xml_console.py - pyrightconfig.json
Changes:
===================================== gajim/gtk/conversation/code_widget.py ===================================== @@ -24,9 +24,10 @@ from gajim.common import app from gajim.common import ged from gajim.common.i18n import _ - from gajim.common.styling import PreBlock
+from ..util import get_source_view_style_scheme + log = logging.getLogger('gajim.gui.conversation.code_widget')
@@ -102,27 +103,17 @@ def __init__(self) -> None: self.get_buffer().set_highlight_matching_brackets(False)
self._source_manager = GtkSource.LanguageManager.get_default() - self._style_scheme_manager = GtkSource.StyleSchemeManager.get_default()
app.ged.register_event_handler('style-changed', ged.GUI1, self._on_style_changed)
- style_scheme = self._get_style_scheme() + style_scheme = get_source_view_style_scheme() if style_scheme is not None: self.get_buffer().set_style_scheme(style_scheme)
- def _get_style_scheme(self) -> Optional[GtkSource.StyleScheme]: - if app.css_config.prefer_dark: - style_scheme = self._style_scheme_manager.get_scheme( - 'solarized-dark') - else: - style_scheme = self._style_scheme_manager.get_scheme( - 'solarized-light') - return style_scheme - def _on_style_changed(self, *args: Any) -> None: - style_scheme = self._get_style_scheme() + style_scheme = get_source_view_style_scheme() if style_scheme is not None: self.get_buffer().set_style_scheme(style_scheme)
===================================== gajim/gtk/pep_config.py ===================================== @@ -14,6 +14,7 @@
from __future__ import annotations
+from typing import Any from typing import Optional
import logging @@ -28,6 +29,7 @@ from nbxmpp.task import Task
from gajim.common import app +from gajim.common import ged from gajim.common.i18n import _ from gajim.common.helpers import to_user_string
@@ -35,13 +37,16 @@ from .dialogs import WarningDialog from .dataform import DataFormWidget from .builder import get_builder +from .util import EventHelper +from .util import get_source_view_style_scheme
log = logging.getLogger('gajim.gui.pep_config')
-class PEPConfig(Gtk.ApplicationWindow): +class PEPConfig(Gtk.ApplicationWindow, EventHelper): def __init__(self, account: str) -> None: Gtk.ApplicationWindow.__init__(self) + EventHelper.__init__(self) self.set_application(app.app) self.set_position(Gtk.WindowPosition.CENTER) self.set_show_menubar(False) @@ -64,27 +69,34 @@ def __init__(self, account: str) -> None: lang = source_manager.get_language('xml') self._ui.items_view.get_buffer().set_language(lang)
- self._style_scheme_manager = GtkSource.StyleSchemeManager.get_default() - style_scheme = self._get_style_scheme() + style_scheme = get_source_view_style_scheme() if style_scheme is not None: self._ui.items_view.get_buffer().set_style_scheme(style_scheme)
self._init_services() - self._ui.services_treeview.get_selection().connect( + + selection = self._ui.services_treeview.get_selection() + self._changed_handler = selection.connect( 'changed', self._on_services_selection_changed)
+ self.register_events([ + ('style-changed', ged.GUI1, self._on_style_changed) + ]) + self.show_all() self.connect('key-press-event', self._on_key_press) + self.connect('destroy', self._on_destroy) self._ui.connect_signals(self)
- def _get_style_scheme(self) -> Optional[GtkSource.StyleScheme]: - if app.css_config.prefer_dark: - style_scheme = self._style_scheme_manager.get_scheme( - 'solarized-dark') - else: - style_scheme = self._style_scheme_manager.get_scheme( - 'solarized-light') - return style_scheme + def _on_destroy(self, *args: Any) -> None: + selection = self._ui.services_treeview.get_selection() + selection.disconnect(self._changed_handler) + app.check_finalize(self) + + def _on_style_changed(self, *args: Any) -> None: + style_scheme = get_source_view_style_scheme() + if style_scheme is not None: + self._ui.items_view.get_buffer().set_style_scheme(style_scheme)
def _on_key_press(self, _widget: Gtk.Widget, event: Gdk.EventKey) -> None: if event.keyval == Gdk.KEY_Escape: @@ -190,7 +202,7 @@ def _on_pep_config_received(self, task: Task) -> None:
self._result_node = result.node
- form = dataforms.extend_form(node=result.form) + form = dataforms.extend_form(node=result.form) # pyright: ignore self._dataform_widget = DataFormWidget(form) self._dataform_widget.set_propagate_natural_height(True) self._dataform_widget.show_all()
===================================== gajim/gtk/util.py ===================================== @@ -36,6 +36,7 @@ from gi.repository import Gdk from gi.repository import Gio from gi.repository import Gtk +from gi.repository import GtkSource from gi.repository import GLib from gi.repository import Pango from gi.repository import GdkPixbuf @@ -224,6 +225,13 @@ def restore_main_window_position() -> None: app.settings.get('mainwin_y_position'))
+def get_source_view_style_scheme() -> Optional[GtkSource.StyleScheme]: + style_scheme_manager = GtkSource.StyleSchemeManager.get_default() + if app.css_config.prefer_dark: + return style_scheme_manager.get_scheme('solarized-dark') + return style_scheme_manager.get_scheme('solarized-light') + + def get_completion_liststore(entry: Gtk.Entry) -> Gtk.ListStore: ''' Create a completion model for entry widget completion list consists of
===================================== gajim/gtk/xml_console.py ===================================== @@ -36,6 +36,7 @@ from .util import scroll_to_end from .util import MaxWidthComboBoxText from .util import EventHelper +from .util import get_source_view_style_scheme from .dialogs import ErrorDialog from .settings import SettingsDialog from .const import Setting @@ -92,8 +93,7 @@ def __init__(self) -> None: self._ui.sourceview.get_buffer().set_language(lang) self._ui.input_entry.get_buffer().set_language(lang)
- self._style_scheme_manager = GtkSource.StyleSchemeManager.get_default() - style_scheme = self._get_style_scheme() + style_scheme = get_source_view_style_scheme() if style_scheme is not None: self._ui.sourceview.get_buffer().set_style_scheme(style_scheme) self._ui.input_entry.get_buffer().set_style_scheme(style_scheme) @@ -114,17 +114,8 @@ def _on_destroy(self, *args: Any) -> None: self._ui.popover.destroy() app.check_finalize(self)
- def _get_style_scheme(self) -> Optional[GtkSource.StyleScheme]: - if app.css_config.prefer_dark: - style_scheme = self._style_scheme_manager.get_scheme( - 'solarized-dark') - else: - style_scheme = self._style_scheme_manager.get_scheme( - 'solarized-light') - return style_scheme - def _on_style_changed(self, *args: Any) -> None: - style_scheme = self._get_style_scheme() + style_scheme = get_source_view_style_scheme() if style_scheme is not None: self._ui.sourceview.get_buffer().set_style_scheme(style_scheme) self._ui.input_entry.get_buffer().set_style_scheme(style_scheme)
===================================== pyrightconfig.json ===================================== @@ -105,6 +105,7 @@ "gajim/gtk/notification.py", "gajim/gtk/notification_manager.py", "gajim/gtk/password_dialog.py", + "gajim/gtk/pep_config.py", "gajim/gtk/plugins.py", "gajim/gtk/preview.py", "gajim/gtk/preview_audio.py",
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/ab066084bbee45b782b55b71c5efdc05...