
    ?g                     
   d dl mZ  ej                          d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
m
Z
 d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZ ej(                  dd        ej(                  dd       d d	lmZmZmZmZmZ d dlZej8                  j;                  e	j8                  j=                  ej>                  d
             ej8                  j;                  e	j8                  j=                  ej>                  d             d dl m Z  d dl m!Z! d dl m"Z"  ejF                  dddg        e$d      Z% e$d      Z& G d dejN                        Z(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0 e$d      d d!d"d# e$d$      d%d!d&d# e$d'      d(d!d)d# e$d*      d+d!d,d#gZ1 e$d-      d.d/d( e$d0      g e$d1      d2d3d( e$d4      g e$d5      d6d7d( e$d8      ggZ2 e$d9      d:d;d( e$d<      g e$d=      d>d?d+ e$d@      g e$d=      dAd?d+ e$d@      g e$dB      dCdDd% e$dE      g e$dF      dGdHd% e$dI      g e$dJ      dKdLd+ e$dM      g e$dJ      dNdLd+ e$dO      g e$dJ      dPdPd+ e$dQ      g e$dR      dSdTd+ e$dU      g e$dV      dWdWd+ e$dX      g e$dY      dZd[d+ e$d\      g e$d]      d^d^d+ e$d_      g e$d]      d`dad+ e$d_      g e$d]      dbdcd+ e$d_      g e$d]      ddded+ e$d_      g e$d]      dfdfd+ e$d_      g e$dg      dhdid+ e$dj      g e$dk      dldmd( e$dn      g e$dk      dodmd( e$dn      g e$dp      dqd[d+ e$dr      g e$ds      dtdud( e$dv      g e$dw      dxdxd% e$dy      ggZ3 e$dY      dzdzd+ e$d{      g e$d]      d|d}d+ e$d_      ggZ4i d~d dddddd ddddd dddd dddd dddddd dddd dddd ddddd ddddd dddd ddddd dddd ddddddd ddddd ddddd ddZ5i dd~ddddddldddddd2ddddKddKddddddSddSdd:dd:dddCdCdGdWd>d.dZdZdd6dhdZ6d Z7 G d dejp                        Z9e:dk(  r e
d       d dl;Z; e!jx                         Z=e=r ej|                  e=      Z?n ej|                         Z? ej                   ej                  e?              e9       ZB e;jv                  e;j                  e;j                         eBj                  ej                         yy)    )util)
cmp_to_keyN)setproctitleGtkz3.0XAppz1.0)Gior   PangoGdkr   binmodules)capi)proxygsettings)SettingsWidgetscinnamonz/usr/share/localengettext)namesSystem SettingszControl Centerc                   @    e Zd ZU ej                  ed<   eed<   eed<   y)SidePageDataspnamecatN)__name__
__module____qualname__r   SidePage__annotations__str     :/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.pyr   r   '   s       
I	Hr    r      X           d         
AppearanceappearFzcs-cat-appearance)labelidshowiconPreferencesprefszcs-cat-prefsHardwarehardwarezcs-cat-hardwareAdministrationadminzcs-cat-adminNetworknetworkz
cs-networkz6network, wireless, wifi, ethernet, broadband, internetColorcolorzcs-colorz(color, profile, display, printer, outputzGraphics Tabletwacomz	cs-tabletz4wacom, digitize, tablet, graphics, calibrate, stylusPrinterszsystem-config-printerz
cs-printerzprinters, laser, inkjetFirewallgufwzcs-firewallz!firewall, block, filter, programszfirewall-config	Languages
mintlocalezcs-languagezlanguage, install, foreignzInput Methodzmintlocale-imzcs-input-methodzLlanguage, install, foreign, input, method, chinese, korean, japanese, typingzLogin Windowzpkexec lightdm-settingszcs-loginzBlogin, lightdm, mdm, gdm, manager, user, password, startup, switchz#lightdm-gtk-greeter-settings-pkexecz)login, lightdm, manager, settings, editorzgdm-settingsz*login, gdm, manager, user, startup, switchzDriver Managerzcinnamon-driver-managerz
cs-driverszPvideo, driver, wifi, card, hardware, proprietary, nvidia, radeon, nouveau, fglrxzNvidia Settingsznvidia-settingsz,video, driver, proprietary, nvidia, settingszSoftware Sourceszpkexec mintsourcesz
cs-sourcesz*ppa, repository, package, source, downloadzPackage Management
dnfdragoraz6update, install, repository, package, source, downloadzgpk-applicationz	gpk-prefsz/usr/bin/octopioctopizpamac-managerzsystem-software-installyumexzUsers and Groupszcinnamon-settings-userszcs-user-accountsz7user, users, account, accounts, group, groups, password	Bluetooth	blueberryzcs-bluetoothz#bluetooth, dongle, transfer, mobilezblueman-managerzManage Services and Unitszsystemd-manager-pkexecz)systemd, units, services, systemctl, initDiskszgnome-diskszorg.gnome.DiskUtilityzldisks, manage, hardware, management, hard, hdd, pendrive, format, erase, test, create, iso, ISO, disk, imagezOnline Accountszgnome-online-accounts-gtkz&google, microsoft, nextcloud, owncloudzsoftware-properties-gtkz|ppa, repository, package, source, download, video, driver, wifi, card, hardware, proprietary, nvidia, radeon, nouveau, fglrxzpkexec synapticsynapticaccessibility         )visualkeyboardtypingmouseapplets)	installedmoredownloadbackgrounds)imagessettingsdefault)	preferred	removabledesklets)rP   rQ   rR   generaldisplay)layoutrU   effects)r]   	customize
extensionsrL   )rM   	shortcutslayoutsrN   )rN   touchpadpower)rc   	batteries
brightnessscreensaver)rU   r^   sound   )outputinputsoundsapplicationsrU   themes)rm   rR   optionswindows)titlebarbehavioralttab
workspaces)osdrU   zuniversal-accessscreenscreens	bluetooth
hotcorners	hotcorneraccountszonline-accountscolorsmeuserzlightdm-settingszlogin-screenwindow
backgroundzdriver-managerdriversprintersprinterinfosinfopanel)localelanguagezinput-methodnvidiafirewallnetworkssourcesmintsourcespanelstabletusersc                       fd}|S )Nc                      t        j                          } | i |}t        j                          }t        dj                  ||z
  dz  fz         |S )Nz%s took %0.3f msg     @@)timeprintr   )argskwargst1rest2funcs        r!   wrapperzprint_timing.<locals>.wrapper   sL    YY[D#F#YY[ DMMBrE6>#BBC
r    r   )r   r   s   ` r!   print_timingr      s     Nr    c                   &   e Zd Zd Zd Zd Zd+dej                  fdZd Z	d Z
d Zd	 Zd
efdZd Zded
dfdZd,ded
ef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,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,y)-
MainWindowc                 N   |j                         }t        |      dkD  r| j                  |       |j                         j	                  |d         }|Q| j
                  |   j                  |      }| j
                  |   j                  |d      }| j                  |d       y y y )Nr   rI   Tuser_action)	get_selected_itemslendeselect	get_modelconvert_path_to_child_pathstore_by_catget_iter	get_valuego_to_sidepage)self	side_viewpathr   selected_itemsfiltered_pathiteratorsidePages           r!   side_view_navzMainWindow.side_view_nav   s    "557~"MM#%//1LL^\]M^_M(,,S1::=I,,S1;;HaH##H$#? ) #r    c                 :    | j                   j                  d       y Nr   stack_switcherset_opacityr   s    r!   _on_sidepage_hide_stackz"MainWindow._on_sidepage_hide_stack       ''*r    c                 :    | j                   j                  d       y NrH   r   r   s    r!   _on_sidepage_show_stackz"MainWindow._on_sidepage_show_stack   r   r    r   c                    |j                          |j                  ry |sJ| j                  j                  |j                         | j                  j                  |j                         |j                  r| j                  j                  |j                         |j                  j                         }t        |      dkD  r~| j                  t        t        |            v r|j                  j                  || j                            |j                  j                         }| j                  dk(  rwt!        |d      rk| j"                  t        d      v rT|j$                  j'                  | j"                         |j)                          n|j                  j                  |d          |j                  j+                         r| j                  j-                  d       n| j                  j-                  d       t!        |d      rp|j/                  d| j0                         |j/                  d| j2                         n7| j                  j-                  d       n| j                  j-                  d       |r7| j4                  j7                  d       | j8                  j7                  d	       nh| j4                  j;                  dt<        j>                  j@                         | j8                  j;                  d	t<        j>                  j@                         || _!        d}| jD                  D ]  }|jG                         \  }}||z  } | jD                  jI                  |d
z   d       | jK                          | jM                  |       y )Nr   rH   
sort_combo   connect_proxy
hide_stack
show_stackcontent_box_pagecontent_boxr$   )'buildis_standaloner~   	set_titler   set_icon_namer/   stackr   	set_stackget_childrenr   tabrangeset_visible_childget_visible_childhasattrsortr   
set_activesort_changedget_visibler   r   r   r   
main_stackset_visible_child_nameheader_stackset_visible_child_fullr   StackTransitionTypeNONEcurrent_sidepagetop_barget_preferred_widthset_size_requestcalculate_bar_heightsmaybe_resize)	r   r   r   lvisible_childwidthwidgetmns	            r!   r   zMainWindow.go_to_sidepage   s   !!KK!!(--0KK%%hmm4>>))(..9++-A1vz88uSV},NN44Qtxx[A$,NN$D$D$FMxx1} '| D $		U1X 5%00;;DIIF%224NN44QqT:>>--/''33A6''33A68_5**<9U9UV**<9U9UV##//2++A.OO223EF44]COO223EsG^G^GcGcd44]CD[D[D`D`a (ll 	F--/DAqQJE	 	%%ebj"5""$(#r    c                    | j                   j                         \  }}t        }|j                  | j                  z   t
        z   }|j                  s|t        kD  rQ|}nN|j                  dkD  r!|j                  | j                  z   t
        z   }n|j                  dk(  r|| j                  z   }| j                  j                  t        |       y )Nr   r   )
r   get_preferred_size
WIN_HEIGHTheightbar_heightsWIN_H_PADDINGsizer~   resize	WIN_WIDTH)r   r   r   r   
use_heighttotal_heights         r!   r   zMainWindow.maybe_resize   s    2241  
xx$"2"22]B}}j()
]]Q!)9)99MIJ]]b %(8(88J 	9j1r    c                 j    | j                   D ]$  }||us| j                   |   j                          & y N)r   unselect_all)r   r   keys      r!   r   zMainWindow.deselect   s1    >> 	3C#~s#002	3r    c                    t         j                  j                  | dt        j                         z  t         j
                  j                  t         j
                  j                  z         t        j                         | _
        | j                  j                  d       | j                  j                  t        j                  j                  t        j                   d             t#        j$                  t        j&                  j(                  dd      | _        | j                  j-                  d      }| j*                  j/                  |       | j                  j-                  d	      | _        i | _        | j                  j-                  d
      | _        | j4                  j7                  t        j8                  j:                         | j4                  j=                  d       | j                  j-                  d      | _        | j>                  j7                  t        j8                  j:                         | j>                  j=                  d       | j                  j-                  d      | _         | j                  j-                  d      | _!        | jB                  jE                         }|jG                  d       |jG                  d       | jB                  jI                          | j                  j-                  d      | _%        | j                  j-                  d      | _&        | jL                  jI                          | j                  j-                  d      | _'        | jN                  jQ                  tS        d             | j                  j-                  d      }t        jT                  jV                  |jX                  _-        | j                  j-                  d      | _.        | j                  j-                  d      | _/        | j^                  ja                  tS        d             | j^                  jc                  d| jd                         | j^                  jc                  d| jf                         | j*                  jc                  d| jh                         | j                  jk                  |        g | _6        t         jn                  jq                  d      | _9        d | _:        d | _;        ty        jz                         | _>        | j|                  | jJ                  _>        d| _?        d| _@        d| _A        i | _B        i | _C        | j                          d| _E        | j                  t               | j                  s| j                  t               t        t        j                        dkD  r| j                         ry | j                          y ) Nzorg.cinnamon.Settings_%d)application_idflagsr   zcinnamon-settings.uir"   r#   )window_positiondefault_widthdefault_heightmain_boxr   r      r   category_boxside_view_swzcs-category-viewviewr   content_box_swbutton_backzBack to all settingsimage1r   
search_boxSearchchangedz
icon-pressdestroyzorg.cinnamonr   rH   F)Nr   Application__init__osgetpidApplicationFlags
NON_UNIQUEHANDLES_OPENr   Builderbuilderset_translation_domainadd_from_filer   joinconfigcurrentPathr   	GtkWindowWindowPositionCENTERr~   
get_objectaddr   r   r   set_transition_typer   	CROSSFADEset_transition_durationr   side_view_containerr   get_style_context	add_classshow_allr   r  r  set_tooltip_text_IconSizeMENUprops	icon_sizer   search_entryset_placeholder_textconnectonSearchTextChangedonClearSearchBox_quitconnect_signals	sidePagesSettingsnewrU   current_cat_widgetr   r   CManager	c_managerr   r   r   r   storeFilterload_ccc_moduleshas_mintsourcesload_standalone_modulesSTANDALONE_MODULESALTERNATE_MODULESr   sysargvload_sidepage_as_standaloneinit_settings_overview)r   r   contextbutton_images       r!   r
  zMainWindow.__init__  s     0JRYY[0X'*';';'F'FI]I]IjIj'j 	! 	l {{}++J7""277<<0B0BDZ#[\nnS5G5G5N5N36sL <<**:6!||..y9,,11,?++C,C,C,M,MN//4 LL33NC--c.E.E.O.OP11#6#'<<#:#:>#J  LL33NC##557,-&!""$<<22=A"ll556FG$$&<<22=A))!,B*CD||..x8'*||'8'8$"ll556FG LL33LA..q{;!!)T-E-EF!!,0E0EFItzz2$$T*46((8"& $%)^^"	=? 	$$$%78##(():; sxx=1//1##%r    c                 V   | j                          t        t        j                        fd}t	        | j
                  |      | _        | j
                  D ]  }|\  }}}|j                  | j                  vrlt        j                  t        t        j                  t        t              | j                  |j                  <   t        D ]  }|d   |j                  k(  sd|d<    |j                  }t!        |      dkD  rd|dd z  }| j                  |   j#                  |t        j                  j%                  |j&                        ||g        d	| _        d	| _        | j                  D ]  }| j-                  | j                  |         \  }	}
t/        |	| j(                        | _        t/        |
| j*                        | _        | j                  |   j1                         | j2                  |<   | j2                  |   j5                  | j6                          | xj(                  d
z  c_        | xj*                  dz  c_        t/        | j(                  t8              | _        t/        | j*                  t:              | _        t=        | j(                  t>              | _        t=        | j*                  t@              | _        | jC                          | jD                  jG                  tI        d             | jJ                  jM                  d| jN                         | jQ                          | jR                  jU                          | jD                  jM                  d| jV                         | jD                  jM                  d| jX                         | jD                  j[                          y)zoLoad the system settings overview (default)

        This requires to initialize all settings modules.
        c                 .     | d   j                         S r   )r   )r   localeStrKeys    r!   <lambda>z3MainWindow.init_settings_overview.<locals>.<lambda>Z  s    adii!8 r    )r   r-   Tr.      z%s...Nr   rI   rh   r   clickedzkey-press-eventzbutton-press-event).load_python_modulesr   r   strcollsortedr0  r   r   r   	ListStorer   r   
ThemedIconobject
CATEGORIESr   r   appendr2  r/   min_label_lengthmin_pix_lengthget_label_min_widthmax
filter_newr6  set_visible_funcfilter_visible_functionMIN_LABEL_WIDTHMIN_PIX_WIDTHminMAX_LABEL_WIDTHMAX_PIX_WIDTHdisplayCategoriesr~   r   r$  r  r+  back_to_icon_viewr   r)  
grab_focuson_keypresson_buttonpressr.   )r   sidePagesKeysidepager   sp_idsp_catcategoryr   r   charpixrD  s              @r!   r?  z!MainWindow.init_settings_overviewO  s    	  " "&..18LA  	^H (Bv||4#4#4425--S^^U[]`2a!!(,,/ * 0H~5+/(0
 77D4y2~cr*f%,,dCNN4F4Frww4OQSU[-\]	^ !"$$ 	QC001B1B31GHID#$'d.C.C$DD!"%c4+>+>"?D$($5$5c$:$E$E$GDS!S!2243O3OP	Q 	"q  #D$9$9? K!$"5"5}E #D$9$9? K!$"5"5}E  	a 123  D,B,BC""$$$&-t/?/?@0$2E2EFr    returnc                 J   t         j                  dk(  ryt        j                  t         j                  d   t         j                  d         }t         j                  j	                  d       | j                  |       t        t         j                        dkD  rg }dddddd}t        j                  |d	di      }	 t        j                  t         j                  dd
 dddg      d   }|D ]  \  }}|dv r=|j                         rt        |      | _        n||j                         v r
