Salome HOME
Stream Graph parameters dialog box Ecole_Ete_a4
authorsmh <smh@opencascade.com>
Fri, 7 May 2004 13:43:27 +0000 (13:43 +0000)
committersmh <smh@opencascade.com>
Fri, 7 May 2004 13:43:27 +0000 (13:43 +0000)
src/SUPERVGUI/SUPERVGUI_Graph.cxx
src/SUPERVGUI/SUPERVGUI_Graph.h
src/SUPERVGUI/SUPERVGUI_Main.cxx
src/SUPERVGUI/SUPERVGUI_Main.h
src/SUPERVGUI/SUPERVGUI_View.cxx
src/SUPERVGUI/SUPERVGUI_View.h
src/SUPERVGUI/SUPERV_msg_en.po

index ff283e2040d647b15c088d19de556c256c6659ca..1d6b1ac06b68a045ab8efc74a76b64b3a5ce0a35 100644 (file)
@@ -33,6 +33,11 @@ using namespace std;
 #include "SUPERVGUI_ControlNode.h"
 #include "SUPERVGUI.h"
 
+#include <qapplication.h>
+#include <qlabel.h>
+#include <qgroupbox.h>
+#include <qlayout.h>
+#include <qvalidator.h>
 
 //#define CHECKTIME
 
@@ -263,6 +268,7 @@ void SUPERVGUI_Graph::contentsMousePressEvent(QMouseEvent* e) {
        main->showPopup(myLinkPopup, e);
       } else {
        mySelectedLink = 0;
+       addDSPopupItem();
        main->showPopup(myPopup, e);
       }
     }
@@ -631,3 +637,113 @@ void SUPERVGUI_Graph::deleteNode(SUPERVGUI_Node* theNode) {
   draw(); 
 }
 
