
    +jQ                         d dl Z d dlZd dlmZmZ ddlmZ 	 d dlZn# e$ rZ	dZ
 ee
          e	dZ	[	ww xY wg dZd Zd Z G d	 d
e          Zd ZdS )    N)ProcessQueue   )handle_task_resultz>server.start(exec_mode='desktop', ...) requires pywebview>=3.4)htmljs_apiwidthheightxyscreen	resizable
fullscreenmin_sizehidden	frameless	easy_dragfocus	minimized	maximizedon_topconfirm_closebackground_colortransparenttext_selectzoomable	draggablevibrancyserverserver_argslocalizationc                        fd|D             S )Nc                 *    i | ]}|v ||         S  r$   ).0kdict_to_filters     T/DATA/AppData/hermes/venv/lib/python3.11/site-packages/trame_server/utils/desktop.py
<dictcomp>zfilter_dict.<locals>.<dictcomp>-   s*    JJJQa>6I6IA~a 6I6I6I    r$   )r'   key_lists   ` r(   filter_dictr,   ,   s    JJJJ(JJJJr*   c                    t          | t                    rfd| D             S t          | t                    rt          j                                        S t          | t                    r| \  }t          t                    r.t          j                            |t                              S t          t                    r$t          j        	                    |fd          S d S )Nc                 0    g | ]}t          |          S r$   )to_menu)r%   itemfn_menu_clicks     r(   
<listcomp>zto_menu.<locals>.<listcomp>2   s#    EEEm,,EEEr*   c                                  S Nr$   )r1   r0   s   r(   <lambda>zto_menu.<locals>.<lambda>:   s    --:M:M r*   )

isinstanceliststrwebviewmenuMenuSeparatortupleMenur/   
MenuAction)menu_structr1   labelr0   s    ` @r(   r/   r/   0   s    +t$$ FEEEEEEEE+s## ,|))++++u%% O!tdD!! 	J<$$UGD-,H,HIIIdC   	O<**52M2M2M2M2MNNN4r*   c                   B    e Zd Z	 	 	 	 	 	 	 d	dZd Zd Zd Zd Zd ZdS )
BrowserProcessNFc                     t          j        |            || _        || _        || _        || _        |pg | _        t          |t                    | _	        d | _
        || _        || _        d| _        d S )NT)r   __init___title_port
_msg_queue_action_queue_menur,   WINDOW_ARGS_window_args_main_window_debug_gui_monitoring)	selftitleport	msg_queueaction_queuedebugguir:   kwargss	            r(   rD   zBrowserProcess.__init__@   ss     	
#)ZR
'<< 	r*   c                 H    d| _         | j                            d           d S )NFclosing)rO   rG   put)rP   s    r(   exitzBrowserProcess.exitX   s&     I&&&&&r*   c                 @    | j                             d|            d S )Nzmenu:)rG   rZ   )rP   names     r(   
menu_clickzBrowserProcess.menu_click]   s$    NDNN+++++r*   c                   K   | j         rt          j        d           d {V  | j                                        s| j                                        }|                    d          }|                    dg           }|                    di           }t          | j        |          }|dk    r| 	                                  ||i | | j         d S d S )N      ?actionargsrW   destroy)
rO   asynciosleeprH   empty
get_nowaitgetgetattrrL   r[   )rP   msgra   rb   rW   fns         r(   _monitor_action_requestsz'BrowserProcess._monitor_action_requests`   s       
	$-$$$$$$$$$%++-- $(3355**wwvr**2..T.77Y&&IIKKKD#F###  
	$ 
	$ 
	$ 
	$ 
	$r*   c                     t          j        |           |                    |                                           }|                    t
                     |                    |           d S r4   )rd   set_event_loopcreate_taskrl   add_done_callbackr   run_until_complete)rP   looptasks      r(   run_in_threadzBrowserProcess.run_in_threadm   sa    t$$$ = = ? ?@@1222%%%%%r*   c                     t          j        d	 j        d j         dd j         _        t           j        d          r  j        j        xj         j	        z  c_        n j        xj         j	        z  c_        t          j                    t          j         fd          t          j        t           j         j                  fd j         j                   d S )
Nzhttp://localhost:z/index.html)rQ   urleventsc                  .                                    S r4   )rt   )
event_looprP   s   r(   r5   z$BrowserProcess.run.<locals>.<lambda>   s    1C1CJ1O1O r*   )targetc                  ,                                      S r4   )start)threads   r(   r5   z$BrowserProcess.run.<locals>.<lambda>   s     r*   )r:   funcrU   rV   r$   )r9   create_windowrE   rF   rK   rL   hasattrrw   rY   r[   rd   new_event_loop	threadingThreadr|   r/   rI   r^   rM   rN   )rP   ry   r}   s   `@@r(   runzBrowserProcess.runs   s   #1 
+;DJ;;;
 
 
 

 4$h// 	3$,,	9,,, %%2%%+--
!)O)O)O)O)OPPPT_55''''+			
 	
 	
 	
 	
 	
r*   )NNNNFNN)	__name__
__module____qualname__rD   r[   r^   rl   rt   r   r$   r*   r(   rB   rB   ?   s                0' ' '
, , ,$ $ $& & &
 
 
 
 
r*   rB   c           
          t                      t                      |                    d           fd}t          j         |                      }|                    t
                     t          d j        j         j	         j
                            d          d|}|                                 fd}| j        _        d S )N
on_messagec                     K   d} | rut          j        d           d {V                                  sC                                }r |           |dk    rd}                                  d {V  | sd S d S )NTr`   rY   F)rd   re   rf   rg   stop)keep_processingrj   rG   _on_msgr   s     r(   process_msgz"start_browser.<locals>.process_msg   s       	(-$$$$$$$$$##%% ( ++-- !GCLLL)##&+O ++--'''''''  	( 	( 	( 	( 	(r*   desktop_debug)rQ   rR   rS   rT   rU   c                 :                         | ||d           d S )N)ra   rb   rW   )rZ   )ra   rb   rW   _window_action_queues      r(   window_callz"start_browser.<locals>.window_call   s'      FDF!S!STTTTTr*   r$   )r   rh   rd   ro   rp   r   rB   statetrame__titlerR   optionsr|   
controllerpywebview_window_call)	r   rW   r   rs   client_processr   rG   r   r   s	   `     @@@r(   start_browserr      s   J 77jj&&G
( 
( 
( 
( 
( 
( 
( {{}}--D-...# l'[)n  11   N U U U U U /:F+++r*   )rd   r   multiprocessingr   r   asynchronousr   r9   ImportErrorerrrj   rJ   r,   r/   rB   r   r$   r*   r(   <module>r      s        * * * * * * * * , , , , , ,$NNNN $ $ $
JC
+c

#$  >K K K  I
 I
 I
 I
 I
W I
 I
 I
X!: !: !: !: !:s    505