
    Tg	                    `   d dl Z d dlZd dlZd dl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Zd dlm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mZmZm Z  d dl!Z!d d
l"m#Z# d dl"m$Z$ d dl%Z%d dl&Z&d dl'Z'd dl(m)Z)m*Z* d dl+Z+d dl,m-Z- d dlm.Z. e.dz  Z/dZ0dZ1d Z2dZ3dZ4dZ5dZ6 ejn                         d k(  r e8d        e jr                  d       dZ:dZ; ejx                  e:e;        ejx                  e:e;        ejz                  e:       ej                  Z>d dl?Z? e?j~                  d       ej                  j                         j                  d       i ZCdeCd<   deCd<   deCd<   d eCd!<   d"eCd#<   d$eCd%<    e>d&      eCd'<    e>d(      eCd)<    e>d&      eCd*<   d+eCd,<   d-eCd.<   d/eCd0<   d1eCd2<   d3eCd4<   d5eCd6<   d7eCd8<   d9eCd:<   d;eCd<<   d=eCd><   d?eCd@<   ej                  j                  dA      ZF eGej                  j                  eFdB            5 ZH ej                  eH      ZJddd       eJdC   ZK eLdD eKj                         D              ZNdEZOej                  j                  eO      ZQeQj                          dFZSeSdFz  ZTdG ZU G dH dIej                        ZW G dJ dKej                        ZY G dL dMej                        Z[ G dN dOej                        Z] G dP dQej                        Z_ G dR dSej                        Z` G dT dUej                        Za G dV dW      Zb G dX dY      Zc G dZ d[ej                        Zd G d\ d]ej                        Zf G d^ d_ej                        Zg G d` daej                        Ziejdbk(  rl ej                  dce+j                  z         ej                  j                  dd      deej                  dd<    eg       Zoeoj                  e j                         yy# 1 sw Y   xY w)f    N)datetime)Path)
attrgetterGtkz3.0XAppz1.0)r   Gdk	GdkPixbufGObjectGLibGior   Pango)	installer)dialogs)print_timingnetworking_available)ScreenshotWindow)pi                    zKThe software manager should not be run as root. Please run it in user mode.mintinstallz/usr/share/linuxmint/localez /usr/share/linuxmint/mintinstallSpotifyzspotify-clientSteamzsteam-installer	Minecraftzminecraft-launcherzVirtualbox zvirtualbox-qtzVirtualbox (base)
virtualboxSublimezsublime-textzMultimedia Codecszmint-meta-codecszMultimedia Codecs for KDEzmint-meta-codecs-kdezmint-meta-debian-codecsFirefoxfirefoxVLCvlcMpvmpvGimpgimpz
GNOME Mapsz
gnome-mapsThunderbirdthunderbirdzPIA Managerzpia-managerSkypeskypeforlinuxzGoogle Earthzgoogle-earth-pro-stableWhatsAppzwhatsapp-desktopWinezwine-installerz/usr/lib/linuxmint/mintinstallzapt_flatpak_match_data.infoapt_flatpak_matchesc              #   *   K   | ]  \  }}||f  y wN ).0kvs      -/usr/lib/linuxmint/mintinstall/mintinstall.py	<genexpr>r7   i   s     ;SQq1a&;s   z6/usr/share/linuxmint/mintinstall/mintinstall.gresourcei  c                     | dk(  ry| dt         z  kD  r| t         z  t         z  } n| t        kD  r| t        z  t        z  } t        j                  |       j	                  dd      }|S )Nr       z.0)MBKBr   format_sizereplace)size	formatteds     r6   get_size_for_displayrA   r   s]    qyq2v
b 	
b   &..tR8I    c                       e Zd Zd ZddZy)NonScrollingComboBoxc                 H    t         j                  j                  | |d       y )N$   )	cell_areaheight_request)r   ComboBox__init__)selfareas     r6   rJ   zNonScrollingComboBox.__init__   s    dd2FrB   Nc                 D    t         j                  j                  | |       y r1   )r   Widgetdo_scroll_event)rK   eventdatas      r6   rO   z$NonScrollingComboBox.do_scroll_event   s     	

""4/rB   r1   )__name__
__module____qualname__rJ   rO   r2   rB   r6   rD   rD   ~   s    G0rB   rD   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)HeadingMenuItemc                    t        j                  j                  | g|i | | j                         }t	        |t         j
                        r4|j                  d       |j                  d|j                         z         y y )NT	<b>%s</b>)	r   MenuItemrJ   	get_child
isinstanceLabelset_use_markup
set_markup	get_label)rK   argskargslabels       r6   rJ   zHeadingMenuItem.__init__   se    d3T3U3 ucii(  &[5??+<<= )rB   c                 "    t         j                  S r1   r   
EVENT_STOPrK   rP   s     r6   do_button_press_eventz%HeadingMenuItem.do_button_press_event       ~~rB   c                 "    t         j                  S r1   rd   rf   s     r6   do_button_release_eventz'HeadingMenuItem.do_button_release_event   rh   rB   c                 "    t         j                  S r1   rd   rf   s     r6   do_key_press_eventz"HeadingMenuItem.do_key_press_event   rh   rB   c                 "    t         j                  S r1   rd   rf   s     r6   do_key_release_eventz$HeadingMenuItem.do_key_release_event   rh   rB   c                 "    t         j                  S r1   rd   rf   s     r6   do_enter_notify_eventz%HeadingMenuItem.do_enter_notify_event   rh   rB   N)	rR   rS   rT   rJ   rg   rj   rl   rn   rp   r2   rB   r6   rV   rV      s     >rB   rV   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd	dZ	y)
FlatpakAddonRowc                    t         j                  j                  |        t        j                  t         j                  j
                  ddddd      | _        | j                  | j                         || _        || _	        || _
        t        j                  ddd      | _        | j                  j                  | j                  ddd       t        j                  dd| j                  dt         j                  j                   d	      | _        | j"                  j%                  d
d       |j'                  | j"                         | j"                  j)                  d| j*                         | j                  j-                  | j"                  ddd       t        j                  t         j                  j.                  d      }| j                  j                  |ddd       t        j0                  d|j3                         z  ddd      }|j'                  |       |j                  |ddd       t        j0                  |j5                         dddd      }|j                  |ddd       | j                  j6                  j9                  | j                        s,| j"                  j;                          | j=                  d       y | j"                  j?                          | jA                          y )Nr   
   )orientationspacingmargin_start
margin_end
margin_topmargin_bottomT)activeno_show_allvisibleFr   r9   )rb   	sensitiveimagealways_show_imagevalignr|   d   clickedru   rv   rX           )rb   
use_markupxalign
selectable<   )rb   r   wrapmax_width_charsr   )!r   
ListBoxRowrJ   BoxOrientation
HORIZONTALboxaddappparent_pkginfoaddon_pkginfoSpinnerspinner
pack_startButtonAlignCENTERactionset_size_request
add_widgetconnectaction_clickedpack_endVERTICALr\   get_display_nameget_summaryr   pkginfo_is_installedhideset_sensitiveshowupdate_button)	rK   r   r   r   name_size_groupbutton_size_group	label_boxnamesummarys	            r6   rJ   zFlatpakAddonRow.__init__   s1   %77s'A'A1[]jlyz  KL  M,*{{$D$ODLL%:jjr+0'+||37(+		(8(8-13 	$$S"-$$T[[1It':':;$++ueQ7GG(@(@!L	IueQ7yy{]-K-K-MMZ^gjw{|""4(T5%3))-";";"=cPTfhuyzWeUA6xx!!66t7J7JKKKu%rB   c                    | j                   j                  j                  | j                        s| j                  j                  t        d             | j                  j                  d       | j                  j                         j                  d       | j                  j                         j                  d       | j                  j                          y | j                  j                  t        d             | j                  j                  d       | j                  j                         j                  d       | j                  j                         j                  d       | j                  j                          y )NAddTsuggested-actiondestructive-actionRemove)r   r   r   r   r   	set_label_r   get_style_context	add_classremove_classr   r   rK   s    r6   r   zFlatpakAddonRow.update_button   s    xx!!66t7I7IJKK!!!E(+KK%%d+KK))+556HIKK))+889MNLLKK!!!H+.KK%%d+KK))+556JKKK))+889KLLLrB   c                     | j                   j                  j                  |       | j                  j	                  d       | j                   j                          y Nr9   )r   r   execute_taskr   r   update_activity_widgetsrK   tasks     r6   
info_readyzFlatpakAddonRow.info_ready   s<    ''-b!((*rB   c                 h   || _         | j                  j                          | j                  j	                  d       | j                  j                  t        d             | j                  j                         j                  d       | j                  j                         j                  d       y )NFUnavailabler   r   )	r   r   r   r   r   r   r   r   r   r   s     r6   
info_errorzFlatpakAddonRow.info_error   sz    	!!%(a./%%'445GH%%'445IJrB   c                     | j                   j                  j                  | j                  | j                  | j
                  | j                  | j                  d       y )NTuse_mainloop)r   r   select_pkginfor   r   r   installer_finishedinstaller_progressrK   widgets     r6   r   zFlatpakAddonRow.action_clicked   sH    ))$*<*<*.//4??*.*A*A4CZCZ7; 	* 	=rB   c                 X    | j                   j                          | j                          y r1   )r   r   r   r   s     r6   r   z"FlatpakAddonRow.installer_finished   s    ((*rB   Nc                 8    | j                   j                          y r1   )r   r   rK   pkginfoprogress
estimatingstatus_texts        r6   r   z"FlatpakAddonRow.installer_progress   s    rB   r1   )
rR   rS   rT   rJ   r   r   r   r   r   r   r2   rB   r6   rr   rr      s'    'R +
K=rB   rr   c                   6     e Zd Z fdZd Zd Zd Zd Z xZS )SaneProgressBarc                     t         t        j                  |   ddddt        j                  j
                  d       | j                  d| j                         d| _        y )Nr   r   r   T)width_requestrH   ry   hexpandr   r}   drawr   )	superr   DrawingArearJ   r   r   r   draw_barfractionrK   	__class__s    r6   rJ   zSaneProgressBar.__init__   sQ    coot-B=>9:6:58YY5E5E6: 	. 	< 	VT]]+rB   c                     | j                         }|j                  d      \  }| _        |s4t        j                         | _        | j                  j                  d       |j                  d      \  }| _        |s4t        j                         | _        | j                  j                  d       |j                  d      \  }| _        |s5t        j                         | _        | j                  j                  d       y y )Nfg_colorgreybg_colorwhiteborders_color)r   lookup_color
fill_colorr   RGBAparsetrough_colorborder_color)rK   contextrets      r6   update_colorszSaneProgressBar.update_colors   s    ((*&33J?T_!hhjDOOO!!&)!(!5!5j!AT #
D##G,!(!5!5o!FT #
D##F+ rB   c                    | j                          | j                         }|j                  t        j                         |j                          |j                  d       | j                  |dd|j                  dz
  |j                  dz
         |j                          t        j                  || j                         | j                  |dd|j                  dz
  |j                  dz
         |j                          t        j                  || j                         | j                  |dd|j                  | j                   z  dz   |j                  dz
         |j                          t        j                  || j"                         | j                  |dd|j                  dz
  |j                  dz
         |j%                          |j'                          y)Nr   r   i   T)r   get_allocationset_antialiascairoANTIALIAS_SUBPIXELsaveset_line_widthrounded_rectwidthheightclipr   cairo_set_source_rgbar   fillr   r   r   strokerestore)rK   r   cr
allocations       r6   r   zSaneProgressBar.draw_bar  sq   ((*

112
	
!"aJ$4$4q$8*:K:Ka:OP
	!!"d&7&78"aJ$4$4q$8*:K:Ka:OP
	!!"doo6"c1j&6&6&F&KZM^M^abMbc
	!!"d&7&78"aJ$4$4q$8*:K:Ka:OP
		


rB   c                    d}|j                          |j                  ||z   ||z   |dt        z  dt        z         |j                  ||z   |z
  ||z   |dt        z  dt        z         |j                  ||z   |z
  ||z   |z
  |dt        z  dt        z         |j                  ||z   ||z   |z
  |dt        z  dt        z         |j                          y )Nr   r   i  ir   Z   )new_sub_patharcDEGREES
close_path)rK   r   xyr   r   radiuss          r6   r   zSaneProgressBar.rounded_rect-  s    

q6z1v:vsW}cGmL
q5y6!1v:vsW}a'kR
q5y6!1v:#6GRRY\Z
q6z1v:.WcGmT
rB   c                 2    || _         | j                          y r1   )r   
queue_draw)rK   r   s     r6   set_fractionzSaneProgressBar.set_fraction6  s     rB   )	rR   rS   rT   rJ   r   r   r   r  __classcell__r   s   @r6   r   r      s    ,"8rB   r   c                        e Zd Z fdZ xZS )
BannerTilec	                 V   t         t        j                  |           || _        || _        || _        || _        || _        || _	        d| d| _
        d||dz  }	| j                  d       t        j                         }
|
j                  t        j                  |	             	 | j!                         j#                  |
t        j$                         t        j&                  d      }|j)                  |j+                                |j                  d       |j!                         j#                  |
t        j$                         t        j&                  d      }|j)                  |j-                                |j                  d	       |j!                         j#                  |
t        j$                         t        j.                  j1                  | j                        }t        j2                  t        j4                  j6                  d
t        j8                  j:                        }|j!                         j#                  |
t        j$                         |j=                  d       |j?                  |ddd       |j?                  |ddd       | j                  r$t        j2                  t        j4                  j@                  d      }|j!                         j#                  |
t        j$                         |j?                  t        j.                  jC                  dt        jD                  jF                        ddd       t        j&                  d      }|j                  d       |j!                         j#                  |
t        j$                         |j?                  |ddd       |j?                  |ddd       t        j2                  d      }|j?                  |ddd       |j?                  |ddd       |jI                          | jK                  |       || _&        y )Nz*/usr/share/linuxmint/mintinstall/featured/z.svga  
#BannerTile {
    background: %(background)s;
    color: %(color)s;
    padding: 12px;
    border-radius: 5px;
}
#BannerTitle {
    color: %(color)s;
    font-weight: bold;
    font-size: 48px;
    padding-top: 12px;
}
#BannerSummary {
    color: %(color)s;
    font-weight: normal;
    font-size: 16px;
    padding-top: 10px;
}
#BannerFlatpakLabel {
    font-weight: normal;
    font-size: 12px;
}
)
backgroundcolorr  r   r   BannerTitleBannerSummary   )ru   rv   halign   Fr   $mintinstall-package-flatpak-symbolicFlathubrb   BannerFlatpakLabel   )rv   T)'r   r   FlowBoxChildrJ   r   r   
is_flatpak	init_namer  r  	image_uriset_nameCssProviderload_from_datastrencoder   add_provider#STYLE_PROVIDER_PRIORITY_APPLICATIONr\   r   r   r   Imagenew_from_filer   r   r   r   STARTset_border_widthr   r   new_from_icon_nameIconSizeMENUshow_allr   r   )rK   r   r   r   r  r  r  app_jsonon_clicked_actioncssstyle_provider
label_namelabel_summaryr   vboxbox_flatpaklabel_flatpakhboxr   s                     r6   rJ   zBannerTile.__init__<  s'   c.0"$$
FtfDQ. .//2 	l#*%%cjjo6	( 	 --nc>e>efYYa(
W5578M*$$&33NCDkDkl		+ 3 3 56/'')66~sGnGno		''7ww3??#;#;RPSPYPYP_P_` --nc>e>efa 
E5!4ueQ7??''coo.H.HRSTK))+88IpIpq""399#?#?@fhkhththyhy#z  }B  DI  KL  MIII6M""#78++-::>3KrKrs""=%BOOKq9wwr"ueQ/dD!,rB   rR   rS   rT   rJ   r  r  s   @r6   r  r  ;  s    Q QrB   r  c                   8     e Zd Zd fd	Zd Zd Zd Zd Z xZS )PackageTilec                    t         t        |           t        j                         | _        | j
                  j                  d| j                         | j
                  j                  d       | j                  | j
                         || _
        || _        || _        || _        d| _        t        |j                         dkD  rAt        |j                         dk(  r|j                   d   | _        n|j                   d   | _        t        j"                  j%                  d      | _        | j&                  j)                  d      | _        | j
                  j                  | j*                         | j&                  j)                  d      | _        | j&                  j)                  d	      | _        | j&                  j)                  d
      | _        | j&                  j)                  d      | _        | j&                  j)                  d      | _        | j&                  j)                  d      | _        | j&                  j)                  d      | _        | j&                  j)                  d      | _        d | _        | j?                          y )Nr   Fr9   r   r   z-/com/linuxmint/mintinstall/package-tile.gladevertical_package_tileicon_holderpackage_labelpackage_summarypackage_type_boxpackage_type_emblempackage_type_nameinstalled_markverified_mark) r   r=  rJ   r   r   buttonr   _activate_fb_childset_can_focusr   r   r   review_infoshow_package_typepkg_categorylen
categoriesBuildernew_from_resourcebuilder
get_objectoverlayr@  rA  rB  rC  rD  rE  rF  rG  iconrepopulate_tile)rK   r   r   rL  rK  r   s        r6   rJ   zPackageTile.__init__  s   k4)+jjlIt'>'>?!!%("&!2w!!"Q&7%%&!+$+$6$6q$9!$+$6$6q$9! {{445de||../FG%<<22=A!\\44_E#||667HI $ 7 78J K#'<<#:#:;P#Q !%!8!89L!M"ll556FG!\\44_E	rB   c                    | j                   | j                   j                          | j                  j                  t        j
                        }|st        j                  }t	        j                  |t        j
                        | _         | j                  j                  | j                          | j                  j                         }| j                  j                  |       | j                  j                         }| j                  j                  |       | j                  re| j                  j                  j!                  d      rd }	 | j"                  j%                  | j                  j&                        }|r%| j(                  j                  |j*                         |=| j(                  j                  | j                  j&                  j-                                | j.                  j1                  dt2        j4                  j6                         | j8                  j;                          | j8                  j=                  t?        d             n4| j(                  jA                          | j.                  jA                          | j                  jB                  rQ| jD                  jG                  d      j;                          | jH                  rE| jK                  | jH                         n)| jD                  jG                  d      j;                          | jM                          | jO                          y #  Y xY w)Nfr  zThis package is a Flatpakreview_info_box
unsafe_box)(rU  destroyr   get_iconimagingFEATURED_ICON_SIZEFALLBACK_PACKAGE_ICON_PATHr@  r   r   rA  r   r   rB  rL  pkg_hash
startswithr   get_remote_info_for_nameremoterE  title
capitalizerD  set_from_icon_namer   r.  r/  rC  r   set_tooltip_textr   r   verifiedrR  rS  rK  fill_rating_widgetr0  refresh_state)rK   icon_stringdisplay_namer   remote_infos        r6   rV  zPackageTile.repopulate_tile  sK   99 IIll++G,F,FG!<<K$$['2L2LM	TYY'||446$$\2,,**,&&w/!!||$$//4""&.."I"I$,,J]J]"^K"..889J9JK &**44T\\5H5H5S5S5UV((;;<bdgdpdpduduv%%**,%%66q9T7UV&&++-((--/<<  LL##$56;;=''(8(89LL##L1668+s   AL= =Mc                 $    | j                          y r1   activater   s     r6   rI  zPackageTile._activate_fb_child      rB   c                    | j                   j                  | j                        | _        | j                  r5| j                  j                  dt        j                  j                         y | j                  j                          y )Nzmintinstall-installed)
r   r   r   	installedrF  rf  r   r.  r/  clearr   s    r6   rj  zPackageTile.refresh_state  sV    <<T\\J>>223JCLLL]L]^%%'rB   c                     t        |j                        }| j                  j                  d      }|j	                  |       y )Nnum_reviews_label)r%  
avg_ratingrR  rS  r   )rK   rK  ratingrv  s       r6   ri  zPackageTile.fill_rating_widget  s6    [++, LL334GH##F+rB   )FN)	rR   rS   rT   rJ   rV  rI  rj  ri  r  r  s   @r6   r=  r=    s    $L.`(,rB   r=  c                        e Zd Z fdZ xZS )
ReviewTilec                    t         t        j                  |           t        j                         }|j                  d       |j                  d       |j                  d       |j                  d       t        j                  t        j                  j                  d      }t        j                         }t        |      D ]L  }|j                  t        j                  j                  dt        j                  j                         ddd       N t        d|z
        D ]L  }|j                  t        j                  j                  dt        j                  j                         ddd       N |j                  |ddd       t        j"                  d	
      }	|	j%                  dt'        j(                  |      z         |j                  |	ddd       t        j"                  d	
      }
|
j%                  dt'        j(                  |      z         |j                  |
ddd       t        j"                  d	d      }|j+                  |       |j-                  d       t        j                  t        j                  j                        }|j                  d       |j                  |ddd       |j                  |ddd       |j                  |ddd       | j/                  |       y )Nr  r  r   starred-symbolicFr   r:   non-starred-symbolicr   r  z<small>%s</small>T)r   r   ru   )r   r   r   rJ   r   set_margin_startset_margin_endset_margin_topset_margin_bottomr   r   ranger   r)  r-  r.  r/  r\   r^   r   markup_escape_textr   set_line_wrapr   )rK   usernamedatecommentrx  main_boxratings_box	stars_boxir5  
label_datelabel_commentcomment_boxr   s                r6   rJ   zReviewTile.__init__  sG   cnnd,.779!!"%##""2&gg#//*B*BANGGI	v 	wA  !=!=>PRUR^R^RcRc!dfkmrtuv	wq6z" 	{A  !=!=>TVYVbVbVgVg!hjoqvxyz	{y%:YYc*
1D4K4KH4UUVz5%;YYc*
1D4K4KD4QQRz5%;		>(##D)gg#//*B*BC$$R(}eUA>Kq9KtQ7rB   r;  r  s   @r6   rz  rz    s    $ $rB   rz  c                       e Zd ZddZy)Categoryc                    || _         || _        || _        g | _        g | _        g | _        ||j                  j                  |        ||j                  |        | }|j                  |j                  }|j                  y y r1   )r   parent	icon_namesubcategoriespkginfosmatchingPackagesappend)rK   r   r  rO  r  cats         r6   rJ   zCategory.__init__  s    	" "  ''-!d#jj$**C jj$rB   N)r9   rR   rS   rT   rJ   r2   rB   r6   r  r    s    rB   r  c                       e Zd Zd Zy)SortPackagec                     || _         |j                  | _        |j                   | _        d| _        d| _        t        |d      r|j                  | _        y d| _        y )NFr   search_tier)pkgr   rh  
unverifiedrs  
score_deschasattrr  )rK   r  s     r6   rJ   zSortPackage.__init__.  sL    HH	!ll*.5c=.I3??qrB   Nr  r2   rB   r6   r  r  -  s    QrB   r  c                   &     e Zd Zd fd	Zd Z xZS )SubcategoryFlowboxChildc                    t         t        j                  |           || _        |j
                  }|j                  }|rt        d      }d}t        j                  |      | _	        | j                  j                  d| j                         t        j                  t        j                  j                  dt        j                  j                         }t        j"                  |t        j$                  j&                        }t        j(                  |      }|j+                  |d	d	d
       |j+                  |d	d	d
       |j-                          | j                  j/                  |       | j/                  | j                         y )NAllmintinstall-all-symbolicr{   r   r  ru   rv   r   r  	icon_sizer  Fr   )r   r   r  rJ   categoryr   r  r   ToggleButtonrH  r   rI  r   r   r   r   r   r)  r.  r/  r\   r   r0  r   )
rK   r  is_allr{   cat_namecat_iconr   r   rb   r   s
            r6   rJ   z SubcategoryFlowboxChild.__init__7  s   c.0 ==%%xH1H&&f5It'>'>?gg#//"<"<aPSPYPYP`P`a		H8I8IJ		)ueUA.ueUA.rB   c                 $    | j                          y r1   ro  r   s     r6   rI  z*SubcategoryFlowboxChild._activate_fb_childQ  rq  rB   )FF)rR   rS   rT   rJ   rI  r  r  s   @r6   r  r  6  s    4rB   r  c                        e Zd Z fdZ xZS )CategoryButtonc                 d   t         t        j                  |           || _        | j                  d       | j                  d       t        j                  t        j                  j                  dt        j                  j                        }t        j                  |j                  t        j                  j                        }t        j                   |j"                        }|j%                  |ddd       |j%                  |ddd       |j'                          | j)                  |       y )NFTr  r  r  r  r   )r   r   r   rJ   r  rJ  set_hexpandr   r   r   r   r   r)  r  r.  r/  r\   r   r   r0  r   )rK   r  r   r   rb   r   s        r6   rJ   zCategoryButton.__init__U  s    cjj$(* 5!gg#//"<"<aPSPYPYP`P`a		H$6$6#,,BSBST		.ueUA.ueUA.rB   r;  r  s   @r6   r  r  T  s     rB   r  c                   j    e Zd Z e ed            \  ZZZdZdZ	dZ
dZdZdZdZ fd	Zed
        Zd ZdudZd Zd Zd ZdvdZdudZd Zd Zd Zd ZdudZdudZd Zd Z d Z!ed        Z"d Z#d Z$d Z%d Z&d  Z'd! Z(ed"        Z)ed#        Z*ed$        Z+dud%Z,d& Z-d' Z.d( Z/d) Z0d* Z1d+ Z2d, Z3d- Z4d. Z5d/ Z6d0 Z7d1 Z8d2 Z9dud3Z:d4 Z;d5 Z<d6 Z=d7 Z>d8 Z?d9 Z@d: ZAd; ZBd< ZCd= ZDd> ZEd? ZFd@ ZGdA ZHdB ZIdC ZJdwdDZKdudEZLdF ZMdG ZNdH ZOedI        ZPdJ ZQdK ZRdL ZSedM        ZTedN        ZUdO ZVdP ZWdQ ZXdR ZYdS ZZdT Z[dU Z\dV Z]dW Z^dX Z_dY Z`dudZZad[ Zbd\ Zced]        Zdd^ Zed_ Zfdud`Zgda Zhdb Zidc Zjedd        ZkdwdeZldf ZmdudgZndh Zoedi        Zpdj Zqdk Zrdl Zsdm Ztdn Zudo ZvdudpZwdq Zxdr Zyds Zzdt Z{ xZ|S )xApplicationr   landinglistdetailsloading	searchinggenerating_cacheprefsc                    t         t        |   dt        j                  j
                  t        j                  j                  z         d| _        t        j                         | _	        | j                         | _        t        j                  d      | _        t        j                         | _        t#        d| j                   z         t%        j&                  d      | _        | j(                  d| _        n#| j(                  j+                  d	      d
   | _        t-        j.                         | _        | j,                  j1                  d| j2                         d | _        d | _        d| _        d | _        d | _        d | _        d | _         i | _!        g | _"        g | _#        d
| _$        d
| _%        d
| _&        d
| _'        d
| _(        d
| _)        d | _*        g | _+        | jY                          d | _-        y )Nzcom.linuxmint.mintinstall)application_idflagsFzcom.linuxmint.install)	schema_idz/MintInstall: Detected system architecture: '%s'LANGUAGECr   r   zappstream-changed).r   r  rJ   r   ApplicationFlagsHANDLES_OPENHANDLES_COMMAND_LINE	gui_readytime
start_timeget_low_res_screenlow_resSettingssettingsplatformmachinearchprintosgetenvlocalesplitr   	Installerr   on_appstream_changedtask_cancellablecurrent_taskrecursion_busterinstall_on_startup_filereview_cachecurrent_pkginfocurrent_categoryflatpak_remote_categoriespicks_tilescategory_tilesone_package_idle_timerinstaller_pulse_timersearch_changed_timersearch_idle_timeraction_button_signal_idlaunch_button_signal_idbanner_app_namefeatured_app_namesadd_categoriesmain_windowr   s    r6   rJ   zApplication.__init__q  s   k4)9T030D0D0Q0QTWThThT}T}0} 	* 	 ))+..0/FG$$&	?$))KLii
+;;DK++++C03DK",,.2D4M4MN $  %'+$ # $)+& &'#%&"$%!!"'($'($#"$rB   c                 >   | j                   w| j                  | j                         | j                  | j                          | j	                          t        j                  | j                  g       }|j                          | j                   j                          y )N)targetr`   )
r  create_windowPAGE_LOADING
add_windowupdate_conditional_widgets	threadingThread_init_installer_threadstartpresent)rK   ts     r6   do_activatezApplication.do_activate  ss    #t001OOD,,-++-  (C(C"MAGGI  "rB   c                    | j                   j                         r t        j                  | j                         y | j
                  j                  | j                         | j                   j                  | j                         y r1   )	r   	init_syncr   idle_addon_installer_ready
page_stackset_visible_child_namePAGE_GENERATING_CACHEinitr   s    r6   r  z"Application._init_installer_thread  sT    >>##%MM$112OO2243M3MNNN 7 78rB   c                    t         j                  j                  | |       |j                         }t	        |      }|dkD  r/|d   dk(  r't        j                  | j                  d             n|dkD  r.|d   dk(  r&t        j                  | j                  d             n|dk(  r|d   dk(  rt        j                  j                  t        j                  j                  fD ]C  } ||d	         }|j                  d       s | j                  |gd
       | j                           y t        d|d	          t        j                  d       n)|dkD  r$t        d|dd         t        j                  d       | j                          y)Nr   r  F)flatpak_onlyzlist-flatpakTr   installr   r9   r   zMintInstall: file not foundzMintInstall: Unknown arguments)r   r  do_command_lineget_argumentsrN  sysexitexport_listingr   Filenew_for_pathnew_for_uriquery_existsopenrp  r  )rK   command_linerQ   r`   num
try_methodfiles          r6   r  zApplication.do_command_line  sB   ''l;))+$i7tAw&(HHT((e(<=1WaN2HHT((d(;<AX$q'Y."xx44chh6J6JK 
!$q'*$$T*IItfb)MMO /a9HHQK1W2DH=HHQKrB   c                 Z    | j                   r| j                  |d          y |d   | _        y Nr   )r  handle_command_line_installr  )rK   filesr  hints       r6   do_openzApplication.do_open  s'    >>,,U1X6+08D(rB   c           	      P   |j                         j                  d      r| j                  j                         rt	        j
                  | j                  t        j                  j                  t        j                  j                  t        j                  j                  t        d            }|j                         }|j                          y | j!                  |       y |j                         j                  d      r'| j                  j#                  || j$                         y y )Nz.flatpakrepoz_Cannot process this file while there are active operations.
Please try again after they finish.z.flatpakref)get_pathendswithr   is_busyr   MessageDialogr  DialogFlagsMODALMessageTypeWARNINGButtonsTypeOKr   runr[  start_add_new_flatpak_remoteget_pkginfo_from_ref_fileon_pkginfo_from_uri_complete)rK   r  dialogress       r6   r  z'Application.handle_command_line_install  s    ==?##N3~~%%'**4+;+;+.??+@+@+.??+B+B+.??+=+=+,  .P  ,Q	R
 jjl --d3]]_%%m4NN44T4;\;\] 5rB   c                     | j                   j                  | j                         | j                  j	                  || j
                         y r1   )r  r  r   r   add_remote_from_repo_fileadd_new_flatpak_remote_finished)rK   r  s     r6   r%  z(Application.start_add_new_flatpak_remote  s4    ..t/I/IJ00t7[7[\rB   c           	      @   |r|dk(  rt        j                  | j                  t         j                  j                  t         j
                  j                  t         j                  j                  t        d            }|j                         }|j                          n:|dk(  rt        j                  | j                  t         j                  j                  t         j
                  j                  t         j                  j                  t        d            }|j                         }|j                          n|dk(  rt        j                  | j                  t         j                  j                  t         j
                  j                  t         j                  j                  t        d            }|j                         }|j                          n|dk(  r	 | j                          y | j                          | j                  j!                  | j"                         y )Nexistsz6The Flatpak repo you are trying to add already exists.errorz5An error occurred attempting to add the Flatpak repo.no-flatpak-supportzCFlatpak support is not currently available. Try installing flatpak.cancel)r   r  r  r  r  r   r!  r"  r#  r   r$  r[  ERRORfinish_loading_visualr  r   r  r  )rK   r  r/  r(  r)  s        r6   r,  z+Application.add_new_flatpak_remote_finished  s|    **4+;+;+.??+@+@+.??+B+B+.??+=+=+,-e+f	h
 jjl '!**4+;+;+.??+@+@+.??+@+@+.??+=+=+,-d+e	g
 jjl ..**4+;+;+.??+@+@+.??+@+@+.??+=+=+,-r+s	u
 jjl ("&&(D334rB   c           	         |r|dk(  rt        j                  | j                  t         j                  j                  t         j
                  j                  t         j                  j                  t        d            }|j                         }|j                          | j                          y |r| j                  || j                         y y )Nr0  zZFlatpak support is not currently available. Try installing flatpak and gir1.2-flatpak-1.0.)r   r  r  r  r  r   r2  r"  r#  r   r$  r[  r3  show_packagePAGE_LANDING)rK   r   r/  r(  r)  s        r6   r'  z(Application.on_pkginfo_from_uri_complete  s    ,,**4+;+;+.??+@+@+.??+@+@+.??+=+=+,  .J  ,K	L
 jjl **,gt'8'89 rB   c                 L   t         j                  j                         }|j                         j	                         }d}|rP|j                         }|j                  |j                  |j                        }|j                         j                  }|dk  rt        d|z         yy)Ni'     zKMintInstall: low resolution detected (%dpx height), limiting window height.TF)r   Displayget_defaultget_default_seatget_pointerget_positionget_monitor_at_pointr  r  get_geometryr   r  )rK   displaypointerr   positionmonitors         r6   r  zApplication.get_low_res_screen   s    ++))+**,88:++-H228::xzzJG))+22F C<_cijkrB   c                 V!   | j                   t        d       y d}t        j                  j	                  d      | _        | j
                  j                  d      | _         | j                   j                  t        d             t        j                  t        d             | j                   j                  d       | j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d	| j                         t!        j"                         | _        | j$                  j'                          | j
                  j                  d
      j)                  | j$                         | j
                  j                  d      | _        | j
                  j                  d      | _        | j
                  j                  d      | _        | j
                  j                  d      | _        | j
                  j                  d      | _        | j
                  j                  d      | _        | j
                  j                  d      | _        | j
                  j                  d      | _        | j
                  j                  d      | _        | j
                  j                  d      | _        | j<                  j                  d| j>                         tA               | _!        | j.                  jE                  | jB                  ddd       | jB                  j'                          | j
                  j                  d      }dNd}|jG                  |d        t        jH                         }t        jJ                  t        d            | _&        | jL                  j                  d| jN                         | jL                  j'                          |jQ                  | jL                         t        jR                         }|j'                          |jQ                  |       t        jJ                  t        d            | _*        | jT                  j                  d| j>                         | jT                  j'                          | jT                  jW                  d       |jQ                  | jT                         t        jJ                  t        d            }|j                  d| jX                         |j'                          |jQ                  |       t        jJ                  t        d            | _-        | jZ                  j                  d| j\                         | jZ                  j'                          | jZ                  jW                  d        |jQ                  | jZ                         t        jR                         }|j'                          |jQ                  |       t        jJ                  t        d!            }|j                  d| j^                         |j'                          |jQ                  |       | j
                  j                  d"      }	|	j                  d| j`                  |       t        jb                         }
|
je                  d#       |
jg                  d$       |
ji                  d       |
jk                  d       |
jm                  d        |
j                  d%| jn                  | jp                         |
j                  d&| jr                  | j
                  j                  d'             |
| _:        | j
                  j                  d(      }| j
                  j                  d)      }|jE                  tw        jx                  |      d d d       | j
                  j                  d*      }|j)                  | jt                         | j
                  j                  d+      | _=        | jz                  j                  d| j|                         | j~                  | _@        | jz                  jW                  d       | j
                  j                  d,      | _A        | j                  j                  d-| j                         | j                  j                  d| j                         | j
                  j                  d.      | _D        | j                  j                  | j                  j                  tv        j                               | j                  j                  d/| j                         | j6                  j                  d| j                         | j                          | j
                  j                  d0      | _L        | j                  j                  |       | j
                  j                  d1      | _N        | j                  jG                  |d        | j
                  j                  d2      | _O        | j
                  j                  d3      | _P        t        j                  j                  d d | j
                  j                  d4      | j
                  j                  d5      f      | _T        t        j                  j                  dd | j
                  j                  d6      | j
                  j                  d7      g      | _U        | j
                  j                  d8      | _V        d | _W        d | _X        d | _Y        d | _Z        d | _[        d| _\        t        j                  t        t        t        t        t              | _a        t        j                  t        j                  j                  d9:      }t        j                  t        j                  j                  ;      }|jE                  |ddd        |j                  |d<t               t        j                  d=>      }|jE                  |ddd        |j                  |d?t               t        |      | _m        | j                  j                  | j                         | j                  j                          | j
                  j                  d@      | _p        | j                  jE                  | j                  d d d       | j
                  j                  dA      | _q        | j
                  j                  dB      | _r        | j
                  j                  dC      | _s        | j
                  j                  dD      }g | _t        t        dEddF      D ]?  }t               }|j                  |dG|dGz
  dGdG       | j                  jQ                  |       A | j
                  j                  dH      | _x        | j                  j                  dI| j                         t        j                  j                  t        j                  j                         dJ      | _        d | _        | j
                  j                  d6      j                  d| j                  t        j                  j                         | j
                  j                  d7      j                  d| j                  t        j                  j                         t        j
                  j                  | j                        | _        | j                  j                  dK| j                  | j                         | j                  j                  t        j                  j                         | j                   j                  d| j                         | j                  j                          | j
                  j                  dL      }t        jb                  d M      | _        | j                  je                  dG       | j                  jg                  d9       | j                  ji                  d       | j                  jk                  d       |jE                  | j                  d d d       | j                  j                  d%| j                         y )ONz:MintInstall: create_window called, but we already had one!z2/usr/share/linuxmint/mintinstall/mintinstall.gladez,/com/linuxmint/mintinstall/mintinstall.glader  Software Managerr   delete_eventzkey-press-eventzbutton-press-eventapplication_icon_holderlabel_ongoingprogressbar1progress_boxaction_buttonlaunch_buttonrZ  active_tasks_buttonactive_tasks_spinnerno_packages_found_label no_packages_found_refresh_buttonr   Fr   box_reviewsc                     |rO| j                         s>| j                  t        j                  t        j                  j
                               y y y )Nr~  )
get_header
set_headerr   	Separatorr   r   )rowbefore	user_datas      r6   list_header_funcz3Application.create_window.<locals>.list_header_func]  s4    cnn.s}}9S9STU /vrB   zShow installed applicationsr  rp  zRefresh the list of packageszSoftware sourcesPreferencesTAboutmenu_buttonr   rt   child-activatedselected-children-changedscrolledwindow_applications	box_prefsbox_unverified_warningbox_cat_pageback_buttonsearch_entrychangedsubsearch_toggletoggledr  
box_addonspackage_details_listboxapp_list_stack
branch_row
remote_rowprevious_ss_buttonnext_ss_buttonsearch_tool_itemr   r   )
stock_sizez	icon-namer   r  textpackage_type_combo_containersingle_version_package_type_box single_version_package_type_icon!single_version_package_type_labelreview_breakdown_gridr:   r   r   screenshot_stackznotify::visible-childrA  swipebox_subcategories)homogeneousr1   )r  r  r   rP  rQ  rR  rS  	set_titler   r   set_application_nameset_icon_namer   close_applicationon_keypresson_buttonpressr]  
AsyncImagedetail_view_iconr   r   status_labelprogressbarrJ  rK  rL  rZ  rM  rN  rO  rP  on_refresh_cache_clickedDottedProgressLabelprogress_labelr   set_header_funcMenurY   installed_menuitemshow_installed_appsr  SeparatorMenuItemrefresh_cache_menuitemr   open_software_sourcesprefs_menuitemon_prefs_clicked
open_abouton_menu_button_clickedFlowBoxset_min_children_per_lineset_max_children_per_lineset_row_spacingset_column_spacingset_homogeneouson_app_row_activated	PAGE_LISTnavigate_flowboxflowbox_applicationsr  PrefsWidgetrc  on_back_button_clickedr6  previous_pagesearchentryon_entry_text_changedon_search_entry_activatedrf  
set_activer  get_booleanSEARCH_IN_CATEGORYon_subsearch_toggledon_active_tasks_button_clickedr   r  r  addons_listboxri  rj  r   VisibilityGroupnewflatpak_details_vgroupscreenshot_controls_vgroupro  flowbox_featuredflowbox_top_ratedbanner_tilebanner_dot_boxbanner_stackbanner_slideshow_timeout_id	ListStoreintr%  objectpackage_type_storeCellAreaBoxr   r   CellRendererPixbufr.  BUTTONadd_attributePACKAGE_TYPE_COMBO_ICON_NAMECellRendererTextPACKAGE_TYPE_COMBO_LABELrD   package_type_combo	set_modelr0  rr  rs  rt  ru  	star_barsr  r   attachrw  on_screenshot_shownr   Cursornew_from_namer9  r:  select_cursorscreenshot_windownavigate_screenshotDirectionTypeTAB_BACKWARDTAB_FORWARDGestureSwipess_swipe_handlerscreenshot_stack_swipedset_propagation_phasePropagationPhaseNONEon_window_key_press
grab_focussubcat_flowboxon_subcategory_selected)rK   starting_page
glade_filerQ  rY  submenu	separatorsoftware_sources_menuitemabout_menuitemr\  flowboxr   warning_boxcellrv  r  bars                    r6   r  zApplication.create_window3  sL   'NO J
{{445cd<<22=A""1%7#89!!!$6"78&&}5  1G1GH  !2D4D4DE  !5t7J7JK ' 2 2 4""$ 9:>>t?T?TU LL33OD<<22>B LL33NC!\\44_E!\\44_E,,11,?#'<<#:#:;P#Q $(LL$;$;<R$S!'+||'>'>?X'Y$040G0GHj0k---55iA^A^_13$$T%8%8%J  "ll--m<	V 	##$4d; ((*"%,,Q7T5U"V''
D4L4LM$$&t../))+	y!&)ll;Y9Z&[###++J8U8UV##((*##11%8t223$'LLq9K7L$M!!))*d6P6PQ!&&(01!ll=1AB##J0E0EF  "))$/t**+))+	y!AgJ7z4??;~&ll--m<It'B'BGL++-))!,))"-"""1%%)4+D+DdnnU3T5J5JDLLLcLc  eB  MC  	D$+!ll%%k2ll--.FGu((5tT1Ell%%n5))*<<22=A  D,G,GH!..&&u-<<22>B  D,F,FG  T-K-KL $ 7 78J K(()B)B5C[C[)\]%%i1J1JK  ((D4W4WX$$&,,11,?..}="ll55lC++,<dC'+||'>'>?X'Y$"ll556FG&*&:&:&>&>tT''5''5'
# +/*>*>*B*B5$''(<=''(89+
' !% 7 78J K $!%" +,("%--S#sF"Koo#//*D*DaP%%1D1DEtUE40$-IJ##3/tUED1$(@A"6s";))$*A*AB((*,0LL,C,CDb,c)))44T5L5LdTXZ[\/3||/F/FGh/i,040G0GHj0k-151H1HIl1m. $ 7 78O Pq!R 	'A!#C!((aQ1=NN!!#&	'
 !% 7 78J K%%&=t?W?WX ZZ55ckk6M6M6OQZ[!% 45==iIaIacfctct  dB  dB  	C 0199)TE]E]_b_p_p_|_|} # 0 0 4 4T5J5J K%%gt/K/KTMbMbc33C4H4H4M4MN 	  !2D4L4LM##%ll%%&9:!kkd;55a855a8++A...q1t**D$:##$5t7S7STrB   c                     | j                   j                  d       | j                  j                  | j                         | j
                  j                  | j                         y NF)r  r   r  r  r   r   force_new_cache_on_refresh_cache_completer   s    r6   refresh_cachezApplication.refresh_cache  sF    ##11%8..t/I/IJ&&t'F'FGrB   c                 n    | j                          | j                  j                  | j                         y r1   )r  r   r  r  r   s    r6   r  z&Application._on_refresh_cache_complete  s&    D334rB   c                     | j                   | _        | j                  j                  d       | j                  j                  d       | j
                  j                  | j                         y )NFT)r6  r  ro  r   rc  r  r  
PAGE_PREFSrK   r   rQ   s      r6   r  zApplication.on_prefs_clicked  sN    !..++E2&&t,..t?rB   c                 $    | j                          y r1   )r  r  s      r6   r  z$Application.on_refresh_cache_clicked  s    rB   c                     | j                   D ]  }|j                           | j                  | j                  j                          y y r1   )r  rV  r  )rK   r   tiles      r6   r  z Application.on_appstream_changed  sF    $$ 	#D  "	#',,. (rB   c                 L   | j                   j                  | j                         	 | j                          | j	                          t        j                         | _        | j                  j                  d| j                         | j                          | j                          | j                          | j                          t        j                  | j                         t        j                  | j                          t#        j$                          | j&                  j)                  d       | j+                          y # t,        $ rV}t/        d|z         t1        j2                  |j4                         t        j                  | j6                         Y d }~y d }~ww xY w)Nzreviews-updatedTzLoading error: %s)r  r  r  process_matching_packagesapply_aliasesreviewsReviewCacher  r   load_landing_appsload_categories_on_landingsync_installed_appsr  r   r  finished_loading_packagesprocess_unmatched_packageshousekeepingr$  r  r   print_startup_time	Exceptionr  	tracebackprint_tb__traceback__r  )rK   es     r6   r  zApplication.on_installer_ready  s,   ..t/@/@A	.**,  ' 3 3 5D%%&79O9OP""$++-$$&++-MM$889 MM$99:''55d;##% 	.%)*q/MM$,,--	.s   DE 	F#AFF#c                 j    t        j                          }t        d|| j                  z
  dz  fz         y )Nz!Mintinstall startup took %0.3f msg     @@)r  r  r  )rK   end_times     r6   r  zApplication.print_startup_time<  s-    99;1h6PTZ5Z4\\]rB   c                 
   | j                   j                  d      }| j                  r-|j                          | j                  j                  dd       y |j                         D ]  }|j                           t        j                         }|j                  |ddd       t        j                         | _        | j                  j                  t        j                  j                         | j                  j!                  t"               |j%                  | j                         t        j&                  t        j(                  j*                  t        j,                  j.                  t        j,                  j0                        | _        |j5                  | j2                         t7        j8                  t;        dd            }t=        j>                  |       tA               }d}|D ]T  }|d	k\  r nL|d
   }|d   }	|d   }
