Salome HOME
Update GUI documentation for bugs 16559
[modules/geom.git] / src / EntityGUI / EntityGUI_SketcherDlg.h
index 2da62fe81c441f57872bbc5fdea858df5507f707..64260b2ae166c2bd28a3a6fc4cd3506ca24effb9 100644 (file)
@@ -1,34 +1,37 @@
 //  GEOM GEOMGUI : GUI for Geometry component
 //
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  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 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  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
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 //  File   : EntityGUI_SketcherDlg.h
 //  Author : Damine COQUERET
 //  Module : GEOM
-//  $Header: 
 
 #ifndef ENTITYGUI_SKETCHERDLG_H
 #define ENTITYGUI_SKETCHERDLG_H
 
+#include "GEOM_EntityGUI.hxx"
+
+#include "GEOMBase_Helper.h"
+
 #include "EntityGUI_Skeleton_QTD.h"
 #include "EntityGUI_Point_QTD.h"
 #include "EntityGUI_Dir1_QTD.h"
@@ -41,8 +44,7 @@
 #include "EntityGUI_4Spin.h"
 
 #include "EntityGUI.h"
-
-#include "GEOM_ShapeTypeFilter.hxx"
+#include "GeometryGUI.h"
 
 #include <gp_Dir.hxx>
 
 // class    : EntityGUI_Dlg
 // purpose  :
 //=================================================================================
-class EntityGUI_SketcherDlg : public EntityGUI_Skeleton_QTD
+class GEOM_ENTITYGUI_EXPORT EntityGUI_SketcherDlg : public EntityGUI_Skeleton_QTD, public GEOMBase_Helper
 { 
     Q_OBJECT
 
 public:
-    EntityGUI_SketcherDlg(QWidget* parent = 0, const char* name = 0, EntityGUI* theEntityGUI = 0, SALOME_Selection* Sel = 0, bool modal = FALSE, WFlags fl = 0);
+    EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent = 0,
+                         const char* name = 0, bool modal = FALSE, WFlags fl = 0,
+                         const double lineWidth = 2.);
     ~EntityGUI_SketcherDlg();
 
+    bool eventFilter (QObject* object, QEvent* event);
+
+protected:
+    // redefined from GEOMBase_Helper
+    virtual GEOM::GEOM_IOperations_ptr createOperation();
+    virtual bool isValid( QString& );
+    virtual bool execute( ObjectList& objects );
+
+    void closeEvent( QCloseEvent* e );
+    void keyPressEvent( QKeyEvent* e );
+
 private :
     void Init();
     void enterEvent(QEvent* e);
-    void closeEvent(QCloseEvent* e);
     void InitClick();
-    void MakeSimulationAndDisplay();
-    QString GetNewCommand();
+    void setEnabledUndo(bool value);
+    void setEnabledRedo(bool value);
 
-    EntityGUI* myEntityGUI;
+    QString GetNewCommand();
 
-    double step;
     int myConstructorId;
     int myConstructorDirId;
     int mySketchType;
     int mySketchState;
-    Handle(GEOM_ShapeTypeFilter) myVertexFilter;
 
-    TopoDS_Shape mySimulationTopoDs1;    /* Shape used for simulation display */
-    TopoDS_Shape mySimulationTopoDs2;    /* Shape used for simulation display */
+    bool myIsAllAdded;
+
     QLineEdit* myEditCurrentArgument;   /* Current LineEdit */
-    SALOME_Selection* mySelection;      /* User shape selection */
-    GEOM::GEOM_Gen_var myGeom;          /* Current GeomI object */
-    GEOMBase* myGeomBase;
-    GEOMContext* myGeomGUI;  /* Current GeomGUI object */
-
-    int myLastOp;
-    QString myCommand;
-    QString myLastCommand;
-    TopoDS_Shape myShape;
-    gp_Dir myLastDir;
-
-    Standard_Real myX;
-    Standard_Real myY;
-    Standard_Real myDX;
-    Standard_Real myDY;
-    Standard_Real myLastX1;
-    Standard_Real myLastY1;
-    Standard_Real myLastX2;
-    Standard_Real myLastY2;
-    Standard_Real myLength;
-    Standard_Real myAngle;
-    Standard_Real myRadius;
+
+    QStringList myCommand;
+    QStringList myUndoCommand;
+
+    Standard_Real myX, myY, myDX, myDY;
+    Standard_Real myLength, myAngle, myRadius;
+    Standard_Real myLastX1, myLastY1;
+    Standard_Real myLastX2, myLastY2;
 
     EntityGUI_Point_QTD* GroupPt;
     EntityGUI_Dir1_QTD* GroupD1;
@@ -118,7 +116,11 @@ private :
     EntityGUI_3Spin* Group3Spin;
     EntityGUI_4Spin* Group4Spin;
 
-    enum SketchState {FIRST_POINT, SECOND_POINT, NEXT_POINT};
+    GeometryGUI*  myGeometryGUI;
+
+    QString myHelpFileName;
+
+    enum SketchState {FIRST_POINT, NEXT_POINT};
 
     enum SketchType {PT_ABS, PT_RELATIVE, PT_SEL,
                     DIR_ANGLE_LENGTH, DIR_ANGLE_X, DIR_ANGLE_Y,
@@ -126,12 +128,24 @@ private :
                     DIR_TAN_LENGTH, DIR_TAN_X, DIR_TAN_Y,
                     DIR_DXDY_LENGTH, DIR_DXDY_X, DIR_DXDY_Y};
 
+  double myLineWidth;
+  virtual void displayPreview  ( GEOM::GEOM_Object_ptr obj,
+                                 const bool            append = false,
+                                 const bool            activate = false,
+                                 const bool            update = true,
+                                 const double          lineWidth = -1 );
+
+  bool createShapes( GEOM::GEOM_Object_ptr theObject,
+                     TopoDS_Shape&         theApplyedWire,
+                     TopoDS_Shape&         theLastSegment );
+
 private slots:
     void ClickOnEnd();
-    void ClickOnClose();
     void ClickOnCancel();
-    void ClickOnApply();
+    bool ClickOnApply();
     void ClickOnUndo();
+    void ClickOnRedo();
+    void ClickOnHelp();
     void LineEditReturnPressed();
     void SelectionIntoArgument();
     void SetEditCurrentArgument();
@@ -143,7 +157,6 @@ private slots:
     void Dir1Clicked(int constructorId);
     void Dir2Clicked(int constructorId);
     void ValueChangedInSpinBox(double newValue);
-
 };
 
 #endif // ENTITYGUI_SKETCHERDLG_H