
    ?gV                        d dl Z d dlZd dlZd dlZd dlZ ej
                  dd       d dlmZmZm	Z	m
Z
mZ d dlmZ d dlZd dlmZ  ej                  ej                   ej"                         dZdZd	Zej*                  j-                  e      Z G d
 dej0                        Z G d dej4                        Z G d dej8                        Z G d dej<                        Z G d dej@                        Z! G d dejD                        Z# G d dejH                        Z%e&dk(  r3 ed        e%       Z'e'jQ                  ejR                          e*d        yy)    NGtkz3.0)Gior   GObjectGdkGLib)setproctitle)LookingGlassProxyorg.Cinnamon.Melangez/org/Cinnamon/Melangez
<node>
    <interface name="org.Cinnamon.Melange">
        <method name="show" />
        <method name="hide" />
        <method name="getVisible">
            <arg type="b" direction="out" name="visible"/>
        </method>
    </interface>
</node>
c                   $    e Zd Zd Zd Zd Zd Zy)
MenuButtonc                     t         j                  j                  | |       d | _        | j	                  d| j
                         y )Nclicked)r   Button__init__menuconnect
on_clicked)selftexts     D/usr/share/cinnamon/cinnamon-looking-glass/cinnamon-looking-glass.pyr   zMenuButton.__init__.   s/    

D$'	Y0    c                     || _         y N)r   )r   r   s     r   	set_popupzMenuButton.set_popup3   	    	r   c                 ~    | j                         \  }| j                  j                  d d fdd dd       y )Nc                     z   dfS NT )r   datahxys     r   <lambda>z'MenuButton.on_clicked.<locals>.<lambda>8   s    1Q3~ r      r   )get_screen_coordinatesr   popup)r   widgetwr!   r"   r#   s      @@@r   r   zMenuButton.on_clicked6   s5    002
1a		d$EtQPQRr   c                    | j                         }|j                         \  }}|j                         }|j                         }|j	                         }| j                         }||j                  |z
  dz  z   |j                  z   ||j                  |z
  z   |j                  |z
  dz  z
  |j                  z   |j                  |j                  fS )N   )
get_parent_windowget_root_origin	get_width
get_heightget_frame_extentsget_allocationwidthr"   heightr#   )r   parentr"   r#   r)   r!   extents
allocations           r   r&   z!MenuButton.get_screen_coordinates:   s    '')%%'1**,((*
W]]1_q((:<<7W^^A%&a!';;jllJ  !!# 	#r   N)__name__
__module____qualname__r   r   r   r&   r   r   r   r   r   -   s    1
S
#r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	CommandLinec                 d   t         j                  j                  |        || _        t        j
                  j                  d      | _        | j                  j                  d      | _	        d| _
        d| _        | j                  d| j                         | j                  d| j                         y )Nzorg.cinnamonlooking-glass-history key-press-eventzpopulate-popup)r   Entryr   exec_cbr   Settingsnewsettingsget_strvhistoryhistory_position	last_textr   on_key_presspopulate_popup)r   rB   s     r   r   zCommandLine.__init__G   s    		4 ((8}}--.EF "&(9(9:%t':':;r   c                     |j                  t        j                                t        j                  d      }|j	                  d| j
                         |j                  |       |j                          y)NzClear HistoryactivateF)appendr   SeparatorMenuItemMenuItemr   history_clearshow_all)r   viewr   clears       r   rK   zCommandLine.populate_popupQ   sQ    C))+,_-j$"4"45Er   c                 R   |j                   t        j                  k(  r| j                          y|j                   t        j                  k(  r| j                          y|j                   t        j                  k(  s|j                   t        j                  k(  r| j                          yy r   )	keyvalr   KEY_Uphistory_prevKEY_Downhistory_next
KEY_ReturnKEY_KP_Enterexecuter   r(   events      r   rJ   zCommandLine.on_key_pressY   ss    <<3::%<<3<<'<<3>>)U\\S=M=M-MLLN .Nr   c                 z    g | _         d| _        d| _        | j                  j	                  d| j                          y )Nr>   r?   r=   )rG   rH   rI   rE   set_strv)r   	menu_items     r   rQ   zCommandLine.history_cleard   s1     "6Er   c                 T   t        | j                        }| j                  dk(  s|dk(  ry | j                  dk(  r |dz
  | _        | j                         | _        n| xj                  dz  c_        | j                  | j                  | j                            | j                  dd       y )Nr   r>   r%   )lenrG   rH   get_textrI   set_textselect_regionr   nums     r   rX   zCommandLine.history_prevj   s    $,,  A%  B&$'!GD!!]]_DN!!Q&!dll4#8#89:2r"r   c                 V   | j                   dk(  ry t        | j                        }| j                   |dz
  k(  r#d| _         | j                  | j                         n=| xj                   dz  c_         | j                  | j                  | j                             | j                  dd       y )Nr>   r%   )rH   rd   rG   rf   rI   rg   rh   s     r   rZ   zCommandLine.history_nextv   s      B&$,,  CE)$&D!MM$..)!!Q&!MM$,,t'<'<=>2r"r   c                 b   d| _         | j                         }|dk7  rt        | j                        }|dk(  s| j                  |dz
     |k7  r| j                  j	                  |       | j                  d       | j                  j                  d| j                         | j                  |       y y )Nr>   r?   r   r%   r=   )	rH   re   rd   rG   rN   rf   rE   ra   rB   )r   commandri   s      r   r]   zCommandLine.execute   s     "--/b=dll#Cax4<<A.'9##G,MM"MM""#:DLLILL! r   N)
r7   r8   r9   r   rK   rJ   rQ   rX   rZ   r]   r   r   r   r;   r;   F   s&    <	F
#
#
"r   r;   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)NewLogDialogc           
         t         j                  j                  | d|dt         j                  t         j                  j
                  t         j                  t         j                  j                  f       | j                  dd       t        j                  d      }|j                  d       | j                         }|j                  |       t        j                  t        t              | _        | j                  j!                  ddg       t         j"                  j%                  | j                        | _        | j&                  j)                  d	| j*                         t        j,                         }| j&                  j/                  |d
       | j&                  j1                  |dd       t        j2                  ddd      }|j5                  t        j                  dt         j6                  j8                        dddd       |j5                  | j&                  dddd       |j5                  t        j                  dt         j6                  j8                        dddd       t        j:                         | _        |j5                  | j<                  dddd       d | _        |j                  |       | jA                          y )NzAdd a new file watcherr      d   r?   z`<span size='large'>Add File Watch:</span>

Please select a file to watch and a name for the tab
customz<Select file>changedTr   r%   r+   FzFile: )labelhalignzName: )!r   Dialogr   STOCK_CANCELResponseTypeCANCELSTOCK_OKOKset_default_sizeLabel
set_markupget_content_areaadd	ListStorestrstorerN   ComboBoxnew_with_modelcombor   on_combo_changedCellRendererText
pack_startadd_attributeTableattachAlignSTARTrA   entryfilenamerR   )r   r4   rt   boxrenderer_texttables         r   r   zNewLogDialog.__init__   s   

D":FA --s/?/?/F/F \\3+;+;+>+>@	A 	c3'		" R 	S ##%]]3,


8_56\\00<


9d&;&;<,,.

mT2

  :		!Q&SYYXciiooF1aQRSTZZAq!,SYYXciiooF1aQRSYY[
TZZAq!,r   c                 L   |j                         }||j                         }||   d d \  }| _        | j                  j	                  |       |dk(  rQ| j                         }|.|j                  | j                  j                  dd|g             y|j                  d       yy )Nr+   rr   r%   userr>   F)
get_active_iter	get_modelr   r   rf   select_fileset_active_iterr   insert
set_active)r   r   	tree_itermodelnamenew_files         r   r   zNewLogDialog.on_combo_changed   s    ))+	 OO%E"'	"22A"6D$-JJ%x++-'))$***;*;A?Q*RS  $$R( !r   c                     | j                   j                         dk7  xrV | j                  d uxrF t        j                  j                  t        j                  j                  | j                              S )Nr?   )r   re   r   ospathisfile
expanduserr   s    r   is_validzNewLogDialog.is_valid   sX    

##%+ BT)Brww11$--@A	Cr   c                 T    t         j                  j                  | j                        S r   )r   r   r   r   r   s    r   get_filezNewLogDialog.get_file   s    ww!!$--00r   c                 6    | j                   j                         S r   )r   re   r   s    r   re   zNewLogDialog.get_text   s    zz""$$r   c           	         t        j                  d| t         j                  j                  t         j                  t         j
                  j                  t         j                  t         j
                  j                  f      }t        j                         }|j                  d       |j                  d       |j                  |       t        j                         }|j                  d       |j                  d       |j                  |       |j                         }d }|t         j
                  j                  k(  r|j                         }|j!                          |S )NzPlease select a log filez
Text filesz
text/plainz	Any files*)r   FileChooserDialogFileChooserActionOPENrw   rx   ry   
STOCK_OPENr{   
FileFilterset_nameadd_mime_type
add_filteradd_patternrunget_filenamedestroy)r   dialogfilter_text
filter_anyresponseresults         r   r   zNewLogDialog.select_file   s   &&'A4'*'<'<'A'A(+(8(8#:J:J:Q:Q(+8H8H8K8K(MN
 nn&\*!!,/+&^^%
K(s#*%::<s''***((*Fr   N)	r7   r8   r9   r   r   r   r   re   r   r   r   r   rn   rn      s"     DC
1%r   rn   c                   *    e Zd Zd Zd Zd Zd Zd Zy)FileWatchHandlerc                     || _         y r   rS   )r   rS   s     r   my_initzFileWatchHandler.my_init   r   r   c                 8    | j                   j                          y r   rS   get_updatesr   r_   s     r   process_IN_CLOSE_WRITEz'FileWatchHandler.process_IN_CLOSE_WRITE       		r   c                 8    | j                   j                          y r   r   r   s     r   process_IN_CREATEz"FileWatchHandler.process_IN_CREATE   r   r   c                 8    | j                   j                          y r   r   r   s     r   process_IN_DELETEz"FileWatchHandler.process_IN_DELETE   r   r   c                 8    | j                   j                          y r   r   r   s     r   process_IN_MODIFYz"FileWatchHandler.process_IN_MODIFY   r   r   N)r7   r8   r9   r   r   r   r   r   r   r   r   r   r      s        r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)FileWatcherViewc                    t         j                  j                  |        || _        d| _        d| _        | j                  t         j                  j                         | j                  t         j                  j                  t         j                  j                         t        j                         | _        | j                  j                  d       | j                  | j                         | j                  j!                         | _        | j%                          | j'                          t)        |       }t+        j,                         }t+        j.                  ||      | _        |j3                  |t*        j4                  t*        j6                  z  t*        j8                  z  t*        j:                  z         | j0                  j=                          | j?                  d| j@                         | j?                  d| jB                         y )Nr   Fr   r   zsize-allocate)"r   ScrolledWindowr   r   rs   	update_idset_shadow_type
ShadowType	ETCHED_IN
set_policy
PolicyType	AUTOMATICTextViewtextviewset_editabler   
get_buffer
textbufferrR   r   r   	pyinotifyWatchManagerThreadedNotifiernotifier	add_watchIN_CLOSE_WRITE	IN_CREATE	IN_DELETE	IN_MODIFYstartr   
on_destroyon_size_changed)r   r   handlerwatch_managers       r   r   zFileWatcherView.__init__   sf   ##D) S^^55600#..2J2JK""5)--224"-!..0!22='J9+C+C+4+>+>,?+4+>+>,? ,5+>+>,? 	A 	Y0_d&:&:;r   c                 `    | j                   r"| j                   j                          d | _         y y r   )r   stopr   r(   s     r   r   zFileWatcherView.on_destroy  s%    ==MM  DM r   c                     | j                   dkD  rO| j                  j                         }| j                  j	                  |dddd       | xj                   dz  c_         y y )Nr   Fr%   )rs   r   get_end_iterr   scroll_to_iter)r   r(   blaend_iters       r   r   zFileWatcherView.on_size_changed  sM    <<!335HMM((1eQBLLAL r   c                 n    | j                   dk(  r&t        j                  d| j                        | _         y y )Nr   i  )r   r   timeout_addupdater   s    r   r   zFileWatcherView.get_updates  s-     >>Q!--c4;;?DN r   c                     d| _         | j                  j                  t        | j                  d      j                                d| _        y)Nr+   rr   F)rs   r   rf   openr   readr   r   s    r   r   zFileWatcherView.update#  s9      dmmS!9!>!>!@Ar   N)r7   r8   r9   r   r   r   r   r   r   r   r   r   r      s    <:!
@r   r   c                   d    e Zd Zdej                  j
                  ej                  dfiZd ZddZ	y)ClosableTabLabelclose-clickedr   c                    t         j                  j                  |        | j                  t         j                  j
                         | j                  d       t        j                  |      }| j                  |ddd       t        j                         }|j                  t         j                  j                         |j                  d       |j                  t         j                  j!                  t         j"                  t         j$                  j&                               |j)                  d| j*                         | j                  |ddd       | j-                          y )N   Tr   Fr   )r   Boxr   set_orientationOrientation
