
    e"?                         d gZ ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZmZ dd	lmZ dd
lmZmZ ddlmZ ej,                  j.                  Z G d d ej0                        Z G d de      Zy)Canvas    N   )GridItem)ROI)ViewBox)QT_LIBQtCoreQtGui	QtWidgets   )CanvasTemplate_generic)
CanvasItemGroupCanvasItem)CanvasManagerc                   Z    e Zd Z ej                  ee      Z ej                  ee      Z ej                  ee      Zd#dZ	d Z
d Zd Zd$ fd	Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd  Z(d! Z)d" Z* xZ+S )%r   c                 8   t         j                  j                  | |       t        j                  dt
        d       t        j                         | _        | j                  j                  |        t               | _        | j                  j                  j                  | j                         | j                  j                  | _        | j                  j                  | j                  j                  j                          || _        t%               | _        | j                  j)                  | j&                         | j&                  j+                          | j&                  j-                  d       | j                  j.                  j+                          | j                  j0                  j+                          | j                  j2                  j+                          d | _        g | _        | j                  j9                  d       t;               }t=        |dd      | _        | j)                  | j>                         t        j@                  d	|       | _!        | jB                  jE                  d
       | jB                  jG                  d
       d| _$        d| _%        | jB                  jL                  jO                  | jP                         | j                  jR                  jT                  jO                  | jT                         | j                  j                  jV                  jO                  | jX                         | j                  j                  jZ                  jO                  | j\                         | j                  j                  j^                  jO                  | j`                         | j                  jb                  jL                  jO                  | jd                         | j                  jf                  jh                  jO                  | jj                         | j                  jl                  jn                  jO                  | jj                         | j&                  jp                  jO                  | jr                         | j&                  jt                  jO                  | jv                         | j                  j.                  jL                  jO                  | jx                         | j                  j0                  jL                  jO                  | jz                         | j                  j2                  jL                  jO                  | j|                         | j                          |r| jQ                          |Xt        j                         j                  | |      | _C        | j                  jl                  j                  | j                         t        j                         | _F        t        j                  t        dd      | j                        }|j                  jO                  | j                         | j                  j                  |       || j                  _M        | j                  | j                  j                  _O        y )Nzppyqtgrapoh.cavas will be deprecated in pyqtgraph and migrate to acq4.  Removal will occur after September, 2023.r   )
stacklevelg    .ATGridF)namemovable>      zContext MenuzRemove item)Pr   QWidget__init__warningswarnDeprecationWarningui_templateUi_FormuisetupUir   viewsetCentralItemitemListsetSelectionModeSelectionModeExtendedSelectionallowTransforms	SelectBoxmultiSelectBoxaddItemhide	setZValuemirrorSelectionBtnreflectSelectionBtnresetTransformsBtnredirectitemssetAspectLockedr   r   gridQPushButtonhideBtnsetFixedWidthsetFixedHeightctrlSizesizeAppliedclickedconnecthideBtnClickedsplittersplitterMoveditemChangedtreeItemChangedsigItemMovedtreeItemMoveditemSelectionChangedtreeItemSelectedautoRangeBtn	autoRangeredirectChecktoggledupdateRedirectredirectCombocurrentIndexChangedsigRegionChangedmultiSelectBoxChangedsigRegionChangeFinishedmultiSelectBoxChangeFinishedmirrorSelectionClickedreflectSelectionClickedresetTransformsClickedresizeEventr   instanceregisterCanvasregisteredNamesetHostNameQMenumenur
   QAction	translate	triggeredremoveClicked	addActionremActitemListContextMenuEventcontextMenuEvent)selfparentr)   hideCtrlr   r5   ra   s          9/usr/lib/python3/dist-packages/pyqtgraph/canvas/Canvas.pyr   zCanvas.__init__   sa   ""40?1	
 %%'I	##DII.((&&t}}'B'B'T'TU.'k		$--.  "%%c*""'')##((*""'')
		!!$'zt&%@	TYY ,,S$7""2&##B' $$T%8%89&&..t/A/AB$$,,T-A-AB%%--d.@.@A--55d6K6KL$$,,T^^<%%--d.A.AB1199$:M:MN,,44T5O5OP33;;D<]<]^""**2243N3NO##++33D4P4PQ""**2243N3NO!"/"8"8":"I"I$PT"UDGG!!--d.A.ABOO%	yGS  !3!34		F#!		,0,I,I)    c                 $    | j                          y N)rU   rd   s    rg   r@   zCanvas.splitterMoved[   s    rh   c                 *   | j                   j                  j                         d   }|dk(  r| j                  }| j                   j                  j	                         j                         }||kD  r|dz
  }| j                   j                  j                  ||z
  |g       | j                  j                  d       nI|| _        | j                   j                  j                  ddg       | j                  j                  d       | j                          y )Nr   r   r   r   d   <)
r!   r?   sizesr:   sizewidthsetSizesr7   setTextrU   )rd   r:   csws       rg   r>   zCanvas.hideBtnClicked^   s    77##))+A.q=B  %%'--/AAvVGG%%qtRj1LL  %$DMGG%%sAh/LL  %rh   c                 8    | j                   j                          y rj   )r#   rH   rk   s    rg   rH   zCanvas.autoRangem   s    		rh   c                 "   |t         |   |       | j                  j                  | j                  j
                  j                         j                         | j                  j                         z
  d       | j                  sd| _        t        t        | j                         t        dt        d| j                         dz                          }| j                         |z
  }| j                  j                  j                  ||g       y y )Nr   Trm   r      )superrU   r7   mover!   r#   rp   rq   r;   intminmaxr?   rr   )rd   evss2	__class__s       rg   rU   zCanvas.resizeEventp   s    >G#$'',,++-3358J8J8LLaP#DSs3Cq0I'JKMAaBGG%%r1g.	  rh   c                 t   t        | j                  j                  j                               }t	        j
                         }| j                  j                  j                         r|dk7  r|j                  |      }nd }| j                  |u ry || _	        || j                          y | j                  |       y )N )strr!   rL   currentTextr   rV   rI   	isChecked	getCanvasr2   reclaimItemsredirectItems)rd   argscnamemanr2   s        rg   rK   zCanvas.updateRedirect{   s    DGG))5578$$&77  **,"}}U+HH==H$ x(rh   c                 <   | j                   D ]  }|| j                  u r|j                  }|j                         }|<|j	                         }|t        d||j                         Z|j                  |       n|j                  |       |j                  |        y )NzSkipping item)
r3   r5   listItemre   
treeWidgetprintr   removeTopLevelItemremoveChildr,   )rd   canvasilire   trees         rg   r   zCanvas.redirectItems   s     	ADII~BYY[F~}}</1aff5''+""2&NN1	rh   c                     | j                   }| j                  g| _         |j                  | j                         |D ].  }|j                  j	                  |       | j                  |       0 y rj   )r3   r5   remover   
removeItemr,   )rd   r3   r   s      rg   r   zCanvas.reclaimItems   sT    

ii[
TYY 	AHH"LLO	rh   c                 v   	 |j                         }|j                  d      t        j                  j
                  j                  k(  rrt        |j                               D ]E  }|j                  |      j                  dt        j                  j
                  j                         G |j                          y t        |j                               D ]E  }|j                  |      j                  dt        j                  j
                  j                         G |j                          y # t        $ r Y y w xY wNr   )
canvasItemAttributeError
checkStater	   Qt
CheckStateCheckedrange
childCountchildsetCheckStateshow	Uncheckedr-   )rd   itemcolcitemr   s        rg   rB   zCanvas.treeItemChanged   s    	OO%E ??1!5!5!=!==4??,- M

1++Avyy/C/C/K/KLMJJL4??,- O

1++Avyy/C/C/M/MNOJJL  		s   D, ,	D87D8c                 F   | j                         }t        |      dk(  ry t        |      dkD  }| j                  D ]  }|j                  ||v |        t        |      dk(  r| j                  j                          | j                  j                  j                          | j                  j                  j                          | j                  j                  j                          nt        |      dkD  r| j                          | j                  j                  | |       y )Nr   r   )selectedItemslenr3   selectionChangedr+   r-   r!   r/   r0   r1   showMultiSelectBoxsigSelectionChangedemit)rd   selmultir   s       rg   rF   zCanvas.treeItemSelected   s      "s8q=C1 	0AqCx/	0 s8Q;$$&GG&&++-GG'',,.GG&&++-X\##%  %%dC0rh   c                     | j                   j                         D cg c]#  }|j                         |j                         % c}S c c}w )z9
        Return list of all selected canvasItems
        )r%   r   r   rd   r   s     rg   r   zCanvas.selectedItems   s8     /3mm.I.I.KmdtO`Ol!mmms
   AAc                 R    |j                   }| j                  j                  |       y rj   )r   r%   setCurrentItem)rd   r   r   s      rg   
