]> Creatis software - cpPlugins.git/blobdiff - appli/cpPipelineEditor/QNEBlock.h
More on graph editor
[cpPlugins.git] / appli / cpPipelineEditor / QNEBlock.h
index 1f3d6514d931398ca4d902921222e684af603e82..8e95ce0863e1fc32df85f97d413b2baa47e3c2b2 100644 (file)
    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
-   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */\r
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+*/\r
 \r
 #ifndef __PIPELINEEDITOR__QNEBLOCK__H__\r
 #define __PIPELINEEDITOR__QNEBLOCK__H__\r
 \r
 #include <QGraphicsPathItem>\r
+#include <cpPlugins/Interface/ProcessObject.h>\r
 \r
 namespace PipelineEditor\r
 {\r
   class QNEPort;\r
+  class QNENamePort;\r
+  class QNETypePort;\r
+  class QNEInputPort;\r
+  class QNEOutputPort;\r
+  class QNEConnection;\r
 \r
   class QNEBlock\r
     : public QGraphicsPathItem\r
@@ -38,41 +45,63 @@ namespace PipelineEditor
   public:\r
     typedef QNEBlock          Self;\r
     typedef QGraphicsPathItem Superclass;\r
+    typedef cpPlugins::Interface::ProcessObject TFilter;\r
   \r
   public:\r
-    enum { Type = QGraphicsItem::UserType + 3 };\r
+    enum { Type = QGraphicsItem::UserType + 6 };\r
 \r
-    QNEBlock( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );\r
+    QNEBlock(\r
+      TFilter* filter,\r
+      QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL\r
+      );\r
     virtual ~QNEBlock( );\r
 \r
-    QNEPort* addPort(\r
-      const QString& name, bool isOutput, int flags = 0, int ptr = 0\r
-      );\r
-    QNEPort* addInputPort( const QString& name );\r
-    QNEPort* addOutputPort( const QString& name );\r
-    void addInputPorts( const QStringList& names );\r
-    void addOutputPorts( const QStringList& names );\r
-    void save( QDataStream& ds );\r
-    void load( QDataStream& ds, QMap< quint64, QNEPort* >& portMap );\r
-    void paint(\r
+    void setNamePort( const QString& txt );\r
+    QNEInputPort* addInputPort( const QString& txt );\r
+    QNEOutputPort* addOutputPort( const QString& txt );\r
+\r
+    bool extendInputPort( const QString& txt, QNEConnection* conn );\r
+    bool extendOutputPort( const QString& txt, QNEConnection* conn );\r
+\r
+    QNEInputPort* inputPort( const QString& txt );\r
+    QNEOutputPort* outputPort( const QString& txt );\r
+\r
+    QString namePort( ) const;\r
+    const QNEInputPort* inputPort( const QString& txt ) const;\r
+    const QNEOutputPort* outputPort( const QString& txt ) const;\r
+    const QNEConnection* extendedInputPort( const QString& txt ) const;\r
+    const QNEConnection* extendedOutputPort( const QString& txt ) const;\r
+\r
+    inline int type( ) const\r
+      { return( this->Type ); }\r
+\r
+    virtual void paint(\r
       QPainter* painter,\r
       const QStyleOptionGraphicsItem* option,\r
       QWidget* widget\r
       );\r
-    QNEBlock* clone( );\r
-    QVector< QNEPort* > ports( );\r
-\r
-    int type( ) const\r
-      { return( this->Type ); }\r
-\r
+    \r
   protected:\r
     QVariant itemChange( GraphicsItemChange change, const QVariant& value );\r
+    void _setTypePort( const QString& txt );\r
+    void _configPort( QNEPort* port );\r
+\r
+    virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent* evt );\r
 \r
   private:\r
     int m_HorzMargin;\r
     int m_VertMargin;\r
     int m_Width;\r
     int m_Height;\r
+\r
+    QNENamePort* m_NamePort;\r
+    QNETypePort* m_TypePort;\r
+    std::map< std::string, QNEInputPort* >  m_InputPorts;\r
+    std::map< std::string, QNEOutputPort* > m_OutputPorts;\r
+    std::map< std::string, QNEConnection* > m_ExtOutputPorts;\r
+    std::map< std::string, QNEConnection* > m_ExtInputPorts;\r
+\r
+    TFilter::Pointer m_Filter;\r
   };\r
 \r
 } // ecapseman\r