Salome HOME
Update of CheckDone
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_ExtrusionAlongPathDlg.h
index 7bbb8ce23fe2aae406ee7430c19f57e2e00cc469..6b5d7358f22871028ac46c094d4ac39498e8306a 100644 (file)
@@ -1,39 +1,39 @@
-//  SMESH SMESHGUI : GUI for SMESH component
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
-//  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 
+// Copyright (C) 2003-2007  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, or (at your option) any later version.
 //
+// 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   : SMESHGUI_ExtrusionAlongPathDlg.h
-//  Author : Vadim SANDLER
-//  Module : SMESH
-//  $Header: 
 
-#ifndef DIALOGBOX_EXTRUSION_PATH_H
-#define DIALOGBOX_EXTRUSION_PATH_H
+// SMESH SMESHGUI : GUI for SMESH component
+// File   : SMESHGUI_ExtrusionAlongPathDlg.h
+// Author : Vadim SANDLER, Open CASCADE S.A.S.
+//
+#ifndef SMESHGUI_EXTRUSIONALONGPATHDLG_H
+#define SMESHGUI_EXTRUSIONALONGPATHDLG_H
 
-#include "LightApp_SelectionMgr.h"
-#include "SUIT_SelectionFilter.h"
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
+#include "SMESHGUI_PreviewDlg.h"
 
-// QT Includes
-#include <qdialog.h>
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
 
 class QButtonGroup;
 class QRadioButton;
@@ -42,128 +42,117 @@ class QLabel;
 class QToolButton;
 class QLineEdit;
 class QCheckBox;
-class QListBox;
+class QListWidget;
 class QPushButton;
 
+class LightApp_SelectionMgr;
 class SMESHGUI;
-class SMESH_Actor;
+class SMESHGUI_3TypesSelector;
+class SMESHGUI_FilterDlg;
+class SMESHGUI_IdValidator;
 class SMESHGUI_SpinBox;
-class SVTK_ViewWindow;
+class SMESH_Actor;
+class SUIT_SelectionFilter;
 class SVTK_Selector;
 
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-
 //=================================================================================
 // class    : SMESHGUI_ExtrusionAlongPathDlg
 // purpose  :
 //=================================================================================
-class SMESHGUI_ExtrusionAlongPathDlg : public QDialog
+class SMESHGUI_EXPORT SMESHGUI_ExtrusionAlongPathDlg : public SMESHGUI_PreviewDlg
 {
   Q_OBJECT
 
-  class SetBusy {
-    public:
-      SetBusy (SMESHGUI_ExtrusionAlongPathDlg* _dlg) { myDlg = _dlg; myDlg->myBusy = true; }
-      ~SetBusy() { myDlg->myBusy = false; }
-    private:
-      SMESHGUI_ExtrusionAlongPathDlg* myDlg;
-  };
+  class SetBusy;
   friend class SetBusy;
 
 public:
-  SMESHGUI_ExtrusionAlongPathDlg (SMESHGUI*,
-                                 bool modal = FALSE);
+  SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* );
   ~SMESHGUI_ExtrusionAlongPathDlg();
 
-  bool eventFilter (QObject* object, QEvent* event);
+  bool                      eventFilter( QObject*, QEvent* );
 
 private:
-  void Init (bool ResetControls = true);
-  void enterEvent (QEvent*);                           /* mouse enter the QWidget */
-  int  GetConstructorId();
-  void SetEditCurrentArgument (QToolButton* button);
-
-  SMESHGUI*                     mySMESHGUI;            /* Current SMESHGUI object */
-  LightApp_SelectionMgr*        mySelectionMgr;        /* User shape selection */
-  SVTK_Selector*                mySelector;
-
-  QWidget*                      myEditCurrentArgument; /* Current  argument */
-
-  bool                          myBusy;
-  SMESH::SMESH_Mesh_var         myMesh;
-  SMESH_Actor*                  myMeshActor;
-  SMESH::SMESH_IDSource_var     myIDSource;
-  SMESH::SMESH_Mesh_var         myPathMesh;
-  GEOM::GEOM_Object_var         myPathShape;
-  SUIT_SelectionFilter*         myElementsFilter;
-  SUIT_SelectionFilter*         myPathMeshFilter;
-  int                           myType;
+  void                      Init( bool = true );
+  void                      enterEvent( QEvent* );                           /* mouse enter the QWidget */
+  void                      keyPressEvent( QKeyEvent* );
+  void                      SetEditCurrentArgument( QPushButton* );
+
+  bool                      isValid();
+  bool                      isValuesValid();
+  
+  SMESH::double_array_var   getAngles();
+  SMESH::double_array_var   getScales();
+
+  void                      updateLinearAngles();
+  
+  SMESHGUI_IdValidator*     myIdValidator;
+  LightApp_SelectionMgr*    mySelectionMgr;        /* User shape selection */
+  SVTK_Selector*            mySelector;
+  QWidget*                  myEditCurrentArgument; /* Current  argument */
+
+  bool                      myBusy;
+  SMESH::SMESH_IDSource_var myPath;
+  SUIT_SelectionFilter*     myPathMeshFilter;
+  QList<double>             myAnglesList;
+  QList<double>             myScalesList;
 
   // widgets
