+
    Ki  c                   s,   R t ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt  ]P                  ! RR	4       ^ R
IHt RtR R lt ! R R4      tR#   ]]3 d2     ]P                  ! RR	4       ^ RIHt Rt L9  ]]3 d    Rt  LGi ; ii ; i)z0AppIndicator/AyatanaAppIndicator based tray icon)gettextN)Gtk)
categories)	get_games)Game)is_display_x11AppIndicator3z0.1)r   TAyatanaAppIndicator3)r   Fc                s$    V ^8  d   QhR\         /# )i   Zreturn)bool)Zformats   "C/usr/lib/python3.14/site-packages/lutris/gui/widgets/status_icon.py__annotate__r
      s     = =d =    c                  sD    \        \        ;'       g    \        4       4      # N)r   APP_INDICATOR_SUPPORTEDr    r   r	   supports_status_iconr      s    ';;>+;<<r   c                   sz   a  ] tR t^ t o RtR tR tR tR tR t	R t
RR	 ltR
 tR tR t]R 4       tR tRtV tR# )LutrisStatusIconzThis is a proxy for the status icon, which can be an AppIndicator or a Gtk.StatusIcon. Or if
neither is supported, it can be a null object that silently does nothing.c                s\   Wn         R V n        R V n        R V n        R V n        \        4       '       d   V P                  4       V n        \        '       de   \        P                  P                  RR\        P                  P                  4      V n        V P                  P                  V P                  4       MaV P                  4       V n        V P                  P                  RV P                   4       V P                  P                  RV P"                  4       V P%                  R4       R # R # )Nnet.lutris.Lutrisactivatez
popup-menuT)application	indicator	tray_iconmenupresent_menur   	_get_menur   AppIndicatorZ	IndicatorZnewZIndicatorCategoryZAPPLICATION_STATUSZset_menu_get_tray_iconconnecton_activateon_menu_popupset_visible)selfr      &&r	   __init__ZLutrisStatusIcon.__init__$   s    &	 !!(DI&&!-!7!7!;!;')<l>\>\>o>o" ''		2!%!4!4!6&&z43C3CD&&|T5G5GHT" "r   c                s    V P                   '       d6   V P                   P                  4       \        P                  P                  8g  # V P
                  '       d   V P
                  P                  4       # R# )zWhether the icon is visibleF)r   Z
get_statusr   IndicatorStatusPASSIVEr   get_visible)r      &r	   
is_visibleZLutrisStatusIcon.is_visible9   sN    >>>>>,,.,2N2N2V2VVV>>>>>--//r   c                s<   V P                   '       d[   V'       d   \        P                  P                  pM\        P                  P                  pV P                   P                  V4       R# V P                  '       d   V P                  P                  V4       R# R# )zSet the visibility of the iconN)r   r   r"   ZACTIVEr#   Z
set_statusr   r   )r   ZvalueZvisible   && r	   r   ZLutrisStatusIcon.set_visibleC   sb    >>>&66==&66>>NN%%g.^^^NN&&u- r   c                sl   \         P                  ! 4       pV P                  4       p^
pVRV  F#  pVP                  V P	                  V4      4       K%  	  VP                  \         P
                  ! 4       4       \         P                  ! 4       V n        V P                  P                  \         P                  P                  R\         P                  P                  4      4       V P                  P                  \        R4      4       V P                  P                  RV P                   4       VP                  V P                  4       \         P"                  ! 4       pVP                  \        R4      4       VP                  RV P$                  4       VP                  V4       VP'                  4        V# )z/Instantiates the menu attached to the tray iconNr   Show Lutrisr   ZQuit)r   ZMenu_get_installed_gamesZappend_make_menu_item_for_gameZSeparatorMenuItemZImageMenuItemr   Z	set_imageZImageZnew_from_icon_nameZIconSizeZMENU	set_label_r   r   MenuItemon_quit_applicationZshow_all)r   r   installed_gamesZnumber_of_games_in_menugameZ	quit_menus   &     r	   r   ZLutrisStatusIcon._get_menuN   s8   xxz335"$#$<%<=DKK55d;< >C))+,--/##CII$@$@ATVYVbVbVgVg$hi##Am$45!!*d.>.>?D%%&LLN	AfI&*d&>&>?Ir   c                s    \         P                  ! 4       pVP                  \        R 4      4       VP	                  R4       VP                  R4       V# )ZLutrisTr   )r   Z
