Pārlūkot izejas kodu

extended controls: refactor

Fabian Peter Hammerle 6 gadi atpakaļ
vecāks
revīzija
cdd7b55a5b
1 mainītis faili ar 19 papildinājumiem un 16 dzēšanām
  1. 19 16
      tooncher/__init__.py

+ 19 - 16
tooncher/__init__.py

@@ -198,17 +198,23 @@ def wait_for_engine_window(xdisplay, engine_process, timeout_seconds=20, search_
     return None
 
 
-def _enable_extended_controls(xdisplay, engine_window, keyboard_mapping):
-    for keysym in keyboard_mapping.keys():
-        x_grab_keysym(xdisplay, engine_window, keysym)
-    print("INFO Enabled Extended Controls")
+class ExtendedControls:
 
+    def __init__(self, xdisplay):
+        self.xdisplay = xdisplay
+        self.enabled = False
 
-def _disable_extended_controls(xdisplay, engine_window, keyboard_mapping):
-    for keysym in keyboard_mapping.keys():
-        x_ungrab_keysym(xdisplay, engine_window, keysym)
-    print("INFO Disabled Extended Controls")
+    def enable(self, engine_window, keyboard_mapping):
+        for keysym in keyboard_mapping.keys():
+            x_grab_keysym(self.xdisplay, engine_window, keysym)
+        self.enabled = True
+        print("INFO Enabled Extended Controls")
 
+    def disable(self, engine_window, keyboard_mapping):
+        for keysym in keyboard_mapping.keys():
+            x_ungrab_keysym(self.xdisplay, engine_window, keysym)
+        self.enabled = False
+        print("INFO Disabled Extended Controls")
 
 def run_extended_keyboard_controls(engine_process, toggle_keysym_name):
     if not Xlib:
@@ -220,6 +226,7 @@ def run_extended_keyboard_controls(engine_process, toggle_keysym_name):
             '\t$ pip3 install --user xlib',
         ]))
     xdisplay = Xlib.display.Display()
+    ec = ExtendedControls(xdisplay)
     engine_window = wait_for_engine_window(xdisplay, engine_process)
     if not engine_window:
         raise Exception('Could not find the game\'s window.')
@@ -237,7 +244,6 @@ def run_extended_keyboard_controls(engine_process, toggle_keysym_name):
               + " Ignoring mapping for toggle key '{}'".format(toggle_keysym_name))
     print("INFO Extended Controls are currently off."
           + " Press key '{}' to enable.".format(toggle_keysym_name))
-    controls_enabled = False
     while engine_process.poll() is None:
         # TODO don't block here, engine might have already been stopped
         xevent = xdisplay.next_event()
@@ -250,21 +256,18 @@ def run_extended_keyboard_controls(engine_process, toggle_keysym_name):
             )
             if keysym_in == toggle_keysym:
                 if isinstance(xevent, Xlib.protocol.event.KeyPress):
-                    if controls_enabled:
-                        _disable_extended_controls(
-                            xdisplay,
+                    if ec.enabled:
+                        ec.disable(
                             engine_window,
                             keyboard_mapping,
                         )
                     else:
-                        _enable_extended_controls(
-                            xdisplay,
+                        ec.enable(
                             engine_window,
                             keyboard_mapping,
                         )
-                    controls_enabled = not controls_enabled
             else:
-                if controls_enabled and keysym_in in keyboard_mapping:
+                if ec.enabled and keysym_in in keyboard_mapping:
                     keysym_out = keyboard_mapping[keysym_in]
                 else:
                     keysym_out = keysym_in