-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2013 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 "SalomeApp_DataObject.h"
#include "SalomeApp_DataModel.h"
#include "SalomeApp_Application.h"
-#include "SalomeApp_Engine_i.hxx"
+#include "SalomeApp_Engine_i.h"
#include "SalomeApp_VisualState.h"
// temporary commented
public:
- Observer_i(_PTR(Study) aStudyDS, SalomeApp_Study* aStudy)
+ Observer_i(_PTR(Study) aStudyDS, SalomeApp_Study* aStudy):QObject(aStudy)
{
myStudyDS=aStudyDS;
myStudy=aStudy;
SUIT_DataObject* oldFather = suit_obj->parent();
if (oldFather) {
oldFather->removeChild(suit_obj, false);
- SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( myStudy->application() );
- SUIT_AbstractModel* model = dynamic_cast<SUIT_AbstractModel*>(app->objectBrowser()->model());
- model->forgetObject( suit_obj );
-
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( myStudy->application() );
+ SUIT_AbstractModel* model = dynamic_cast<SUIT_AbstractModel*>(app->objectBrowser()->model());
+ model->forgetObject( suit_obj );
+
if (SalomeApp_DataObject* oldFatherSA = dynamic_cast<SalomeApp_DataObject*>(oldFather)) {
oldFatherSA->updateItem();
}
entry2SuitObject[theID] = suit_obj;
}
- suit_obj->updateItem();
+ suit_obj->updateItem();
// define position in the data tree (in aFatherDO) to insert the aSObj
int pos = -1;
//int childDataObjCount = aFatherDO->childCount();
//aFatherDO->insertChild(suit_obj, pos);
aFatherDO->updateItem();
+ /* Define visibility state */
+ bool isComponent = dynamic_cast<SalomeApp_ModuleObject*>( suit_obj ) != 0;
+ if ( suit_obj && !isComponent ) {
+ 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 );
+ //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 );
}
break;
}
+ case 6: //NoteBook variables were modified
+ {
+ myStudy->onNoteBookVarUpdate( QString( theID.c_str() ) );
+ break;
+ }
default:MESSAGE("Unknown event: " << event);break;
} //switch
} //notifyObserverID_real
*/
SalomeApp_Study::~SalomeApp_Study()
{
+ if ( myObserver ) {
+ PortableServer::ObjectId_var oid = myObserver->_default_POA()->servant_to_id( myObserver );
+ myObserver->_default_POA()->deactivate_object( oid.in() );
+ }
+}
+
+void SalomeApp_Study::onNoteBookVarUpdate( QString theVarName)
+{
+ emit notebookVarUpdated( theVarName );
}
/*!
#endif
bool res = CAM_Study::openDocument( theStudyName );
+
+ //rnv: to fix the "0051779: TC7.2.0: Save operation works incorrectly for study loaded from data server"
+ // mark study as "not saved" after call openDocument( ... ) method.
+ setIsSaved(false);
emit opened( this );
bool restore = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true );
// Cast to LightApp class in order to give a chance
// to light modules to save their data
if ( LightApp_DataModel* aModel =
- dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
+ dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
listOfFiles.clear();
aModel->saveAs( theFileName, this, listOfFiles );
if ( !listOfFiles.isEmpty() )
// Cast to LightApp class in order to give a chance
// to light modules to save their data
if ( LightApp_DataModel* aModel =
- dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
+ dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
listOfFiles.clear();
aModel->save(listOfFiles);
if ( !listOfFiles.isEmpty() )
\return - true if the operation succeeds, and false otherwise.
*/
bool SalomeApp_Study::dump( const QString& theFileName,
- bool toPublish,
- bool isMultiFile,
- bool toSaveGUI )
+ bool toPublish,
+ bool isMultiFile,
+ bool toSaveGUI )
{
int savePoint;
_PTR(AttributeParameter) ap;
QStringList listOfFiles;
while ( it.hasNext() ) {
if ( LightApp_DataModel* aModel =
- dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
+ dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
listOfFiles.clear();
if ( aModel->dumpPython( theFileName, this, isMultiFile, listOfFiles ) &&
- !listOfFiles.isEmpty() )
- // This call simply passes the data model's dump output to SalomeApp_Engine servant.
- // This code is shared with persistence mechanism.
- // NOTE: this should be revised if behavior of saveModuleData() changes!
+ !listOfFiles.isEmpty() )
+ // This call simply passes the data model's dump output to SalomeApp_Engine servant.
+ // This code is shared with persistence mechanism.
+ // NOTE: this should be revised if behavior of saveModuleData() changes!
saveModuleData(aModel->module()->name(), listOfFiles);
}
}
// any light module is present in the current configuration
QFileInfo aFileInfo( theFileName );
bool res = aStudy->DumpStudy( aFileInfo.absolutePath().toUtf8().data(),
- aFileInfo.baseName().toUtf8().data(),
- toPublish,
- isMultiFile);
+ aFileInfo.baseName().toUtf8().data(),
+ toPublish,
+ isMultiFile);
if ( toSaveGUI )
removeSavePoint( savePoint ); //SRN: remove the created temporary save point.
\sa LightApp_Study class, LightApp_DataModel class
*/
CAM_ModuleObject* SalomeApp_Study::createModuleObject( LightApp_DataModel* theDataModel,
- SUIT_DataObject* theParent ) const
+ SUIT_DataObject* theParent ) const
{
SalomeApp_Study* that = const_cast<SalomeApp_Study*>( this );
// Set default engine IOR
// Issue 21377 - using separate engine for each type of light module
std::string anEngineIOR = SalomeApp_Engine_i::EngineIORForComponent( aCompDataType.c_str(),
- true );
+ true );
aBuilder->DefineComponentInstance(aComp, anEngineIOR);
//SalomeApp_DataModel::BuildTree( aComp, root(), this, /*skipExisitng=*/true );
SalomeApp_DataModel::synchronize( aComp, this );
Mark the study as saved in the file
\param theFileName - the name of file
*/
-void SalomeApp_Study::markAsSavedIn(QString theFileName)
+void SalomeApp_Study::updateFromNotebook( const QString& theFileName, bool isSaved )
{
setStudyName(theFileName);
- setIsSaved(true);
+ studyDS()->Name(theFileName.toStdString());
+ setIsSaved( isSaved );
}
LightApp_DataObject* SalomeApp_Study::findObjectByEntry( const QString& theEntry )