
    e0                     x    d dl Z ddlmZmZmZ ddlmZ ddlmZ  G d dej                        Z	 G d	 d
e      Z
y)    N   )QtCoreQtGui	QtWidgets)VerticalLabel   )DockDropc                       e Zd Z ej                         Z ej                  e      ZddZddZ	ddZ
d Zd Zd Zd Zd	 Zdd
Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)DockNc                 t   t         j                  j                  |        t        |       | _        d | _        || _        || _        || _        | j                  t        |fi || _        | | j                  _
        | j                  j                         r/| j                  j                  j                  | j                         d| _        d| _        || _        d| _        t        j&                         | _        | j(                  j+                  dddd       | j(                  j-                  d       | j/                  | j(                         | j(                  j1                  | j                  dd       t        j                         | _        | j(                  j1                  | j2                  dd       t        j&                         | _        | j4                  j+                  dddd       | j4                  j-                  d       | j2                  j/                  | j4                         | j2                  j7                  t         j8                  j:                  j<                  t         j8                  j:                  j<                         g | _        d| _         | j                  jC                          d| _"        d| _#        d| _$        d	| _%        | jM                  d       | j2                  jO                  | jD                          | jP                  |  || j1                  |       |r| jS                          y y )
NFT
horizontalr   r   z
        Dock > QWidget {
            border: 1px solid #000;
            border-radius: 5px;
            border-top-left-radius: 0px;
            border-top-right-radius: 0px;
            border-top-width: 0px;
        }z
        Dock > QWidget {
            border: 1px solid #000;
            border-radius: 5px;
            border-top-left-radius: 0px;
            border-bottom-left-radius: 0px;
            border-left-width: 0px;
        }zg
        Dock > QWidget {
            border: 1px solid #000;
            border-radius: 5px;
        }zg
        Dock > QWidget {
            border: 4px solid #00F;
            border-radius: 5px;
        })*r   QWidget__init__r	   dockdrop
_container_namearealabel	DockLabeldock
isClosablesigCloseClickedconnectcloselabelHidden	moveLabel
autoOrientorientationQGridLayout	topLayoutsetContentsMargins
setSpacing	setLayout	addWidget
widgetArealayoutsetSizePolicyQSizePolicyPolicy	Expandingwidgets
currentRowraiseOverlayhStylevStylenStyle	dragStylesetAutoFillBackgroundsetStyleSheet
setStretchhideTitleBar)	selfnamer   sizewidget	hideTitleautoOrientationr   kargss	            9/usr/lib/python3/dist-packages/pyqtgraph/dockarea/Dock.pyr   zDock.__init__   s_   ""4( 
	
::"4151DJ

::  "JJ&&..tzz: )'"..0))!Q15!!!$t~~&  Q2#++-  !Q7++-&&q!Q2q!!!$++.%%i&;&;&B&B&L&LiNcNcNjNjNtNtu""$

 	""5)%%dkk2NN6"     c                     |dgS |dk(  S )Nr    )r6   r7   s     r=   
implementszDock.implementsS   s    <8O6>!r>   c                 Z    |d}|d}||f| _         | j                  j                          y)z
        Set the 'target' size for this Dock.
        The actual size will be determined by comparing this Dock's
        stretch value to the rest of the docks it shares space with.
        Nr   )_stretchsigStretchChangedemit)r6   xys      r=   r4   zDock.setStretchY   s5     9A9AA##%r>   c                     | j                   S N)rC   r6   s    r=   stretchzDock.stretchf   s    }}r>   c                     | j                   j                          d| _        | j                  j	                  d       | j                          y)zo
        Hide the title bar for this Dock.
        This will prevent the Dock being moved by the user.
        TcenterN)r   hider   r   removeAllowedAreaupdateStylerJ   s    r=   r5   zDock.hideTitleBari   s8    
 	

''1r>   c                     | j                   j                          d| _        | j                  j	                  d       | j                          y)z3
        Show the title bar for this Dock.
        FrM   N)r   showr   r   addAllowedArearP   rJ   s    r=   showTitleBarzDock.showTitleBars   s8     	

 $$X.r>   c                 6    | j                   j                         S )zI
        Gets the text displayed in the title bar for this dock.
        )r   textrJ   s    r=   titlez
Dock.title|   s     zz  r>   c                 :    | j                   j                  |       y)zE
        Sets the text displayed in title bar for this Dock.
        N)r   setText)r6   rV   s     r=   setTitlezDock.setTitle   s     	