||   | _        |dv r=|j                         rt        |      | _        n||j                         v r
||   | _        t         j                  j                  |       t         j                  j                  |        d| }| j                   j#                  ||       | j$                  j'                          | j(                  D ]|  }|j*                  |k(  s| j-                  |j.                  d       |j.                  j0                  r| j                   j3                           y| j                   j5                           y t7        d| d       y# t        j                  $ r Y w xY w)a  
        When an explicit sidepage is given as an argument,
        try load only this module to save much startup time.

        Analyses arguments to know the tab to open
        and the sort to apply if the tab is the 'more' one.

        Examples:
        ```
          cinnamon-settings.py applets --tab=more --sort=date
          cinnamon-settings.py applets --tab=1 --sort=2
          cinnamon-settings.py applets --tab=more --sort=date
          cinnamon-settings.py applets --tab=1 -s 2
          cinnamon-settings.py applets -t 1 -s installed
          cinnamon-settings.py desklets -t 2
        ```
        Please note that useless or wrong arguments are ignored.

        :return: True if sidepage was loaded successfully, False otherwise
        rH   F)only_moduler   rI   rJ   rh   )r   scoredaterP   updaterV   Nzt:s:ztab=zsort=)z-tz--tab)z-sz--sortzcinnamon-settings r   Tzwarning: settings module z not found.)r<  r=  ARG_REWRITEgetpoprH  r   TABSgetoptGetoptError	isdecimalintr   keysr   remover~   set_wmclassr  hider0  r   r   r   r   closer.   r   )	r   sidepage_nameoptssorts_literaltabs_literaloptargwm_classsp_datas	            r!   r>  z&MainWindow.load_sidepage_as_standalone  s<   * 88q= $SXXa[AQ 	  ] ; sxx=1D$%qTUVM88MIq>BL}}SXXab\6FG;LMaP ! %S/)}}#&s8 1 1 33#/#4**}}$'H	 2 2 44$1#$6	$$%  (7(3 ~~ 		G||},##GJJE#B::++ KK%%'  KK$$&		 	)-DEG %% s   >-J J"!J"c           	      ^   t         D ]  }t        j                  |d   |d   |d   |d   |d   | j                        }|j	                  | j
                        rE| j                  j                  t        |j                  |j                  |j                               t        d|d           y)z3Loads all Cinnamon Control Center settings modules.r   rH   rI   rJ   rh   z%warning: failed to process CCC moduleN)CONTROL_CENTER_MODULESr   CCModuler   processr5  r0  rO  r   r   r   re  r   )r   itemccmodules      r!   r7  zMainWindow.load_ccc_modules  s    * 	HD&//Qa$q'4PQ7TXYZT[]a]m]mnH/%%l83D3DhmmU]UfUf&gh=tAwG	Hr    MODULESNc           	      N   |D ]  }t        j                  |d   |d   |d   |d   |d   | j                        }|j                         sG| j                  j                  t        |j                  |j                  |j                               d|j                  v sd| _
         y)	z&Loads all standalone settings modules.r   rH   rI   rJ   rh   r   TN)r   SAModuler   r  r0  rO  r   r   r   re  r8  )r   r  r  samodules       r!   r9  z"MainWindow.load_standalone_modules  s     	0D&//Qa$q'4PQ7TXYZT[]a]m]mnH!%%l83D3DhmmU]UfUf&gh HMM1+/D(	0r    rj  c                 B   t        j                   t        j                  j                  t        j
                  dd            }t        |      dk(  rt        dt        j                         y|D cg c]A  }t        j                  j                  t        j                  j                  |            d   C }}t        fd|      }t        t        |      D ]  }	 |j                  | j                         }| j#                  |      rU| j%                  |      rD| j&                  j)                  t+        |j,                  |j.                  |j0                                y	c c}w #  t        d| t        j                         t3        j4                          Y xY w)
