From 873b415f476d506f8d221d130d7f2d784fb36a48 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Wed, 3 Jan 2024 20:27:36 -0600 Subject: [PATCH] Keyboard signals mixin cleanup; Gtk main call moved --- src/__main__.py | 6 +- src/app.py | 3 +- .../mixins/signals/keyboard_signals_mixin.py | 68 ++++++++++--------- src/core/window.py | 5 +- 4 files changed, 42 insertions(+), 40 deletions(-) diff --git a/src/__main__.py b/src/__main__.py index e1914c8..91fc2e6 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -10,9 +10,6 @@ import tracemalloc tracemalloc.start() # Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk # Application imports from __builtins__ import * @@ -47,7 +44,6 @@ if __name__ == "__main__": settings_manager.do_dirty_start_check() Application(args, unknownargs) - Gtk.main() except Exception as e: traceback.print_exc() - quit() + quit() \ No newline at end of file diff --git a/src/app.py b/src/app.py index 8bb6255..c39a82d 100644 --- a/src/app.py +++ b/src/app.py @@ -34,8 +34,7 @@ class Application(IPCServer): raise AppLaunchException(f"{app_name} IPC Server Exists: Have sent path(s) to it and closing...") self.setup_debug_hook() - Window(args, unknownargs) - + Window(args, unknownargs).main() def socket_realization_check(self): try: diff --git a/src/core/mixins/signals/keyboard_signals_mixin.py b/src/core/mixins/signals/keyboard_signals_mixin.py index 1a99277..4659adf 100644 --- a/src/core/mixins/signals/keyboard_signals_mixin.py +++ b/src/core/mixins/signals/keyboard_signals_mixin.py @@ -20,11 +20,19 @@ class KeyboardSignalsMixin: """ KeyboardSignalsMixin keyboard hooks controller. """ # TODO: Need to set methods that use this to somehow check the keybindings state instead. - def unset_keys_and_data(self, widget=None, eve=None): + def unset_keys_and_data(self, widget = None, eve = None): self.ctrl_down = False self.shift_down = False self.alt_down = False + def unmap_special_keys(self, keyname): + if "control" in keyname: + self.ctrl_down = False + if "shift" in keyname: + self.shift_down = False + if "alt" in keyname: + self.alt_down = False + def on_global_key_press_controller(self, eve, user_data): keyname = Gdk.keyval_name(user_data.keyval).lower() modifiers = Gdk.ModifierType(user_data.get_state() & ~Gdk.ModifierType.LOCK_MASK) @@ -46,15 +54,8 @@ class KeyboardSignalsMixin: if keyname.replace("_l", "").replace("_r", "") in ["control", "alt", "shift"]: should_return = self.was_midified_key and (self.ctrl_down or self.shift_down or self.alt_down) + self.unmap_special_keys(keyname) - if "control" in keyname: - self.ctrl_down = False - if "shift" in keyname: - self.shift_down = False - if "alt" in keyname: - self.alt_down = False - - # NOTE: In effect a filter after releasing a modifier and we have a modifier mapped if should_return: self.was_midified_key = False return @@ -65,30 +66,33 @@ class KeyboardSignalsMixin: logger.debug(f"on_global_key_release_controller > mapping > {mapping}") if mapping: - # See if in controller scope - try: - getattr(self, mapping)() - return True - except Exception: - # Must be plugins scope, event call, OR we forgot to add method to controller scope - if "||" in mapping: - sender, eve_type = mapping.split("||") - else: - sender = "" - eve_type = mapping - - self.handle_key_event_system(sender, eve_type) + self.handle_mapped_key_event(mapping) else: - logger.debug(f"on_global_key_release_controller > key > {keyname}") + self.handle_as_key_event_scope(mapping) - if self.ctrl_down: - if not keyname in ["1", "kp_1", "2", "kp_2", "3", "kp_3", "4", "kp_4"]: - self.handle_key_event_system(None, mapping) - else: - ... + def handle_mapped_key_event(self, mapping): + try: + self.handle_as_controller_scope() + except Exception: + self.handle_as_plugin_scope(mapping) + + def handle_as_controller_scope(self, mapping): + getattr(self, mapping)() + + def handle_as_plugin_scope(self, mapping): + if "||" in mapping: + sender, eve_type = mapping.split("||") + else: + sender = "" + eve_type = mapping + + self.handle_as_key_event_system(sender, eve_type) + + def handle_as_key_event_scope(self, mapping): + logger.debug(f"on_global_key_release_controller > key > {keyname}") + + if self.ctrl_down and not keyname in ["1", "kp_1", "2", "kp_2", "3", "kp_3", "4", "kp_4"]: + self.handle_key_event_system(None, mapping) def handle_key_event_system(self, sender, eve_type): - event_system.emit(eve_type) - - def keyboard_close_tab(self): - ... + event_system.emit(eve_type) \ No newline at end of file diff --git a/src/core/window.py b/src/core/window.py index 35d3d01..c0cdb18 100644 --- a/src/core/window.py +++ b/src/core/window.py @@ -14,12 +14,12 @@ from gi.repository import GLib from core.controller import Controller + class ControllerStartExceptiom(Exception): ... - class Window(Gtk.ApplicationWindow): """ docstring for Window. """ @@ -119,3 +119,6 @@ class Window(Gtk.ApplicationWindow): settings_manager.clear_pid() Gtk.main_quit() + + def main(self): + Gtk.main() \ No newline at end of file