Ë
    Î£jW†  ã                   óÎ  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dl m!Z! d d	l"m#Z# d d
l$m%Z%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG  e j�                  «       ZIdZJ G d„ de«      ZK G d„ de«      ZLy)é    N)ÚPath)Úplatform)ÚQSizeÚQt)Ú	QCheckBoxÚ	QGroupBoxÚQHBoxLayoutÚQLabelÚQListWidgetÚQListWidgetItemÚQMainWindowÚQMenuÚQMessageBoxÚQProgressDialogÚQPushButtonÚQScrollAreaÚQStackedWidgetÚQVBoxLayoutÚQWidget)Úconfig)ÚInstallOperationÚ
Sourcemods)Úmigrate_old_particle_files)Úscan_for_legacy_conflicts)Úaddon_metadataÚsettings)ÚVERSION)Ú
AddonPanel)ÚAddonsManager)Úconfirm_actionÚ
show_errorÚshow_success)Údownload_cueki_mods)ÚInstallController)ÚModDropZone)ÚProfileDialog)Ú
BG_DEFAULTÚBUTTON_STYLEÚCODE_BGÚDANGER_BUTTON_STYLEÚ
FG_DEFAULTÚ
FG_LIGHTERÚFG_MUTEDÚFONT_SIZE_HEADERÚFONT_SIZE_NORMALÚFONT_SIZE_SMALLÚPRIMARYÚPROFILE_ADD_BUTTON_STYLEÚPROFILE_BUTTON_STYLEÚSIDEBAR_NAV_STYLEé,   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )Ú
SidebarNavc                 ó¦   •— t         ‰| �  |«       | j                  t        dd«      «       | j	                  d«       | j                  t        «       y )Né   é   )ÚsuperÚ__init__ÚsetIconSizer   Ú
setSpacingÚsetStyleSheetr4   )ÚselfÚparentÚ	__class__s     €úBC:\Users\pivot\Documents\cueki\casual-preloader\gui\main_window.pyr<   zSidebarNav.__init__A   s?   ø€ Ü‰Ñ˜Ô Ø×Ñœ˜r 2›Ô'Ø�‰˜ÔØ×ÑÔ,Õ-ó    ©N)Ú__name__Ú
__module__Ú__qualname__r<   Ú__classcell__©rB   s   @rC   r7   r7   @   s   ø„ ÷.ñ .rD   r7   c                   ó2  ‡ — e Zd Zdefˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zdefd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$e&fd%„Z'd&„ Z(d'„ Z)d(„ Z*d)e+fd*„Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1ˆ xZ2S )0ÚParticleManagerGUIÚtf_directoryc                 óò  •— t         ‰| �  «        || _        t        | _        t	        «       | _        t        | j                  «      | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        | j;                  d«       | j=                  dd«       | j?                  dd«       | jA                  d«       | jC                  «        | jE                  «        | j                  jF                  sP| j                  jI                  tJ        jL                  jN                  | j                  tJ        jL                  d¬«       n?| j                  jP                  }|r'|jR                  s| j                  | j                  _)        | jU                  «        tW        «        | j                  jX                  r%| j                  jZ                  j]                  d«       | j_                  «        | j                  ja                  «        | jc                  «        | je                  «        | jg                  «        | j                  jh                  r| j                  jk                  «        | jm                  «        | jo                  «        | jq                  «        y )Nzcukei's casual pre-loader :)i°  i¼  T)Úactivate)9r;   r<   Úinitial_tf_directoryr   r   Úaddon_managerr$   Úinstall_managerÚprogress_dialogÚmod_drop_zoneÚaddon_panelÚaddons_listÚaddon_descriptionÚinstall_buttonÚdownload_mods_buttonÚnav_listÚcontent_stackÚprofile_add_btnÚconsole_checkboxÚsuppress_updates_checkboxÚskip_launch_popup_checkboxÚdisable_paint_checkboxÚfix_mdl_paths_checkboxÚskip_quickprecache_checkboxÚrestore_buttonÚcurrent_profile_labelÚprofile_btnÚprofile_menuÚsimple_mode_btnÚsetWindowTitleÚsetMinimumSizeÚresizeÚsetAcceptDropsÚsetup_uiÚsetup_signalsÚprofilesÚcreate_profiler   ÚDEFAULTÚnameÚactive_profileÚ	game_pathÚload_tf_directoryr   Úsimple_particle_modeÚconflict_matrixÚset_simple_modeÚupdate_simple_mode_buttonÚupdate_matrixÚload_addonsÚscan_for_mcp_filesÚrescan_addon_contentsÚdetails_collapsedÚtoggle_details_collapseÚrebuild_profile_menuÚupdate_load_order_displayÚsync_settings_page)r@   rM   ÚactiverB   s      €rC   r<   zParticleManagerGUI.__init__I   s€  ø€ Ü‰ÑÔØ$0ˆÔ!ô !ˆŒÜ*›_ˆÔÜ0°·±Ó?ˆÔð  $ˆÔØ15ˆÔØ.2ˆÔØˆÔØ!%ˆÔØ"ˆÔØ$(ˆÔ!ØˆŒØ!ˆÔØ#ˆÔð !%ˆÔØ)-ˆÔ&Ø*.ˆÔ'Ø&*ˆÔ#Ø&*ˆÔ#Ø+/ˆÔ(Ø"ˆÔØ%)ˆÔ"ð  ˆÔØ ˆÔð  $ˆÔð 	×ÑÐ:Ô;Ø×Ñ˜D #Ô&Ø�‰�D˜#ÔØ×Ñ˜DÔ!Ø�‰ŒØ×ÑÔð �}‰}×%Ò%Ø�M‰M×(Ñ(¬×);Ñ);×)@Ñ)@À$×B[ÑB[Ô]g×]oÑ]oð  }AÐ(õ  Bð —]‘]×1Ñ1ˆFÙ˜f×.Ò.Ø*.×*CÑ*C�—‘Ô'ð 	×ÑÔ ô 	#Ô$ð �=‰=×-Ò-Ø×Ñ×.Ñ.×>Ñ>¸tÔDØ×&Ñ&Ô(à×Ñ×(Ñ(Ô*à×ÑÔØ×ÑÔ!Ø×"Ñ"Ô$ð �=‰=×*Ò*Ø×Ñ×4Ñ4Ô6ð 	×!Ñ!Ô#ð 	×&Ñ&Ô(ð 	×ÑÕ!rD   c                 ó^
  — t        «       }| j                  |«       t        |«      }|j                  dddd«       |j	                  d«       t        «       }|j                  d«       |j                  dt        › d�«       t        |«      }|j                  dddd«       |j	                  d«       t        «       | _
        dD ]c  \  }}t        dk(  r|dk(  rd	nd
}t        |› |› d
|› �«      }|j                  t        dt        «      «       | j                  j!                  |«       Œe | j                  j#                  d«       |j%                  | j                  «       |j'                  «        t        «       }	t        |	«      }
|
j                  dddd«       t)        d«      }|j                  dt*        › dt,        › d�«       |
j%                  |«       t        «       }|j                  dddd«       |j	                  d«       t/        d«      | _        | j0                  j3                  d«       | j0                  j                  t4        «       t7        | «      | _        | j0                  j;                  | j8                  «       |j%                  | j0                  d«       t/        d«      | _        | j<                  j?                  dd«       | j<                  j                  t@        «       | j<                  jB                  jE                  | jF                  «       |j%                  | j<                  d«       |
jI                  |«       |j%                  |	«       t        «       }t        |«      }|j                  dddd«       t/        d«      | _%        | jJ                  j3                  d«       | jJ                  jM                  dd«       | jJ                  j                  dtN        › dtP        › d�«       |j%                  | jJ                  «       |j%                  |«       |j%                  |d«       tS        «       | _*        | jT                  j                  dtV        › d�«       | jT                  j%                  | jY                  «       «       | jT                  j%                  | j[                  «       «       | jT                  j%                  | j]                  «       «       |j%                  | jT                  d«       | j                  j^                  jE                  | jT                  j`                  «       y )Nr   é–   zbackground-color: Ú;é   ))Ú	Particlesu   â—†)ÚAddonsu   â—‡)ÚSettingsu   âš™Úwin32r‰   Ú z  é
   ÚProfileúcolor: z; font-size: z TF2é   é   Ú+ÚInstallé$   ÚprimaryTz.; color: white; font-weight: bold; font-size: )1r   ÚsetCentralWidgetr	   ÚsetContentsMarginsr>   ÚsetFixedWidthr?   r)   r   r7   rZ   r   r   ÚsetSizeHintr   ÚNAV_ITEM_HEIGHTÚaddItemÚsetCurrentRowÚ	addWidgetÚ
addStretchr
   r-   r0   r   re   ÚsetFixedHeightr3   r   rf   ÚsetMenur\   ÚsetFixedSizer2   ÚclickedÚconnectÚcreate_new_profileÚ	addLayoutrX   ÚsetPropertyr1   r/   r   r[   r'   Úcreate_particles_pageÚcreate_addons_pageÚcreate_settings_pageÚcurrentRowChangedÚsetCurrentIndex)r@   ÚcentralÚmain_layoutÚsidebarÚsidebar_layoutrq   Ú	icon_charÚleadingÚitemÚprofile_groupÚprofile_layoutÚprofile_labelÚprofile_rowÚinstall_containerÚinstall_layouts                  rC   rl   zParticleManagerGUI.setup_uiž   s?  € Ü“)ˆØ×Ñ˜gÔ&Ü! 'Ó*ˆØ×&Ñ& q¨!¨Q°Ô2Ø×Ñ˜qÔ!ô “)ˆØ×Ñ˜cÔ"Ø×ÑÐ 2´7°)¸1Ð=Ô>Ü$ WÓ-ˆØ×)Ñ)¨!¨Q°°1Ô5Ø×!Ñ! !Ô$ô #›ˆŒÛf‰OˆD�)Ü%¨Ò0°T¸ZÒ5G‘cÈTˆGÜ" g Y¨y¨k¸¸D¸6Ð#BÓCˆDØ×ÑœU 1¤oÓ6Ô7Ø�M‰M×!Ñ! $Õ'ð	  gð
 	�‰×#Ñ# AÔ&Ø× Ñ  §¡Ô/ð 	×!Ñ!Ô#ô  ›	ˆÜ$ ]Ó3ˆØ×)Ñ)¨"¨b°"°bÔ9ä˜yÓ)ˆØ×#Ñ# g¬h¨Z°}Ä_ÐDUÐUVÐ$WÔXØ× Ñ  Ô/ä!“mˆØ×&Ñ& q¨!¨Q°Ô2Ø×Ñ˜qÔ!ä& vÓ.ˆÔØ×Ñ×'Ñ'¨Ô+Ø×Ñ×&Ñ&Ô';Ô<Ü! $›KˆÔØ×Ñ× Ñ  ×!2Ñ!2Ô3Ø×Ñ˜d×.Ñ.°Ô2ä*¨3Ó/ˆÔØ×Ñ×)Ñ)¨"¨bÔ1Ø×Ñ×*Ñ*Ô+CÔDØ×Ñ×$Ñ$×,Ñ,¨T×-DÑ-DÔEØ×Ñ˜d×2Ñ2°AÔ6à× Ñ  Ô-Ø× Ñ  Ô/ô $›IÐÜ$Ð%6Ó7ˆØ×)Ñ)¨"¨a°°RÔ8ä)¨)Ó4ˆÔØ×Ñ×*Ñ*¨2Ô.Ø×Ñ×'Ñ'¨	°4Ô8Ø×Ñ×)Ñ)Ø ¤ 	Ð)WÔXhÐWiÐijÐkô	
ð 	× Ñ  ×!4Ñ!4Ô5Ø× Ñ Ð!2Ô3à×Ñ˜g qÔ)ä+Ó-ˆÔØ×Ñ×(Ñ(Ð+=¼j¸\ÈÐ)KÔLà×Ñ×$Ñ$ T×%?Ñ%?Ó%AÔBØ×Ñ×$Ñ$ T×%<Ñ%<Ó%>Ô?Ø×Ñ×$Ñ$ T×%>Ñ%>Ó%@ÔAà×Ñ˜d×0Ñ0°!Ô4ð 	�‰×'Ñ'×/Ñ/°×0BÑ0B×0RÑ0RÕSrD   c                 ó´  — t        «       }t        |«      }|j                  dddd«       t        d«      }|j	                  dt
        › dt        › d�«       |j                  |«       t        | | j                  | j                  «      | _        |j                  | j                  d«       t        «       }t        d«      }|j	                  t        «       |j                  j!                  | j"                  «       |j                  |«       |j%                  «        t        d«      | _        | j&                  j	                  t        «       | j&                  j)                  d	«       | j&                  j+                  d	«       | j&                  j                  j!                  | j,                  «       |j                  | j&                  «       |j/                  |«       |S )
Nr9   zParticle Selectionúfont-size: ú; font-weight: bold; color: r…   r�   úDeselect AllzSimple Mode: ONT)r   r   r–   r
   r?   r.   r+   rœ   r%   r   r|   rT   r	   r   r(   r¡   r¢   Údeselect_all_particlesr�   rg   ÚsetCheckableÚ
setCheckedÚtoggle_particle_moder¤   )r@   ÚpageÚlayoutÚheaderÚ
btn_layoutÚdeselect_btns         rC   r¦   z(ParticleManagerGUI.create_particles_pageó   s|  € Ü‹yˆÜ˜TÓ"ˆØ×!Ñ! " b¨"¨bÔ1äÐ,Ó-ˆØ×Ñ˜{Ô+;Ð*<Ð<XÔYcÐXdÐdeÐfÔgØ×Ñ˜Ô ô )¨¨t¯}©}¸d×>XÑ>XÓYˆÔØ×Ñ˜×+Ñ+¨QÔ/ô !“]ˆ
ä" >Ó2ˆØ×"Ñ"¤<Ô0Ø×Ñ×$Ñ$ T×%@Ñ%@ÔAØ×Ñ˜\Ô*à×ÑÔä*Ð+<Ó=ˆÔØ×Ñ×*Ñ*¬<Ô8Ø×Ñ×)Ñ)¨$Ô/Ø×Ñ×'Ñ'¨Ô-Ø×Ñ×$Ñ$×,Ñ,¨T×-FÑ-FÔGØ×Ñ˜T×1Ñ1Ô2à×Ñ˜Ô$ØˆrD   c                 óh   — t        | dd«      r%| j                  j                  j                  «        y y )Nr»   z,Deselect all particle effects for every mod?)r    rT   rv   Údeselect_all©r@   s    rC   r¼   z)ParticleManagerGUI.deselect_all_particles  s0   € Ü˜$ ØHôJà×Ñ×.Ñ.×;Ñ;Õ=ðJrD   c                 ót  ‡ — t        «       }t        |«      }|j                  dddd«       t        d«      }|j	                  dt
        › dt        › d�«       |j                  |«       t        «       ‰ _	        ‰ j                  j                  ‰ _
        ‰ j                  j                  ‰ _        ‰ j                  j                  j                  ‰ j                  «       ‰ j                  j                  j                  ‰ j                   «       ‰ j                  j"                  j                  ‰ j$                  «       ‰ j                  j&                  j                  ‰ j(                  «       ‰ j                  j*                  j                  ‰ j,                  «       ‰ j                  j.                  j                  ‰ j0                  «       ‰ j                  j2                  j                  ˆ fd„«       ‰ j                  j4                  j                  ‰ j0                  «       |j                  ‰ j                  «       |S )Nr9   zAddon Managementr¹   rº   r…   c                 ó2   •— t        ‰j                  d| «      S )Nr}   )Úsetattrr   )Úxr@   s    €rC   Ú<lambda>z7ParticleManagerGUI.create_addons_page.<locals>.<lambda>.  s   ø€ ”g˜dŸm™mÐ-@À!ÔDrD   )r   r   r–   r
   r?   r.   r+   rœ   r   rU   rV   rW   Údelete_button_clickedr¢   Údelete_selected_addonsÚaddon_selection_changedÚon_addon_clickÚaddon_checkbox_changedÚon_addon_checkbox_changedÚload_order_changedÚon_load_order_changedÚopen_folder_clickedÚopen_addons_folderÚrefresh_clickedrz   Údetails_collapse_changedÚaddon_modified)r@   rÀ   rÁ   rÂ   s   `   rC   r§   z%ParticleManagerGUI.create_addons_page  s°  ø€ Ü‹yˆÜ˜TÓ"ˆØ×!Ñ! " b¨"¨bÔ1äÐ*Ó+ˆØ×Ñ˜{Ô+;Ð*<Ð<XÔYcÐXdÐdeÐfÔgØ×Ñ˜Ô ô &›<ˆÔØ×+Ñ+×7Ñ7ˆÔØ!%×!1Ñ!1×!CÑ!CˆÔà×Ñ×.Ñ.×6Ñ6°t×7RÑ7RÔSØ×Ñ×0Ñ0×8Ñ8¸×9LÑ9LÔMØ×Ñ×/Ñ/×7Ñ7¸×8VÑ8VÔWØ×Ñ×+Ñ+×3Ñ3°D×4NÑ4NÔOØ×Ñ×,Ñ,×4Ñ4°T×5LÑ5LÔMØ×Ñ×(Ñ(×0Ñ0°×1AÑ1AÔBØ×Ñ×1Ñ1×9Ñ9ÛDô	