zLoads all or only a given settings module(s) written in python.

        :param only_module: (optional) module name to be loaded exclusively
        :return: True if successful, False otherwise
        r   zcs_*.pyr   z+warning: no python settings modules found!!)fileFc                 ,    j                  dd      | v S )N-r$  )replace)modrj  s    r!   rE  z0MainWindow.load_python_modules.<locals>.<lambda>  s    ;+>+>sC+HC+O r    zfailed to load python module T)globr  r   r  r  r  r   r   r<  stderrsplitextbasenamefiltermap
__import__Moduler   	loadChecksetParentRefsr0  rO  r   r   r   re  	traceback	print_exc)r   rj  	mod_filesx	to_importmoduler  s    `     r!   rH  zMainWindow.load_python_modules  s6    IIbggll6+=+=y)TU	y>Q?cjjQGPQ!RWW%%bgg&6&6q&9:1=Q	Q"OQZ[I*i0 	&F&mmD$4$45>>#&4+=+=c+BNN)),s||SXXs||*\]		&  R&5fX>SZZP##%s   2AE#BE((4Fc                 $    | j                          y r   holdr   s    r!   do_activatezMainWindow.do_activate      		r    c                 $    | j                          y r   r  )r   filesn_fileshints       r!   do_openzMainWindow.do_open  r  r    c                    d}t        j                         }|j                         t        j                  j
                  k(  r-t        j                  j                         j                  |      }|s|j                  t        j                  k(  rst        | j                  j                               t         j                  t         j                  t         j                   t         j"                  fvr| j%                  d        yy)NFT)r   get_current_event_device
get_sourcer
   InputSourceKEYBOARDDisplayget_defaultdevice_is_grabbedkeyvalKEY_BackSpacetyper~   	get_focusTreeViewEntry
SpinButtonTextViewr]  )r   r   eventgrabdevices        r!   r_  zMainWindow.on_keypress  s    --/#//":"::;;**,>>vFD(9(99tDKKDYDYD[?\@CciiY\YgYgiliuiu?v@w""4(r    c                 N    |j                   t        k(  r| j                  d        yy)NTF)buttonMOUSE_BACK_BUTTONr]  )r   r   r  s      r!   r`  zMainWindow.on_buttonpress  s#    <<,,""4(r    c                 n    d}| j                   j                         \  }}||j                  z  }|| _        y r   )r   r   r   r   )r   hr   r   s       r!   r   z MainWindow.calculate_bar_heights"  s2    ||..01	QXXr    c                 $    | j                          y r   )r\  )r   r   s     r!   r,  zMainWindow.onSearchTextChanged(  s     r    c                 v    |t         j                  j                  k(  r| j                  j	                  d       y y )N )r   EntryIconPosition	SECONDARYr)  set_text)r   r   positionr  s       r!   r-  zMainWindow.onClearSearchBox+  s/    s,,666&&r* 7r    c                     t        j                  d|      }dj                  |D cg c]  }t        j                  |      r| c}      S c c}w )NNFKDr  )unicodedata	normalizer  	combining)r   textcs      r!   strip_accentszMainWindow.strip_accents/  s>    $$VT2ww4Ha{/D/DQ/GHIIHs   AAc                    |j                  |d      }| j                  | j                  j                         j	                               }| j                  |j
                  j	                               j                  |      dkD  s;| j                  |j                  j	                               j                  |      dkD  ryy)NrI   r   TF)r   r  r)  get_textlowerr   findkeywords)r   modeliter	user_datar   r  s         r!   rV  z"MainWindow.filter_visible_function3  s    ??4+!!$"3"3"<"<">"D"D"FGhmm113499$?"Dh//5578==dCbHr    c                     | j                   j                         }|D ]  }|j                           d| _        t        D ]  }|d   du s| j                  |        | j                   j                          y )NFr.   T)r  r   r  first_category_donerN  prepCategoryr"  )r   widgetsr   re  s       r!   r\  zMainWindow.displayCategories<  su    **779 	FNN	#( " 	,H4'!!(+	, 	  ))+r    c                 d   d}d}t        j                         }|j                         }||j                  |d      }|j	                  d      }|D ]G  }|j                  |      }	|	j                         \  }
}|
|kD  r|
}t        |      |kD  s=t        |      }I |j                  |      }|||fS )Nr    )	r   IconViewget_iter_firstr   splitcreate_pango_layoutget_pixel_sizer   	iter_next)r   r  min_width_charsmin_width_pixels	icon_viewr  stringsplit_by_wordwordr\   
item_widthitem_heights               r!   rR  zMainWindow.get_label_min_widthF  s    LLN	##%__T1-F"LL-M% 0"66t<*0*?*?*A'
K 00'1$t9.&)$iO0 ??4(D   000r    c                 f    |j                  |d      }|r|j                  d|j                         y y )NrH   surface)r   set_propertyr  )r   columncellr  r  datar   s          r!   pixbuf_data_funczMainWindow.pixbuf_data_funcX  s.    //$*i9 r    c                 x   | j                   |d      j                          | j                  |      sy | j                  rUt        j
                  j                  t        j                  j                        }| j                  j                  |ddd       t        j                  j                  t        j                  j                  d      }t        j                  j                  |d   t        j                  j                        }|j                  |ddd       t	        j                   d      }|j#                  d       |j%                  d	|d
   z         |j                  |ddd       | j                  j                  |ddd       t        j&                  j)                  | j                   |d            }|j+                         }|j-                  | j.                         |j1                  d       |j3                  d       |j5                  d       |j7                  d       t	        j8                         }t	        j:                  t<        j>                  j@                  t<        jB                  jD                  d| jF                  t<        jH                  jJ                  d      }|j                  |ddd       |j                  |ddd       |jM                  |dd       |jO                  dt        j                  jP                         |jO                  dd       |jM                  |dd       || jR                  |d   <   | j                  j                  | jR                  |d      ddd       d| _        | jR                  |d      jU                  d| jV                  |d          | jR                  |d      jU                  d| jX                  |d          | jR                  |d      jU                  d| jZ                  |d          | jR                  |d      jU                  d| j\                  |d          y )Nr-   F
   rh   r/   g      ?)yalignTz<span size="12000">%s</span>r,   rH   r      r$   )	ellipsize	wrap_mode
