
    ?g#                     :   d dl Z d dlZd dlZd dlmZmZ d dl d dlmZm	Z	m
Z
mZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d
Ze j4                  j7                  ej;                         d      e j4                  j7                  ej=                         d      gej?                         D  cg c]  } e j4                  j7                  | d        c} z   Z e j4                  j7                  ej;                         d      e j4                  j7                  ej=                         d      gej?                         D  cg c]  } e j4                  j7                  | d        c} z   Z!g dZ" G d d      Z# G d d      Z$ G d d      Z% G d d      Z&yc c} w c c} w )    N)Gtk	GdkPixbuf)*)CssRangeCssOverrideSwitchGtkSettingsSwitchPreviewWidgetGtk2ScrollbarSizeEditor)LabelRowSidePagewalk_directories)PictureChooserButton)DownloadSpicesPage)Spice_Harvester)Path0   z.iconsiconsz.themesthemes)gnomehicoloradwaitazadwaita-darkhighcontrastepapiruszepapirus-darkzubuntu-monozubuntu-mono-darkzubuntu-mono-light
loginiconshumanityzhumanity-darkc                       e Zd Zd Zy)Stylec                 4    |d   | _         i | _        d | _        y )Nname)r   modesdefault_mode)selfjson_objs     :/usr/share/cinnamon/cinnamon-settings/modules/cs_themes.py__init__zStyle.__init__-   s    V$	
     N__name__
__module____qualname__r%    r&   r$   r   r   ,   s    !r&   r   c                       e Zd Zd Zd Zy)Modec                 .    || _         d | _        g | _        y N)r   default_variantvariants)r"   r   s     r$   r%   zMode.__init__3   s    	#r&   c                 L    | j                   D ]  }||j                  k(  s|c S  y r/   )r1   r   )r"   r   variants      r$   get_variant_by_namezMode.get_variant_by_name8   s+    }} 	Gw||#	 r&   N)r(   r)   r*   r%   r4   r+   r&   r$   r-   r-   2   s    
r&   r-   c                       e Zd Zd Zy)Variantc                 z   |d   | _         d | _        d | _        d | _        d | _        d| _        d| _        d|v r!|d   }|| _        || _        || _        || _        d|v r
|d   | _        d|v r
|d   | _        d|v r
|d   | _        d|v r
|d   | _        |d   | _        | j
                  | _        d	|v r|d	   | _        y y )
Nr   z#000000r   gtkr   cinnamoncursorcolorcolor2)r   	gtk_theme
icon_themecinnamon_themecursor_themer;   r<   )r"   r#   r   s      r$   r%   zVariant.__init__@   s    V$	" 
xh'F#DN$DO"(D &DH%e_DNh&w/DO!"*:"6Dx ( 2Dg&
jjx"8,DK  r&   Nr'   r+   r&   r$   r6   r6   ?   s    -r&   r6   c                       e Zd Z e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 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d+dZd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)y),Modulez.Manage themes to change how your desktop looksr   appearc                     t        d      | _        d| _        d | _        t	        t        d      | j                  | j                  ||       }|| _        d| _        y )Nzthemes, stylez	cs-themesThemes)moduleF)_keywordsiconwindowr   sidePage
refreshing)r"   content_boxrK   s      r$   r%   zModule.__init__`   sI    /*	AhKDMM;W[\ r&   c                 x   g | _         t               | _        g | _        g | _        t               | _        g | _        t               | _        t        t        | j                  d      D ]  \  }}|j                         t        v r| j                   D ]3  }||d   k(  s|t        d   k(  r| j                   j                  |       5 | j                  j                  |       | j                   j                  ||f        | j                   j!                  d        t        t        d d      D ]  \  }}| j                  D ]3  }||d   k(  s|t        d   k(  r| j                  j                  |       5 | j
                  j                  |       | j                  j                  ||f        | j                  j!                  d        t        t"        d d      }g }|D ]  }|d   j                         t        v rt$        j&                  j)                  |d	   |d   d
      }t$        j&                  j+                  |      sd	 t-        t/        |            D ]&  }|j1                  d      s|j                  |        n  |j!                  d        |D ]/  \  }}|| j                  vs| j                  j                  |       1 t        t"        d d      D ]  \  }}|j                         t        v r| j                  D ]3  }||d   k(  s|t"        d   k(  r| j                  j                  |       5 | j                  j                  |       | j                  j                  ||f        | j                  j!                  d        y # t2        $ r}t5        |       Y d }~d }~ww xY w)NT)return_directoriesr   c                 (    | d   j                         S Nr   loweras    r$   <lambda>z'Module.refresh_themes.<locals>.<lambda>~   s    1Q4::< r&   keyc                 |    t         j                  j                  t         j                  j                  | d            S )Nr9   )ospathexistsjoinds    r$   rV   z'Module.refresh_themes.<locals>.<lambda>   s)    bggnnUWU\U\UaUabceoUpFq r&   c                 (    | d   j                         S rQ   rR   rT   s    r$   rV   z'Module.refresh_themes.<locals>.<lambda>   s    !

 r&   c                 @    t         j                  j                  |       S r/   )rZ   r[   isdirr^   s    r$   rV   z'Module.refresh_themes.<locals>.<lambda>   s    "''--:J r&      index.themezDirectories=c                 (    | d   j                         S rQ   rR   rT   s    r$   rV   z'Module.refresh_themes.<locals>.<lambda>   s    1 r&   c                     t         j                  j                  |       xr= t         j                  j                  t         j                  j	                  | d            S )Ncursors)rZ   r[   rb   r\   r]   r^   s    r$   rV   z'Module.refresh_themes.<locals>.<lambda>   sQ    RWW]]STEU  FEZ\ZaZaZhZhikipipiuiuvw  zC  jD  [E r&   c                 (    | d   j                         S rQ   rR   rT   s    r$   rV   z'Module.refresh_themes.<locals>.<lambda>   s    adjjl r&   )