4 r>   c                 j   | j                         y|dk(  rY| j                  rM| j                         j                         dk(  rd}n)| j                         | j	                         dz  kD  rd}nd}|s| j
                  |k7  r3|| _        | j                  j                  |       | j                          yy)z
        Sets the orientation of the title bar for this Dock.
        Must be one of 'auto', 'horizontal', or 'vertical'.
        By default ('auto'), the orientation is determined
        based on the aspect ratio of the Dock.
        Nautotabr   g      ?vertical)		containerr   typewidthheightr   r   setOrientationrP   )r6   oforces      r=   rc   zDock.setOrientation   s     >>#;4??~~$$&%/ c 11 D$$) DJJ%%a( *r>   c                 T   | j                   r&| j                  j                  | j                         y | j                  dk(  rt| j
                  j                  d       | j                  r'| j                  j                  | j
                  dd       | j                  j                  | j                         y | j
                  j                  d       | j                  r'| j                  j                  | j
                  dd       | j                  j                  | j                         y )Nr^   r   r   r   )r   r%   r3   r0   r   r   rc   r   r    r$   r/   r.   rJ   s    r=   rP   zDock.updateStyle   s    OO))$++6+JJ%%j1~~((Q:OO))$++6JJ%%l3~~((Q:OO))$++6r>   c                 v    | j                          | j                  j                  | j                                y rI   )rc   r   resizeOverlayr8   r6   evs     r=   resizeEventzDock.resizeEvent   s&    ##DIIK0r>   c                     | j                   S rI   )r   rJ   s    r=   r7   z	Dock.name   s    zzr>   c                    || j                   }t        |dz   | j                         | _         | j                  j                  |       | j                  j                  |||||       | j                  j                          y)z
        Add a new widget to the interior of this Dock.
        Each Dock uses a QGridLayout to arrange widgets within.
        Nr   )r,   maxr+   appendr&   r$   r   r-   )r6   r9   rowcolrowspancolspans         r=   r$   zDock.addWidget   sd    
 ;//Cc!eT__5F#fc3A""$r>   c                    t        j                  |       | _        t        j                         }| j                  j                  |       | j                  j                  | j                         | j                          t        | j                  d      r| j                  j                         n| j                  j                         }| j                          y )Nexec)r   QDragdragr   	QMimeDatasetMimeDatar%   r3   r1   updatehasattrru   exec_rP   )r6   mimeactions      r=   	startDragzDock.startDrag   s    KK%	!		d#%%dnn5%,TYY%?!TYY__EVr>   c                 :    | j                   j                  |        y rI   )r   	floatDockrJ   s    r=   floatz