||v r |jC                  d      rN|jE                  dd      }| jF                  jI                  |tF        jJ                        }||jL                  s|d}n,| jF                  jI                  |tF        jN                        }d}||j%                  |       |dz  }t        jP                         }|jS                  d       |jU                  d       |jW                  d       |jY                  d       |j[                  d       |j]                  d| j^                  | j`                         tc        || jF                  ||	|
||| jd                        }|jg                  |d       |ji                          | j                  jk                  |tm        to        | j                  j                                            t        jp                  js                  dt        jt                  jv                        }|jy                  d	       d}t        jz                         }|j}                  tl        j                  |             t        j                  t        j,                  j.                  t        j,                  j0                  dt        j                  j                  d|      }|j                         j                  |t        j                         |j]                  d| j                  to        | j                  j                               dz
         | j2                  j                  |ddd       W | j                  d       |ji                          y )N
box_bannerr8  r   Tr   )ru   r  r   z7/usr/share/linuxmint/mintinstall/featured/featured.jsonrr:   r   r  
text_colorflatpak:r9   Fr   r]  r   mintinstall-banner-dota  
                #BannerDotOverlay {
                    background-color: rgba(0, 0, 0, 0);
                    background-image: none;
                    border-color: rgba(0, 0, 0, 0);
                    min-height: 12px;
                    min-width: 22px;
                    -gtk-icon-shadow: none;
                    -gtk-icon-effect: none;
                    box-shadow: none;
                }
            BannerDotOverlay)r  r   r   relief	can_focusr   r   )HrR  rS  r  r   r  set_default_sizeget_childrenr[  r   Overlayr   Stackr  set_transition_typeStackTransitionTypeSLIDE_LEFT_RIGHTset_transition_durationBANNER_TIMERr   r   r   r   r   r   ENDr  add_overlayjsonloadr  randomshufflesetra  r>   r   find_pkginfoPKG_TYPE_FLATPAKrh  PKG_TYPE_APTr  r  r  r  r  r  r   on_flowbox_child_activatedr6  r  on_banner_clickedinsertr0  	add_namedr%  rN  r)  r-  r.  r/  set_pixel_sizer#  r$  r&  r   ReliefStyler  r   r'  r(  on_dot_clickedupdate_dot_buttons)rK   r   childrT  
json_arrayselected_appsnum_selectedr1  r   r  r  r   r  r  r  rU  button_class_overrideprovider
dot_buttons                      r6   load_bannerzApplication.load_banner@  s"   ll%%l3<<HHJ --c37%%' 	EMMO	 ++-wdA.IIK--c.E.E.V.VW11,?D%%&!gg#//2L2L!$!1!1!$0 	D//0YYt$]_bcd
z"" H	HHq F#D!,/J\*E}$z*||J3..55dI<V<VW?'*:*:!
..55dI<R<RS"
d#ALkkmG--a0--a0##A&&&q)##D)OO-t/N/NPTPaPabgt~~tZPZ\dfjf|f|}DNN4$''S9J9J9W9W9Y5Z1[\99//0H#,,J[J[\D"%! (H##CJJ/D$EFyy''yy}}'++J ((*77#BiBijy$*=*=s4CTCTCaCaCc?dgh?hi**:ueQGQH	HT 	"rB   c                     | j                          | j                  j                  t        |             | j	                  |       y r1   )start_slideshow_timerr  r  r%  r!  )rK   rH  indexs      r6   r   zApplication.on_dot_clicked  s4    ""$00U<&rB   c                     | j                   ry | j                          t        j                  d| j                        | _        y )Nr:   )r  stop_slideshow_timerr   timeout_add_secondson_slideshow_timeoutr  r   s    r6   r+  z!Application.start_slideshow_timer  s3    <<!!#+/+C+CAtG`G`+a(rB   c                     | j                   ry | j                  dkD  r't        j                  | j                         d| _        y y r  )r  r  r   source_remover   s    r6   r.  z Application.stop_slideshow_timer  s;    <<++a/t??@/0D, 0rB   c                 F   | j                   j                         }| j                   j                         j                  |      }|dz   t	        | j                   j                               z  }| j                   j                  t        |             | j                  |       y)Nr   T)r  get_visible_childr  r,  rN  r  r%  r!  )rK   visible_childr,  	new_indexs       r6   r0  z Application.on_slideshow_timeout  s    ));;=!!..066}EQY#d&7&7&D&D&F"GG	00Y@	*rB   c                    t        | j                  j                               D ]  \  }}||k(  r[t        j                  j                  dt        j                  j                        }|j                  d       |j                  |       ft        j                  j                  dt        j                  j                        }|j                  d       |j                  |        y )Nr  rt   r:   )
	enumerater  r  r   r)  r-  r.  r/  r  	set_image)rK   current_indexr  rH  rU  s        r6   r!  zApplication.update_dot_buttons  s    "4#6#6#C#C#EF 	'IAvM!yy334LcllN_N_`##B'  &yy334LcllN_N_`##A&  &	'rB   c                 <    | j                  || j                         y r1   )r5  r6  rK   rH  r   s      r6   r  zApplication.on_banner_clicked  s    '4#4#45rB   c                    | j                   j                  d      }| j                   j                  d      }|j                  t        d             |j	                          | j
                  t        j                         }|j                  d       |j                  d       |j                  d       |j                  d       |j                  d       |j                  d| j                  | j                         |j                  d| j                   | j                   j                  d	             || _        |j#                  |       | j
                  D ]  }|j%                           g }| j&                  j(                  | j*                  j(                  z   D ]  }|j,                  d
k(  s|j,                  j/                  d      s.|j0                  s;|j2                  | j4                  k7  sU|j2                  | j6                  vsn|j9                  t:        j<                        |j?                  |        | jA                  |tC        ddd            }|dd }tE        jF                  |       t        jH                  t        jJ                  jL                        }|D ]  }| jN                  r&|j0                  r| jN                  |j2                     }	nd }	tQ        || jR                  d|	      }
|jU                  |
       | j
                  jW                  |
d       | jX                  j?                  |
        |j[                          y )Nbox_top_ratedlabel_top_ratedz	Top Ratedr   r   Fr]  r^  scrolledwindow_landingr9   r   rs  r  r      modeTrL  rK  r   ).rR  rS  set_textr   r   r  r   r  r  r  r  r  r  r   r  r6  r  r   r[  all_categoryr  flatpak_categoryrefidra  rh  r   r  r  r\  r]  r^  r  sort_packagesr   r  r  	SizeGroupSizeGroupModer   r  r=  r   r   r  r  r0  )rK   r   rb   r  r"  appsinfo
size_groupr   rK  r  s              r6   load_top_ratedzApplication.load_top_rated  s   ll%%o6''(9:q~&

!!)kkmG--a0--a0##A&&&q)##E*OO-t/N/NPTPaPabOO79N9NPTP\P\PgPg  iA  QB  C%,D"GGG++ 	EMMO	 &&//$2G2G2P2PP 	*DzzR4::#8#8#?}}99 4 44$JaJa9a}}W%?%?@LD)	* !!$
;f(UVAbzt]](9(9(D(DE
 	*G  W%5%5"//="w$\ghD!!$'""))$3##D)	* 	rB   c                 D   | j                   j                  d      }| j                   j                  d      }|j                  t        d             |j	                          | j
                  t        j                         }|j                  d       |j                  d       |j                  d       |j                  d       |j                  d       |j                  d| j                  | j                         |j                  d| j                   | j                   j                  d	             || _        |j#                  |       | j
                  D ]  }|j%                           g }| j'                  d
      }|D ]  }|j)                  d      rK|j+                  dd      }| j,                  j/                  |t,        j0                        }||j2                  s+_| j,                  j/                  |t,        j4                        }||j6                  | j8                  k(  r| j,                  j;                  |      r|j<                  dk(  s|j<                  j)                  d      s|j?                  |        tA        jB                  |       |dd }t        jD                  t        jF                  jH                        }	g | _%        |D ]  }| jL                  r&|j2                  r| jL                  |j6                     }
nd }
tO        || j,                  d|
      }|	jQ                  |       | j
                  jS                  |d       | jT                  j?                  |       | jJ                  j?                  |j6                          |jW                          y )Nbox_featuredlabel_featuredFeaturedr   r   Fr]  r^  r@  z6/usr/share/linuxmint/mintinstall/categories/picks.listr  r9   r   	   rB  TrD  r   ),rR  rS  rE  r   r   r  r   r  r  r  r  r  r  r   r  r6  r  r   r[  file_to_arrayra  r>   r   r  r  rh  r  r   r  r   rH  r  r  r  rJ  rK  r   r  r  r=  r   r  r  r0  )rK   r   rb   r  r"  rL  featured_listr   r   rN  rK  r  s               r6   load_featuredzApplication.load_featured	  s   ll%%n5''(89q}%

  (kkmG--a0--a0##A&&&q)##E*OO-t/N/NPTPaPabOO79N9NPTP\P\PgPg  iA  QB  C$+D!GGG** 	EMMO	 **+cd! 	%Dz*||J3..55dI<V<VW?'*:*:..55dI<R<RS||t333~~227;}}"gmm&>&>u&EG$	%" 	tAay]](9(9(D(DE
"$ 		9G  W%5%5"//="w$\ghD!!$'!!((r2##D)##**7<<8		9 	rB   c                    | j                   j                  d      }|j                         D ]  }|j                           | j                   j                  d      }|j	                  t        d             |j                          t        j                         }|j                  d       |j                  d       |j                  d       |j                  d       |j                  d       |j                  d| j                  | j                   j                  d             t!        | j"                  j%                               D ]K  }| j"                  |   }t'        |      }|j                  d	| j(                  |       |j+                  |d
       M | j,                  j/                         rNt'        | j0                        }|j                  d	| j(                  | j0                         |j+                  |d
       t'        | j2                        }|j                  d	| j(                  | j2                         |j+                  |d
       |j5                  |ddd       |j7                          y )Nbox_categorieslabel_categories_landing
Categoriesr   r   Tr^  r@  r   r   )rR  rS  r  r[  rE  r   r   r   r  r  r  r  r  r  r   r  sortedroot_categorieskeysr  category_button_clickedr  r   list_flatpak_remotesrG  rF  r   r0  )rK   r   r"  rb   r  r   r  rH  s           r6   r  z&Application.load_categories_on_landingD  s   ll%%&67%%' 	EMMO	 ''(BCq'

++-))!,))!,"""1%%3T5J5JDLLLcLcd|L}~4//4467 	'D++D1H#H-FNN9d&B&BHMNN62&		' >>..0#D$9$9:FNN9d&B&BDDYDYZNN62& 1 12y$">">@Q@QRvr"wdA.rB   c                 r    g | _         | j                          | j                          | j                          y r1   )r  r)  rW  rO  )rK   rcaches     r6   r  zApplication.load_landing_appsi  s.    rB   c                 v      fd}t         j                  j                  dgd      }|j                  d |       y )Nc                 H    | j                  |       j                          y r1   )wait_finishr  )procresultrK   s     r6   on_process_exitedz<Application.open_software_sources.<locals>.on_process_exitedq  s    V$ rB   mintsourcesr   )r   
Subprocessr  
wait_async)rK   r   rh  ps   `   r6   r  z!Application.open_software_sourceso  s1    	! NN2	T,-rB   c                     |j                   j                  d      ry| j                  j                  t        j
                        s|j                  S |j                  j                  d      S )NaptTzapp/)r`  ra  r  r  r  ALLOW_UNVERIFIED_FLATPAKSrh  rH  )rK   r   s     r6   should_show_pkginfozApplication.should_show_pkginfox  sR    &&u-}}(()H)HI###}}''//rB   c                 2   | j                   s7| j                  j                  d       | j                  j                  d       y t	        | j
                  j                        dkD  xrC | j                  j                         | j                  k(  xr | j                  | j
                  k(   }| j                  j                  |       | j                  d uxr' | j                  j                         | j                  k(  }| j                  j                  |       y )NFr   )r  r  r   rf  rN  installed_categoryr  r  get_visible_child_namer  r  )rK   r~   s     r6   r  z&Application.update_conditional_widgets  s    ~~##11%8!!//6//889A= L"ooDDF$..X K..$2I2IIL 	 	--i8))5 S>>@DNNR 	 	++I6rB   c                 "   | j                   j                         }|dkD  rj| j                  j                          t	        j
                  dd|      |z  }| j                  j                  |       | j                  j                          n4| j                  j                          | j                  j                          | j                  | j                  k(  r9| j                  j                         | j                  k(  r| j!                          y y y )Nr   z%d task runningz%d tasks running)r   get_task_countrM  r   gettextngettextrg  rN  r  r   stopr  active_tasks_categoryr  rs  r  show_active_tasks)rK   	num_tasksrq  s      r6   r   z#Application.update_activity_widgets  s    NN113	q=$$))+##$57I9UXaaD$$55d;%%++-$$))+%%**,  D$>$>>(,(N(N(PTXTbTb(b""$ )c ?rB   c                    | j                          | j                  j                  t        j                        }| j
                  j                  |      rg|j                  |vr|j                  |j                         || j                  j                  vr| j                  j                  j                  |       n|j                  |v ru|j                  |j                         | j                  j                  D ]A  }|j                  |j                  k(  s| j                  j                  j                  |       C | j                  j                  t        j                  |       | j                   | j                  j                  |j                  k(  rd}|j                  j                  d      r?| j
                  j                         }|D ]  }|j                   |j"                  k(  sd} n nd}|r;| j$                  rd| _        y | j'                  | j                  | j(                         nB| j
                  j*                  |j                  = | j,                  | _        | j/                          | j0                  | j2                  z   D ]"  }|j4                  |k(  s|j7                          $ | j8                  j;                         D ]  }	 |j7                           y # t<        $ r}t?        |       Y d }~0d }~ww xY w)NFrX  T) r   r  get_strvr  INSTALLED_APPSr   r   r`  r  rr  r  removeset_strvr  ra  r`  r   rc  r  r5  r  cacher6  go_back_actionr  r  r   rj  r  r  r  r  )	rK   r   installed_packagesiter_packagecan_showremotesrc  r  r  s	            r6   update_statezApplication.update_state  s   $$&!]]33E4H4HI>>..w7'99"))'*:*:;$"9"9"B"BB++44;;GD#55"))'*:*:;$($;$;$D$D NL#,,0@0@@//88??MN 	u335GH+0D0D0M0MQXQaQa0a H**3/..==?% F{{gnn4#'
  ((,1D)!!$"6"68J8JKNN(()9)9:%)%6%6"##%%%(;(;; 	%D||w&""$	% --::< 	D""$	  as   K%%	L.K>>Lc                     g }|D ]^  }|j                  d      r|j                  |       &| j                  j                  |      }|sD|j                  |j                         ` |S )z
        We can not rely on just the name of a package to guarantee uniqueness.
        This works for apt but not flatpaks.  So we need to upgrade existing keys
        to store pkg_hashes rather than simple names.
        )zapt:fp:)ra  r  r   r  r`  )rK   packagesreturn_listitemr   s        r6   modernize_installed_listz$Application.modernize_installed_list  sm      	D/""4( nn11$7G""7#3#34	 rB   c                    | j                   j                  j                         }|s:| j                  j	                  t
        j                        }| j                  |      }g }|D ]  }	 | j                   j                  |   }| j                   j                  |      rO|| j                  j                  vr%| j                  j                  j                  |       |j                  |       	 | j                  j                  j                  |        | j                  j                  t
        j                  |       y# t        $ r Y w xY w# t        $ r Y w xY w)zN garbage collect any stale packages in this list (uninstalled somewhere else) N)r   r  get_manually_installed_packagesr  r}  r  r~  r  KeyErrorr   rr  r  r  r  
ValueErrorr  )rK   r  new_installed_packagesr`  r   s        r6   r  zApplication.sync_installed_apps  s.    "^^11QQS!!%!7!78L8L!M!%!>!>?Q!R!#* 	H....x8 ~~227;$"9"9"B"BB++44;;GD&--h7++44;;GD	  	u335KL   " s$   )D?-%E?	E
E	EEc                 :    | j                  | j                         y r1   )show_categoryrr  )rK   menuitems     r6   r  zApplication.show_installed_apps  s    4223rB   c                    t        t        j                        }d}|j                  d|j                  z        D ]  }|dz  }| j                  |||        |dk(  r0t        j                  | || j                  j                               }y y )Nr   z%s_*.pngr   )	r   r]  SCREENSHOT_DIRglobr   add_screenshotScreenshotDownloaderr  get_scale_factor)rK   r   ss_dirnss_pathdownloadScreenshotss         r6   add_screenshotszApplication.add_screenshots  s    g,,-{{:#<= 	5GFA!4	5 6")">">tWdN^N^NoNoNq"r rB   c                    || j                   k7  ry 	 | j                  j                  d      j                          |t        j                  t
        j                  j                  dt
        j                  j                        }t        j                  dt
        j                  j                        }t        j                  t        d            }|j!                  |ddd	       |j!                  |ddd	       |j#                          | j                  j%                  |d
       | j                  j'                         j)                  d        y t+        j,                  t/        |      t*        j0                  t*        j2                        }| j                  j%                  |t/        |             || j                  _        | j                  j#                          | j6                  j9                  t
        j:                  j<                         | j>                  jA                  |dkD         | j                  j'                         j)                  | jB                         y # t        $ r Y 4w xY w)Nr   r  r  zface-uncertain-symbolicr  zNo screenshots availabler  Fr   zno-screenshotsr   )"r  rw  get_child_by_namer[  AttributeErrorr   r   r   r   r   r   r)  r.  DIALOGr\   r   r   r0  r  
get_window
set_cursorr]  get_image_for_screenshotr%  SCREENSHOT_WIDTHSCREENSHOT_HEIGHTlastr  r  r  BUBBLEr  set_visibler  )rK   r   r  r  r   r   rb   
screenshots           r6   r  zApplication.add_screenshot  s   d***	!!33I>FFH ?''coo&>&>RUR[R[RbRbcCII(AS\\M`M`aEIIA&@$ABENN5%2NN5%2LLN!!++C1AB!!,,.99$?55c'lGD\D\^e^w^wx
''
CF;%&"&&(33C4H4H4O4OP''33AE:((*55d6H6HI+  		s   )I# #	I0/I0c                 $    |j                         }y r1   )r4  )rK   stackpspecr  s       r6   r  zApplication.on_screenshot_shown7  s    ,,.
rB   c                    t        | j                  j                               x}}|t        j                  j
                  k(  r;|dkD  r|dz
  n| j                  j                  }t        j                  j                  }nW|t        j                  j                  k(  r:|| j                  j                  k  r|dz   nd}t        j                  j                  }| j                  j                  t        |             y )Nr   )r  rw  rs  r   r  r  r  r  SLIDE_RIGHTr  
SLIDE_LEFTset_visible_child_fullr%  )rK   rH  	directionr  currenttranss         r6   r  zApplication.navigate_screenshot:  s    D11HHJKKg))666!(1'A+$2G2G2L2LC++77E#++777!(4+@+@+E+E!E'A+1C++66E44SXuErB   c                 d   |dk(  rK|dk(  rF| j                   | j                   j                         s| j                  |j                                y |dk  r+| j	                  d t
        j                  j                         y |dkD  r+| j	                  d t
        j                  j                         y y r  )	r  get_visibleenlarge_screenshotr4  r  r   r  r  r  )rK   handlervxvyr  s        r6   r  z#Application.screenshot_stack_swipedF  s    7rQw%%-T5K5K5W5W5Y''(?(?(AB6$$T3+<+<+H+HI!V$$T3+<+<+I+IJ rB   c                 L   | j                   j                         | j                  k7  rt        j                  S | j
                  j                         st        j                  S |j                         \  }}d }|ry|t        j                  t        j                  fv rt        j                  j                  }n<|t        j                  t        j                  fv rt        j                  j                  }|"| j!                  d |       t        j"                  S t        j                  S r1   )r  rs  PAGE_DETAILSr   EVENT_PROPAGATEr  r  
get_keyvalKEY_LeftKEY_KP_Leftr   r  r  	KEY_RightKEY_KP_Rightr  r  re   )rK   r  rP   rQ   
got_keyvalkeyvalr  s          r6   r  zApplication.on_window_key_pressQ  s    ??113t7H7HH&&&..::<&&&"--/
F	#,,88--::	CMM3+;+;<<--99	 $$T95>>!"""rB   c                 X   t         j                  j                  |j                        }	 |j	                  dt         j
                  j                  d       }|j                  d      }||S 	 y # t        j                  $ r)}t        dt        d|j                         Y d }~y d }~ww xY w)Nz+metadata::mintinstall-screenshot-source-urlz3Could not retrieve source metadata for screenshot (z): )r   r
  r  path