selectItemzCanvas.selectItem   s    ]]$$R(rh   c                 |   | j                         }| j                  j                  |d   j                               }|D ]B  }|j	                         s y | j                  j                  |j                               }||z  }D | j
                  j                  d       | j
                  j                  |j                         |j                         g       | j
                  j                  |j                                | j
                  j                  d       | j
                  j                  d       | j
                  j                          | j                  j                  j                          | j                  j                   j                          | j                  j"                  j                          y )Nr   TF)r   r#   itemBoundingRectgraphicsItem	isMovabler+   blockSignalssetPosxysetSizerp   setAngler   r!   r/   r0   r1   )rd   r3   rectr   brs        rg   r   zCanvas.showMultiSelectBox   sA   ""$yy))%(*?*?*AB 	A;;=++ANN,<=B7D		 	((.""DFFHdffh#78##DIIK0$$Q'((/  """'')##((*""'')rh   c                 n    | j                         D ]  }|j                           | j                          y rj   )r   mirrorYr   rd   cis     rg   rR   zCanvas.mirrorSelectionClicked   s/    $$& 	BJJL	!rh   c                 n    | j                         D ]  }|j                           | j                          y rj   )r   mirrorXYr   r   s     rg   rS   zCanvas.reflectSelectionClicked   s/    $$& 	BKKM	!rh   c                 n    | j                         D ]  }|j                           | j                          y rj   )r   resetTransformClickedr   )rd   r   s     rg   rT   zCanvas.resetTransformsClicked   s2    ##% 	&A##%	&!rh   c                 $    | j                          y rj   )multiSelectBoxMovedrk   s    rg   rO   zCanvas.multiSelectBoxChanged   s      "rh   c                     | j                         D ]-  }|j                          |j                  j                  |       / y rj   )r   applyTemporaryTransformsigTransformChangeFinishedr   r   s     rg   rQ   z#Canvas.multiSelectBoxChangeFinished   s:    $$& 	3B&&())..r2	3rh   c                     | j                   j                         }| j                         D ].  }|j                  |       |j                  j                  |       0 y rj   )r+   getGlobalTransformr   setTemporaryTransformsigTransformChangedr   )rd   	transformr   s      rg   r   zCanvas.multiSelectBoxMoved  sP    ''::<	$$& 	,B$$Y/""''+	,rh   c                 N    t        |fi |}||_        | j                  |       |S )zgAdd a new GraphicsItem to the scene at pos.
        Common options are name, pos, scale, and z
        )r   _canvasItemr,   )rd   r   optsr   s       rg   addGraphicsItemzCanvas.addGraphicsItem  s,     4(4( Urh   c                 D    t        |      } | j                  |fi | |S )N)r   )r   r,   )rd   r   kargsgroups       rg   addGroupzCanvas.addGroup  s$    T*U$e$rh   c                 b	   | j                   8| j                   j                  |      }| j                  j                  |       |S | j                  s|j                  d       |j                  j                  | j                         |j                  j                  | j                         |j                  j                  | j                         |j                  d   }|d}d}|j                         }|d| j                  j                   fv r| j"                  j%                         }n|j&                  }t)        |j+                               D cg c]!  }|j-                  |      j/                         # }}|j1                         }||D cg c]  }|j1                          }}|| j"                  j%                         u r t3        |      dk(  rd}nJt5        |      dz   }n;t3        |      dk(  r|j/                         j1                         }nt5        |      dz   }|j7                  |       t)        |j+                               D ]M  }|j-                  |      }	|	j/                         j9                         j1                         }
