2323from ok .gui .MainWindow import MainWindow
2424from ok .task .TaskExecutor import TaskExecutor
2525from ok .util .Analytics import Analytics
26- from ok .util .GlobalConfig import GlobalConfig , basic_options
26+ from ok .util .GlobalConfig import GlobalConfig , register_basic_options
2727from ok .util .clazz import init_class_by_name
2828from ok .util .config import Config , ConfigOption
2929from ok .util .handler import Handler , ExitEvent
@@ -109,10 +109,6 @@ def __init__(self, config, task_executor,
109109 else :
110110 self .to_translate = None
111111
112- if self .ok_config .get ('use_overlay' , False ):
113- logger .debug ('init overlay' )
114- from ok .gui .overlay .OverlayWindow import OverlayWindow
115- self .overlay_window = OverlayWindow (og .device_manager .hwnd_window )
116112 self .po_translation = None
117113 if not config .get ('window_size' ):
118114 logger .info (f'no config.window_size was set use default' )
@@ -129,6 +125,8 @@ def __init__(self, config, task_executor,
129125
130126 if my_app := self .config .get ('my_app' ):
131127 og .my_app = init_class_by_name (my_app [0 ], my_app [1 ], exit_event )
128+ if not hasattr (og .my_app , 'get_overlay_view' ):
129+ og .my_app .get_overlay_view = self .get_overlay_view
132130
133131 if self .config .get ('analytics' ):
134132 self .fire_base_analytics = Analytics (self .config , self .exit_event , og .handler , og .device_manager )
@@ -189,15 +187,24 @@ def show_path_ascii_error(self, path):
189187 self .show_message_window (title , content )
190188
191189 def update_overlay (self , visible , x , y , window_width , window_height , width , height , scaling ):
190+ overlay_view = self .get_overlay_view ()
191+ if overlay_view :
192+ overlay_view .update_overlay (visible , x , y , window_width , window_height , width , height , scaling )
192193
193- self .overlay_window .update_overlay (visible , x , y , window_width , window_height , width , height , scaling )
194+ def get_overlay_view (self ):
195+ """Return the overlay widget exposed to tasks, custom tabs, and my_app."""
196+ if self .overlay_window is None :
197+ from ok .gui .overlay .OverlayWindow import OverlayWindow
198+ self .overlay_window = OverlayWindow (og .device_manager .hwnd_window )
199+ communicate .window .connect (self .overlay_window .update_overlay )
200+ self .overlay_window .set_boxes_enabled (self .ok_config .get ('use_overlay' , False ))
201+ return self .overlay_window
194202
195203 def show_main_window (self ):
196204 self .do_show_main ()
197205
198206 def do_show_main (self ):
199- if self .overlay_window :
200- communicate .window .connect (self .overlay_window .update_overlay )
207+ self .get_overlay_view ()
201208
202209 self .main_window = MainWindow (self , self .config , self .ok_config , self .icon , self .title , self .version ,
203210 self .debug ,
@@ -263,6 +270,8 @@ def __init__(self, config, exit_event=None):
263270 og .app = self
264271 if my_app := self .config .get ('my_app' ):
265272 og .my_app = init_class_by_name (my_app [0 ], my_app [1 ], exit_event )
273+ if not hasattr (og .my_app , 'get_overlay_view' ):
274+ og .my_app .get_overlay_view = self .get_overlay_view
266275 logger .debug ('init headless app end' )
267276
268277 def tr (self , key ):
@@ -289,6 +298,9 @@ def quit(self):
289298 if self .exit_event :
290299 self .exit_event .set ()
291300
301+ def get_overlay_view (self ):
302+ return None
303+
292304
293305def get_my_id ():
294306 mac = uuid .getnode ()
@@ -365,7 +377,7 @@ def __init__(self, config):
365377 else :
366378 available_methods .append (method )
367379
368- self .global_config . get_config ( basic_options )
380+ register_basic_options ( self .global_config , enable_blur = callable ( config . get ( 'blur_area' )) )
369381 og .global_config = self .global_config
370382 og .set_use_dml ()
371383 try :
@@ -758,6 +770,11 @@ def set_use_dml(self):
758770 logger .info (f'use_dml result is { use_dml } ' )
759771 self .use_dml = use_dml
760772
773+ def get_overlay_view (self ):
774+ if self .app and hasattr (self .app , 'get_overlay_view' ):
775+ return self .app .get_overlay_view ()
776+ return None
777+
761778 def get_trial_expire_util_str (self ):
762779 # Convert the timestamp to a datetime object
763780 expire_date = datetime .fromtimestamp (self .trial_expire )
0 commit comments