X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_ExtrusionDlg.h;h=b539eee98b38d95dc562cb97229a5f97421e6cf5;hp=71d20ece01e03b918f1217e3d6d242964b72ae2b;hb=7646a7f54e99134575c14521e60b6fa8c2418201;hpb=88b3dbe23b236bd1746405155ae33a76aaf59ecd diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h index 71d20ece0..b539eee98 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h +++ b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // 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. +// 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 @@ -30,6 +30,7 @@ // SMESH includes #include "SMESH_SMESHGUI.hxx" #include "SMESHGUI_PreviewDlg.h" +#include "SMESHGUI_Utils.h" // SALOME GUI includes #include @@ -37,14 +38,17 @@ // IDL includes #include #include CORBA_SERVER_HEADER(SMESH_Mesh) +#include CORBA_SERVER_HEADER(SMESH_MeshEditor) class QButtonGroup; -class QRadioButton; +class QCheckBox; class QGroupBox; class QLabel; class QLineEdit; -class QCheckBox; +class QListWidget; class QPushButton; +class QRadioButton; +class QToolButton; class SMESHGUI; class SMESH_Actor; @@ -56,15 +60,80 @@ class LightApp_SelectionMgr; class SUIT_SelectionFilter; class SalomeApp_IntSpinBox; +//================================================================================= +// class : SMESHGUI_3TypesSelector +// purpose : A widget used to select both nodes, edges and faces for +// Extrusion and Revolution operations +//================================================================================= + +class SMESHGUI_EXPORT SMESHGUI_3TypesSelector : public QWidget +{ + Q_OBJECT + + public: + + SMESHGUI_3TypesSelector( QWidget * parent = 0 ); + ~SMESHGUI_3TypesSelector(); + + void Clear(); + void SetEnabled( bool enable, SMESH::ElementType type ); + bool IsAnythingSelected( SMESH::ElementType type = SMESH::ALL ); + SMESH::ElementType GetSelected( SMESH::ListOfIDSources & nodes, + SMESH::ListOfIDSources & edges, + SMESH::ListOfIDSources & faces ); + SMESH::SMESH_Mesh_var GetMesh() { return myMesh; } + SMESH_Actor* GetActor() { return myActor; } + Handle(SALOME_InteractiveObject) GetIO() { return myIO; } + QButtonGroup* GetButtonGroup() { return mySelectBtnGrp; } + + signals: + + void selectionChanged(); + + private slots: + + void selectionIntoArgument(); + void onTextChange( const QString& ); + void onSelectMesh( bool on ); + void setFilters(); + void onSelectType( int iType ); + + private: + + void addTmpIdSource( SMESH::long_array_var& ids, + int iType, int index); + + QGroupBox* myGroups [3]; + QLabel* myLabel [3]; + QLineEdit* myLineEdit [3]; + QCheckBox* myMeshChk [3]; + QPushButton* myFilterBtn[3]; + QButtonGroup* mySelectBtnGrp; + SMESHGUI_FilterDlg* myFilterDlg; + SUIT_SelectionFilter* myFilter [3]; + SMESHGUI_IdValidator* myIdValidator; + + bool myBusy; + SMESH::SMESH_Mesh_var myMesh; + SMESH_Actor* myActor; + Handle(SALOME_InteractiveObject) myIO; + SMESH::ListOfIDSources_var myIDSource[3]; + QList myTmpIDSourceList; + + LightApp_SelectionMgr* mySelectionMgr; + SVTK_Selector* mySelector; +}; + //================================================================================= // class : SMESHGUI_ExtrusionDlg // purpose : //================================================================================= + class SMESHGUI_EXPORT SMESHGUI_ExtrusionDlg : public SMESHGUI_PreviewDlg { Q_OBJECT -public: + public: SMESHGUI_ExtrusionDlg( SMESHGUI* ); ~SMESHGUI_ExtrusionDlg(); @@ -74,42 +143,25 @@ private: void keyPressEvent( QKeyEvent* ); int GetConstructorId(); void getExtrusionVector(SMESH::DirStruct& aVector); + void extrusionByNormal(SMESH::SMESH_MeshEditor_ptr meshEditor, + const bool makeGroups=false); + bool getScaleParams( SMESH::double_array*& scales, + SMESH::double_array*& basePoint ); bool isValid(); bool isValuesValid(); - SMESHGUI_IdValidator* myIdValidator; LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */ - QWidget* myEditCurrentArgument; /* Current argument editor */ - int myNbOkElements; /* to check when elements are defined */ SVTK_Selector* mySelector; - - SMESH::SMESH_IDSource_var mySelectedObject; - - bool myBusy; - SMESH::SMESH_Mesh_var myMesh; - SMESH::long_array_var myElementsId; - SMESH_Actor* myActor; - Handle(SALOME_InteractiveObject) myIO; - SUIT_SelectionFilter* myMeshOrSubMeshOrGroupFilter0D; - SUIT_SelectionFilter* myMeshOrSubMeshOrGroupFilter1D; - SUIT_SelectionFilter* myMeshOrSubMeshOrGroupFilter2D; + QList myScalesList; // widgets - QGroupBox* ConstructorsBox; - QButtonGroup* GroupConstructors; - QRadioButton* RadioButton0; - QRadioButton* RadioButton1; - QRadioButton* RadioButton2; - QRadioButton* RadioButton3; - QRadioButton* RadioButton4; + SMESHGUI_3TypesSelector* SelectorWdg; + QRadioButton* ExtrMethod_RBut0; + QRadioButton* ExtrMethod_RBut1; + QRadioButton* ExtrMethod_RBut2; QGroupBox* GroupArguments; - QGroupBox* GroupDimensions; - QLabel* TextLabelElements; - QPushButton* SelectElementsButton; - QLineEdit* LineEditElements; - QCheckBox* CheckBoxMesh; QLabel* TextLabelVector; QLabel* TextLabelDistance; QPushButton* SelectVectorButton; @@ -129,8 +181,23 @@ private: SMESHGUI_SpinBox* SpinBox_VDist; QLabel* TextLabelNbSteps; SalomeApp_IntSpinBox* SpinBox_NbSteps; + QCheckBox* ByAverageNormalCheck; + QCheckBox* UseInputElemsOnlyCheck; QCheckBox* MakeGroupsCheck; + QGroupBox* BasePointGrp; + QPushButton* SelectBasePointButton; + SMESHGUI_SpinBox* BasePoint_XSpin; + SMESHGUI_SpinBox* BasePoint_YSpin; + SMESHGUI_SpinBox* BasePoint_ZSpin; + + QGroupBox* ScalesGrp; + QListWidget* ScalesList; + QToolButton* AddScaleButton; + QToolButton* RemoveScaleButton; + SMESHGUI_SpinBox* ScaleSpin; + QCheckBox* LinearScalesCheck; + QGroupBox* GroupButtons; QPushButton* buttonOk; QPushButton* buttonCancel; @@ -140,15 +207,11 @@ private: QString myHelpFileName; QString myIDs; - QPushButton* myFilterBtn; - SMESHGUI_FilterDlg* myFilterDlg; - protected slots: virtual void onDisplaySimulation( bool ); virtual void reject(); private slots: - void ConstructorsClicked( int ); void CheckIsEnable(); void ClickOnOk(); bool ClickOnApply(); @@ -158,9 +221,11 @@ private slots: void SelectionIntoArgument(); void DeactivateActiveDialog(); void ActivateThisDialog(); - void onTextChange( const QString& ); - void onSelectMesh( bool ); - void setFilters(); + void onOpenView(); + void onCloseView(); + void OnScaleAdded(); + void OnScaleRemoved(); + }; #endif // SMESHGUI_EXTRUSIONDLG_H