gtk_themessetgtk_theme_namesicon_theme_namescinnamon_themescinnamon_theme_namescursor_themescursor_theme_namesr   THEME_FOLDERSfilter_func_gtk_dirrS   THEMES_BLACKLISTremoveaddappendsortICON_FOLDERSrZ   r[   r]   r\   listopen
startswith	Exceptionprint)	r"   r   r[   themewalkedvalid	directorylinees	            r$   refresh_themeszModule.refresh_themesh   s~   "u "!$'E!"%% -]D<T<Timn 
	1LT4zz|// 658#}Q// ..u56   $$T*OO""D$<0
	1 	!78 -]<q  GK  L 	6LT4-- ;58#}Q// ,,33E:; %%))$/  ''t5	6 	!!&<!= ",0J_cd 	I|!!#'7777<<	!ilMJDww~~d# $T$Z 0 "??>:!LL3!"	 	

-
.! 	3LT44000%%,,T2	3
 -\  <E  Z^  _ 
	4LT4zz|//++ 958#|A. **11%89 ##''-%%tTl3
	4 	$:;' ! 1IIs   
(N3N	N9#N44N9c           
         | j                   
st        d       | j                          d| _        t	        d| j
                        | _        t               | j                  _	        | j                  j                  | j                  j                         t        j                  j                  d      | _        t        j                  j                  d      | _        t        j                  j                  d      | _        | j
                  j#                         | _        | j'                  | j                  dddt(        t(        d	d
      | _        | j'                  | j                  dddddd	d
      | _        | j'                  | j                  dddddd	d      | _        | j'                  | j                  ddddd| j$                  z  d	d      | _        d }d}t3        j4                         }|j7                  d       |j9                  |       |j;                  d      }|j=                          |j;                  d      | _        |j;                  d      | _         |j;                  d      | _!        |j;                  d      | _"        |j;                  d      | _#        |j;                  d      | _$        |j;                  d      | _%        |j;                  d      | _&        d | _'        d | _(        d | _)        dD ]  }d | d!}tT        jV                  jY                  |d"| j$                  z  d#| j$                  z        }tZ        j]                  || j$                        }|j;                  d$|       j_                  |        d%| _0        tc        d&      5 }	|	je                         | _0        d d d        | jg                          | j@                  ji                  d'| jj                  d(       | jB                  ji                  d'| jj                  d)       | jD                  ji                  d'| jj                  d*       | jH                  ji                  d'| jl                         | j>                  ji                  d+| jn                         | j                  j                  jq                  |d,       ts               }| j                  j                  ju                  |dtw        d-             |jy                         }
| j{                  tw        d.      | j,                        }|
j}                  |       | j{                  tw        d/      | j.                        }|
j}                  |       | j{                  tw        d0      | j*                        }|
j}                  |       | j{                  tw        d1      | j0                        }|
j}                  |       t3        j~                         }|j                  tw        d2             |j                  t2        j                  j                         |ji                  d'| j                         |j                  |       t        | d| j                  | j
                        }| j                  j                  ju                  |d3tw        d4             ts               }| j                  j                  ju                  |d5tw        d6             |jy                  tw        d7            }
