Version: 9.16.0
MeasureGUI_CreateDimensionDlg.h
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, 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 : MeasureGUI_CreateDimensionDlg.h
25// Author : Anton POLETAEV, Open CASCADE S.A.S.
26//
27#ifndef MEASUREGUI_CREATEDIMENSIONDLG_H
28#define MEASUREGUI_CREATEDIMENSIONDLG_H
29
30#include "MeasureGUI_Widgets.h"
32
33// GEOM includes
34#include <GEOMBase_Skeleton.h>
35#include <GEOM_GenericObjPtr.h>
36
37// SUIT includes
38#include <SOCC_ViewModel.h>
39
40// OCCT includes
41#include <AIS_Dimension.hxx>
42#include <gp_Pnt.hxx>
43
47class QAbstractButton;
48class QTabWidget;
49class Bnd_Box;
50class SOCC_Prs;
51
52//=================================================================================
53// class : MeasureGUI_CreateDimensionDlg
54// purpose : Dialog invoked from MeasureGUI_ManageDimensionDlg for
55// creating dimension presentations for the passed onwer object.
56// Does not use operation logics.
57//=================================================================================
59{
60 Q_OBJECT
61
62 class BaseSelectorPane;
63 class LengthPane;
64 class DiameterPane;
65 class AnglePane;
66
67public:
68 // Enumerate dimension type radio buttons
70 {
74 };
75
76public:
79
80public:
81 Handle(AIS_Dimension) GetCreatedDimension() { return myDimension; }
82
83public:
84 void Init();
85
86
87signals:
89
90/* User event logics */
91protected slots:
92 void ConstructTypeChanged( int theType );
94 void OnStartSelection( const QList<TopAbs_ShapeEnum>& theModes );
95 void OnStopSelection();
97 void OnSelectionDone();
98 void ClickOnOk();
99 bool ClickOnApply();
100
101/* Commands */
102protected:
103 void StartLocalEditing();
104 void StopLocalEditing();
105
106/* Construction of preview and interaction */
107protected:
108 Handle(AIS_Dimension) CreateDimension();
110 bool AddDimensionToOwner();
111
112private:
114
115private:
116 QString GenerateName( const QString& thePrefix );
117
118private:
123 QList<TopAbs_ShapeEnum> mySelectionModes;
125 Handle(AIS_Dimension) myDimension;
126 SOCC_Viewer* myEditingViewer;
128};
129
130//=================================================================================
131// class : MeasureGUI_CreateDimensionDlg::BaseSelectorPane
132// purpose : Base selector pane handles events of switching the selector controls
133// and changing argument tabs
134//=================================================================================
136{
137 Q_OBJECT
138
139public:
140 typedef QList<TopAbs_ShapeEnum> SelectionModes;
141
142public:
143 BaseSelectorPane( QWidget* theParent );
144
145signals:
146 void StartSelection( const QList<TopAbs_ShapeEnum>& theModes );
150
151public:
152 void Reset( bool theOpenDefaultTab = false );
153 int ActiveTab() const;
154 void SelectionIntoArguments( const GEOM::GeomObjPtr& theSelected );
155 GEOM::GeomObjPtr GetSelection( QLineEdit* theSelector ) const;
156
157public slots:
158 void OnSelectorClicked();
159 void OnTabChanged();
160
161protected:
162 void SetTabWidget( QTabWidget* theTabs );
163
164 /* Register geometry selector controls at base level to provide
165 automatic handling of button clicks, selector switching and
166 sending start selection events to dialog.
167 - theSelectorEdit : line edit control with selected geometry name.
168 - theSelectorButton: selector activation button.
169 - theSelectorModes : shape selection modes allowed for the selection.
170 - theTab : the tab index on which the controls are located. */
171 void RegisterSelector( QLineEdit* theSelectorEdit,
172 QPushButton* theSelectorButton,
173 const SelectionModes& theSelectorModes,
174 const int theTab = 0 );
175
176protected:
177 QTabWidget* myTabs;
178 QMap< int, QList<QLineEdit*> > mySelectors;
179 QMap<QLineEdit*, QPushButton*> mySelectionButtons;
180 QMap<QLineEdit*, SelectionModes> mySelectionModes;
181 QMap<QLineEdit*, GEOM::GeomObjPtr> mySelectedShapes;
184};
185
186//=================================================================================
187// class : MeasureGUI_CreateDimensionDlg::LengthPane
188// purpose : Layout for length arguments pane
189//=================================================================================
191{
192 Q_OBJECT
193
194public:
195 enum TabID
196 {
200 };
201
202public:
203 LengthPane( QWidget* theParent );
209
210private:
211 QTabWidget* myTabs;
215};
216
217//=================================================================================
218// class : MeasureGUI_CreateDimensionDlg::DiameterPane
219// purpose : Layout for diameter arguments pane
220//=================================================================================
222{
223 Q_OBJECT
224
225public:
226 DiameterPane( QWidget* theParent );
227 GEOM::GeomObjPtr GetShape() const { return GetSelection( myShapeSelector->LineEdit1 ); }
228
229private:
231};
232
233//=================================================================================
234// class : MeasureGUI_CreateDimensionDlg::AnglePane
235// purpose : Layout for angle arguments pane
236//=================================================================================
238{
239 Q_OBJECT
240
241public:
242 enum TabID
243 {
246 };
247
248public:
249 AnglePane( QWidget* theParent );
255
256private:
257 QTabWidget* myTabs;
260};
261
262#endif
Definition: GEOMBase_Skeleton.h:53
Definition: GeometryGUI.h:74
Definition: MeasureGUI_Widgets.h:146
Definition: MeasureGUI_Widgets.h:194
Definition: MeasureGUI_Widgets.h:210
Definition: MeasureGUI_CreateDimensionDlg.h:238
QTabWidget * myTabs
Definition: MeasureGUI_CreateDimensionDlg.h:257
GEOM::GeomObjPtr GetPoint3() const
Definition: MeasureGUI_CreateDimensionDlg.h:254
GEOM::GeomObjPtr GetEdge1() const
Definition: MeasureGUI_CreateDimensionDlg.h:250
MeasureGUI_2Sel_Frame * myTwoEdgesSelectors
Definition: MeasureGUI_CreateDimensionDlg.h:258
TabID
Definition: MeasureGUI_CreateDimensionDlg.h:243
@ TabID_ThreePoints
Definition: MeasureGUI_CreateDimensionDlg.h:245
@ TabID_TwoEdges
Definition: MeasureGUI_CreateDimensionDlg.h:244
GEOM::GeomObjPtr GetEdge2() const
Definition: MeasureGUI_CreateDimensionDlg.h:251
GEOM::GeomObjPtr GetPoint1() const
Definition: MeasureGUI_CreateDimensionDlg.h:252
AnglePane(QWidget *theParent)
Definition: MeasureGUI_CreateDimensionDlg.cxx:802
GEOM::GeomObjPtr GetPoint2() const
Definition: MeasureGUI_CreateDimensionDlg.h:253
MeasureGUI_3Sel_Frame * myThreePointsSelectors
Definition: MeasureGUI_CreateDimensionDlg.h:259
Definition: MeasureGUI_CreateDimensionDlg.h:136
GEOM::GeomObjPtr GetSelection(QLineEdit *theSelector) const
Definition: MeasureGUI_CreateDimensionDlg.cxx:956
void SelectionIntoArguments(const GEOM::GeomObjPtr &theSelected)
Definition: MeasureGUI_CreateDimensionDlg.cxx:902
void StartSelection(const QList< TopAbs_ShapeEnum > &theModes)
void Reset(bool theOpenDefaultTab=false)
Definition: MeasureGUI_CreateDimensionDlg.cxx:864
void SetTabWidget(QTabWidget *theTabs)
Definition: MeasureGUI_CreateDimensionDlg.cxx:1027
QLineEdit * myCurrentSelector
Definition: MeasureGUI_CreateDimensionDlg.h:183
QMap< int, QList< QLineEdit * > > mySelectors
Definition: MeasureGUI_CreateDimensionDlg.h:178
QList< TopAbs_ShapeEnum > SelectionModes
Definition: MeasureGUI_CreateDimensionDlg.h:140
QPixmap mySelectorIcon
Definition: MeasureGUI_CreateDimensionDlg.h:182
QMap< QLineEdit *, GEOM::GeomObjPtr > mySelectedShapes
Definition: MeasureGUI_CreateDimensionDlg.h:181
QMap< QLineEdit *, QPushButton * > mySelectionButtons
Definition: MeasureGUI_CreateDimensionDlg.h:179
void OnTabChanged()
Definition: MeasureGUI_CreateDimensionDlg.cxx:1003
void OnSelectorClicked()
Definition: MeasureGUI_CreateDimensionDlg.cxx:965
BaseSelectorPane(QWidget *theParent)
Definition: MeasureGUI_CreateDimensionDlg.cxx:852
QMap< QLineEdit *, SelectionModes > mySelectionModes
Definition: MeasureGUI_CreateDimensionDlg.h:180
int ActiveTab() const
Definition: MeasureGUI_CreateDimensionDlg.cxx:893
void RegisterSelector(QLineEdit *theSelectorEdit, QPushButton *theSelectorButton, const SelectionModes &theSelectorModes, const int theTab=0)
Definition: MeasureGUI_CreateDimensionDlg.cxx:1037
QTabWidget * myTabs
Definition: MeasureGUI_CreateDimensionDlg.h:177
Definition: MeasureGUI_CreateDimensionDlg.h:222
DiameterPane(QWidget *theParent)
Definition: MeasureGUI_CreateDimensionDlg.cxx:778
MeasureGUI_1Sel_Frame * myShapeSelector
Definition: MeasureGUI_CreateDimensionDlg.h:230
GEOM::GeomObjPtr GetShape() const
Definition: MeasureGUI_CreateDimensionDlg.h:227
Definition: MeasureGUI_CreateDimensionDlg.h:191
TabID
Definition: MeasureGUI_CreateDimensionDlg.h:196
@ TabID_SingleEdge
Definition: MeasureGUI_CreateDimensionDlg.h:197
@ TabID_ParallelEdges
Definition: MeasureGUI_CreateDimensionDlg.h:199
@ TabID_TwoPoints
Definition: MeasureGUI_CreateDimensionDlg.h:198
QTabWidget * myTabs
Definition: MeasureGUI_CreateDimensionDlg.h:211
GEOM::GeomObjPtr GetSingleEdge() const
Definition: MeasureGUI_CreateDimensionDlg.h:204
MeasureGUI_2Sel_Frame * myTwoPointsSelectors
Definition: MeasureGUI_CreateDimensionDlg.h:213
GEOM::GeomObjPtr GetPoint1() const
Definition: MeasureGUI_CreateDimensionDlg.h:205
MeasureGUI_1Sel_Frame * mySingleEdgeSelectors
Definition: MeasureGUI_CreateDimensionDlg.h:212
GEOM::GeomObjPtr GetEdge1() const
Definition: MeasureGUI_CreateDimensionDlg.h:207
GEOM::GeomObjPtr GetPoint2() const
Definition: MeasureGUI_CreateDimensionDlg.h:206
LengthPane(QWidget *theParent)
Definition: MeasureGUI_CreateDimensionDlg.cxx:726
MeasureGUI_2Sel_Frame * myParallelEdgesSelectors
Definition: MeasureGUI_CreateDimensionDlg.h:214
GEOM::GeomObjPtr GetEdge2() const
Definition: MeasureGUI_CreateDimensionDlg.h:208
Definition: MeasureGUI_CreateDimensionDlg.h:59
bool AddDimensionToOwner()
Definition: MeasureGUI_CreateDimensionDlg.cxx:677
GEOM::GeomObjPtr GetTopLevel(const GEOM::GeomObjPtr &theObject)
bool ClickOnApply()
Definition: MeasureGUI_CreateDimensionDlg.cxx:381
MeasureGUI_CreateDimensionDlg(const GEOM::GeomObjPtr &, GeometryGUI *, QWidget *)
Definition: MeasureGUI_CreateDimensionDlg.cxx:65
void Init()
Definition: MeasureGUI_CreateDimensionDlg.cxx:485
void StopLocalEditing()
Definition: MeasureGUI_CreateDimensionDlg.cxx:462
MeasureGUI_DimensionInteractor * myDimensionInteractor
Definition: MeasureGUI_CreateDimensionDlg.h:124
AnglePane * myAngleArgs
Definition: MeasureGUI_CreateDimensionDlg.h:122
void OnStartSelection(const QList< TopAbs_ShapeEnum > &theModes)
Definition: MeasureGUI_CreateDimensionDlg.cxx:257
void OnStopSelection()
Definition: MeasureGUI_CreateDimensionDlg.cxx:280
QString GenerateName(const QString &thePrefix)
Definition: MeasureGUI_CreateDimensionDlg.cxx:178
void ConstructTypeChanged(int theType)
Definition: MeasureGUI_CreateDimensionDlg.cxx:220
BaseSelectorPane * ActiveArgs()
Definition: MeasureGUI_CreateDimensionDlg.cxx:162
void OnSelectionDone()
Definition: MeasureGUI_CreateDimensionDlg.cxx:335
DiameterPane * myDiameterArgs
Definition: MeasureGUI_CreateDimensionDlg.h:121
int myEditingLayer
Definition: MeasureGUI_CreateDimensionDlg.h:127
void ClickOnOk()
Definition: MeasureGUI_CreateDimensionDlg.cxx:368
GEOM::GeomObjPtr myParentObj
Definition: MeasureGUI_CreateDimensionDlg.h:119
TypeButtonID
Definition: MeasureGUI_CreateDimensionDlg.h:70
@ TypeButtonID_Angle
Definition: MeasureGUI_CreateDimensionDlg.h:73
@ TypeButtonID_Diameter
Definition: MeasureGUI_CreateDimensionDlg.h:72
@ TypeButtonID_Length
Definition: MeasureGUI_CreateDimensionDlg.h:71
~MeasureGUI_CreateDimensionDlg()
Definition: MeasureGUI_CreateDimensionDlg.cxx:154
void OnArgumentTabChanged()
Definition: MeasureGUI_CreateDimensionDlg.cxx:247
SOCC_Viewer * myEditingViewer
Definition: MeasureGUI_CreateDimensionDlg.h:126
QList< TopAbs_ShapeEnum > mySelectionModes
Definition: MeasureGUI_CreateDimensionDlg.h:123
Handle(AIS_Dimension) CreateDimension()
void StartLocalEditing()
Definition: MeasureGUI_CreateDimensionDlg.cxx:411
void SelectionIntoArgument()
Definition: MeasureGUI_CreateDimensionDlg.cxx:294
Handle(AIS_Dimension) GetCreatedDimension()
Definition: MeasureGUI_CreateDimensionDlg.h:81
Handle(AIS_Dimension) myDimension
LengthPane * myLengthArgs
Definition: MeasureGUI_CreateDimensionDlg.h:120
Definition: MeasureGUI_DimensionInteractor.h:51
GenericObjPtr< GEOM::GEOM_Object > GeomObjPtr
Definition: GEOM_GenericObjPtr.h:218