
    e-                        d Z ddlZddlZddlmc mZ ddl	m
Z
mZ ddlmZ ddlmZ  ej                   d      Z ej$                         Zej)                  d        ej*                         Zej/                  e        ej0                         Zej5                  e        e
dd	idd
id      Zej9                         Zej=                  ej9                         dddd        ej>                         Z  ej>                         Z!ej=                  e dd       ej=                  e!dd       ejE                          ejF                  jI                  d      Z%d ejL                  e%d      z  Z%e%ejF                  jI                  d      z  Z%e%ddddfxx   dz  cc<   e%ddddfxx   dz  cc<   ejO                  e%        G d de      Z( G d de      Z)ejT                  jW                         ZejY                  e(dg       ejY                  e)ddg       ej[                  e       ej]                  d d!"      Z/e/ja                  e        ej]                  d d#"      Z1e1ja                  e!       ej]                  d$d%"      Z2ejg                  ed&   e2d&          ejg                  ed&   e/d'          ejg                  e2d(   e1d'          ejg                  e2d(   ed(          e4d)k(  r ejj                          yy)*z
This example demonstrates writing a custom Node subclass for use with flowcharts.

We implement a couple of simple image processing nodes.
    N)	FlowchartNode)CtrlNode)	QtWidgetszFlowchart Custom Node Examplez&pyqtgraph example: FlowchartCustomNodeioinoutdataIndataOut	terminals      )d   r   )size   )   r   (   <   g      .@   2   )r   c                   (    e Zd ZdZdZd Zd ZddZy)ImageViewNodez4Node that displays image data in an ImageView widget	ImageViewc                 J    d | _         t        j                  | |dddii       y )Ndatar   r   r   )viewr   __init__)selfnames     H/usr/lib/python3/dist-packages/pyqtgraph/examples/FlowchartCustomNode.pyr   zImageViewNode.__init__A   s"    	dDVd4[,AB    c                     || _         y )N)r   )r    r   s     r"   setViewzImageViewNode.setViewF   s	    	r#   c                     |rZ| j                   M|/| j                   j                  t        j                  d             y | j                   j                  |       y y y )N)r   r   )r   setImagenpzeros)r    r   displays      r"   processzImageViewNode.processI   sH     tyy,|		""288E?3		""4( -7r#   NT)__name__
__module____qualname____doc__nodeNamer   r%   r+    r#   r"   r   r   =   s    >HC
	)r#   r   c            	       R    e Zd ZdZdZddddddgdfd	ddd
ddddgdfgZd ZddZy)UnsharpMaskNodez5Return the input data passed through an unsharp mask.UnsharpMasksigmasping      ?g        N)valuestepboundsstrengthTg      ?g{Gz?)r8   decr9   minStepr:   c                 f    t        d      t        d      d}t        j                  | ||       y )Nr   )r   r	   r
   r   )dictr   r   )r    r!   r   s      r"   r   zUnsharpMaskNode.__init__a   s-     dmu~
	 	$	:r#   c                     | j                   d   j                         }| j                   d   j                         }||t        j                  |||f      z  z
  }d|iS )Nr6   r;   r   )ctrlsr8   pggaussianFilter)r    r   r*   r6   r;   outputs         r"   r+   zUnsharpMaskNode.processk   s[    

7#))+::j)//18b&7&7u&NNO6""r#   r,   )r-   r.   r/   r0   r1   
uiTemplater   r+   r2   r#   r"   r4   r4   Z   sM    ?H	6S##tMN	Vs4QUbegkalmnJ;#r#   r4   )Display)Image)Submenu_testsubmenu2submenu3r   )r   j)pos)   rK   r5   )r   r   r   r   r   __main__)6r0   numpyr(   	pyqtgraphrB   pyqtgraph.flowchart.library	flowchartlibraryfclibpyqtgraph.flowchartr   r   "pyqtgraph.flowchart.library.commonr   pyqtgraph.Qtr   mkQAppappQMainWindowwinsetWindowTitleQWidgetcwsetCentralWidgetQGridLayoutlayout	setLayoutfcwidgetw	addWidgetr   v1v2showrandomnormalr   rC   setInputr   r4   LIBRARYcopyaddNodeType
setLibrary
createNodev1Noder%   v2NodefNodeconnectTerminalsr-   execr2   r#   r"   <module>rw      s     + + / 7 "bii/0 i   ; <Y   R 				  V  Tle}  IIK   aAq ) R\\^R\\^   Q    Q  
 
yyY'	BdE** 		i( ( RUBrE\ d   RUBrE\ d  
 4 )D ):#h #J --


   ML> 2   Oj&L&N O g  
{		2 r 	{	4 r 
m0   BxL%/ 2   BxL&. 1   E)$fVn 5   E)$bm 4zBGGI r#   