Salome HOME
Get rid of compilation warnings. Part I.
[modules/shaper.git] / src / XGUI / XGUI_InspectionPanel.h
index 27ea2a8b2910db0364639c571fedc110dee3dfbc..4073ca6143e583d44743f133f0afb294eb9a4963 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2020  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef XGUI_INSPECTIONPANEL_H_
 
 #include "XGUI.h"
 
+#include <ModelAPI_Feature.h>
+
 #include <QDockWidget>
 
-class XGUI_SelectionMgr;
+#include <memory>
+
+class XGUI_Workshop;
 class QLineEdit;
 class QTableWidget;
 class QLabel;
 class QTextBrowser;
+class QVBoxLayout;
+class QResizeEvent;
+class QStackedWidget;
+class QGridLayout;
+
+class TopoDS_Shape;
+
+class GeomAPI_Vertex;
+class GeomAPI_Edge;
+class GeomAPI_Wire;
+class GeomAPI_Face;
+class GeomAPI_Shell;
+class GeomAPI_Solid;
+class GeomAPI_Shape;
+
+class GeomAPI_Pln;
+class GeomAPI_Sphere;
+class GeomAPI_Cylinder;
+class GeomAPI_Cone;
+class GeomAPI_Torus;
+class GeomAPI_Box;
+class ModuleBase_PageWidget;
 
 /// Internal name of property panel widget
-const static char* INSPECTION_PANEL = "inspection_panel_dock";
+MAYBE_UNUSED const static char* INSPECTION_PANEL = "inspection_panel_dock";
 