wrap_widthwidth_chars	alignmentxaligngiconz
stock-sizezfollow-stater  zitem-activatedzbutton-release-eventzkeynav-failedzselection-changed)/r6  refilteranyVisibleInCategoryr  r   	Separatorr2  Orientation
HORIZONTALr  
pack_startBoxImagenew_from_icon_namer%  BUTTONLabelset_use_markup
set_markupr  new_with_modelget_areaset_item_widthrQ  set_item_paddingset_column_spacingset_row_spacing
set_marginCellRendererPixbufCellRendererTextr	   EllipsizeModer   WrapMode	WORD_CHARrP  	Alignmentr  add_attributer  DIALOGr   r+  r   button_presson_keynav_failedon_selection_changed)r   re  r   boximgareapixbuf_renderertext_renderers           r!   r  zMainWindow.prepCategory]  s   $(113((2##]]&&s'A'ABF$$//ubIggkk#//44a8ii**8F+;S\\=P=PQsE5!,#&d#88G;LLMvueQ/  ++CqA,,T-=-=htn-MN d112"!!"%r""002,,u7J7J7O7O[`[i[i[s[s  AB  PT  Pe  Pe  qv  q@  q@  qG  qG  PS  TtU;tT59?GQ7$$\3<<3F3FG$$^T:=&!4)/x~&  ++DNN8D>,JESXZ[\#' x~&../?ASASU]^bUcdx~&../EtGXGXZbcgZhix~&..@U@UW_`dWefx~&../BDD]D]_ghl_mnr    c                    |j                         }|r/|d   }|j                  |d       \  }}| j                  j                         }|j	                         \  }}|j                         }	|	j	                         \  }
}|j
                  |z   |z   }| j                  j                         }|j                         }|j                         }|dkD  r||j                  z   |k  ry ||j                  z   |kD  r(|j                  ||z   |j                  z   |z
  dz          y |dk  r!|j                  |t        |      z
  dz
         y y y )Nr   r  )r   get_cell_rectr  
