]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
CCAR: change autoupdate mode to false and add a _modified flag to DataObject
authorcaremoli <caremoli>
Mon, 21 Jun 2010 15:05:36 +0000 (15:05 +0000)
committercaremoli <caremoli>
Mon, 21 Jun 2010 15:05:36 +0000 (15:05 +0000)
to known if DataObject has been modified when doing synchronize between DataObject and TreeItem

src/LightApp/LightApp_Application.cxx
src/LightApp/LightApp_Module.cxx
src/SUIT/SUIT_DataObject.cxx
src/SUIT/SUIT_DataObject.h
src/SUIT/SUIT_TreeModel.cxx
src/SalomeApp/SalomeApp_Application.cxx
src/SalomeApp/SalomeApp_DataObject.cxx
src/SalomeApp/SalomeApp_Study.cxx

index a429da3737f9a09ec265acd6e69359b4a457e8a6..2de22f06c8803ae2b88ed537c2d88b20a44f9769 100644 (file)
@@ -1239,11 +1239,11 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels )
       objectBrowser()->setAutoUpdate( isAutoUpdate );
   }
 
+  */
   if ( objectBrowser() ) {
     objectBrowser()->updateGeometry();
     objectBrowser()->updateTree( 0, false );
   }
-  */
 }
 
 /*!
index 1702acc3f697d8c15068474b484710e7921f3137..db9af4287f9a19a4d0614517d378a8e4766e7919 100644 (file)
@@ -169,8 +169,8 @@ void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel,
   }
 
   getApp()->objectBrowser()->setAutoUpdate( upd );
-  getApp()->objectBrowser()->updateTree( 0, false );
 */
+  getApp()->objectBrowser()->updateTree( 0, false );
 }
 
 /*!NOT IMPLEMENTED*/
index 0e86e46ac0aee15a12b01b407927590d8477246f..93afce80929ce9ee440b546509bedde9a338677f 100755 (executable)
@@ -887,6 +887,7 @@ void SUIT_DataObject::Signal::deleteLater( SUIT_DataObject* object )
 
 void SUIT_DataObject::updateItem()
 {
+  setModified(true);
   signal()->emitUpdated(this);
 }
 
index 7066b8686e160281e5fabbb1b72d593fdbd7164a..2636925424a40e54aad5c9bb327633588ec87d00 100755 (executable)
@@ -124,6 +124,9 @@ public:
   virtual bool                customSorting( const int = NameId ) const;
   virtual bool                compare( const QVariant&, const QVariant&, const int = NameId ) const;
 
+  bool                        modified(){return _modified;};
+  void                        setModified(bool modified){_modified = modified;};
+
   virtual SUIT_DataObjectKey* key() const;
   virtual int groupId() const;
 
@@ -141,6 +144,7 @@ private:
   bool                        myCheck;
   bool                        myAutoDel;
   DataObjectList              myChildren;
+  bool                        _modified;
 
   static Signal*              mySignal;
 
index b0c56c4981a72dc313f810aa48103953ffbf8a74..6d318774f5f3d7a929e3a6ab9b8b469da92c6337 100755 (executable)
 #include <QApplication>
 #include <QHash>
 
+#include <sys/time.h>
+static long tt0;
+static long tcount=0;
+static long cumul;
+static timeval tv;
+#define START_TIMING gettimeofday(&tv,0);tt0=tv.tv_usec+tv.tv_sec*1000000;
+#define END_TIMING(NUMBER) \
+      tcount=tcount+1;gettimeofday(&tv,0);cumul=cumul+tv.tv_usec+tv.tv_sec*1000000 -tt0; \
+  if(tcount==NUMBER){ std::cerr <<pthread_self()<<":"<<__FILE__<<":"<<__LINE__<<" temps CPU(mus): "<<cumul<< std::endl; tcount=0;cumul=0; }
+
+
 SUIT_AbstractModel::SUIT_AbstractModel()
 {
 }
@@ -396,6 +407,7 @@ bool SUIT_TreeModel::TreeSync::needUpdate( const ItemPtr& item ) const
       // - use "LastModified" time stamp in data objects and tree items - hardly possible, for sometimes data objects do not know that data changes...
       // ...
       update = true; // TEMPORARY!!!
