
    ?gG                        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 d dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZ d dlZi Zg d	Z G d
 dej                        Zdad Z G d dej2                        Z G d de
      Z G d de      Z G d d      Z G d d      Zd$dZ  G d de
      Z! G d de
      Z" G d de
      Z# G d de
      Z$ G d  d!e
      Z%d" Z&eD ]  Z' e&e'       e(       d#e'z   <    y)%    NGtkz3.0)Gior   GObjectGLib)SettingsWidgetSettingsLabel)PXGSettingsBackend)DateChooserButtonTimeChooserButton)ButtonKeybinding)SoundFileChooserDateChooserTimeChooser
Keybindingc                   b     e Zd Zdej                  j
                  ddfiZ fdZd ZddZ	 xZ
S )BinFileMonitorchangedN c                    t         t        |           d| _        t	        j
                  d      }|d}|j                  d      | _        g | _        | j                  D ]  }t        j                  j                  |      }|j                  t        j                  j                  d       }|j                  d| j                          | j                  j#                  |        y )Nr   PATHz/bin:/usr/bin:.:r   )superr   __init__
changed_idr   getenvsplitpathsmonitorsr   Filenew_for_pathmonitor_directoryFileMonitorFlags
SEND_MOVEDconnectqueue_emit_changedappend)selfenvpathfilemon	__class__s        </usr/share/cinnamon/cinnamon-settings/bin/SettingsWidgets.pyr   zBinFileMonitor.__init__   s    nd,.kk&!;#CYYs^
JJ 	&D88((.D(()=)=)H)H$OCKK	4#:#:;MM  %		&    c                 4    | j                  d       d| _        y)Nr   r   F)emitr   r'   s    r-   _emit_changedzBinFileMonitor._emit_changed,   s    		)r.   c                     | j                   dkD  r&t        j                  | j                          d| _         t        j                  | j                        | _         y Nr   )r   r   source_removeidle_addr2   )r'   r*   other
event_typedatas        r-   r%   z!BinFileMonitor.queue_emit_changed1   s=    ??Qt/DO--(:(:;r.   N)__name__
__module____qualname__r   SignalFlagsRUN_LAST__gsignals__r   r2   r%   __classcell__r,   s   @r-   r   r      s1    G''00$;L&(
<r.   r   c                  .    t         
t               a t         S r:   )file_monitorr   r   r.   r-   get_file_monitorrE   :   s     %'r.   c                   N     e Zd Zd	 fd	Zd Zd Zd Zd Zd
dZd
dZ	d Z
 xZS )DependencyCheckInstallButtonc                 
   t         t        |   t        j                  j
                         || _        || _        || _        || _	        t        j                         | _        | j                  | j                  ddd       t        j                         | _        | j                  j                  | j                  d       | j                  j!                  d       | j                  j#                  | j                         t        j$                  |d      | _        t        j(                         }|j+                  | j&                         |j-                  t        j.                  j0                         |j3                          | j                  j                  |d       |r| j                  j                  |d	       n.| j                  j                  t        j4                         d	       | j                  j7                  d       d| _        t;               | _        | j<                  j?                  d
| j@                        | _!        | j?                  d| jD                         tG        jH                  | jJ                         y )NorientationFr   progressT   )labelmargininstallfinalr   destroy)&r   rG   r   r   Orientation
HORIZONTALbinfilessatisfied_cbchecking_textinstall_button_textStackstack
pack_startProgressBarprogress_bar	add_namedset_show_textset_textLabelinstall_warningFrameaddset_shadow_type
ShadowTypeOUTshow_all	Alignmentset_visible_child_nameprogress_source_idrE   file_listenerr$   on_file_listener_pingfile_listener_id
on_destroyr   r6   check)r'   rV   rW   rT   final_widgetrU   framer,   s          r-   r   z%DependencyCheckInstallButton.__init__C   s   *D:sGaGa:b (*#6 YY[


E5!4OO-

T..
;''-""4#5#56"yy/B1M				$&&'cnn001