HORIZONTALset_spacingr}   r   r   
set_reliefReliefStyleNONEset_focus_on_clickr   Imagenew_from_stockSTOCK_CLOSEIconSizeMENUr   button_clickedrR   )r   
label_textrt   buttons       r   r   zClosableTabLabel.__init__-  s    S__778		*%tT1-#//../!!%(

399++COOS\\=N=NOPy$"5"56ua0r   Nc                 &    | j                  d       y )Nr   )emit)r   r  r    s      r   r  zClosableTabLabel.button_clicked>  s    		/"r   r   )
r7   r8   r9   r   SignalFlags	RUN_FIRST	TYPE_NONE__gsignals__r   r  r   r   r   r   r   )  s1    '--779J9JBOL"#r   r   c                       e Zd Zd Zd Zd ZddZd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZddZd Zd Zd Zd Zd Zd Zy)
MelangeAppc                     t         j                  j                  | ddt        j                  j
                  d       d | _        d| _        d| _        d| _	        d | _
        y )Nr
   Ti'  )application_idregister_sessionflagsinactivity_timeoutFr   )r   Applicationr   r   ApplicationFlagsHANDLES_COMMAND_LINEwindow
_minimizedreg_idinit_activationstartup_moder   s    r   r   zMelangeApp.__init__B  sZ      0F26'*';';'P'P4=	 	! 	? # r   c                     |j                  |t        j                  d   | j                  d d       | _        t
        j                  j                  | ||      S Nr   )register_objectinterface_node_info
