
    e                        d Z ddlmZ ddlZddlmZ  ej                  d      Zddl	m
c mZ ddlmZmZ  G d dej                         Z G d	 d
ej                         Z e       dddddddddddddddgdgddddddddgddddddd dgd ed!"       ed#d$d%d&d'dd(d&d)dg*      gZ ej(                  d+de      Zd, Zej.                  j1                  e       d- Zej5                  d.      D ];  Zd/ej6                  v sej5                  d/      j8                  j1                  e       = d0 Zd1 Zej?                  dd      j@                  j1                  e       ej?                  dd      j@                  j1                  e        e       Z!e!jE                  ed23       e!jG                  d4        e       Z$e$jE                  ed23        ejJ                         Z& ejN                         Z(e&jS                  e(       e(jU                   ejV                  d5      ddd6d7       e(jU                  e!d6dd6d6       e(jU                  e$d6d6d6d6       e&jY                          ej[                         a.ej_                  t\               ej[                         Z0 ejb                  e0t\              sJ e2d8k(  r ejf                          yy)9a$  
This example demonstrates the use of pyqtgraph's parametertree system. This provides
a simple way to generate user interfaces that control sets of parameters. The example
demonstrates a variety of different parameter types (int, float, list, etc.)
as well as some customized parameter types
    )makeAllParamTypesN)	QtWidgetszParameter Tree Example)	ParameterParameterTreec                       e Zd Zd Zd Zd Zy)ComplexParameterc                    d|d<   d|d<   t        j                  j                  | fi | | j                  dddddd	       | j                  d
ddddd	       | j	                  d      | _        | j	                  d
      | _        | j
                  j                  j                  | j                         | j                  j                  j                  | j                         y )NbooltypeTvaluezA = 1/Bfloat   Hz)namer   r   suffixsiPrefixzB = 1/Ag$I$I?s)pTypesGroupParameter__init__addChildparamabsigValueChangedconnectaChangedbChangedselfoptss     B/usr/lib/python3/dist-packages/pyqtgraph/examples/parametertree.pyr   zComplexParameter.__init__   s    VW&&t4t4y'AQUcghiy'DTWeijkI&I&&&t}}5&&t}}5    c                     | j                   j                  d| j                  j                         z  | j                         y Ng      ?)blockSignal)r   setValuer   r   r   r    s    r"   r   zComplexParameter.aChanged%   )    dfflln,$--Hr#   c                     | j                   j                  d| j                  j                         z  | j                         y r%   )r   r'   r   r   r   r(   s    r"   r   zComplexParameter.bChanged(   r)   r#   N)__name__
__module____qualname__r   r   r    r#   r"   r   r      s    
6IIr#   r   c                       e Zd Zd Zd Zy)ScalableGroupc                 f    d|d<   d|d<   g d|d<   t        j                  j                  | fi | y )Ngroupr   AddaddTextstrr   intaddList)r   r   r   r   s     r"   r   zScalableGroup.__init__/   s6    VY1Y&&t4t4r#   c           	          dddd|   }| j                  t        dt        | j                        dz   z  ||dd             y )	N g        r   r5   zScalableParam %d   T)r   r   r   	removable	renamable)r   dictlenchilds)r    typvals      r"   addNewzScalableGroup.addNew5   sR    
 	
 	d 2c$++6Fq6H IPS[^jnz~  	Ar#   N)r+   r,   r-   r   rC   r.   r#   r"   r0   r0   .   s    5Ar#   r0   Save/Restore functionalityr2   z
Save Stateaction)r   r   Restore StateAdd missing itemsr
   T)r   r   r   Remove extra items)r   r   childrenzCustom context menuzList contextMenur   menu1menu2)r   r   r   contextzDict contextMenuTitlezWhat the user sees)
changeNameinternalz*Custom parameter group (reciprocal values))r   zExpandable Parameter GroupzClick to add childrenzScalableParam 1r6   zdefault param 1zScalableParam 2zdefault param 2)r   tiprI   paramsc                    t        d       |D ]}  \  } }}t        j                  |       }|dj                  |      }n| j	                         }t        d|z         t        d|z         t        dt        |      z         t        d        y )Nztree changes:.z  parameter: %sz  change:    %sz  data:      %sz  ----------)printp	childPathjoinr   r6   )r   changeschangedatapath	childNames         r"   rY   rY   ^   s    	/& 	vt{{5!I

I*+'(T*+n	r#   c                 &    t        d| d|       y )Nz Value changing (not finalized):  )rT   )r   r   s     r"   valueChangingr_   n   s    	UE
BCr#   zExample Parameterswidgetc                  ,    t         j                         ay )N)rU   	saveStatestater.   r#   r"   saverd   w   s    KKMEr#   c                  `    t         d   } t         d   }t         j                  t        | |       y )N)rD   rF   rG   )rD   rF   rH   )addChildrenremoveChildren)rU   restoreStaterc   )addrems     r"   restorerk   {   s*    
N
OC
O
PCNN5c#N>r#   F)showTopz!pyqtgraph example: Parameter TreezQThese are two views of the same data. They should always display the same values.r;      __main__)4__doc___buildParamTypesr   	pyqtgraphpgpyqtgraph.Qtr   mkQAppapp&pyqtgraph.parametertree.parameterTypesparametertreeparameterTypesr   pyqtgraph.parametertreer   r   r   r   r0   rQ   createrU   rY   sigTreeStateChangedr   r_   childnamessigValueChangingrd   rk   r   sigActivatedtsetParameterssetWindowTitlet2QWidgetwinQGridLayoutlayout	setLayout	addWidgetQLabelshowrb   rc   rh   compareStateeqr+   execr.   r#   r"   <module>r      s   /  "bii() 7 7 <
Iv,, I,AF)) A& )7x0 ((&4H)6DIA
 	I  #G#WqN
 	 $Wq!,N
 		B 	 FG39P"E<MN"E<MN\ )
6 I(6B     f %D WW)* FE5;;H..66}EF
?
 $l 3 @ @ H H N $o 6 C C K KG T O 5 !   4 5_   E  "i				  f    !!!"uvxy|}  @A  CD  E   Aq!Q    Q1a   
 	
 u {{}ruu\5! !!zBGGI r#   