Преглед на файлове

extended controls SelectGagAction: derive from EngineAction to target engine by index;
change mapping e,f: target index 0 instead of primary

Fabian Peter Hammerle преди 7 години
родител
ревизия
7fac902160
променени са 3 файла, в които са добавени 17 реда и са изтрити 11 реда
  1. 2 2
      README.md
  2. 9 6
      tooncher/actions.py
  3. 6 3
      tooncher/controls.py

+ 2 - 2
README.md

@@ -89,5 +89,5 @@ $ tooncher --cpu-limit 70 cfo
 | /     | jump                            | 1             |
 | n     | throw pie                       | 1             |
 | space | jump                            | all           |
-| e     | select elephant trunk in battle | primary       |
-| f     | select fog in battle            | primary       |
+| e     | select elephant trunk in battle | 0             |
+| f     | select fog in battle            | 0             |

+ 9 - 6
tooncher/actions.py

@@ -32,18 +32,21 @@ class EngineAction:
             self.execute_on_window(extended_controls, xkeyevent, target_window)
 
 
-class SelectGagAction:
+class SelectGagAction(EngineAction):
 
-    def __init__(self, factor_x, factor_y):
+    def __init__(self, target_engine_index, factor_x, factor_y):
+        super().__init__(
+            target_engine_index=target_engine_index,
+        )
         self._button = Xlib.X.Button1
         self._factor_x = factor_x
         self._factor_y = factor_y
 
-    def execute(self, extended_controls, xkeyevent):
-        engine_geometry = extended_controls.primary_engine_window.get_geometry()
+    def execute_on_window(self, extended_controls, xkeyevent, engine_window):
+        engine_geometry = engine_window.get_geometry()
         smaller_dimension = min(engine_geometry.width, engine_geometry.height)
         attr = dict(
-            window=extended_controls.primary_engine_window,
+            window=engine_window,
             detail=self._button,
             state=xkeyevent.state,
             event_x=int(engine_geometry.width / 2
@@ -63,7 +66,7 @@ class SelectGagAction:
             e = Xlib.protocol.event.ButtonPress(**attr)
         else:
             e = Xlib.protocol.event.ButtonRelease(**attr)
-        extended_controls.primary_engine_window.send_event(e)
+        engine_window.send_event(e)
 
 
 class RewriteKeyEventAction(EngineAction):

+ 6 - 3
tooncher/controls.py

@@ -30,8 +30,8 @@ if Xlib:
         XK.XK_slash:     RewriteKeyEventAction(keysym=XK.XK_Control_L,  target_engine_index=1),
         XK.XK_n:         RewriteKeyEventAction(keysym=XK.XK_Delete,     target_engine_index=1),
         XK.XK_space:     RewriteKeyEventAction(keysym=XK.XK_Control_L,  target_engine_index=TargetEngine.All),
-        XK.XK_e: SelectGagAction(factor_x=0.038, factor_y=-0.047),  # elephant trunk
-        XK.XK_f: SelectGagAction(factor_x=0.119, factor_y=-0.047),  # foghorn
+        XK.XK_e: SelectGagAction(target_engine_index=0, factor_x=0.038, factor_y=-0.047),  # elephant trunk
+        XK.XK_f: SelectGagAction(target_engine_index=0, factor_x=0.119, factor_y=-0.047),  # foghorn
     }
 
 
@@ -223,7 +223,10 @@ class ExtendedControls:
         if not self._engine_windows_by_target_index:
             win_by_index = {}
             for target_index, win in enumerate(self.find_engine_windows()):
-                print('INFO engine window {} has no target index, assuming {}'.format(win.id, target_index))
+                print('INFO Engine window {} has no target index, assuming {}'.format(
+                    win.id,
+                    target_index,
+                ))
                 if not target_index in win_by_index:
                     win_by_index[target_index] = []
                 win_by_index[target_index].append(win)