+      update = obj->modified();
       // 1. check text
 /*      update = ( item->text( 0 ) != obj->name() ) || myBrowser->needToUpdateTexts( item );
 
@@ -1091,6 +1103,9 @@ void SUIT_TreeModel::updateTree( const QModelIndex& index )
 */
 void SUIT_TreeModel::updateTree( SUIT_DataObject* obj )
 {
+  if(myAutoUpdate)
+    return;
+
   if ( !obj )
     obj = root();
 
@@ -1207,6 +1222,8 @@ SUIT_TreeModel::TreeItem* SUIT_TreeModel::createItem( SUIT_DataObject* obj,
 
   endInsertRows();
 
+  obj->setModified(false);
+
   return myItems[ obj ];
 }
 
@@ -1236,6 +1253,7 @@ void SUIT_TreeModel::updateItem( SUIT_TreeModel::TreeItem* item )
   QModelIndex firstIdx = index( obj, 0 );
   QModelIndex lastIdx  = index( obj, columnCount() - 1 );
   emit dataChanged( firstIdx, lastIdx );
+  obj->setModified(false);
 }
 
 /*!
@@ -1252,6 +1270,7 @@ void SUIT_TreeModel::updateItem( SUIT_DataObject* obj)
   QModelIndex firstIdx = index( obj, 0 );
   QModelIndex lastIdx  = index( obj, columnCount() - 1 );
   emit dataChanged( firstIdx, lastIdx );
+  obj->setModified(false);
 }
 
 
index 8ffd6a93b6562111dce3ec3240e1baaee319e0fc..215abb3448fc30cf3cebabdc86e4d67c95896b83 100644 (file)
@@ -832,6 +832,8 @@ QWidget* SalomeApp_Application::createWindow( const int flag )
       // temporary commented
       //ob->setUpdater( new SalomeApp_Updater() );
 
+      ob->setAutoUpdate(false);
+
       connect( ob, SIGNAL( doubleClicked( SUIT_DataObject* ) ), this, SLOT( onDblClick( SUIT_DataObject* ) ) );
 
       QString
@@ -1245,11 +1247,10 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QMenu* thePop
 void SalomeApp_Application::updateObjectBrowser( const bool updateModels )
 {
   //MESSAGE("UpdateObjBrowser");
-  return;
-
 
   // update "non-existing" (not loaded yet) data models
   SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
+/*
   if ( study )
   {
     _PTR(Study) stdDS = study->studyDS();
@@ -1271,7 +1272,7 @@ void SalomeApp_Application::updateObjectBrowser( const bool updateModels )
       }
     }
   }
-
+*/
   // create data objects that correspond to GUI state save points
   if ( study ) updateSavePointDataObjects( study );
 
index a72b72cdec7b1da5e50af980082a34955791b3f2..0d0a5048a0006b42c0e46880dc30d3a2f86d0689 100644 (file)
 #include <QObject>
 #include <QVariant>
 
+#include <sys/time.h>
+static long tt0;
+static long tcount=0;
+static long cumul;
+static timeval tv;
+#define START_TIMING gettimeofday(&tv,0);tt0=tv.tv_usec+tv.tv_sec*1000000;
+#define END_TIMING(NUMBER) \
+  tcount=tcount+1;gettimeofday(&tv,0);cumul=cumul+tv.tv_usec+tv.tv_sec*1000000 -tt0; \
+  if(tcount==NUMBER){ std::cerr << __FILE__ << __LINE__ << " temps CPU(mus): " << cumul << std::endl; tcount=0;cumul=0; }
+
+
 /*!
   \class SalomeApp_DataObject
   \brief Implementation of the data object for use in CORBA-based
index 14270610c9d735c004a661add4348c3b1dd7203e..9fc945d6157ab15ebb0fe5eff9f982f9ec0b2b14 100644 (file)
@@ -69,7 +69,7 @@ class Observer_i : public virtual POA_SALOME::Observer
 
     virtual void notifyObserver(const char* theID, const char* event)
     {
-      START_TIMING;
+      //START_TIMING;
 
       //MESSAGE("I'm notified of " << event << " of ID =  " << theID);
       _PTR(SObject) obj = myStudyDS->FindObjectID( theID );
@@ -169,7 +169,7 @@ class Observer_i : public virtual POA_SALOME::Observer
             MESSAGE("Want to modify an unknown object"  << theID);
           }
       }
-      END_TIMING(200);
+      //END_TIMING(10);
     }
 
   private: