From 418f13af92963d718b604764e216634efdf87304 Mon Sep 17 00:00:00 2001 From: dmv Date: Fri, 11 Jan 2008 10:29:42 +0000 Subject: [PATCH] NPAL 13421 Default name for group from geometry --- src/SMESHGUI/SMESHGUI_GroupDlg.cxx | 44 ++++++++++++++++++++++++++++++ src/SMESHGUI/SMESHGUI_GroupDlg.h | 3 ++ 2 files changed, 47 insertions(+) diff --git a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx index 7e3633022..c03ce4fd5 100644 --- a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx @@ -90,6 +90,7 @@ // STL includes #include #include +#include using namespace std; @@ -416,6 +417,7 @@ void SMESHGUI_GroupDlg::initDialog(bool create) myTypeGroup->setButton(0); updateButtons(); + //myName->setText(GetDefaultName(tr("SMESH_GROUP"))); } //================================================================================= @@ -432,6 +434,42 @@ SMESHGUI_GroupDlg::~SMESHGUI_GroupDlg() } } +//================================================================================= +// function : GetDefaultName() +// purpose : Get the Group Name if Create new Group +//================================================================================= +QString SMESHGUI_GroupDlg::GetDefaultName(const QString& theOperation) +{ + QString aName = ""; + + // collect all object names of SMESH component + SalomeApp_Study* appStudy = + dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); + if ( !appStudy ) return aName; + _PTR(Study) aStudy = appStudy->studyDS(); + + std::set aSet; + _PTR(SComponent) aMeshCompo (aStudy->FindComponent("SMESH")); + if (aMeshCompo) { + _PTR(ChildIterator) it (aStudy->NewChildIterator(aMeshCompo)); + _PTR(SObject) obj; + for (it->InitEx(true); it->More(); it->Next()) { + obj = it->Value(); + aSet.insert(obj->GetName()); + } + } + + // build a unique name + int aNumber = 0; + bool isUnique = false; + while (!isUnique) { + aName = theOperation + "_" + QString::number(++aNumber); + isUnique = (aSet.count(aName.latin1()) == 0); + } + + return aName; +} + //================================================================================= // function : Init() // purpose : @@ -475,6 +513,7 @@ void SMESHGUI_GroupDlg::init (SMESH::SMESH_GroupBase_ptr theGroup) myName->setText(theGroup->GetName()); myName->home(false); + myOldName = myName->text(); SALOMEDS::Color aColor = theGroup->GetColor(); setGroupColor( aColor ); @@ -541,6 +580,7 @@ void SMESHGUI_GroupDlg::init (SMESH::SMESH_GroupBase_ptr theGroup) aShapeName = aGroupShapeSO->GetName().c_str(); } myGeomGroupLine->setText( aShapeName ); + myName->setText("Group On " + aShapeName); } } } @@ -601,6 +641,8 @@ void SMESHGUI_GroupDlg::onGrpTypeChanged (int id) { if (myGrpTypeId != id) { myWGStack->raiseWidget( id ); + if (id == 0) + myName->setText(myOldName); onSelectGeomGroup(id == 1); } myGrpTypeId = id; @@ -1115,6 +1157,8 @@ void SMESHGUI_GroupDlg::onObjectSelectionChanged() } myCurrentLineEdit->setText(aString); + myOldName = myName->text(); + myName->setText(aString); myCurrentLineEdit->home(false); updateButtons(); diff --git a/src/SMESHGUI/SMESHGUI_GroupDlg.h b/src/SMESHGUI/SMESHGUI_GroupDlg.h index 9fa0d1882..f5d9430b5 100644 --- a/src/SMESHGUI/SMESHGUI_GroupDlg.h +++ b/src/SMESHGUI/SMESHGUI_GroupDlg.h @@ -80,6 +80,8 @@ public: bool modal = FALSE, WFlags fl = 0 ); ~SMESHGUI_GroupDlg(); + static QString GetDefaultName(const QString& theOperation); + public slots: void onAdd(); @@ -152,6 +154,7 @@ private: QButtonGroup* myTypeGroup; QLineEdit* myName; + QString myOldName; QButtonGroup* myGrpTypeGroup; -- 2.39.2