+
    Ki  c                   sX    ^ RI HtHt ^ RIHt ^ RIHt  ! R R]P                  4      tR# )i    )GObjectGtk)InstallerFileBox)loggerc                   s   a a ] tR t^t oRt^tR]P                  R]33R]P                  RR3/t	V 3R lt
R tR tR t]R	 4       tR
 tR tR tR tR tRtVtV ;t# )InstallerFilesBoxz5List box presenting all files needed for an installerfiles-readyNfiles-availablec                s   < \         SV `  4        R V n        \        4       V n        \        4       V n        / V n        . V n        R # )N)Zsuper__init__	installerZsetready_filesavailable_filesinstaller_files_boxes_file_queue)self	__class__s   &C/usr/lib/python3.14/site-packages/lutris/gui/installer/files_box.pyr   ZInstallerFilesBox.__init__   s9    5"u%'"    c                s8   V P                  4        Wn        V P                  P                  4        V P                  P                  4        V P
                  P                  4        V P                  P                  4        V P                  4        F  pVP                  4        K  	  VP                   F  p\        V4      pVP                  R V P                  4       VP                  RV P                  4       VP                  RV P                  4       W@P
                  VP                  &   V P!                  V4       VP"                  '       g   K  V P                  P!                  VP                  4       K  	  V P%                  4        V P'                  4        R# )z
file-readyzfile-unreadyzfile-availableN)stop_allr   r
   clearr	   r   r   Zget_childrenZdestroyfilesr   Zconnecton_file_readyon_file_unreadyon_file_availableidaddis_readyZshow_allcheck_files_ready)r   r   Zchildinstaller_fileZinstaller_file_boxs   &&   r   load_installerZ InstallerFilesBox.load_installer   s0   """$ ""((* &&(EMMO ) (ooN!1.!A&&|T5G5GH&&~t7K7KL&&'79O9OP<N&&~'8'89HH'(!***  $$^%6%67 . 	 r   c                s   \        V P                  4      \        V P                  P                  4      8X  d*   \        P
                  ! R4       V P                  R4       R# ^ pV P                  P                  4        F  w  r#W P                  9  g   K  VP                  R8X  dI   V^,          pWP                  8:  d   VP                  4        KS  V P                  P                  V4       Kp  VP                  4        K  	  R# )zuIterates through installer files while keeping the number
of simultaneously downloaded files down to a maximum numberzAll files remain availabler   NZdownload)lenr
   r   r   r   infoemitr   itemsZprovidermax_downloadsstartr   Zappend)r   Zstarted_downloadsfile_idZ
file_entrys   &   r   	start_allZInstallerFilesBox.start_all1   s     t##$DNN,@,@(AAKK45II'(#'#=#=#C#C#EG222&&*4%*%(,>,>>"((*((//8$$& $Fr   c                s   V P                   P                  4        V P                  P                  4        FK  w  rVP                  '       g   K  WP
                  9  g   K+  VP                  f   K;  VP                  4        KM  	  R# )zStops all ongoing files gathering.
Iterates through installer files, and call the "stop" command
if they've been started and not available yet.
N)r   r   r   r    Zstartedr
   Z	stop_func)r   r#   Zfile_box   &  r   r   ZInstallerFilesBox.stop_allF   sa    
 	 !%!;!;!A!A!CGG3G3G$GHL^L^Lj""$ "Dr   c                sl    \        V P                  4      \        V P                  P                  4      8H  # )z0Return True if all files are ready to be fetched)r   r	   r   r   r      &r   r   ZInstallerFilesBox.is_readyP   s)     4##$DNN,@,@(AAAr   c                s>    V P                  RV P                  4       R# )z?Checks if all installer files are ready and emit a signal if sor   N)r   r   r&   r'   r   r   Z#InstallerFilesBox.check_files_readyU   s    		-/r   c                    VP                   P                  pV P                  P                  V4       V P	                  4        R# )zcFired when a file has a valid provider.
If the file is user provided, it must set to a valid path.
N)r   r   r	   r   r   r   widgetr#      && r   r   ZInstallerFilesBox.on_file_readyY   s5     ''**W% r   c                r(   )zKFired when a file can't be provided.
Blocks the installer from continuing.
N)r   r   r	   Zdiscardr   r)   r+   r   r   Z!InstallerFilesBox.on_file_unreadya   s5     ''**  ) r   c                s   VP                   P                  p\        P                  ! RV4       V P                  P                  V4       V P                  '       d<   V P                  P                  4       pV P                  V,          P                  4        \        V P                  4      \        V P                  P                  4      8X  d*   \        P                  ! R4       V P                  R4       R# R# )zA new file is availablez%s is availablezAll files availabler   N)r   r   r   Zdebugr
   r   r   Zpopr   r"   r   r   r   r   r   )r   r*   r#   Znext_file_ids   &&  r   r   Z#InstallerFilesBox.on_file_availablei   s    ''**&0  )++//1L&&|4::<t##$DNN,@,@(AAKK-.II'( Br   c                s    / pV P                   P                   F"  pVP                  VP                  4       4       K$  	  V# )z=Return a mapping of the local files usable by the interpreter)r   r   ZupdateZget_dest_files_by_id)r   r   r   r%   r   get_game_filesZ InstallerFilesBox.get_game_filesu   s5    "nn22NLL<<>? 3r   )r   r
   r   r   r	    )Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__r!   r    ZSIGNAL_RUN_LASTZboolZ__gsignals__r   r   r$   r   Zpropertyr   r   r   r   r   r,   Z__static_attributes__Z__classdictcell__Z__classcell__)r   Z__classdict__s   @@r   r   r      s     ?M 	//w?G33T2>L
!0'*% B B0!!
) r   r   N)	Zgi.repositoryr    r   Zlutris.gui.installer.file_boxr   Zlutris.util.logr   ZListBoxr   r-   r   r   <module>r.      s     & : "s sr   