UI.JJ  w7JJ  ':

))*5"#-/ $ 2 2 : :9dF`F` aY0djj!r.   c                     | j                          d}| j                  D ]  }t        j                  |      rd} n t        j                  | j
                  |       y)NTF)start_pulserT   r   find_program_in_pathr6   on_check_complete)r'   successprograms      r-   ro   z"DependencyCheckInstallButton.checkk   sU    }} 	G,,W5	
 	d,,g6r.   c                 8    | j                   j                          y)NT)r\   pulser1   s    r-   pulse_progressz+DependencyCheckInstallButton.pulse_progressy   s    !r.   c                 n    | j                          t        j                  d| j                        | _        y )N   )cancel_pulser   timeout_addrz   rj   r1   s    r-   rs   z(DependencyCheckInstallButton.start_pulse}   s)    "&"2"238K8K"Lr.   c                 p    | j                   dkD  r't        j                  | j                          d| _         y y r4   )rj   r   r5   r1   s    r-   r}   z)DependencyCheckInstallButton.cancel_pulse   s1    ""Q&t667&'D# 'r.   c                     | j                          |r9| j                  j                  d       | j                  r| j                          y y | j                  j                  d       y )NrP   rO   )r}   rY   ri   rU   )r'   resultr9   s      r-   ru   z.DependencyCheckInstallButton.on_check_complete   sQ    JJ--g6  !!# ! JJ--i8r.   c                     | j                   j                  d       | j                  j                  | j                         | j                          y )NrK   )rY   ri   r\   r_   rV   ro   )r'   monitorr9   s      r-   rl   z2DependencyCheckInstallButton.on_file_listener_ping   s7    

))*5""4#5#56

r.   c                 \    | j                   j                  | j                         d| _        y r4   )rk   
disconnectrm   r'   widgets     r-   rn   z'DependencyCheckInstallButton.on_destroy   s$    %%d&;&;< !r.   NNr:   )r;   r<   r=   r   ro   rz   rs   r}   ru   rl   rn   rA   rB   s   @r-   rG   rG   B   s-    &"PM(
9
"r.   rG   c                         e Zd Zd fd	Z xZS )GSettingsDependencySwitchc                    t         t        |   |       || _        || _        t        j                         | _        t        j                  |      | _	        | j                  | j                  ddd       | j                  | j                  ddd       t        j                         | _        | j                  j                  t
        j                  j                          | j                  j#                  t
        j                  j$                         d}|D ]  }|dk7  r|dz  }||z  } t'        t)        d      t)        d      |z  || j                        | _        | j                  j-                  | j*                         |rW| j/                  |      | _        | j0                  j3                  || j                  dt4        j6                  j8                         y y )	Ndep_keyFr    z, zChecking dependencieszPlease install: %sactive)r   r   r   rT   packagesr   rh   content_widgetr`   rM   rZ   pack_endSwitchswitch
set_halignAlignEND
set_valignCENTERrG   _
dep_buttonrc   get_settingssettingsbindr   SettingsBindFlagsDEFAULT)
r'   rM   schemakeyr   rT   r   
pkg_stringpkgr,   s
            r-   r   z"GSettingsDependencySwitch.__init__   so   '77H  !mmoYYu%


E5!4d))5%;jjlsyy}}-syy//0
 	CRd"
#J	
 7q9P7Q789M7NQ[7[7?7;{{D 	0 --f5DMMMsDKK3;P;P;X;XY r.   )NNNNNr;   r<   r=   r   rA   rB   s   @r-   r   r      s    Z Zr.   r   c                        e Zd ZddZd Zd Zy)SidePageNc
                     || _         || _        || _        g | _        || _        || _        || _        |	| _        || _        || _	        d | _
        d | _        d | _        | j                  d| j                  _        y y )NF)nameiconcontent_boxwidgetsis_c_modis_standalone	exec_namemodulekeywordssize	topWindowbuilderrY   loaded)
r'   r   r   r   r   r   r   r   r   r   s
             r-   r   zSidePage.__init__   sz    		& *" 	
