Salome HOME
Forbid renaming of the objects "in place" by default.
authorrnv <rnv@opencascade.com>
Wed, 7 Mar 2012 11:38:38 +0000 (11:38 +0000)
committerrnv <rnv@opencascade.com>
Wed, 7 Mar 2012 11:38:38 +0000 (11:38 +0000)
src/GEOMGUI/GeometryGUI.cxx
src/GEOMGUI/GeometryGUI.h

index 2b649768629c7a70260b41d6e050e5aea321c5c3..09aa1abf1c776624b53af80092835db8c370a201 100644 (file)
@@ -2179,6 +2179,25 @@ void GeometryGUI::onViewAboutToShow()
   }
 }
 
+/*!
+  \brief Check if this object is can't be renamed in place
+
+  This method can be re-implemented in the subclasses.
+  Return true in case if object isn't reference or component (module root).
+
+  \param id column id
+  \return \c true if the item can be renamed by the user in place (e.g. in the Object browser)
+*/
+bool GeometryGUI::renameAllowed( const QString& entry) const {
+
+  SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+  SalomeApp_Study* appStudy = app ? dynamic_cast<SalomeApp_Study*>( app->activeStudy() ) : 0; 
+  SalomeApp_DataObject* obj = appStudy ? dynamic_cast<SalomeApp_DataObject*>(appStudy->findObjectByEntry(entry)) : 0;
+  
+  return (app && appStudy && obj && !appStudy->isComponent(entry) && !obj->isReference());
+}
+
+
 /*!
   Rename object by entry.
   \param entry entry of the object
@@ -2186,24 +2205,26 @@ void GeometryGUI::onViewAboutToShow()
   \brief Return \c true if rename operation finished successfully, \c false otherwise.
 */
 bool GeometryGUI::renameObject( const QString& entry, const QString& name) {
-
-  bool appRes = SalomeApp_Module::renameObject(entry,name);
-  if( !appRes )
-    return false;
-
+  
   bool result = false;
-
+  
   SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication());
   SalomeApp_Study* appStudy = app ? dynamic_cast<SalomeApp_Study*>( app->activeStudy() ) : 0;
-
+  
   if(!appStudy)
     return result;
-
+  
   _PTR(Study) aStudy = appStudy->studyDS();
-
+  
   if(!aStudy)
     return result;
 
+  bool aLocked = (_PTR(AttributeStudyProperties)(appStudy->studyDS()->GetProperties()))->IsLocked();
+  if ( aLocked ) {
+    SUIT_MessageBox::warning ( app->desktop(), QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED") );
+    return result;
+  }
+
   _PTR(SObject) obj ( aStudy->FindObjectID(qPrintable(entry)) );
   _PTR(GenericAttribute) anAttr;
   if ( obj ) {
@@ -2220,3 +2241,4 @@ bool GeometryGUI::renameObject( const QString& entry, const QString& name) {
   }
   return result;
 }
+
index 406120e937773f2a8b4ea30a0336910798e954e6..b584fd7e32e07685154aada5ed31f0019fed5813 100644 (file)
@@ -117,6 +117,7 @@ public:
   void                        ActiveWorkingPlane();
 
   virtual bool                renameObject( const QString&, const QString& );
+  virtual bool                renameAllowed( const QString& ) const;
 
   virtual void                windows( QMap<int, int>& ) const;
   virtual void                viewManagers( QStringList& ) const;