d8tw        d9      fd:tw        d;      fd<tw        d=      fg}t        tw        d>      dd?|      }|j                  tw        d@             |
j}                  |       t        tw        dA      dBdC      }|
j}                  |       t        tw        dD      dBdE      }|
j}                  |       |jy                  tw        dF            }
t        tw        dG      dH      }|
j}                  |       t        tw        dI      ddJ      }|
j}                  |       t        |j#                               | _L        t        tw        dK            }|
j}                  |       |j                  | _O        t        tw        dL      dMdNdOgdPdQdRd |      }|
j                  |       	 |j                          |j                  | _U        | j                  j                         j                  dS       |j                  ji                  dT| j                         |j                  ji                  dU| j                         | j                  |       t               }|
j}                  |       t        tw        dV            }|
j}                  |       | j                  j                  | _\        t        dW   t        dW   t        dX   fD ]  }	 t        j                  |        g | _b        t        t        z   D ]  }t        j                  j                  |      s#t        j                  j                  |      }	 |j                  t        j                  j                  d       }|ji                  d+| j                         | j                  j                  |        | j                          t        j                  | j                  | jR                  d,d       y dd       y t        j                  | j                  | j                  j                  j                                y # 1 sw Y   gxY w# t        $ r'}t        |       |j                  d
       Y d }~d }~ww xY w# t        $ r Y w xY w# t        $ r}t        |       Y d }~d }~ww xY w)YNzLoading Themes moduleTr~   zorg.cinnamon.desktop.interfacezorg.cinnamon.themezorg.x.apps.portal
icon-themer      F)button_picture_widthmenu_picture_widthnum_colsframecursor-themerg       	gtk-themer   gtk-3.0}   r   r9   z//usr/share/cinnamon/cinnamon-settings/themes.uipage_simplifiedstyle_combomixed_buttondark_buttonlight_button	color_boxcustomize_buttonpreset_buttoncolor_labelmixeddarklightz1/usr/share/cinnamon/cinnamon-settings/appearance-z.svgp   P   image_ z3/usr/share/cinnamon/cinnamon-settings/color_dot.svgclickedr   r   r   changed
simplifiedrE   zMouse PointerApplicationsIconsDesktopzSimplified settings...downloadz
Add/RemoveoptionsSettingszMiscellaneous optionsdefaultzLet applications decidezprefer-darkzPrefer dark modezprefer-lightzPrefer light modez	Dark modecolor-schemez>This setting only affects applications which support dark modezShow icons in menusz.org.cinnamon.settings-daemon.plugins.xsettingszmenus-have-iconszShow icons on buttonszbuttons-have-iconszScrollbar behaviorz*Jump to position when clicking in a troughzgtk-primary-button-warps-sliderzUse overlay scroll barszgtk-overlay-scrollbarsz,Override the current theme's scrollbar widthzScrollbar widthzscrollbar sliderz	min-widthz
min-height   (   pxg       @znotify::activezvalue-changedzWChanges may not apply to already-running programs, and may not affect all applications.r   rc   )rloadedr}   r   ui_readyr   rJ   spicesSettingsStackrK   stack
add_widgetGior   newsettingscinnamon_settings	xsettingsget_scale_factorscalecreate_button_chooser	ICON_SIZEicon_choosercursor_choosertheme_choosercinnamon_chooserr   Builderset_translation_domainadd_from_file
get_objectshowr   r   r   r   r   r   r   r   active_styleactive_mode_nameactive_variantr   Pixbufnew_from_file_at_sizeGdk cairo_surface_create_from_pixbufset_from_surfacecolor_dot_svgrz   readreset_look_uiconnecton_mode_button_clickedon_customize_button_clickedon_style_combo_changed	add_namedSettingsPage
add_titledrG   add_section
make_groupadd_rowButton	set_label
set_halignAlignENDon_simplified_button_clickedru   r   GSettingsComboBoxset_tooltip_textGSettingsSwitchr   r
   gtk2_scrollbar_editorr   content_widgetscrollbar_switchr   add_reveal_rowsync_initial_switch_statePermissionErrorset_sensitivescrollbar_css_rangeget_adjustmentset_page_incrementon_css_override_active_changedon_range_slider_value_changedr	   r   builderrq   rx   rZ   makedirsOSErrormonitorsr[   r\   Filenew_for_pathmonitor_directoryFileMonitorFlags
SEND_MOVEDon_file_changedrv   r|   refresh_choosersGLibidle_addset_modeget_visible_child_name)r"   selected_meta_theme	gladefiler   pagemoder[   pixbufsurfacefr   widgetbuttonr   switchr   label_widgetfile_objfile_monitors                      r$   on_module_selectedzModule.on_module_selected   s	   {{)*! DM)'4;;?DK"//DMMMM$$T]]%8%89LL,,-MNDM%(\\%5%56J%KD" \\--.ABDN557DJ $ : :4==,X_ah  @I  ^g  rs  {@ :  !AD"&"<"<T]]N\cen  FH  ]_  jk  sx"<  #yD!%!;!;DMM;X`bk  CF  [^  ij  rv!;  "wD$($>$>t?U?UW]_gis  KN  cf  gk  gq  gq  cq  |}  EI$>  %JD!"&IIkkmG**:6!!),%%&78DIIK&11-@D ' 2 2> BD&11-@D ' 2 2> BD$//<DN$+$6$67I$JD!!(!3!3O!DD&11-@D $D$(D!"&D 3 NJ4&PTU"))??c$**nVXY]YcYcVcd>>vtzzR""VD6?3DDWM	N "$DKL .PQ%&VVX".  %%i1L1LgV$$Y0K0KVT%%i1L1LgV!!)))T5U5UV$$Y0K0KLMM))$=>DMM**41X;G'')H__Q%79L9LMFV$__Q~%68J8JKFV$__QwZ1B1BCFV$__Qy\43H3HIFV$ZZ\FQ789ciimm,NN9d&G&GHHHV%dGT[[$++NDMM**4Q|_M>DMM**4AjMJ''*A(BCH!1%>#?@%q);'<=&*=(>?AG 'q~7JN\cdF##A&f$ghV$$Q'<%=?o  rD  EFV$$Q'>%?Aq  tH  IFV$''*>(?@H
 'q)U'VXyzFV$$Q'@%ACce}~FV$)@AXAXAZ)[D&&q)W'XYFV$$*$9$9D!a 124FVbHcefhjlprvx~F##F+,002
 (.'<'<D$$$335HHM!!))*:D<_<_`!!))/4;];]^//7"_FV$#A ]%_ `L\*==00DL&q)<?LOL KK% DM&5 	!77>>$'"xx44T:H!'/'A'A#BVBVBaBacg'h$,,Y8L8LM,,\:	! !!#MM$--9L9L9Xhlm _ghlmdmmT]]%8%8%O%O%QRu. .^ # ,a$$U++,0   % !a!sO   ll 1mA!ml	m!mm	mm	m:$m55m:c                 L   |j                   | j                  j                  d      k7  ry|j                  | j                  j                  d      k7  ry|j                  | j
                  j                  d      k7  ry|j                  | j                  j                  d      k7  ryy)Nr   Fr   r   r   T)r=   r   