+/**
+* \ingroup GUI
+* A class which represents an inspection panel: to show content of currently selected objects
+*/
 class XGUI_EXPORT XGUI_InspectionPanel : public QDockWidget
 {
   Q_OBJECT
 public:
+  /// Type of selected objects
   enum SudShape {
     ShapeId,
     CompoundId,
@@ -53,43 +83,123 @@ public:
   /// Constructor
   /// \param theParent is a parent of the property panel
   /// \param theMgr operation manager
-  XGUI_InspectionPanel(QWidget* theParent, XGUI_SelectionMgr* theMgr);
+  XGUI_InspectionPanel(QWidget* theParent, XGUI_Workshop* theWorkshop);
 
+  // Destructor
   virtual ~XGUI_InspectionPanel();
 
+protected:
+  virtual void showEvent(QShowEvent* theEvent);
+
+private slots:
+  /// A slot to react on selection changed
+  void onSelectionChanged();
+
+private:
+  /// Set counts of a sub-shapes
+  /// \param theId an id of sub-shape type
+  /// \param theVal a number of sub-shapes of corresponded type
   void setSubShapeValue(SudShape theId, int theVal);
 
+  /// Set name of current selection
+  /// \param theName the name
   void setName(const QString& theName);
 
-  // Set of type parameters
-  void setCylinderType(double theX, double theY, double theZ,
-    double theDX, double theDY, double theDZ, double theRadius, double theHeight);
+  /// Set content of selected shape into table
+  /// \param theShape the shape
+  void setShapeContent(const TopoDS_Shape& theShape);
 
-  void setSphereType(double theX, double theY, double theZ, double theRadius);
+  /// Set parameters of the selected shape
+  /// \param theShape the shape
+  void setShapeParams(const TopoDS_Shape& theShape);
 
-  void setBoxType(double theX, double theY, double theZ,
-    double theXsize, double theYsize, double theZsize);
+  /// Clear content of the window
+  void clearContent();
 
-  void setRotatedBoxType(double theX, double theY, double theZ,
-    double theZaxisX, double theZaxisY, double theZaxisZ,
-    double theXaxisX, double theXaxisY, double theXaxisZ,
-    double theXsize, double theYsize, double theZsize);
+  /// Show parameters of a vertex
+  /// \param theVertex the vertex
+  void fillVertex(const std::shared_ptr<GeomAPI_Vertex>& theVertex);
 
-  void setPlaneType(double theX, double theY, double theZ,
-    double theDX, double theDY, double theDZ);
+  /// Show parameters of a edge
+  /// \param theEdge the edge
+  void fillEdge(const std::shared_ptr<GeomAPI_Edge>& theEdge);
 
-  void setVertexType(double theX, double theY, double theZ);
+  /// Show parameters of a wire
+  /// \param theWire the wire
+  void fillWire(const std::shared_ptr<GeomAPI_Wire>& theWire);
 
-private slots:
-  void onSelectionChanged();
+  /// Show parameters of a face
+  /// \param theFace the face
+  void fillFace(const std::shared_ptr<GeomAPI_Face>& theFace);
 
-private:
-  XGUI_SelectionMgr* mySelectionMgr;
+  /// Show parameters of a shell
+  /// \param theShell the shell
+  void fillShell(const std::shared_ptr<GeomAPI_Shell>& theShell);
+
+  /// Show parameters of a solid
+  /// \param theSolid the solid
+  void fillSolid(const std::shared_ptr<GeomAPI_Solid>& theSolid);
 
-  QLineEdit* myNameEdt;
-  QTableWidget* mySubShapesTab;
-  QLabel* myTypeLbl;
-  QTextBrowser* myTypeParams;
+  /// Show parameters of a compound
+  /// \param theShape the compound
+  void fillContainer(const std::shared_ptr<GeomAPI_Shape>& theShape);
+
+  /// Show parameters of a plane
+  /// \param theTitle a title of the object
+  /// \param thePlane the plane
+  void setPlaneType(const QString& theTitle, const std::shared_ptr<GeomAPI_Pln>& thePlane);
+
+  /// Show parameters of a sphere
+  /// \param theTitle a title of the object
+  /// \param theSphere the sphere
+  void setSphereType(const QString& theTitle, const std::shared_ptr<GeomAPI_Sphere>& theSphere);
+
+  /// Show parameters of a cylinder
+  /// \param theTitle a title of the object
+  /// \param theCyl the cylinder
+  void setCylinderType(const QString& theTitle, const std::shared_ptr<GeomAPI_Cylinder>& theCyl);
+
+  /// Show parameters of a cone
+  /// \param theTitle a title of the object
+  /// \param theCone the cone
+  void setConeType(const QString& theTitle, const std::shared_ptr<GeomAPI_Cone>& theCone);
+
+  /// Show parameters of a torus
+  /// \param theTitle a title of the object
+  /// \param theTorus the torus
+  void setTorusType(const QString& theTitle, const std::shared_ptr<GeomAPI_Torus>& theTorus);
+
+  /// Show parameters of a box
+  /// \param theTitle a title of the object
+  /// \param theBox the box
+  void setBoxType(const QString& theTitle, const std::shared_ptr<GeomAPI_Box>& theBox);
+
+  /// Show parameters of a rotated box
+  /// \param theTitle a title of the object
+  /// \param theBox the box
+  void setRotatedBoxType(const QString& theTitle, const std::shared_ptr<GeomAPI_Box>& theBox);
+
+  /// Set text into parameters area
+  /// \param theText the text
+  void setParamsText(const QString& theText);
+
+  /// Fills Feature panel with controls specific to the given feature
+  /// \param theFeature the selected feature
+  void buildFeaturePane(const FeaturePtr& theFeature);
+
+private:
+  XGUI_Workshop* myWorkshop; //> selection manager
+
+  QLineEdit* myNameEdt; ///> Name field
+  QTableWidget* mySubShapesTab; ///> table of sub-shapes
+  QLabel* myTypeLbl; ///> label of a type
+  QTextBrowser* myTypeParams; ///> parameters area
+  QVBoxLayout* myMainLayout; ///> main layout
+  ModuleBase_PageWidget* myFeaturePane; ///> Content of feature property panel
+  QGridLayout* myFeatureLayout; ///> Layout of feature panel
+  QStackedWidget* myStackWgt; ///> base widget of the panel
+  int myShapePanelId;
+  int myFeaturePanelId;
 };
 
 #endif
\ No newline at end of file