query_infoFileQueryInfoFlagsr  get_attribute_stringr   Errorr  r  message)rK   r  r  rM  urlr  s         r6   #get_screenshot_source_from_metadataz/Application.get_screenshot_source_from_metadataf  s    xx$$Z__5	g??#PRURhRhRmRmostD++,YZC
 
  zz 	gRY[\[d[deff	gs   ?A- -B) B$$B)c                     | j                  |      }||}n|j                  }| j                  P| j                  j                  |      r| j                  j	                          | j                  j                          y t        | j                  j                  | j                              dkD  xs | j                  j                  dkD  }t        | j                  |      | _        | j                  j                  d| j                         | j                  j                  d| j                          t"        j$                  j'                         j)                  | j                  j+                               }|j-                         }t/        j0                  ||j2                  dz  |j4                  dz        }|j                  d| j6                         |j                  d| j8                         t"        j:                  S )Nr   z
next-imager[  g?zimage-loadedzimage-failed)r  r  r  	has_imager0  r  rN  r   get_screenshotsr  rw  r  r   r  r   "next_enlarged_screenshot_requested$enlarged_screenshot_window_destroyedr   r9  r:  get_monitor_at_windowr  get_workarear]  r  r   r   enlarged_image_readyenlarged_image_failedre   )rK   r  
source_urlimage_locationmultiple_imagesrC  	work_areaenlargeds           r6   r  zApplication.enlarge_screenshots  s   ==jI
!'N'__N!!-%%//
;&&//1&&..0!$.."@"@AUAU"VWZ[[ A"&"7"7"<"<q"@ %5d6F6F%XD"""**<9`9`a""**9d6_6_`++))+AA$BRBRB]B]B_`((*	33NIOOVXDXZcZjZjmoZop)B)BC)C)CD~~rB   c                 P    | j                   j                  ||j                         y r1   )r  	add_imager  rK   r   s     r6   r  z Application.enlarged_image_ready  s    ((

;rB   c                     |j                  | j                         |j                          | j                  j	                  d       | j                  j                         s| j                  j                          y y r  )disconnect_by_funcr  r[  r  set_busy
any_imagesr  s     r6   r  z!Application.enlarged_image_failed  s^      !:!:;''. %%002""**, 3rB   c                     d | _         y r1   )r  )rK   windows     r6   r  z0Application.enlarged_screenshot_window_destroyed  s
    !%rB   c                    t        | j                  j                               dk  r| j                  j	                          y| j                  d |       | j                  j                         }| j                  |      }||}n|j                  }| j                  j                  |      r| j                  j                  |       y| j                  |       y)Nr   FT)rN  rw  r  r  r[  r  r4  r  r  r  
show_imager  )rK   r  r  r  r  r  s         r6   r  z.Application.next_enlarged_screenshot_requested  s    t$$1134q8""**,  y1**<<>
==jI
!'N'__N!!++N;""--n=
+rB   c                 `    | j                   "| j                   j                          d | _         y y r1   )r  r[  r   s    r6   destroy_screenshot_windowz%Application.destroy_screenshot_window  s-    !!-""**,%)D" .rB   c                 &    | j                  |       y r1   )r  )rK   rH  r  s      r6   r_  z#Application.category_button_clicked  s    8$rB   c                 &    |j                  d        y r1   )popup_at_pointer)rK   rH  menus      r6   r  z"Application.on_menu_button_clicked  s    d#rB   c                     | j                   j                  t        j                  |j	                                |j	                         ry | j                  | j                         y r1   )r  set_booleanr  r  
get_activeon_search_changedr  rK   rH  s     r6   r  z Application.on_subsearch_toggled  sH    !!%":":F<M<M<OP""4#3#34rB   c                 R    |j                         }|dk7  r| j                  |       y y r   )get_textshow_search_resultsrK   r  termss      r6   r  z%Application.on_search_entry_activated  s*    $$&B;$$U+ rB   c                     | j                   dkD  r&t        j                  | j                          d| _         t        j                  d| j                  |      | _         y )Nr      )r  r   r2  timeout_addr  )rK   entrys     r6   r  z!Application.on_entry_text_changed  sJ    $$q(t889()D%$($4$4S$:P:PRW$X!rB   c                    |j                         }| j                  j                         r4| j                  (|dk(  r#| j	                  | j                         d| _        y|dk7  rt        |      dk\  r| j                  |       d| _        y)Nr9   r   r   F)r  rf  r  r  r  rN  r  r  r  s      r6   r  zApplication.on_search_changed  s    $$&  ++-$2G2G2SX]acXct445 %&!	 b[SZ1_$$U+$%!rB   c                     | j                   j                  ||j                                | j                  j	                         }| j                  j	                         dk7  r| j                  |       y y r   )r  r  r  r  r  r  )rK   checkmenuitemkeyr  s       r6   set_search_filterzApplication.set_search_filter  s]    !!#}'?'?'AB  ))+%%'2-$$U+ .rB   c                     |j                         r\| j                  j                  t        j                  |       | j
                  j                         }|dk7  r| j                  |       y y y r   )r  r  
set_stringr  PACKAGE_TYPE_PREFERENCEr  r  r  )rK   radiomenuitemvaluer  s       r6   set_package_type_preferencez'Application.set_package_type_preference  s[    ##%MM$$U%B%BEJ$$--/E{((/ 	 &rB   c                 v   t        j                         }|j                  | j                         |j	                  t        d             |j                  d       |j                  t        d             	 t        dd      }|j                         }d}|D ]  }||z  }	 |j                          |j                  |       |j                  d       |j                  d       |j!                  d       d }|j#                  d	|       |j%                          y # t        $ r}t        |       Y d }~rd }~ww xY w)
Nr[  r   rE  z/usr/share/common-licenses/GPLr   r9   z8.3.7c                     |t         j                  j                  k(  s|t         j                  j                  k(  r| j	                          y y r1   )r   ResponseTypeCANCELDELETE_EVENTr   )wr)  s     r6   closez%Application.open_about.<locals>.close  s8    c&&---8H8H8U8U1U 2VrB   response)r   AboutDialogset_transient_forr  r{  r   set_program_nameset_commentsr  	readlinesr  set_licenser  r  set_versionr}  set_logo_icon_namer   r   )	rK   r   dlghsgplliner  r  s	            r6   r  zApplication.open_about  s   ood../aj!]+-./		5s;AAC tGGIOOC  	 -(}-	 	J&
  	!HH	s   6AD 	D8#D33D8c           
         |sNt        j                  d      D ]6  }d|v s|j                  d      rt        d       t        d|dd  z          y t        j                  d      d	k7  rt        d
       yd	| _        t        j                         | _        ddlm	} |j                  d d | j                  j                        | j                  _	        | j                  j                  j                          i | j                  _        | j                  j                          | j                  j                          | j!                          | j#                          | j%                          |r&| j                  j                  j'                  d      }n| j                  j                  }|j)                         D ]  }| j                  j                  |   }| j                  j+                  |      }|j-                  dd      }|j-                  dd      }|j/                         }d}		 | j                  j1                  |      }	g }
|j2                  D ]  }|
j5                  |j6                          	 dj9                  |j6                  |	||dj9                  |
      g      }t        |        y#  Y pxY w# t:        $ r.}t        |       t        |j6                  |	||       Y d }~ yd }~ww xY w)Nz/var/lib/apt/lists/i18nz-enzBYour APT cache is localized. Please remove all translations first.z-sudo rm -rf /var/lib/apt/lists/*Translation%sr   r  r  zjPlease prefix this command with LANGUAGE=C, to prevent content from being translated in the host's locale.r   )r  rX  z
z<br>
r9   z#~#z:::)r  listdirr  r  r  r  r   r  mintcommon.installerr  PkgCachehave_flatpak_generate_cache_threadbackend_tableinitialize_appstreamgenerate_uncached_pkginfosr  r  r  get_subset_of_typer^  get_descriptionr>   r   get_homepage_urlrO  r  r   joinr  )rK   r  filenamer  r  r`  r   descriptionr   r  rO  r  outputr  s                 r6   r	  zApplication.export_listing  so   JJ'<= X%h.?.?.F^_IHUWUXMYZ	
 IIj!S(~",,..$~~dD$..:U:UV335')$++-113&&('')~~++>>sCH~~++H  	Hnn**84G..88AK%--ff=K%--dF;K))+GCnn55g> J#.. 1!!(--01W\\3ejjYcNd$ef
 &M1	4   q	gllC+>s$   &J-0/J4-J14	K+=#K&&K+c           	      d   | j                   j                         rt        j                  | j                  t        j
                  j                  t        j                  j                  t        j                  j                  t        d            }|j                         }|j                          |t        j                  j                  k(  ryt!        j"                          | j$                  r| j$                  j#                          t'        j(                  dt'        j*                         z         y )NzEThere are currently active operations.
Are you sure you want to quit?Tzkill -9 %s &)r   r  r   r  r  r  r  r   r!  r"  YES_NOr   r$  r[  r  NOr  killr  r  systemgetpid)rK   r  rP   r(  r)  s        r6   r~  zApplication.close_applicationH  s    >>!!#&&t'7'7'*'<'<'*'>'>'*'='='()q'r	tF
 **,CNNc&&))) 	""$ 			.299;./rB   c                 L   |j                   |j                  k(  r'| j                  | j                  | j                         y | j
                  j                  |      sy | j                  |j                  dd       | j
                  j                  |       | j                          y )Nr   T)info_ready_statusSTATUS_UNKNOWNr5  r  r  r   confirm_taskon_installer_progressr   r   r   )rK   rH  r   s      r6   on_action_button_clickedz$Application.on_action_button_clicked\  s~    !!T%8%88d22D4F4FG~~**40""4<<D9##D)$$&rB   c                    |j                   |j                   j                         }|D ]%  }|j                  d      s|j                  |       ' d|v rEt	        ddj                  |      z         t        j                  ddj                  |      z         y t	        ddj                  |      z         t        j                  |       y y )N%shzLaunching app with OS:  z%s &zLaunching app with Popen: %s)