get_stringr>   r?   r   r@   r"   r3   s     r$   is_variant_activezModule.is_variant_active_  s     8 8 EE!9!9,!GG!!T%;%;%F%Fv%NN4==#;#;N#KKr&   c                 Z   |j                   t        d       y|j                  t        d       y|j                  t        d       y|j                  t        d       y|j                   | j
                  vrt        d|j                          y|j                  | j                  vrt        d|j                         y|j                  | j                  vr&|j                  dk7  rt        d	|j                         y|j                  | j                  vrt        d
|j                         yy)NzNo Gtk theme definedFzNo icon theme definedzNo Cinnamon theme definedzNo cursor theme definedzGtk theme not found:zicon theme not found:r9   zCinnamon theme not found:zCursor theme not found:T)	r=   r}   r>   r?   r@   rk   rl   rn   rp   r  s     r$   is_variant_validzModule.is_variant_validk  s   $()%)*!!)-.'+,D$8$88('*;*;<T%:%::)7+=+=>!!)B)BBwG]G]akGk-w/E/EFt'>'>>+W-A-ABr&   c                    | j                   j                  t        j                  j                  d       | j
                  j                  t        j                  j                  d       | j                  j                  t        j                  j                  d       | j                   j                  d       | j
                  j                  d       | j                  j                  d       | j                  j                         D ]  }| j                  j                  |        | j                  j                          | j                  j                         }|j                          y )NTF)r   set_state_flagsr   
StateFlagsNORMALr   r   r   r   get_childrenrt   r   hider   	get_modelclear)r"   childmodels      r$   
cleanup_uizModule.cleanup_ui  s    ))#..*?*?F(()>)>E))#..*?*?F''.&&u-''.^^002 	)ENN!!%(	)  **,r&   c                    | j                   sy d| _         | j                          i | _        i | _        d | _        d | _        d | _        d}t        j                  j                  |      rt        t        j                  |            D ]  }|j                  d      s	 t        t        j                  j                  ||            5 }t        j                   |j#                               }|d   D ]L  }t%        |      }dD ]  }||v st'        |      }||   D ]  }	t)        |	      }
| j+                  |
      s |j,                  j/                  |
       |j0                  |
|_        d|	v r|	d   dk(  r|
|_        ||j2                  vr||j2                  |<   |j4                  ||_        | j7                  |
      s|| _        || _        |
| _          d|v r'|d   }||j2                  v r|j2                  |   |_        |j4                  t9        d|j:                         4|| j                  |j:                  <   O 	 d d d         t        | j                  j?                               D ]  }| j@                  jC                  |        | j                  | j                  }| j                  j2                  | j
                     }| j                  }
