-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include <LightApp_Displayer.h>
+#ifndef DISABLE_PYCONSOLE
+ #include "SalomeApp_PyInterp.h" // WARNING! This include must be the first!
+#endif
+
#include "utilities.h"
#include "SALOMEDS_Tool.hxx"
if (oldFather) {
oldFather->removeChild(suit_obj, false);
SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( myStudy->application() );
+// MESSAGE("myStudy: " << myStudy->id() << " app " << app);
+// MESSAGE("objectBrowser: "<< app->objectBrowser());
+ if (!app->objectBrowser()) {
+ MESSAGE("Object Browser not found. Problem ??");
+ return;
+ }
SUIT_AbstractModel* model = dynamic_cast<SUIT_AbstractModel*>(app->objectBrowser()->model());
model->forgetObject( suit_obj );
//aFatherDO->insertChild(suit_obj, pos);
aFatherDO->updateItem();
- /* Define visibility state */
- bool isComponent = dynamic_cast<SalomeApp_ModuleObject*>( suit_obj ) != 0;
- if ( suit_obj && !isComponent && myStudy->visibilityState( theID.c_str() ) == Qtx::UnpresentableState ) {
- QString moduleTitle = ((CAM_Application*)myStudy->application())->moduleTitle(suit_obj->componentDataType());
- if (!moduleTitle.isEmpty()) {
- LightApp_Displayer* aDisplayer = LightApp_Displayer::FindDisplayer(moduleTitle,false);
- if (aDisplayer) {
- if(aDisplayer->canBeDisplayed(theID.c_str())) {
- myStudy->setVisibilityState( theID.c_str(), Qtx::HiddenState ); //hide the just added object
- //MESSAGE("Object with entry : "<< theID <<" CAN be displayed !!!");
- }
- else
- MESSAGE("Object with entry : "<< theID <<" CAN'T be displayed !!!");
- }
- }
- }
+ /* Define visibility state */
+ bool isComponent = dynamic_cast<SalomeApp_ModuleObject*>( suit_obj ) != 0;
+ if ( suit_obj && !isComponent && myStudy->visibilityState( theID.c_str() ) == Qtx::UnpresentableState ) {
+ QString moduleTitle = ((CAM_Application*)myStudy->application())->moduleTitle(suit_obj->componentDataType());
+ if (!moduleTitle.isEmpty()) {
+ LightApp_Displayer* aDisplayer = LightApp_Displayer::FindDisplayer(moduleTitle,false);
+ if (aDisplayer) {
+ if(aDisplayer->canBeDisplayed(theID.c_str())) {
+ myStudy->setVisibilityState( theID.c_str(), Qtx::HiddenState ); //hide the just added object
+ //MESSAGE("Object with entry : "<< theID <<" CAN be displayed !!!");
+ }
+ //else
+ //MESSAGE("Object with entry : "<< theID <<" CAN'T be displayed !!!");
+ }
+ }
+ }
} // END: work with tree nodes structure
else { // BEGIN: work with study structure
EntryMapIter it = entry2SuitObject.find( theID );
std::string::size_type debut = 0;
std::string::size_type fin;
SalomeApp_DataObject* anObj = dynamic_cast<SalomeApp_DataObject*>( myStudy->root() );
- while ( 1 ) {
+ while ( anObj ) {
fin = obj_id.find_first_of( ':', debut );
if ( fin == std::string::npos ) {
//last id
anObj = dynamic_cast<SalomeApp_DataObject*>(anObj->childObject(atoi(obj_id.substr(debut).c_str())-1));
- entry2SuitObject[parent_id] = anObj;
+ if ( anObj )
+ entry2SuitObject[parent_id] = anObj;
break;
}
anID = root_id + obj_id.substr( 0, fin );
if ( it2 == entry2SuitObject.end() ) {
//the ID is not known in entry2SuitObject
anObj = dynamic_cast<SalomeApp_DataObject*>(anObj->childObject(atoi(obj_id.substr(debut, fin-debut).c_str())-1));
- entry2SuitObject[anID] = anObj;
+ if ( anObj )
+ entry2SuitObject[anID] = anObj;
}
else
anObj = it2->second;
debut = fin+1;
}
- anObj->insertChildAtTag( suit_obj, tag );
+ if ( anObj )
+ anObj->insertChildAtTag( suit_obj, tag );
}
}
entry2SuitObject[theID] = suit_obj;
if ( it != entry2SuitObject.end() )
{
suit_obj = it->second;
- // VSR: object is not removed, since SALOMEDS::SObject is not actually removed,
- // only its attributes are cleared;
- // thus, the object can be later reused
suit_obj->updateItem();
- //SUIT_DataObject* father=suit_obj->parent();
- //if(father)
- // father->removeChild(suit_obj);
- //entry2SuitObject.erase(it);
+ SUIT_DataObject* father=suit_obj->parent();
+ if(father)
+ father->removeChild(suit_obj);
+ entry2SuitObject.erase(it);
}
else
{
myStudy->setVisibilityState( theID.c_str(), Qtx::HiddenState );
//MESSAGE("Object with entry : "<< theID <<" CAN be displayed !!!");
}
- else
- MESSAGE("Object with entry : "<< theID <<" CAN'T be displayed !!!");
+ //else
+ //MESSAGE("Object with entry : "<< theID <<" CAN'T be displayed !!!");
}
}
}
#ifndef DISABLE_PYCONSOLE
case 6: //NoteBook variables were modified
{
- myStudy->onNoteBookVarUpdate( QString( theID.c_str() ) );
- break;
+ myStudy->onNoteBookVarUpdate( QString( theID.c_str() ) );
+ break;
}
#endif
default:MESSAGE("Unknown event: " << event);break;
QString aName = newStudyName();
_PTR(Study) study;
+ bool showError = !application()->property("open_study_from_command_line").isValid() ||
+ !application()->property("open_study_from_command_line").toBool();
try {
study = _PTR(Study)( SalomeApp_Application::studyMgr()->NewStudy( aName.toUtf8().data() ) );
}
catch(const SALOME_Exception& ex) {
- SUIT_MessageBox::critical( SUIT_Session::session()->activeApplication()->desktop(),
- tr("ERR_ERROR"), tr(ex.what()));
+ application()->putInfo(tr(ex.what()));
+ if ( showError )
+ SUIT_MessageBox::critical( SUIT_Session::session()->activeApplication()->desktop(),
+ tr("ERR_ERROR"), tr(ex.what()));
return false;
}
catch(...) {
- SUIT_MessageBox::critical( SUIT_Session::session()->activeApplication()->desktop(),
- tr("ERR_ERROR"), tr("CREATE_DOCUMENT_PROBLEM"));
+ application()->putInfo(tr("CREATE_DOCUMENT_PROBLEM"));
+ if ( showError )
+ SUIT_MessageBox::critical( SUIT_Session::session()->activeApplication()->desktop(),
+ tr("ERR_ERROR"), tr("CREATE_DOCUMENT_PROBLEM"));
return false;
}
// initialize myStudyDS, read HDF file
_PTR(Study) study;
+ bool showError = !application()->property("open_study_from_command_line").isValid() ||
+ !application()->property("open_study_from_command_line").toBool();
try {
study = _PTR(Study) ( SalomeApp_Application::studyMgr()->Open( theFileName.toUtf8().data() ) );
}
catch(const SALOME_Exception& ex) {
- SUIT_MessageBox::critical( SUIT_Session::session()->activeApplication()->desktop(),
- tr("ERR_ERROR"), tr(ex.what()));
+ application()->putInfo(tr(ex.what()));
+ if ( showError )
+ SUIT_MessageBox::critical( SUIT_Session::session()->activeApplication()->desktop(),
+ tr("ERR_ERROR"), tr(ex.what()));
return false;
}
catch(...) {
- SUIT_MessageBox::critical( SUIT_Session::session()->activeApplication()->desktop(),
- tr("ERR_ERROR"), tr("OPEN_DOCUMENT_PROBLEM"));
+ application()->putInfo(tr("OPEN_DOCUMENT_PROBLEM"));
+ if ( showError )
+ SUIT_MessageBox::critical( SUIT_Session::session()->activeApplication()->desktop(),
+ tr("ERR_ERROR"), tr("OPEN_DOCUMENT_PROBLEM"));
return false;
}
if ( myObserver )
myStudyDS->detach( myObserver->_this() );
if ( permanently ) {
+ SUIT_Desktop* desk = SUIT_Session::session()->activeApplication()->desktop();
+ bool isBlocked = desk->signalsBlocked();
+ desk->blockSignals( true );
SalomeApp_Application::studyMgr()->Close( studyPtr );
+ desk->blockSignals( isBlocked );
+#ifndef DISABLE_PYCONSOLE
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( application() );
+ app->getPyInterp()->destroy();
+#endif
}
SALOMEDSClient_Study* aStudy = 0;
setStudyDS( _PTR(Study)(aStudy) );
// for this module by LightApp_Engine_i::Load()
bool isMultiFile = false; // TODO: decide, how to access this parameter
RemoveTemporaryFiles( dm->module()->name().toStdString().c_str(), isMultiFile );
+ std::vector<std::string> listOfFiles ;
+ SetListOfFiles( dm->module()->name().toStdString().c_str(), listOfFiles );
// Something has been read -> create data model tree
LightApp_DataModel* aDM = dynamic_cast<LightApp_DataModel*>( dm );