exec_stringr  ra  r  r  r-  r  r5  
subprocessPopen)rK   rH  r   
exec_arrayelements        r6   on_launch_button_clickedz$Application.on_launch_button_clickedj  s    '))//1J% /%%c*%%g./ z!/#((:2FFG		&388J#7784sxx
7KKL  , (rB   c                     g }t        |      5 }|D ]I  }|j                  dd      j                  dd      j                         }|dk7  s9|j                  |       K 	 d d d        |S # 1 sw Y   |S xY w)Nr!  r9   )r  r>   stripr  )rK   r.  arrayrX  r  s        r6   rU  zApplication.file_to_arrayw  sv    (^ 	'q '||D"-55dB?EEG2:LL&'	' 	' s   ;A(
A((A2c                 &   g | _         i | _        i | _        t        t	        d      d | j                         | _        | j                  j                  t        j                        | j
                  _
        t        t	        d      d d       | _        t        dd | j                   d      | _        t        t	        d      d | j                   d      }t        t	        d      || j                   d      }|| j                  d<   || j                  d	<   | j                  d
      |_
        t        t	        d      || j                   d      }|| j                  d<   | j                  d      |_
        t        t	        d      || j                   d      }| j                  d      |_
        t        t	        d      || j                   d      }| j                  d      |_
        || j                  |j                  <   t        t	        d      d | j                   d      }| j                  d      |_
        t        t	        d      || j                   d      }|| j                  d<   t        t	        d      || j                   d      }|| j                  d<   || j                  |j                  <   t        t	        d      d | j                   d      }|| j                  d<   | j                  d       |_
        t        t	        d!      || j                   d"      }| j                  d#      |_
        t        t	        d$      || j                   d      }| j                  d%      |_
        t        t	        d&      || j                   d'      }| j                  d(      |_
        t        t	        d)      || j                   d*      }| j                  d+      |_
        t        t	        d,      || j                   d-      }| j                  d.      |_
        t        t	        d/      || j                   d0      }| j                  d1      |_
        || j                  |j                  <   t        t	        d2      d | j                   d3      }|| j                  d4<   || j                  d5<   || j                  |j                  <   t        t	        d6      d | j                   d7      }|| j                  d8<   | j                  d9      |_
        t        t	        d:      || j                   d;      }| j                  d<      |_
        t        t	        d=      || j                   d>      }| j                  d?      |_
        t        t	        d@      || j                   dA      }| j                  dB      |_
        t        t	        dC      || j                   dD      }| j                  dE      |_
        t        t	        dF      || j                   dG      }| j                  dH      |_
        t        t	        dI      || j                   dJ      }| j                  dK      |_
        || j                  |j                  <   t        t	        dL      d | j                   dM      }|| j                  dN<   || j                  dO<   || j                  |j                  <   t        t	        dP      d | j                   dQ      }|| j                  dR<   || j                  dS<   | j                  dT      |_
        || j                  |j                  <   t        t	        dU      d | j                   dV      }|| j                  dW<   | j                  dX      |_
        || j                  |j                  <   t        t	        dY      d | j                   dZ      }t        t	        d[      || j                   dZ      }|| j                  d\<   t        t	        d]      || j                   d^      }|| j                  d_<   t        t	        d`      || j                   da      }|| j                  db<   t        t	        dc      || j                   dd      }|| j                  de<   | j                  df      |_
        || j                  |j                  <   t        t	        dg      d | j                   dh      }|| j                  di<   t        t	        dj      || j                   dk      }|| j                  dl<   t        t	        dm      || j                   dn      }|| j                  do<   t        t	        dp      || j                   dq      }|| j                  dr<   t        t	        ds      || j                   dt      }| j                  du      |_
        || j                  |j                  <   t        t	        dv      d | j                   dw      | _        | j                   D ]1  }| j                  j                  j!                  |j                         3 t#        | j                  j                         y )xNzInstalled Applicationsz+Currently working on the following packagesFlatpakr  Internetzmintinstall-web-symbolicWebwebnetz=/usr/share/linuxmint/mintinstall/categories/internet-web.listEmailzmintinstall-email-symbolicmailz?/usr/share/linuxmint/mintinstall/categories/internet-email.listChatzmintinstall-chat-symbolicz>/usr/share/linuxmint/mintinstall/categories/internet-chat.listzFile sharingzmintinstall-share-symboliczE/usr/share/linuxmint/mintinstall/categories/internet-filesharing.listzSound and videozmintinstall-music-symbolicz</usr/share/linuxmint/mintinstall/categories/sound-video.listSoundsoundVideozmintinstall-video-symbolicvideoGraphicszmintinstall-drawing-symbolicgraphicsz9/usr/share/linuxmint/mintinstall/categories/graphics.list3Dzmintinstall-3d-symbolicz</usr/share/linuxmint/mintinstall/categories/graphics-3d.listDrawingzA/usr/share/linuxmint/mintinstall/categories/graphics-drawing.listPhotographyzmintinstall-photo-symboliczE/usr/share/linuxmint/mintinstall/categories/graphics-photography.list
Publishingzmintinstall-publishing-symboliczD/usr/share/linuxmint/mintinstall/categories/graphics-publishing.listScanningzmintinstall-scanning-symboliczB/usr/share/linuxmint/mintinstall/categories/graphics-scanning.listViewerszmintinstall-viewers-symboliczA/usr/share/linuxmint/mintinstall/categories/graphics-viewers.listOfficezmintinstall-office-symbolicofficeeditorsGameszmintinstall-games-symbolicgamesz6/usr/share/linuxmint/mintinstall/categories/games.listzBoard gameszmintinstall-board-symbolicz</usr/share/linuxmint/mintinstall/categories/games-board.listzFirst-personzmintinstall-fps-symbolicz:/usr/share/linuxmint/mintinstall/categories/games-fps.listzReal-time strategyzmintinstall-rts-symbolicz:/usr/share/linuxmint/mintinstall/categories/games-rts.listzTurn-based strategyzmintinstall-tbs-symbolicz:/usr/share/linuxmint/mintinstall/categories/games-tbs.list	Emulatorszmintinstall-emulator-symbolicz@/usr/share/linuxmint/mintinstall/categories/games-emulators.listzSimulation and racingzmintinstall-sim-symboliczB/usr/share/linuxmint/mintinstall/categories/games-simulations.listAccessoriesz mintinstall-accessories-symbolicaccessoriesutilszSystem toolszmintinstall-system-symbolicr5  adminz=/usr/share/linuxmint/mintinstall/categories/system-tools.listFontszmintinstall-fonts-symbolicfontsz6/usr/share/linuxmint/mintinstall/categories/fonts.listzScience and Educationzmintinstall-science-symbolicSciencescienceMathszmintinstall-maths-symbolicmath	Educationzmintinstall-education-symbolic	educationElectronicszmintinstall-electronic-symbolicelectronicsz:/usr/share/linuxmint/mintinstall/categories/education.listProgrammingz mintinstall-programming-symbolicdevelJavazmintinstall-java-symbolicjavaPHPzmintinstall-php-symbolicphpPythonzmintinstall-python-symbolicpython
Essentialszxapp-favorites-app-symboliczG/usr/share/linuxmint/mintinstall/categories/development-essentials.listzAll Applicationsr  )rO  sectionsr]  r  r   rr  r  r}  r  r~  r  ry  rG  rU  r   rF  extendr\  )rK   r  subcatr  s       r6   r  zApplication.add_categories  sb   !"*1-E+Fdoo"^37==3I3I%J^J^3_0%-a0].^`dfj%k" (D$//Kq r AjM4B\]!E(Hdoo?YZ%e%e"&"4"45t"u!G*hA]^ &f"&"4"45v"w!F)Xt@[\"&"4"45u"v!N+XtHde"&"4"45|"}.6X]]+ A/0$Ief$($6$67u$v!!G*hA]^!'g!G*hA]^!'g.6X]]+ AjM4B`a$,j!$($6$67r$s!!D'8T__>WX"&"4"45s"t!I,$//Cab"&"4"45x"y!M*HdooGcd"&"4"45|"}!L/8T__Fgh"&"4"45{"|!J-4??Dcd"&"4"45y"z!I,$//Cab"&"4"45x"y.6X]]+ AhKt@]^"*h#+i .6X]]+ AgJdoo?[\!)g$($6$67o$p!!M*HdooGcd"&"4"45s"t!N+XtHbc"&"4"45q"r!018T__Nhi"&"4"45q"r!12HdooOij"&"4"45q"r!K.(DOOEde"&"4"45w"x!34hQkl"&"4"45y"z.6X]]+ Am,dDOOEgh'/m$!)g.6X]]+ An-tT__Fcd"*h!)g$($6$67v$w!.6X]]+ AgJdoo?[\!)g$($6$67o$p!.6X]]+ A56dooOmn!I,$//Cab#)i !G*hA]^ &f!K.(DOOEef%+k"!M*HdooGhi'-m$$($6$67s$t!.6X]]+ Am,dDOOEgh!)g!F)Xt@[\ &f!E(Hdoo?YZ%e!H+xB_`"(h!L/8T__Fcd"&"4"45~".6X]]+ %Q'9%:D$//Smn?? 	LC..55c6J6JK	Lt  112rB   c                     	 ||j                   vr`|j                   j                  |       |j                  j                  |       |j                  r| j	                  ||j                         y y y # t
        $ r Y y w xY wr1   )rO  r  r  r  add_pkginfo_to_categoryr  )rK   r   r  s      r6   r  z#Application.add_pkginfo_to_category  sv    7#5#55&&--h7%%,,W544WhooN '	 6 " s   A,A1 1	A=<A=c                     | j                          | j                          d| _        | j                          | j                  | j                  | j                         yNTF)r3  r+  r  r  r  r  r   s    r6   r  z%Application.finished_loading_packages  sP    ""$""$'')''3,,T-I-IJrB   c                    | j                   j                  rZt         j                  j                         j	                  d       }|D cg c]!  }t         j                  j                  |      # }}ng }t         j                  j                         }|D cg c].  }|j                  st         j                  j                  |      0 }}||z   S c c}w c c}w r1   )	r   r%  _flatpak
get_fp_syslist_installed_refsmake_pkg_hash_aptget_apt_cachers  )rK   installed_fp_refsref	fp_hashes	apt_cacher  
apt_hashess          r6   get_installed_package_hashesz(Application.get_installed_package_hashes"  s    >>&& ) 2 2 = = ? S STX YJ[\3++99#>\I\INN002	CL^CPSP]P]inn2237^
^I%% ]
 _s   &CC'!Cc                 ^   | j                   D ]a  }|j                  D ]P  }|j                  d      r| j                  j	                  |t        j
                        }| j                  ||       R c | j                  j                  D ]Z  }|j                  d      s| j                  j	                  |t        j                        }| j                  || j                         \ i | _	        g | j                  _        | j                  j                  j                  d      D ]	  }| j                  j                  |   j                  }| j                  j                  j                  |   }| j                  | j                  j                  |   | j                         |j                   r|| j                  j#                         vr.t%        |j&                  | j                  d       | j                  |<   | j                  | j                  j                  |   | j                  |           y )NfprX  )rO  r  ra  r   r  r  r  rr  r  r  rG  r  r  r*  rc  flatpak_remote_infosnoenumerater^  r  rd  )rK   r  package_namer   r  remote_namerm  s          r6   r  z%Application.process_matching_packages.  s     	@H ( 9 9 @**40..55lIDZDZ[,,Wh?@	@ !33DD 	BL**40nn11,	@Z@Z[G(()-)@)@B		B *,&.0+>>''::3? 	VC....s3::K....CCKPK(()=)=c)B)-)>)>@ &&$"@"@"E"E"GG>F{GXGXZ^ZoZoqu>v..{;(()=)=c)B)-)G)G)TV'	VrB   c                 (   | j                   j                  j                  }| j                  j                         D ]U  }||j                         v s||   D ]8  }| j	                  | j                   j                  |   | j                  |          : W y r1   )r   r  r}  r^  r  )rK   cache_sectionssectionr`  s       r6   r  z&Application.process_unmatched_packagesY  s    --66}}))+ 	IG.--// .w 7 IH001E1Eh1O15w1GII	IrB   c                     t         j                         D ]G  }| j                  j                  j	                  |t        j
                        }|s:t         |   |_        I y r1   )ALIASESr^  r   r  r  r  rl  )rK   pkg_namer   s      r6   r  zApplication.apply_aliasesc  sI     	9Hnn**77)BXBXYG'.x'8$	9rB   c                     | j                   j                         | j                  k7  r&| j                   j                  | j                         y y r1   )r  rs  r6  r  r   s    r6   r3  z!Application.finish_loading_visualk  s;    ??113t7H7HHOO2243D3DE IrB   c                     | j                   j                         | j                  k7  r=|j                  t        j
                  t        j                  fv r| j                          yyr  )r  	get_focusr  r  r   KEY_BackSpaceKEY_Homer  rK   r   rP   s      r6   r  zApplication.on_keypressq  sO    %%'4+;+;;RURcRceheqeqQrAr!rB   c                 L    |j                   t        k(  r| j                          yyr  )rH  MOUSE_BACK_BUTTONr  r  s      r6   r  zApplication.on_buttonpressy  s!    <<,,!rB   c                 b    |j                         }|j                  |j                                y r1   )get_vadjustment	set_value	get_lower)rK   scrolledwindow
adjustments      r6   reset_scroll_viewzApplication.reset_scroll_view  s'    #335
Z1134rB   c                 $    | j                          y r1   )rz  r  s     r6   r  z*Application.on_active_tasks_button_clicked  s     rB   c                     d | _         | j                  j                         | j                  _        | j                  | j                         y r1   )r  r   get_active_pkginfosry  r  r  r   s    r6   rz  zApplication.show_active_tasks  s9    #.2nn.P.P.R""+4556rB   c                 $    | j                          y r1   )r  r  s     r6   r  z"Application.on_back_button_clicked  s    rB   c                 n   t        j                  | j                  d       | j                          | j                  "| j                  j                          d | _        n]| j                  rQ| j                  j                  | j                        s%| j                  j                  | j                         d | _        | j                  j                         | j                  k(  r| j                  j                  d       d | _        | j                  j!                  | j"                         | j"                  | j$                  k(  r| j&                  j                  d       | j(                  j+                          | j(                  j-                  d       d | _        | j0                  dkD  r&t3        j4                  | j0                         d| _        	 | j6                  j9                         d   }|j+                          | j=                          | j"                  | j>                  k(  r| j$                  | _        | j.                  | j@                  k(  r| jC                  | j@                         nX| j.                  | jD                  k(  r| jG                          n.	 | jH                  j9                         d   }|j+                          | jJ                  jM                         r)| jJ                  jO                         jQ                  d        | jS                          y # t:        $ r Y 'w xY w# t:        $ r Y ow xY w)Nr   TFr9   )*r   set_window_progressr  stop_progress_pulser  r1  r  r   task_runningcancel_taskr  rs  r  ro  r   r  r  r  r6  rc  r  r  rE  r  r  r   r2  r  get_selected_children
IndexErrorr+  r  rr  r  ry  rz  r  rw  get_realizedr  r  r  )rK   r  s     r6   r  zApplication.go_back_action  s     !1!115  "   ,!!((*$(D! >>..t/@/@A**4+<+<= $D??113tF!!//5#..t/A/AB!2!22**51'')%%b)$(D!**Q.""4#>#>?./+--CCEaH! &&(/!%!2!2D$$(?(??""4#:#:;&&$*D*DD&&(44JJLQODOO%   --/!!,,.99$?'')+    " s$   -L -L( 	L%$L%(	L43L4c                 .   d | _         | j                  j                  d      }|| _        | j                  j                  | j                         | j                  | _        | j                  j                  d       |j                  | j                  j                         |j                          |j                  r| j                  |j                         n| j                  |       | j!                  |j"                  d       | j%                          y )Nlabel_cat_nameTFfrom_search)r  rR  rS  r  r  r  r  r6  r  rc  r   rE  r   r   r  show_subcategoriesshow_packagesr  r  )rK   r  rb   s      r6   r  zApplication.show_category  s    #''(89 (..t~~>!..&&t,t,,112

??##HOO4##H-8,,%@'')rB   c                 F   | j                   j                         D ]  }|j                           || j                  k(  st	        |j
                        dk(  r| j                   j                          y t        |d| j                  |k(        }| j                   j                  |       |j
                  D ]Q  }t	        |j                        dkD  st        |d| j                  |k(        }| j                   j                  |       S | j                   j                          y )Nr   T)r  r{   F)r  r  r[  rG  rN  r  r   r  r  r   r  r0  )rK   r  r"  r  s       r6   r  zApplication.show_subcategories  s    ((557 	EMMO	 t,,,H4J4J0Kq0P$$&'dF[F[_gFgh&)) 	/C3<< 1$/E$J_J_cfJfg##''.	/
 	$$&rB   c                 :    | j                  |j                         y r1   )r  r  )rK   r  r"  rQ   s       r6   r  z#Application.on_subcategory_selected  s    5>>*rB   c                     |j                  || j                  j                  |            }|st        j                  }|S r1   )r\  r   get_appstream_pkg_for_pkginfor]  r_  )rK   r   r?   strings       r6   get_application_icon_stringz'Application.get_application_icon_string  s7    !!$(T(TU\(]^77FrB   c                 R    | j                  ||      }t        j                  ||      S r1   )r  r]  r\  )rK   r   r?   rk  s       r6   get_application_iconz Application.get_application_icon  s'    66wET22rB   c                    	
  j                   sy j                  j                  d      }|j                          t	        j
                   j                  d        j                          d  _         j                  j                         D ]  } j                  j                  |         j                  j                         rJ j                  > j                  j!                          j"                  k(  r j                  j$                  }n+ j&                  j(                  j+                         }d  _         j,                  j                           j.                  j1                  d        j2                   _         j                  j!                          j6                  k7  r% j                  j9                   j6                         |j;                         t=        j>                  d      g 
 j@                  dkD  r&tC        jD                   j@                         d _          jF                  jI                  tJ        jL                        	 jF                  jI                  tJ        jN                         jF                  jQ                  tJ        jR                        tU               	
 fd}tC        jV                  |tY        |             _         y )NFr  r   Tz\W+c                 <   	 | j                  d      j                  j	                  d      }d}	 j                        snt        fdD              r
d}d_        n|rt        fdD              r
d}d_        nj                         j                         v r
d}d_        nd	r*j                         j                         v r
d}d_        n8r5j                  j                        j                         v r
d}d	_        n	 |r
j                         t        j                  k(  r1|s/j!                  t"        j%                  j&                               nCt        j(                  k(  r0|r.j!                  t*        j%                  j&                               t-        |       dkD  ryd_        t        j                  k(  r:
D cg c].  }|j                  j	                  d      r|j&                  v r-|0 }}nOt        j(                  k(  r:
D cg c].  }|j                  j	                  d
      r|j&                  v r-|0 }}n
}t/        j0                  j2                  |       y# t        $ r
 d_        Y yw xY wc c}w c c}w )Nr   FrX  Tc              3   V   K   | ]   }|j                   j                         v  " y wr1   )r   upperr3   piecer   s     r6   r7   zSApplication.show_search_results.<locals>.idle_search_one_package.<locals>.<genexpr><	  s#     Mu 2 2 44Ms   &)c              3   ^   K   | ]$  }|j                         j                         v  & y wr1   )r   r  r  s     r6   r7   zSApplication.show_search_results.<locals>.idle_search_one_package.<locals>.<genexpr>D	  s)     "gSX5G,D,D,F,L,L,N#N"gs   *-2   r      a)popr  r  r`  ra  rp  allr  get_keywordsr  r   r   r+  r  r  PACKAGE_TYPE_PREFERENCE_APTr   FLATPAK_EQUIVSgetr   PACKAGE_TYPE_PREFERENCE_FLATPAK
DEB_EQUIVSrN  r   r  on_search_results_complete)r  flatpakis_matchrl  resultsr   hidden_packagespackage_type_preferencesearch_in_descriptionsearch_in_summarysearched_packagesrK   
termsSplit
termsUppers        @r6   idle_search_one_packagez@Application.show_search_results.<locals>.idle_search_one_package.	  s]   ",,q/
 &&11#6GH//8M*MM#H*+G'
 s"g\f"gg#H*+G'!5!5!7!=!=!??#H*,G'%*8K8K8M8S8S8U*U#H*-G'(Z4>>;Y;YZa;b;h;h;j-j#H*-G'!((1*e.O.OOX_#''(:(:7<<(HI,0U0UUZa#''
