// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // // File : EntityGUI_SketcherDlg.h // Author : Damine COQUERET // Module : GEOM #ifndef ENTITYGUI_SKETCHERDLG_H #define ENTITYGUI_SKETCHERDLG_H #include "GEOMBase_Helper.h" #include "EntityGUI_Skeleton_QTD.h" #include "EntityGUI_Point_QTD.h" #include "EntityGUI_Dir1_QTD.h" #include "EntityGUI_Dir2_QTD.h" #include "EntityGUI_1Sel_QTD.h" #include "EntityGUI_1Spin.h" #include "EntityGUI_2Spin.h" #include "EntityGUI_3Spin.h" #include "EntityGUI_4Spin.h" #include "EntityGUI.h" #include "GeometryGUI.h" #include #include #include #include #include #include #include //================================================================================= // class : EntityGUI_Dlg // purpose : //================================================================================= class EntityGUI_SketcherDlg : public EntityGUI_Skeleton_QTD, public GEOMBase_Helper { Q_OBJECT public: EntityGUI_SketcherDlg(GeometryGUI* GUI, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); ~EntityGUI_SketcherDlg(); protected: // redefined from GEOMBase_Helper virtual GEOM::GEOM_IOperations_ptr createOperation(); virtual bool isValid( QString& ); virtual bool execute( ObjectList& objects ); void closeEvent( QCloseEvent* e ); private : void Init(); void enterEvent(QEvent* e); void InitClick(); void setEnabledUndo(bool value); void setEnabledRedo(bool value); QString GetNewCommand(); int myConstructorId; int myConstructorDirId; int mySketchType; int mySketchState; bool myIsAllAdded; QLineEdit* myEditCurrentArgument; /* Current LineEdit */ 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; EntityGUI_Dir2_QTD* GroupD2; EntityGUI_1Sel_QTD* Group1Sel; EntityGUI_1Spin* Group1Spin; EntityGUI_2Spin* Group2Spin; EntityGUI_3Spin* Group3Spin; EntityGUI_4Spin* Group4Spin; 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, DIR_PER_LENGTH, DIR_PER_X, DIR_PER_Y, DIR_TAN_LENGTH, DIR_TAN_X, DIR_TAN_Y, DIR_DXDY_LENGTH, DIR_DXDY_X, DIR_DXDY_Y}; 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 ClickOnCancel(); bool ClickOnApply(); void ClickOnUndo(); void ClickOnRedo(); void ClickOnHelp(); void LineEditReturnPressed(); void SelectionIntoArgument(); void SetEditCurrentArgument(); void DeactivateActiveDialog(); void ActivateThisDialog(); void TypeClicked(int constructorId); void DestClicked(int constructorId); void PointClicked(int constructorId); void Dir1Clicked(int constructorId); void Dir2Clicked(int constructorId); void ValueChangedInSpinBox(double newValue); }; #endif // ENTITYGUI_SKETCHERDLG_H