Salome HOME
Merge from V5_1_main 14/05/2010
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_EditMeshDlg.h
index 839b3fd7c4665f3d4a8174ef1032ea5dfa6ffdd3..4ff701452d1a98815ee4ce50cb3853abd6430226 100644 (file)
-// Copyright (C) 2005  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.
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 //
-// 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
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-// See http://www.salome-platform.org/
+//  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
 //
 
-#ifndef DIALOGBOX_GETMESH_H
-#define DIALOGBOX_GETMESH_H
+// SMESH SMESHGUI : GUI for SMESH component
+// File   : SMESHGUI_EditMeshDlg.h
+// Author : Open CASCADE S.A.S.
+//
+#ifndef SMESHGUI_EDITMESHDLG_H
+#define SMESHGUI_EDITMESHDLG_H
 
-#include "LightApp_SelectionMgr.h"
-#include "SUIT_SelectionFilter.h"
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
 
-// QT Includes
-#include <qdialog.h>
+// Qt includes
+#include <QDialog>
 
-// Open CASCADE Includes
+// OCCT includes
+#include <gp_XYZ.hxx>
+
+// STL includes
+#include <list>
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
 
-class QGridLayout;
-class QButtonGroup;
 class QGroupBox;
 class QLabel;
 class QLineEdit;
 class QPushButton;
 class QRadioButton;
+class QCheckBox;
+class QListWidget;
+class QButtonGroup;
 class SMESHGUI;
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
+class SMESHGUI_SpinBox;
+class SMESH_Actor;
+class SVTK_Selector;
+class LightApp_SelectionMgr;
+class SUIT_SelectionFilter;
+class TColStd_MapOfInteger;
+
+namespace SMESH
+{
+  struct TIdPreview;
+}
 
 //=================================================================================
 // class    : SMESHGUI_EditMeshDlg
 // purpose  : 
 //=================================================================================
-class SMESHGUI_EditMeshDlg : public QDialog
+class SMESHGUI_EXPORT SMESHGUI_EditMeshDlg : public QDialog
 {
   Q_OBJECT;
 
- public:
-  SMESHGUI_EditMeshDlg (SMESHGUI  * theModule,
-                       const char* title,
-                       const char* icon,
-                       int         theAction);
+public:
+  SMESHGUI_EditMeshDlg( SMESHGUI*, int );
   ~SMESHGUI_EditMeshDlg();
 
- private:
-  void Init();
-  void closeEvent (QCloseEvent*);
-  void enterEvent (QEvent*);              /* mouse enter the QWidget */
-  void hideEvent  (QHideEvent*);          /* ESC key */
-
- private:
-  SMESHGUI*               mySMESHGUI;     /* Current SMESHGUI object */
-  LightApp_SelectionMgr*  mySelectionMgr; /* User shape selection */
+private:
+  void                      Init();
+  void                      closeEvent( QCloseEvent* );
+  void                      enterEvent( QEvent* );              /* mouse enter the QWidget */
+  void                      hideEvent( QHideEvent* );           /* ESC key */
+  void                      keyPressEvent( QKeyEvent* );
+  void                      onEditGroup();
 
-  SMESH::SMESH_Mesh_var   myMesh;
-  SUIT_SelectionFilter*   myMeshFilter;
+  void                      FindGravityCenter( TColStd_MapOfInteger&, 
+                                               std::list<gp_XYZ>& );
+  // add the centers of gravity of ElemsIdMap elements to the GrCentersXYZ list
 
-  int myAction;
+private:
+  SMESHGUI*                 mySMESHGUI;     /* Current SMESHGUI object */
+  LightApp_SelectionMgr*    mySelectionMgr; /* User shape selection */
+  SVTK_Selector*            mySelector;
+  
+  QWidget*                  myEditCurrentArgument;
 
-  // Widgets
-  QButtonGroup* GroupConstructors;
-  QRadioButton* Constructor1;
+  SMESH::SMESH_Mesh_var     myMesh;
+  SMESH::SMESH_IDSource_var mySubMeshOrGroup;
+  SMESH_Actor*              myActor;
+  SUIT_SelectionFilter*     myMeshOrSubMeshOrGroupFilter;
 
-  QGroupBox* GroupButtons;
-  QPushButton* buttonOk;
-  QPushButton* buttonCancel;
-  QPushButton* buttonApply;
+  SMESH::TIdPreview*        myIdPreview;
 
-  QGroupBox* GroupMesh;
-  QLabel* TextLabelMesh;
-  QPushButton* SelectButton;
-  QLineEdit* LineEditMesh;
+  int                       myAction;
+  bool                      myIsBusy;
+  int                       myTypeId;
 
-  //protected:
-  QGridLayout* DlgLayout;
-  QGridLayout* GroupConstructorsLayout;
-  QGridLayout* GroupButtonsLayout;
-  QGridLayout* GroupMeshLayout;
+  // Widgets
+  QGroupBox*                GroupConstructors;
+  QRadioButton*             RadioButton;
+
+  QGroupBox*                GroupButtons;
+  QPushButton*              buttonOk;
+  QPushButton*              buttonCancel;
+  QPushButton*              buttonApply;
+  QPushButton*              buttonHelp;
+
+  QGroupBox*                GroupMesh;
+  QLabel*                   TextLabelName;
+  QPushButton*              SelectMeshButton;
+  QLineEdit*                LineEditMesh;
+
+  QGroupBox*                GroupCoincident;
+  QWidget*                  GroupCoincidentWidget;
+  QLabel*                   TextLabelTolerance;
+  SMESHGUI_SpinBox*         SpinBoxTolerance;
+  QPushButton*              DetectButton;
+  QListWidget*              ListCoincident;
+  QPushButton*              AddGroupButton;
+  QPushButton*              RemoveGroupButton;
+  QCheckBox*                SelectAllCB;
+
+  QGroupBox*                GroupEdit;
+  QListWidget*              ListEdit;
+  QPushButton*              AddElemButton;
+  QPushButton*              RemoveElemButton;
+  QPushButton*              SetFirstButton;
+
+  QGroupBox*                TypeBox;
+  QButtonGroup*             GroupType;
+    
+  QString                   myHelpFileName;
 
  private slots:
-  void ClickOnOk();
-  void ClickOnCancel();
-  void ClickOnApply();
-  void SelectionIntoArgument();
-  void DeactivateActiveDialog();
-  void ActivateThisDialog();
+  void                      ClickOnOk();
+  void                      ClickOnCancel();
+  bool                      ClickOnApply();
+  void                      ClickOnHelp();
+  void                      updateControls();
+  void                      onDetect();
+  void                      onAddGroup();
+  void                      onRemoveGroup();
+  void                      onSelectGroup();
+  void                      onSelectAll( bool );
+  void                      onSelectElementFromGroup();
+  void                      onAddElement();
+  void                      onRemoveElement();
+  void                      onSetFirst();
+  void                      SetEditCurrentArgument();
+  void                      SelectionIntoArgument();
+  void                      DeactivateActiveDialog();
+  void                      ActivateThisDialog();
+  void                      onTypeChanged(int);
 };
 
-#endif // DIALOGBOX_GETMESH_H
+#endif // SMESHGUI_EDITMESHDLG_H