interfaces
_method_cbr#  r   r  do_dbus_registerr   
connectionr   s      r   r,  zMelangeApp.do_dbus_registerO  sM     00**1-OO
 //j$GGr   c                     | j                   dkD  r"|j                  | j                          d| _         t        j                  j	                  | ||       y r'  )r#  unregister_objectr   r  do_dbus_unregisterr-  s      r   r1  zMelangeApp.do_dbus_unregisterZ  s<    ;;?((5DK**4TBr   Nc	                 d   |dk(  r"| j                          |j                  d        y |dk(  r"| j                          |j                  d        y |dk(  rO| j                  | j                  j	                         nd}	|j                  t        j                  d|	f             y t        d|z          y )Nshowhide
getVisibleFz(b)zUnhandled method: )_remote_showreturn_value_remote_hider!  get_visibler   Variantprint)
r   r.  senderr   	interfacemethod
parameters
invocation	user_datavisibles
             r   r+  zMelangeApp._method_cba  s    V##D)v##D)|#37;;3Jdkk--/PUG##DLL
$CD&/0r   c                     | j                   0| j                   dk(  r| j                          d | _         y 	 d | _         y | j                          y )Ninspect)r%  rD  rM   r   s    r   handle_commandline_actionz$MelangeApp.handle_commandline_actionn  sK    (  I- !%D  $Dr   c                     |j                         }| j                  s| j                          nt        |      dk(  r
|d   | _        t
        j                  j                  | |      S )Nr+   r%   )get_argumentsr$  rE  rd   r%  r   r  do_command_line)r   command_lineargss      r   rH  zMelangeApp.do_command_liney  sS    ))+##**,4yA~$(G!..t\BBr   c                    t         j                  j                  |        t               | _        | j                  j                  d| j                         | j                  ,| j                          | j                  | j                         y y )Nzstatus-changed)