;;"!&DKK #r.   c                 :    | j                   j                  |       y r:   )r   r&   r   s     r-   
add_widgetzSidePage.add_widget   s    F#r.   c                 L     j                   j                         }|D ]  } j                   j                  |         j                  + j                  j	                          d j                  _         j                  r.t        j                   j                  j                                y  j                  D ]K  }t        |d      r j                   j                  |ddd       . j                   j                  |ddd       M  j                  s, j                   j                          	  j!                          y  j                   j#                           j                   D ]  }|j#                          |j%                         dk7  r	 |j                         }|sV j                   j&                  j)                   j                        }|<|j                  |ddd       |j#                          n|D ]  }|j#                            fd |        y #  Y y xY w)NTexpand   Fc_boxc                     j                   ry | D ]H  }t        |t        j                        r	|_          y t        |t        j                        sA |       J y r:   )rY   
isinstancer   rX   	Container)parentchildrecursively_iterater'   s     r-   r   z+SidePage.build.<locals>.recursively_iterate  sJ    ::# 3E!%3%*
#E3==9+E23r.   )r   get_childrenremover   on_module_selectedr   r   
subprocessPopenr   r   r   hasattrrZ   r   rg   check_third_argshowget_name	c_managerget_c_widget)r'   r   r   r   	c_widgetsc_widgetr   s   `     @r-   buildzSidePage.build   s   ""//1 	,F##F+	, ;;"KK**,!%DKKT^^1134 ll 	EFvx(  ++FD$B  ++FE5!D		E }}%%'$$& %% 	'EJJL ~~7***,I++55BB4>>R'$$XueQ?MMO ) $HMMO$3  &9	's   1H H#)NNFFNN)r;   r<   r=   r   r   r   r   r.   r-   r   r      s    '"$?'r.   r   c                       e Zd Zd Zd Zy)CCModulec                 V    t        ||||ddd|d 	      }|| _        || _        || _        y )NTF)r   r   r   r   r   r   sidePager   categoryr'   rM   mod_idr   r   r   r   r   s           r-   r   zCCModule.__init__  s<    E4;RRVfkw}  GK  L 	 r.   c                 &   |j                  | j                        rvt        j                  j	                  t        j
                  j                  d      }|j                  d       |j                  d       | j                  j                  |       yy)Nr   Fr   T)lookup_c_moduler   r   BoxnewrR   VERTICALset_vexpandset_namer   r   )r'   r   r   s      r-   processzCCModule.process  sd    $$TYY/GGKK 8 8!<Ee$NN7#MM$$U+r.   Nr;   r<   r=   r   r   r   r.   r-   r   r     s    !r.   r   c                       e Zd Zd Zd Zy)SAModulec           
      R    t        ||||ddd|      }|| _        || _        || _        y )NFTr   r   s           r-   r   zSAModule.__init__   s0    E4;udTZ[ 	 r.   c                     | j                   j                  dd      }|j                         d   }t        j                  |      d uS )Nzpkexec r   r   )r   replacer   r   rt   )r'   r   s     r-   r   zSAModule.process&  s=    yy  B/zz|A((.d::r.   Nr   r   r.   r-   r   r     s    !;r.   r   c                 <   g }	 | D ]  }t         j                  j                  |      s#t        j                  |      D ]P  } |t         j                  j	                  ||            s*|r|j                  ||g       @|j                  |       R  	 |S #  Y |S xY wr:   )osr)   isdirlistdirjoinr&   )dirsfilter_funcreturn_directoriesvalidthdirts         r-   walk_directoriesr   ,  s     E
 	,Eww}}U#E* ,A"277<<q#9:-!LL!U4!LLO,	, LLs   $B >B (+B Bc                         e Zd Zd fd	Z xZS )LabelRowc                    t         t        |           t               | _        | j                  j                  d       | j                  | j                  ddd       | j                  j                  |       | j                  |       y )NTFr   )	r   r   r   r   rM   set_hexpandrZ   
set_markupset_tooltip_text)r'   texttooltipr,   s      r-   r   zLabelRow.__init__?  sa    h&("_


t$

E5!4

d#g&r.   r   r   rB   s   @r-   r   r   >  s    ' 'r.   r   c                   B     e Zd ZdZd fd	Zd Zd Zd Zd Zd Z	 xZ
S )	r   Nc                     t         t        |   |       || _        t	        |      | _        t        j                         | _        | j                  j                         }|j                  t        j                         t        j                         | _        | j                  j                  d| j                         t        j                  d      }| j                  j!                  |       t        j"                         | _        |j'                  t        j(                  d      ddd       |j'                  | j$                  ddd       | j                  j'                  | j                  d	d	d       | j'                  | j
                  ddd       | j+                  | j                  ddd       t        j                         | _        | j,                  j/                  t        j(                  j1                  d
t        j2                  j4                               | j,                  j                  d| j6                         | j                  j'                  | j,                  ddd       | j9                  |       |r| j;                  |       y y )Nr   clickedrL   )spacingsound)	icon_nameFr   Tzmedia-playback-start-symbolic)r   r   r   event_soundsr   rM   r   r   r   get_style_context	add_classSTYLE_CLASS_LINKEDButtonfile_picker_buttonr$   on_picker_clickedrc   r`   button_labelrZ   Imager   play_button	set_imagenew_from_icon_nameIconSizeBUTTONon_play_clickedr   add_to_size_group)	r'   rM   r  
size_groupr   r   cbutton_contentr,   s	           r-   r   zSoundFileChooser.__init__K  s   .w.?("5)
!ggi113	C**+"%**,''	43I3IJ+##N3IIK!!#))g">uaP!!$"3"3UE1E&&t'>'>dAN

E5!4d))5%;::<""399#?#?@_adamamatat#uv  D,@,@A&&t'7'7qIg&"":. r.   c                 J    t        j                  | j                                y r:   )utilplay_sound_file	get_valuer   s     r-   r  z SoundFileChooser.on_play_clickedo  s    T^^-.r.   c           
         t        j                  | j                  j                         t         j                  j
                  | j                         t        d      t         j                  j                  t        d      t         j                  j                  f      }t        j                  j                  | j                               r |j                  | j                                n|j!                  d       t        j"                         }| j$                  r#|j'                  d       |j'                  d       n|j'                  d       |j)                  t        d             |j+                  |       |j-                         t         j                  j                  k(  r2|j/                         }| j1                  |       | j3                  |       |j5                          y )	N_Cancel_Open)titleactiontransient_forbuttonsz/usr/share/soundszaudio/x-wavzaudio/x-vorbis+oggzaudio/*zSound files)r   FileChooserDialogrM   get_textFileChooserActionOPENget_toplevelr   ResponseTypeCANCELACCEPTr   r)   existsr  set_filenameset_current_folder
