X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSUPERVGUI%2FSUPERVGUI_Main.cxx;h=10eb7dc9f40206fbf4bb0473b5d01dbe8884e2c5;hb=cbb0219fe6d6bf11f98f2306c2855fef1eaa2d44;hp=59344f1d5f8cd103a3c0b06ac24a108d3b4b8535;hpb=e4b2f8f88a294e451364a8b84d170a59dcbb5d3f;p=modules%2Fsuperv.git diff --git a/src/SUPERVGUI/SUPERVGUI_Main.cxx b/src/SUPERVGUI/SUPERVGUI_Main.cxx index 59344f1..10eb7dc 100644 --- a/src/SUPERVGUI/SUPERVGUI_Main.cxx +++ b/src/SUPERVGUI/SUPERVGUI_Main.cxx @@ -26,6 +26,7 @@ // Module : SUPERV using namespace std; + #include "QAD_Splitter.h" #include "QAD_LeftFrame.h" #include "QAD_ObjectBrowser.h" @@ -34,101 +35,27 @@ using namespace std; #include "QAD_Message.h" #include "QAD_FileDlg.h" #include "QAD_Application.h" -#include "SUPERVGUI_Def.h" #include "QAD_RightFrame.h" +#include "QAD_SpinBoxDbl.h" + +#include "NOTIFICATION.hxx" #include "SALOME_Event.hxx" +#include "SALOMEGUI_ImportOperation.h" #include "SUPERVGraph_ViewFrame.h" -#include -#include -#include "SUPERVGUI_Main.h" + #include "SUPERVGUI.h" -#include "SUPERVGUI_ComputeNode.h" -#include "SUPERVGUI_ControlNode.h" -#include "NOTIFICATION.hxx" +#include "SUPERVGUI_Def.h" +#include "SUPERVGUI_Main.h" #include "SUPERVGUI_Notification.h" -#include "SALOMEGUI_ImportOperation.h" #include "SUPERVGUI_Information.h" #include "SUPERVGUI_CanvasControlNode.h" -#include -/* -asv 20.10.04: removed 2 SUPERVGUI_Main constructors. there is only ONE way -to create a Main object now: with a non-null DataFlow as a 3d parameter -SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* theDesktop, bool fromIOR) - : SUPERVGraph_View(theParent), - myLogged( false ), - myFiltered( false ), - myLogFileName( QString::null ), - myLogFile( NULL ), - myWarning( false ), - myStep( false ), - myTrace( false ), - myVerbose( false ) -{ - Trace("SUPERVGUI_Main::SUPERVGUI_Main (new)"); - theParent->setViewWidget(this); - if (fromIOR) { - //SUPERVGUI_Main* am = Supervision.getMain(); - QAD_ObjectBrowser* ob = ((QAD_StudyFrame*)(theDesktop->getMainFrame()->activeWindow()))->getLeftFrame()->getObjectBrowser(); - // if (am == 0) { - // ob = ((QAD_StudyFrame*)(theDesktop->getMainFrame()->activeWindow()))->getLeftFrame()->getObjectBrowser(); - //} else { - //ob = am->objectBrowser; - //}; - QAD_ObjectBrowserItem* item = (QAD_ObjectBrowserItem*)(ob->getListView()->currentItem()); - SALOMEDS::SObject_var obj = theDesktop->getActiveStudy()->getStudyDocument()->FindObjectID(item->getEntry().latin1()); - SALOMEDS::GenericAttribute_var anAttr; - if (obj->FindAttribute(anAttr, "AttributeIOR")) { - SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - Standard_CString ior = anIOR->Value(); - dataflow = Supervision.getEngine()->getStreamGraph(ior); - if (SUPERV_isNull(dataflow)) { - QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_ACCESS_BAD_IOR")); - close(); - } else { - init(theDesktop); - } - } else { - QMessageBox::warning(0, tr("ERROR"), tr("MSG_NOACCESS_BY_IOR")); - close(); - } - } else { - dataflow = Supervision.getEngine()->StreamGraph(MAIN_NEW); - if (SUPERV_isNull(dataflow)) { - QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_CANT_CREATE_DF")); - close(); - } else { - init(theDesktop); - } - } -} +#include +#include +#include +#include +#include -SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* theDesktop, bool isModify, const char* f) - : SUPERVGraph_View(theParent), - myLogged( false ), - myFiltered( false ), - myLogFileName( QString::null ), - myLogFile( NULL ), - myWarning( false ), - myStep( false ), - myTrace( false ), - myVerbose( false ) -{ - Trace("SUPERVGUI_Main::SUPERVGUI_Main (file)") - theParent->setViewWidget(this); - if (isModify) { - dataflow = Supervision.getEngine()->StreamGraph(f); - } else { - dataflow = Supervision.getEngine()->StreamGraphE(f); - } - if (SUPERV_isNull(dataflow)) { - QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_BAD_FILE").arg(f)); - close(); - } else { - init(theDesktop); - } -} -*/ SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* theDesktop, SUPERV_Graph theDataFlow ) : SUPERVGraph_View(theParent), @@ -139,7 +66,8 @@ SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* th myWarning( false ), myStep( false ), myTrace( false ), - myVerbose( false ) + myVerbose( false ), + myGUIEventLoopFinished( true ) { Trace("SUPERVGUI_Main::SUPERVGUI_Main (copy)"); theParent->setViewWidget(this); @@ -196,10 +124,8 @@ void SUPERVGUI_Main::init(QAD_Desktop* theDesktop) { objectBrowser = study->getActiveStudyFrame()->getLeftFrame()->getObjectBrowser(); - - graph = new SUPERVGUI_Graph(this); - graph->hide(); - array = new SUPERVGUI_Array(this); + myArray = new SUPERVGUI_CanvasArray(this); + myArrayView = new SUPERVGUI_ArrayView(myArray, this); myCanvas = new SUPERVGUI_Canvas(this); myCanvasView = new SUPERVGUI_CanvasView(myCanvas, this); @@ -210,9 +136,8 @@ void SUPERVGUI_Main::init(QAD_Desktop* theDesktop) { QBoxLayout * layout = new QVBoxLayout(this); layout->setMargin(0); layout->setSpacing(0); - layout->addWidget(graph); - layout->addWidget(array); layout->addWidget(myCanvasView); + layout->addWidget(myArrayView); if (myCurrentView == CANVAS || myCurrentView == CONTROLFLOW) { myCanvas->merge(); @@ -254,12 +179,13 @@ SUPERVGUI_Main::~SUPERVGUI_Main() { if ( myLogFile != NULL) { fclose( myLogFile ); } - graph->removeLinks(); + //delete myCanvas; // delete notification; // kloss : nota bene : quand un datalow est detruit : verifier que les canaux de notification sont aussi detruit notification->_remove_ref(); // kloss : nota bene : quand un datalow est detruit : verifier que les canaux de notification sont aussi detruit delete myCanvas; + delete myArray; } void SUPERVGUI_Main::filterNotification() { @@ -294,13 +220,6 @@ 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())); @@ -313,85 +232,53 @@ void SUPERVGUI_Main::syncAsync() { void SUPERVGUI_Main::execute(char * theNodeName, SUPERV::GraphState theNodeState) { if (myCurrentView == CANVAS || myCurrentView == CONTROLFLOW) { SUPERVGUI_CanvasNode* aNode = (SUPERVGUI_CanvasNode*) myCanvas->child(theNodeName, "SUPERVGUI_CanvasNode"); - if (aNode) aNode->sync(); - } - else { - SUPERVGUI_Node* aNodePrs; - SUPERVGUI_GraphNode* aGraphNodePrs; - if (myCurrentView == TABLE) { - aNodePrs = (SUPERVGUI_Node*) array->child(theNodeName, "SUPERVGUI_Node"); - aGraphNodePrs = (SUPERVGUI_GraphNode*) array->child(theNodeName, "SUPERVGUI_GraphNode"); - } else { - aNodePrs = (SUPERVGUI_Node*) graph->child(theNodeName, "SUPERVGUI_Node"); - aGraphNodePrs = (SUPERVGUI_GraphNode*) graph->child(theNodeName, "SUPERVGUI_GraphNode"); - } - if (aGraphNodePrs) { - aGraphNodePrs->sync(); - } - else if (aNodePrs) { - aNodePrs->syncOnEvent(theNodeState); + if ( aNode ) { + aNode->sync(); } } + else if (myCurrentView == CANVASTABLE) { + SUPERVGUI_CanvasCellNode* aNode = (SUPERVGUI_CanvasCellNode*) myArray->child(theNodeName, "SUPERVGUI_CanvasCellNode"); + if (aNode) aNode->sync(); + } } void SUPERVGUI_Main::sync() { - Trace("SUPERVGUI_Main::sync") - if ((SUPERV_isNull(dataflow))) return; - QString t = tr("GRAPH_TITLE"); - - t += dataflow->Name(); - setCaption(t); - - study->updateObjBrowser(); - if (myCurrentView == TABLE) { - array->sync(); - } else if (myCurrentView == GRAPH) { - graph->sync(); - } else { - myCanvas->sync(); - myCanvas->update(); - } -} - - -void SUPERVGUI_Main::showTable() { - if (myCurrentView == TABLE) return; + Trace("SUPERVGUI_Main::sync") + if ((SUPERV_isNull(dataflow))) + return; + QString t = tr("GRAPH_TITLE"); + + t += dataflow->Name(); + setCaption(t); - if (array->create()) { - if (myCurrentView == GRAPH) - graph->hide(); - else - myCanvasView->hide(); - myCurrentView = TABLE; + study->updateObjBrowser(); + if (myCurrentView == CANVASTABLE) { + myArray->sync(); + myArray->update(); + } else { + myCanvas->sync(); + myCanvas->update(); } - sync(); } +void SUPERVGUI_Main::showCanvasTable() { + if (myCurrentView == CANVASTABLE) + return; -void SUPERVGUI_Main::showFullGraph() { - if (myCurrentView == TABLE) { - array->destroy(); - graph->show(); - } - else if (myCurrentView != GRAPH) { // (myCurrentView == CANVAS) { + if (myArray->create()) { myCanvasView->hide(); - graph->show(); + myArrayView->show(); + myCurrentView = CANVASTABLE; } - myCurrentView = GRAPH; - graph->sync(); - graph->setFullView(); + sync(); } - void SUPERVGUI_Main::showContolFlow() { bool merge = false; - if (myCurrentView == TABLE) { - array->destroy(); - merge = true; - } - else if (myCurrentView == GRAPH) { - graph->hide(); + if (myCurrentView == CANVASTABLE) { + myArrayView->hide(); + myArray->destroy(); merge = true; } myCurrentView = CONTROLFLOW; @@ -403,15 +290,13 @@ void SUPERVGUI_Main::showContolFlow() { } void SUPERVGUI_Main::showCanvas() { - if (myCurrentView == CANVAS) return; + if (myCurrentView == CANVAS) + return; bool merge = false; - if (myCurrentView == TABLE) { - array->destroy(); - merge = true; - } - else if (myCurrentView == GRAPH) { - graph->hide(); + if (myCurrentView == CANVASTABLE) { + myArrayView->hide(); + myArray->destroy(); merge = true; } myCurrentView = CANVAS; @@ -422,20 +307,6 @@ void SUPERVGUI_Main::showCanvas() { } } - -bool SUPERVGUI_Main::exportDataflow(QString theFile) { - Trace("SUPERVGUI_Main::exportDataflow"); - if ((SUPERV_isNull(dataflow))) return false; - - if (!theFile.isEmpty()) { - if (!dataflow->Export(theFile.latin1())) { - QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_BAD_WRITING")); - return false; - } - } - return true; -} - void SUPERVGUI_Main::insertFile() { Trace("SUPERVGUI_Main::insertFile") if ((SUPERV_isNull(dataflow))) return; @@ -447,11 +318,11 @@ void SUPERVGUI_Main::insertFile() { true); if (!f.isEmpty()) { if (dataflow->Import(f.latin1())) { - if (myCurrentView == TABLE) { - array->destroy(); - array->create(); + if (myCurrentView == CANVASTABLE) { + myArray->destroy(); + myArray->create(); } - else if (myCurrentView != GRAPH) { // (myCurrentView == CANVAS) { + else { // (myCurrentView == CANVAS || myCurrentView == CONTROLFLOW) { myCanvas->merge(); } sync(); @@ -601,7 +472,7 @@ void SUPERVGUI_Main::run() { QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_DF_NOTVALID")); } else if (!dataflow->IsExecutable()) { QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_DF_NOTEXECUTABLE")); - } else if (graph->isAnyLinkCreating() || myCanvasView->isAnyLinkCreating()) { + } else if (myCanvasView->isAnyLinkCreating()) { QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_CRL_NOTCOMPLETE")); } else { myRunTime = QDateTime::currentDateTime(); @@ -614,7 +485,7 @@ void SUPERVGUI_Main::run() { } } else { myThread->startThread(tr("MSG_GRAPH_STARTED")); - sync(); + //sync(); } } else { if (!dataflow->Run()) { @@ -624,7 +495,7 @@ void SUPERVGUI_Main::run() { } } else { myThread->startThread(tr("MSG_GRAPH_STARTED")); - sync(); + //sync(); } } } @@ -644,7 +515,7 @@ void SUPERVGUI_Main::startExecute() { QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_DF_NOTVALID")); } else if (!dataflow->IsExecutable()) { QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_DF_NOTEXECUTABLE")); - } else if (graph->isAnyLinkCreating() || myCanvasView->isAnyLinkCreating()) { + } else if (myCanvasView->isAnyLinkCreating()) { QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_CRL_NOTCOMPLETE")); } else { myRunTime = QDateTime::currentDateTime(); @@ -749,20 +620,11 @@ void SUPERVGUI_Main::addNode() { * Add Computation node */ void SUPERVGUI_Main::addComputeNode(SUPERV_CNode theNode) { - //cout<<"### X="<X()<<" Y="<Y()<viewport(), this, theNode); - graph->ResizeGraph(aNode, theNode->X(), theNode->Y()); - graph->addChild(aNode, theNode->X(), theNode->Y()); - aNode->sync(); - } - break; - case TABLE: - array->destroy(); - array->create(); - break; + case CANVASTABLE: + myArray->destroy(); + myArray->create(); + break; case CANVAS: case CONTROLFLOW: { @@ -781,17 +643,9 @@ void SUPERVGUI_Main::addComputeNode(SUPERV_CNode theNode) { */ void SUPERVGUI_Main::addGOTONode(SUPERV_CNode theNode) { switch (myCurrentView) { - case GRAPH: - { - SUPERVGUI_Node* aNode = new SUPERVGUI_GotoNode(graph->viewport(), this, theNode); - graph->ResizeGraph(aNode, theNode->X(), theNode->Y()); - graph->addChild(aNode, theNode->X(), theNode->Y()); - aNode->sync(); - } - break; - case TABLE: - array->destroy(); - array->create(); + case CANVASTABLE: + myArray->destroy(); + myArray->create(); break; case CANVAS: case CONTROLFLOW: @@ -811,29 +665,9 @@ void SUPERVGUI_Main::addGOTONode(SUPERV_CNode theNode) { */ void SUPERVGUI_Main::addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode, bool Update) { switch (myCurrentView) { - case GRAPH: - { - SUPERVGUI_StartControlNode* aStartPrs = - new SUPERVGUI_StartControlNode(graph->viewport(), this, theStartNode); - SUPERVGUI_EndControlNode* aEndPrs = - new SUPERVGUI_EndControlNode(graph->viewport(), this, theEndNode, aStartPrs); - - graph->ResizeGraph(aStartPrs, theStartNode->X(), theStartNode->Y()); - graph->addChild(aStartPrs, theStartNode->X(), theStartNode->Y()); - graph->ResizeGraph(aEndPrs, theEndNode->X(), theEndNode->Y()); - graph->addChild(aEndPrs, theEndNode->X(), theEndNode->Y()); - if (Update) { - aStartPrs->updateLinksPrs(); - aEndPrs->updateLinksPrs(); - } - aStartPrs->sync(); - aEndPrs->sync(); - graph->repaintContents(); - } - break; - case TABLE: - array->destroy(); - array->create(); + case CANVASTABLE: + myArray->destroy(); + myArray->create(); break; case CANVAS: case CONTROLFLOW: @@ -859,19 +693,10 @@ void SUPERVGUI_Main::addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theE * Add Macro node */ void SUPERVGUI_Main::addMacroNode(SUPERV_CNode theNode) { - //cout<<"### X="<X()<<" Y="<Y()<viewport(), this, theNode); - graph->ResizeGraph(aNode, theNode->X(), theNode->Y()); - graph->addChild(aNode, theNode->X(), theNode->Y()); - aNode->sync(); - } - break; - case TABLE: - array->destroy(); - array->create(); + case CANVASTABLE: + myArray->destroy(); + myArray->create(); break; case CANVAS: case CONTROLFLOW: @@ -886,15 +711,14 @@ void SUPERVGUI_Main::addMacroNode(SUPERV_CNode theNode) { } } - -SUPERVGUI_Graph* SUPERVGUI_Main::getGraph() { - Trace("SUPERVGUI_Main::getGraph") - return(graph); +SUPERVGUI_CanvasArray* SUPERVGUI_Main::getCanvasArray() { + Trace("SUPERVGUI_Main::getCanvasArray") + return(myArray); } -SUPERVGUI_Array* SUPERVGUI_Main::getArray() { - Trace("SUPERVGUI_Main::getArray") - return(array); +SUPERVGUI_ArrayView* SUPERVGUI_Main::getArrayView() { + Trace("SUPERVGUI_Main::getArrayView") + return(myArrayView); } SUPERVGUI_Canvas* SUPERVGUI_Main::getCanvas() { @@ -924,7 +748,7 @@ QAD_Study* SUPERVGUI_Main::getStudy() { bool SUPERVGUI_Main::isArrayShown() { Trace("SUPERVGUI_Main::isArrayShown") - return(myCurrentView == TABLE); + return(myCurrentView == CANVASTABLE); } void SUPERVGUI_Main::showPopup(QPopupMenu* p, QMouseEvent* e) { @@ -949,10 +773,6 @@ void SUPERVGUI_Main::changeInformation() { if (aDlg->exec() ) sync(); delete aDlg; - /* Trace("SUPERVGUI_Main::changeInformation") - if (Supervision.information(SUPERV::CNode::_narrow(dataflow), dataflow->IsReadOnly())) { - sync(); - }*/ } // returns false, if can't add dataflow into the study @@ -960,14 +780,19 @@ bool SUPERVGUI_Main::addStudy() { Trace("SUPERVGUI_Main::addStudy"); if (myIsFromStudy) return false; if ((SUPERV_isNull(dataflow))) return false; - + SALOMEDS::Study_var aStudy = study->getStudyDocument(); + bool aLocked = aStudy->GetProperties()->IsLocked(); + // asv : 23.11.04 : if the study is locked -- then we can't put anything in it. + // fix for PAL6852. + if ( aLocked ) + return false; + SALOMEDS::StudyBuilder_var aBuilder = aStudy->NewBuilder(); SALOMEDS::GenericAttribute_var anAttr; SALOMEDS::AttributeName_var aName; SALOMEDS::AttributeIOR_var anIORAttr; SALOMEDS::AttributePixMap_var aPixmap; - bool aLocked = aStudy->GetProperties()->IsLocked(); QAD_Operation* op = new SALOMEGUI_ImportOperation( study ); // searching dataflow @@ -977,7 +802,7 @@ bool SUPERVGUI_Main::addStudy() { if (aComponent->_is_nil()) { // is supervision component not found, then create it QAD_Operation* anOperation = new SALOMEGUI_ImportOperation( study ); anOperation->start(); - if (aLocked) aStudy->GetProperties()->SetLocked(false); + //if (aLocked) aStudy->GetProperties()->SetLocked(false); aComponent = aBuilder->NewComponent(STUDY_SUPERVISION); anAttr = aBuilder->FindOrCreateAttribute(aComponent, "AttributeName"); aName = SALOMEDS::AttributeName::_narrow(anAttr); @@ -987,7 +812,7 @@ bool SUPERVGUI_Main::addStudy() { aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); aPixmap->SetPixMap( "ICON_OBJBROWSER_Supervision" ); aBuilder->DefineComponentInstance(aComponent, Supervision.getEngine()); - if (aLocked) aStudy->GetProperties()->SetLocked(true); + //if (aLocked) aStudy->GetProperties()->SetLocked(true); anOperation->finish(); } op->start(); @@ -999,7 +824,7 @@ bool SUPERVGUI_Main::addStudy() { anIORAttr = SALOMEDS::AttributeIOR::_narrow(anAttr); anIORAttr->SetValue(dataflow->getIOR()); op->finish(); - if (aLocked) return false; + //if (aLocked) return false; } sync(); @@ -1022,7 +847,11 @@ void SUPERVGUI_Main::chooseData(QListViewItem* item) { if (object->FindAttribute(anAttr, "AttributeIOR")) { anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); ior = anIOR->Value(); - portIn->setValue(ior); + + // asv : 13.12.04 : commented out use of portIn field, but it seems that it + // should be replaced with some analogious code... selection of IOR was done - + // put its value into port. + //portIn->setValue(ior); // stop selection choosing = false; @@ -1034,15 +863,6 @@ void SUPERVGUI_Main::chooseData(QListViewItem* item) { } } -void SUPERVGUI_Main::setData(SUPERVGUI_PortIn* p) { - Trace("SUPERVGUI_Main::setData") - portIn = p; - choosing = true; - setCursor(forbiddenCursor); - objectBrowser->setCursor(pointingHandCursor); - Supervision.putInfo(tr("MSG_CHOOSE_DATA")); -} - SALOMEDS::SObject_var SearchOrCreateSOWithName(const SALOMEDS::Study_var theStudy, const SALOMEDS::SObject_var theSO, const char* theName, @@ -1081,28 +901,36 @@ SALOMEDS::SObject_var SearchOrCreateSOWithName(const SALOMEDS::Study_var theStud bool SUPERVGUI_Main::putDataStudy(SUPERV_Port p, const char* inout) { Trace("SUPERVGUI_Main::putDataStudy"); + // static variable to ensure that only one instance (thread) is executing this function static bool isIn = false; - if (isIn) return true; else isIn = true; + if (isIn) + return true; + else + isIn = true; SALOMEDS::Study_var aStudy = study->getStudyDocument(); + bool aLocked = aStudy->GetProperties()->IsLocked(); + // asv : 23.11.04 : if the study is locked -- then we can't put anything in it. + // fix for PAL6852. + if ( aLocked ) { + isIn = false; + return false; + } + SALOMEDS::StudyBuilder_var aBuilder = aStudy->NewBuilder(); SALOMEDS::GenericAttribute_var anAttr; SALOMEDS::AttributeName_var aName; SALOMEDS::AttributeIOR_var anIORAttr; SALOMEDS::AttributePixMap_var aPixmap; bool aTransaction = false; - bool aLocked = aStudy->GetProperties()->IsLocked(); - // QAD_Operation* op = new SALOMEGUI_ImportOperation( study ); // searching dataflow SALOMEDS::SObject_var aSO = aStudy->FindObjectIOR(dataflow->getIOR()); if (aSO->_is_nil()) { // create new dataflow SObject SALOMEDS::SComponent_ptr aComponent = aStudy->FindComponent(STUDY_SUPERVISION); if (aComponent->_is_nil()) { // is supervision component not found, then create it - //QAD_Operation* anOperation = new SALOMEGUI_ImportOperation( study ); - //anOperation->start(); aBuilder->NewCommand(); - if (aLocked) aStudy->GetProperties()->SetLocked(false); + //if (aLocked) aStudy->GetProperties()->SetLocked(false); aComponent = aBuilder->NewComponent(STUDY_SUPERVISION); anAttr = aBuilder->FindOrCreateAttribute(aComponent, "AttributeName"); aName = SALOMEDS::AttributeName::_narrow(anAttr); @@ -1113,12 +941,10 @@ bool SUPERVGUI_Main::putDataStudy(SUPERV_Port p, const char* inout) { aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); aPixmap->SetPixMap( "ICON_OBJBROWSER_Supervision" ); aBuilder->DefineComponentInstance(aComponent, Supervision.getEngine()); - if (aLocked) aStudy->GetProperties()->SetLocked(true); - // anOperation->finish(); + //if (aLocked) aStudy->GetProperties()->SetLocked(true); aBuilder->CommitCommand(); } aTransaction = true; - //op->start(); aBuilder->NewCommand(); aSO = aBuilder->NewObject(aComponent); anAttr = aBuilder->FindOrCreateAttribute(aSO, "AttributeName"); @@ -1128,19 +954,14 @@ bool SUPERVGUI_Main::putDataStudy(SUPERV_Port p, const char* inout) { anIORAttr = SALOMEDS::AttributeIOR::_narrow(anAttr); anIORAttr->SetValue(dataflow->getIOR()); } - //QAD_Operation* anOperation = new SALOMEGUI_ImportOperation( study ); + aSO = SearchOrCreateSOWithName(aStudy, aSO, // get run time SO - QString("Run ") + myRunTime.toString() /*, anOperation*/, &aTransaction); - aSO = SearchOrCreateSOWithName(aStudy, aSO, p->Node()->Name()/*, anOperation*/, &aTransaction); // get node SO - aSO = SearchOrCreateSOWithName(aStudy, aSO, inout/*, anOperation*/, &aTransaction); // get in/out SO - aSO = SearchOrCreateSOWithName(aStudy, aSO, p->Name()/*, anOperation*/, &aTransaction); // get port SO - - if (aLocked) { - if (aTransaction) aBuilder->CommitCommand(); - //op->finish(); - isIn = false; - return false; - } + QString("Run ") + myRunTime.toString(), &aTransaction); + aSO = SearchOrCreateSOWithName(aStudy, aSO, p->Node()->Name(), &aTransaction); // get node SO + aSO = SearchOrCreateSOWithName(aStudy, aSO, inout, &aTransaction); // get in/out SO + aSO = SearchOrCreateSOWithName(aStudy, aSO, p->Name(), &aTransaction); // get port SO + + if (aTransaction) aBuilder->CommitCommand(); anAttr = aBuilder->FindOrCreateAttribute(aSO, "AttributeIOR"); anIORAttr = SALOMEDS::AttributeIOR::_narrow(anAttr); @@ -1168,14 +989,12 @@ bool SUPERVGUI_Main::putDataStudy(SUPERV_Port p, const char* inout) { if (!aTransaction) { aTmpSO = aSO; aTransaction = true; - //op->start(); aBuilder->NewCommand(); } - aTmpSO = aDriver->PublishInStudy(aStudy, aTmpSO, anObject, ""); + aTmpSO = aDriver->PublishInStudy(aStudy, aTmpSO, anObject, /*anObject->Name()*/""); aBuilder->Addreference(aSO, aTmpSO); } else { // can't publish object: abort transaction if (aTransaction) aBuilder->AbortCommand(); - //op->abort(); isIn = false; return false; } @@ -1187,14 +1006,12 @@ bool SUPERVGUI_Main::putDataStudy(SUPERV_Port p, const char* inout) { } else { if (!aTransaction) { aTransaction = true; - // op->start(); aBuilder->NewCommand(); } anIORAttr->SetValue(p->ToString()); // ior attribute already set for the prevoius condition } if (aTransaction) - //op->finish(); aBuilder->CommitCommand(); if (!myThread->running()) study->updateObjBrowser(); @@ -1205,32 +1022,26 @@ bool SUPERVGUI_Main::putDataStudy(SUPERV_Port p, const char* inout) { void SUPERVGUI_Main::ActivatePanning() { - if (graph->isVisible()) { - graph->ActivatePanning(); - } else if (array->isVisible()) { - array->ActivatePanning(); - } else if (myCanvasView->isVisible()) { + if (myCanvasView->isVisible()) { myCanvasView->ActivatePanning(); + } else if (myArrayView->isVisible()) { + myArrayView->ActivatePanning(); } } void SUPERVGUI_Main::ResetView() { - if (graph->isVisible()) { - graph->ResetView(); - } else if (array->isVisible()) { - array->ResetView(); - } else if (myCanvasView->isVisible()) { + if (myCanvasView->isVisible()) { myCanvasView->ResetView(); + } else if (myArrayView->isVisible()) { + myArrayView->ResetView(); } } void SUPERVGUI_Main::setAsFromStudy(bool theToStudy) { myIsFromStudy = theToStudy; - graph->setAsFromStudy(theToStudy); - array->setAsFromStudy(theToStudy); myCanvas->setAsFromStudy(theToStudy); } @@ -1283,10 +1094,10 @@ bool SUPERVGUI_Main::isFiltered(char* graph, char* node, char* type, char* me Trace("SUPERVGUI_Main::isFiltered"); bool b = false; if (strcmp(getDataflow()->Name(), graph) == 0) { - SUPERVGUI_Node* n; - QObjectList* nodes = queryList("SUPERVGUI_Node"); + SUPERVGUI_CanvasNode* n; + QObjectList* nodes = queryList("SUPERVGUI_CanvasNode"); QObjectListIt i(*nodes); - while ((n=(SUPERVGUI_Node*)i.current()) != 0) { + while ((n=(SUPERVGUI_CanvasNode*)i.current()) != 0) { ++i; if (strcmp(n->name(), node) == 0) { if (strcmp(type, NOTIF_WARNING) == 0) { @@ -1317,10 +1128,10 @@ void SUPERVGUI_Main::closeEvent(QCloseEvent* e) { void SUPERVGUI_Main::setPaletteBackgroundColor(const QColor& color) { - array->setPaletteBackgroundColor(color); - graph->setPaletteBackgroundColor(color); myCanvas->setBackgroundColor(color); myCanvasView->setPaletteBackgroundColor(color.light()); + myArray->setBackgroundColor(color); + myArrayView->setPaletteBackgroundColor(color.light()); SUPERVGraph_View::setPaletteBackgroundColor(color); } @@ -1361,6 +1172,7 @@ void SUPERVGUI_Main::startTimer() { void SUPERVGUI_Main::executionFinished() { getStudy()->updateObjBrowser(); myCanvas->update(); + myArray->update(); } void SUPERVGUI_Main::checkExecution() { @@ -1370,6 +1182,11 @@ void SUPERVGUI_Main::checkExecution() { } } +void SUPERVGUI_Main::Editing() { + if ( !SUPERV_isNull( dataflow ) ) + dataflow->Editing(); +} + /******************************* SUPERVGUI_Thread class ****************************************/ SUPERVGUI_Thread::SUPERVGUI_Thread() :QThread() @@ -1429,6 +1246,9 @@ void SUPERVGUI_Thread::run() QPtrList< SUPERV::GraphState > aStates; myMain->startTimer(); + + myMain->myGUIEventLoopFinished = false; + while(myIsActive) { myMain->getDataflow()->Event(aNode, aEvent, aState); @@ -1540,6 +1360,8 @@ void SUPERVGUI_Thread::run() // qApp->unlock(); // VSR: 04/12/03 <--- + myMain->myGUIEventLoopFinished = true; + QThread::exit(); }