StatusIconZset_tooltip_textr,   r   Zset_from_icon_name)r   r      & r	   r   ZLutrisStatusIcon._get_tray_icond   sC    NN$	""1X;/d#$$%89r   c                s.   V P                   P                  pV'       dw   V P                  '       dc   VP                  4       '       d'   V P                  P	                  \        R 4      4       R# V P                  P	                  \        R4      4       R# R# R# )zHide Lutrisr(   N)r   windowr   r$   r+   r,   )r   
app_windowr1   r	   update_present_menuZ$LutrisStatusIcon.update_present_menuk   si    %%,,
$+++%%''!!++Am,<=!!++Am,<=	 ,:r   Nc                sP   V P                   P                  pVP                  4       '       dj   \        P                  P                  4       pV F3  pVP                  4       '       g   K  VP                  4       V8X  g   K2   R# 	  VP                  4        R# VP                  4        R# )z#Callback to show or hide the windowN)	r   r2   r$   r   ZWindowZlist_toplevelsZget_transient_forZhideZshow)r   _status_iconZ_eventr3   ZwindowsZws   &&&   r	   r   ZLutrisStatusIcon.on_activates   st    %%,,
!!## jj//1G==??q':':'<
'J  OOOOr   c                sD    V P                   P                  RRRRW#4       R# )z$Callback to show the contextual menuN)r   Zpopup)r   r5   ZbuttonZtimes   &&&&r	   r   ZLutrisStatusIcon.on_menu_popup   s    		dD$=r   c                s:    V P                   P                  4        R# )zCallback to quit the programN)r   Zquit)r   _widgetr    r	   r.   Z$LutrisStatusIcon.on_quit_application   s    r   c                s    \         P                  ! 4       pVP                  VR ,          4       VP                  RV P                  VR,          4       V# )Znamer   id)r   r-   r+   r   on_game_selected)r   r0   Z	menu_itemr'   r	   r*   Z)LutrisStatusIcon._make_menu_item_for_game   sA    LLN	DL)*d&;&;T$ZHr   c                 s    \        R^/R7      p \        P                  ! R.4      pV  Uu. uF  q"P                  R4      V9  g   K  VNK  	  p pV P	                  R RR7       V # u upi )z)Adds installed games in order of last useZ	installed)Zfiltersz.hiddenr7   c                 s^    \        V R ,          ;'       g    ^ V R,          ;'       g    ^ 4      # )Z
lastplayedZinstalled_at)Zmax)r0   r%   r	   Z<lambda>Z7LutrisStatusIcon._get_installed_games.<locals>.<lambda>   s&    Sl!3!8!8q$~:N:S:SRSTr   T)ZkeyZreverse)r   r   Zget_game_ids_for_categoriesZgetZsort)r/   Zhidden_game_idsZgs      r	   r)   Z%LutrisStatusIcon._get_installed_games   so     $[!,<=$@@)M&5\otO9[11o\T 	 	
  ]s   A$A$c                sn    V P                   P                  4       p\        V4      P                  V4       R # r   )r   Zget_launch_ui_delegater   Zlaunch)r   r6   Zgame_idZlaunch_ui_delegates   &&& r	   r8   Z!LutrisStatusIcon.on_game_selected   s*    !--DDFW/0r   )r   r   r   r   r   r   )Z__name__Z
__module__Z__qualname__Z__firstlineno____doc__r!   r&   r   r   r   r4   r   r   r.   r*   Zstaticmethodr)   r8   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r	   r   r       s[     Q#*	.,>>  	 	1 1r   r   )r9   r    r,   ZgiZgi.repositoryr   Zlutris.databaser   Zlutris.database.gamesr   Zlutris.gamer   Zlutris.util.displayr   Zrequire_versionr   r   r   ZImportErrorZ
ValueErrorr   r   r   r   r   r	   <module>r:      s    6   	  & +  .(.;"=~1 ~1 	Z  ((
159F"&$ ("'((s)   A 	B#B  BBBB