FileFilterr  add_mime_typer   
add_filterrunget_filename	set_valueupdate_button_labelrQ   )r'   r   dialogsound_filterr   s        r-   r  z"SoundFileChooser.on_picker_clickedr  sW   &&TZZ-@-@-B.1.C.C.H.H595F5F5H01)c>N>N>U>U01'
C<L<L<S<S0UV 77>>$..*+ 01%%&9:~~'&&}5&&';<&&y1a./,'::<3++222&&(DNN4 $$T*r.   c                     |dk7  rIt         j                  j                  |      }| j                  j	                  |j                                y y )Nr   )r   r   r    r  	set_labelget_basename)r'   absolute_pathfs      r-   r0  z$SoundFileChooser.update_button_label  s>    B%%m4A''(89 r.   c                 B    | j                  | j                                y r:   )r0  r  r'   argss     r-   on_setting_changedz#SoundFileChooser.on_setting_changed  s      !12r.   c                      y r:   r   r9  s     r-   connect_widget_handlersz(SoundFileChooser.connect_widget_handlers      r.   )TNNr   )r;   r<   r=   bind_dirr   r  r  r0  r;  r=  rA   rB   s   @r-   r   r   H  s'    H"/H/8:
3r.   r   c                   6     e Zd ZdZd fd	Zd Zd Zd Z xZS )r   Nc                 .   t         t        |   |       t        |      | _        t               | _        | j                  | j                  ddd       | j                  | j                  ddd       | j                  |       |r| j                  |       y y Nr   Fr   )r   r   r   r   rM   r
   r   rZ   r   r   r  r'   rM   r  r   r   r,   s        r-   r   zDateChooser.__init__  ~    k4)'):"5)
/1

E5!4d))5%;g&"":. r.   c                     | j                   j                         }| j                  |j                  |j                  |j
                  d       y )N)ymd)r   get_dater/  yearmonthdayr'   r:  dates      r-   on_date_changedzDateChooser.on_date_changed  s5    ""++-TYYTZZdhhGHr.   c                 r    | j                         }| j                  j                  |d   |d   |d   f       y )NrF  rG  rH  )r  r   set_daterM  s      r-   r;  zDateChooser.on_setting_changed  5    ~~$$d3icDI%FGr.   c                 P    | j                   j                  d| j                         y )Nzdate-changed)r   r$   rO  r9  s     r-   r=  z#DateChooser.connect_widget_handlers      ##ND4H4HIr.   NNr   )	r;   r<   r=   r?  r   rO  r;  r=  rA   rB   s   @r-   r   r     s    H/IHJr.   r   c                   6     e Zd ZdZd fd	Zd Zd Zd Z xZS )r   Nc                 .   t         t        |   |       t        |      | _        t               | _        | j                  | j                  ddd       | j                  | j                  ddd       | j                  |       |r| j                  |       y y rB  )r   r   r   r   rM   r   r   rZ   r   r   r  rC  s        r-   r   zTimeChooser.__init__  rD  r.   c                     | j                   j                         }| j                  |j                  |j                  |j
                  d       y )N)hrG  s)r   get_timer/  hourminutesecondr'   r:  times      r-   on_time_changedzTimeChooser.on_time_changed  s5    ""++-TYYT[[t{{KLr.   c                 r    | j                         }| j                  j                  |d   |d   |d   f       y )NrY  rG  rZ  )r  r   set_timer_  s      r-   r;  zTimeChooser.on_setting_changed  rR  r.   c                 P    | j                   j                  d| j                         y )Nztime-changed)r   r$   ra  r9  s     r-   r=  z#TimeChooser.connect_widget_handlers  rT  r.   rU  )	r;   r<   r=   r?  r   ra  r;  r=  rA   rB   s   @r-   r   r     s    H/MHJr.   r   c                   6     e Zd ZdZd fd	Zd Zd Zd Z xZS )r   Nc                 r   t         t        |   |       || _        t	        |      | _        g | _        d | _        t        j                  t        j                  j                        | _        | j                  j                  t        j                  j                         t        j                   t        j"                  j$                        }| j                  j'                  |       | j)                  | j
                  ddd       | j+                  | j                  ddd       t-        | j                        D ]  }|dk7  r=|j'                  t        j.                  t        j"                  j0                               t3               }|j5                  dd       |j7                  d| j8                         |j7                  d	| j8                         |j)                  |ddd       | j                  j;                  |        d | _        d| _        | jA                  |       |r| jC                  |       y y )
