From 205001b2a059a58d6d8bcf43d30bc281a516c131 Mon Sep 17 00:00:00 2001 From: rnv Date: Wed, 7 Mar 2012 11:38:38 +0000 Subject: [PATCH] Forbid renaming of the objects "in place" by default. --- src/GEOMGUI/GeometryGUI.cxx | 40 ++++++++++++++++++++++++++++--------- src/GEOMGUI/GeometryGUI.h | 1 + 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/GEOMGUI/GeometryGUI.cxx b/src/GEOMGUI/GeometryGUI.cxx index 2b6497686..09aa1abf1 100644 --- a/src/GEOMGUI/GeometryGUI.cxx +++ b/src/GEOMGUI/GeometryGUI.cxx @@ -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( app->activeStudy() ) : 0; + SalomeApp_DataObject* obj = appStudy ? dynamic_cast(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( 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; } + diff --git a/src/GEOMGUI/GeometryGUI.h b/src/GEOMGUI/GeometryGUI.h index 406120e93..b584fd7e3 100644 --- a/src/GEOMGUI/GeometryGUI.h +++ b/src/GEOMGUI/GeometryGUI.h @@ -117,6 +117,7 @@ public: void ActiveWorkingPlane(); virtual bool renameObject( const QString&, const QString& ); + virtual bool renameAllowed( const QString& ) const; virtual void windows( QMap& ) const; virtual void viewManagers( QStringList& ) const;