Version: 8.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
GroupGUI_GroupDlg.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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, or (at your option) any later version.
10 //
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.
15 //
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
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 // GEOM GEOMGUI : GUI for Geometry component
24 // File : GroupGUI_GroupDlg.h
25 // Author : Sergey ANIKIN, Open CASCADE S.A.S. (sergey.anikin@opencascade.com)
26 
27 #ifndef GROUPGUI_GROUPDLG_H
28 #define GROUPGUI_GROUPDLG_H
29 
30 #include <GEOMBase_Skeleton.h>
31 
32 #include <TopAbs_ShapeEnum.hxx>
33 #include <TColStd_DataMapOfIntegerInteger.hxx>
34 #include <TColStd_IndexedMapOfInteger.hxx>
35 
36 class QCheckBox;
37 class QComboBox;
38 class QPushButton;
39 class QGroupBox;
40 class QLineEdit;
41 class QListWidget;
42 class QButtonGroup;
43 class SalomeApp_DoubleSpinBox;
44 
45 //=================================================================================
46 // class : GroupGUI_GroupDlg
47 // purpose :
48 //=================================================================================
50 {
51  Q_OBJECT
52 
53 public:
54  typedef enum {
57  } Mode;
58 
59  GroupGUI_GroupDlg (Mode mode, GeometryGUI*, QWidget* parent = 0);
61 
62 protected:
63  // redefined from GEOMBase_Helper
64  virtual GEOM::GEOM_IOperations_ptr createOperation();
65  virtual bool isValid (QString&);
66  virtual bool execute (ObjectList&);
67  virtual GEOM::GEOM_Object_ptr getFather (GEOM::GEOM_Object_ptr);
68  virtual QList<GEOM::GeomObjPtr> getSourceObjects();
69 
70  void closeEvent (QCloseEvent*);
71 
72 private slots:
73  void ClickOnOk();
74  bool ClickOnApply();
75  void ActivateThisDialog();
76  void SelectionIntoArgument();
78  void ConstructorsClicked(int);
79 
80  void selectAllSubShapes();
81  void add();
82  void remove();
83  void showOnlySelected();
84  void selectionChanged();
85  void ClickOnOkFilter();
86 #ifndef DISABLE_PLOT2DVIEWER
87  void ClickOnPlot();
88 #endif
89  void MeasureToggled();
90 
91 private:
92  void Init();
93  void enterEvent (QEvent*);
94 
95  int subSelectionWay() const;
96  TopAbs_ShapeEnum getShapeType() const;
97  void setShapeType (const TopAbs_ShapeEnum);
98  void activateSelection();
99  void updateState (bool isAdd = false);
100  void highlightSubShapes();
101  void onGetInPlace();
102  void setInPlaceObj (GEOM::GEOM_Object_var, const bool isVisible=1);
103  int getSelectedSubshapes (TColStd_IndexedMapOfInteger& theMapIndex);
104 
105 private:
107  bool myBusy;
111  GEOM::GEOM_Object_var myMainObj;
112  GEOM::GEOM_Object_var myGroup;
113  GEOM::GEOM_Object_var myInPlaceObj;
115  TColStd_DataMapOfIntegerInteger myMain2InPlaceIndices;
116  QList<int> myGroupIdList;
117  int myDmMode;
119 
120  QPushButton* mySelBtn;
121  QLineEdit* myMainName;
122  QPushButton* mySelBtn2;
123  QLineEdit* myShape2Name;
125  QButtonGroup* myRestrictGroup;
126  QPushButton* mySelAllBtn;
127  QPushButton* myAddBtn;
128  QPushButton* myRemBtn;
129  QPushButton* myShowOnlyBtn;
130  QPushButton* myHideSelBtn;
131  QPushButton* myShowAllBtn;
133  QCheckBox* myLessFilterCheck;
135  QComboBox* myLessFilterCombo;
137  SalomeApp_DoubleSpinBox* myLessFilterSpin;
138  SalomeApp_DoubleSpinBox* myGreaterFilterSpin;
139  QPushButton* myApplyFilterButton;
142 };
143 
144 #endif