t9        d|j:                  |j:                  |
j:                         | j@                  jE                         }|jG                         }|d k7  rT|jI                  |d      }||j:                  k(  r| j@                  jK                  |       n|jM                  |      }|d k7  rTdD ]  }|dk(  r| jN                  }n|dk(  r| jP                  }n| jR                  }||j:                  k(  r+|jU                  tV        jX                  jZ                  d       n*|jU                  tV        jX                  j\                  d       ||j2                  v r|j_                  d       |j_                  d        ta        |j,                        dkD  rJ| jb                  je                          |j,                  D ]  }
| jf                  ji                  d|
jj                        }|ji                  d|
jl                        }tn        jq                  |      }tr        jt                  jw                  tx        jz                  j}                  |            }t~        j                  j                  |d| j                  z  d| j                  z  dd       }t        j                  || j                        }tV        j                  j                  |      }tW        j                         }|j                  |       |j                          | j                  j                  |       |
| j                  k(  r*|jU                  tV        jX                  jZ                  d       |j                  d| j                  |
        d| _         y | j@                  jC                  t        d             | j@                  j                  ta        | j                  j?                                      d| _         y # 1 sw Y   ~xY w# t<        $ r%}t9        d	| d
       t9        |       Y d }~ld }~ww xY w)NFz/usr/share/cinnamon/styles.dz.stylesstylesr   r   truez'No valid mode/variants found for style:zFailed to parse styles from .zFound active variant:r   r   r   Trc   z#8cffbez#71718e   r   Custom)Or   r  r!  style_objectsr   r   r   rZ   r[   r\   sortedlistdirendswithrz   r]   jsonloadsr   r   r-   r6   r  r1   rv   r0   r    r!   r  r}   r   r|   keysr   append_textr  get_iter_first	get_valueset_active_iter	iter_nextr   r   r   r  r   r  CHECKEDr  r   lenr   r   r   replacer;   r<   strencoder   MemoryInputStreamnew_from_bytesr   Bytesr   r   r   new_from_stream_at_scaler   r   r   Imagenew_from_surfaceToggleButtonru   show_allr   r   on_color_button_clickedrG   
set_active)r"   r[   filenamer  	json_text
style_jsonstyle	mode_namer  variant_jsonr3   default_namer   r   r  iterr	  svgstreamr  r  images                         r$   r   zModule.reset_look_ui  s   }}   $"-77>>$"2::d#34 ,!$$Y/*!!"'',,tX">? &D1(,