Dock.float   s    		D!r>   c                     | j                   S rI   )r   rJ   s    r=   r_   zDock.container   s    r>   c                 6   | j                   | j                   j                  d       || _         |d | _        y |j                  | _        |j                         dk7  r#d| _        | j
                  j                  d       nd| _        | j                  d       y )NF)	propagater]   T)re   )r   apoptoser   r`   r   r   setDimrc   )r6   cs     r=   containerChangedzDock.containerChanged   s~    ??&OO$$u$59DIDIvvx5 !%

!!%(!&d+r>   c                 B    | j                         j                  |        y)z?If this Dock is stacked underneath others, raise it to the top.N)r_   	raiseDockrJ   s    r=   r   zDock.raiseDock   s    ""4(r>   c                    | j                   !t        j                  d|  dt        d       y| j	                  d       t
        j                  j                  | j                         | j                  j	                  d       | j                   j                          d| _         | j                  j                  |        y)z3Remove this dock from the DockArea it lives inside.NzCannot close dock z because it is not open.r   )
stacklevel)r   warningswarnRuntimeWarning	setParentr   QLabelr   r   r   	sigClosedrE   rJ   s    r=   r   z
Dock.close   s    ??"MM.tf4LM~jklttzz*

T"  "D!r>   c                 L    d| j                         d| j                         dS )Nz<Dock  >)r7   rK   rJ   s    r=   __repr__zDock.__repr__   s    !%dlln==r>   c                 6     | j                   j                  |  y rI   )r   dragEnterEventr6   argss     r=   r   zDock.dragEnterEvent       $$$d+r>   c                 6     | j                   j                  |  y rI   )r   dragMoveEventr   s     r=   r   zDock.dragMoveEvent   s    ###T*r>   c                 6     | j                   j                  |  y rI   )r   dragLeaveEventr   s     r=   r   zDock.dragLeaveEvent   r   r>   c                 6     | j                   j                  |  y rI   )r   	dropEventr   s     r=   r   zDock.dropEvent   s    &r>   )N)
   r   NFTNrI   )NN)r\   F)Nr   r   r   ) __name__
__module____qualname__r   SignalrD   objectr   r   rA   r4   rK   r5   rT   rW   rZ   rc   rP   rk   r7   r$   r   r   r_   r   r   r   r   r   r   r   r   r@   r>   r=   r   r      s    %f%ID L"&!!271
%",")">,+,'r>   r   c                        e Zd Z ej                  ee      Z ej                         ZddZd Z	d Z
d Zd Zd Zd Zd Zd	 Z fd
Z xZS )r   c                    d| _         d| _        || _        t        j                  | |dd       | j                  t        j                  j                  j                  t        j                  j                  j                  z         d | _        | j                          | j                  d       d| _        d | _        |rt!        j"                  |       | _        | j                  j$                  j'                  | j(                         | j                  j+                  t         j,                  j/                         j1                  t         j2                  j4                  j6                               y y )NFr   )r   
forceWidth)dim
fixedWidthfontSizer   r   setAlignmentr   QtAlignmentFlagAlignTopAlignHCenterr   rP   r2   
mouseMovedcloseButtonr   QToolButtonclickedr   r   setIconQApplicationstylestandardIconQStyleStandardPixmapSP_TitleBarCloseButton)r6   rV   closabler   s       r=   r   zDockLabel.__init__	  s    tT|PUV&))11::699;R;R;_;__`	""5)(44T:D$$,,T-A-AB$$Y%;%;%A%A%C%P%PQZQaQaQpQp  RH  RH  &I  J r>   c                 V   d}| j                   rd}d}d}nd}d}d}| j                  dk(  r@d	|d
|d|d|d|d| j                  d| _        | j	                  | j                         y d	|d
|d|d|d|d| j                  d| _        | j	                  | j
                         y )N3pxz#aaaz#44az#339z#fffz#66cz#55Br^   z/DockLabel {
                background-color : z;
                color : zX;
                border-top-right-radius: 0px;
                border-top-left-radius: z^;
                border-bottom-right-radius: 0px;
                border-bottom-left-radius: zM;
                border-width: 0px;
                border-right: 2px solid zd;
                padding-top: 3px;
                padding-bottom: 3px;
                font-size: z;
            }z+;
                border-top-right-radius: z*;
                border-top-left-radius: z;
                border-bottom-right-radius: 0px;
                border-bottom-left-radius: 0px;
                border-width: 0px;
                border-bottom: 2px solid zd;
                padding-left: 3px;
                padding-right: 3px;
                font-size: )r   r   r   r/   r3   r.   )r6   rfgbgborders        r=   rP   zDockLabel.updateStyle  s    88BBFBBFz) Aq&$--9DK t{{+ *8 Aq&$--9DK t{{+r>   c                 R    | j                   |k7  r|| _         | j                          y y rI   )r   rP   )r6   ds     r=   r   zDockLabel.setDimD  s%    88q=DH r>   c                 P    t        j                  | |       | j                          y rI   )r   rc   rP   )r6   rd   s     r=   rc   zDockLabel.setOrientationI  s    $$T1-r>   c                     | j                   d uS rI   )r   rJ   s    r=   r   zDockLabel.isClosableM  s    t++r>   c                     t        |d      r|j                         n|j                         }|| _        d| _        |j                          y )NpositionF)r{   r   localPospressPosr   acceptr6   rj   lposs      r=   mousePressEventzDockLabel.mousePressEventP  s5     'J 7r{{}R[[]
		r>   c                    | j                   smt        |d      r|j                         n|j                         }|| j                  z
  j                         t        j                  j                         kD  | _         | j                   rO|j                         t        j                  j                  j                  k(  r| j                  j                          |j!                          y )Nr   )r   r{   r   r   r   manhattanLengthr   r   startDragDistancebuttonsr   r   MouseButton
LeftButtonr   r   r   r   s      r=   mouseMoveEventzDockLabel.mouseMoveEventV  s    $+B
$;2;;=D#dmm3DDFI_I_IqIqIssDO??rzz|vyy/D/D/O/OOII!
		r>   c                 v    |j                          | j                  s| j                  j                  | |       y y rI   )r   r   
sigClickedrE   ri   s     r=   mouseReleaseEventzDockLabel.mouseReleaseEvent_  s+    
		OO  r* r>   c                     |j                         t        j                  j                  j                  k(  r| j
                  j                          y y rI   )buttonr   r   r   r   r   r   ri   s     r=   mouseDoubleClickEventzDockLabel.mouseDoubleClickEventd  s3    99;&))//:::IIOO ;r>   c                    | j                   r| j                  dk(  r5|j                         j                         }t	        j
                  dd      }nS|j                         j                         }t	        j
                  |j                         j                         |z
  d      }| j                   j                  t	        j                  ||             | j                   j                  |       t        t        | 3  |       y )Nr^   r   )r   r   r8   ra   r   QPointrb   setFixedSizeQSizemovesuperr   rk   )r6   rj   r8   pos	__class__s       r=   rk   zDockLabel.resizeEventh  s    :-wwy(mmAq)wwy'')mmBGGIOO$5$<a@))&,,tT*BC!!#&i)"-r>   )F12px)r   r   r   r   r   r   r   r   r   rP   r   rc   r   r   r   r   r   rk   __classcell__)r   s   @r=   r   r     s[    vv.J#fmmoOJ"(,T
,+

. 
.r>   r   )r   r   r   r   r   widgets.VerticalLabelr   r	   r   r   r   r@   r>   r=   <module>r      s7     ) ) 1 y'9 y'xn. n.r>   