Nr   )shadow_typerI   Fr      r   zaccel-editedzaccel-cleared)"r   r   r   num_bindr   rM   r  teach_buttonr   rb   re   INr   r   r   r   r   rR   rS   rc   rZ   r   range	Separatorr   r   set_size_requestr$   on_kb_changedr&   event_idteachingr   r  )
r'   rM   ri  r  r   r   boxxkbr,   s
            r-   r   zKeybinding.__init__  s   j$((9 "5)
 !iiCNN4E4EF&&syy'7'78gg#//"<"<=$

E5!4d))5%;t}}% 	$AAv#//2J2JKL!#BR(JJ~t'9'9:JJ(:(:;NN2ueQ/LL#	$ g&"":. r.   c                     g }t        | j                        D ]0  }| j                  |   j                         }|j	                  |       2 | j                  dj                  |             y Nz::)rl  ri  r  get_accel_stringr&   r/  r   )r'   r:  bindingsrs  strings        r-   ro  zKeybinding.on_kb_changed  sX    t}}% 	$A\\!_557FOOF#	$ 	tyy*+r.   c                     | j                         }|j                  d      }t        t        t	        |      | j
                              D ]#  }| j                  |   j                  ||          % y rv  )r  r   rl  minlenri  r  set_accel_string)r'   r:  valuerx  rs  s        r-   r;  zKeybinding.on_setting_changed  sY     ;;t$s3x=$--89 	:ALLO,,Xa[9	:r.   c                      y r:   r   r9  s     r-   r=  z"Keybinding.connect_widget_handlers
  r>  r.   )r   NNr   )	r;   r<   r=   r?  r   ro  r;  r=  rA   rB   s   @r-   r   r     s    H"/H,:r.   r   c                 B     G fddt               |    t              S )Nc                   "     e Zd Z fdZ xZS )$g_settings_factory.<locals>.NewClassc                    || _         |t        vr&t        j                  j	                  |      t        |<   t        |   | _        d|v r|d   | _        |d= d|v r|d   | _        |d= t        | &  |g|i | | j                          y )Nmap_getmap_set)r   settings_objectsr   Settingsr   r   r  r  r   r   bind_settings)r'   rM   r   r   r:  kwargsNewClassr,   s         r-   r   z-g_settings_factory.<locals>.NewClass.__init__  s    DH--+.<<+;+;F+C (,V4DMF"%i09%F"%i09%(D*5B4B6B r.   r   )r,   r  s   @r-   r  r    s    	! 	!r.   r  )globalsr	   )subclassr  s    @r-   g_settings_factoryr    s     !79X&(: !  Or.   	GSettings)F))r   r   girequire_versiongi.repositoryr   r   r   r   xapp.SettingsWidgetsr   r   xapp.GSettingsWidgetsr	   ChooserButtonWidgetsr
   r   KeybindingWidgetsr   r  r  CAN_BACKENDr   rD   rE   r   rG   r   objectr   r   r   r   r   r   r   r   r   r  r   r  r   r.   r-   <module>r     s   
  	   5%   1 1 > 4 E .  N"<W__ "<H T"377 T"lZ Z@T'v T'l "; ;$'~ 'O~ ObJ. J:J. J:8 8t&  ?F$6v$>GIk& !?r.   