
    e                     F    d dgZ ddlmZ ddlmZ ddlmZ  G d d e      Zy)	ParameterSystemSystemSolver   )	functions   )GroupParameter)r   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)r   av  
    ParameterSystem is a subclass of GroupParameter that manages a tree of 
    sub-parameters with a set of interdependencies--changing any one parameter
    may affect other parameters in the system.
    
    See parametertree/SystemSolver for more information.
    
    NOTE: This API is experimental and may change substantially across minor 
    version numbers. 
    c                     t        j                  | g|i | d | _        g | _        |j	                  dd       }|| j                  |       g | _        | j                  j                  | j                         y )Nsystem)
r   __init___system
_fixParamspop	setSystem_ignoreChangesigTreeStateChangedconnectupdateSystem)selfargskwdssyss       I/usr/lib/python3/dist-packages/pyqtgraph/parametertree/ParameterSystem.pyr   zParameterSystem.__init__   sk    4t4t4hhx&?NN3  (():):;    c           	         || _         i }i }| D ]  }|j                         }d}t        |d|z         r|dz  }|j                         s|dz  }d|v r\|j	                  t        ddd            }| j                  j                  |       |j                  d	       |j                  d
       n1|j                         ||<   |j	                  t        ddd	d	            }d |j                         d |g||<    |j                  j                  |       |j                          |j                         D ]  \  }}t!        |||        | j#                          y )N _nffixedboolF)nametypevalueT)expanded)r!   r"   r#   readonly)r   r!   hasattrr%   addChilddictr   appendsetReadonlysetOptsr#   r"   defaultStateupdateresetitemssetattrupdateAllParams)	r   r   defaultsvalsparamr!   constraintschr#   s	            r   r   zParameterSystem.setSystem   sD     	EE::<DKsC$J's">>#s"+%'e(TUBOO**2.%%d+MM5M1!&DJ'd]a(bcB #EJJL$DHTN%	E( 	)		::< 	&KD%Cu%	& 	r   c                    |D cg c]  }|d   | j                   vs| }}|D cg c]  }|d   dk(  s|d    }}|D ]  }|| j                  v rV|j                         }t        | j                  |j                         |j                         r|j                         nd        gt        | j                  |j                         |j                                 | j                          y c c}w c c}w )N    r   r#   )	r   r   parentr0   r   r!   hasValuer#   r1   )r   r4   changesr6   setsr9   s         r   r   zParameterSystem.updateSystem>   s     'K"2a58J8J+J2KK '<"2a5G+;1<< 	CE'fkkmvGXV\\^^bcejjlEKKMB	C 	 L<s   C,C,C1C1c                    	 | j                   j                  | j                         | j                  j                  j                         D ]  \  }}| j                  |      }	 t        | j                  |      }| j                  j                  |   d   3| j                  | j                  |      d       |j                  |       n!| j                  | j                  |      d        	 | j                   j                  | j                         y # t        $ r | j                  |d       Y w xY w# | j                   j                  | j                         w xY w)Nr   autoSetr   	autoUnset)r   
disconnectr   r   _varsr/   childgetattrupdateParamStatesetValueRuntimeErrorr   )r   r!   stater4   vs        r   r1   zParameterSystem.updateAllParamsL   s   	@$$//0A0AB#||11779 
>e

4(>d3A||))$/2:--djj.>	Jq)--djj.>H
> $$,,T->->? $ >))%=> $$,,T->->?s1   A D3 #BD)D3 D0-D3 /D00D3 3'Ec                     |dk(  rt        j                  d      }d}d}nI|dk(  rt        j                  d       }d}d}n*|dk(  rt        j                  d      }d}d}nt        d      |j                  |       y )	Nr>   )      rJ   rK   FTr?   r   yz9'state' must be one of 'autoSet', 'autoUnset', or 'fixed')fnmkBrush
ValueErrorr*   )r   r4   rG   bgboldr%   s         r   rD   z ParameterSystem.updateParamState]   s|    I01BDHk!D!BDHgCBDHXYY(#r   N)	__name__
__module____qualname____doc__r   r   r   r1   rD    r   r   r   r      s"    	<B@"$r   N)__all__r   r   rM   parameterTypesr   r   r   rV   r   r   <module>rY      s&   n
-  * &e$n e$r   