ð 	×Ñ×-Ñ-×5Ñ5°d×6FÑ6FÔGà×Ñ˜×)Ñ)Ô*ØˆrD   c                 ó²  ‡ — t        «       }t        |«      }|j                  dddd«       t        d«      }|j	                  dt
        › dt        › d�«       |j                  |«       t        «       }|j                  d«       |j	                  d«       t        «       }t        |«      }t        d«      }t        |«      }t        d	«      ‰ _        ‰ j                  j	                  d
t        › d�«       |j                  ‰ j                  «       t        «       }	t        d«      }
|
j	                  t        «       |
j                   j#                  ‰ j$                  «       |	j                  |
«       t        d«      }|j	                  t        «       |j                   j#                  ‰ j&                  «       |	j                  |«       |	j)                  «        |j+                  |	«       |j                  |«       t        d«      }t        |«      }t-        d«      ‰ _        ‰ j.                  j0                  j#                  ˆ fd„«       |j                  ‰ j.                  «       t-        d«      ‰ _        ‰ j2                  j0                  j#                  ˆ fd„«       |j                  ‰ j2                  «       t-        d«      ‰ _        ‰ j4                  j0                  j#                  ˆ fd„«       |j                  ‰ j4                  «       t-        d«      ‰ _        ‰ j6                  j0                  j#                  ˆ fd„«       |j                  ‰ j6                  «       |j                  |«       t        d«      }t        |«      }t-        d«      ‰ _        ‰ j8                  j0                  j#                  ˆ fd„«       |j                  ‰ j8                  «       t-        d«      ‰ _        ‰ j:                  j=                  d«       ‰ j:                  j0                  j#                  ˆ fd„«       |j                  ‰ j:                  «       t-        d«      ‰ _        ‰ j>                  j0                  j#                  ˆ fd„«       |j                  ‰ j>                  «       |j                  |«       t        d«      }t        |«      }t        d«      ‰ _         ‰ j@                  j	                  t        «       ‰ j@                  j                   j#                  ˆ fd „«       |j                  ‰ j@                  «       t        d!«      }|j	                  d
t        › d�«       |jC                  d«       |j                  |d"«       |j                  |«       t        d#«      }t        |«      }t        d$«      ‰ _"        ‰ jD                  j	                  tF        «       ‰ jD                  j                   j#                  ‰ jH                  «       |j                  ‰ jD                  «       t        d%«      }|j	                  d
t        › d�«       |jC                  d«       |j                  |d"«       |j                  |«       |j)                  «        t        d&tJ        › �«      }|j	                  d
tL        › d�«       |j                  |«       |jO                  |«       |j                  |«       |S )'Nr9   r‰   r¹   rº   r…   TzQScrollArea { border: none; }zProfile SettingszCurrent profile: TF2rŽ   zEdit Profile...úDelete ProfilezPreloader SettingszEnable TF2 console on startupc                  ób   •— t        ‰ j                  d‰ j                  j                  «       «      S )NÚshow_console_on_startup)rÊ   r   r]   Ú	isCheckedrÇ   s   €rC   rÌ   z9ParticleManagerGUI.create_settings_page.<locals>.<lambda>a  s"   ø€ ”G˜DŸM™MÐ+DÀd×F[ÑF[×FeÑFeÓFgÔhrD   zSuppress update notificationsc                  ób   •— t        ‰ j                  d‰ j                  j                  «       «      S )NÚsuppress_update_notifications)rÊ   r   r^   rÞ   rÇ   s   €rC   rÌ   z9ParticleManagerGUI.create_settings_page.<locals>.<lambda>g  s"   ø€ ”G˜DŸM™MÐ+JÈD×LjÑLj×LtÑLtÓLvÔwrD   z Suppress launch options reminderc                  ób   •— t        ‰ j                  d‰ j                  j                  «       «      S )NÚskip_launch_options_popup)rÊ   r   r_   rÞ   rÇ   s   €rC   rÌ   z9ParticleManagerGUI.create_settings_page.<locals>.<lambda>m  s"   ø€ ”G˜DŸM™MÐ+FÈ×HgÑHg×HqÑHqÓHsÔtrD   z(Suppress launch options cleanup reminderc                  ób   •— t        ‰ j                  d‰ j                  j                  «       «      S )NÚ!skip_launch_options_cleanup_popup)rÊ   r   Ú"skip_launch_cleanup_popup_checkboxrÞ   rÇ   s   €rC   rÌ   z9ParticleManagerGUI.create_settings_page.<locals>.<lambda>s  s2   ø€ ”G˜DŸM™MÐ+NÐPT×PwÑPw÷  QBñ  QBó  QDô  ErD   ÚAdvancedz!Disable paint colors on cosmeticsc                  ób   •— t        ‰ j                  d‰ j                  j                  «       «      S )NÚdisable_paint_colors)rÊ   r   r`   rÞ   rÇ   s   €rC   rÌ   z9ParticleManagerGUI.create_settings_page.<locals>.<lambda>~  s"   ø€ ”G˜DŸM™MÐ+AÀ4×C^ÑC^×ChÑChÓCjÔkrD   z\Attempt to automatically fix broken models. Try disabling this first if something is broken!z~Detects models with broken or incorrect material paths and rewrites them during install so the model caches correctly in-game.c                  ób   •— t        ‰ j                  d‰ j                  j                  «       «      S )NÚfix_mdl_paths)rÊ   r   ra   rÞ   rÇ   s   €rC   rÌ   z9ParticleManagerGUI.create_settings_page.<locals>.<lambda>ˆ  s!   ø€ ”G˜DŸM™M¨?¸D×<WÑ<W×<aÑ<aÓ<cÔdrD   zRSkip QuickPrecache (advanced users only! May cause model unloading for map props!)c                  ób   •— t        ‰ j                  d‰ j                  j                  «       «      S )NÚskip_quickprecache)rÊ   r   rb   rÞ   rÇ   s   €rC   rÌ   z9ParticleManagerGUI.create_settings_page.<locals>.<lambda>Ž  s"   ø€ ”G˜DŸM™MÐ+?À×AaÑAa×AkÑAkÓAmÔnrD   zRecommended ModszDownload cueki's Modsc                  ó0   •— t        ‰ ‰ j                  «      S rE   )r#   rY   rÇ   s   €rC   rÌ   z9ParticleManagerGUI.create_settings_page.<locals>.<lambda>š  s   ø€ Ô:MÈdÐTX×TmÑTmÔ:nrD   zLTF2 particles + addons personally fixed to work with this preloader (~77 MB)r�   ÚRestorezRestore Game FileszERemove all installed mods and restore the game to its original state.z	Version: )(r   r   r–   r
   r?   r.   r+   rœ   r   ÚsetWidgetResizabler   rd   r-   r	   r   r(   r¡   r¢   Úedit_current_profileÚdelete_current_profiler�   r¤   r   r]   ÚstateChangedr^   r_   rå   r`   ra   Ú
setToolTiprb   rY   ÚsetWordWraprc   r*   Ústart_restorer   r,   Ú	setWidget)r@   rÀ   Úpage_layoutrÂ   ÚscrollÚscroll_contentrÁ   r²   Úprofile_group_layoutÚprofile_btn_layoutÚedit_profile_btnÚdelete_profile_btnÚpreloader_groupÚpreloader_layoutÚadvanced_groupÚadvanced_layoutÚdownloads_groupÚdownloads_layoutÚdownloads_descÚrestore_groupÚrestore_layoutÚrestore_descÚversion_labels   `                      rC   r¨   z'ParticleManagerGUI.create_settings_page5  s´  ø€ Ü‹yˆÜ! $Ó'ˆØ×&Ñ& r¨2¨r°2Ô6ä˜
Ó#ˆØ×Ñ˜{Ô+;Ð*<Ð<XÔYcÐXdÐdeÐfÔgØ×Ñ˜fÔ%ô “ˆØ×!Ñ! $Ô'Ø×ÑÐ<Ô=ä ›ˆÜ˜^Ó,ˆä!Ð"4Ó5ˆÜ*¨=Ó9Ðä%+Ð,BÓ%CˆÔ"Ø×"Ñ"×0Ñ0°7¼8¸*ÀAÐ1FÔGØ×&Ñ& t×'AÑ'AÔBä(›]ÐÜ&Ð'8Ó9ÐØ×&Ñ&¤|Ô4Ø× Ñ ×(Ñ(¨×)BÑ)BÔCØ×$Ñ$Ð%5Ô6ä(Ð)9Ó:ÐØ×(Ñ(¬Ô6Ø×"Ñ"×*Ñ*¨4×+FÑ+FÔGØ×$Ñ$Ð%7Ô8Ø×%Ñ%Ô'Ø×&Ñ&Ð'9Ô:à×Ñ˜Ô'ä#Ð$8Ó9ˆÜ& Ó7Ðä )Ð*IÓ JˆÔØ×Ñ×*Ñ*×2Ñ2Ûhô	
ð 	×"Ñ" 4×#8Ñ#8Ô9ä)2Ð3RÓ)SˆÔ&Ø×&Ñ&×3Ñ3×;Ñ;Ûwô	
ð 	×"Ñ" 4×#AÑ#AÔBä*3Ð4VÓ*WˆÔ'Ø×'Ñ'×4Ñ4×<Ñ<Ûtô	
ð 	×"Ñ" 4×#BÑ#BÔCä2;Ð<fÓ2gˆÔ/Ø×/Ñ/×<Ñ<×DÑDó Eô	
ð 	×"Ñ" 4×#JÑ#JÔKà×Ñ˜Ô)ä" :Ó.ˆÜ% nÓ5ˆä&/Ð0SÓ&TˆÔ#Ø×#Ñ#×0Ñ0×8Ñ8Ûkô	
ð 	×!Ñ! $×"=Ñ"=Ô>ä&/ð  1Oó  'PˆÔ#Ø×#Ñ#×.Ñ.ð5ô	
ð 	×#Ñ#×0Ñ0×8Ñ8Ûdô	
ð 	×!Ñ! $×"=Ñ"=Ô>ä+4ð  6Jó  ,KˆÔ(Ø×(Ñ(×5Ñ5×=Ñ=Ûnô	
ð 	×!Ñ! $×"BÑ"BÔCà×Ñ˜Ô(ô $Ð$6Ó7ˆÜ& Ó7Ðä$/Ð0GÓ$HˆÔ!Ø×!Ñ!×/Ñ/´Ô=Ø×!Ñ!×)Ñ)×1Ñ1Ó2nÔoØ×"Ñ" 4×#<Ñ#<Ô=äÐ nÓoˆØ×$Ñ$ w¬x¨j¸Ð%:Ô;Ø×"Ñ" 4Ô(Ø×"Ñ" >°1Ô5à×Ñ˜Ô)ô " )Ó,ˆÜ$ ]Ó3ˆä)Ð*>Ó?ˆÔØ×Ñ×)Ñ)Ô*=Ô>Ø×Ñ×#Ñ#×+Ñ+¨D×,>Ñ,>Ô?Ø× Ñ  ×!4Ñ!4Ô5äÐeÓfˆØ×"Ñ" W¬X¨J°aÐ#8Ô9Ø× Ñ  Ô&Ø× Ñ  ¨qÔ1à×Ñ˜Ô'à×ÑÔô  ¬7¨)Ð4Ó5ˆØ×#Ñ# g¬j¨\¸Ð$;Ô<Ø×Ñ˜Ô'à×Ñ˜Ô(Ø×Ñ˜fÔ%ØˆrD   c                 ó8  — | j                   j                  j                  | j                  «       | j                  j
                  j                  | j                  «       | j                  j                  j                  | j                  «       | j                  j                  j                  | j                  «       | j                  j                  j                  | j                  «       | j                  j                  j                  | j                  «       y rE   )rX   r¡   r¢   Ústart_installrT   Úaddon_updatedrz   rR   Úprogress_updateÚupdate_progressÚoperation_errorr!   Úoperation_successr"   Úoperation_finishedÚon_operation_finishedrÇ   s    rC   rm   z ParticleManagerGUI.setup_signals¿  sÀ   € Ø×Ñ×#Ñ#×+Ñ+¨D×,>Ñ,>Ô?à×Ñ×(Ñ(×0Ñ0°×1AÑ1AÔBà×Ñ×,Ñ,×4Ñ4°T×5IÑ5IÔJØ×Ñ×,Ñ,×4Ñ4°T·_±_ÔEØ×Ñ×.Ñ.×6Ñ6°t×7HÑ7HÔIØ×Ñ×/Ñ/×7Ñ7¸×8RÑ8RÕSrD   c                 ó  — | j                   j                   }| j                  r;| j                  j                  r%| j                  j                  j	                  |«       || j                   _        | j                  «        y rE   )r   ru   rT   rv   rw   rx   )r@   Ú	new_states     rC   r¿   z'ParticleManagerGUI.toggle_particle_modeÉ  s]   € ØŸ™×:Ñ:Ð:ˆ	à×Ò $×"4Ñ"4×"DÒ"DØ×Ñ×.Ñ.×>Ñ>¸yÔIØ-6ˆ�‰Ô*Ø×&Ñ&Õ(rD   c                 ó  — | j                   j                  }| j                  j                  d«       | j                  j	                  |«       | j                  j                  d|rdnd› �«       | j                  j                  d«       y )NTzSimple Mode: ÚONÚOFFF)r   ru   rg   ÚblockSignalsr¾   ÚsetText)r@   Ú	is_simples     rC   rx   z,ParticleManagerGUI.update_simple_mode_buttonÑ  sm   € Ø—M‘M×6Ñ6ˆ	Ø×Ñ×)Ñ)¨$Ô/Ø×Ñ×'Ñ'¨	Ô2Ø×Ñ×$Ñ$ }¹Y±TÈEÐ4RÐ%SÔTØ×Ñ×)Ñ)¨%Õ0rD   c                 ó¬  ‡ — ‰ j                   j                  «        ‰ j                  j                  }‰ j                  j                  j                  «       D ]Q  }‰ j                   j                  |j                  «      }|j                  j                  |j                  fˆ fd„	«       ŒS |r)‰ j                  j                  d|j                  › �«       y y )Nc                 ó&   •— ‰j                  |«      S rE   )Úswitch_profile)ÚcheckedÚprofile_namer@   s     €rC   rÌ   z9ParticleManagerGUI.rebuild_profile_menu.<locals>.<lambda>Þ  s   ø€ ÐPT×PcÑPcÐdpÔPqrD   r‹   )rf   Úclearr   rr   rn   ÚvaluesÚ	addActionrq   Ú	triggeredr¢   re   r  )r@   r‚   ÚprofileÚactions   `   rC   r   z'ParticleManagerGUI.rebuild_profile_menuØ  sŸ   ø€ Ø×Ñ×ÑÔ!à—‘×-Ñ-ˆØ—}‘}×-Ñ-×4Ñ4Ö6ˆGØ×&Ñ&×0Ñ0°·±Ó>ˆFØ×Ñ×$Ñ$À'Ç,Á,Ô%qÕrð 7ñ Ø×Ñ×$Ñ$ q¨¯©¨Ð%6Õ7ð rD   r  c                 ó  — | j                   j                  }|r|| j                   j                  |   u ry | j                  j	                  «       }|| j                   _        || j                   _        | j                  «        y rE   )r   rr   rn   rU   Úget_load_orderÚaddon_selectionsÚ_sync_to_active_profile)r@   r  r‚   Ú
load_orders       rC   r  z!ParticleManagerGUI.switch_profileã  si   € Ø—‘×-Ñ-ˆÙ�f §¡× 6Ñ 6°|Ñ DÑDØð ×%Ñ%×4Ñ4Ó6ˆ
Ø)3ˆ�‰Ô&ð (4ˆ�‰Ô$à×$Ñ$Õ&rD   c                 ó:  — | j                   j                  }|sy | j                  j                  d|j                  › �«       | j
                  j                  |j                  «       | j                  «        | j                  rO| j                  j                  r9| j                  j                  j                  | j                   j                  «       | j                  «        | j                  j                  «        | j                  «        | j!                  «        y )Nr‹   )r   rr   re   r  rq   rR   Úset_tf_pathrs   rz   rT   rv   rw   ru   rx   ry   r�   r€   ©r@   r‚   s     rC   r(  z*ParticleManagerGUI._sync_to_active_profileñ  sÑ   € Ø—‘×-Ñ-ˆÙØà×Ñ× Ñ  1 V§[¡[ MÐ!2Ô3à×Ñ×(Ñ(¨×)9Ñ)9Ô:ð 	×ÑÔð ×Ò $×"4Ñ"4×"DÒ"DØ×Ñ×.Ñ.×>Ñ>¸t¿}¹}×?aÑ?aÔbØ×&Ñ&Ô(Ø×Ñ×(Ñ(Ô*à×ÑÔ!Ø×&Ñ&Õ(rD   c                 ó  — t        | ¬«      }|j                  «       rh| j                  j                  |j                  |j
                  |j                  ¬«      }| j                  «        | j                  |j                  «       y y )N)rA   ©rq   rs   Ú	sourcemod)	r&   Úexecr   ro   rq   rs   r/  r   r  )r@   Údialogr#  s      rC   r£   z%ParticleManagerGUI.create_new_profile  sl   € Ü dÔ+ˆØ�;‰;Œ=Ø—m‘m×2Ñ2Ø—[‘[Ø ×*Ñ*Ø ×*Ñ*ð 3ó ˆGð
 ×%Ñ%Ô'Ø×Ñ §¡Õ-ð rD   c                 óü  — | j                   j                  }|sy t        |j                  |j                  |j
                  | ¬«      }|j                  «       r¦| j                   j                  |j                  |j                  |j                  |j
                  ¬«       | j                  «        | j                   j                  }|r6| j                  j                  |j                  «       | j                  «        y y y )N)rq   rs   r/  rA   r.  )r   rr   r&   rq   rs   r/  r0  Úupdate_profiler   rR   r+  r�   )r@   r‚   r1  Úupdateds       rC   rð   z'ParticleManagerGUI.edit_current_profile  sË   € Ø—‘×-Ñ-ˆÙØÜ F§K¡K¸6×;KÑ;KÐW]×WgÑWgÐptÔuˆØ�;‰;Œ=Ø�M‰M×(Ñ(Ø—‘Ø—[‘[Ø ×*Ñ*Ø ×*Ñ*ð	 )ô ð ×%Ñ%Ô'ð —m‘m×2Ñ2ˆGÙØ×$Ñ$×0Ñ0°×1BÑ1BÔCØ×'Ñ'Õ)ð ð rD   c                 ól  — | j                   j                  }|sy t        | j                   j                  «      dk  rt	        j
                  | dd«       y t        | dd|j                  › d�«      rF| j                   j                  |j                  «       | j                  «        | j                  «        y y )Nr�   zCannot Deletez#You must have at least one profile.rÛ   zDelete profile 'z'? This cannot be undone.)r   rr   Úlenrn   r   Úwarningr    rq   Údelete_profiler   r(  r,  s     rC   rñ   z)ParticleManagerGUI.delete_current_profile%  s—   € Ø—‘×-Ñ-ˆÙØÜˆt�}‰}×%Ñ%Ó&¨!Ò+Ü×Ñ  oÐ7\Ô]ØÜ˜$Ð 0Ø,¨V¯[©[¨MÐ9RÐSôUà�M‰M×(Ñ(¨¯©Ô5Ø×%Ñ%Ô'Ø×(Ñ(Õ*ð	UrD   c                 óÌ  — | j                   j                  }|sy | j                  j                  d|j                  › �«       | j
                  | j                  | j                  | j                  | j                  | j                  | j                  fD ]  }|j                  d«       Œ | j
                  j                  | j                   j                  «       | j                  j                  | j                   j                  «       | j                  j                  | j                   j                   «       | j                  j                  | j                   j"                  «       | j                  j                  | j                   j$                  «       | j                  j                  | j                   j&                  «       | j                  j                  | j                   j(                  «       | j
                  | j                  | j                  | j                  | j                  | j                  | j                  fD ]  }|j                  d«       Œ | j+                  «        y )NzCurrent profile: TF)r   rr   rd   r  rq   r]   r^   r_   rå   r`   ra   rb   r  r¾   rÝ   rà   râ   rä   rè   rê   rì   Úupdate_restore_button_state)r@   r‚   Úcbs      rC   r�   z%ParticleManagerGUI.sync_settings_page2  sÇ  € Ø—‘×-Ñ-ˆÙØà×"Ñ"×*Ñ*Ð->¸v¿{¹{¸mÐ+LÔMð ×(Ñ(¨$×*HÑ*HØ×3Ñ3°T×5\Ñ5\Ø×/Ñ/°×1LÑ1LØ×4Ñ4ó6ˆBð �O‰O˜DÕ!ð	6ð 	×Ñ×(Ñ(¨¯©×)NÑ)NÔOØ×&Ñ&×1Ñ1°$·-±-×2]Ñ2]Ô^Ø×'Ñ'×2Ñ2°4·=±=×3ZÑ3ZÔ[Ø×/Ñ/×:Ñ:¸4¿=¹=×;jÑ;jÔkØ×#Ñ#×.Ñ.¨t¯}©}×/QÑ/QÔRØ×#Ñ#×.Ñ.¨t¯}©}×/JÑ/JÔKØ×(Ñ(×3Ñ3°D·M±M×4TÑ4TÔUà×(Ñ(¨$×*HÑ*HØ×3Ñ3°T×5\Ñ5\Ø×/Ñ/°×1LÑ1LØ×4Ñ4ó6ˆBð �O‰O˜EÕ"ð	6ð 	×(Ñ(Õ*rD   c                 óˆ   — | j                   j                  }|j                  «       r| j                  j	                  |«       y y rE   )r   rs   Úis_dirrR   r+  )r@   rs   s     rC   rt   z$ParticleManagerGUI.load_tf_directoryP  s6   € Ø—M‘M×+Ñ+ˆ	Ø×ÑÔØ× Ñ ×,Ñ,¨YÕ7ð rD   c                 ó¶   — | j                   j                  j                  «        | j                   j                  | j                  «       | j                  «        y rE   )rQ   ÚserviceÚscan_addon_contentsrz   rV   Úapply_saved_addon_selectionsrÇ   s    rC   rz   zParticleManagerGUI.load_addonsU  s@   € Ø×Ñ×"Ñ"×6Ñ6Ô8Ø×Ñ×&Ñ& t×'7Ñ'7Ô8Ø×)Ñ)Õ+rD   c                 óX   — | j                   j                  «        | j                  «        y rE   )rT   ry   rz   rÇ   s    rC   Úrefresh_allzParticleManagerGUI.refresh_allZ  s    € Ø×Ñ×(Ñ(Ô*Ø×ÑÕrD   c                 óÔ   — | j                   j                  «       }g }|D ]F  }|| j                  j                  v sŒ|j	                  | j                  j                  |   d   «       ŒH |S )NÚ	file_path)rU   r&  rQ   Úaddons_file_pathsÚappend)r@   r)  Ú
file_pathsrq   s       rC   Úget_selected_addonsz&ParticleManagerGUI.get_selected_addons^  se   € Ø×%Ñ%×4Ñ4Ó6ˆ
Øˆ
ÛˆDØ�t×)Ñ)×;Ñ;Ò;Ø×!Ñ! $×"4Ñ"4×"FÑ"FÀtÑ"LÈ[Ñ"YÕZð ð ÐrD   c                 ó  — 	 | j                   j                  «       }|r°| j                   j                  «       }||v r|n|d   }|j                  «       j	                  d«      d   }|| j
                  j                  v r6| j
                  j                  |   }| j                  j                  ||«       y | j                  j                  «        y | j                  j                  «        y # t        $ r t        j                  d«       Y y w xY w)Nr   ú [#zError in on_addon_click)rV   ÚselectedItemsÚcurrentItemÚtextÚsplitrQ   rF  rW   Úupdate_contentr  Ú	ExceptionÚlogÚ	exception)r@   Úselected_itemsÚcurrentÚselected_itemÚ
addon_nameÚ
addon_infos         rC   rÐ   z!ParticleManagerGUI.on_addon_clickf  sä   € ð	5Ø!×-Ñ-×;Ñ;Ó=ˆNÙØ×*Ñ*×6Ñ6Ó8�Ø+2°nÑ+D¡È.ÐYZÑJ[�Ø*×/Ñ/Ó1×7Ñ7¸Ó>¸qÑA�
à ×!3Ñ!3×!EÑ!EÑEØ!%×!3Ñ!3×!EÑ!EÀjÑ!Q�JØ×*Ñ*×9Ñ9¸*ÀjÕQà×*Ñ*×0Ñ0Õ2à×&Ñ&×,Ñ,Õ.øÜò 	5Ü�M‰MÐ3Ö4ð	5ús   ‚B0C) Â3C) ÃC) Ã)D
Ä	D
c                 óÄ   — 	 | j                  «        | j                  j                  «       }|| j                  _        y # t
        $ r t        j                  d«       Y y w xY w)Nz"Error in on_addon_checkbox_changed©r€   rU   r&  r   r'  rQ  rR  rS  )r@   r)  s     rC   rÒ   z,ParticleManagerGUI.on_addon_checkbox_changedx  sR   € ð	@Ø×*Ñ*Ô,Ø×)Ñ)×8Ñ8Ó:ˆJØ-7ˆD�M‰MÕ*øÜò 	@Ü�M‰MÐ>Ö?ð	@ús   ‚;> ¾AÁAc                 óÀ   — 	 | j                  «        | j                  j                  «       | j                  _        y # t
        $ r t        j                  d«       Y y w xY w)NzError in on_load_order_changedrZ  rÇ   s    rC   rÔ   z(ParticleManagerGUI.on_load_order_changed€  sJ   € ð	<Ø×*Ñ*Ô,Ø-1×-=Ñ-=×-LÑ-LÓ-NˆD�M‰MÕ*øÜò 	<Ü�M‰MÐ:Ö;ð	<ús   ‚9< ¼AÁAc           	      óö   — t        j                  «       D ��ci c]  \  }}||j                  dg «      “Œ }}}| j                  j                  }| j
                  j                  j                  ||«       y c c}}w )NÚfiles)r   ÚitemsÚgetrQ   rF  rU   Úload_order_panelÚupdate_display)r@   rq   ÚdataÚaddon_contentsÚaddon_name_mappings        rC   r€   z,ParticleManagerGUI.update_load_order_display‡  sj   € ÜHV×H\ÑH\ÔH^Ô_ÑH^¹*¸$À˜$ §¡¨°"Ó 5Ñ5ÐH^ˆÑ_Ø!×/Ñ/×AÑAÐØ×Ñ×)Ñ)×8Ñ8¸ÐI[Õ\ùó `s   ˜A5c                 ó  — | j                   j                  d«       i }t        | j                   j                  «       «      D ]_  }| j                   j	                  |«      }|sŒ!|j                  «       t        j                  j                  z  sŒM|||j                  «       <   Œa g }| j                  j                  D ]D  }||v sŒ||   j                  t        j                  j                  «       |j                  |«       ŒF | j                   j"                  j%                  |«       t'        |«      t'        | j                  j                  «      k7  r|| j                  _        | j                   j                  d«       | j)                  «        y )NTF)rV   r  ÚrangeÚcountr±   Úflagsr   ÚItemFlagÚItemIsUserCheckablerN  r   r'  ÚsetCheckStateÚ