r   r  
do_startupr	   lg_proxyr   update_status_from_proxyr!  construct_window
add_windowr   s    r   rL  zMelangeApp.do_startup  sd    ""4()+.0M0MN;;!!#OODKK( r   c                     | j                   j                  |        |r%| j                  rd| _        | j                          y y y NF)status_labelset_visibler$  rE  )r   proxyonlines      r   rN  z#MelangeApp.update_status_from_proxy  s>    %%6z2d**#(D **, +6r   c                 b    t         j                  j                  |        | j                          y r   )r   r  do_activater3  r   s    r   rX  zMelangeApp.do_activate  s    ##D)		r   c                 $    | j                          y r   )r3  r   s    r   r6  zMelangeApp._remote_show  s    		r   c                 X   | j                   j                         rB| j                  r| j                   j                          y | j                   j	                          y | j                   j                          | j                  j                          | j                  j                          y r   )
r!  r9  r"  presentr4  rR   rM  refresh_statusrI  
grab_focusr   s    r   r3  zMelangeApp.show  sk    ;;""$##%  "KK  "MM((*((*r   c                 8    | j                   j                          y r   )r!  r4  r   s    r   r8  zMelangeApp._remote_hide  s    r   c                     | j                   r5| j                   j                          | j                  j                          y y r   )rM  StartInspectorr!  r4  r   s    r   rD  zMelangeApp.inspect  s.    ==MM((*KK r   c                     t        j                  t         j                  j                         _        t        j
                         }|j                  d       |j                  d       |j                  d        j                  j                  |        j                  j                  d        j                  j                  dd        j                  j                  t         j                  j                          j                  j                  d j                           j                  j                  d	 j"                         d
 _         j                  j                  d j&                         d}d}t        j(                  ||d
      }|j+                  d       |j-                  d       |j/                  d       |j1                  d        j                  j3                  |       t        j4                          _         j6                  j9                  t         j:                  j<                          j6                  j?                           j6                  jA                  d        j6                  jC                  d       i  _"        i  _#         jI                  dd        jI                  dd        jI                  dd        jI                  dd        jI                  dd       |jK                   j6                  d|dd       d}tM        jN                  d      }|jQ                  d       |j                  d jR                         |jK                  |||dz   ddddd       |dz  }tM        jN                  d      }|jQ                  d        |j                  d fd!       |jK                  |||dz   ddddd       |dz  }tU         jV                  jX                         _-         jZ                  jQ                  d"       |jK                   jZ                  ||dz   ddt         j\                  j^                  t         j\                  j`                  z  ddd	       |dz  }t        jb                  d#$       _2         jd                  jg                  d%        jd                  jQ                  d&        jd                  ji                  d       |jK                   jd                  ||dz   ddddd       |dz  }t        jj                         }tm        jn                  d'(      }	|	jq                  d)      }
ts        |
      dkD  rt        jt                  |
d         \  }}|dk(  r|dk(  rt        jb                  |
d   $      }n*t        jb                  t        jv                  ||      $      }|jQ                  d*       |jy                  |d
d
d        j{                         }|jy                  |d
d
d       |jK                  |||dz   ddddd        jd                  j}                           j                  j                   jZ                         y )+N)typezLooking GlasszCinnamon Troubleshooting ToolTzsystem-searchi  i  delete_eventr@   Fzwindow-state-event      )n_rows	n_columnshomogeneousLogslogResultsresultsInspectrD  Windowswindows
Extensions
extensionsr   r%   zcolor-select-symboliczSelect an actor to inspectr   r+   zuser-trash-full-symboliczInvoke garbage collectionc                 8    j                   j                         S r   )rM  FullGc)sourcer   s    r   r$   z-MelangeApp.construct_window.<locals>.<lambda>  s    $--2F2F2H r   zEvaluate javascriptStatusrt   z8 <span foreground='red'>[ Cinnamon is OFFLINE! ]</span> z$The connection to cinnamon is brokenz org.cinnamon.desktop.keybindings)	schema_idzlooking-glass-keybindingzToggle shortcut)@r   Window
WindowTypeTOPLEVELr!  	HeaderBar	set_titleset_subtitleset_show_close_buttonset_titlebarset_icon_namer|   set_positionWindowPositionCENTERr   	on_deleterJ   r"  on_window_stater   set_margin_startset_margin_endset_margin_topset_margin_bottomr   Notebooknotebookset_tab_posPositionTypeBOTTOMr3  set_show_borderset_show_tabspagescustom_pagescreate_pager   	pageutilsImageButtonset_tooltip_texton_picker_clickedr;   rM  EvalrI  AttachOptionsEXPANDFILLr}   rS  r~   set_no_show_allHBoxr   rC   rF   rd   accelerator_parseaccelerator_get_labelr   create_action_buttonr4  	set_focus)r   	headerbarnum_rowsnum_columnsr   columnpicker_buttonfull_gcr   rE   arr	accel_keymaskrt   action_buttons   `              r   rO  zMelangeApp.construct_window  s   jjcnn&=&=>MMO	O,>?''-  +!!/2$$T3/  !3!3!:!:;NDNN;-t/@/@A0$2F2FG		[eTq!QQ"!!#"2"2"9"9:%%d+##D)
'I.I.I.|4T]]A{Aq9!--.EF&&'CDi)?)?@]FF1HaAq!D!''(BC  !<=	#HIWffQh1aA>!'(:(:;**+@AT&&aZ&&--0A0A0F0FF	 	!IIH5$$%_`**+QR))$/T&&q!Q1aH!hhj<<*LM :;s8a< # 5 5c!f =YA~$!)		A/		(A(A)T(RS""#45NN5%2113}eUA6S&&(Aq!Q: d//0r   c                 V    t        j                  |      }|j                  d|       |S )Nrv  rM   )r   rP   r   )r   r   callbackitems       r   create_menu_itemzMelangeApp.create_menu_item  s#    ||$'Z*r   c                     d } fd}t        j                         }|j                   j                  d j                               |j                  t        j
                                |j                   j                  d|             |j                   j                  d|             |j                   j                  d j                               |j                  t        j
                                |j                   j                  d j                               |j                          t        j                  d	      }|j                  |       |S )
