Ë
    Î£j§/  ã                   ó4  — U d dl Z d dlZd dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ ddd„ f­Z G d„ de«      Z G d„ de«      Z ed¬«       d„ «       «       Z G d„ dee
«      Z G d„ de j>                  «      Zddd„ f­Z de!de de!fd„Z"de defd„Z#e G d„ d «      «       Z$ G d!„ d"e$«      Z% ee$jL                  de%¬#«      e$_&         ee$jN                  de%¬#«      e$_'         G d$„ d%e(«      Z)e$e*d&<   e)e*d'<   d(„ Z+y))é    N)ÚCallableÚMapping)ÚasdictÚ	dataclassÚfield)ÚEnum)ÚPath)Úcast)ÚVersion)Ú
Sourcemods)ÚProfile)Úas_base_classÚupdate_dataclassÚJSONc                  ór   — t         t        df   t        d   z  t        z  t        z  t        z  t
        z  d z  S )Nr   )ÚdictÚstrÚlistÚintÚfloatÚbool© ó    ú@C:\Users\pivot\Documents\cueki\casual-preloader\core\settings.pyr   r      s2   € ŒD”�f�Ñ¤ V¡Ñ,¬sÑ2´SÑ8¼5Ñ@Ä4ÑGÈ$ÑNÐ Nr   c                   ó   — e Zd Zy)ÚNoActiveProfileN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r      ó   „ Ør   r   c                   ó   — e Zd Zy)ÚProfileNotFoundNr   r   r   r   r#   r#      r!   r   r#   T)Úfrozenc                  ó8   ‡‡— d d„ ®xŠfŠ G ˆˆfd„d‰­
} | «      S )ÚTc                  ó   — t         S ©N)Útyper   r   r   r&   r&      s   € œ4˜r   c                   ó<   •— e Zd ZW ° ZU W °ed<   	 eW °gef   ed<   y)ÚSerializationSpecr)   ÚencodeN)r   r   r    Ú__type_params__Ú__annotations__r   r   )Ú.type_paramsr&   s   €€r   r+   r+      s!   ø‡ € á
ƒGØà‘a�S˜$�YÑÓØ/r   r+   r   )Ú.generic_baser/   r&   s    @@r   ú)<generic parameters of SerializationSpec>r1      s   ù€ Þ÷ 0÷ 0ñ 0r   c                   ó   — e Zd ZeefZeefZy)ÚSerializationSpecsN)r   r   r    r	   r   ÚPATHr   ÚVERSIONr   r   r   r3   r3   $   s   „ Ø�ˆ9€DØ�sˆl�Gr   r3   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚJSONEncoderc                 ó¬   •— 	 t         ‰| �  |«      S # t        $ r8 t        D ]-  }t	        ||j
                  «      sŒ|j                  |«      c cY S  ‚ w xY wr(   )ÚsuperÚdefaultÚ	TypeErrorr3   Ú
