From 06df57e0a3ba3e40cc1635b183409ac7668b61fd Mon Sep 17 00:00:00 2001 From: Nico Alt <nicoalt@posteo.org> Date: Thu, 26 Mar 2020 12:00:03 +0000 Subject: [PATCH] Refactor actions --- briar-gtk/briar_gtk/actions/actions.py | 20 +++++++++++++++++--- briar-gtk/briar_gtk/actions/application.py | 9 +++++---- briar-gtk/briar_gtk/actions/window.py | 14 ++++++++------ briar-gtk/briar_gtk/application.py | 4 ++-- briar-gtk/briar_gtk/window.py | 4 ++-- 5 files changed, 34 insertions(+), 17 deletions(-) diff --git a/briar-gtk/briar_gtk/actions/actions.py b/briar-gtk/briar_gtk/actions/actions.py index d2fc7c9..4b34067 100644 --- a/briar-gtk/briar_gtk/actions/actions.py +++ b/briar-gtk/briar_gtk/actions/actions.py @@ -5,10 +5,24 @@ from gi.repository import Gio +# pylint: disable=too-few-public-methods class Actions: - # pylint: disable=no-member - def _setup_action(self, key, parameter, callback): + def __init__(self, widget): + self.widget = widget + + def _create_action(self, key, parameter, callback): action = Gio.SimpleAction.new(key, parameter) action.connect("activate", callback) - self.add_action(action) + return action + + def _setup_action(self, key, parameter, callback): + action = self._create_action(key, parameter, callback) + self.actions.add_action(action) + + def _setup_global_action_group(self): + self.actions = self.widget + + def _setup_simple_action_group(self, name): + self.actions = Gio.SimpleActionGroup.new() + self.widget.insert_action_group(name, self.actions) diff --git a/briar-gtk/briar_gtk/actions/application.py b/briar-gtk/briar_gtk/actions/application.py index 93a85ee..50b9e96 100644 --- a/briar-gtk/briar_gtk/actions/application.py +++ b/briar-gtk/briar_gtk/actions/application.py @@ -12,17 +12,18 @@ from briar_gtk.actions.actions import Actions # pylint: disable=too-few-public-methods class ApplicationActions(Actions): - def __init__(self): + def __init__(self, widget): + super().__init__(widget) + self._setup_global_action_group() self._setup_actions() def _setup_actions(self): self._setup_quit_action() - # pylint: disable=no-member def _setup_quit_action(self): self._setup_action("quit", None, self._quit) - self.set_accels_for_action("app.quit", ["<Ctrl>q"]) + self.widget.set_accels_for_action("app.quit", ["<Ctrl>q"]) # pylint: disable=unused-argument def _quit(self, action, parameter): - self.quit() + self.widget.quit() diff --git a/briar-gtk/briar_gtk/actions/window.py b/briar-gtk/briar_gtk/actions/window.py index 66ab67d..1ffc617 100644 --- a/briar-gtk/briar_gtk/actions/window.py +++ b/briar-gtk/briar_gtk/actions/window.py @@ -16,7 +16,9 @@ from briar_gtk.define import APP # pylint: disable=too-few-public-methods class WindowActions(Actions): - def __init__(self): + def __init__(self, widget): + super().__init__(widget) + self._setup_global_action_group() self._setup_actions() def _setup_actions(self): @@ -41,17 +43,17 @@ class WindowActions(Actions): # pylint: disable=unused-argument def _back_to_sidebar(self, action, parameter): - if isinstance(self.current_container, MainWindowContainer): - self.current_container.show_sidebar() + if isinstance(self.widget.current_container, MainWindowContainer): + self.widget.current_container.show_sidebar() # pylint: disable=unused-argument def _open_about_page(self, action, parameter): - self.current_container.open_about_page() + self.widget.current_container.open_about_page() # pylint: disable=unused-argument def _open_add_contact(self, action, parameter): - self.show_add_contact_container() + self.widget.show_add_contact_container() # pylint: disable=unused-argument def _open_private_chat(self, action, contact_id): - self.current_container.open_private_chat(contact_id.get_int32()) + self.widget.current_container.open_private_chat(contact_id.get_int32()) diff --git a/briar-gtk/briar_gtk/application.py b/briar-gtk/briar_gtk/application.py index 39e80ec..1dc959d 100644 --- a/briar-gtk/briar_gtk/application.py +++ b/briar-gtk/briar_gtk/application.py @@ -20,12 +20,12 @@ from briar_gtk.define import APPLICATION_STYLING_PATH, BRIAR_HEADLESS_JAR from briar_gtk.window import Window -class Application(Gtk.Application, ApplicationActions): +class Application(Gtk.Application): def __init__(self): Application._set_application_name(APPLICATION_NAME) super().__init__(application_id=APPLICATION_ID) - ApplicationActions.__init__(self) + ApplicationActions(self) # pylint: disable=arguments-differ def do_startup(self): diff --git a/briar-gtk/briar_gtk/window.py b/briar-gtk/briar_gtk/window.py index f45998a..851664c 100644 --- a/briar-gtk/briar_gtk/window.py +++ b/briar-gtk/briar_gtk/window.py @@ -11,13 +11,13 @@ from briar_gtk.containers.startup import StartupContainer from briar_gtk.define import APP, APPLICATION_ID, APPLICATION_NAME -class Window(Gtk.ApplicationWindow, WindowActions): +class Window(Gtk.ApplicationWindow): DEFAULT_WINDOW_SIZE = (900, 600) def __init__(self): self._initialize_gtk_application_window() - WindowActions.__init__(self) + WindowActions(self) self._setup_content() def show_main_container(self): -- GitLab