
    uj	                        d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddl
mZ e G d d             Ze G d	 d
             Ze G d d             ZddZddZddZy)uZ  yjm_settings.py

Host 설정 저장/로드 모듈.

현재는 Google Drive API 직접 업로드가 아니라, Google Drive for Desktop 같은
동기화 폴더 또는 일반 로컬 폴더에 snapshot ring 파일을 저장한다.
해당 폴더가 Google Drive 동기화 폴더이면 Drive 클라이언트가 클라우드 업로드를 담당한다.
    )annotationsN)asdict	dataclassfield)Path)Anyc                  ~    e Zd ZU dZded<   dZded<   dZded	<   d
Zded<   dZded<   dZ	ded<   dZ
ded<   dZded<   y)SnapshotSettingsFboolenabledsnapshots_drivestrfolder
   int
keep_countg      ?floatinterval_secg      @min_save_interval_secg       @change_threshold_percent   	max_widthH   jpeg_qualityN)__name__
__module____qualname__r   __annotations__r   r   r   r   r   r   r        #D:\_St\RTC8790_8791\yjm_settings.pyr
   r
      sT    GT#FC#JL%#&5&&)e)IsL#r    r
   c                      e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   dZ	ded<   dZ
ded<   dZded<   dZd	ed<   dZd	ed<   dZd	ed<   dZded<   y)
UiSettings940x850r   window_geometrynormalwindow_statedesktopsourcer   r   display_indexFr   lock_windowTremote_controlfile_transfer	clipboard   fpsF   r   r   r   draw_borderN)r   r   r   r%   r   r'   r)   r*   r+   r,   r-   r.   r0   r   r   r2   r   r    r!   r#   r#      sy    $OS$ L# FCM3KNDM4ItCML#IsKr    r#   c                  F    e Zd ZU  ee      Zded<    ee      Zded<   y)AppSettings)default_factoryr#   uir
   snapshotN)	r   r   r   r   r#   r6   r   r
   r7   r   r    r!   r4   r4   .   s"    :6B
6!&7G!HHHr    r4   c                    |j                         D ]T  \  }}t        | |      st        | |      }t        |d      rt        |t              rt        ||       Ht        | ||       V | S )N__dataclass_fields__)itemshasattrgetattr
isinstancedict_merge_dataclasssetattr)instancevalueskeyvaluecurrents        r!   r?   r?   4   s`    lln
Ux%(C(723
5$8OWe,Hc5) % Or    c                
   t        |       } t               }| j                         s|S 	 t        j                  | j                  d            }t        |t              rt        ||       |S # t        $ r t               cY S w xY w)Nutf-8encoding)
r   r4   existsjsonloads	read_textr=   r>   r?   	Exception)pathsettingsdatas      r!   load_settingsrR   @   sr    :D}H;;=zz$..'.:;dD!Xt, O  }s   AA, ,BBc                    t        |       } | j                  j                  dd       | j                  t	        j
                  t        |      dd      d       y )NT)parentsexist_okF   )ensure_asciiindentrG   rH   )r   parentmkdir
write_textrK   dumpsr   )rO   rP   s     r!   save_settingsr]   O   sE    :DKKdT2OODJJvh/eANY`Oar    )rA   r   rB   zdict[str, Any]returnr   )rO   
str | Pathr^   r4   )rO   r_   rP   r4   r^   None)__doc__
__future__r   rK   dataclassesr   r   r   pathlibr   typingr   r
   r#   r4   r?   rR   r]   r   r    r!   <module>rf      s|    #  0 0         I I I
	br    