]> Creatis software - cpPlugins.git/blobdiff - appli/cpPipelineEditor/QNodesEditor.h
More on graph editor
[cpPlugins.git] / appli / cpPipelineEditor / QNodesEditor.h
index 87c5a20c5d38b19a0195d4144268ee56c440ff0e..d148bbe82aa5497a0f3fa1d5dfe19c324cd77919 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__QNODESEDITOR__H__\r
 #define __PIPELINEEDITOR__QNODESEDITOR__H__\r
 \r
 #include <QObject>\r
+#include <QPointF>\r
+#include <cpExtensions/DataStructures/Graph.h>\r
+#include <cpPlugins/Interface/Workspace.h>\r
 \r
 class QGraphicsScene;\r
+class QGraphicsSceneMouseEvent;\r
 class QGraphicsItem;\r
-class QPointF;\r
+class QGraphicsSceneContextMenuEvent;\r
+class QGraphicsSceneDragDropEvent;\r
+class QGraphicsSceneHelpEvent;\r
+class QGraphicsSceneHoverEvent;\r
+class QGraphicsSceneMouseEvent;\r
+class QGraphicsSceneMoveEvent;\r
+class QGraphicsSceneResizeEvent;\r
+class QGraphicsSceneWheelEvent;\r
+\r
+// -------------------------------------------------------------------------\r
+#define PipelineEditor_QNodesEditor_Callback_DCL( E )   \\r
+  void _##E##_cbk( Q##E##Event* e );\r
 \r
 namespace PipelineEditor\r
 {\r
@@ -48,23 +64,69 @@ namespace PipelineEditor
     typedef QNodesEditor Self;\r
     typedef QObject      Superclass;\r
 \r
+    typedef cpPlugins::Interface::Workspace TWorkspace;\r
+    typedef TWorkspace::TFilter             TFilter;\r
+    typedef\r
+      cpExtensions::DataStructures::\r
+      Graph< QNEBlock*, QNEConnection*, std::string > TGraph;\r
+\r
   public:\r
     explicit QNodesEditor( QObject* parent = 0 );\r
     virtual ~QNodesEditor( );\r
 \r
-    void install( QGraphicsScene* s );\r
+    TWorkspace* workspace( );\r
+    const TWorkspace* workspace( ) const;\r
+    void setWorkspace( TWorkspace* ws );\r
 \r
-    bool eventFilter( QObject* o, QEvent* e );\r
+    std::string createFilter(\r
+      const std::string& filter,\r
+      const QPointF& pnt = QPointF( qreal( 0 ), qreal( 0 ) )\r
+      );\r
 \r
-    void save( QDataStream& ds );\r
-    void load( QDataStream& ds );\r
+    void install( QGraphicsScene* s );\r
+    bool eventFilter( QObject* o, QEvent* e );\r
 \r
   private:\r
     QGraphicsItem* itemAt( const QPointF& pos );\r
 \r
+    inline void _CreateBlock( TFilter* f, const QPointF& pnt );\r
+\r
+  protected:\r
+    typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragEnterEvent;\r
+    typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragLeaveEvent;\r
+    typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragMoveEvent;\r
+    typedef QGraphicsSceneDragDropEvent QGraphicsSceneDropEvent;\r
+    typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverEnterEvent;\r
+    typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverMoveEvent;\r
+    typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverLeaveEvent;\r
+    typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseDoubleClickEvent;\r
+    typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseMoveEvent;\r
+    typedef QGraphicsSceneMouseEvent    QGraphicsSceneMousePressEvent;\r
+    typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseReleaseEvent;\r
+\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneContextMenu );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneDragEnter );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneDragLeave );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneDragMove );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneDrop );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneHelp );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneHoverEnter );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneHoverLeave );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneHoverMove );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneMouseDoubleClick );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneMouseMove );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneMousePress );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneMouseRelease );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneMove );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneResize );\r
+    PipelineEditor_QNodesEditor_Callback_DCL( GraphicsSceneWheel );\r
+\r
   private:\r
     QGraphicsScene* m_Scene;\r
     QNEConnection* m_Conn;\r
+\r
+    TWorkspace* m_Workspace;\r
+    TGraph::Pointer m_Graph;\r
   };\r
 \r
 } // ecapseman\r
@@ -72,3 +134,25 @@ namespace PipelineEditor
 #endif // __PIPELINEEDITOR__QNODESEDITOR__H__\r
 \r
 // eof - $RCSfile$\r
+\r
+      /* TODO\r
+         case QEvent::GraphicsSceneContextMenu:\r
+         QGraphicsSceneContextMenuEvent* evt =\r
+         \r
+         case QEvent::GraphicsSceneDragEnter:\r
+         case QEvent::GraphicsSceneDragLeave:\r
+         case QEvent::GraphicsSceneDragMove:\r
+         case QEvent::GraphicsSceneDrop:\r
+         case QEvent::GraphicsSceneHelp:\r
+         case QEvent::GraphicsSceneHoverEnter:\r
+         case QEvent::GraphicsSceneHoverLeave:\r
+         case QEvent::GraphicsSceneHoverMove:\r
+         case QEvent::GraphicsSceneMouseDoubleClick:\r
+         case QEvent::GraphicsSceneMouseMove:\r
+         case QEvent::GraphicsSceneMousePress:\r
+         case QEvent::GraphicsSceneMouseRelease:\r
+         case QEvent::GraphicsSceneMove:\r
+         case QEvent::GraphicsSceneResize:\r
+         case QEvent::GraphicsSceneWheel:\r
+      */\r
+    \r