a
    V$cy9                     @   s
  d dl mZmZmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlZd dlmZmZmZmZmZ d dlmZmZ d dlmZmZmZ d dlm Z m!Z!m"Z" d dlm#Z#m$Z$ d d	lm%Z% d d
lm&Z&m'Z' d dlm(Z(m)Z) d dlm*Z*m+Z+ G dd dej,j-j.Z/edej,j-j0dd  ed ed edej1j1j2dd ddd ed ed ed ed ed ee edej,j-j3deddid ee edej,j-j3deddid ee ed ej,j-j3d edd id ee ed!ej,j-j4d!e ed" ed# ed$ ed% ee+ ed&ej,j-j5d&e ed' ed( d)D ]"Z6ee6ej,j-j7e6d* ee qPed+ej8j9dd  ed+ ed, ed- ed. ed/ej,j:j;dd dd0 ed1 ed, ed2 ed3 ed4ej,j:j<d4d dd0 ed ed5 ed6 ed7 ed8 ed9 ed: ed; ed< ed= ed> ed? ed@ ee edAej,j:j=dAd* ee ee! edBej8j>dCd  edD edE edF edG edH edI edJ ed, edK edL edM edN edO ee ee! edPej8j?dAd ddQ edR ed, edK edL edM edN edS ed ed ee ee! ee# ee$ edRej8j@dRd ddQ edR edS ed ee ee# ee$ ddTdUZAedVeAdd dddW edX edY ed= ed; edL edM edZ ee  dd[d\ZBed]eBdd dddW edX edY ed= ed; edL edM edZ ee  dd^d_ZCdd`daZDedbeCdbd*dddW edc edd ede edf edg edh edi edj edk edl edm ed( ed$ edn edo edpd( ee% ee' ee) ee& ee( ee* edqeDdqedddW ed# ed" ed% edc edd ede edf edg edh edi edj edk edl edm ed( ed$ ed( edn edo edpd( ee% ee' ee) ee& ee( ee* ee+ edrej8jEdredds edt edF edG edE edI edH edJ edD edu edv edwej8jFdwd*ddx edy ee ee! edzej8jGdzd ddd{ edy edX edY ed= ee  ed|ej,jHjId|d*d}d~ ed ed ejJjKD ]ZLeeL q`dddZMdD ]VZ6ee6eMdd dd}dd}d ed ed ed ed ejJjKD ]ZLeeL qq~edej,jNjOdd*dd0 ed ed edg ed ed ed ed ed ed ed ed ed edK edL edM ed ed edN ed ed edej,jNjPdedd0 ed edej,j:jQdd dd0 edL edM ed edej,j:jRdd  ed ed, edej,j-jSdd*dd0 ed ed ed ee" edej,j:jTdd  ed, ed3 ed ed ed dejUjV_WdS )    )divisionabsolute_importwith_statementprint_functionunicode_literals)PY2
basestringbchrbordchropenpystrrangeroundstrtobytesunicodeN)
PositionalKeywordStylePrefixStyleadd)DisplayableParsermany)text_propertiesbox_propertieswindow_properties)bar_propertiesbutton_propertiesposition_properties)text_position_propertiestext_text_properties)side_position_properties)scrollbar_bar_propertiesscrollbar_position_properties)vscrollbar_bar_propertiesvscrollbar_position_properties)viewport_position_propertiesgrid_propertiesc                       sV   e Zd ZdZd fdd	Zedd Zdd Zd	d
 Zdd Z	dd Z
dd Z  ZS )ShowIfzc
    This is a displayable that wraps displayables that are
    underneath a showif statement.
    Nc                    sr   t t|   || _|d u r6|r(d| _nd | _|| _n8| jrJ|jsJd| _n| js^|jr^d| _n|j| _|j| _d S )Nappearshowhide)superr)   __init__	conditionpending_event
show_child)selfr/   replaces	__class__ renpy/sl2\sldisplayables.pyr.   1   s    zShowIf.__init__c                 C   s   | j  S N)r1   r2   r6   r6   r7   	_box_skipH   s    zShowIf._box_skipc                 C   s   | j r| j| j  d | _ d S r8   )r0   childset_transform_eventr9   r6   r6   r7   per_interactL   s    zShowIf.per_interactc           	      C   s   d }t | jtjjjrN| js"| jr~tjj| j||||}| jpH| jj	 | _n0| jrttjj| j||||}d| _n
d }d| _| jr|
 \}}tjj||}|j|d| jd ntjjdd}dg| _|S )NTF)r   r   )focusr   )
