
    e$                         g d Z ddlZddlmZmZ ddlmZ  G d de      Z G d	 d
eej                        Z	 G d de	      Z
 G d de	      Z G d dej                        Z G d deej                        Zy))	Container
HContainer
VContainer
TContainer    N   )QtCore	QtWidgets   )Dockc                   Z    e Zd Zd Zd Zd Zd ZddZddZd Z	d	 Z
d
 ZddZd Zd Zy)r   c                     t         j                  |        || _        d | _        d| _        t        j                         | _        y )N)
   r   )object__init__area
_container_stretchweakrefWeakKeyDictionary	stretchesselfr   s     >/usr/lib/python3/dist-packages/pyqtgraph/dockarea/Container.pyr   zContainer.__init__   s3    	  224    c                     | j                   S N)r   r   s    r   	containerzContainer.container   s    r   c                 H    || _         |d | _        y |j                  | _        y r   )r   r   )r   cs     r   containerChangedzContainer.containerChanged   s     9DIDIr   c                      y r    r   s    r   typezContainer.type   s    r   Nc                    t        |t              s|g}|D ]  }|j                  d         ||dk(  rd}n3| j                         }n"| j	                  |      }|dk(  rd}|dk(  r|dz  }|D ]O  }| j                  ||       |j                  |        |dz  }|j                  j                  | j                         Q | j                          y )Nbeforer   afterr
   )
isinstancelist	setParentcountindexOf_insertItemr!   sigStretchChangedconnectchildStretchChangedupdateStretch)r   newposneighbornindexs         r   insertzContainer.insert    s    #t$%C 	AKK	 h

LL*E{g~
 	BAQ&t$QJE''(@(@A	B 	r   c                    | j                   }| j                         }|dkD  ry |dk(  rw| j                  d      }| j                  (| | j                  j                  u rt        |t              r| j                         y | j                         j                  |d|        | j                          |r||j                          y y y )Nr
   r   r&   )r   r,   widgetr   topContainerr)   r   r   r8   closeapoptose)r   	propagatecontr    chs        r   r=   zContainer.apoptose<   s     JJLq56QB		%$$))2H2H*HQ[\^`iQjoso}o}o  pHNN##B$7

)MMO *9r   c                     | j                  d        | j                  )| j                  j                  | u rd | j                  _        | j                  d        y r   )r+   r   r;   r!   r   s    r   r<   zContainer.closeM   sC    t99 TYY%;%;t%C%)DII"d#r   c                     |j                         }|j                         rDt        |d      r7	 |j                  j	                  | j
                         | j                          y y y #  Y xY w)Nr/   )childremovedhasattrr/   
disconnectr1   r2   )r   evr@   s      r   childEvent_zContainer.childEvent_S   s`    
 XXZ::<GB(;<$$//0H0HI   =<s   %A& &A*c                 $    | j                          y r   )r2   r   s    r   r1   zContainer.childStretchChangeda   s    r   c                 J    ||f| _         | j                  j                          y r   )r   r/   emit)r   xys      r   
setStretchzContainer.setStretche   s    A##%r   c                      y r   r#   r   s    r   r2   zContainer.updateStretchj   s    r   c                     | j                   S )z-Return the stretch factors for this container)r   r   s    r   stretchzContainer.stretchn   s    }}r   )NN)T)__name__
__module____qualname__r   r   r!   r$   r8   r=   r<   rH   r1   rN   r2   rQ   r#   r   r   r   r   	   s>    58"$!&
r   r   c                   \     e Zd ZdZ ej
                         Zd Zd Zd Z	d Z
 fdZ xZS )SplitContainerz[Horizontal or vertical splitter with some changes:
     - save/restore works correctly
    c                     t         j                  j                  |        | j                  |       t        j                  | |       y r   )r	   	QSplitterr   setOrientationr   )r   r   orientations      r   r   zSplitContainer.__init__y   s4    $$T*K(4&r   c                 H    | j                  ||       |j                          y r   )insertWidgetshowr   itemr7   s      r   r.   zSplitContainer._insertItem   s    %&		r   c                 l    | j                         }t        d |D              rdgt        |      z  }d|iS )Nc              3   &   K   | ]	  }|d k(    yw)r   Nr#   ).0rL   s     r   	<genexpr>z+SplitContainer.saveState.<locals>.<genexpr>   s     %!qAv%s   r   sizes)rd   alllen)r   rd   s     r   	saveStatezSplitContainer.saveState   s6    

%u%%D3u:%Er   c                     |d   }| j                  |       t        t        |            D ]  }| j                  |||           y )Nrd   )setSizesrangerf   setStretchFactor)r   staterd   is       r   restoreStatezSplitContainer.restoreState   sC    ges5z" 	/A!!!U1X.	/r   c                 P    t         |   |       t        j                  | |       y r   )super
childEventr   rH   r   rG   	__class__s     r   rq   zSplitContainer.childEvent   s     2dB'r   )rR   rS   rT   __doc__r   Signalr/   r   r.   rg   rn   rq   __classcell__rs   s   @r   rV   rV   s   s6     &' /( (r   rV   c                       e Zd Zd Zd Zd Zy)r   c                 v    t         j                  | |t        j                  j                  j
                         y r   )rV   r   r   QtOrientation
