Salome HOME
Fix PAL8912 in SUIT-based version of SUPERVISOR.
authormkr <mkr@opencascade.com>
Wed, 8 Jun 2005 10:41:44 +0000 (10:41 +0000)
committermkr <mkr@opencascade.com>
Wed, 8 Jun 2005 10:41:44 +0000 (10:41 +0000)
src/SUPERVGUI/SUPERVGUI_CanvasView.cxx
src/SUPERVGUI/SUPERVGUI_CanvasView.h
src/SUPERVGUI/SUPERVGUI_Main.cxx

index 75fe69cc2fe31e13f914e580ea7cedd93bbb89d8..bbe4d72208b2ccf57cd7127f14e647e130289812 100644 (file)
@@ -148,6 +148,11 @@ SUPERVGUI_CanvasView::SUPERVGUI_CanvasView(SUPERVGUI_Canvas* theCanvas, SUPERVGU
   myDelPntItem = mySketchPopup->insertItem(tr("MSG_DEL_LAST_PNT"), this, SLOT(deletePoint()));
   mySketchPopup->insertItem(tr("MSG_DEL_LINK"), this, SLOT(cancelSketch()));
   myOrtoItem = mySketchPopup->insertItem(tr("MSG_ORTHO_LINE"), this, SLOT(setOrthoMode()));
+
+  
+  // add "change dataflow parameters" popup item
+  myPopup->insertSeparator();
+  myDSParamsItem = myPopup->insertItem( tr( "MSG_SET_GRAPHPARAMS" ), myMain, SLOT( changeDSGraphParameters() ) );
 }
  
 
@@ -224,6 +229,9 @@ void SUPERVGUI_CanvasView::contentsMousePressEvent(QMouseEvent* theEvent)
     // Paste Node functionality
     SUPERVGUI_Clipboard* aCB = SUPERVGUI_Clipboard::getClipboard(); 
     myPopup->setItemEnabled(myPasteNodeItem, aCB->isCopyNode() );
+       
+    myPopup->setItemEnabled( myDSParamsItem, isHavingStreamPort()/*myMain->getDataflow()->IsStreamGraph()*/ );
+
     myMain->showPopup(myPopup, theEvent);
     return;
   }
@@ -738,3 +746,58 @@ void SUPERVGUI_CanvasView::fitWithinRect()
   myCursor = cursor();
   setCursor(handCursor);
 }
+
+bool SUPERVGUI_CanvasView::isHavingStreamPort() const
+{
+  SUPERV::ListOfNodes* aNodesList = myMain->getDataflow()->Nodes();
+
+  //Computing Nodes
+  for ( int i = 0 ; i < (int) aNodesList->CNodes.length() ; i++ ) {
+    SUPERV::ListOfStreamPorts aStrPortsList = *( (aNodesList->CNodes)[i]->StreamPorts() );
+    if ((int) aStrPortsList.length() > 0) {
+      return true;
+    }
+  }
+   
+  //FactoryNodes
+  for ( int i = 0 ; i < (int) aNodesList->FNodes.length() ; i++ ) {
+    SUPERV::ListOfStreamPorts aStrPortsList = *( (aNodesList->FNodes)[i]->StreamPorts() );
+    if ((int) aStrPortsList.length() > 0) {
+      return true;
+    }
+  }
+       
+  //InLineNodes
+  for ( int i = 0 ; i < (int) aNodesList->INodes.length() ; i++ ) {
+    SUPERV::ListOfStreamPorts aStrPortsList = *( (aNodesList->INodes)[i]->StreamPorts() );
+    if ((int) aStrPortsList.length() > 0) {
+      return true;
+    }
+  }
+       
+  //GOTONodes
+  for ( int i = 0 ; i < (int) aNodesList->GNodes.length() ; i++ ) {
+    SUPERV::ListOfStreamPorts aStrPortsList = *( (aNodesList->GNodes)[i]->StreamPorts() );
+    if ((int) aStrPortsList.length() > 0) {
+      return true;
+    }
+  }
+       
+  //LoopNodes
+  for ( int i = 0 ; i < (int) aNodesList->LNodes.length() ; i++ ) {
+    SUPERV::ListOfStreamPorts aStrPortsList = *( (aNodesList->LNodes)[i]->StreamPorts() );
+    if ((int) aStrPortsList.length() > 0) {
+     return true;
+    }
+  }
+       
+  //SwitchNodes
+  for ( int i = 0 ; i < (int) aNodesList->SNodes.length() ; i++ ) {
+    SUPERV::ListOfStreamPorts aStrPortsList = *( (aNodesList->SNodes)[i]->StreamPorts() );
+    if ((int) aStrPortsList.length() > 0) {
+      return true;
+    }
+  }
+       
+  return false;
+}
index 52b5b5f2e323e05eb45603e08a153a271379ecdb..e44fb2a75b3683069dbb475a5bd610d1048b626f 100644 (file)
@@ -64,10 +64,13 @@ class SUPERVGUI_CanvasView: public QCanvasView {
     void setHilighted(SUPERVGUI_CanvasLink* theLink);
     void endSketch(SUPERVGUI_CanvasPort* thePort);
 
+    bool isHavingStreamPort() const;
+
     SUPERVGUI_Main* myMain;
     QPopupMenu*     myPopup;
     int             myAddStudyItem;
     int             myPasteNodeItem;
+    int             myDSParamsItem;
     QPopupMenu*     mySketchPopup;
     int             myDelPntItem;
     int             myOrtoItem;
index b30721359265ed68a0f9044e9fdba350603580bd..ad484dd39574c1c19a910ee7a5ad06afd7f31049 100644 (file)
@@ -244,6 +244,13 @@ void SUPERVGUI_Main::filterNotification() {
   }
 }
 
+void SUPERVGUI_Main::changeDSGraphParameters() {
+  SUPERVGUI_DSGraphParameters* aDlg = new SUPERVGUI_DSGraphParameters(dataflow, dataflow->IsReadOnly());
+  if (aDlg->exec() )
+    sync();
+  delete aDlg;
+}
+
 void SUPERVGUI_Main::syncAsync() {
   Trace("SUPERVGUI_Main::syncAsync");
   QTimer::singleShot(1, this, SLOT(sync()));