1668(<I.7.A $D
(-j(91K !RI'0J'>/3I<Fy<Q )RL6=l6KG/3/D/DW/M040D0DW0M373G3G3OKRD4H3<3LQ]^gQhlrQrKRD4H7@EKK7OMQEKK	4J383E3E3MIME4F373I3I'3RGLD4ELUD4IJQD4G+)R!R4 $-
#:3=i3HL'3u{{'B=B[[=V(:#(#5#5#=$)+TV[V`V`$a>CDKK

$;I$D&D,!^ 4;;++-. 	/D((.	/ *%%E$$**4+@+@AD))G)5::tyy',,O$$..0E'')D4<tQ/5::%$$44T:t, 4< 8 0	'!..F&(!--F!..F		)**3>>+A+A4H**3>>+@+@$G+((.((/0" 4==!A%  %%'#}} UG,,44YNC++i@C**S/C 22AA$**..QTBUVF&--FFvrRVR\R\}^`aeakak^kmqswxF!BB64::VGII66w?E --/FJJu%OO%NN&&v.$"5"55..s~~/E/EtLNN9d.J.JGTU&  ((85''DKK,<,<,>(?@K&D &DN % ! <XJaHIa!sE   )[AZ>
/Z>:BZ>=BZ>[>[	[	[9[44[9c                    | j                  | j                  | j                  j                  d      ddt               | j                  | j
                  | j                  j                  d      ddd       | j                  | j                  | j                  j                  d      ddd	       | j                  | j                  | j                  j                  d
      ddd       | j                  d       y )Nr   r   r   rg   r   r   r   r   #   r   r9   <   )
set_button_chooserr   r   r  r   r   r   r   r   r   r"   r	  s     r$   r   z"Module.on_customize_button_clicked  s     1 14==3K3KL3Y[bdkmvw 3 3T]]5M5Mn5]_fhqsuv 2 2DMM4L4L[4Y[cenprs 5 5t7M7M7X7XY_7`bjlvxz{hr&   c                 F    | j                          | j                  d       y )Nr   )r   r   rP  s     r$   r   z#Module.on_simplified_button_clicked  s    l#r&   c                    |rt         j                  j                  }nt         j                  j                  }t        j
                  j                         j                  }|dk(  r#|j                  d       |j                  d       n"|j                  d       |j                  d       | j                  j                  j                  ||       y )Nr           F      ?T)r   StackTransitionTypeNONE	CROSSFADEr   Applicationget_defaultstack_switcherset_opacityr   rK   r   set_visible_child_full)r"   r  startup
transitionswitcher_widgets        r$   r   zModule.set_mode  s     0055J00::J//557FF<'',))%0'',))$/224Dr&   c                     t         j                  j                         j                  }|j	                  d       |j                  d       y )NrT  T)r   rX  rY  rZ  r[  r   )r"   r_  s     r$   on_navigate_out_of_modulez Module.on_navigate_out_of_module-  s6    //557FF##C(%%d+r&   c                 <    t        d       | j                  |       y )NzColor button clicked)r}   activate_variant)r"   r	  r3   s      r$   r?  zModule.on_color_button_clicked2  s    $%g&r&   c                     t        d       | j                  6| j                  j                  |   }| j                  | j                  |       y y )NzMode button clicked)r}   r   r    activate_mode)r"   r	  rE  r  s       r$   r   zModule.on_mode_button_clicked6  sH    #$($$**95Dt00$7 )r&   c                 "   | j                   sy |j                         }|d k(  s|t        d      k(  ry t        d|       | j                  j                         D ]5  }||k(  s	| j                  |   }|j                  }| j                  ||       7 y )Nr%  zActivating style:)r   get_active_textrG   r}   r!  r,  r!   re  )r"   comboboxselected_namer   rD  r  s         r$   r   zModule.on_style_combo_changed<  s    }} 002D MQx[$@!=1KK$$& 	0D}$D)))""5$/		0r&   c                    t        d|j                         |j                  dk(  r| j                  j                  dd       nW|j                  dk(  r| j                  j                  dd       n+|j                  dk(  r| j                  j                  dd       | j                  9|j                  | j                  j                        }|| j                  |       y | j                  |j                         y )	NzActivating mode:r   r   r   r   rc   r   r   )r}   r   r   set_enumr   r4   rc  r0   )r"   rD  r  new_same_variants       r$   re  zModule.activate_modeI  s     $)),99NN##NA6YY& NN##NA6YY'!NN##NA6*#778K8K8P8PQ+%%&67d223r&   c                    t        d|j                         | j                  j                  d|j                         | j                  j                  d|j
                         | j                  j                  d|j                         | j                  j                  d|j                         | j                          y )NzActivating variant:r   r   r   r   )
r}   r   r   
set_stringr=   r>   r   r?   r@   r   r  s     r$   rc  zModule.activate_variant[  s    #W\\2  g.?.?@  w/A/AB))&'2H2HI  1E1EFr&   Nc                     | j                   j                         r4| j                  j                  | j                  j                                y | j                  j                  d       y rQ   )r   
get_activer   set_sizer   r/  )r"   r
  pspecdatas       r$   r   z%Module.on_css_override_active_changedc  sK      ++-&&//0H0H0R0R0TU&&//2r&   c                     | j                   j                         r*| j                  j                  |j	                                y y r/   )r   rp  r   rq  r/  )r"   r  rs  s      r$   r   z$Module.on_range_slider_value_changedi  s6      ++-&&//0@0@0BC .r&   c                     | j                   ry d| _         t        j                  d| j                         t        j                  d| j                         y )NT   )rL   r   timeout_add_secondsr   r   )r"   fileothereventrs  s        r$   r   zModule.on_file_changedm  s?    ??  D$7$78  D$9$9:r&   c                    | j                   d| j                  | j                  f| j                  d| j                  | j
                  f| j                  d| j                  | j                  f| j                  d| j                  | j                  fg}|D ]E  }|\  }}}}|j                          |j                  d       d|_        | j                  ||||       G d| _        y )Nrg   r   r9   r   FrS  )r   ro   _on_cursor_theme_selectedr   ri   _on_gtk_theme_selectedr   rm   _on_cinnamon_theme_selectedr   rl   _on_icon_theme_selected
clear_menur   progressrefresh_chooserrL   )r"   arrayelementchooserpath_suffixr   callbacks          r$   r   zModule.refresh_chooserst  s    %%y$2D2DdFdFde''DOOTE`E`a**J8L8LdNnNno&&1F1FHdHdeg  	IG5<2G[&( !!%("G  +vxH	I  r&   c                    d}t        |      dkD  rdt        |      z  }|dk(  rt        j                         dz   }t        j                  j                  |d      }t        j                  j                  |      r|}nd}i }	t        |d      5 }
|
D ])  }|j                         j                  d      \  }}||	|<   + 	 d d d        d}|D ]t  }d }||	v rQt        D ]H  }t        j                  j                  ||	|         }t        j                  j                  |      sF|} n |t        j                         }|j                  |       |j                  d	t        t        j                   j"                        }|re|j%                         }t        D ]L  }t        j                  j'                  ||g      |k(  s(t        j                  j)                  ||
      |	|<    n d}|t        j                  j                  |      r|j+                  ||||       t        j-                  d| j.                  ||f       w |r.t        j                  j                  |      st        j0                  |       t        |d      5 }
|	j3                         D ]  \  }}|
j5                  |d|d        	 d d d        n|dk(  r|j+                  d|dd       |dv rt7        |d       }|D ]  }|d   }|d   }	 |d|d|dd|d|dd|z  fD ]8  }t        j                  j                  |      s#|j+                  ||||        n t        j-                  d| j.                  ||f        t        j-                  d| j8                  |       y # 1 sw Y   xY w# 1 sw Y   8xY w#  |j+                  d|z  |||       Y |xY w)NrT  r   r   z/cs_themes/z+/usr/share/cinnamon/cinnamon-settings/iconsr:Ffolder)startT)titleidrv  w
r9   '/usr/share/cinnamon/theme/thumbnail.png)r   r9   c                 P    | d   j                  t        j                                S )Nrc   )r{   r   get_home_dir)ts    r$   rV   z(Module.refresh_chooser.<locals>.<lambda>  s    1Q4??4K\K\K^;_7_ r&   rW   rc   //thumbnail.png/usr/share/cinnamon/thumbnails/.png-/usr/share/cinnamon/thumbnails/%s/unknown.pngi  )r3  r   get_user_cache_dirrZ   r[   r]   r\   rz   stripsplitrx   r   	IconThemeset_custom_themelookup_iconr   IconLookupFlags	FORCE_SVGget_filename
commonpathrelpathadd_picturetimeout_addincrement_progressmkdiritemswriter'  hide_progress)r"   r  r  r   r  inccache_foldericon_cache_path	read_path
icon_paths
cache_filer   
theme_name	icon_pathdumpr~   
theme_paththeme_folderpossible_pathr>   r  r[   s                         r$   r  zModule.refresh_chooser  s   v;?F#C'!224}DL ggll<AO ww~~o.+	I	Ji% 7& 7D,0JJL,>,>s,C)J	-6Jz*77
 D  M!
J& )5 "(*\:eCT(U77>>-8)6J!	" %!$J//6'33HiI\I\IfIfgF%+%8%8%:
 -9 &L!ww11<2LMQ]]46GGOOJVbO4c
5 1 %&
  D%77>>*-''
HEe'T  D$;$;gs^LA MD ww~~l3HH\*/3/ N:1;1A1A1C N-
I"((j))LMNN N
 j(##$Mx_inx#y55,`a M"1X
"1X
R=GU`!aOZ\f!g!PS^!^!` " 77>>$/#//hjU_/`!"   D$;$;gs^LM 	d00':G7 7XN N(R''(WZe(ego  xB  GQ'  Rs*   /N0N";:N.6N.N"N+.O
c                 0    |\  }}|j                  |       y r/   )increment_loading_progress)r"   payloadr  r  s       r$   r  zModule.increment_progress  s     #**3/r&   c                 F    |j                  d       |j                          y )NT)r   reset_loading_progress)r"   r  s     r$   r  zModule.hide_progress  s    d#&&(r&   c                     || _         y r/   )rJ   )r"   rJ   s     r$   _setParentRefzModule._setParentRef  s	    r&   c           
         t        | dt        d      D cg c]9  }t        j                  j	                  t        j
                  j                        ; c}      | _        t               }t        j                         }|j                  |       d|j                  _        | j                  d   j                  |       |j                  |ddd       |r| j                  d   j                  |       |j                  |ddd       |S c c}w )Nsize_groupsr   rS  r   Frc   )getattrranger   	SizeGroupr   SizeGroupMode
