X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSUPERVGUI%2FSUPERVGUI_Main.cxx;h=33e2a18d3523673749bc6813774d8b599052e14b;hb=ea7f29f75031ca13b9454f5e9ac73730f1f584eb;hp=3cd797d4520242ee32261c2ed5c3c80ffa39aff8;hpb=8229714a187e4df7ca154e033019e4103dd0fbe6;p=modules%2Fsuperv.git diff --git a/src/SUPERVGUI/SUPERVGUI_Main.cxx b/src/SUPERVGUI/SUPERVGUI_Main.cxx index 3cd797d..33e2a18 100644 --- a/src/SUPERVGUI/SUPERVGUI_Main.cxx +++ b/src/SUPERVGUI/SUPERVGUI_Main.cxx @@ -68,8 +68,8 @@ SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* th myWarning( false ), myStep( false ), myTrace( false ), - myVerbose( false ), - myExecuted( false ) + myVerbose( false ) + //myExecuted( false ) { Trace("SUPERVGUI_Main::SUPERVGUI_Main (copy)"); theParent->setViewWidget(this); @@ -222,8 +222,8 @@ void SUPERVGUI_Main::filterNotification() { } void SUPERVGUI_Main::syncAsync() { - Trace("SUPERVGUI_Main::syncAsync"); - QTimer::singleShot(1, this, SLOT(sync())); + Trace("SUPERVGUI_Main::syncAsync"); + QTimer::singleShot(1, this, SLOT(sync())); } @@ -233,13 +233,13 @@ 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 ) { + if ( aNode ) aNode->sync(); - } } else if (myCurrentView == CANVASTABLE) { SUPERVGUI_CanvasCellNode* aNode = (SUPERVGUI_CanvasCellNode*) myArray->child(theNodeName, "SUPERVGUI_CanvasCellNode"); - if (aNode) aNode->sync(); + if (aNode) + aNode->sync(); } // asv : 26.01.05 : Bug PAL7164 : puting out-value to study if the "put_to_Study" flag is set on a @@ -332,30 +332,33 @@ void SUPERVGUI_Main::showCanvas() { } void SUPERVGUI_Main::insertFile() { - Trace("SUPERVGUI_Main::insertFile"); - if ((SUPERV_isNull(dataflow))) return; + Trace("SUPERVGUI_Main::insertFile"); - Editing(); // PAL6170: GUI->Engine: setting "Editing" flag - - QString f = QAD_FileDlg::getFileName(QAD_Application::getDesktop(), - "", - "*.xml", - tr("MSG_GRAPH_INSERT"), - true); - if (!f.isEmpty()) { - if (dataflow->Import(f.latin1())) { - if (myCurrentView == CANVASTABLE) { - myArray->destroy(); - myArray->create(); - } - else { // (myCurrentView == CANVAS || myCurrentView == CONTROLFLOW) { - myCanvas->merge(); - } - sync(); - } else { - QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_BAD_FILE").arg(f)); + if ( !ReadyToModify() ) // null dataflow or executing, .. + return; + + QString f = QAD_FileDlg::getFileName(QAD_Application::getDesktop(), + "", + "*.xml", + tr("MSG_GRAPH_INSERT"), + true); + if ( !f.isEmpty() ) { // not Cancel, but "OK" was pressed with valid file name + + Editing(); // PAL6170: GUI->Engine: setting "Editing" flag, why here? -> see 7960 + + if (dataflow->Import(f.latin1())) { + if (myCurrentView == CANVASTABLE) { + myArray->destroy(); + myArray->create(); + } + else { // (myCurrentView == CANVAS || myCurrentView == CONTROLFLOW) { + myCanvas->merge(); } + sync(); + } else { + QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_BAD_FILE").arg(f)); } + } } void SUPERVGUI_Main::copy() { @@ -518,7 +521,7 @@ void SUPERVGUI_Main::run( const bool andSuspend ) { } } else { - myExecuted = true; // set to true on first execution. for correct publishing in Study + //myExecuted = true; // set to true on first execution. for correct publishing in Study myThread->startThread(tr("MSG_GRAPH_STARTED")); } } @@ -538,7 +541,7 @@ void SUPERVGUI_Main::kill() { QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_DF_NOTRUNNING")); } else if (dataflow->Kill()) { - myThread->stopThread(tr("MSG_GRAPH_KILLED")); + getMessage()->setMessage( tr("MSG_GRAPH_KILLED") ); sync(); } else { @@ -561,7 +564,7 @@ void SUPERVGUI_Main::suspendResume() { } else { if (dataflow->Suspend()) { sync(); - myThread->stopThread(tr("MSG_GRAPH_SUSPENDED")); + getMessage()->setMessage( tr("MSG_GRAPH_SUSPENDED") ); } else { QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_CANT_SUSPEND")); } @@ -594,21 +597,11 @@ void SUPERVGUI_Main::stopRestart() { // kloss : a reviser et a connecter dans le */ void SUPERVGUI_Main::addNode() { Trace("SUPERVGUI_Main::addNode"); - bool error = SUPERV_isNull( dataflow ); - if ( error ) + + if ( !ReadyToModify() ) // null dataflow or executing, .. return; - - if ( dataflow->IsExecuting() ) { - error = QAD_MessageBox::warn2( QAD_Application::getDesktop(), // 0=Yes, 1=No - tr("WARNING"), tr("MSG_GRAPH_ISRUN"), tr( "BUT_YES" ), tr( "BUT_NO" ), 0, 1, 0 ); - if ( error ) // user selected NOT to kill dataflow and NOT to add new node - return; - else // user selected to kill the dataflow and add new node after that - kill(); - } - Editing(); // PAL6170: GUI->Engine: setting "Editing" flag - + //Editing(); // PAL6170: GUI->Engine: setting "Editing" flag, commented: PAL7960 Supervision.getBrowser()->choose(); } @@ -756,14 +749,11 @@ void SUPERVGUI_Main::showPopup(QPopupMenu* p, QMouseEvent* e) { //if (QAD_Application::getDesktop()->getActiveComponent().compare(STUDY_SUPERVISION) !=0) return; if (QAD_Application::getDesktop()->getActiveComponent().compare(QAD_Application::getDesktop()->getComponentUserName( "SUPERV" ) ) !=0) return; - checkIsInStudy(); if (e->button() == RightButton) { p->exec(e->globalPos()); } } - - void SUPERVGUI_Main::changeInformation() { SUPERVGUI_Information* aDlg = new SUPERVGUI_Information(SUPERV::CNode::_narrow(dataflow), dataflow->IsReadOnly()); if (aDlg->exec() ) @@ -771,66 +761,6 @@ void SUPERVGUI_Main::changeInformation() { delete aDlg; } -// returns false, if can't add dataflow into the study -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; - 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(); - //if (aLocked) aStudy->GetProperties()->SetLocked(false); - aComponent = aBuilder->NewComponent(STUDY_SUPERVISION); - anAttr = aBuilder->FindOrCreateAttribute(aComponent, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - //aName->SetValue(STUDY_SUPERVISION); - aName->SetValue(QAD_Application::getDesktop()->getComponentUserName( "SUPERV" ) ); - anAttr = aBuilder->FindOrCreateAttribute(aComponent, "AttributePixMap"); - aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - aPixmap->SetPixMap( "ICON_OBJBROWSER_Supervision" ); - aBuilder->DefineComponentInstance(aComponent, Supervision.getEngine()); - //if (aLocked) aStudy->GetProperties()->SetLocked(true); - anOperation->finish(); - } - op->start(); - aSO = aBuilder->NewObject(aComponent); - anAttr = aBuilder->FindOrCreateAttribute(aSO, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(dataflow->Name()); - anAttr = aBuilder->FindOrCreateAttribute(aSO, "AttributeIOR"); - anIORAttr = SALOMEDS::AttributeIOR::_narrow(anAttr); - anIORAttr->SetValue(dataflow->getIOR()); - op->finish(); - //if (aLocked) return false; - } - - sync(); - Supervision.unregisterGraph(this); - Supervision.registerGraph(dataflow->getIOR(), this); - myIsFromStudy = true; - return true; -} - - void SUPERVGUI_Main::chooseData(QListViewItem* item) { Trace("SUPERVGUI_Main::chooseData"); if (choosing) { @@ -890,34 +820,30 @@ SALOMEDS::SObject_var SearchOrCreateSOWithName(const SALOMEDS::Study_var theStud aName->SetValue(theName); return aResult; } + +/** + * Return true if dataflow is already in the study + */ +bool SUPERVGUI_Main::isDataflowInStudy() const { + SALOMEDS::Study_var aStudy = study->getStudyDocument(); + SALOMEDS::SObject_var aSO = aStudy->FindObjectIOR( dataflow->getIOR() ); + return ( !CORBA::is_nil( aSO ) ); +} -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; - +/** + * Create a "Supervision" object in the Study and a "dataflow" object under it + * aDoneSomething will be true if "Supervision" or "dataflow" object were created (not found). + */ +SALOMEDS::SObject_var createDataflowSObj( QAD_Study* study, + SUPERV::Graph_var dataflow, + SALOMEDS::StudyBuilder_var aBuilder, + bool& aDoneSomething ) { SALOMEDS::Study_var aStudy = study->getStudyDocument(); - const bool aLocked = aStudy->GetProperties()->IsLocked(); - SALOMEDS::StudyBuilder_var aBuilder = aStudy->NewBuilder(); SALOMEDS::GenericAttribute_var anAttr; SALOMEDS::AttributeName_var aName; SALOMEDS::AttributeIOR_var anIORAttr; SALOMEDS::AttributePixMap_var aPixmap; - bool aDoneSomething = false; - - // asv 23.11.04 : fix for PAL6852 if the study is locked -- then we can't put anything in it. - if ( aLocked ) { - MESSAGE( "The study is locked and can not be modified!" ); - isIn = false; - return false; - } - // open new command. Commit or Abort it depending on aDoneSomething variable or error - aBuilder->NewCommand(); - // Find or create "Supervisor -> aNewDataflow_1" SObjects in the study SALOMEDS::SObject_var aSO = aStudy->FindObjectIOR( dataflow->getIOR() ); if ( aSO->_is_nil() ) { // dataflow SObject not found in the study @@ -944,8 +870,75 @@ bool SUPERVGUI_Main::putDataStudy( SUPERV_Port p, const char* inout ) { anIORAttr->SetValue(dataflow->getIOR()); } + return aSO; +} + +void SUPERVGUI_Main::addDataflowToStudy() { + bool isCreated; + SALOMEDS::StudyBuilder_var aBuilder = study->getStudyDocument()->NewBuilder(); + aBuilder->NewCommand(); + SALOMEDS::SObject_var aDF = createDataflowSObj( study, dataflow, aBuilder, isCreated ); + if ( !CORBA::is_nil( aDF ) ) { + aBuilder->CommitCommand(); + // what is this register/unregister?? don't know.. + Supervision.unregisterGraph(this); + Supervision.registerGraph(dataflow->getIOR(), this); + + if ( !myThread->running() ) + study->updateObjBrowser(); + } + else { + MESSAGE( "ERROR: failed to find or create dataflow SObject" ); + aBuilder->AbortCommand(); + } +} + +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; + + SALOMEDS::Study_var aStudy = study->getStudyDocument(); + const bool aLocked = aStudy->GetProperties()->IsLocked(); + SALOMEDS::StudyBuilder_var aBuilder = aStudy->NewBuilder(); + SALOMEDS::GenericAttribute_var anAttr; + SALOMEDS::AttributeIOR_var anIORAttr; + SALOMEDS::AttributePixMap_var aPixmap; + bool aDoneSomething = false; + + // asv 23.11.04 : fix for PAL6852 if the study is locked -- then we can't put anything in it. + if ( aLocked ) { + MESSAGE( "The study is locked and can not be modified!" ); + isIn = false; + return false; + } + + // check if the port and its node are good + if ( CORBA::is_nil( p ) || CORBA::is_nil( p->Node() ) ) { + MESSAGE( "putInStudy ERROR: port or node are NULL!" ); + isIn = false; + return false; + } + + // open new command. Commit or Abort it depending on aDoneSomething variable or error + aBuilder->NewCommand(); + + // Find or create "Supervisor -> aNewDataflow_1" SObjects in the study + SALOMEDS::SObject_var aSO = createDataflowSObj( study, dataflow, aBuilder, aDoneSomething ); + + if ( CORBA::is_nil( aSO ) ) { + MESSAGE( "ERROR: putDataStudy() could not find or create dataflow SObject" ); + aBuilder->AbortCommand(); + isIn = false; + return false; + } + // Create "Run -> Time and date, etc." SObjects - if ( myExecuted ) { // if dataflow was executed at least once + if ( p->State() == SUPERV::ReadyState ) { // if port contains valid computed value + aSO = SearchOrCreateSOWithName( aStudy, aBuilder, aSO, QString("Run ") + myRunTime.toString(), &aDoneSomething ); // get run time SO aSO = SearchOrCreateSOWithName( aStudy, aBuilder, aSO, p->Node()->Name(), &aDoneSomething ); // get node SO aSO = SearchOrCreateSOWithName( aStudy, aBuilder, aSO, inout, &aDoneSomething ); // get in/out SO @@ -1047,34 +1040,6 @@ void SUPERVGUI_Main::ResetView() } } - -void SUPERVGUI_Main::setAsFromStudy(bool theToStudy) { - myIsFromStudy = theToStudy; - myCanvas->setAsFromStudy(theToStudy); -} - -void SUPERVGUI_Main::checkIsInStudy() { - if (!myIsFromStudy) return; - - SALOMEDS::Study_var aStudyDoc = study->getStudyDocument(); - SALOMEDS::SComponent_var aFatherLbl = aStudyDoc->FindComponent(STUDY_SUPERVISION); - SALOMEDS::ChildIterator_var aChildIterator = aStudyDoc->NewChildIterator(aFatherLbl); - SALOMEDS::SObject_var aDataflowLbl; - SALOMEDS::GenericAttribute_var anAttr; - - for (; aChildIterator->More(); aChildIterator->Next()) { - aDataflowLbl = aChildIterator->Value(); - if (!aDataflowLbl->FindAttribute(anAttr, "AttributeIOR")) - continue; - - SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - if (strcmp(anIOR->Value(), dataflow->getIOR()) == 0) return; - } - // This Graph considered as in study but in study it is not exists - Supervision.unregisterGraph(this); - setAsFromStudy(false); -} - void SUPERVGUI_Main::syncNotification() { char* graph; char* node; @@ -1227,6 +1192,25 @@ void SUPERVGUI_Main::removeArrayChild(SUPERV::CNode_ptr theNode) } } +/** + * ReadyToModify() must be called before any modification + * operation - asks to kill execution of dataflow. If returns false - + * modification (==Editing() ) is not allowed. + */ +bool SUPERVGUI_Main::ReadyToModify() { + if ( CORBA::is_nil( dataflow ) ) + return false; + if ( dataflow->IsExecuting() ) { + bool quit = QAD_MessageBox::warn2( QAD_Application::getDesktop(), // 0=Yes, 1=No + tr("WARNING"), tr("MSG_GRAPH_ISRUN"), tr( "BUT_YES" ), tr( "BUT_CANCEL" ), 0, 1, 0 ); + if ( quit ) // user selected NOT to kill dataflow and NOT to add new node + return false; + else if ( dataflow->IsExecuting() ) // user selected to kill the dataflow and add new node after that + kill(); // checking again for IsExecuting to be sure that it was not finished while MB was up + } + return true; +} + /******************************* SUPERVGUI_Thread class ****************************************/ SUPERVGUI_Thread::SUPERVGUI_Thread() :QThread() @@ -1243,24 +1227,18 @@ void SUPERVGUI_Thread::startThread(const char* m) { if (!myIsActive) { myIsActive = true; - //QThread::start(); - this->start(); + start(); myMain->getMessage()->setMessage(m); myMain->sync(); } } -void SUPERVGUI_Thread::stopThread(const char* m) -{ - myMain->getMessage()->setMessage(m); -} - -void SUPERVGUI_Thread::setMain(SUPERVGUI_Main* theMain) +void SUPERVGUI_Thread::setMain( SUPERVGUI_Main* theMain ) { myMain = theMain; } -void SUPERVGUI_Thread::KillThread(bool theValue) +void SUPERVGUI_Thread::KillThread( bool theValue ) { myMutex.lock(); myIsActive = !(theValue); @@ -1271,132 +1249,61 @@ typedef TVoidMemFun2ArgEvent TNodeSyn void SUPERVGUI_Thread::run() { - SUPERV_CNode aNode = NULL; - SUPERV::GraphEvent aEvent = SUPERV::UndefinedEvent ; - SUPERV::GraphState aState = SUPERV::UndefinedState ; - - SUPERV_CNode aPrevNode = NULL; - SUPERV::GraphEvent aPrevEvent = SUPERV::UndefinedEvent ; - SUPERV::GraphState aPrevState = SUPERV::UndefinedState ; + myMain->startTimer(); - char * aName; - char * aPrevName; + // GUI cycle to handle events coming for Engine + while ( myIsActive ) { - QPtrList< char * > anEventNodes; - QPtrList< SUPERV::GraphState > aStates; + SUPERV_CNode aNode = NULL; + SUPERV::GraphEvent aEvent = SUPERV::UndefinedEvent ; + SUPERV::GraphState aState = SUPERV::UndefinedState ; - myMain->startTimer(); - - while(myIsActive) { + // blocking function of Engine. Return from there only after anEvent happens on node aNode myMain->getDataflow()->Event(aNode, aEvent, aState); - if (aEvent == SUPERV::UndefinedEvent && aState == SUPERV::UndefinedState - || - aEvent == SUPERV::NoEvent && aState == SUPERV::NoState - || - aEvent == SUPERV::KillEvent && aState == SUPERV::KillState) { - - if (myMain->getEventNodes().count()) { - myMain->removeEventNodes(); - } - if (myMain->getStates().count()) { - myMain->removeStates(); - } + // "kill" or undefined event came + if (( aEvent == SUPERV::UndefinedEvent && aState == SUPERV::UndefinedState ) || + ( aEvent == SUPERV::NoEvent && aState == SUPERV::NoState ) || + ( aEvent == SUPERV::KillEvent && aState == SUPERV::KillState )) { + myIsActive = false; } - else { - if ( aNode != NULL && !CORBA::is_nil( aNode ) ) { - aName = aNode->Name(); - } - - if ( aPrevNode == NULL || CORBA::is_nil( aPrevNode ) ) { //first initialize aPrev... variables - anEventNodes = myMain->getEventNodes(); - anEventNodes.append( &aName ) ; - myMain->setEventNodes(anEventNodes); - - aStates = myMain->getStates(); - aStates.append( &aState ) ; - myMain->setStates(aStates); - } - else { - if ( aEvent == aPrevEvent && aState == aPrevState) { - QString aNameStr = aName; - QString aPrevNameStr = aPrevName; - if ( aNameStr != aPrevNameStr ) { - anEventNodes = myMain->getEventNodes(); - anEventNodes.append( &aName ) ; - myMain->setEventNodes(anEventNodes); - - aStates = myMain->getStates(); - aStates.append( &aState ) ; - myMain->setStates(aStates); - } - } - else { - anEventNodes = myMain->getEventNodes(); - anEventNodes.append( &aName ) ; - myMain->setEventNodes(anEventNodes); - - aStates = myMain->getStates(); - aStates.append( &aState ) ; - myMain->setStates(aStates); - } - } - } - if (!myIsActive) { - switch (myMain->getDataflow()->State()) { + else { // a "normal" execution event came + char* aName = NULL; + if ( aNode != NULL && !CORBA::is_nil( aNode ) ) + aName = aNode->Name(); + + // this function is asynchronious. The call does NOT wait when SUPERVGUI_Main::execute finishes + // handling the event. So: SUPERVGUI_Main::execute must be fast, in order we don't get here again + // on the next loop iteration, BEFORE previous SUPERVGUI_Main::execute finished. + ProcessVoidEvent( new TNodeSyncEvent( myMain, &SUPERVGUI_Main::execute, aName, aState ) ); + } + + // execution is finished. just set a "finished" message(s) + if ( !myIsActive ) { + switch ( myMain->getDataflow()->State() ) { case SUPERV_Editing : - stopThread(myMain->getDataflow()->IsReadOnly()? tr("MSG_GRAPH_READONLY"): tr("MSG_GRAPH_EDITING")); - break; - + myMain->getMessage()->setMessage( myMain->getDataflow()->IsReadOnly()? + tr("MSG_GRAPH_READONLY"): tr("MSG_GRAPH_EDITING") ); + break; case SUPERV_Suspend : - stopThread(tr("MSG_GRAPH_SUSPENDED")); - break; - + myMain->getMessage()->setMessage( tr("MSG_GRAPH_SUSPENDED") ); + break; case SUPERV_Done : - stopThread(tr("MSG_GRAPH_FINISHED")); - break; - + myMain->getMessage()->setMessage( tr("MSG_GRAPH_FINISHED") ); + break; case SUPERV_Error : - stopThread(tr("MSG_GRAPH_ABORTED")); - break; - + myMain->getMessage()->setMessage( tr("MSG_GRAPH_ABORTED") ); + break; case SUPERV_Kill: - stopThread(tr("MSG_GRAPH_KILLED")); + myMain->getMessage()->setMessage( tr("MSG_GRAPH_KILLED") ); break; - } - - break; - } - if ( myMain->getEventNodes().count() ) { - //if list not empty call execute() -> sync() - char * aNodeName = *(myMain->getEventNodes().getFirst()); - SUPERV::GraphState aNodeState = *(myMain->getStates().getFirst()); - - // It is PROHIBITED to deal with widgets in a secondary thread, so event posting is used here - ProcessVoidEvent( new TNodeSyncEvent( myMain, &SUPERVGUI_Main::execute, aNodeName, aNodeState ) ); + } // end of switch - myMain->removeFirstEN(); - myMain->removeFirstS(); - } - - aPrevNode = aNode; - aPrevEvent = aEvent; - aPrevState = aState; - - if ( aPrevNode == NULL || CORBA::is_nil( aPrevNode ) ) - aPrevName = ""; - else - aPrevName = aPrevNode->Name(); - - //usleep(10); - //msleep(5); - } - // VSR: 04/12/03 ---> update object browser ufter finishing -// qApp->lock(); -// myMain->getStudy()->updateObjBrowser(); -// qApp->unlock(); - // VSR: 04/12/03 <--- + // asv 03.02.05 : fix for PAL6859, not very good, but works.. + myMain->sync(); + } // end of if !myIsActive + } // end of while( myIsActive ) QThread::exit(); }