get_windowget_positionyr   get_vadjustmentget_page_sizer   r   	set_valueabs)r   iconviewselr   foundrectcwcw_xcw_yivwiv_xiv_yfinal_yadjpagecurrent_poss                   r!   bring_selection_into_viewz$MainWindow.bring_selection_into_view  s1   ))+q6D"00t<KE4))446B*JD$%%'C))+JD$fftmd*G##335C$$&D--/K!7T[[#8D"@$++%-kG3dkkADH2MN1 kCL82=> + r    c                    |j                         }t        |      dkD  r|| _        | j                  |       | j                  D ]<  }| j                  |   | j                  k(  r | j                  |   j                          > y r   )r   r   r3  r=  r   r   )r   r   re  r0  ivs        r!   r   zMainWindow.on_selection_changed  ss    '')s8a<&,D#**62.. 	.B~~b!T%<%<<NN2++-	.r    c                 @    d}t         D ]  }||d   k(  r|c S |dz  } y )Nr   r-   rH   )rN  )r   re  ir   s       r!   get_cur_cat_indexzMainWindow.get_cur_cat_index  s0     	C3t9$FA	r    c                 V    |j                         \  }}}|r|j                  |      }|S y r   )
get_cursorget_item_column)r   r/  sr   r  cols         r!   get_cur_columnzMainWindow.get_cur_column  s3     ++-4**40CJ r    c                 l    |j                  |d d       |j                  |       |j                          y )NF)
set_cursorselect_pathr^  )r   r0  r/  s      r!   reposition_new_catzMainWindow.reposition_new_cat  s.    Cu-S!r    c                    t        t              }| j                  |      }d}d}d }|t        j                  j
                  k(  r||dz
  k  rt        |dz      }	| j                  |      }