Horizontalr   s     r   r   zHContainer.__init__   s$    dFII,A,A,L,LMr   c                      y)N
horizontalr#   r   s    r   r$   zHContainer.type   s    r   c           	         d}d}g }t        | j                               D ]F  }| j                  |      j                         \  }}||z  }t	        ||      }|j                  |       H | j                  ||       t        t        |            }|dk(  rd}n| j                         |z  }| j                  |D 	cg c]  }	t        |	|z         c}	       y c c}	w Nr   g      ?)rj   r,   r:   rQ   maxappendrN   floatsumwidthri   int
r   rL   rM   rd   rm   wxwytotscaless
             r   r2   zHContainer.updateStretch   s     tzz|$ 	A[[^++-FBGAAr
ALL		 	1 CJ!8EJJL3&EU3s1U7|343   9CNrR   rS   rT   r   r$   r2   r#   r   r   r   r      s    N5r   r   c                       e Zd Zd Zd Zd Zy)r   c                 v    t         j                  | |t        j                  j                  j
                         y r   )rV   r   r   rz   r{   Verticalr   s     r   r   zVContainer.__init__   s$    dFII,A,A,J,JKr   c                      y)Nverticalr#   r   s    r   r$   zVContainer.type   s    r   c           	         d}d}g }t        | j                               D ]F  }| j                  |      j                         \  }}||z  }t	        ||      }|j                  |       H | j                  ||       t        t        |            }|dk(  rd}n| j                         |z  }| j                  |D 	cg c]  }	t        |	|z         c}	       y c c}	w r   )rj   r,   r:   rQ   r   r   rN   r   r   heightri   r   r   s
             r   r2   zVContainer.updateStretch   s     tzz|$ 	A[[^++-FBGAAr
ALL		 	1 CJ!8EKKMC'EU3s1U7|343r   Nr   r#   r   r   r   r      s    L5r   r   c                   (     e Zd Z fdZ fdZ xZS )StackedWidgetc                0    t         |           || _        y r   )rp   r   r   )r   r   rs   s     r   r   zStackedWidget.__init__   s    "r   c                 Z    t         |   |       | j                  j                  |       y r   )rp   rq   r   rH   rr   s     r   rq   zStackedWidget.childEvent   s"    2""2&r   )rR   rS   rT   r   rq   rv   rw   s   @r   r   r      s    #' 'r   r   c                   `    e Zd Z ej                         Zd Zd Zd
dZd Z	d Z
d Zd Zd	 Zy)r   c           	         t         j                  j                  |        t        j                  | |       t        j                         | _        | j
                  j                  d       | j
                  j                  dddd       | j                  | j
                         t        j                         | _
        t        j                         | _        | j                  j                  | j                         | j                  j                  d       | j                  j                  dddd       | j
                  j                  | j                  dd       t        |       | _        | j
                  j                  | j                  dd       | j                  | j
                         dD ]#  }t        | |t!        | j                  |             % y )Nr   r   r
   )r   )r,   r:   r-   )r	   QWidgetr   r   QGridLayoutlayout
setSpacingsetContentsMargins	setLayoutQHBoxLayout
hTabLayouthTabBox	addWidgetr   stacksetattrgetattr)r   r   r6   s      r   r   zTContainer.__init__   sH   ""4(4&++-q!&&q1Q/t{{##//1 ((*t/""1%**1Qq3dllAq1"T2
djj!Q/ 	t{{#/ 	5AD!WTZZ34	5r   c                 R   t        |t              st        d      | j                  j	                  ||       | j
                  j	                  ||j                         |j                  j                  j                  | j                         | j                  |j                         y )Nz9Tab containers may hold only docks, not other containers.)
r)   r   	Exceptionr   r\   r   label
sigClickedr0   
tabClickedr^   s      r   r.   zTContainer._insertItem   sp    $%WXX

t,$$UDJJ7

%%doo6

#r   Nc                    |5|j                         t        j                  j                  j                  k(  rt        | j                               D ]s  }| j                  |      }||j                  u r7|j                  j                  d       | j                  j                  |       Y|j                  j                  d       u y y )NFT)buttonr   rz   MouseButton
LeftButtonrj   r,   r:   dockr   setDimr   setCurrentIndex)r   tabrG   rm   ws        r   r   zTContainer.tabClicked  s    :		(=(=(H(HH4::<( )KKN=GGNN5)JJ..q1GGNN4() Ir   c                     | j                   j                         j                  j                  d       | j                   j	                  |       |j                  j                  d       y)z#Move *dock* to the top of the stackTFN)r   currentWidgetr   r   setCurrentWidget)r   r   s     r   	raiseDockzTContainer.raiseDock  sG    

  "((//5

##D)

% r   c                      y)Nr   r#   r   s    r   r$   zTContainer.type  s    r   c                 :    d| j                   j                         iS Nr7   )r   currentIndexr   s    r   rg   zTContainer.saveState  s    00233r   c                 @    | j                   j                  |d          y r   )r   r   )r   rl   s     r   rn   zTContainer.restoreState  s    

""5>2r   c                     d}d}t        | j                               D ]<  }| j                  |      j                         \  }}t	        ||      }t	        ||      }> | j                  ||       y )Nr   )rj   r,   r:   rQ   r   rN   )r   rL   rM   rm   r   r   s         r   r2   zTContainer.updateStretch  sf    tzz|$ 	A[[^++-FBAr
AAr
A	 	1r   r   )rR   rS   rT   r   ru   r/   r   r.   r   r   r$   rg   rn   r2   r#   r   r   r   r      s8    %50$)!43r   r   )__all__r   rz   r   r	   r   r   r   rX   rV   r   r   QStackedWidgetr   r   r   r#   r   r   <module>r      sw   
A  " g gT(Y	 3 3 (N5 5>5 5<'I,, 'EI-- Er   