-  QButtonGroup*     GroupConstructors;
-  QRadioButton*     Elements1dRB;
-  QRadioButton*     Elements2dRB;
-
-  QGroupBox*        GroupArguments;
-  QLabel*           ElementsLab;
-  QToolButton*      SelectElementsButton;
-  QLineEdit*        ElementsLineEdit;
-  QCheckBox*        MeshCheck;
-  QGroupBox*        PathGrp;
-  QLabel*           PathMeshLab;
-  QToolButton*      SelectPathMeshButton;
-  QLineEdit*        PathMeshLineEdit;
-  QLabel*           PathShapeLab;
-  QToolButton*      SelectPathShapeButton;
-  QLineEdit*        PathShapeLineEdit;
-  QLabel*           StartPointLab;
-  QToolButton*      SelectStartPointButton;
-  QLineEdit*        StartPointLineEdit;
-  QCheckBox*        AnglesCheck;
-  QGroupBox*        AnglesGrp;
-  QListBox*         AnglesList;
-  QToolButton*      AddAngleButton;
-  QToolButton*      RemoveAngleButton;
-  SMESHGUI_SpinBox* AngleSpin;
-  QCheckBox*        BasePointCheck;
-  QGroupBox*        BasePointGrp;
-  QToolButton*      SelectBasePointButton;
-  QLabel*           XLab;
-  SMESHGUI_SpinBox* XSpin;
-  QLabel*           YLab;
-  SMESHGUI_SpinBox* YSpin;
-  QLabel*           ZLab;
-  SMESHGUI_SpinBox* ZSpin;
-
-  QGroupBox*        GroupButtons;
-  QPushButton*      OkButton;
-  QPushButton*      ApplyButton;
-  QPushButton*      CloseButton;
-  QPushButton*      HelpButton;
-
-  QString           myHelpFileName;
+  SMESHGUI_3TypesSelector*  SelectorWdg;
+  QGroupBox*                GroupArguments;
+  QGroupBox*                PathGrp;
+  QPushButton*              SelectPathMeshButton;
+  QLineEdit*                PathMeshLineEdit;
+  QPushButton*              SelectStartPointButton;
+  QLineEdit*                StartPointLineEdit;
+
+  QCheckBox*                LinearAnglesCheck;
+  QGroupBox*                AnglesGrp;
+  QListWidget*              AnglesList;
+  QToolButton*              AddAngleButton;
+  QToolButton*              RemoveAngleButton;
+  SMESHGUI_SpinBox*         AngleSpin;
+
+  QCheckBox*                LinearScalesCheck;
+  QGroupBox*                ScalesGrp;
+  QListWidget*              ScalesList;
+  QToolButton*              AddScaleButton;
+  QToolButton*              RemoveScaleButton;
+  SMESHGUI_SpinBox*         ScaleSpin;
+
+  QGroupBox*                BasePointGrp;
+  QPushButton*              SelectBasePointButton;
+  SMESHGUI_SpinBox*         XSpin;
+  SMESHGUI_SpinBox*         YSpin;
+  SMESHGUI_SpinBox*         ZSpin;
+  QCheckBox*                MakeGroupsCheck;
+
+  QGroupBox*                GroupButtons;
+  QPushButton*              OkButton;
+  QPushButton*              ApplyButton;
+  QPushButton*              CloseButton;
+  QPushButton*              HelpButton;
+
+  QString                   myHelpFileName;
 
 protected slots:
-  void reject();
+  void                      reject();
+  virtual void              onDisplaySimulation( bool );
 
 private slots:
-  void ConstructorsClicked (int);
-  void ClickOnOk();
-  bool ClickOnApply();
-  void ClickOnHelp();
-  void SetEditCurrentArgument();
-  void SelectionIntoArgument();
-  void DeactivateActiveDialog();
-  void ActivateThisDialog();
-  void onTextChange (const QString&);
-  void onSelectMesh();
-  void onAnglesCheck();
-  void onBasePointCheck();
-  void OnAngleAdded();
-  void OnAngleRemoved();
+  void                      ClickOnOk();
+  bool                      ClickOnApply();
+  void                      ClickOnHelp();
+  void                      CheckIsEnable();
+  void                      SetEditCurrentArgument();
+  void                      SelectionIntoArgument();
+  void                      DeactivateActiveDialog();
+  void                      ActivateThisDialog();
+  void                      onTextChange( const QString& );
+  void                      OnAngleAdded();
+  void                      OnAngleRemoved();
+  void                      onOpenView();
+  void                      onCloseView();
 };
 
-#endif // DIALOGBOX_EXTRUSION_PATH_H
+#endif // SMESHGUI_EXTRUSIONALONGPATHDLG_H