From d18e6fad4d25ee2f2928defef449205d15147b49 Mon Sep 17 00:00:00 2001 From: smh Date: Fri, 7 May 2004 13:43:27 +0000 Subject: [PATCH 1/1] Stream Graph parameters dialog box --- src/SUPERVGUI/SUPERVGUI_Graph.cxx | 116 ++++++++++++++++++++++++++++++ src/SUPERVGUI/SUPERVGUI_Graph.h | 26 +++++++ src/SUPERVGUI/SUPERVGUI_Main.cxx | 7 ++ src/SUPERVGUI/SUPERVGUI_Main.h | 1 + src/SUPERVGUI/SUPERVGUI_View.cxx | 67 +++++++++++++++++ src/SUPERVGUI/SUPERVGUI_View.h | 4 ++ src/SUPERVGUI/SUPERV_msg_en.po | 15 ++++ 7 files changed, 236 insertions(+) diff --git a/src/SUPERVGUI/SUPERVGUI_Graph.cxx b/src/SUPERVGUI/SUPERVGUI_Graph.cxx index ff283e2..1d6b1ac 100644 --- a/src/SUPERVGUI/SUPERVGUI_Graph.cxx +++ b/src/SUPERVGUI/SUPERVGUI_Graph.cxx @@ -33,6 +33,11 @@ using namespace std; #include "SUPERVGUI_ControlNode.h" #include "SUPERVGUI.h" +#include +#include +#include +#include +#include //#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); +} + +/*! + button slot +*/ +void SUPERVGUI_DSGraphParameters::accept() { + myGraph->SetStreamParams( myTimeOut->text().toLong(), + (SUPERV::KindOfDataStreamTrace) myDataStreamTrace->currentItem(), + myDeltaTime->value()); + QDialog::accept(); +} diff --git a/src/SUPERVGUI/SUPERVGUI_Graph.h b/src/SUPERVGUI/SUPERVGUI_Graph.h index dcde3ea..a3e6dce 100644 --- a/src/SUPERVGUI/SUPERVGUI_Graph.h +++ b/src/SUPERVGUI/SUPERVGUI_Graph.h @@ -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 +#include +#include class SUPERVGUI_Main; @@ -116,4 +120,26 @@ private slots: QMap 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 diff --git a/src/SUPERVGUI/SUPERVGUI_Main.cxx b/src/SUPERVGUI/SUPERVGUI_Main.cxx index a71da99..9c86f2e 100644 --- a/src/SUPERVGUI/SUPERVGUI_Main.cxx +++ b/src/SUPERVGUI/SUPERVGUI_Main.cxx @@ -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())); diff --git a/src/SUPERVGUI/SUPERVGUI_Main.h b/src/SUPERVGUI/SUPERVGUI_Main.h index d4d5706..e1e51a5 100644 --- a/src/SUPERVGUI/SUPERVGUI_Main.h +++ b/src/SUPERVGUI/SUPERVGUI_Main.h @@ -135,6 +135,7 @@ class SUPERVGUI_Main: public SUPERVGraph_View { void showFullGraph(); void showContolFlow(); void filterNotification(); + void changeDSGraphParameters(); private slots: void chooseData(QListViewItem* item); diff --git a/src/SUPERVGUI/SUPERVGUI_View.cxx b/src/SUPERVGUI/SUPERVGUI_View.cxx index b85ddbc..30e5348 100644 --- a/src/SUPERVGUI/SUPERVGUI_View.cxx +++ b/src/SUPERVGUI/SUPERVGUI_View.cxx @@ -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; diff --git a/src/SUPERVGUI/SUPERVGUI_View.h b/src/SUPERVGUI/SUPERVGUI_View.h index c039c8e..38b8814 100644 --- a/src/SUPERVGUI/SUPERVGUI_View.h +++ b/src/SUPERVGUI/SUPERVGUI_View.h @@ -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; diff --git a/src/SUPERVGUI/SUPERV_msg_en.po b/src/SUPERVGUI/SUPERV_msg_en.po index fe81a57..5b94656 100644 --- a/src/SUPERVGUI/SUPERV_msg_en.po +++ b/src/SUPERVGUI/SUPERV_msg_en.po @@ -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:" -- 2.30.2