isinstancer)   r,   )ÚselfÚoÚspecÚ	__class__s      €r   r:   zJSONEncoder.default*   sQ   ø€ ð	Ü‘7‘? 1Ó%Ð%øÜò 	ß*�Ü˜a §¡Õ+ØŸ;™; q›>Ô)ð +ð ð		ús   ƒ ’(A»AÁA)r   r   r    r:   Ú__classcell__©r@   s   @r   r7   r7   )   s   ø„ ÷ð r   r7   ÚProfilesc                  ó(   — t         t        t        f   S r(   )r   r   r   r   r   r   rC   rC   3   s   € ”œœW˜Ñ%Ð %r   ÚnameÚprofilesÚreturnc                 ój   — d}| }| |v r| dz  } d}| |v rŒ|rt        j                  d|› d| › d�«       | S )NFÚ_Tzprofile with name `z` already exists, using `Ú`)ÚloggingÚwarning)rE   rF   ÚrenamedÚoriginal_names       r   Ú_get_profile_namerO   6   sV   € Ø€GØ€Mà
�(Ñ
Ø�‰ˆØˆð �(Ò
ñ Ü�‰Ð-¨m¨_Ð<UÐVZÐU[Ð[\Ð]Ô^à€Kr   c                 óF   — t        t        | j                  «       «      «      S r(   )ÚnextÚiterÚvalues)rF   s    r   Ú_get_first_profilerT   D   s   € Ü”�X—_‘_Ó&Ó'Ó(Ð(r   c                   ó&  ‡ — e Zd ZU dZedz  ed<   dZeed<   dZeed<    e	e
¬«      Zeeef   ed<   dZeed<   dZeed	<   dZedz  ed
<   dZeed<   dd„Zd„ Zˆ fd„Zddedz  ddfd„Zd„ Zddededededef
d„Zdefd„Zdefd„Zdedefd„Zˆ xZS ) ÚSettingsNÚactive_profileFÚdetails_collapsedÚdone_initial_setup)Údefault_factoryrF   Ú!skip_launch_options_cleanup_popupÚskip_launch_options_popupÚskipped_update_versionÚsuppress_update_notificationsrG   c                 ó$   — | j                  «        y r(   )Ú_load_settings©r=   s    r   Ú__post_init__zSettings.__post_init__R   s   € Ø×ÑÕr   c                 ó\   — | j                   €t        |«      ‚t        | j                   |«      S r(   )rW   r   Úgetattr)r=   Úattrs     r   Ú__getattr__zSettings.__getattr__U   s,   € Ø×ÑÐ&Ü! $Ó'Ð'ä�t×*Ñ*¨DÓ1Ð1r   c                óF  •— |dk(  r.|�|| j                   v r| j                   |   }nt        |› d�«      ‚|dk(  rt        d«      ‚|| j                  v rt        ‰| �  ||«       n.| j                  €t        |«      ‚t        | j                  ||«       | j                  «        y )NrW   z is not a known profile namerF   zKprofiles may not be set manually, use `create_profile()`/`delete_profile()`)
rF   r#   ÚAttributeErrorÚ__dict__r9   Ú__setattr__rW   r   ÚsetattrÚsave_settings)r=   re   Úvaluer@   s      €r   rj   zSettings.__setattr__[   s¢   ø€ ØÐ#Ò#ØÐ  U¨d¯m©mÑ%;ØŸ™ eÑ,‘ä%¨¨Ð/KÐ&LÓMÐMØ�ZÒÜ Ð!nÓoÐoà�4—=‘=Ñ Ü‰GÑ  eÕ,à×"Ñ"Ð*Ü% dÓ+Ð+ä�D×'Ñ'¨¨uÔ5à×ÑÕr   Úinput_settings_filec                 ó  — ddl m} |€|j                  j                  «       sy|xs |j                  }	 |j	                  d«      5 }t        j                  |«      }ddd«       t        j                  d|› �«       dv r|d   �t        |d   «      |d<   d|v �rYd	|v r|d	   |d
<   |d	= t        |d   t        «      s|i }t        |d   «      D ]Y  \  }}t        |d   |«      |d<   |j!                  d«      �|d
   |d   k(  r|d   |d
<   |d= t#        j$                  |«      ||d   <   Œ[ ||d<   |d   rAd|d<   n;|d   j'                  «       D ]%  \  }}||d<   t#        j$                  |«      |d   |<   Œ' |d   j)                  «       D ]  }|d
   |j*                  k(  sŒ||d
<    n t-        | |«       | j.                  sd| _        d| _        y| j0                  €t5        | j.                  «      | _        yyd|v �r_t-        | dD �	ci c]  }	|	|v r|	||	   “Œ c}	«       t#        dt7        |d   «      t8        j:                  |j!                  dg «      |j!                  di «      |j!                  di «      |j!                  dd«      |j!                  dd«      |j!                  dd«      ¬«	      t=        t>        | j.                  «      d<   |j!                  d«      x}
�@t#        dt7        |
«      t8        j@                  ¬«      t=        t>        | j.                  «      d<   | j.                  d   | _        t        j                  dtC        | j.                  «      › d�«       yy# 1 sw Y   �ŒÿxY w# t        $ r t        j                  d«       ‚ w xY wc c}	w )z´
        Loads settings from an optional file (defaults to default settings location).

        Args:
            input_settings_file: Optional File to read settings from.
        r   ©ÚconfigNÚrzLoaded settings from zError loading settingsr]   rF   Úactive_profile_idrW   rE   ÚidTrY   FÚtf_directory)r\   r^   r]   ÚTF2Úaddon_selectionsÚmatrix_selectionsÚmatrix_selections_simpleÚsimple_particle_modeÚshow_console_on_startupÚdisable_paint_colors)	rE   Ú	game_pathÚ	sourcemodrw   rx   ry   rz   r{   r|   Úgoldrush_directoryz	Gold Rush©rE   r}   r~   z)Migrated old settings to profile format (z profile(s)))"Úcore.configrq   Úapp_settings_fileÚis_fileÚopenÚjsonÚloadrK   ÚinfoÚ	ExceptionÚ	exceptionr   r<   r   Ú	enumeraterO   Úgetr   Ú	from_dictÚitemsrS   rE   r   rF   rW   rY   rT   r	   r   rv   r
   r   ÚTF2GRÚlen)r=   rn   rq   ÚfdÚdataÚ	_profilesÚiÚprofilerE   ÚkÚgoldrush_dirs              r   r`   zSettings._load_settingsn   s²  € õ 	'àÐ&¨v×/GÑ/G×/OÑ/OÔ/QØà1ÒM°V×5MÑ5MÐð	Ø$×)Ñ)¨#Ô.°"Ü—y‘y “}�÷ /ä�L‰LÐ0Ð1DÐ0EÐFÔGð
 $ tÑ+°Ð5MÑ0NÐ0ZÜ-4°TÐ:RÑ5SÓ-TˆDÐ)Ñ*à˜ÒØ" dÑ*Ø)-Ð.AÑ)B�Ð%Ñ&ØÐ,Ð-ä˜d :Ñ.´Ô8Ø�	Ü"+¨D°Ñ,<Ö"=‘J�A�wÜ&7¸À¹ÈÓ&S�G˜F‘Oà—{‘{ 4Ó(Ð4ØÐ 0Ñ1°W¸T±]ÒBØ5<¸V±_˜DÐ!1Ñ2à# D˜Mä29×2CÑ2CÀGÓ2L�I˜g f™oÒ.ð #>ð $-��ZÑ Ø˜
Ò#Ø15�DÐ-Ò.à&*¨:Ñ&6×&<Ñ&<Ö&>‘N�D˜'Ø&*�G˜F‘OÜ-4×->Ñ->¸wÓ-G�D˜Ñ$ TÒ*ð '?ð   
Ñ+×2Ñ2Ö4�ØÐ(Ñ)¨W¯\©\Ó9Ø-4�DÐ)Ñ*Ùð 5ô
 ˜T 4Ô(à—=’=Ø&*�Ô#Ø*/�Õ'Ø×$Ñ$Ð,Ü&8¸¿¹Ó&G�Õ#ð -à˜tÒ#Ü˜Tñó$ñ�ð
 ˜‘9ð �4˜‘7‘
ðñ$ô ô 07ØÜ˜t NÑ3Ó4Ü&ŸN™NØ!%§¡Ð*<¸bÓ!AØ"&§(¡(Ð+>ÀÓ"CØ)-¯©Ð2LÈbÓ)QØ%)§X¡XÐ.DÀdÓ%KØ(,¯©Ð1JÈDÓ(QØ%)§X¡XÐ.DÀeÓ%Lô
0ŒD”�t—}‘}Ó% eÑ,ð !%§¡Ð)=Ó >Ð>�ÐKÜ9@Ø$Ü" <Ó0Ü *× 0Ñ 0ô:””T˜4Ÿ=™=Ó)¨+Ñ6ð #'§-¡-°Ñ"6ˆDÔä�L‰LÐDÄSÈÏÉÓEWÐDXÐXdÐeÕfðA $÷_ /Ñ.ûô ò 	Ü×ÑÐ6Ô7Øð	üòZ$s)   µM& ÁMÁ M& ÈN	
ÍM#ÍM& Í& Nc                 ól  — ddl m} t        | «      }| j                  �| j                  j                  |d<   |d   j                  «       D ].  \  }}| j                  |   j                  j                  |d<   |d= Œ0 	 |j                  j                  j                  dd¬«       |j                  j                  d	«      5 }t        j                  ||d
t        ¬«       d d d «       t        j                   d|j                  › �«       y # 1 sw Y   Œ,xY w# t"        $ r t        j$                  d«       ‚ w xY w)Nr   rp   rW   rF   r~   rE   T©ÚparentsÚexist_okÚwé   ©ÚindentÚclszSaved settings to zError saving settings)r�   rq   r   rW   rE   r�   rF   r~   r‚   ÚparentÚmkdirr„   r…   Údumpr7   rK   r‡   rˆ   r‰   )r=   rq   r‘   rE   r”   r�   s         r   rl   zSettings.save_settingsÎ   s
  € Ý&ä�d‹|ˆØ×ÑÐ*Ø%)×%8Ñ%8×%=Ñ%=ˆDÐ!Ñ"à! *Ñ-×3Ñ3Ö5‰MˆD�'Ø#'§=¡=°Ñ#6×#@Ñ#@×#EÑ#EˆG�KÑ Ø˜‘ð 6ð	Ø×$Ñ$×+Ñ+×1Ñ1¸$ÈÐ1ÔNØ×)Ñ)×.Ñ.¨sÔ3°rÜ—	‘	˜$ ¨1´+Õ>÷ 4ä�L‰LÐ-¨f×.FÑ.FÐ-GÐHÕI÷ 4Ð3ûô ò 	Ü×ÑÐ5Ô6Øð	ús%   Á<AD Â>DÃ*D ÄDÄD Ä D3rE   r}   r~   Úactivatec                 óÒ   — t        || j                  «      }t        |||¬«      }|t        t        | j                  «      |<   |r|j
                  | _        |S | j                  «        |S )Nr€   )rO   rF   r   r
   r   rE   rW   rl   )r=   rE   r}   r~   r£   r”   s         r   Úcreate_profilezSettings.create_profileâ   s^   € Ü   t§}¡}Ó5ˆä˜t¨yÀIÔNˆØ*1ŒŒT�4—=‘=Ó! $Ñ'áØ")§,¡,ˆDÔð ˆð ×ÑÔ àˆr   c                 óÌ  — || j                   v rÌt        | j                   «      }|j                  |«      }|j                  |«       t	        t
        | j                   «      j                  |«      }| j                  |k(  rL|dk7  r| j                   ||dz
        | _        y | j                   r| j                   |d      | _        y d | _        y | j                  «        y t        |«      ‚)Nr   é   )	rF   r   ÚindexÚpopr
   r   rW   rl   r#   )r=   rE   r’   r“   r”   s        r   Údelete_profilezSettings.delete_profileï   sº   € Ø�4—=‘=Ñ Ü˜TŸ]™]Ó+ˆIØ—‘ Ó%ˆAØ�M‰M˜!ÔÜœ4 §¡Ó/×3Ñ3°DÓ9ˆGà×"Ñ" gÒ-Ø˜’6Ø*.¯-©-¸	À!ÀAÁ#¹Ñ*G�DÕ'Ø—]’]Ø*.¯-©-¸	À!¹Ñ*E�DÕ'à*.�DÕ'à×"Ñ"Õ$ä! $Ó'Ð'r   Úprofile_namec                 óè   — || j                   v rZt        | j                   |   fi |¤Ž d|v r,| j                   |   | j                   |d   <   | j                   |= | j                  «        y t        |«      ‚)NrE   )rF   r   rl   r#   )r=   r«   Úkwargss      r   Úupdate_profilezSettings.update_profile  sj   € Ø˜4Ÿ=™=Ñ(Ü˜TŸ]™]¨<Ñ8ÑC¸FÒCà˜ÑØ04·±¸lÑ0K�—‘˜f V™nÑ-Ø—M‘M ,Ð/à×ÑÕ ä! ,Ó/Ð/r   Úversionc                 ó>   — | j                   xs || j                  k(   S r(   )r^   r]   )r=   r¯   s     r   Úshould_show_update_dialogz"Settings.should_show_update_dialog  s!   € Ø×6Ñ6Ò`¸'ÀT×E`ÑE`Ñ:`ÐaÐar   ©rG   Nr(   )F)r   r   r    rW   r   r.   rX   r   rY   r   r   rF   r   r   r[   r\   r]   r   r^   rb   rf   rj   r	   r`   rl   r   r¥   rª   r®   r±   rA   rB   s   @r   rV   rV   G   sù   ø… à%)€N�G˜d‘NÓ)Ø#Ð�tÓ#Ø$Ð˜Ó$Ù&+¸DÔ&A€Hˆg�c˜7�lÑ#ÓAØ.3Ð% tÓ3Ø&+Ð˜tÓ+Ø-1Ð˜G d™NÓ1Ø*/Ð! 4Ó/óò2ôñ&^g°$¸±+ð ^gÈó ^gò@ñ( 3ð °4ð ÀJð ÐZ^ð Ðkró ð( 3ó (ð&