Nc                 ,    t        j                  d      S )Nz+nohup cinnamon --replace > /dev/null 2>&1 &)r   system)junks    r   r$   z1MelangeApp.create_action_button.<locals>.<lambda>  s    BII.[$\ r   c                 :    j                   j                  d      S )Nzglobal.segfault())rM  r  )r  r   s    r   r$   z1MelangeApp.create_action_button.<locals>.<lambda>  s    $--"4"45H"I r   zAdd File WatcherzRestart CinnamonzCrash CinnamonzReset Cinnamon SettingsQuitu   Actions ▾rv  )r   MenurN   r  on_add_file_watcherrO   on_reset_clickedr  rR   r   r   )r   restart_func
crash_funcr   r  s   `    r   r  zMelangeApp.create_action_button  s    \I
xxzD))*<d>V>VWXC))+,D))*<lKLD))*:JGHD))*CTEZEZ[\C))+,D))&$..AB&67r   c                 H   t        | j                        }|j                         }|t        j                  j
                  k(  r|j                         rt        |j                               }t        |j                               }|j                          |j                  d| j                  |       || j                  |<   | j                  j!                  ||       | j                  j#                  | j                  j%                         dz
         |j'                          y )Nr   r%   )rn   r!  r   r   rx   r{   r   r   re   r   r   r3  r   on_close_tabr  r  append_pageset_current_pageget_n_pagesr   )r   rb   r   r   rt   contents         r   r  zMelangeApp.on_add_file_watcher'  s    dkk*::<s''***v/@$V__%67E%foo&78GLLNMM/4+<+<gF'.De$MM%%gu5MM**4==+D+D+Fq+HIr   c                     | j                   j                  | j                   j                  |             |j                          | j                  |= y r   )r  remove_pagepage_numr   r  )r   rt   r  s      r   r  zMelangeApp.on_close_tab6  s;    !!$--"8"8"ABe$r   c                 r   t        j                  | j                  dt         j                  j                  t         j
                  j                  d      }|j                  d       |j                         }|j                          |t         j                  j                  k(  rt        j                  d       y y )Nr   z'Reset all cinnamon settings to default?z/Warning: Trying to reset all cinnamon settings!z*gsettings reset-recursively org.cinnamon &)r   MessageDialogr!  MessageTypeWARNINGButtonsTypeYES_NOr|  r   r   rx   YESr   r  )r   rb   r   r   s       r   r  zMelangeApp.on_reset_clicked;  s    ""4;;#&??#:#:COO<R<R#LN 	JK::<s''+++IIBC ,r   c                 t    |j                   t        j                  k(  r| j                  j	                          y y r   )rV   r   
KEY_Escaper!  r4  r^   s      r   rJ   zMelangeApp.on_key_pressF  s'    <<3>>)KK *r   c                     | j                   j                         }|j                         D ]  \  }}| j                  ||        | j	                          yrR  )r  copyitemsr  quit)r   r(   r_   	tmp_pagesrt   r  s         r   r  zMelangeApp.on_deleteJ  sL    %%**,	'oo/ 	.NE7eW-	.		r   c                 p    |j                   t        j                  j                  z  rd| _        y d| _        y )NTF)new_window_stater   WindowState	ICONIFIEDr"  r^   s      r   r  zMelangeApp.on_window_stateQ  s(    !!COO$=$=="DO#DOr   c                 $    | j                          y r   )rD  r   s     r   r  zMelangeApp.on_picker_clickedW  s    r   c                     t        j                  |      }| j                  j                  t        j                  |      |       y )Nrv  )r   r}   r  r  )r   r   descriptionrt   s       r   create_dummy_pagezMelangeApp.create_dummy_pageZ  s-    		%!!#))+">Fr   c                     t        d|z        }| j                  |_        | |_        t        j                  |      }|j                  |       }|| j                  |<   | j                  j                  ||       y )Nzpage_%srv  )	
__import__rM  
melangeAppr   r}   
ModulePager  r  r  )r   r   module_namemodulert   pages         r   r  zMelangeApp.create_page^  sd    I34-- 		%  &"&

;!!$.r   c                     | j                   j                  | j                  |         }| j                   j                  |       y r   )r  r  r  r  )r   r  r  s      r   activate_pagezMelangeApp.activate_pageg  s1    }}%%djj&=>&&t,r   c                     | j                   j                          d | _        t        j                  j                  |        y r   )r!  r   rM  r   r  do_shutdownr   s    r   r  zMelangeApp.do_shutdownk  s+    ##D)r   r   )NN)r7   r8   r9   r   r,  r1  r+  rE  rH  rL  rN  rX  r6  r3  r8  rD  rO  r  r  r  r  r  rJ   r  r  r  r  r  r  r  r   r   r   r  r  A  s    !	HC1		C)-
	+
_1B
$%
	D$G/-*r   r  __main__zcinnamon-looking-glass)+r   signalsysr   girequire_versiongi.repositoryr   r   r   r   r   r   r  lookingglass_proxyr	   SIGINTSIG_DFLMELANGE_DBUS_NAMEMELANGE_DBUS_PATHmelange_xmlDBusNodeInfonew_for_xmlr)  r   r   rA   r;   rv   rn   ProcessEventr   r   r   r   r   r  r  r7   appr   argvexitr   r   r   <module>r     s/   
  
  	   5%   6 6 %  0 fmmV^^ ,* + 
 &&22;? # #2F"#)) F"RR3:: Rh y--   4c(( 4l#sww #0m* m*^	 z)*
,CGGCHHG	 r   