HORIZONTALr  SettingsWidgetLabel
set_markuppropsxalignr   
pack_startpack_end)r"   group_labelr  add_widget_to_size_groupxboxlabels          r$   r   zModule.make_group  s    "4rwxyrz8{mn9J9J3K\K\KgKg9h8{|		% &&u-ueUA.#Q**62VUE1-
 9|s   >Dc	                 r    t        |||d|      }	|j                  |      }
| j                  |	|
|||       |	S )NT)r   r   r   has_button_labelr   )r   r  rO  )r"   r   rX   path_prefixr  r   r   r   r   r  r~   s              r$   r   zModule.create_button_chooser  sS    &Oc  yK  ^b  jo  p##C([J^_r&   c           
         | j                  ||       |dk(  r|dk(  r|j                  d       y |dk(  rot        j                  j	                         }|j                  d|| j                  j                         d      }|"|j                         }|j                  |       y y 	 t        j                         D 	cg c]%  }	t        j                  j                  |	|||d      ' c}	t        j                  j                  d|d|d|d	      d
|d|dd|z  gz   D ]4  }t        j                  j                  |      s#|j                  |        y  y c c}	w #  |j                  d|z         Y y xY w)Nr9   r  r   r  r   zthumbnail.pngz~/.r  r  r  r  r  )set_button_chooser_textset_picture_from_filer   r  rY  lookup_icon_for_scalerJ   r   r  r   get_system_data_dirsrZ   r[   r]   
expanduserr\   )
r"   r  r~   r  r  r   current_themer  r[   datadirs
             r$   rO  zModule.set_button_chooser  sj   $$We4*$*)<))*STG#MM557M"88CWY]YdYdYuYuYwyz{F!**,--d3 "	muy  vO  vO  vQ  Rjqbggll7KUde  R " 2 2R]_dfq3r sKVX]^L{Z \\ D ww~~d+55d;  Rm--.]`k.kls+   $E :*E$AE E E E E3c                 H    |j                  |       |j                  |       y r/   )set_button_labelr   )r"   r  r~   s      r$   r  zModule.set_button_chooser_text  s      '  'r&   c                     	 | j                   j                  d|       | j                  | j                  |       y# t        $ r}t        |       Y d }~yd }~ww xY w)Nr   T)r   rn  r  r   r|   r}   r"   r[   r~   details       r$   r  zModule._on_icon_theme_selected  sT    	MM$$\59(():):EB   	&MM	   8; 	AAAc                     	 | j                   j                  d|       | j                  | j                  |       y# t        $ r}t        |       Y d }~yd }~ww xY w)Nr   T)r   rn  r  r   r|   r}   r  s       r$   r}  zModule._on_gtk_theme_selected  sT    	MM$$[%8((););UC   	&MM	r  c                     	 | j                   j                  d|       | j                  | j                  |       | j                  ||       y# t        $ r}t        |       Y d }~,d }~ww xY w)Nr   T)r   rn  r  r   r|   r}   update_cursor_theme_linkr  s       r$   r|  z Module._on_cursor_theme_selected  sa    	MM$$^U;(()<)<eD 	%%dE2	  	&MM	s   8A 	A+A&&A+c                     	 | j                   j                  d|       | j                  | j                  |       y# t        $ r}t        |       Y d }~yd }~ww xY w)Nr   T)r   rn  r  r   r|   r}   r  s       r$   r~  z"Module._on_cinnamon_theme_selected)  sV    	""--fe<(()>)>F   	&MM	r  c                     t        |      }|j                  d      D ]A  }t        j                  j	                  t        j                  j                  |d            sA y y)Nzgtk-3.*zgtk.cssTF)r   globrZ   r[   r\   r]   )r"   r   	theme_dirgtk3_dirs       r$   rr   zModule.filter_func_gtk_dir1  sJ    O	!y1 	Hww~~bggll8Y?@	 r&   c                 r    d|z  }| j                  t        d   |       | j                  t        d   |       y )Nz[icon theme]
