a
    xd!                     @   s   d dl Z d dlmZ d dlmZ d dlmZ ere jdkrTd dlmZ d dlmZ nd dlmZ d dlmZ ed Z	G d	d
 d
eddZ
G dd deddZG dd deddZn0d dlmZ d dlmZ eZ	eeef  Z
 ZZG dd dZdS )    N)TYPE_CHECKING)List)Optional)      )Literal)	TypedDict)portrait	landscapec                   @   s.   e Zd ZU eed< eed< eed< eed< dS )_MarginOptsleftrighttopbottomN__name__
__module____qualname__float__annotations__ r   r   d/var/www/html/Ranjet/env/lib/python3.9/site-packages/selenium/webdriver/common/print_page_options.pyr   #   s   
r   F)totalc                   @   s   e Zd ZU eed< eed< dS )	_PageOptswidthheightNr   r   r   r   r   r   )   s   
r   c                   @   sJ   e Zd ZU eed< eed< eed< eed< eed< eed< e	e
 ed< dS )	
_PrintOptsmarginpage
backgroundorientationscaleshrinkToFit
pageRangesN)r   r   r   r   r   r   boolOrientationr   r   strr   r   r   r   r   -   s   
r   )Any)Dictc                   @   s.  e Zd ZddgZddddZedddZeee	 dd	d
Z
e
je	dddd
Z
eee dddZejeddddZeee dddZejeddddZeee dddZejeddddZeee dddZejeddddZeee dddZejeddddZeee dddZejeddddZeee ddd Zejeddd!d Zeee dd"d#Zejeddd$d#Zeee dd%d&Zejeddd'd&Zeeee  dd(d)Zejee ddd*d)Zeedd+d,d-ZdS ).PrintOptionsr	   r
   N)returnc                 C   s   i | _ i | _i | _d S )N)_print_options_page_marginselfr   r   r   __init__A   s    zPrintOptions.__init__c                 C   s   | j S )z>
        :Returns: A hash of print options configured
        )r+   r.   r   r   r   to_dictF   s    zPrintOptions.to_dictc                 C   s   | j ddS )zA
        :Returns: Orientation that was set for the page
        r    Nr+   getr.   r   r   r   r    L   s    zPrintOptions.orientation)valuer*   c                 C   s(   || j vrtd| j  || jd< dS )zy
        Allows you to set orientation of the page
        :Args:
         - value: Either portrait or landscape
        z!Orientation value must be one of r    N)ORIENTATION_VALUES
ValueErrorr+   r/   r4   r   r   r   r    S   s    
c                 C   s   | j ddS )z;
        :Returns: Scale that was set for the page
        r!   Nr2   r.   r   r   r   r!   _   s    zPrintOptions.scalec                 C   s2   |  d| |dk s|dkr$td|| jd< dS )z}
        Allows you to to set scale for the page
        :Args:
         - value: integer or float between 0.1 and 2
        ZScaleg?   z'Scale value should be between 0.1 and 2r!   N)$_PrintOptions__validate_num_propertyr6   r+   r7   r   r   r   r!   f   s    c                 C   s   | j ddS )z9
        :Returns: Background value that was set
        r   Nr2   r.   r   r   r   r   t   s    zPrintOptions.backgroundc                 C   s    t |tstd|| jd< dS )zq
        Allows you to set the boolean value for the background
        :Args:
         - value: Boolean
        z(Set background value should be a booleanr   N
isinstancer$   r6   r+   r7   r   r   r   r   {   s    
c                 C   s   | j ddS )z3
        :Returns: Page width that was set
        r   Nr,   r3   r.   r   r   r   
page_width   s    zPrintOptions.page_widthc                 C   s&   |  d| || jd< | j| jd< dS )zr
        Allows you to set width of the page
        :Args:
         - value: A positive integer or float
        z
Page Widthr   r   Nr9   r,   r+   r7   r   r   r   r=      s    
c                 C   s   | j ddS )z4
        :Returns: Page height that was set
        r   Nr<   r.   r   r   r   page_height   s    zPrintOptions.page_heightc                 C   s&   |  d| || jd< | j| jd< dS )zs
        Allows you to set height of the page
        :Args:
         - value: A positive integer or float
        zPage Heightr   r   Nr>   r7   r   r   r   r?      s    
c                 C   s   | j ddS )z2
        :Returns: Top margin of the page
        r   Nr-   r3   r.   r   r   r   
margin_top   s    zPrintOptions.margin_topc                 C   s&   |  d| || jd< | j| jd< dS )zw
        Allows you to set top margin of the page
        :Args:
         - value: A positive integer or float
        z
Margin topr   r   Nr9   r-   r+   r7   r   r   r   rA      s    
c                 C   s   | j ddS )z3
        :Returns: Left margin of the page
        r   Nr@   r.   r   r   r   margin_left   s    zPrintOptions.margin_leftc                 C   s&   |  d| || jd< | j| jd< dS )zx
        Allows you to set left margin of the page
        :Args:
         - value: A positive integer or float
        zMargin leftr   r   NrB   r7   r   r   r   rC      s    
c                 C   s   | j ddS )z5
        :Returns: Bottom margin of the page
        r   Nr@   r.   r   r   r   margin_bottom   s    zPrintOptions.margin_bottomc                 C   s&   |  d| || jd< | j| jd< dS )zz
        Allows you to set bottom margin of the page
        :Args:
         - value: A positive integer or float
        zMargin bottomr   r   NrB   r7   r   r   r   rD      s    
c                 C   s   | j ddS )z4
        :Returns: Right margin of the page
        r   Nr@   r.   r   r   r   margin_right   s    zPrintOptions.margin_rightc                 C   s&   |  d| || jd< | j| jd< dS )zy
        Allows you to set right margin of the page
        :Args:
         - value: A positive integer or float
        zMargin rightr   r   NrB   r7   r   r   r   rE      s    
c                 C   s   | j ddS )z5
        :Returns: Value set for shrinkToFit
        r"   Nr2   r.   r   r   r   shrink_to_fit   s    zPrintOptions.shrink_to_fitc                 C   s    t |tstd|| jd< dS )zX
        Allows you to set shrinkToFit
        :Args:
         - value: Boolean
        z+Set shrink to fit value should be a booleanr"   Nr:   r7   r   r   r   rF      s    
c                 C   s   | j ddS )z4
        :Returns: value set for pageRanges
        r#   Nr2   r.   r   r   r   page_ranges
  s    zPrintOptions.page_rangesc                 C   s    t |tstd|| jd< dS )z
        Allows you to set pageRanges for the print command
        :Args:
         - value: A list of page ranges. Eg: ['1-2']
        zPage ranges should be a listr#   N)r;   listr6   r+   r7   r   r   r   rG     s    
)property_namer4   r*   c                 C   s6   t |ttfst| d|dk r2t| ddS )z3Helper function to validate some of the properties.z  should be an integer or a floatr   z cannot be less then 0N)r;   intr   r6   )r/   rI   r4   r   r   r   Z__validate_num_property  s    z$PrintOptions.__validate_num_property)r   r   r   r5   r0   r   r1   propertyr   r%   r    setterr   r!   r$   r   r=   r?   rA   rC   rD   rE   rF   r   r&   rG   r9   r   r   r   r   r)   >   s`   


r)   )systypingr   r   r   version_infor   r   Ztyping_extensionsr%   r   r   r   r'   r(   r&   r)   r   r   r   r   <module>   s$   