w||(DE 8}q %&D"&%*K*KK&7z

@U@UVY@Z_`_e_eix_x1zz(E,Q,QQ&7z

@U@UVY@Z_`_e_eix_x1zz+MM$997Cy  )*&j {zs)   I> .JJ%.JJ>JJ)-r  rR  rS  r   r   r  r  r  r  r  r  r  rf  r  r  r  rs  r  r  r   r  valuesr  rc  r   r6  r  PAGE_SEARCHINGr  r  rer  r  r   r2  r  r  r  SEARCH_IN_SUMMARYSEARCH_IN_DESCRIPTION
get_stringr  r  r  r  )rK   r  rb   r"  listingr  r  r  r  r  r  r  r  s   `     @@@@@@@r6   r  zApplication.show_search_results	  s    ~~''(89

  !1!115  "#..;;= 	4E%%,,U3	4   ++-%%1OO::<N++44Gnn**113G$(D!  "&&t,!..??113t7J7JJOO2243F3FG[[]
XXfj1
!!A%t556%&D" MM55e6M6MN $ 9 9%:U:U V"&--":":5;X;X"Y%?	 ?	B "&/FW!VrB   c                 t    | j                   j                  | j                         | j                  |d       y )NTr  )r  r  r  r  )rK   r  s     r6   r  z&Application.on_search_results_completeq	  s+    ..t~~>75rB   c                 <    | j                  |j                  |       y r1   )r5  r   )rK   listboxrV  r  s       r6   r  z Application.on_app_row_activatedu	  s    #++}5rB   c                 @    |j                         j                          y r1   )
get_parentrp  )rK   r  rQ   s      r6   on_flowbox_item_clickedz#Application.on_flowbox_item_clickedx	  s     	""$rB   c                 ^    |j                  |       | j                  |j                  |       y r1   )select_childr5  r   )rK   r  r"  r  s       r6   r  z&Application.on_flowbox_child_activated	  s$    U#%--7rB   c                 p   	 |j                         d   }|j                         }|j                         }|j	                         }|j	                         }|j	                         }|j
                  }	|j                  |j                  z   |j                  z   |	z   ||j
                  z   kD  r9|j                  |j                  |j                  z   |	z   |j
                  z
         y |j                  |j                  z   |k  r)|j                  |j                  |j                  z          y y # t        $ r Y y w xY wr  )r  r  r  	get_valuer   r   r  r  )
rK   r  scrolled_windowselectedadjr  sel_boxfb_boxsw_boxunits
             r6   r  zApplication.navigate_flowbox	  s   	446q9H --/--/))+'') //1~~II 688+d2w7NOMM799vxx/$6&--GHYY!G+MM'))fhh./ ,  		s   D) )	D54D5c                 T    t        |      dkD  r|d   j                         |dd  z   S |S )Nr   r   )rN  r  )rK   r  s     r6   re  zApplication.capitalize	  s.    v;?1IOO%qr