CheckStateÚCheckedrG  rU   r`  Úrestore_orderr6  rÒ   )r@   Úitem_mapÚir±   Úvalid_selectionsrW  s         rC   rA  z/ParticleManagerGUI.apply_saved_addon_selectionsŒ  s.  € Ø×Ñ×%Ñ% dÔ+àˆÜ�t×'Ñ'×-Ñ-Ó/Ö0ˆAØ×#Ñ#×(Ñ(¨Ó+ˆDÚ˜Ÿ
™
›¤r§{¡{×'FÑ'FÓFØ(,�˜Ÿ™›Ò%ð 1ð
 ÐØŸ-™-×8Ô8ˆJØ˜XÒ%Ø˜Ñ$×2Ñ2´2·=±=×3HÑ3HÔIØ ×'Ñ'¨
Õ3ð 9ð
 	×Ñ×)Ñ)×7Ñ7Ð8HÔIäÐÓ ¤C¨¯©×(FÑ(FÓ$GÒGØ-=ˆD�M‰MÔ*à×Ñ×%Ñ% eÔ,Ø×&Ñ&Õ(rD   c                 óÆ   — | j                   j                  }|sy t        |«      dz  }t        |«      }|r-dj	                  |«      }t        j                  | dd|› d�«       y y )NÚcustomu   
â€¢ zConflicting Files DetecteduN   The following items in your custom folder may conflict with this method:

â€¢ z3

It's recommended to remove these to avoid issues.)rR   Útf_pathr   r   Újoinr   r7  )r@   rt  Ú
custom_dirÚfound_conflictsÚconflict_lists        rC   r{   z%ParticleManagerGUI.scan_for_mcp_files£  ss   € Ø×&Ñ&×.Ñ.ˆÙØä˜'“] XÑ-ˆ
Ü3°JÓ?ˆáØ'×,Ñ,¨_Ó=ˆMÜ×ÑØØ,ØeÐfsÐetð  ujð  kõð rD   c                 ó†  — t        | j                  |«      ry t        | «      }|j                  |«       |j	                  |«       |j                  t        j                  j                  «       t        d«      }|j                  |«       |j                  «        |j                  «       rt        | j                  |d«       y y )NzDon't show this popup againT)Úgetattrr   r   rh   r  ÚsetIconÚIconÚInformationr   ÚsetCheckBoxr0  rÞ   rÊ   )r@   ÚtitlerN  ÚsettingÚmsg_boxÚdont_show_checkboxs         rC   Ú_show_launch_options_popupz-ParticleManagerGUI._show_launch_options_popup³  s”   € Ü�4—=‘= 'Ô*Øä˜dÓ#ˆØ×Ñ˜uÔ%Ø�‰˜ÔØ�‰œ×(Ñ(×4Ñ4Ô5ä&Ð'DÓEÐØ×ÑÐ.Ô/Ø�‰Œà×'Ñ'Ô)Ü�D—M‘M 7¨DÕ1ð *rD   c                 ó*   — | j                  ddd«       y )Nz/Installation Complete - Launch Options Requiredz»Installation completed successfully!

IMPORTANT: You must add the following to your game's launch options:

+exec w/config.cfg

This ensures the preloader works correctly with your game.
râ   ©rƒ  rÇ   s    rC   Úshow_launch_options_popupz,ParticleManagerGUI.show_launch_options_popupÃ  s   € Ø×'Ñ'Ø=ðKð (õ	
rD   c                 ó*   — | j                  ddd«       y )Nz)Restore Complete - Launch Options CleanupzÌGame files restored successfully!

IMPORTANT: You should now remove the following from your game's launch options:

+exec w/config.cfg

The preloader config no longer exists, so this option does nothing.
rä   r…  rÇ   s    rC   Ú!show_launch_options_cleanup_popupz4ParticleManagerGUI.show_launch_options_cleanup_popupÍ  s   € Ø×'Ñ'Ø7ðTð 0õ	
rD   c                 óŽ   — t        j                  | j                  j                  j                  d¬«      }|j                  «        y )NT)ÚtargetÚdaemon)Ú	threadingÚThreadrQ   r?  r@  Ústart)r@   Úthreads     rC   r|   z(ParticleManagerGUI.rescan_addon_contents×  s5   € Ü×!Ñ!Ø×%Ñ%×-Ñ-×AÑAØô
ˆð 	�‰�rD   c                 ó   — | j                  «       }|st        | dd«      sy | j                  j                  }|s)t        j                  dd¬«       | j                  d«       y | j                  d«       | j                  j                  }|r|j                  nd}|r|j                  nt        j                  }t        d|› d	�d
dd| «      | _        | j                  j!                  d«       | j                  j#                  t$        j&                  j(                  «       | j                  j+                  d«       | j                  j-                  dd«       | j                  j.                  j1                  | j                  j2                  «       | j                  j5                  «        | j                  j7                  || j8                  ||«       y )NzNo Addons SelectedzNo addons selected. Continue?úNo game directory configured!T©Ú
stack_infoz1No game directory configured! Set it in Settings.ÚgamezInstalling to ú...ÚCancelr   éd   Ú
Installingi  )rI  r    rR   rt  rR  Úerrorr!   Úset_processing_stater   rr   rq   r/  r   rp   r   rS   rh   ÚsetWindowModalityr   ÚWindowModalityÚWindowModalÚsetMinimumDurationr    Úcanceledr¢   Úcancel_operationÚshowÚinstallrT   )r@   Úselected_addonsÚtarget_pathr‚   Útarget_namer/  s         rC   r
  z ParticleManagerGUI.start_installÞ  sq  € Ø×2Ñ2Ó4ˆáÜ! $Ð(<Ð>]Ô^Øà×*Ñ*×2Ñ2ˆÙÜ�I‰IÐ5À$ˆIÔGØ�O‰OÐOÔPØà×!Ñ! $Ô'à—‘×-Ñ-ˆÙ%+�f—k’k°ˆÙ(.�F×$Ò$´J×4FÑ4Fˆ	ä.°À¸}ÈCÐ/PÐRZÐ\]Ð_bÐdhÓiˆÔØ×Ñ×+Ñ+¨LÔ9Ø×Ñ×.Ñ.¬r×/@Ñ/@×/LÑ/LÔMØ×Ñ×/Ñ/°Ô2Ø×Ñ×)Ñ)¨#¨sÔ3Ø×Ñ×%Ñ%×-Ñ-¨d×.BÑ.B×.SÑ.SÔTØ×Ñ×!Ñ!Ô#à×Ñ×$Ñ$ _°d×6HÑ6HÈ+ÐW`ÕarD   c                 ó   — | j                   j                  }|s)t        j                  dd¬«       | j	                  d«       y | j
                  j                  }|r|j                  nt        |«      j                  }|r|j                  nt        j                  }t        | dd|› d�«      sy | j                   j                  ||«      rÈ| j                  d«       t        d|› d�d d	d
