]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
0020632: EDF 1173 GEOM : Extrusion with multiple selection
authorvsr <vsr@opencascade.com>
Thu, 18 Feb 2010 11:02:56 +0000 (11:02 +0000)
committervsr <vsr@opencascade.com>
Thu, 18 Feb 2010 11:02:56 +0000 (11:02 +0000)
Additional changes (to set object name in the dialog boxes properly)

src/GEOMBase/GEOMBase.cxx
src/GEOMBase/GEOMBase.h
src/GEOMBase/GEOMBase_Helper.cxx
src/GEOMBase/GEOMBase_Helper.h

index 455cb6875b5eae66cdf2e6e129601882385e7683..d11495fe4c33599e161e9b190d35ac517cc02787 100644 (file)
@@ -806,7 +806,7 @@ bool GEOMBase::DefineDlgPosition(QWidget* aDlg, int& x, int& y)
 // function : GetDefaultName()
 // purpose  : Generates default names
 //=======================================================================
-QString GEOMBase::GetDefaultName(const QString& theOperation)
+QString GEOMBase::GetDefaultName(const QString& theOperation, const bool extractPrefix)
 {
   QString aName = "";
 
@@ -830,8 +830,23 @@ QString GEOMBase::GetDefaultName(const QString& theOperation)
   // build a unique name
   int aNumber = 0;
   bool isUnique = false;
+  QString prefix = theOperation;
+
+  if ( extractPrefix ) {
+    QStringList parts = prefix.split( "_", QString::KeepEmptyParts );
+    if ( parts.count() > 1 ) {
+      bool ok;
+      aNumber = parts.last().toLong(&ok);
+      if ( ok ) {
+       parts.removeLast();
+       prefix = parts.join( "_" );
+       aNumber--;
+      }
+    }
+  }
+
   while (!isUnique) {
-    aName = theOperation + "_" + QString::number(++aNumber);
+    aName = prefix + "_" + QString::number(++aNumber);
     isUnique = (aSet.count(aName.toStdString()) == 0);
   }
 
index 33c4b15a0a2a51c10b3b2633e9364c92ce8497fd..b27bc0136cf2e4e10435542714a5db6944360509 100644 (file)
@@ -108,7 +108,8 @@ public :
   static bool DefineDlgPosition(QWidget* aDlg, int& x, int& y);
 
   /* This method generates default names for results of geometrical operations */
-  static QString GetDefaultName(const QString& theOperation);   
+  static QString GetDefaultName(const QString& theOperation, const bool extractPrefix = false);
+
   /* Shows message box with error code and comment */
   static void ShowErrorMessage(const char* theErrorCode, const char* theComment = 0);
 
index c17facd8243486146c5e55469b687fd04c15debd..3db5e784436eb7e1868ea96f3304fa187d40ac93 100755 (executable)
@@ -824,7 +824,7 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction )
                 aName = getPrefix(obj);
               if (nbObjs <= 30) {
                 // Try to find a unique name
-                aName = GEOMBase::GetDefaultName(aName);
+                aName = GEOMBase::GetDefaultName(aName, extractPrefix());
               } else {
                 // Don't check name uniqueness in case of numerous objects
                 aName = aName + "_" + QString::number(aNumber++);
@@ -959,6 +959,17 @@ QString GEOMBase_Helper::getNewObjectName() const
   return QString::null;
 }
 
+//================================================================
+// Function : extractPrefix
+// Purpose  : Redefine this method to return \c true if necessary 
+//            to extract prefix when generating new name for the
+//            object(s) being created
+//================================================================
+bool GEOMBase_Helper::extractPrefix() const
+{
+  return false;
+}
+
 //================================================================
 // Function : getPrefix
 // Purpose  : Get prefix for name of created object
index 42a7cc4cb70f48eb0036fe53d84fcf7aa526f099..d88621ea6f82612d1b3fddc7a416e93b9e7d09d3 100755 (executable)
@@ -161,6 +161,7 @@ protected:
   // as a top-level object.
 
   virtual QString getNewObjectName() const; 
+  virtual bool extractPrefix() const;
   virtual void addSubshapesToStudy();
 
   GEOM::GEOM_Object_ptr findObjectInFather( GEOM::GEOM_Object_ptr theFather, const QString& theName );