isinstancer;   renpydisplaymotion	Transformr/   r1   renderhide_responseget_sizeRenderblitoffsets)	r2   widthheightstatcrcwchrvr6   r6   r7   rD   Q   s"    zShowIf.renderc                 C   s    | j r| j||||S d S d S r8   )r/   r;   event)r2   evxyrL   r6   r6   r7   rR   l   s    zShowIf.eventc                 C   s
   | j  S r8   )r;   get_placementr9   r6   r6   r7   rV   r   s    zShowIf.get_placementc                 C   s   | j r|  S dS d S )N )r/   _tts_commonr9   r6   r6   r7   _ttsu   s    zShowIf._tts)N)__name__
__module____qualname____doc__r.   propertyr:   r=   rD   rR   rV   rY   __classcell__r6   r6   r4   r7   r)   +   s   
r)   nulldefaultrJ   rK   textT)scoper3   slow	slow_done
substituterc   hboxlayout
horizontal)default_keywordsvboxverticalfixedgridcolsrows	transposeallow_underfullside	positionsspacing)windowframe   keyactionactivate_soundcapturetimer)r3   delayrepeatmodalinputlengthallowexclude	copypasteprefixsuffixchangedpixel_widthvaluemaskcaret_blinkcaretbuttonimagebuttonimage_buttonautoidlehoverinsensitiveselected_idleselected_hoverselected_insensitiveclickedhovered	unhovered	alternateimage_style
textbuttonrc   label
text_stylec                 K   s   d}d}d }d }d|v r"| d}d|v r4| d}d|v rF| d}d|v rX| d}d|vrt|tjjrtj| j| d }||d< tjj	j
||||fdd	i|S )
Nrx   r   rJ   rK   r   r   stylerl   Fpopr?   r@   uiBarValuecombine_stylestyle_prefix	get_stylerA   behaviorBarcontext
propertiesr   r   rJ   rK   r   r6   r6   r7   sl2bar   s"    



r   bar)r3   pass_context
adjustmentr   releasedc                 K   s   d}d}d }d }d|v r"| d}d|v r4| d}d|v rF| d}d|v rX| d}d|vrt|tjjrtj| j| d }||d< tjj	j
||||fdd	i|S )
Nrx   r   rJ   rK   r   r   r   rl   Tr   r   r6   r6   r7   sl2vbar  s"    



r   vbarc                 K   sd   t j }| dur"| jt jjd _t jjf i |}t jj  |j}||urT||_t	|j
|_|S zg
    This converts the output of renpy.ui.viewport into something that
    sl.displayable can use.
    N)r@   r   detachedr   stackviewportr   r;   _mainlistchildren_composite_partsr   kwargsdvprQ   r6   r6   r7   sl2viewport7  s    
r   c                 K   sd   t j }| dur"| jt jjd _t jjf i |}t jj  |j}||urT||_t	|j
|_|S r   )r@   r   r   r   r   vpgridr   r;   r   r   r   r   r   r6   r6   r7   	sl2vpgridP  s    
r   r   
child_size
mousewheel	arrowkeyspagekeys	draggable
edgescrollxadjustmentyadjustmentxinitialyinitial
scrollbarsxminimumyminimumside_r   imagemap)r   groundalphacachehotspot)r   spothotbar)r3   r   	transformF)default_propertiesrM   idc                 K   s   | d u rt jjjS t jj| |d} | jr:| d } |   | }t j	j
j}|d urnt||rn|| || |r|f d| i|}| |_|S )Nr   r;   )r@   sl2slastNO_DISPLAYABLEeasydisplayable_duplicatable
_duplicate_uniquerA   rB   rC   r?   
take_statetake_execution_stater   )r   r3   rc   r   rQ   rC   r6   r6   r7   sl2add  s    




r   )r   image)r3   r   rc   uniqueimaltdrag	activated	drag_name	droppable
drag_raisedraggingdraggeddroppeddrop_allowabledrag_handledrag_joineddrag_offscreen
focus_mask
mouse_dropr;   sound	draggroupmin_overlap	mouseareaonrR   nearrectrectr>   
prefer_topdismissdebug)N)N)N)N)NN)X
__future__r   r   r   r   r   renpy.compatr   r   r	   r
   r   r   r   r   r   r   r   r   r@   renpy.sl2.slparserr   r   r   r   r   r   r   renpy.sl2.slpropertiesr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   rA   rh   	Containerr)   Nullrb   TextMultiBoxGridSidenameWindowr   _keyr   TimerInputButton_imagebutton_textbutton_labelr   r   r   r   	_imagemap_hotspot_hotbarrB   rC   atl
PROPERTIESir   dragdropDrag	DragGroup	MouseAreaOnEventNearRectDismissBehaviorr   slparserparserr6   r6   r6   r7   <module>   s  8Q