0¨3ó 
0ðb°ð b¸T÷ br   rV   c                   ó6   — e Zd ZdZd„ Zdd„Zej                  Zy)Ú	_Settingsz†
    This is a nasty hack to ensure the dataclass' generated `__init__()` uses `object.__setattr__()` and `object.__getattr__()`.
    c                  ó   — y r(   r   ra   s    r   Ú__init__z_Settings.__init__  s   € Ør   Nc                 ó   — t        |«      ‚r(   )rh   )Úobjre   s     r   rf   z_Settings.__getattr__  s   € Ü˜TÓ"Ð"r   r²   )r   r   r    Ú__doc__r¶   rf   Úobjectrj   r   r   r   r´   r´     s   „ ñòó#ð ×$Ñ$�Kr   r´   )Ú	pass_selfrŸ   c                   ó,   ‡ — e Zd Zˆ fd„Zdd„Zd„ Zˆ xZS )ÚAddonMetadatac                 óB   •— t         ‰| �  «        | j                  «        y r(   )r9   r¶   r†   )r=   r@   s    €r   r¶   zAddonMetadata.__init__&  s   ø€ Ü‰ÑÔØ�	‰	�r   c                 óŽ  — ddl m} |j                  j                  «       rh	 |j                  j	                  d«      5 }|j                  «       }d d d «       r0t        j                  |«      }d|v r|d   }| j                  |«       y y y # 1 sw Y   Œ=xY w# t        $ r% t        j                  d|j                  › d�«       ‚ w xY w)Nr   rp   rr   z(Error loading addon metadata from file `rJ   Úaddon_metadata)r�   rq   Úaddon_metadata_filerƒ   r„   Úreadrˆ   rK   r‰   r…   ÚloadsÚupdate)r=   rq   Úfr‘   s       r   r†   zAddonMetadata.load*  s¶   € Ý&à×%Ñ%×-Ñ-Ô/ðØ×/Ñ/×4Ñ4°SÔ9¸QØŸ6™6›8�D÷ :ñ Ü—z‘z $Ó'�à# tÑ+ØÐ 0Ñ1�Dà—‘˜DÕ!ð ð 0ç9Ð9ûäò Ü×!Ñ!Ð$LÈV×MgÑMgÐLhÐhiÐ"jÔkØðús"   ¢B ½B