Inherits=%s
r   rc   )_set_cursor_theme_atrx   )r"   r[   r   contentss       r$   r  zModule.update_cursor_theme_link9  s4    047!!,q/8<!!,q/8<r&   c                    t         j                  j                  |d      }t         j                  j                  |d      }	 t        j                  |       t         j                  j                  |      rt        j                  |       t        |d      5 }|j                  |       d d d        y # t         j                  $ r
}Y d }~sd }~ww xY w# 1 sw Y   y xY w)Nr   rd   r  )	rZ   r[   r]   r   errorr\   unlinkrz   r  )r"   r   r  default_dir
index_pathr   r  s          r$   r  zModule._set_cursor_theme_at>  s    ggll9i8WW\\+}=
	KK$ 77>>*%IIj!*c" 	aGGH	 	 xx 			 	s   B2 C2C
CC)F)NNr/   )T)*r(   r)   r*   rG   commentr   categoryr%   r   r  r  r  r  r   r   r   r   ra  r?  r   r   re  rc  r   r   r   r   r  r  r  r  r   r   rO  r  r  r}  r|  r~  rr   r  r  r+   r&   r$   rB   rB   [   s    @AGDH D<LoSb
8xt $E(,
'804$3D; S;j0)m,(=
r&   rB   )'rZ   r*  tinycss2gi.repositoryr   r   xapp.GSettingsWidgetsCinnamonGtkSettingsr   r   r   r	   r
   SettingsWidgetsr   r   r   ChooserButtonWidgetsr   ExtensionCorer   Spicesr   pathlibr   r   r[   r]   r   r  get_user_data_dirr  rx   rq   rs   r   r-   r6   rB   )r  s   0r$   <module>r     sL   
   ( # v v @ @ 5 , " 	 GGLL""$h/GGLL'')73 483L3L3NORWW\\'7#OP GGLL""$i0GGLL'')84 594M4M4OPRWW\\'8$PQ
 ! ! - -8p pA P
 Qs   1#F>#F