Salome HOME
Updated copyright comment
[modules/shaper.git] / src / XGUI / XGUI_InspectionPanel.h
1 // Copyright (C) 2014-2024  CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #ifndef XGUI_INSPECTIONPANEL_H_
21 #define XGUI_INSPECTIONPANEL_H_
22
23 #include "XGUI.h"
24
25 #include <ModelAPI_Feature.h>
26 #include <GeomAlgoAPI_ShapeInfo.h>
27
28 #include <QDockWidget>
29
30 #include <memory>
31
32 class XGUI_Workshop;
33 class QLineEdit;
34 class QTableWidget;
35 class QLabel;
36 class QTextBrowser;
37 class QVBoxLayout;
38 class QResizeEvent;
39 class QStackedWidget;
40 class QGridLayout;
41
42 class TopoDS_Shape;
43
44 class ModuleBase_PageWidget;
45
46 /// Internal name of property panel widget
47 MAYBE_UNUSED const static char* INSPECTION_PANEL = "inspection_panel_dock";
48
49 /**
50 * \ingroup GUI
51 * A class which represents an inspection panel: to show content of currently selected objects
52 */
53 class XGUI_EXPORT XGUI_InspectionPanel :
54   public QDockWidget, public GeomAlgoAPI_ShapeInfo::Translator
55 {
56   Q_OBJECT
57 public:
58   /// Type of selected objects
59   enum SudShape {
60     ShapeId,
61     CompoundId,
62     CompsolidId,
63     SolidId,
64     ShellId,
65     FaceId,
66     WireId,
67     EdgeId,
68     VertexId
69   };
70
71   /// Constructor
72   /// \param theParent is a parent of the property panel
73   /// \param theMgr operation manager
74   XGUI_InspectionPanel(QWidget* theParent, XGUI_Workshop* theWorkshop);
75
76   // Destructor
77   virtual ~XGUI_InspectionPanel();
78
79   // A translator of resource strings, needed for ShapeInfo.
80   virtual std::string translate(const char* theSource) override;
81
82
83 protected:
84   virtual void showEvent(QShowEvent* theEvent);
85
86 private slots:
87   /// A slot to react on selection changed
88   void onSelectionChanged();
89
90 private:
91   /// Set counts of a sub-shapes
92   /// \param theId an id of sub-shape type
93   /// \param theVal a number of sub-shapes of corresponded type
94   void setSubShapeValue(SudShape theId, int theVal);
95
96   /// Set name of current selection
97   /// \param theName the name
98   void setName(const QString& theName);
99
100   /// Set content of selected shape into table
101   /// \param theShape the shape
102   void setShapeContent(const TopoDS_Shape& theShape);
103
104   /// Clear content of the window
105   void clearContent();
106
107   /// Set text into parameters area
108   /// \param theText the text
109   void setParamsText(const QString& theText);
110
111   /// Fills Feature panel with controls specific to the given feature
112   /// \param theFeature the selected feature
113   void buildFeaturePane(const FeaturePtr& theFeature);
114
115 private:
116   XGUI_Workshop* myWorkshop; //> selection manager
117
118   QLineEdit* myNameEdt; ///> Name field
119   QTableWidget* mySubShapesTab; ///> table of sub-shapes
120   QLabel* myTypeLbl; ///> label of a type
121   QTextBrowser* myTypeParams; ///> parameters area
122   QVBoxLayout* myMainLayout; ///> main layout
123   ModuleBase_PageWidget* myFeaturePane; ///> Content of feature property panel
124   QGridLayout* myFeatureLayout; ///> Layout of feature panel
125   QStackedWidget* myStackWgt; ///> base widget of the panel
126   int myShapePanelId;
127   int myFeaturePanelId;
128 };
129
130 #endif