
    t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g dZd Zd Z G d	 d
e      Zd Zy# e$ rZ	dZ
 ee
      e	dZ	[	ww xY w)    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                 >    |D ci c]  }|| v s|| |    c}S c c}w N )dict_to_filterkey_listks      G/DATA/.local/lib/python3.12/site-packages/trame_server/utils/desktop.pyfilter_dictr)   ,   s+    *2J(Qa>6IA~a  (JJJs   	c                    t        | t              r| D cg c]  }t        |       c}S t        | t              rt        j
                  j                         S t        | t              rs| \  }t        t              r*t        j
                  j                  |t                    S t        t              r$t        j
                  j                  |fd      S y c c}w )Nc                              S r#   r$   )fn_menu_clickitems   r(   <lambda>zto_menu.<locals>.<lambda>:   s
    -:M    )

isinstancelistto_menustrwebviewmenuMenuSeparatortupleMenu
MenuAction)menu_structr,   r-   labels    `` r(   r2   r2   0   s    +t$9DEm,EE+s#||))+++u%!tdD!<<$$UGD-,HIIdC <<**52MNN Fs   Cc                   @    e Zd Z	 	 	 	 	 	 	 ddZd Zd Zd Zd Zd Zy)	BrowserProcessNc                     t        j                  |        || _        || _        || _        || _        |xs g | _        t        |t              | _	        d | _
        || _        || _        d| _        y )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guir5   kwargss	            r(   r?   zBrowserProcess.__init__@   sg     	
#)ZR
'< 	r/   c                 H    d| _         | j                  j                  d       y )NFclosing)rJ   rB   put)rK   s    r(   exitzBrowserProcess.exitX   s     I&r/   c                 @    | j                   j                  d|        y )Nzmenu:)rB   rU   )rK   names     r(   
menu_clickzBrowserProcess.menu_click]   s    eD6N+r/   c                   K   | j                   rt        j                  d       d {    | j                  j	                         s| j                  j                         }|j                  d      }|j                  dg       }|j                  di       }t        | j                  |      }|dk(  r| j                           ||i | | j                   ry y 7 w)N      ?actionargsrR   destroy)
rJ   asynciosleeprC   empty
get_nowaitgetgetattrrG   rV   )rK   msgr\   r]   rR   fns         r(   _monitor_action_requestsz'BrowserProcess._monitor_action_requests`   s     --$$$%%++-((335*wwvr*2.T..7Y&IIKD#F# $s   %CCB,CCc                     t        j                  |       |j                  | j                               }|j	                  t
               |j                  |       y r#   )r_   set_event_loopcreate_taskrg   add_done_callbackr   run_until_complete)rK   looptasks      r(   run_in_threadzBrowserProcess.run_in_threadm   sF    t$ = = ?@12%r/   c                 f    t        j                  d	 j                  d j                   dd j                   _        t         j
                  d      r4 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&                         y )
Nzhttp://localhost:z/index.html)rL   urleventsc                  &    j                         S r#   )ro   )
event_looprK   s   r(   r.   z$BrowserProcess.run.<locals>.<lambda>   s    1C1CJ1Or/   )targetc                  $     j                         S r#   )start)threads   r(   r.   z$BrowserProcess.run.<locals>.<lambda>   s    r/   )r5   funcrP   rQ   r$   )r4   create_windowr@   rA   rF   rG   hasattrrr   rT   rV   r_   new_event_loop	threadingThreadrw   r2   rD   rY   rH   rI   )rK   rt   rx   s   `@@r(   runzBrowserProcess.runs   s    #11 
++#DJJ<{;
 

 4$$h/$$,,		9, %%2%++-
!!)OPT__5'++				
r/   )NNNNFNN)	__name__
__module____qualname__r?   rV   rY   rg   ro   r   r$   r/   r(   r=   r=   ?   s7      0'
,$&
r/   r=   c           
          t               t               |j                  d       fd}t        j                   |             }|j	                  t
               t        d j                  j                   j                   j                  j                  d      d|}|j                          fd}| j                  _        y )N
on_messagec                     K   d} | rjt        j                  d       d {    j                         s9j                         }r |       |dk(  rd} j	                          d {    | riy y 7 R7 w)NTr[   rT   F)r_   r`   ra   rb   stop)keep_processingre   rB   _on_msgr   s     r(   process_msgz"start_browser.<locals>.process_msg   so     --$$$##% ++-CL)#&+O ++-'' $ (s(   A7A3AA7)A5*A71A75A7desktop_debug)rL   rM   rN   rO   rP   c                 0    j                  | ||d       y )N)r\   r]   rR   )rU   )r\   r]   rR   _window_action_queues      r(   window_callz"start_browser.<locals>.window_call   s      FDF!STr/   r$   )r   rc   r_   rj   rk   r   r=   statetrame__titlerM   optionsrw   
controllerpywebview_window_call)	r   rR   r   rn   client_processr   rB   r   r   s	   `     @@@r(   start_browserr      s    J 7jj&G
( {}-D-.# ll''[[)nn  1 N U /:F+r/   )r_   r}   multiprocessingr   r   asynchronousr   r4   ImportErrorerrre   rE   r)   r2   r=   r   r$   r/   r(   <module>r      sd      * ,$
>KI
W I
X!:E  $
JC
c
#$s   5 A
AA
