1 // Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 // GEOM GEOMGUI : GUI for Geometry component
23 // File : EntityGUI_SubShapeDlg.cxx
24 // Author : Lucien PIGNOLONI, Open CASCADE S.A.S.
26 #include "EntityGUI_SubShapeDlg.h"
29 #include <GeometryGUI.h>
32 #include <OCCViewer_ViewModel.h>
33 #include <SVTK_ViewModel.h>
34 #include <SalomeApp_Study.h>
35 #include <SalomeApp_Application.h>
36 #include <LightApp_SelectionMgr.h>
37 #include <SALOME_ListIteratorOfListIO.hxx>
39 #include <SUIT_Desktop.h>
40 #include <SUIT_ResourceMgr.h>
41 #include <SUIT_Session.h>
42 #include <SUIT_ViewManager.h>
43 #include <SUIT_ViewWindow.h>
46 #include <TopExp_Explorer.hxx>
47 #include <TopoDS_Iterator.hxx>
48 #include <TopTools_MapOfShape.hxx>
49 #include <TopTools_IndexedMapOfShape.hxx>
51 #include <TColStd_IndexedMapOfInteger.hxx>
53 #include <QMessageBox>
55 #include <GEOMImpl_Types.hxx>
57 //=================================================================================
58 // class : EntityGUI_SubShapeDlg
59 // purpose : Constructs a EntityGUI_SubShapeDlg which is a child of 'parent', with the
60 // name 'name' and widget flags set to 'f'.
61 // The dialog will by default be modeless, unless you set 'modal' to
62 // TRUE to construct a modal dialog.
63 //=================================================================================
64 EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg(GeometryGUI* theGeometryGUI, QWidget* parent,
65 bool modal, Qt::WindowFlags fl)
66 : GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl)
68 QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_SUBSHAPE")));
69 QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT")));
71 setWindowTitle(tr("GEOM_SUBSHAPE_TITLE"));
73 /***************************************************************/
74 mainFrame()->GroupConstructors->setTitle(tr("GEOM_SUB_SHAPE"));
75 mainFrame()->RadioButton1->setIcon(image0);
76 mainFrame()->RadioButton2->setAttribute(Qt::WA_DeleteOnClose);
77 mainFrame()->RadioButton2->close();
78 mainFrame()->RadioButton3->setAttribute(Qt::WA_DeleteOnClose);
79 mainFrame()->RadioButton3->close();
81 GroupPoints = new DlgRef_1Sel1List1Check3Btn(centralWidget());
83 GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS"));
84 GroupPoints->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
85 GroupPoints->TextLabel2->setText(tr("GEOM_SUBSHAPE_TYPE"));
86 GroupPoints->CheckButton1->setText(tr("GEOM_SUBSHAPE_SELECT"));
87 GroupPoints->PushButton1->setIcon(image1);
88 GroupPoints->PushButton2->setText(tr("SHOW_ONLY_SELECTED"));
89 GroupPoints->PushButton3->setText(tr("HIDE_SELECTED"));
90 GroupPoints->PushButton4->setText(tr("SHOW_ALL_SUB_SHAPES"));
91 GroupPoints->LineEdit1->setReadOnly(true);
93 QVBoxLayout* layout = new QVBoxLayout(centralWidget());
94 layout->setMargin(0); layout->setSpacing(6);
95 layout->addWidget(GroupPoints);
96 /***************************************************************/
98 setIsOptimizedBrowsing(true);
100 setHelpFileName("create_explode_page.html");
102 mainFrame()->GroupBoxName->hide();
107 //=================================================================================
108 // function : ~EntityGUI_SubShapeDlg()
109 // purpose : Destroys the object and frees any allocated resources
110 //=================================================================================
111 EntityGUI_SubShapeDlg::~EntityGUI_SubShapeDlg()
115 //=================================================================================
118 //=================================================================================
119 void EntityGUI_SubShapeDlg::Init()
122 myEditCurrentArgument = GroupPoints->LineEdit1;
123 myObject = GEOM::GEOM_Object::_nil();
127 /* type for sub shape selection */
128 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Compound");
129 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Compsolid");
130 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Solid");
131 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Shell");
132 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Face");
133 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Wire");
134 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Edge");
135 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Vertex");
136 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Shape");
138 if (SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType()
139 != OCCViewer_Viewer::Type())
140 GroupPoints->CheckButton1->setEnabled(false);
142 /* signals and slots connections */
143 connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
145 connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk()));
146 connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));
148 connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
149 connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
151 connect(GroupPoints->ComboBox1, SIGNAL(activated(int)), this, SLOT(ComboTextChanged()));
152 connect(GroupPoints->CheckButton1, SIGNAL(stateChanged(int)), this, SLOT(SubShapeToggled()));
154 connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(showOnlySelected()));
155 connect(GroupPoints->PushButton3, SIGNAL(clicked()), this, SLOT(showOnlySelected()));
156 connect(GroupPoints->PushButton4, SIGNAL(clicked()), this, SLOT(showOnlySelected()));
158 connect(myGeomGUI->getApp()->selectionMgr(),
159 SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
163 SelectionIntoArgument();
166 //=================================================================================
167 // function : enterEvent()
169 //=================================================================================
170 void EntityGUI_SubShapeDlg::enterEvent(QEvent*)
172 if (!mainFrame()->GroupConstructors->isEnabled())
173 ActivateThisDialog();
176 //=================================================================================
177 // function : ActivateThisDialog()
179 //=================================================================================
180 void EntityGUI_SubShapeDlg::ActivateThisDialog()
182 GEOMBase_Skeleton::ActivateThisDialog();
183 connect(myGeomGUI->getApp()->selectionMgr(),
184 SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
189 //=================================================================================
190 //function : closeEvent
191 //purpose : remove temporary geom object
192 //=================================================================================
193 void EntityGUI_SubShapeDlg::closeEvent(QCloseEvent* e)
196 GEOMBase_Skeleton::closeEvent(e);
199 //=================================================================================
200 // function : ClickOnOk()
202 //=================================================================================
203 void EntityGUI_SubShapeDlg::ClickOnOk()
205 setIsApplyAndClose(true);
210 //=================================================================================
211 // function : ClickOnApply()
213 //=================================================================================
214 bool EntityGUI_SubShapeDlg::ClickOnApply()
216 SUIT_Session::session()->activeApplication()->putInfo("");
218 /* Explode all sub shapes */
219 if (isAllSubShapes()) {
220 /* More than 30 subshapes : ask confirmation */
221 unsigned int nb = NumberOfSubShapes(myShape, shapeType());
223 const QString caption = tr("GEOM_CONFIRM");
224 const QString text = tr("GEOM_CONFIRM_INFO").arg(nb);
225 const QString button0 = tr("GEOM_BUT_EXPLODE");
226 const QString button1 = tr("GEOM_BUT_CANCEL");
228 if (QMessageBox::warning(this, caption, text, button0, button1) != 0)
229 return false; /* aborted */
233 bool isOk = onAccept();
235 // restore selection, corresponding to current selection mode
241 //=================================================================================
242 // function : SelectionIntoArgument()
243 // purpose : Called when selection has changed or other case
244 //=================================================================================
245 void EntityGUI_SubShapeDlg::SelectionIntoArgument()
247 if (!isAllSubShapes())
250 ResetStateOfDialog();
252 QString aString = ""; /* name of selection */
254 LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
255 SALOME_ListIO aSelList;
256 aSelMgr->selectedObjects(aSelList);
258 int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString, true);
262 Handle(SALOME_InteractiveObject) IO = aSelList.First();
263 if (!IO->hasEntry()) {
264 SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_SHAPE_IN_STUDY"));
269 TopoDS_Shape S = GEOMBase::GetTopoFromSelection(aSelList);
270 if (S.IsNull() || S.ShapeType() == TopAbs_VERTEX) {
271 myObject = GEOM::GEOM_Object::_nil();
276 myObject = GEOMBase::ConvertIOinGEOMObject(IO);
277 if (myObject->_is_nil()) {
283 GroupPoints->LineEdit1->setText(aString);
285 int SelectedShapeType = GroupPoints->ComboBox1->currentIndex();
286 int count = GroupPoints->ComboBox1->count();
293 if (myShape.ShapeType() == TopAbs_COMPOUND) {
294 unsigned int nb = NumberOfSubShapes(myShape, TopAbs_COMPOUND);
298 while (i <= myShape.ShapeType()) {
299 GroupPoints->ComboBox1->removeItem(0);
303 if (myShape.ShapeType() == TopAbs_COMPOUND) {
304 if (myWithShape == false) {
305 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Shape");
310 if (myWithShape == true) {
311 GroupPoints->ComboBox1->removeItem(GroupPoints->ComboBox1->count() - 1);
316 int count1 = GroupPoints->ComboBox1->count();
320 if (SelectedShapeType > myShape.ShapeType()) {
321 if (SelectedShapeType == 8) {
322 if (myShape.ShapeType() != TopAbs_COMPOUND) {
323 GroupPoints->ComboBox1->setCurrentIndex(0);
328 GroupPoints->ComboBox1->setCurrentIndex(count1 - count + SelectedShapeType);
331 GroupPoints->ComboBox1->setCurrentIndex(0);
338 //=================================================================================
339 // function : SetEditCurrentArgument()
341 //=================================================================================
342 void EntityGUI_SubShapeDlg::SetEditCurrentArgument()
344 GroupPoints->LineEdit1->setFocus();
345 myEditCurrentArgument = GroupPoints->LineEdit1;
347 GroupPoints->CheckButton1->setChecked(false);
349 SelectionIntoArgument();
352 //=================================================================================
353 // function : LineEditReturnPressed()
355 //=================================================================================
356 void EntityGUI_SubShapeDlg::LineEditReturnPressed()
358 QLineEdit* send = (QLineEdit*)sender();
359 if (send == GroupPoints->LineEdit1)
360 SetEditCurrentArgument();
364 GEOMBase_Skeleton::LineEditReturnPressed();
367 //=================================================================================
368 // function : ResetStateOfDialog()
369 // purpose : Completely reset the state of method including local context
370 //=================================================================================
371 void EntityGUI_SubShapeDlg::ResetStateOfDialog()
373 myObject = GEOM::GEOM_Object::_nil();
375 myEditCurrentArgument->setText("");
377 int SelectedShapeType = GroupPoints->ComboBox1->currentIndex();
378 int count = GroupPoints->ComboBox1->count();
382 /* type for sub shape selection */
383 GroupPoints->ComboBox1->clear();
384 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Compound");
385 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Compsolid");
386 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Solid");
387 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Shell");
388 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Face");
389 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Wire");
390 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Edge");
391 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Vertex");
392 GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Shape");
396 GroupPoints->ComboBox1->setCurrentIndex(8 - count + SelectedShapeType);
402 //=================================================================================
403 // function : SubShapeToggled()
404 // purpose : Allow user selection of all or only selected sub shapes
405 // : Called when 'CheckButton1' state change
406 //=================================================================================
407 void EntityGUI_SubShapeDlg::SubShapeToggled()
412 //=================================================================================
413 // function : ComboTextChanged()
415 //=================================================================================
416 void EntityGUI_SubShapeDlg::ComboTextChanged()
418 /* Select sub shapes mode not checked */
423 //=================================================================================
424 // function : NumberOfSubShapes()
426 //=================================================================================
427 unsigned int EntityGUI_SubShapeDlg::NumberOfSubShapes(const TopoDS_Shape& S,
428 const int shapeType) const
433 unsigned int index = 0;
434 TopTools_MapOfShape M;
436 if (S.ShapeType() == TopAbs_COMPOUND &&
437 (TopAbs_ShapeEnum(shapeType) == TopAbs_SHAPE ||
438 TopAbs_ShapeEnum(shapeType) == TopAbs_COMPSOLID ||
439 TopAbs_ShapeEnum(shapeType) == TopAbs_COMPOUND)) {
440 TopoDS_Iterator It(S, Standard_True, Standard_True);
441 for (; It.More(); It.Next()) {
442 if (M.Add(It.Value())) {
443 if (TopAbs_ShapeEnum(shapeType) == TopAbs_SHAPE ||
444 TopAbs_ShapeEnum(shapeType) == It.Value().ShapeType()) {
451 TopExp_Explorer Exp (S, TopAbs_ShapeEnum(shapeType));
452 for (; Exp.More(); Exp.Next()) {
453 if (M.Add(Exp.Current())) {
463 //=================================================================================
464 // function : updateButtonState
466 //=================================================================================
467 void EntityGUI_SubShapeDlg::updateButtonState()
469 if (SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() != OCCViewer_Viewer::Type() ||
470 myObject->_is_nil() || shapeType() == TopAbs_SHAPE || shapeType() == TopAbs_COMPOUND) {
471 GroupPoints->CheckButton1->setChecked(false);
472 GroupPoints->CheckButton1->setEnabled(false);
475 GroupPoints->CheckButton1->setEnabled(true);
478 //=================================================================================
479 // function : isAllSubShapes
481 //=================================================================================
482 bool EntityGUI_SubShapeDlg::isAllSubShapes() const
484 return !GroupPoints->CheckButton1->isChecked() || !GroupPoints->CheckButton1->isEnabled();
487 //=================================================================================
488 // function : shapeType
490 //=================================================================================
491 int EntityGUI_SubShapeDlg::shapeType() const
493 int type = GroupPoints->ComboBox1->currentIndex();
495 if (myObject->_is_nil())
499 type += myShape.ShapeType() + 1;
500 if (myShape.ShapeType() == TopAbs_COMPOUND &&
501 NumberOfSubShapes(myShape, TopAbs_COMPOUND) > 0) {
508 //=================================================================================
509 // function : showOnlySelected
511 //=================================================================================
512 void EntityGUI_SubShapeDlg::showOnlySelected()
514 if (CORBA::is_nil(myObject) || isAllSubShapes())
517 QPushButton* send = (QPushButton*)sender();
518 if (send == GroupPoints->PushButton4) {
523 LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
524 SALOME_ListIO aSelList;
525 aSelMgr->selectedObjects(aSelList);
527 GEOM_Displayer* aDisplayer = getDisplayer();
529 if (send == GroupPoints->PushButton3) {
530 aDisplayer->Erase(aSelList, false, true);
533 aDisplayer->EraseAll();
534 aDisplayer->Display(aSelList, true);
538 //=================================================================================
539 // function : getSelectedSubshapes
541 //=================================================================================
542 int EntityGUI_SubShapeDlg::getSelectedSubshapes (TColStd_IndexedMapOfInteger& theMapIndex)
546 SalomeApp_Application* app = myGeomGUI->getApp();
547 if (!app || myObject->_is_nil())
550 LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
551 SALOME_ListIO aSelList;
552 aSelMgr->selectedObjects(aSelList);
554 // try to find out and process the global selection
555 // (of not published objects and of published sub-shapes)
557 SALOME_ListIteratorOfListIO anIter (aSelList);
558 for (int i = 0; anIter.More(); anIter.Next(), i++)
560 Handle(SALOME_InteractiveObject) anIObj = anIter.Value();
561 QString anEntry = anIObj->getEntry();
563 int index = anEntry.lastIndexOf(str);
564 if (index > 0) // selection among special preview
566 anEntry.remove(0, index+1);
567 int anIndex = anEntry.toInt();
569 theMapIndex.Add(anIndex);
571 else // selection among published shapes
573 SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
574 if (!appStudy) return 0;
575 _PTR(Study) aStudy = appStudy->studyDS();
577 _PTR(SObject) aSObj (aStudy->FindObjectID(anEntry.toLatin1().constData()));
578 GEOM::GEOM_Object_var aGeomObj =
579 GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObj));
581 if (GEOMBase::GetShape(aGeomObj, aShape)) {
582 if (aGeomObj->GetType() == GEOM_GROUP || aShape.ShapeType() == (TopAbs_ShapeEnum)shapeType()) {
583 TopTools_IndexedMapOfShape aMainMap;
584 TopExp::MapShapes(myShape, aMainMap);
586 TopExp_Explorer anExp (aShape, (TopAbs_ShapeEnum)shapeType());
587 for (; anExp.More(); anExp.Next()) {
588 TopoDS_Shape aSubShape = anExp.Current();
589 int anIndex = aMainMap.FindIndex(aSubShape);
591 theMapIndex.Add(anIndex);
600 return theMapIndex.Extent();
603 //=================================================================================
604 // function : activateSelection
605 // purpose : Activate selection in accordance with myEditCurrentArgument
606 //=================================================================================
607 void EntityGUI_SubShapeDlg::activateSelection()
612 if (!myObject->_is_nil() && !isAllSubShapes())
614 GEOM_Displayer* aDisplayer = getDisplayer();
615 int prevDisplayMode = aDisplayer->SetDisplayMode(0);
617 SUIT_ViewWindow* aViewWindow = 0;
618 SUIT_Study* activeStudy = SUIT_Session::session()->activeApplication()->activeStudy();
620 aViewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
621 if (aViewWindow == 0) return;
623 SUIT_ViewManager* aViewManager = aViewWindow->getViewManager();
624 if (aViewManager->getType() != OCCViewer_Viewer::Type() &&
625 aViewManager->getType() != SVTK_Viewer::Type())
628 SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
629 SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
630 if (aView == 0) return;
632 //TopoDS_Shape aMainShape = GEOM_Client::get_client().GetShape(GeometryGUI::GetGeomGen(), myObject);
634 TopTools_IndexedMapOfShape aSubShapesMap;
635 TopExp::MapShapes(myShape, aSubShapesMap);
636 CORBA::String_var aMainEntry = myObject->GetStudyEntry();
637 QString anEntryBase = aMainEntry.in();
639 TopExp_Explorer anExp (myShape, (TopAbs_ShapeEnum)shapeType());
640 for (; anExp.More(); anExp.Next())
642 TopoDS_Shape aSubShape = anExp.Current();
643 int index = aSubShapesMap.FindIndex(aSubShape);
644 QString anEntry = anEntryBase + QString("_%1").arg(index);
646 SALOME_Prs* aPrs = aDisplayer->buildSubshapePresentation(aSubShape, anEntry, aView);
648 displayPreview(aPrs, true, false); // append, do not update
651 aDisplayer->UpdateViewer();
652 aDisplayer->SetDisplayMode(prevDisplayMode);
655 globalSelection(GEOM_ALLSHAPES);
658 //=================================================================================
659 // function : createOperation
661 //=================================================================================
662 GEOM::GEOM_IOperations_ptr EntityGUI_SubShapeDlg::createOperation()
664 return getGeomEngine()->GetIShapesOperations(getStudyId());
667 //=================================================================================
668 // function : isValid
670 //=================================================================================
671 bool EntityGUI_SubShapeDlg::isValid (QString& msg)
675 if (myObject->_is_nil()) {
680 if (isAllSubShapes())
683 TColStd_IndexedMapOfInteger aMapIndex;
684 int nbSel = getSelectedSubshapes(aMapIndex);
688 msg += tr("NO_SUBSHAPES_SELECTED");
694 //=================================================================================
695 // function : execute
697 //=================================================================================
698 bool EntityGUI_SubShapeDlg::execute (ObjectList& objects)
700 GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow(getOperation());
701 GEOM::ListOfGO_var aList = anOper->ExtractSubShapes(myObject, shapeType(), true);
703 if (!aList->length())
706 // Throw away sub-shapes not selected by user if not in preview mode
707 // and manual selection is active
708 if (!isAllSubShapes()) {
709 TColStd_IndexedMapOfInteger aMapIndex;
710 int nbSel = getSelectedSubshapes(aMapIndex);
713 GEOM::GEOM_ILocalOperations_var aLocOp =
714 getGeomEngine()->GetILocalOperations(getStudyId());
716 for (int i = 0, n = aList->length(); i < n; i++)
717 if (aMapIndex.Contains(aLocOp->GetSubShapeIndex(myObject, aList[i])))
718 objects.push_back(GEOM::GEOM_Object::_duplicate(aList[i]));
720 aList[i]->UnRegister();
724 for (int i = 0, n = aList->length(); i < n; i++)
725 objects.push_back(GEOM::GEOM_Object::_duplicate(aList[i]));
727 return objects.size();
730 //================================================================
731 // Function : getFather
732 // Purpose : Get father object for object to be added in study
733 // (called with addInStudy method)
734 //================================================================
735 GEOM::GEOM_Object_ptr EntityGUI_SubShapeDlg::getFather(GEOM::GEOM_Object_ptr)
740 //================================================================
741 // Function : getNewObjectName
743 //================================================================
744 QString EntityGUI_SubShapeDlg::getNewObjectName() const
746 return QString::null;