23OrB   c                    g }| j                         }|D ]  }t        |      }|j                  |v |_        |j                  j	                  d      r|j                         |_        | j                  rA|j                  | j                  v r)| j                  |j                     j                   |_	        |j                  |        |j                  |       |D cg c]  }|j                   c}S c c}w )NrX  )r  )r  r  r`  rs  ra  r   r   r  scorer  r  sortr  )rK   pkgskey_func	sort_pkgsinstalled_hashesr  sort_pkgs          r6   rI  zApplication.sort_packages	  s    	<<> 	'C"3'H!$1A!AH ||&&s+ # 4 4 6  SXX1B1B%B'+'8'8'B'H'H&H#X&	' 	8$#,-C---s   C2c           	      \   | j                          | j                  dkD  r&t        j                  | j                         d| _        | j                  j                         D ]  }| j                  j                  |        g | _        t        |      dk(  r| j                  j                  d       | j                  | j                  k(  r&t        d      }| j                  j                          nM|r&t        d      }| j                  j                          n%t        d      }| j                  j!                          | j"                  j%                  d|z         n| j                  j                  d       | j                  | j&                  k(  rV|D cg c]/  }|j(                  dk(  s|j(                  j+                  d	      s.|1 }}| j-                  |t/        d
            }ns|r.|D cg c]  }| }}| j-                  |t/        dddd
            }n>|D cg c]  }| j1                  |      s| }}| j-                  |t/        ddd
            }|dd }g }g }g }	|D ]K  }
	 |
j3                         j5                         }||v r||vr|j7                  |       |j7                  |       M |	D ]  }|j                  |        t        j8                  | j:                  ||      | _        | j                  j=                          y c c}w c c}w c c}w #  |	j7                  |
       Y xY w)Nr   z
no-resultszAll operations completezNo matching packages foundzLNo packages to show.
This may indicate a problem - try refreshing the cache.z<big><b>%s</b></big>r  r9   r   r   r  r  r     )r.  r  r   r2  r  r  r  r  rN  rj  r  r  ry  r   rP  r   r   rO  r^   rr  rH  ra  rI  r   rp  r   lowerr  r  idle_show_one_packager0  )rK   r  r  r"  rq  rM  rL  package_titles
collisionsbad_onesr   rd  bads                r6   r  zApplication.show_packages	  s   !!#&&*t::;*+D'..;;= 	4E%%,,U3	4 !x=A66|D$$(B(BB2355::<9:D99>>@lmD99>>@((334JT4QR66yA  D$;$;;%-bTr1ATZZEZEZ[`EaDbDb%%dJv,>?D)1222))$
<Xdfl0mn)1TT5M5Md5STT))$
<W]0^_#;D 
 	)G)00288:N*uJ/F%%e,%%e,	)  	CKK	 '+mmD4N4N484>'@# 	!!**,A c 3 U)(s+   /LL+	LL0L$ALL+c                 $   	 |j                  d      }| j                  |t        j
                        }|j                         }| j                  r| j                  |j                     }nd }t        || j                  d|      }| j                  j                  |d       | j                  j                  |       t        |      dkD  ry| j!                  | j"                  j%                  d             d| _        y# t        $ r
 d| _        Y yw xY w)Nr   FTrD  r   r_  )r  r  r  r  r]  LIST_ICON_SIZEr   r  r   r=  r   r  r  r  r  rN  r  rR  rS  )rK   r  r
  r   rU  r   rK  r  s           r6   r  z!Application.idle_show_one_package	  s    	ll1oG
 (('2H2HI%%'++GLL9KK7DNNdXcd!!((r2""4( x=1t||667TUV&'#/  	*+D'	s   C< <DDc                     |j                   t        j                  t        j                  fv r*| j                  j                          t        j                  S t        j                  S r1   )r  r   KEY_TabKEY_ISO_Left_Tabr  r  re   r  )rK   rV  rP   rQ   s       r6   on_tile_keypresszApplication.on_tile_keypress
  sE    <<CKK)=)=>>'')>>!"""rB   c                     |j                         }|rA|j                         j                  |t              }| j	                  || j
                         y y r1   )get_active_iter	get_modelr  PACKAGE_TYPE_COMBO_PKGINFOr5  r  )rK   comboiterr   s       r6   package_type_combo_changedz&Application.package_type_combo_changed
  sH    $$&oo'11$8RSGgt'9'9: rB   c                 J"   | j                   j                  | j                         | j                          | j                  j                  d      j                  d       || _        | j                  j                  d       | j                          | j                  | j                  j                  d             || _        |j                  j                  d      }| j                  j                  d      j                  | j                         | j!                  |t"        j$                        }| j&                  j)                  |       | j*                  j-                          | j.                  j1                  t2        j4                  j6                         	 | j.                  j9                  | j:                         | j*                  j-                          d}d }d }d }d }	|s|}n| j?                  |      }
|
|
}|rI|tA        d      tA        d      d	|g}| j*                  jC                  |      }||k(  r|}|tD           }	|d
z  }|s| jG                  |      | jG                  |      xs |}| jH                  jK                         D ]  }| jH                  jM                  |jN                  tH        jP                  |jN                        }|sF|tA        d      |jR                  z  |jT                  d|g}| j*                  jC                  |      }||k(  r|}|tD           }	|d
z  } |d
k(  r| j.                  jW                          | jX                  j[                          | j\                  j_                  |t`                  | jb                  je                  |tf           t2        jh                  jj                         | jX                  jm                  |tD                  nj| jX                  jW                          | j.                  j[                          | j.                  jo                  |       | j.                  jm                  |	       | jp                  jW                          | j                  j                  d      j_                  d       |r| jr                  j[                          | j                  j                  d      j_                  d       | jH                  ju                  |      }|dk7  r7| j                  j                  d      j_                  tA        d|z               n3| j                  j                  d      j_                  tA        d             |jv                  s| jp                  j[                          | j                  j                  d      j_                  d       n]| jr                  jW                          | j                  j                  d      j_                  | jH                  jy                  |             | j.                  j{                  d| j:                         |j}                         }| j                  j                  d      j_                  |       | j                  j                  d      j_                  |j                                | j                  j                  d      j_                  |jN                         | j                  j                  d      j                  d       | j                  j                  d      j                  d       | j                  j                  d      j                  d       | jH                  j                  |      }|dvr| j                  j                  d      j[                          tA        d      }| j                  j                  d      j                  d|d|d       | j                  j                  d      jm                  |       n)| j                  j                  d      jW                          | jH                  j                  |      }|dvr| j                  j                  d       j[                          tA        d!      }| j                  j                  d       j                  d|d|d       | j                  j                  d       jm                  |       n)| j                  j                  d       jW                          | jH                  j                  |      }| j                  j                  t        j                        rt	 dd"lHmI} |jN                  j                  d#d$      } |t        j                  j                  d%|z  d&'      d(      }|j                  d)d*      }|j                         }||}| j                  j                  d+      }|d,vr"|j_                  |       |j[                          n|jW                          | j                  j                  d-      }|j                         D ]  }|j                  |        |r|jv                  r| j                  |jN                     }| j                  j                  d.      }t        j                  d/d0|j                        |j                  z  } |j_                  |        | j                  j                  d1      j_                  t        |j                               | j                  j                  d2      }!|!j                         D ]  }|!j                  |        |j                  }"d&}#|"d3k\  r9|!j                  t3        j                  d4d56      d7d7d       |"d
z  }"|#d
z  }#|"d3k\  r9|"d8kD  r.|!j                  t3        j                  d9d56      d7d7d       |#d
z  }#t        |#      D ]+  }|!j                  t3        j                  d:d56      d7d7d       - |!j                          t        dd&      D ]P  }| j                  |   j                  d8       | j                  j                  d;|d
z   z        j_                  d       R |j                  }$ |$j                  d< d=       g d>}%t        |$      }&|&dkD  rRd}|$D ]  }'|d?k  r|'j                  j                         }(|(j                  d@d@      }(|(j                  dAdA      }(| j                  |(      }(t        j                  |'j                        j                  dB      })t        |'j                  |)|(|'j                        }*|j                  |*       |d
z   }|%|'j                  d
z
  xx   d
z  cc<    t        dd&      D ]f  }|d
z   }+| j                  j                  dC|+z        },|,j_                  t        |%|                | j                  |   j                  |%|   |&z         h t3        j                  t2        j                  j                  D      }-|-j                  dE       |-j                  dE       |-j                  dE       |-j                  dE       dF|jN                  z  }.t3        j                  d8dtA        dG      |.z  H      },|-j                  |,ddd       |j                  |-       |j                          | j                  j                  dI      j[                          | j                  j                  dJ      j[                          nR| j                  j                  dI      jW                          | j                  j                  dJ      jW                          | j                          | j                  j                         D ]  }|j                           | j                  j                  t2        j                  j                         d| j                  _|        | j                  j                  t3        j                  dK      dL       | j                  j                  d7       | j                  |       | j                  j                          | j                  j                          | jH                  j                  || j                  | j
                  | j                  | j                  dM      | _        | j                  |       y # t<        $ r Y Jw xY w# t        $ r}Y d }~[d }~ww xY w)NNdetails_notebookr   Tscrolled_detailsr  notebook_progresszSystem PackagezYour system's package managerlinuxmint-logo-badge-symbolicr   )rc  zFlatpak (%s)r  application_dev_namer9   application_versionzby %szUnknown maintainerre  application_nameapplication_summaryapplication_packageapplication_sizeapplication_remoteapplication_branch)r9   Napplication_homepageHomepagez	<a href='z'>z</a>application_help_pageDocumentation)BeautifulSoup-r   zhttps://hamonikr.org/%sr:   )timeoutlxmldiv
xe_contentapplication_descriptionr   rQ  application_num_reviewsz	%d Reviewz
%d Reviewsapplication_avg_rating	box_starsg      ?r|     )r  
pixel_sizeFr   zsemi-starred-symbolicr}  zstars_count_%dc                     | j                   S r1   )r  )r  s    r6   <lambda>z*Application.show_package.<locals>.<lambda>
  s
    qvv rB   )r  reverse)r   r   r   r   r   rt   '"z%Y.%m.%dzstars_count_%sr~  r  z0https://community.linuxmint.com/software/view/%sz3Click <a href='%s'>here</a> to add your own review.)r   r   rb   reviews_pagedetails_review_boxr  r   r   )r  r  r  r.  rR  rS  set_current_pager  rc  r   r  r  r  r`  ra  SPINNER_TABr  r]  DETAILS_ICON_SIZEr  set_icon_stringr  rt  r  set_button_sensitivityr   SensitivityTypeAUTOr  r  	TypeErrorget_deb_for_flatpakr   r  PACKAGE_TYPE_COMBO_SUMMARYget_flatpak_for_debr   r`  r  r   r  rd  r   r   rs  r   ru  r   r  rt  rf  r  r.  r  rg  set_active_iterrZ  r  get_developerrh  get_versionr   r   r   r^   r,  get_help_urlr+  r  r  r  HAMONIKR_SCREENSHOTSbs4r+  r>   urllibrequesturlopenfindr  r  r  r  r  rv  rw  num_reviewsr%  rw  r   r)  r  r0  r  r  r  r  rN  r  rI  re  r   fromtimestampr  strftimerz  r  rx  r   r   r   r   r  r  r  r  r\   r  rw  r[  r  r  r  r  r  r  r   r  r  r  r  r   on_installer_info_readyon_installer_info_erroron_installer_finishedr;  r  populate_addons)/rK   r   r  r  rk  r  to_use_iterrow_pkginforV  tooltipmatchr  	a_flatpakrc  dev_nameapp_namehomepage_urlhomepage_labelhelppage_urlhelppage_labelr/  r+  hamonikrpkgnamepagetextsrq  r  app_descriptionrQ  r"  rK  label_num_reviewsreview_textr4  rx  remaining_starsr  stars	n_reviewsreviewr  review_dater  
widget_idxrb   add_your_owncommunity_links/                                                  r6   r5  zApplication.show_package
  s   ..t/@/@A!!# 23DDQG*&&t,'') 	t||667IJK&%%007
 	 34EEdFVFVW 66w@Y@YZ--k:%%'66s7J7J7O7OP	##66t7V7VW 	%%' !K,,W5E #a()1-L+MOnp{|C**11#6D+%"89FA11':F009DWI..==? "nn99)..)JdJdmsmxmx9ya/&,,>Pv  yD  EC2299#>D+-&*"%&@"AFA 6##((*0055722<<SAY=Z[11DDSIeEfhkhthth{h{|00AA#F`Bab00557##((*##33K@##44W= 67AA"E'',,.LL##$9:DDRH~~33G<H2~''(>?II!GV^L^J_`''(>?II!L`Jab##$$&''(>?II"M '',,.LL##$9:DDT^^E_E_`gEhi''	43R3RS++- 23==hG 56@@ATATAVW 56@@N 23>>rB 45@@D 45@@D~~66w?z)LL##$:;@@Bz]NLL##$:;FF`ln|G}~LL##$:;LL\ZLL##$:;@@B~~227;z)LL##$;<AAC/NLL##$;<GGamo}H~LL##$;<MMl[LL##$;<AACnn44W===$$U%?%?@	-"),,"6"6s3"?$V^^%;%;<UXg<gqr%;%su{|		%5~~'#"&K ,,112KLj(%%k2  "  "ll--m< --/ 	&Eu%	& W--++GLL9K $ 7 78Q R "**;kF]F]^alaxaxxK''4LL##$<=GGKLbLbHcd//<I"//1 (  '( ++FOC-$$SYY9KXZ%[]bdiklm!1$ C- |$$SYY9P]_%`bginpqr1$?+ r$$SYY9O\^%_afhmopqr  1a[ Rq!..s3''(8AE(BCMMbQR "))GGLL-t<#EGI1} % 2F2v"(.."6"6"8")//#t"<")//#t"<"&//'":&.&<&<V[[&I&R&RS]&^)&//;QWQ^Q^_#-qD&--!+,1,2 q! IA!"QJ LL334Dz4QREOOCaM2NN1%2258i3GHI 77s/I/IJL))"-''+''+**2.ORYR^R^^NIISTCxAy  }K  BK  LE##E4q9OOL)  "LL##N388:LL##$89>>@LL##N388:LL##$89>>@ 	&&(**779 	EMMO	 	33C4H4H4M4MN%&"''4(@)L''33E:W%&&(((* !% = =g>B>Z>Z\`\x\x>B>X>XZ^ZtZtKO !> !Q
 	W%G  		b  s/   %AC> A3AD C>	ADD
ADD	AD"DAD"c                 <    | j                  || j                         y r1   )r5  r  r<  s      r6   on_package_type_button_clickedz*Application.on_package_type_button_clicked   s    '4#5#56rB   c                     	 t         |j                     }| j                  j                  |t        j                        }| j                  |      r|S y #  Y y xY wr1   )r  r   r   r  r  rp  )rK   r   fp_nameflatpak_pkginfos       r6   rH  zApplication.get_flatpak_for_deb#  sT    	$W\\2G"nn99'9C]C]^O''8&& 9	s   AA Ac                     	 t         |j                     }| j                  j                  |t        j                        S #  Y y xY wr1   )r  r   r   r  r  )rK   r   deb_names      r6   rF  zApplication.get_deb_for_flatpak,  s<    	!',,/H>>..x9O9OPP	s	   <? Ac                     t               r9|j                  |j                  k7  r>t        j                  |j
                         nt        j                  t        d             d| _        | j                  |       y )NzQUnable to communicate with servers. Check your Internet connection and try again.T)	r   r8  STATUS_FORBIDDENr   
show_errorerror_messager   r  rV  r   s     r6   rW  z#Application.on_installer_info_error3  sZ    !%%)>)>>""4#5#56q!tuv $$$T*rB   c           
      H   || _         d | _        |j                  }|| j                  k7  r| j                  j                  |      sy | j                  j                  |      r5| j                  j                  d      j                  | j                         nE| j                  j                  d      j                  | j                         | j                  |_        | j                  j                         }d}d }|j                  |j                   k(  r#|j"                  dk(  r{t%        d      }d }|j'                  d       |j)                  d       t%        d      }| j                  j+                  d       | j,                  j/                  t%        d	             nYt%        d
      }|j0                  j3                  d      rd}nd}|j'                  d       |j)                  d       t%        d      }| j                  j+                  d       | j,                  j/                  t%        d             n|j                  |j4                  k(  r|j"                  dk(  rt%        d      }t%        d      }n8t%        d      }t%        d      }|j'                  d       |j)                  d       | j                  j+                  d       | j,                  j/                  d       n|j                  |j6                  k(  rot%        d      }|j'                  d       |j'                  d       |j"                  dk(  rt%        d      }nt%        d      }| j                  j+                  d       n|j                  |j8                  k(  rnt%        d      }|j'                  d       |j)                  d       t%        d      }| j                  j+                  d       | j,                  j/                  d       d }| j                  j;                         | j                  j=                  |       	 | j                  j                  d      j;                  | j>                  |j@                     jB                         | j                  j                  d      j;                  |jH                         	 | j                  j                  d      j;                  |jJ                         d}| j                  jO                  |      rX|jP                  dkD  rtS        |jP                        }n|jT                  dkD  rt%        d      d tS        |jT                        iz  }n~|jP                  dkD  r8t%        d!      tS        |jV                        tS        |jP                        d"z  }n7t%        d#      tS        |jV                        tS        |jT                        d"z  }|j                  |j8                  k7  rR| j                  j                  d$      j;                  |       | jX                  j[                  |jH                  dk7         | j\                  dkD  r,| j                  j_                  | j\                         d| _.        | j                  ja                  d%| jb                  |      | _.        |jB                  je                  d&d      }d }	| j                  jO                  |      r|j0                  j3                  d'      rd(|z  d(|jg                  d)      d   z  d(|jg                  d*      d   z  d(|je                  d)d*      z  d(|jg                  d+      d,   z  d-|d.|d/fD ]V  }
th        jj                  jm                  |
      s#	 tn        jp                  js                  |
      }|ju                         }	|	 nX |	0th        jj                  jm                  d0|z        rd0|z  }	n| j                  j{                  |      }|rr|D ]l  }th        jj                  j}                  | j                  j                         d1|      }
	 tn        jp                  js                  |
      }|ju                         }	 ny nwth        jj                  j}                  | j                  j                         d1|jB                        }
d }	 tn        jp                  js                  |
      }||ju                         }	|	|	|_@        | j                  j                          | j                  dkD  r,| j                  j_                  | j                         d| _C        | j                  ja                  d%| j                  |      | _C        y | j                  j                          y # tD        tF        f$ r8 | j                  j                  d      j;                  |j@                         Y _w xY w# tL        $ r. | j                  j                  d      j;                  d       Y 0w xY w# tv        $ r}ty        |       Y d }~d }~ww xY w# tL        $ r& tn        jp                  js                  |
d/z         }Y w xY w# tL        $ r/ 	 tn        jp                  js                  |
d/z         }n#  Y nxY wY w xY w)2Nr  r9   r  r   r   r   	InstalledTRemovingInstallrX  r  r  zNot installed
InstallingzCannot removezDRemoving this package could cause irreparable damage to your system.zCannot installzFInstalling this package could cause irreparable damage to your system.FzNot availabler  z+Please use apt-get to install this package.z#Use apt-get to remove this package.z	Try againz)Something went wrong. Click to try again.r%  r&  r   r   z$%(localSize)s of disk space required	localSizez?%(downloadSize)s to download, %(localSize)s of disk space freed)downloadSizer  zB%(downloadSize)s to download, %(localSize)s of disk space requiredr$  r   z:i386r  z"/usr/share/applications/%s.desktopr,  r   .r   z/usr/share/app-install/desktop/:z.desktopz/usr/bin/%szexports/share/applications)Fr  r  r   r  r   r  rR  rS  r>  PROGRESS_TAB
ACTION_TABr  parent_windowrK  r   r8  	STATUS_OKtyper   r   r   r   r  rE  r`  ra  r{  STATUS_BROKENr9  r   rg  r  rc  r   r  r  branchversionrE  r   
freed_sizerA   install_sizedownload_sizer  r  r  
disconnectr   r<  r>   r  r  r  r.  r   DesktopAppInfonew_from_filenameget_commandliner  r  get_flatpak_launchablesr-  get_flatpak_root_pathrA  rL  r   r  rF  r   )rK   r   r   style_contextaction_button_descriptionaction_button_iconaction_button_labelsizeinfobin_namerA  desktop_filerM  r  launchables
desktop_ids                  r6   rV  z#Application.on_installer_info_ready>  s:	     $,,d***DNN4O4OPT4U>>&&t,LL##$78II$J[J[\LL##$78II$//Z!%!1!1D **<<>$&!!!!T^^3yyH$&'k#%)"**+=>''(<=,-kN)""006##,,Qz];&'	l###..s3)O&)H&**+?@''(:;,-o,>)""006##,,Q|_=%%)>)>>99(*+O*<'012x0y-*+,<*='012z0{-!../AB!++,@A""007##,,R0''4+=+==&'&8#**+?@**+=>99	)012_0`-012W0X-""007''4+>+>>&'n#**+?@''(:;,-.Y,Z)""006##,,R0!%$$%89++,EF	QLL##$89CCDDbDbcgcncnDoDtDtu 	 45??L	ILL##$9:DDT\\R >>..w7"/@""Q&CD$/1EdFWFW1X#YZ "^_2FtGYGY2Zi}  C  N  N  jO  "PP ab2FtGYGY2Zi}  C  P  P  jQ  "RR !!T%8%88LL##$67AA(K''33DKK24EF ''!+))$*F*FG+,D('+'9'9'A'A)BFB_B_BF(H$ <<''4>>..w7**3/ 98C88>>#;Nq;QQ88>>#;Nq;QQ88;K;KCQT;UU88>>#;Nr;RRFNPXY% %L ww~~l3%#&#5#5#G#G#UD*.*>*>*@K*6 %  7#%* &277>>-(:R+S"/(":K"nnDDWM&1 
')ww||DNN4X4X4Z\x  {E  (Fc#&#5#5#G#G#UD '+&:&:&< $&77<<0T0T0VXtv}  wC  wC  $DLD!"11CCLQ '&*&:&:&<"*D##%++a/""--d.J.JK/0,+/+=+=+E+EiFJFcFcFJ,LD( ##%O .) 	QLL##$89CCDKKP	Q  	ILL##$9:DDRH	Ip  ) %!!HH%  ) c#&#5#5#G#GWaHa#bDc % !!#&#5#5#G#GWaHa#bD! 	!sz   -Af -4g 1hh7:i) Agg3hh	h4h//h47+i&%i&)	j!3"jj!jj! j!c                    | j                   j                         D ]  }|j                           | j                  j	                  |      }|*| j
                  j                  d      j                          y t        j                  t        j                  j                        }t        j                  t        j                  j                        }d}|D ]p  }t        d|j                  z         d}t        | ||||      }| j                   j                  |d       | j
                  j                  d      j!                          r y )Naddons_pagerB  TzDiscovered addon: %sFr   )r  r  r[  r   
get_addonsrR  rS  r   r   rJ  rK  r   r  r   rr   r  r0  )rK   r   rV  addonsr   r   firstaddons           r6   rY  zApplication.populate_addons  s   &&335 	CKKM	 **73>LL##M2779--S->->-I-IJMMs/@/@/K/KL 	>E(5::56E!$IZ[C&&sB/LL##M2;;=	>rB   c                    | j                   | j                   j                  |j                  k(  r| j                  j                  d      j	                  | j
                         |r| j                          y | j                          | j                  j                  d      j                  |dz         t        j                  | j                  |       | j                  j                          y y y )Nr  application_progressg      Y@)r  r   rR  rS  r>  r  start_progress_pulser  r  r   r  r  r  tickr   s        r6   r;  z!Application.on_installer_progress  s    +0D0D0I0IW\\0YLL##$78II$J[J[\))+((*''(>?LLXX]M]^(()9)98D##((* 1Z+rB   c                    | j                   | j                   j                  |j                  j                  k(  r| j                          | j                  j                  d      j                  | j                         | j                  j                  d      j                  d       t        j                  | j                  d       | j                  |j                         y )Nr  r  r   r   )r  r   r   r  rR  rS  r>  r  r  r   r  r  r  r   s     r6   rX  z!Application.on_installer_finished  s    +0D0D0I0IT\\M^M^0^$$&LL##$78II$//ZLL##$:;HHS$$T%5%5q9$,,'rB   c                     | j                   dkD  ry | j                  j                  d      j                          t	        j
                  d| j                        | _         y )Nr   r  i  )r  rR  rS  pulser   r  installer_pulse_tickr   s    r6   r  z Application.start_progress_pulse#  sJ    %%) 67==?%)%5%5dD<U<U%V"rB   c                 x    | j                   j                  d      }|j                          t        j                  S )Nr  )rR  rS  r  r   SOURCE_CONTINUE)rK   rl  s     r6   r  z Application.installer_pulse_tick*  s,    LL##$:;		###rB   c                 p    | j                   dkD  r't        j                  | j                          d| _         y y r  )r  r   r2  r   s    r6   r  zApplication.stop_progress_pulse1  s1    %%)t99:)*D& *rB   r1   )NN)F)}rR   rS   rT   r  r  r  r  r?  r6  r  r  r  r  r   r  rJ   r   r  r  r  r  r  r%  r,  r'  r  r  r  r  r  r  r  r  r  r)  r   r+  r.  r0  r!  r  rO  rW  r  r  r  rp  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r_  r  r  r  r  r  r  r  r  r	  r~  r<  rF  rU  r  r  r  r  r  r  r  r3  r  r  r  r  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  re  rI  r  r  r  r  r5  rt  rH  rF  rW  rV  rY  r;  rX  r  r  r  r  r  s   @r6   r  r  f  s+   .258n+Z{LILL N.J2 h 	# 	#984^ ]!5F:&PUdH5@/.:^ l l\'
b1	'6 - -^ 8 8t " "H.07"%$4l.M64	sJ:/
F	K#*6<
-&**
%$5,Y	,06;z0('-	 F3 F3P	

& (V (VT I I9F5!76*p*.'&+3
 lW lW\66%8
0$ . .,?-B8#; & &B7	+w&r>*+(W$+rB   r  c                   4     e Zd ZdZ fdZd Zd Zd Z xZS )r  z}
    Centers a label's base text, adds ... as a progress/
    activity indicator, without the text getting repositioned.
    c                     t         t        |           d| _        t	        j
                         | _        d| _        | j                  | j                         | j                  j                          y )Nr9   r   )
r   r  rJ   	real_textr   r\   rb   num_dotsr   r   r   s    r6   rJ   zDottedProgressLabel.__init__;  sJ    !413YY[


rB   c                 h    || _         | j                  j                  |       | j                          y r1   )r  rb   rE  _adjust_position)rK   rq  s     r6   rE  zDottedProgressLabel.set_textE  s'    

D!rB   c                     | j                   dk  r| xj                   dz  c_         nd| _         | j                  }d}|| j                   k  r|dz  }|dz  }|| j                   k  r| j                  j                  |       y )Nr:   r   r   r  )r  r  rb   rE  )rK   
new_stringr  s      r6   r  zDottedProgressLabel.tickK  sr    ==1MMQMDM^^
$--#JFA $-- 	

J'rB   c                     | j                   j                         }|j                  | j                  d       |j	                         \  }}| j                         }||z
  dz  }| j                  | j                   |d       y )Nr   r   r   )rb   create_pango_layoutrE  r  get_pixel_sizeget_allocated_widthmove)rK   layoutr  r  parent_widthx_offsets         r6   r  z$DottedProgressLabel._adjust_position[  si    //1+$$&1//1 1$)		$**h*rB   )	rR   rS   rT   __doc__rJ   rE  r  r  r  r  s   @r6   r  r  6  s     ( 
+rB   r  __main__zmkdir -p %sRAYON_NUM_THREADS2)rr  r  rv  r  r  urllib.requestrO  urllib.parseurllib.errorr  r   rB  r  r  r  r  ro  pathlibr   r  operatorr   girequire_versiongi.repositoryr   r   r	   r
   r   r   r   r   r   r#  r   r   r  r  r  miscr   r   r]  r  r   r   r  r  r  PACKAGE_TYPE_COMBO_INDEXr  rG  r  r  getuidr  r  APP
LOCALE_DIRbindtextdomain
textdomainr   setproctitle	IconThemer:  append_search_pathr  r  r-  libdirr  rX  r  
match_datar  dictitemsr  pkg_tile_uiResourceUI_RESOURCES	_registerr<   r;   rA   rI   rD   rY   rV   r   rr   r   r   r  r  r=  rz  r  r  r  r   r  r  Fixedr  rR   r5  r  environr  r   r$  argvr2   rB   r6   <module>r     s=  
  	    1 1       	     	   5%     65 ! N N N  * (    3  . 
s(
           299;!	
WXCHHQK *
   c: &   sJ '   3 OO    - (     . ./Q R % $  + ( + #  34 "#$?"@ %&':%;! "	 $ & & " %3! "( " 	6	7	"'',,v<
=> !1J 12;N$8$8$:;;
F||  -    	$Y

03<< 
0cll 0Qcnn QfCcoo CLR!! Rhe,#"" e,N% %N  Q Qc.. <SZZ $N'+#// N'+`N/+#)) /+b zBIImg4445	zz~~)*2*-

&'
-CGGCHH E` s   P##P-