2121from PIL import Image
2222
2323from src .config_manager import ConfigManager
24- from src .controllers import MouseController
24+ from src .controllers import MouseController , Keybinder
2525from src .gui .balloon import Balloon
2626from src .gui .frames .safe_disposable_frame import SafeDisposableFrame
2727
@@ -73,6 +73,44 @@ def __init__(
7373 })
7474
7575 self .load_initial_config ()
76+ # Toggle label
77+ self .toggle_label = customtkinter .CTkLabel (master = self ,
78+ compound = 'right' ,
79+ text = "Face control" ,
80+ text_color = "black" ,
81+ justify = tkinter .RIGHT )
82+ self .toggle_label .cget ("font" ).configure (size = 14 )
83+ self .toggle_label .grid (row = 2 ,
84+ column = 0 ,
85+ padx = (10 , 0 ),
86+ pady = 5 ,
87+ sticky = "nw" )
88+
89+
90+ # Toggle switch
91+ self .toggle_switch = customtkinter .CTkSwitch (
92+ master = self ,
93+ text = "" ,
94+ width = 200 ,
95+ border_color = "transparent" ,
96+ switch_height = 18 ,
97+ switch_width = 32 ,
98+ command = lambda : self .cursor_toggle_callback (
99+ "toggle_switch" , {"switch_status" : self .toggle_switch .get ()}),
100+ variable = MouseController ().is_enabled ,
101+ onvalue = 1 ,
102+ offvalue = 0 ,
103+ )
104+ if ConfigManager ().config ["auto_play" ]:
105+ self .toggle_switch .select ()
106+
107+ self .toggle_switch .grid (row = 2 ,
108+ column = 1 ,
109+ padx = (100 , 0 ),
110+ pady = 5 ,
111+ sticky = "nw" )
112+
113+
76114
77115 def load_initial_config (self ):
78116 """Load default from config and set the UI
@@ -218,6 +256,18 @@ def slider_mouse_up_callback(self, div_name: str, event):
218256 def inner_refresh_profile (self ):
219257 self .load_initial_config ()
220258
259+ def cursor_toggle_callback (self , command , args : dict ):
260+ logger .info (f"cursor_toggle_callback { command } with { args } " )
261+
262+ if command == "toggle_switch" :
263+ self .set_mediapipe_mouse_enable (new_state = args ["switch_status" ])
264+
265+ def set_mediapipe_mouse_enable (self , new_state : bool ):
266+ if new_state :
267+ MouseController ().set_enabled (True )
268+ else :
269+ MouseController ().set_enabled (False )
270+
221271
222272class PageCursor (SafeDisposableFrame ):
223273
@@ -241,7 +291,7 @@ def __init__(self, master, **kwargs):
241291 columnspan = 1 )
242292
243293 # Description.
244- des_txt = "Mouse cursor moves with your head movement. Use this settings to adjust how fast your mouse moves in each direction ."
294+ des_txt = "Adjust how the mouse cursor responds to your head movements ."
245295 des_label = customtkinter .CTkLabel (master = self ,
246296 text = des_txt ,
247297 wraplength = 300 ,
@@ -251,7 +301,7 @@ def __init__(self, master, **kwargs):
251301
252302 # Inner frame
253303 self .inner_frame = FrameSelectGesture (self )
254- self .inner_frame .grid (row = 2 , column = 0 , padx = 5 , pady = 5 , sticky = "nw" )
304+ self .inner_frame .grid (row = 4 , column = 0 , padx = 5 , pady = 5 , sticky = "nw" )
255305
256306 def refresh_profile (self ):
257307 self .inner_frame .inner_refresh_profile ()
0 commit comments