| j                  |	d      }|j                         }|j                         }|M|j                  |      }|j                  |      }t        ||
z
        }||k  r|}|}|j                  |      }|M| j                  ||       d}|S |t        j                  j                  k(  r|dkD  rt        |dz
     }	| j                  |      }
| j                  |	d      }|j                         }|j                         }|M|j                  |      }|j                  |      }t        ||
z
        }||k  r|}|}|j                  |      }|M| j                  ||       d}|S )NFi  rH   r-   Tr   )r   rN  rB  r   DirectionTypeDOWNrH  r   r   r  get_pathrE  r.  r  rL  UP)r   r   	directionre  num_catscurrent_idxretdistr0  new_catrG  new_cat_viewr  r  r   r  ds                    r!   r  zMainWindow.on_keynav_failed  s   z?,,X6))...;A3M q1G%%f-C>>'$-8L **,E'')D"~~d+ 006CLt8CDt, " ##C6C" 
! #++...;? q1G%%f-C>>'$-8L **,E'')D"~~d+ 006CL9CDt, " ##C6C
r    c                 J    |j                   dk(  r| j                  |d |       y y r   )r  r   )r   r   r  re  s       r!   r  zMainWindow.button_press  s%    <<1vtX6 r    c                     |d   }| j                   |   j                         }d}|H| j                   |   j                  |d      }||d   k(  }| j                   |   j                  |      }|H|S )Nr-   FrJ   )r6  r  r   r  )r   re  r-   r  visibler   s         r!   r  zMainWindow.anyVisibleInCategory  s    d^#224""2&00q9CXd^+G##B'11$7D  r    c                 Z    	 |j                  | j                         y# t        $ r Y yw xY wNT)_setParentRefr~   AttributeErrorr   r  s     r!   r  zMainWindow.setParentRefs  s5    	dkk*   		s    	**c                 2    	 |j                         S #  Y yxY wr^  )
_loadCheckra  s     r!   r  zMainWindow.loadCheck  s    	>>##	s    c                    | j                   j                  t        d             | j                   j                  d       | j                   j	                  t
        t               | j                  j                         }|D ]M  }|j                          |j                         dk(  s'|j                         }|D ]  }|j                           O | j                  j                  d       | j                  j                  d       | j                  j                          | j                   j"                  rDt%        | j                   j"                  d      r$| j                   j"                  j'                          d | _        y )Nr   zpreferences-desktopc_boxside_view_pager   on_navigate_out_of_module)r~   r   r$  r   r   r   r   r   r   ry  get_namer   r   r   r)  r^  r   r  r   rg  )r   r   childrenchild	c_widgetsc_widgets         r!   r]  zMainWindow.back_to_icon_view  s"   a 123!!"789j1##002 	$EJJL~~7*!..0	 ) $HMMO$		$ 	../?@00=$$&  ''GD4I4I4P4PRm,n!!((BBD $r    c                 X    | j                   j                          | j                          y r   )r~   r  quit)r   r   s     r!   r.  zMainWindow._quit  s    		r    )Tr   )-r   r   r   r   r   r   r   r   r   r   r   r
  r?  boolr>  r7  listr9  r   rH  r  r  r_  r`  r   r,  r-  r  rV  r\  rR  r  r  r=  r   rB  rH  rL  r  r  r  r  r  r]  r.  r   r    r!   r   r      s    @++2$'?'? 2$h2(3G&R<|LT L\H0t 0 0s d 8	!+J,1$:
,o\?:.
'R7%(r    r   __main__zcinnamon-settings)Gr   r   strip_syspath_locals	functoolsr   rr  gettextr  r   r  r   r<  r   r  rM   r  urllib.requestrequesturllibgirequire_versiongi.repositoryr   r   r	   r
   r   r  r   rO  r  r  r   r   r   installr$  menuNamemenuComment
NamedTupler   r   r   r   rW  rZ  rX  r[  r  rN  r  r:  r;  rq  rn  r   r	  r   r   signalget_proxy_settingspsProxyHandlerproxyinstall_openerbuild_openerr~   SIGINTSIG_DFLrunr=  r   r    r!   <module>r     s              	 % 
      	   5%     65 ! 4 4  V//7 8 V//; <    
/
| D  !6$$  	
  oul  Aulz{
m
ul}~ !ulz{
 y\I,`jqr  tl  rm  nwZG*`jqr  t^  r_  `G+`jqr  tj  rk  l	  z]&=lkuyz  |U  zV  Wz]fmkryz  |_  z`  az]&7mkryz  |_  z`  a{^lmkryz  |X  zY  Z~oN_kryz  |J  zK  L~&?jkryz  |@  zA  B~&Kjkryz  |g  zh  i~nnkryz  |h  zi  j&?lkryz  |N  zO  P&7N_kryz  |j  zk  l&:lkryz  |h  zi  jllkryz  |t  zu  v&7kkryz  |t  zu  v&7hkryz  |t  zu  voNgkryz  |t  zu  vggkryz  |t  zu  v&?N`kryz  |u  zv  w{^knkuyz  |a  zb  c{^&7nkuyz  |a  zb  c"#&>lkryz  |g  zh  iwZmNekuyz  |j  zk  l&ANikryz  |d  ze  f/ 8 &?Ngkryz  |z  z{  |&7jkryz  |t  zu  v 1!q1M aB 1!4	
 aa8 aaP 1!4 AA6 aB 11C !3 !!1E QQ7 1qAq^_` 1!B  QAC!" q1#(	 	 	
  )  	 1 1 	  1 1 /  /!" #$ %$')!,,19@x	 x	t z$%	*	*	*	,B	###B'###%F-&--e45\FFMM&--0
JJsxx r    