]> Creatis software - cpPlugins.git/blobdiff - appli/cpPipelineEditor/QNEBlock.h
More on graph editor
[cpPlugins.git] / appli / cpPipelineEditor / QNEBlock.h
index 516e871c71ca2b9dde5b5ac993665ce036567024..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
-    void addInputPort( const QString& name );\r
-    void 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