U
    <gS                     @   sX   d dl mZmZmZ ddlmZmZmZmZ ddl	m
Z
mZ edZG dd deZdS )	    )AnyListOptional   )BooleanObject
NameObjectNumberObjectis_null_or_none)ArrayObjectDictionaryObjectFc                       s  e Zd Zdee dd fddZeee edddZee	ddd	d
Z
eee ee dddZeee eddddZeeee  edddZeee ddddZeee edddZeeddddZeedddZdeed dddZ  ZS ) ViewerPreferencesN)objreturnc                    sH   t  |  t|s"| |  z|j| _W n tk
rB   Y nX d S N)super__init__r	   updateitemsZindirect_referenceAttributeError)selfr   	__class__ =/tmp/pip-unpacked-wheel-wu2fni14/pypdf/generic/_viewerpref.pyr   *   s    zViewerPreferences.__init__keydefaultr   c                 C   s   |  ||S r   getr   r   r   r   r   r   	_get_bool3   s    zViewerPreferences._get_bool)r   vr   c                 C   s   t |dk| t|< d S )NT)r   r   r   r   r!   r   r   r   	_set_bool6   s    zViewerPreferences._set_boolc                 C   s   |  ||S r   r   r   r   r   r   	_get_name9   s    zViewerPreferences._get_name)r   lstr!   r   c                 C   sL   |d dkrt | d|g kr8||kr8t | dt|| t|< d S )Nr   /z does not start with '/'z is an unacceptable value)
ValueErrorr   )r   r   r%   r!   r   r   r   	_set_name<   s
    zViewerPreferences._set_namec                 C   s   |  ||d krd nt|S r   )r   r
   r   r   r   r   _get_arrC   s    zViewerPreferences._get_arrc                 C   sR   |d kr0z| t |= W n tk
r*   Y nX d S t|tsBtd|| t |< d S )NzArrayObject is expected)r   KeyError
isinstancer
   r'   r"   r   r   r   _set_arrF   s    
zViewerPreferences._set_arrc                 C   s   |  ||S r   r   r   r   r   r   _get_intQ   s    zViewerPreferences._get_intc                 C   s   t || t|< d S r   )r   r   r"   r   r   r   _set_intT   s    zViewerPreferences._set_int)r   c                 C   s   t dS )N/PrintScaling)r   r   r   r   r   PRINT_SCALINGW   s    zViewerPreferences.PRINT_SCALING)clsvaluer   c                 C   sl  t tt tddd}t tt  tt tddd}t tt tddd}t tt tdd	d
}|dt| _	|dt| _
|dt| _|dt| _|dt| _|dt| _|dddddgtd| _|dddgtd| _|dg d | _|dg d | _|dg d | _|dg d | _|dg d | _|ddd d!gd | _|d"d | _|d#d | _|d$d | _|d%t | _t| S )&Nr   c              	      s.   t  fddfddd d d  dS )Nc                    s   |   S r   )r    r0   r   r   r   r   <lambda>^       zCViewerPreferences.__new__.<locals>._add_prop_bool.<locals>.<lambda>c                    s   |   |S r   )r#   r   r!   r   r   r   r5   _   r6   *
            Returns/Modify the status of 
, Returns  if not defined
            propertyr   r   r   r4   r   _add_prop_bool\   s    
z1ViewerPreferences.__new__.<locals>._add_prop_bool)r   r%   r   r   c                    s6   t  fddfddd d d  d dS )Nc                    s   |   S r   )r$   r0   r4   r   r   r5   j   r6   zCViewerPreferences.__new__.<locals>._add_prop_name.<locals>.<lambda>c                    s   |   |S r   )r(   r7   )r   r%   r   r   r5   k   r6   r9   r:   z0 if not defined.
            Acceptable values: z
            r<   )r   r%   r   r   )r   r   r%   r   _add_prop_namef   s    z1ViewerPreferences.__new__.<locals>._add_prop_namec              	      s.   t  fddfddd d d  dS )Nc                    s   |   S r   )r)   r0   r4   r   r   r5   u   r6   zBViewerPreferences.__new__.<locals>._add_prop_arr.<locals>.<lambda>c                    s   |   |S r   )r,   r7   r8   r   r   r5   v   r6   r9   r:   r;   r<   r>   r   r4   r   _add_prop_arrs   s    
z0ViewerPreferences.__new__.<locals>._add_prop_arrc              	      s.   t  fddfddd d d  dS )Nc                    s   |   S r   )r-   r0   r4   r   r   r5      r6   zBViewerPreferences.__new__.<locals>._add_prop_int.<locals>.<lambda>c                    s   |   |S r   )r.   r7   r8   r   r   r5      r6   r9   r:   r;   r<   r>   r   r4   r   _add_prop_int}   s    
z0ViewerPreferences.__new__.<locals>._add_prop_intz/HideToolbarz/HideMenubarz/HideWindowUIz
/FitWindowz/CenterWindowz/DisplayDocTitlez/NonFullScreenPageModez/UseNonez/UseOutlinesz
/UseThumbsz/UseOCz
/Directionz/L2Rz/R2Lz	/ViewAreaz	/ViewClipz
/PrintAreaz
/PrintClipr/   z/Duplexz/Simplexz/DuplexFlipShortEdgez/DuplexFlipLongEdgez/PickTrayByPDFSizez/PrintPageRangez
/NumCopiesz/Enforce)strr   r   r=   r   r   r
   intf_objZhide_toolbarZhide_menubarZhide_windowuiZ
fit_windowZcenter_windowZdisplay_doctitleZnon_fullscreen_pagemode	directionZ	view_areaZ	view_clipZ
print_areaZ
print_clipZprint_scalingZduplexZpick_tray_by_pdfsizeZprint_pagerangeZ
num_copiesZenforcer   __new__)r2   r3   r?   r@   rA   rB   r   r   r   rG   [   sN      


    zViewerPreferences.__new__)N)N)__name__
__module____qualname__r   r   r   rC   r   r    boolr#   r   r$   r   r(   r   r   r)   r
   r,   r-   rD   r.   r=   r1   rG   __classcell__r   r   r   r   r   )   s   	r   N)typingr   r   r   _baser   r   r   r	   Z_data_structuresr
   r   rE   r   r   r   r   r   <module>   s   