|
|k  r|} n|dz   }O t;        j<                  |g      }|j?                         t@        jB                  jD                  jF                  z  t@        jB                  jD                  jH                  z  }tK        |tL              s(|t@        jB                  jD                  jN                   z  }|jQ                  |       |j                  d   r5|jS                  dt@        jB                  jT                  jV                         n4|jS                  dt@        jB                  jT                  jX                         ||_-        |j]                  ||       ||_-        ||_        t_        j`                  |      |_        | j                  j                  |       |jc                         }|je                          | jf                  jh                  jk                  |       |jm                  |        t3        | j                        d	k(  r| jo                          |S c c}w c c}w )
z-
        Add an item to the canvas. 
        NFr   r   r   
   r   visibler   )8r2   r,   r3   appendr)   
setMovabler   r=   itemTransformChangedr   itemTransformChangeFinishedsigVisibilityChangeditemVisibilityChangedr   
parentItemr#   
childGroupr%   invisibleRootItemr   r   r   r   r   zValuer   r}   r.   r   r   QTreeWidgetItemflagsr	   r   ItemFlagItemIsUserCheckableItemIsDragEnabled
isinstancer   ItemIsDropEnabledsetFlagsr   r   r   r   r   insertChildweakrefref
ctrlWidgetr-   r!   
ctrlLayout	addWidget	setCanvasrH   )rd   r   r   insertLocationre   r   siblingszzvalschzvalnoder   ctrls                 rg   r,   zCanvas.addItem  s    ==$==((/DJJe$K##U#!!))$*C*CD((001Q1QR""**4+E+EF zz&!<D  !!#dDII0011]]446F__F ;@@Q@Q@S:TUQFLLO..0UULLN9)12AQXXZ2E288::u:?AE
2Au:?))+224AE
1AOOA v((*+ 	%AaB==?//188:Dax!"!"1	% (($0

vyy11EEE		HZHZHlHll%1VYY//AAAAEe::i q&))"6"6">">?q&))"6"6"@"@A	>40
!++e,

% !		$$T* 	 tzz?aNNo V 3s   &R'R,c                 Z   || j                   j                         u r4|j                         j                  | j                  j
                         n-|j                         j                  |j                                t        |j                               D cg c]!  }|j                  |      j                         # }}|D cg c]  }|j                          }}|j                  d       t        t        |            D ]  }||   }|j                  ||           y c c}w c c}w )NT)reverse)r%   r   r   setParentItemr#   r   r   r   r   r   sortr   r.   )rd   r   re   indexr   r   r   s          rg   rD   zCanvas.treeItemMovedq  s    T]]4466OO++DII,@,@AOO++F,=,=,?@:?@Q@Q@S:TUQFLLO..0UU%-...

4
 s8}% 	%AA;DNN58$	% V.s   &D#D(c                    |j                   }|j                  d      t        j                  j                  j
                  k(  }|j                         }||k7  rl|r5|j                  dt        j                  j                  j
                         y |j                  dt        j                  j                  j                         y y r   )	r   r   r	   r   r   r   	isVisibler   r   )rd   r   r   checkedviss        rg   r   zCanvas.itemVisibilityChanged  s    ==%%a(FII,@,@,H,HHnn'>&&q&))*>*>*F*FG&&q&))*>*>*H*HI	 rh   c                    t        |t        j                        r|j                         }t        |t              r|j                  d        |j                  }d |_        d |_        | j                  j                  |       | j                  j                  |       |j                         }|j                          | j                  j                  j                  |       |j!                  d        nCt#        |d      r| j%                  |j&                         n| j(                  j%                  |       t+        j,                          y )Nr   )r   r   r   r   r   r   r   r%   r   r3   r   r   r-   r!   r   removeWidget	setParenthasattrr   r   r#   gccollect)rd   r   r   r  s       rg   r   zCanvas.removeItem  s    dI556??$DdJ'NN4 }}H"&H DMMM,,X6JJd#??$DIIKGG++D1NN4 t]+ 0 01		$$T*


rh   c                     t        | j                        dkD  r8| j                  | j                  d          t        | j                        dkD  r7y y r   )r   r3   r   rk   s    rg   clearzCanvas.clear  s8    $**o!OODJJqM* $**o!rh   c                 :    | j                   j                  |       y rj   )r#   r,   r   s     rg   
addToScenezCanvas.addToScene  s    		$rh   c                 :    | j                   j                  |       y rj   )r#   r   r   s     rg   removeFromScenezCanvas.removeFromScene  s    		T"rh   c                     | j                   S )z&Return a dictionary of name:item pairsr3   rk   s    rg   	listItemszCanvas.listItems  s    zzrh   c                      | j                   |   S rj   r  )rd   r   s     rg   getListItemzCanvas.getListItem  s    zz$rh   c                 <    | j                   j                  | |       y rj   )sigItemTransformChangedr   r   s     rg   r   zCanvas.itemTransformChanged  s    $$))$5rh   c                 <    | j                   j                  | |       y rj   )sigItemTransformChangeFinishedr   r   s     rg   r   z"Canvas.itemTransformChangeFinished  s    ++00t<rh   c                     | j                   j                  |j                               | _        | j                  j                  |j                                y rj   )r%   itemAtposmenuItemr[   popup	globalPos)rd   r~   s     rg   rb   zCanvas.itemListContextMenuEvent  s4    ,,RVVX6		'rh   c                     | j                         D ]  }| j                  |        d | _        dd l} |j                          y r   )r   r   r$  r  r  )rd   r   r  s      rg   r_   zCanvas.removeClicked  s;    &&( 	"DOOD!	"

rh   )NTFNrj   ),__name__
__module____qualname__r	   Signalobjectr   r  r   r   r@   r>   rH   rU   rK   r   r   rB   rF   r   r   r   rR   rS   rT   rO   rQ   r   r   r   r,   rD   r   r   r  r  r  r  r  r   r   rb   r_   __classcell__)r   s   @rg   r   r      s    '&--7+fmmFF;%2V]]66%B"AJF	/)$ 1*n)*."
"
"
#3
,
Zx%J.+ # 6=(rh   c                       e Zd ZddZy)r*   c                     t        j                  | ddgddg       ddg}|r,| j                  ddg|d       | j                  ddg|d       | j                  ddg|       | j                  ddg|       y )Nr   r   g      ?T)
lockAspect)r   r   addScaleHandleaddRotateHandle)rd   scalablecenters      rg   r   zSelectBox.__init__  s    TAa51Q%(sA4@A4@aVV,aVV,rh   N)F)r(  r)  r*  r    rh   rg   r*   r*     s    	-rh   r*   )__all__r  	importlibr   r   graphicsItems.GridItemr   graphicsItems.ROIr   graphicsItems.ViewBoxr   r   r   r	   r
   r   r   r   r   r   r   r   QCoreApplicationr]   r   r   r*   r5  rh   rg   <module>r<     sb   * 	    - # + 1 1 3 3 (##--	oY od
- 
-rh   