+/*!
+  Constructor
+*/
+SUPERVGUI_DSGraphParameters::SUPERVGUI_DSGraphParameters(SUPERV_Graph theGraph, bool isReadOnly)
+     : QDialog( QAD_Application::getDesktop(), "", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) 
+{
+  Trace("SUPERVGUI_DSGraphParameters::SUPERVGUI_DSGraphParameters");
+  setCaption( tr( "TLT_DSGRAPHPARAMS" ) );
+  setSizeGripEnabled( true );
+  myGraph = theGraph;
+
+  QGridLayout* TopLayout = new QGridLayout( this );
+  TopLayout->setSpacing( 6 );
+  TopLayout->setMargin( 11 );
+    
+  QGroupBox* TopGroup = new QGroupBox( this, "TopGroup" );
+  TopGroup->setColumnLayout(0, Qt::Vertical );
+  TopGroup->layout()->setSpacing( 0 );
+  TopGroup->layout()->setMargin( 0 );
+  QGridLayout* TopGroupLayout = new QGridLayout( TopGroup->layout() );
+  TopGroupLayout->setAlignment( Qt::AlignTop );
+  TopGroupLayout->setSpacing( 6 );
+  TopGroupLayout->setMargin( 11 );
+
+  // DeltaTime
+  QLabel* DeltaTimeL = new QLabel( tr( "DELTATIME_LBL" ), TopGroup );  
+  TopGroupLayout->addWidget( DeltaTimeL, 0, 0 );
+  
+  myDeltaTime = new QAD_SpinBoxDbl( TopGroup, 0.0, 1.0, 0.1);
+  myDeltaTime->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  TopGroupLayout->addWidget( myDeltaTime, 0, 1 );
+
+  // TimeOut
+  QLabel* TimeOutL = new QLabel( tr( "TIMEOUT_LBL" ), TopGroup); 
+  TopGroupLayout->addWidget( TimeOutL, 1, 0 );
+
+  myTimeOut = new QLineEdit( TopGroup );
+  myTimeOut->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myTimeOut->setValidator( new QIntValidator(this) );
+  myTimeOut->setMinimumSize( 100, 0 );
+  myTimeOut->setReadOnly( isReadOnly );
+  TopGroupLayout->addWidget( myTimeOut, 1, 1 );
+
+  // DataStreamTrace
+  QLabel* DataStreamTraceL = new QLabel( tr( "DATASTREAMTRACE_LBL" ), TopGroup); 
+  TopGroupLayout->addWidget( DataStreamTraceL, 2, 0 );
+
+  myDataStreamTrace = new QComboBox( TopGroup );
+  myDataStreamTrace->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myDataStreamTrace->insertItem("WithoutTrace");
+  myDataStreamTrace->insertItem("SummaryTrace");
+  myDataStreamTrace->insertItem("DetailedTrace");
+  TopGroupLayout->addWidget( myDataStreamTrace, 2, 1 );
+
+  QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
+  GroupButtons->setColumnLayout(0, Qt::Vertical );
+  GroupButtons->layout()->setSpacing( 0 );
+  GroupButtons->layout()->setMargin( 0 );
+  QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons->layout() );
+  GroupButtonsLayout->setAlignment( Qt::AlignTop );
+  GroupButtonsLayout->setSpacing( 6 );
+  GroupButtonsLayout->setMargin( 11 );
+  
+  QPushButton* okB     = new QPushButton( tr( "BUT_OK" ),     GroupButtons );
+  QPushButton* cancelB = new QPushButton( tr( "BUT_CANCEL" ), GroupButtons );
+
+  GroupButtonsLayout->addWidget( okB, 0, 0 );
+  GroupButtonsLayout->addItem  ( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
+  GroupButtonsLayout->addWidget( cancelB, 0, 2 );
+
+  TopLayout->addWidget( TopGroup,     0, 0 );
+  TopLayout->addWidget( GroupButtons, 1, 0 );
+
+  connect( okB,     SIGNAL( clicked() ), this, SLOT( accept() ) );
+  connect( cancelB, SIGNAL( clicked() ), this, SLOT( reject() ) );
+
+  setData();
+}
+
+/*!
+  Destructor
+*/
+SUPERVGUI_DSGraphParameters::~SUPERVGUI_DSGraphParameters() {
+  Trace("SUPERVGUI_DSGraphParameters::~SUPERVGUI_DSGraphParameters");
+}
+
+/*!
+  Sets data function
+*/
+void SUPERVGUI_DSGraphParameters::setData() {
+  double aDeltaTime;
+  long aTimeOut;
+  SUPERV::KindOfDataStreamTrace aDataStreamTrace;
+
+  myGraph->StreamParams(aTimeOut, aDataStreamTrace, aDeltaTime);
+
+  myDeltaTime->setValue(aDeltaTime);
+  myTimeOut->setText(QString("%1").arg(aTimeOut));
+  myDataStreamTrace->setCurrentItem((int)aDataStreamTrace);
+}
+
+/*!
+  <OK> button slot
+*/
+void SUPERVGUI_DSGraphParameters::accept() {
+  myGraph->SetStreamParams( myTimeOut->text().toLong(),
+                           (SUPERV::KindOfDataStreamTrace) myDataStreamTrace->currentItem(),
+                           myDeltaTime->value());
+  QDialog::accept();
+}
index dcde3ea9d585d129c28b5fee3ad8bf1e1bd16c43..a3e6dcea7a888594ae6594fc530403626f64828a 100644 (file)
@@ -34,7 +34,11 @@ using namespace std;
 #include "SUPERVGUI_Node.h"
 #include "SUPERVGUI_Link.h"
 #include "SUPERVGUI_CtrlLink.h"
+#include "SUPERVGUI_Def.h"
+#include "QAD_SpinBoxDbl.h"
 #include <qmap.h>
+#include <qcombobox.h>
+#include <qspinbox.h>
 
 
 class SUPERVGUI_Main;
@@ -116,4 +120,26 @@ private slots:
     QMap<QString, SUPERVGUI_CtrlLink> myCtrlLinks;
 };
 
+//**************************************************************
+class SUPERVGUI_DSGraphParameters: public QDialog {
+  Q_OBJECT
+
+  public:
+    SUPERVGUI_DSGraphParameters(SUPERV_Graph theGraph, bool isReadOnly);
+    virtual ~SUPERVGUI_DSGraphParameters();
+
+  private slots:
+    void accept();
+
+  private:
+    
+    void setData();
+    
+    QAD_SpinBoxDbl*      myDeltaTime;
+    QLineEdit*           myTimeOut;
+    QComboBox*           myDataStreamTrace;
+
+    SUPERV_Graph    myGraph;
+};
+
 #endif