| «      | _        | j                   j#                  d«       | j                   j%                  t&        j(                  j*                  «       | j                   j-                  d	«       | j                   j/                  d «       | j                   j1                  «        y y )Nr‘  Tr’  zConfirm Restorez%This will revert all changes made to z by this app.
Are you sure?z
Restoring r•  r   r—  Ú	Restoring)rR   rt  rR  r™  r!   r   rr   rq   r   r/  r   rp   r    Ú	uninstallrš  r   rS   rh   r›  r   rœ  r�  rž  ÚsetCancelButtonr¡  )r@   r¤  r‚   r¥  r/  s        rC   rõ   z ParticleManagerGUI.start_restoreû  sM  € Ø×*Ñ*×2Ñ2ˆÙÜ�I‰IÐ5À$ˆIÔGØ�O‰OÐ;Ô<Øà—‘×-Ñ-ˆÙ%+�f—k’k´°kÓ1B×1GÑ1GˆÙ(.�F×$Ò$´J×4FÑ4Fˆ	äØÐ#Ø3°K°=Ð@\Ð]ô
ð à×Ñ×)Ñ)¨+°yÔAØ×%Ñ% dÔ+Ü#2°ZÀ¸}ÈCÐ3PÐRVÐXYÐ[^Ð`dÓ#eˆDÔ Ø× Ñ ×/Ñ/°Ô<Ø× Ñ ×2Ñ2´2×3DÑ3D×3PÑ3PÔQØ× Ñ ×3Ñ3°AÔ6Ø× Ñ ×0Ñ0°Ô6Ø× Ñ ×%Ñ%Õ'ð BrD   c                 óœ   — | j                   j                  }| j                   j                  |«      }| j                  j	                  |«       y rE   )rR   rt  Úis_modifiedrc   Ú
setEnabled)r@   r¤  r«  s      rC   r:  z.ParticleManagerGUI.update_restore_button_state  s=   € Ø×*Ñ*×2Ñ2ˆØ×*Ñ*×6Ñ6°{ÓCˆØ×Ñ×&Ñ& {Õ3rD   Ú
processingc                 óœ   — | }| j                   j                  |«       |s| j                  «        y | j                  j                  d«       y ©NF)rX   r¬  r:  rc   )r@   r­  Úenableds      rC   rš  z'ParticleManagerGUI.set_processing_state  s@   € Ø �.ˆØ×Ñ×&Ñ& wÔ/ÙØ×,Ñ,Õ.à×Ñ×*Ñ*¨5Õ1rD   c                 ó¼   — | j                   }|r$	 |j                  |«       |j                  |«       y y # t        t        f$ r t
        j                  d«       Y y w xY w)Nz0Dialog was closed/deleted between check and call)rS   ÚsetValueÚsetLabelTextÚAttributeErrorÚRuntimeErrorrR  rS  )r@   ÚprogressÚmessager1  s       rC   r  z"ParticleManagerGUI.update_progress"  sZ   € Ø×%Ñ%ˆÙðRØ—‘ Ô)Ø×#Ñ# GÕ,ð øô #¤LÐ1ò RÜ—‘ÐPÖQðRús   �"4 ´$AÁAc                 ó€   — | j                   r!| j                   j                  «        d | _         | j                  d«       y r¯  )rS   Úcloserš  rÇ   s    rC   r  z(ParticleManagerGUI.on_operation_finished+  s3   € Ø×ÒØ× Ñ ×&Ñ&Ô(Ø#'ˆDÔ Ø×!Ñ! %Õ(rD   c                 ó   — t        | |«       y rE   )r!   )r@   r·  s     rC   r!   zParticleManagerGUI.show_error1  s   € Ü�4˜Õ!rD   Ú	operationc                 ó‚   — t        | |«       |t        j                  u r| j                  «        y | j	                  «        y rE   )r"   r   Ú	UNINSTALLrˆ  r†  )r@   r·  r»  s      rC   r"   zParticleManagerGUI.show_success4  s3   € Ü�T˜7Ô#ØÔ(×2Ñ2Ñ2Ø×2Ñ2Õ4à×*Ñ*Õ,rD   c                 ón  — | j                   j                  «       }g }|D ]`  }|j                  t        j                  j
                  «      xs" |j                  «       j                  d«      d   }|j                  |«       Œb | j                  j                  | j                   «      \  }}|€y |rZ| j                  j                  D �cg c]	  }||vsŒ|‘Œ }}|| j                  _        | j                  «        | j                  «        y t        j!                  |d¬«       | j#                  |«       y c c}w )NrK  r   Tr’  )rV   rL  rb  r   ÚItemDataRoleÚUserRolerN  rO  rG  rQ   rÎ   r   r'  rz   rÐ   rR  r™  r!   )	r@   rT  Údeleted_addon_namesr±   Údisplay_nameÚsuccessr·  rq   Úupdated_load_orders	            rC   rÎ   z)ParticleManagerGUI.delete_selected_addons;  s  € Ø×)Ñ)×7Ñ7Ó9ˆØ ÐÛ"ˆDØŸ9™9¤R§_¡_×%=Ñ%=Ó>Ò]À$Ç)Á)Ã+×BSÑBSÐTYÓBZÐ[\ÑB]ˆLØ×&Ñ& |Õ4ð #ð  ×-Ñ-×DÑDÀT×EUÑEUÓVÑˆ�Øˆ?ØÙØ37·=±=×3QÒ3QÓ!uÑ3Q¨4ÐUYÐatÒUt¢$Ð3QÐÐ!uØ-?ˆD�M‰MÔ*Ø×ÑÔà×ÑÕ!ä�I‰I�g¨$ˆIÔ/Ø�O‰O˜GÕ$ùò "vs   Ã	D2ÃD2c                 ó’  — t         j                  }|j                  «       s)t        j	                  dd¬«       | j                  d«       y 	 t        dk(  rt        j                  t        |«      «       y t        j                  dt        |«      g«       y # t        $ r) t        j                  d«       | j                  d«       Y y w xY w)NzAddons folder does not exist!Tr’  rŠ   zxdg-openzFailed to open addons folder)r   Ú
