+
    Ki  c                   s    ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIHtH	t	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHt  ! R R]	P,                  4      tR# )i    N)gettext)Optional)urlparse)GObjectGtkPango)display_error
Downloader)schedule_repeating_at_idle)logger)gtk_safe
human_sizec                   sn  a a ] tR t^t oRtR]P                  P                  R]P                  33R]P                  P                  RR3R]P                  P                  R]P                  33/t	RV3R lV 3R lllt
]V3R lR	 l4       tR
 tV3R lR ltR tR tRR ltV3R lR ltR tRtVtV ;t# )DownloadProgressBoxz-Progress bar used to monitor a file download.completeNcancelerrorc                sx   < V ^8  d   QhRS[ RS[ RS[ RS[S[ ,          RS[S[ ,          RS[RS[S[,          RR	/# )
   urldesttempreferertitle
cancelable
downloaderreturnN)strr   boolr   format__classdict__   "M/usr/lib/python3.14/site-packages/lutris/gui/widgets/download_progress_box.py__annotate__ DownloadProgressBox.__annotate__   sh     8! 8!8! 8! 	8!
 #8! }8! 8! Z(8! 
8!    c                s  < \         S
V `  \        P                  P                  R 7       Wpn        RV n        Wn        W n        T;'       g
    VR,           V n	        W@n
        V'       g(   \        V4      pVP                  : VP                  : 2p\        P                  ! VR7      V n        V P                  P!                  ^ ^ 4       V P                  P#                  RR4       V P                  P%                  ^
4       V P                  P'                  R4       V P                  P#                  R\(        P*                  P,                  4       V P/                  V P                  RR^ 4       \        P0                  ! 4       p	\        P2                  ! 4       V n        V P4                  P7                  ^4       V P4                  P%                  ^4       V P4                  P9                  ^
4       V	P/                  V P4                  RR^ 4       \        P:                  P=                  \?        R4      4      V n         V P@                  PC                  RV PD                  4      V n#        V'       g   V P@                  PI                  R4       V	PK                  V P@                  RR^ 4       V P/                  V	RR^ 4       \        P                  ! 4       V n&        V PL                  P!                  ^ ^ 4       V P/                  V PL                  RR^ 4       V PO                  4        V P@                  PQ                  4        \R        P                  PU                  V P                  4      '       d#   \R        PV                  ! V P                  4       R	# R	# )
)ZorientationFz.tmp)ZlabelZwrapTZ	ellipsizeZ_CancelclickedN),Zsuper__init__r   ZOrientationZVERTICAL_downloaderis_completer   r   r   r   r   ZnetlocZpathZLabel
main_labelZset_alignmentZset_propertyZset_margin_bottomZset_selectabler   ZEllipsizeModeZMIDDLEZ
pack_startBoxZProgressBarprogressbarZset_margin_topZset_margin_rightZButtonZnew_with_mnemonic_cancel_buttonconnecton_cancel_clickedcancel_cb_idset_sensitiveZpack_endprogress_labelZshow_allZhideosZexistsZremove)selfr   r   r   r   r   r   r   Z
parsed_urlZprogress_box	__class__s   &&&&&&&&  r    r%   ZDownloadProgressBox.__init__   ss    	S__%=%=>% 	++TF]	!#J(//AE))%0%%a+$$VT2))"-&&t,$$[%2E2E2L2LMtQ7wwy??,''***1-))"- 0 0$a@ ZZ99!I,G ..66y$BXBXY,,U3d00%BeUA6!iik))!Q/++T4;!77>>$))$$IIdii  %r#   c                    < V ^8  d   QhRS[ /# r   r   r   r   r   r    r!   r"   S   s        J  r#   c                s    V P                   '       g3   \        V P                  V P                  V P                  R R7      V n         V P                   # )T)r   Z	overwrite)r&   r   r   r   r   r3      &r    r   ZDownloadProgressBox.downloaderR   s:    )$((DIIt||_cdDr#   c                sb    V P                   '       d   V P                   P                  4        R # R # N)r&   r   r7   r8   r    cancel_downloadZ#DownloadProgressBox.cancel_downloadX   s%    ##% r#   c                s   < V ^8  d   QhRR/# )r   r   N r   r   r    r!   r"   \   s      t r#   c                s    V P                   p\        T P                  RR7       T P                  P                  4        T P                  P                  R4       TP                  TP                  8X  g   TP                  4        R# R#   \         d7   p\        Y P                  4       R7       T P	                  R4        Rp?R# Rp?ii ; i)zStart downloading a file.)Zparentr   Ng      ?)Zinterval_secondsT)r   ZRuntimeErrorr   Zget_toplevelemitr	   	_progressr,   Zshowr0   stateZDOWNLOADINGstart)r3   r   Zexs   &  r    r?   ZDownloadProgressBox.start\   s    	J 	#4>>CH!((.:#9#99 :  	"%6%6%89IIh	s   B	 	C
+CC
c                s$   V P                   P                  \        R4      4       V P                   P                  V P                  4       V P                   P                  RV P                  4      V n        V P                   P                  R4       R# )z/Transform the cancel button into a retry buttonZRetryr$   TN)r,   	set_labelr+   
disconnectr/   r-   on_retry_clickedr0   r7   r8   r    set_retry_buttonZ$DownloadProgressBox.set_retry_buttonk   si    $$QwZ0%%d&7&78 ..66y$BWBWX((.r#   c                s2   \         P                  ! R 4       VP                  \        R4      4       VP	                  V P
                  4       VP                  RV P                  4      V n        V P                  P                  4        V P                  4        R# )zRetrying downloadZCancelr$   N)r
   debugr@   r+   rA   r/   r-   r.   r   Zresetr?   )r3   Zbutton   &&r    rB   Z$DownloadProgressBox.on_retry_clickedr   sg    ()8%$++,"NN9d6L6LM

r#   c                s    \         P                  ! R4       V P                  4        V P                  P	                  R4       V P                  R4       R# )zCancel the current download.zDownload cancel requestedFr   N)r
   rD   r:   r,   r0   r<   )r3   Z_widgetrE   r    r.   Z%DownloadProgressBox.on_cancel_clickedz   s;    01((/		(r#   c                r5   r6   )r   r   r   r    r!   r"      s      4 r#   c                s   V P                   p\        VP                  4       ^4      pVP                  VP                  VP
                  39   d   V P                  P                  ^ 4       VP                  VP                  8X  d.   V P                  \        R4      4       V P                  R4       R# V P                  \        VP                  4      R,          4       V P                  RVP                  4       R# V P                  P                  V4       R
p\        R4      P                  \        VP                  4      \        VP                   4      \#        VP$                  4      V,          VP&                  R7      pV P                  V4       VP                  VP(                  8X  db   \*        P,                  ! V P.                  V P0                  4       V P2                  P5                  R4       RV n        V P                  R	/ 4       R# R# )zShow download progress.zDownload interruptedr   :NiP   Nr   Fz:{downloaded} / {size} ({speed:0.2f}MB/s), {time} remaining)Z
downloadedZsizeZspeedZtimeTr   i   )r   ZminZcheck_progressr>   Z	CANCELLEDZERRORr*   Zset_fraction	_set_textr+   r<   r   r   r   r   Zdownloaded_sizeZ	full_sizeZfloatZaverage_speedZ	time_leftZ	COMPLETEDr2   Zrenamer   r   r,   r0   r'   )r3   r   ZprogressZ	megabytesZprogress_texts   &    r    r=   ZDownloadProgressBox._progress   s   __
z002A6
 4 4j6F6FGG))!,:#7#77q!789		(#  s:#3#34S9:		':#3#34%%h/	VW^^!*"<"<=J001
001I=%%	 _ 
 	}%z333IIdii+,,U3#DIIj"%r#   c                sp    R P                  \        V4      4      pV P                  P                  V4       R# )z<span size='10000'>{}</span>N)r   r   r1   Z
set_markup)r3   ZtextZmarkups   && r    rF   ZDownloadProgressBox._set_text   s*    /66x~F&&v.r#   )r&   r,   r/   r   r'   r(   r1   r*   r   r   r   r;   )NNNTNr9   )Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__r   ZSignalFlagsZRUN_LASTZTYPE_PYOBJECTZ__gsignals__r%   Zpropertyr   r:   r?   rC   rB   r.   r=   rF   Z__static_attributes__Z__classdictcell__Z__classcell__)r4   r   s   @@r    r   r      s     7 	W((114':O:O9QR7&&//r:'%%..w7L7L6NOL8! 8!t    
& / </ /r#   r   )r2   r    r+   Ztypingr   Zurllib.parser   Zgi.repositoryr   r   r   Zlutris.gui.dialogsr   Zlutris.util.downloaderr   Zlutris.util.jobsr	   Zlutris.util.logr
   Zlutris.util.stringsr   r   r)   r   r;   r#   r    <module>rG      s8    	    ! - - , - 7 " 4R/#'' R/r#   