index a71da99819103f703e07a4cc1768f0c1fe5271c1..9c86f2ef5bcfd4e7b56c31a49d4c6c4c6dac9787 100644 (file)
@@ -283,6 +283,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()));
index d4d57064d71e4625c4bd9cc949b40511a0a06c21..e1e51a5598a919d53fee18839d19673c6fc2532a 100644 (file)
@@ -135,6 +135,7 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
     void showFullGraph();
     void showContolFlow();
     void filterNotification();
+    void changeDSGraphParameters();
  
   private slots:
     void chooseData(QListViewItem* item);
index b85ddbc15e6af79d5076a63073e97547bd1c5f98..30e534813eebbebd1c052cb7151e226c01592f4d 100644 (file)
@@ -33,6 +33,7 @@ SUPERVGUI_View::SUPERVGUI_View(SUPERVGUI_Main* theMain):
   myLastY = 0;
   myIsDragging = false;
   myCursor = cursor();
+  myDSItemID = -1;
 
 //  myLastMinVisX = horizontalScrollBar()->value(); //viewport()->x();
 //  myLastMinVisY = verticalScrollBar()->value();   //viewport()->y();
@@ -79,6 +80,72 @@ SUPERVGUI_View::~SUPERVGUI_View()
 {
 }
 
+bool SUPERVGUI_View::isHavingStreamPort()
+{
+  SUPERV::ListOfNodes* aNodesList = main->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;
+}
+
+void SUPERVGUI_View::addDSPopupItem()
+{
+  if (myDSItemID == -1) {
+    //Popupmenu items for user specification of parameters, if there are any DataStream ports in the graph
+    if (isHavingStreamPort()) {
+      myPopup->insertSeparator();
+      myDSItemID = myPopup->insertItem(tr("MSG_SET_GRAPHPARAMS"), main, SLOT(changeDSGraphParameters()));
+    }
+  }
+}
+  
 void SUPERVGUI_View::viewportMousePressEvent(QMouseEvent* theEvent) 
 {
   myIsDragging = true;
index c039c8e762c9c501d601e18a95854b397461209c..38b88140e10afc56936c96de74ddcb830d5175b7 100644 (file)
@@ -43,6 +43,8 @@ class SUPERVGUI_View: public QScrollView {
     int getLastX();
     int getLastY();
 
+    void addDSPopupItem();
+
  public slots:
    void addToStudy();
    void changeBackground();
@@ -51,6 +53,7 @@ class SUPERVGUI_View: public QScrollView {
     void viewportMouseMoveEvent(QMouseEvent* theEvent);
     void viewportMouseReleaseEvent(QMouseEvent* theEvent); 
     void viewportMousePressEvent(QMouseEvent* theEvent); 
+    bool isHavingStreamPort();
 
     SUPERVGUI_Main* main;
     QPopupMenu*     myPopup;
@@ -59,6 +62,7 @@ class SUPERVGUI_View: public QScrollView {
     int myAddStudyItem;
 
  private:
+    int myDSItemID;
     int myDx;
     int myDy;
     int myLastX;
index fe81a57c9616a0c80c18f277559c95cd0baf2823..5b9465660793606c15368fb259d7a94a1e8d7284 100644 (file)
@@ -444,6 +444,9 @@ msgstr "Add Point"
 msgid "MSG_INS_FILE"
 msgstr "Insert File"
 
+msgid "MSG_SET_GRAPHPARAMS"
+msgstr "Stream Graph Parameters..."
+
 msgid "MSG_COPY_DATAFLOW"
 msgstr "Copy Dataflow"
 
@@ -468,6 +471,18 @@ msgstr "Rename Dataflow"
 msgid "TLT_INFORMATIONS"
 msgstr "Informations"
 
+msgid "TLT_DSGRAPHPARAMS"
+msgstr "Data Stream Graph Parameters"
+
+msgid "DELTATIME_LBL"
+msgstr "DeltaTime (double):"
+
+msgid "TIMEOUT_LBL"
+msgstr "TimeOut (unsigned long):"
+
+msgid "DATASTREAMTRACE_LBL"
+msgstr "DataStreamTrace:"
+
 msgid "NAME_LBL"
 msgstr "Name:"