addons_dirr=  rR  r™  r!   r   ÚosÚ	startfileÚstrÚ
subprocessÚrunrQ  rS  )r@   Úaddons_paths     rC   rÖ   z%ParticleManagerGUI.open_addons_folderO  s—   € Ü×'Ñ'ˆà×!Ñ!Ô#Ü�I‰IÐ5À$ˆIÔGØ�O‰OÐ;Ô<Øð	<Ü˜7Ò"Ü—‘œS Ó-Õ.ä—‘ 
¬C°Ó,<Ð=Õ>øÜò 	<Ü�M‰MÐ8Ô9Ø�O‰OÐ:Ö;ð	<ús   Á'B Á3 B Â/CÃCc                 ón   — t        | d«      r)| j                  r| j                  j                  |«       y y y ©NrT   )ÚhasattrrT   ÚdragEnterEvent©r@   Úevents     rC   rÐ  z!ParticleManagerGUI.dragEnterEvent`  ó1   € Ü�4˜Ô)¨d×.@Ò.@Ø×Ñ×-Ñ-¨eÕ4ð /AÐ)rD   c                 ón   — t        | d«      r)| j                  r| j                  j                  |«       y y y rÎ  )rÏ  rT   ÚdragLeaveEventrÑ  s     rC   rÕ  z!ParticleManagerGUI.dragLeaveEventd  rÓ  rD   c                 ón   — t        | d«      r)| j                  r| j                  j                  |«       y y y rÎ  )rÏ  rT   Ú	dropEventrÑ  s     rC   r×  zParticleManagerGUI.dropEventh  s1   € Ü�4˜Ô)¨d×.@Ò.@Ø×Ñ×(Ñ(¨Õ/ð /AÐ)rD   )3rF   rG   rH   r   r<   rl   r¦   r¼   r§   r¨   rm   r¿   rx   r   rÉ  r  r(  r£   rð   rñ   r�   rt   rz   rC  rI  rÐ   rÒ   rÔ   r€   rA  r{   rƒ  r†  rˆ  r|   r
  rõ   r:  Úboolrš  r  r  r!   r   r"   rÎ   rÖ   rÐ  rÕ  r×  rI   rJ   s   @rC   rL   rL   H   s  ø„ ðS" Tõ S"òjSTòjòB>ò
