// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
SUPERV::Port_ptr aPort = aPortList[p].in(); \
if ( !aPort->IsInput() && !aPort->IsGate() ) { \
bool aInStudy = dynamic_cast<SUPERVGUI_CanvasPortOut*>( aMain->getCanvas()->getPort(aPort) )->isInStudy(); \
- dynamic_cast<SUPERVGUI_CanvasPortOut*>( getCanvas()->getPort( getDataflow()->Node(aCNode->Name())->Port(aPort->Name()) ) )->setStudyState(aInStudy); \
+ dynamic_cast<SUPERVGUI_CanvasPortOut*>( getCanvas()->getPort( getDataflow()->Node(aCNode->Name())->GetOutPort(aPort->Name()) ) )->setStudyState(aInStudy); \
} \
} \
}
SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( study->application() );
objectBrowser = app->objectBrowser();
-
+
myArray = new SUPERVGUI_CanvasArray( this, resMgr() );
myArrayView = new SUPERVGUI_ArrayView( myArray, this );
myCanvas = new SUPERVGUI_Canvas( this, resMgr() );
myCanvasView = new SUPERVGUI_CanvasView(myCanvas, this);
-
+
message = app->logWindow();
notification = new NOTIFICATION_Consumer();
//if ( aSupMod ) aSupMod->updateObjBrowser();
//else MESSAGE("NULL Supervision module!");
+ // update "Save" icon and menu state, if dataflow is published
+ _PTR(Study) aStudy = ((SalomeApp_Study*)study)->studyDS();
+ _PTR(SObject) aSO = aStudy->FindObjectIOR(dataflow->getIOR());
+ if (aSO) SUPERVGUI_Main::setModifiedFlag();
+
if (myCurrentView == CANVASTABLE) {
myArray->sync();
myArray->update();
void SUPERVGUI_Main::onObjectCreatedDeleted()
{
if ( study ) {
- if ( STD_Application* app = dynamic_cast<STD_Application*>( study->application() ) ) {
+ if ( LightApp_Application* app = dynamic_cast<LightApp_Application*>( study->application() ) ) {
ViewManagerList aVMList;
app->viewManagers( SUPERVGraph_Viewer::Type(), aVMList );
SUIT_ViewManager* aVM;
QObjectList* aMainList = aVW->queryList("SUPERVGUI_Main");
if ( aMainList->count() == 1 ) {
SUPERVGUI_Main* aMain = dynamic_cast<SUPERVGUI_Main*>( aMainList->first() );
- if ( aMain )
- if ( !CORBA::is_nil( aMain->getDataflow() )
- &&
- !QString(aMain->getDataflow()->getIOR()).compare(getDataflow()->getIOR()) // equal dataflows
- &&
- aMain != this ) // not equal mains
+ if ( aMain ) {
+ if (aMain != this &&
+ !CORBA::is_nil(aMain->getDataflow()) &&
+ !QString(aMain->getDataflow()->getIOR()).compare(getDataflow()->getIOR())) // equal dataflows
aMain->getCanvas()->merge();
+ }
}
}
}
+
+ // update "Save" icon and menu state, if dataflow is published
+ //_PTR(Study) aStudy = ((SalomeApp_Study*)study)->studyDS();
+ //_PTR(SObject) aSO = aStudy->FindObjectIOR(dataflow->getIOR());
+ //if (aSO) SUPERVGUI_Main::setModifiedFlag();
}
}
}
}
}
}
+ //SUPERVGUI_Main::setModifiedFlag();
}
}
}
myRunTime = QDateTime::currentDateTime();
const bool result = andSuspend ? dataflow->Start() : dataflow->Run();
if ( !result ) {
- QMessageBox::warning(SUIT_Session::session()->activeApplication()->desktop(), tr("ERROR"), tr("MSG_DF_BADEXECUTE"));
+ // PAL12902
+ QMessageBox::warning(SUIT_Session::session()->activeApplication()->desktop(), tr("ERROR"), tr("MSG_DF_BADEXECUTE") + QString(" : ") + QString(dataflow->Messages()));
if ( dataflow->State() == SUPERV::ErrorState ) {
- kill();
+ // PAL12902
+ if ( !dataflow->IsEditing() ) kill();
}
}
else {
QMessageBox::warning(SUIT_Session::session()->activeApplication()->desktop(), tr("ERROR"), tr("MSG_DF_NOTRUNNING"));
}
else if (dataflow->Kill()) {
- getMessage()->putMessage( tr("MSG_GRAPH_KILLED") );
+ // IPAL9273, 9369, 9731 : to avoid two equal messages about killing dataflow
+ // execution in the Message Console
+ //getMessage()->putMessage( tr("MSG_GRAPH_KILLED") );
sync();
}
else {
case CANVAS:
case CONTROLFLOW:
{
- SUPERVGUI_CanvasNode* aNode = new SUPERVGUI_CanvasComputeNode( resMgr(), myCanvas, this, theNode);
+ SUPERVGUI_CanvasNode* aNode = SUPERVGUI_CanvasComputeNode::Create(resMgr(), myCanvas, this, theNode);
aNode->move(theNode->X(), theNode->Y());
if (myCurrentView == CONTROLFLOW) aNode->hideAll();
aNode->show();
case CANVAS:
case CONTROLFLOW:
{
- SUPERVGUI_CanvasNode* aNode = new SUPERVGUI_CanvasGotoNode( resMgr(), myCanvas, this, theNode);
+ SUPERVGUI_CanvasNode* aNode = SUPERVGUI_CanvasGotoNode::Create(resMgr(), myCanvas, this, theNode);
aNode->move(theNode->X(), theNode->Y());
if (myCurrentView == CONTROLFLOW) aNode->hideAll();
aNode->show();
/**
* Add Control node
*/
-void SUPERVGUI_Main::addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode, bool Update) {
+void SUPERVGUI_Main::addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode, bool Update)
+{
switch (myCurrentView) {
case CANVASTABLE:
myArray->destroy();
case CANVAS:
case CONTROLFLOW:
{
- SUPERVGUI_CanvasStartNode* aStartNode = new SUPERVGUI_CanvasStartNode( resMgr(), myCanvas, this, theStartNode);
+ SUPERVGUI_CanvasStartNode* aStartNode =
+ SUPERVGUI_CanvasStartNode::Create(resMgr(), myCanvas, this, theStartNode);
aStartNode->move(theStartNode->X(), theStartNode->Y());
if (myCurrentView == CONTROLFLOW) aStartNode->hideAll();
- SUPERVGUI_CanvasEndNode* aEndNode = new SUPERVGUI_CanvasEndNode( resMgr(), myCanvas, this, theEndNode, aStartNode);
+ SUPERVGUI_CanvasEndNode* aEndNode =
+ SUPERVGUI_CanvasEndNode::Create(resMgr(), myCanvas, this, theEndNode, aStartNode);
aEndNode->move(theEndNode->X(), theEndNode->Y());
if (myCurrentView == CONTROLFLOW) aEndNode->hideAll();
case CANVAS:
case CONTROLFLOW:
{
- SUPERVGUI_CanvasNode* aNode = new SUPERVGUI_CanvasMacroNode( resMgr(), myCanvas, this, theNode);
+ SUPERVGUI_CanvasNode* aNode = SUPERVGUI_CanvasMacroNode::Create(resMgr(), myCanvas, this, theNode);
aNode->move(theNode->X(), theNode->Y());
if (myCurrentView == CONTROLFLOW) aNode->hideAll();
aNode->show();
if ( !myThread->running() )
aSupMod->updateObjBrowser();
+
+ aSupMod->getApp()->updateActions();
}
else {
MESSAGE( "ERROR: failed to find or create dataflow SObject" );
aSupMod->updateObjBrowser();
}
else MESSAGE("NULL Supervision module!");
-
+
+ SalomeApp_Application* app = (SalomeApp_Application*)(SUIT_Session::session()->activeApplication());
+ if(app) app->updateActions();
isIn = false;
return true;
}
getCanvasArray()->resize( theEvent->size().width(), theEvent->size().height() );
}
+/*!
+ Sets a modified flag in an active study
+ */
+void SUPERVGUI_Main::setModifiedFlag()
+{
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication());
+ if(app) {
+ SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
+ if(study) {
+ _PTR(Study) studyDS = study->studyDS();
+ _PTR(SComponent) sco = studyDS->FindComponent(STUDY_SUPERVISION);
+ if(sco) {
+ _PTR(StudyBuilder) builder = studyDS->NewBuilder();
+ _PTR(GenericAttribute) ga;
+ ga = builder->FindOrCreateAttribute(sco, "AttributeParameter");
+ _PTR(AttributeParameter) ap(ga);
+ if(ap) {
+ ap->SetBool("SUPERVISOR_MODIFIED_FLAG",1);
+ app->updateActions();
+ }
+ }
+ }
+ }
+}
+
+
/******************************* SUPERVGUI_Thread class ****************************************/
SUPERVGUI_Thread::SUPERVGUI_Thread()
:QThread()
{
// in case node "said" something during changing state through notification mechanism - output it
myMain->syncNotification();
+ myMain->sync(); // mkr : NPAL14881
// "kill" or undefined event came
if (( aEvent == SUPERV::UndefinedEvent && aState == SUPERV::UndefinedState ) ||
// execution is finished. just set a "finished" message(s)
if ( !myIsActive ) {
+ QString aMess;
switch ( myMain->getDataflow()->State() ) {
case SUPERV_Editing :
myMain->getMessage()->putMessage( myMain->getDataflow()->IsReadOnly()?
break;
case SUPERV_Error :
myMain->getMessage()->putMessage( tr("MSG_GRAPH_ABORTED") );
+ // PAL12866 -->
+ aMess = QString(myMain->getDataflow()->Messages());
+ if ( !aMess.isEmpty() ) {
+ myMain->getMessage()->putMessage( tr("MSG_DF_BADEXECUTE") + QString(" : ") + aMess );
+ QMessageBox::warning(SUIT_Session::session()->activeApplication()->desktop(), tr("ERROR"),
+ tr("MSG_DF_BADEXECUTE") + QString(" : ") + aMess);
+ }
+ // PAL12866 <--
break;
case SUPERV_Kill:
myMain->getMessage()->putMessage( tr("MSG_GRAPH_KILLED") );
Sets data function
*/
void SUPERVGUI_DSGraphParameters::setData() {
- double aDeltaTime;
- long aTimeOut;
+ CORBA::Double aDeltaTime;
+ CORBA::Long aTimeOut;
SUPERV::KindOfDataStreamTrace aDataStreamTrace;
// myGraph->StreamParams(aTimeOut, aDataStreamTrace, aDeltaTime);
}
QDialog::accept();
}
+