]> Creatis software - cpPlugins.git/blobdiff - lib/cpPipelineEditor/Block.cxx
...
[cpPlugins.git] / lib / cpPipelineEditor / Block.cxx
index 6d473efba274ba4f78e6ca396a44aeb3e868e46d..bce1197d8f6bb2ae2b34fb8f0447892abf89cb04 100644 (file)
@@ -2,12 +2,16 @@
 \r
 #include <QPen>\r
 #include <QGraphicsScene>\r
+#include <QGraphicsSceneContextMenuEvent>\r
 #include <QFontMetrics>\r
+#include <QMenu>\r
 #include <QPainter>\r
 #include <QStyleOptionGraphicsItem>\r
+#include <QGraphicsWidget>\r
 \r
 #include "Port.h"\r
 #include "Connection.h"\r
+#include "Editor.h"\r
 \r
 // -------------------------------------------------------------------------\r
 cpPipelineEditor::Block::\r
@@ -17,7 +21,8 @@ Block( TFilter* filter, QGraphicsItem* parent, QGraphicsScene* scene )
     m_VertMargin( 5 ),\r
     m_NamePort( NULL ),\r
     m_TypePort( NULL ),\r
-    m_Filter( filter )\r
+    m_Filter( filter ),\r
+    m_Editor( NULL )\r
 {\r
   QPainterPath p;\r
   p.addRoundedRect( -50, -15, 100, 30, 5, 5 );\r
@@ -36,14 +41,12 @@ Block( TFilter* filter, QGraphicsItem* parent, QGraphicsScene* scene )
   this->_setTypePort( this->m_Filter->GetClassName( ) );\r
 \r
   // Add input ports\r
-  std::set< std::string > inputs;\r
-  this->m_Filter->GetInputsNames( inputs );\r
+  auto inputs = this->m_Filter->GetInputsNames( );\r
   for( auto iIt = inputs.begin( ); iIt != inputs.end( ); ++iIt )\r
     this->addInputPort( iIt->c_str( ) );\r
 \r
   // Add output ports\r
-  std::set< std::string > outputs;\r
-  this->m_Filter->GetOutputsNames( outputs );\r
+  auto outputs = this->m_Filter->GetOutputsNames( );\r
   for( auto oIt = outputs.begin( ); oIt != outputs.end( ); ++oIt )\r
     this->addOutputPort( oIt->c_str( ) );\r
 }\r
@@ -54,6 +57,27 @@ cpPipelineEditor::Block::
 {\r
 }\r
 \r
+// -------------------------------------------------------------------------\r
+cpPipelineEditor::Editor* cpPipelineEditor::Block::\r
+editor( )\r
+{\r
+  return( this->m_Editor );\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+const cpPipelineEditor::Editor* cpPipelineEditor::Block::\r
+editor( ) const\r
+{\r
+  return( this->m_Editor );\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+void cpPipelineEditor::Block::\r
+setEditor( cpPipelineEditor::Editor* editor )\r
+{\r
+  this->m_Editor = editor;\r
+}\r
+\r
 // -------------------------------------------------------------------------\r
 void cpPipelineEditor::Block::\r
 setNamePort( const QString& txt )\r
@@ -185,10 +209,13 @@ itemChange( GraphicsItemChange change, const QVariant& value )
 void cpPipelineEditor::Block::\r
 _setTypePort( const QString& txt )\r
 {\r
-  if( this->m_TypePort == NULL )\r
-    this->m_TypePort = new TypePort( this );\r
-  this->m_TypePort->setName( txt );\r
-  this->_configPort( this->m_TypePort );\r
+  /* TODO\r
+     if( this->m_TypePort == NULL )\r
+     this->m_TypePort = new TypePort( this );\r
+     this->m_TypePort->setName( txt );\r
+     this->_configPort( this->m_TypePort );\r
+  */\r
+  this->setToolTip( txt );\r
 }\r
 \r
 // -------------------------------------------------------------------------\r
@@ -249,4 +276,21 @@ mouseReleaseEvent( QGraphicsSceneMouseEvent* evt )
   this->Superclass::mouseReleaseEvent( evt );\r
 }\r
 \r
+// -------------------------------------------------------------------------\r
+void cpPipelineEditor::Block::\r
+contextMenuEvent( QGraphicsSceneContextMenuEvent* evt )\r
+{\r
+  QMenu menu;\r
+  QAction* configureAction = menu.addAction( "Configure" );\r
+  QAction* updateAction = menu.addAction( "Update" );\r
+  QAction* selectedAction = menu.exec( evt->screenPos( ) );\r
+\r
+  if( selectedAction == configureAction )\r
+  {\r
+    auto res = this->m_Filter->ExecConfigurationDialog( NULL );\r
+  }\r
+  else if( selectedAction == updateAction )\r
+    this->m_Editor->updateFilter( this->namePort( ).toStdString( ) );\r
+}\r
+\r
 // eof - $RCSfile$\r