ÁB Â
BÂB Â.Cc                 ó@  — ddl m} 	 |j                  j                  j	                  dd¬«       |j                  j                  d«      5 }t        j                  | |dt        ¬«       d d d «       y # 1 sw Y   y xY w# t        $ r t        j                  d«       ‚ w xY w)	Nr   rp   Tr˜   r›   rœ   r�   zError saving addon metadata)r�   rq   rÁ   r    r¡   r„   r…   r¢   r7   rˆ   rK   r‰   )r=   rq   r�   s      r   ÚsavezAddonMetadata.save=  s}   € Ý&ð	Ø×&Ñ&×-Ñ-×3Ñ3¸DÈ4Ð3ÔPØ×+Ñ+×0Ñ0°Ô5¸Ü—	‘	˜$ ¨1´+Õ>÷ 6×5Ñ5ûäò 	Ü×ÑÐ;Ô<Øð	ús*   ˆAA= Á
A1Á(A= Á1A:Á6A= Á:A= Á= Br²   )r   r   r    r¶   r†   rÇ   rA   rB   s   @r   r½   r½   %  s   ø„ ôó"ö&	r   r½   ÚsettingsrÀ   c                 ó„   — | xdk(  r t        «       at        S dk(  rt        «       at        S t	        dt
        › d| › d�«      ‚)NrÈ   rÀ   zmodule 'z' has no attribute 'Ú')rV   rÈ   r½   rÀ   rh   r   )re   s    r   rf   rf   M  sA   € ð ÝÜ“zˆHÜˆOÛÜ*›_ˆNÜ!Ð!ä
˜8¤H :Ð-AÀ$ÀÀqÐIÓ
JÐJr   ),r…   rK   Úcollections.abcr   r   Údataclassesr   r   r   Úenumr   Úpathlibr	   Útypingr
   Úpackaging.versionr   Úcore.constantsr   Úcore.profiler   Ú	core.utilr   r   r   rh   r   ÚKeyErrorr#   r+   r3   r7   rC   r   rO   rT   rV   r´   r¶   r`   r   r½   r.   rf   r   r   r   Ú<module>rÕ      s1  ðÜ Û ß -ß 0Ñ 0Ý Ý Ý å %å %Ý  ß 5ö Oô	�nô 	ô	�hô 	ñ �$Ôö0ó ð0ôÐ*¨Dô ô
�$×"Ñ"ô ö &ð˜Cð ¨8ð ¸ó ð) ð )¨gó )ð ÷Gbð Gbó ðGbôT%�ô %ñ " (×"3Ñ"3¸tÈÔS€Ô Ù'¨×(?Ñ(?È4ÐU^Ô_€Ô ô!�Dô !ðH Ó ØÓ óKr   