ò8HòTTò)ò1ò	8ð'¨3ó 'ò)ò*	.ò*ò(+ò+ò<8ò
,ò
òò5ò$@ò<ò]ò
)ò.ò 2ò 
ò
òòbò:(ò44ð
2¨tó 2òRò)ò"ð-Ð/?ó -ò%ò(<ò"5ò5ö0rD   rL   )MÚloggingrÇ  rÊ  rŒ  Úpathlibr   Úsysr   ÚPyQt6.QtCorer   r   ÚPyQt6.QtWidgetsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Úcore.configr   Úcore.constantsr   r   Úcore.particle_splitsr   Úcore.services.conflictsr   Úcore.settingsr   r   Úcore.versionr   Úgui.addon_panelr   Úgui.addons_managerr   Úgui.dialogsr    r!   r"   Úgui.first_time_setupr#   Úgui.install_controllerr$   Úgui.mod_drop_zoner%   Úgui.profile_dialogr&   Ú	gui.themer'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   Ú	getLoggerrR  r™   r7   rL   © rD   rC   Ú<module>rî     s¦   ðÛ Û 	Û Û Ý Ý ç "÷÷ ÷ ÷ ñ õ$ ß 7Ý ;Ý =ß 2Ý  Ý &Ý ,ß @Ñ @Ý 4Ý 4Ý )Ý ,÷÷ ÷ ÷ ð" €g×ÑÓ€ð €ô.�ô .ôb0˜õ b0rD   