B
    h                 @   sv   yd dl mZ W n ek
r,   dd ZY nX ddlmZ G dd deZG dd	 d	eZG d
d deZdd Z	dS )    )get_osfhandlec             C   s   t dd S )NzThis isn't windows!)OSError)_ r   MC:\Users\sanjo\AppData\Local\Qlobot\Launcher\ext_packages\colorama\winterm.pyr      s    r      )win32c               @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
WinColorr   r                     N)__name__
__module____qualname__BLACKBLUEGREENCYANREDMAGENTAYELLOWGREYr   r   r   r   r	      s   r	   c               @   s   e Zd ZdZdZdZdS )WinStyler         N)r   r   r   NORMALBRIGHTBRIGHT_BACKGROUNDr   r   r   r   r      s   r   c               @   s   e Zd Zdd Zdd Zdd Zd dd	Zd!ddZd"ddZd#ddZ	d$ddZ
dd Zd%ddZd&ddZd'ddZd(ddZdd ZdS ))WinTermc             C   s>   t t jj| _| | j | j| _| j| _	| j
| _d| _d S )Nr   )r   GetConsoleScreenBufferInfoSTDOUTZwAttributes_default	set_attrs_fore_default_fore_back_default_back_style_default_style_light)selfr   r   r   __init__   s    zWinTerm.__init__c             C   s   | j | jd  | j| jB  S )N   )r&   r(   r*   r,   )r-   r   r   r   	get_attrs*   s    zWinTerm.get_attrsc             C   s.   |d@ | _ |d? d@ | _|tjtjB @ | _d S )Nr   r   )r&   r(   r   r   r    r*   )r-   valuer   r   r   r%   -   s    
zWinTerm.set_attrsNc             C   s$   |  | j | j| jd d| _d S )N)attrsr   )r%   r$   set_consoler,   )r-   	on_stderrr   r   r   	reset_all2   s    zWinTerm.reset_allFc             C   sL   |d kr| j }|| _|r*|  jtjO  _n|  jtj M  _| j|d d S )N)r4   )r'   r&   r,   r   r   r3   )r-   forelightr4   r   r   r   r6   7   s    zWinTerm.forec             C   sL   |d kr| j }|| _|r*|  jtjO  _n|  jtj M  _| j|d d S )N)r4   )r)   r(   r,   r   r    r3   )r-   backr7   r4   r   r   r   r8   B   s    zWinTerm.backc             C   s$   |d kr| j }|| _| j|d d S )N)r4   )r+   r*   r3   )r-   styler4   r   r   r   r9   M   s    zWinTerm.stylec             C   s0   |d kr|   }tj}|r tj}t|| d S )N)r0   r   r#   STDERRZSetConsoleTextAttribute)r-   r2   r4   handler   r   r   r3   S   s    zWinTerm.set_consolec             C   s,   t |j}| jd7  _| jd7  _|S )Nr   )r   r"   dwCursorPositionXY)r-   r;   positionr   r   r   get_position[   s    zWinTerm.get_positionc             C   s,   |d krd S t j}|rt j}t || d S )N)r   r#   r:   SetConsoleCursorPosition)r-   r?   r4   r;   r   r   r   set_cursor_positionc   s    zWinTerm.set_cursor_positionc             C   sB   t j}|rt j}| |}|j| |j| f}t j||dd d S )NF)Zadjust)r   r#   r:   r@   r>   r=   rA   )r-   xyr4   r;   r?   Zadjusted_positionr   r   r   cursor_adjustm   s    
zWinTerm.cursor_adjustr   c       	      C   s   t j}|rt j}t |}|jj|jj }|jj|jj |jj }|dkrZ|j}|| }n8|dkrtt dd}|}n|dkrt dd}|}nd S t 	|d|| t 
||  || |dkrt |d d S )Nr   r   r
    )r   r   )r   r#   r:   r"   dwSizer=   r>   r<   COORDFillConsoleOutputCharacterFillConsoleOutputAttributer0   rA   )	r-   moder4   r;   csbiZcells_in_screenZcells_before_cursor
from_coordcells_to_eraser   r   r   erase_screenu   s(    

zWinTerm.erase_screenc             C   s   t j}|rt j}t |}|dkr:|j}|jj|jj }nH|dkr\t d|jj}|jj}n&|dkr~t d|jj}|jj}nd S t 	|d|| t 
||  || d S )Nr   r   r
   rF   )r   r#   r:   r"   r<   rG   r=   rH   r>   rI   rJ   r0   )r-   rK   r4   r;   rL   rM   rN   r   r   r   
erase_line   s     


zWinTerm.erase_linec             C   s   t | d S )N)r   ZSetConsoleTitle)r-   titler   r   r   	set_title   s    zWinTerm.set_title)N)NFF)NFF)NF)NF)NF)F)r   F)r   F)r   r   r   r.   r0   r%   r5   r6   r8   r9   r3   r@   rB   rE   rO   rP   rR   r   r   r   r   r!      s   








 
r!   c          	   C   st   t jd kst  sdS y@t| }t |}t ||t jB  t |}|t j@ rTdS W n ttfk
rn   dS X d S )NFT)	r   windllwinapi_testr   ZGetConsoleModeZSetConsoleModeZ"ENABLE_VIRTUAL_TERMINAL_PROCESSINGr   	TypeError)fdr;   rK   r   r   r   enable_vt_processing   s    


rW   N)
msvcrtr   ImportError r   objectr	   r   r!   rW   r   r   r   r   <module>   s    