Salome HOME
2aea0e46be1ff5d27d817ef99d801d8be0c83f1a
[modules/hexablock.git] / src / HEXABLOCKGUI / HEXABLOCKGUI_DocumentPanel.hxx
1 // Copyright (C) 2009-2023  CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 #ifndef __HEXABLOCKGUI_DOCUMENTPANEL_HXX_
20 #define __HEXABLOCKGUI_DOCUMENTPANEL_HXX_
21
22 #include "HEXABLOCKGUI_Export.hxx"
23
24 #define MAX_WIDTH 16777215
25 #define MAX_HEIGHT 16777215
26 #define MIN_WIDTH 5
27 #define MIN_HEIGHT 0
28
29 #include <QShortcut>
30 #include <QDockWidget>
31
32 #include "ui_Vertex_QTD.h"
33 #include "ui_Quad_QTD.h"
34 #include "ui_Edge_QTD.h"
35 #include "ui_Hexa_QTD.h"
36
37 #include "ui_Vector_QTD.h"
38 #include "ui_Cylinder_QTD.h"
39 #include "ui_Pipe_QTD.h"
40 #include "ui_MakeGrid_QTD.h"
41 #include "ui_MakePipe_QTD.h"
42 #include "ui_MakeCylinder_QTD.h"
43 #include "ui_MakeCylinders_QTD.h"
44 #include "ui_MakePipes_QTD.h"
45 #include "ui_RemoveHexa_QTD.h"
46 #include "ui_PrismQuad_QTD.h"
47 #include "ui_JoinQuad_QTD.h"
48 #include "ui_Merge_QTD.h"
49 #include "ui_Disconnect_QTD.h"
50 #include "ui_CutEdge_QTD.h"
51 #include "ui_Transformation_QTD.h"
52 #include "ui_Symmetry_QTD.h"
53
54 #include "ui_EdgeAssoc_QTD.h"
55 #include "ui_QuadAssoc_QTD.h"
56
57 #include "ui_Group_QTD.h"
58 #include "ui_Law_QTD.h"
59 #include "ui_Propagation_QTD.h"
60
61 #include "ui_QuadRevolution_QTD.h"
62 #include "ui_MakeRind_QTD.h"
63 #include "ui_ReplaceHexa_QTD.h"
64 #include "ui_MakeHemiSphere_QTD.h"
65 #include "ui_ModelInfo_QTD.h"
66 #include "ui_AddShapeDialog_QTD.h"
67 #include "ui_ComputeMesh_QTD.h"
68
69 #include "HexVertex.hxx"
70 #include "HexEdge.hxx"
71 #include "HexQuad.hxx"
72 #include "HexHexa.hxx"
73
74
75 #include "HEXABLOCKGUI_DocumentSelectionModel.hxx"
76 #include "HEXABLOCKGUI_DocumentModel.hxx"
77 #include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx"
78 #include "HEXABLOCKGUI.hxx"
79
80 #include "klinkitemselectionmodel.hxx"
81
82 Q_DECLARE_METATYPE(QModelIndex);
83
84 namespace HEXABLOCK
85 {
86   namespace GUI
87   {
88     class HEXABLOCK_EXPORT HexaBaseDialog : public QDialog
89     {
90       Q_OBJECT
91
92     public:
93       enum Mode {
94         NEW_MODE,
95         INFO_MODE,
96         UPDATE_MODE
97       };
98
99       // define input widget type => usefull for selection
100       typedef HexaTreeRole  HexaWidgetType;
101       typedef TopAbs_ShapeEnum GeomWidgetType; //CS_TODO
102
103       enum {
104             LW_QMODELINDEX_ROLE = Qt::UserRole + 1,
105             LW_ASSOC_ROLE,
106             LW_GEOM_OBJ_ROLE,
107             LW_DATA_ROLE
108       };
109
110       HexaBaseDialog( QWidget * parent = 0, Mode editmode = NEW_MODE, Qt::WindowFlags f = 0 );
111       virtual ~HexaBaseDialog(){};
112
113       // clear all input widget
114       virtual void clear(){};
115       void clearWidgetsIndexes() { _index.clear(); }
116
117       void connectDocumentGraphicView(VtkDocumentGraphicView* docGView = NULL);
118       void disconnectDocumentGraphicView(VtkDocumentGraphicView* docGView = NULL);
119
120       SVTK_ViewWindow* getCurrentVtkView() const {
121           return HEXABLOCKGUI::currentDocGView->getViewWindow();
122       }
123
124       //get model
125       DocumentModel* getDocumentModel() const {
126          return HEXABLOCKGUI::currentDocGView->getDocumentModel();
127       }
128
129       PatternDataModel* getPatternDataModel() const {
130           return HEXABLOCKGUI::currentDocGView->getPatternDataModel();
131       }
132
133       PatternGeomModel* getPatternGeomModel() const {
134           return HEXABLOCKGUI::currentDocGView->getPatternGeomModel();
135       }
136
137       GroupsModel* getGroupsModel() const {
138           return HEXABLOCKGUI::currentDocGView->getGroupsModel();
139       }
140
141       MeshModel* getMeshModel() const {
142           return HEXABLOCKGUI::currentDocGView->getMeshModel();
143       }
144
145       //get selection patterns from the current graphic view
146       PatternDataSelectionModel* getPatternDataSelectionModel() const {
147          return HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel();
148       }
149
150       PatternGeomSelectionModel* getPatternGeomSelectionModel() const {
151           return HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel();
152       }
153
154       GroupsSelectionModel* getGroupsSelectionModel() const {
155          return HEXABLOCKGUI::currentDocGView->getGroupsSelectionModel();
156       }
157
158       MeshSelectionModel* getMeshSelectionModel() const {
159          return HEXABLOCKGUI::currentDocGView->getMeshSelectionModel();
160       }
161
162       QString getErrorMsg();
163
164       HEXABLOCKGUI::ViewType getObjectViewType(QObject* obj);
165       void modelUnregister(QWidget* widget); //unlink the widget from the model
166       void resetSizeAndShow(QDockWidget* parent);
167       virtual QModelIndexList getAssocsVTK()
168       {
169         QModelIndexList assocs;
170         return assocs;
171       }
172       virtual QMultiMap<QString, int> getAssocsGEOM()
173       {
174         QMultiMap<QString, int> assocs;
175         return assocs;
176       }
177       virtual void setCurrentGeomObj(DocumentModel::GeomObj* geomObj) {}
178       virtual void computeAndSetDimension(const QModelIndex& elt);
179
180       bool debugEdgeAssoc; //Temporary
181       bool autoFocusSwitch;
182
183     public slots:
184     virtual bool apply();
185     virtual void close();
186     virtual void onHelpRequested();
187     void highlightSelectedAssocs();
188     void refreshHighlight();
189     virtual void onWindowActivated(SUIT_ViewManager*){};
190     void clearVTKSelection();
191     void clearOCCSelection();
192     void clearCurrentObjectFocus();
193
194     protected:
195     virtual bool eventFilter(QObject *obj, QEvent *event);
196     virtual void hideEvent ( QHideEvent * event );
197     virtual void showEvent ( QShowEvent * event );
198     virtual bool apply(QModelIndex& result) = 0;
199
200     //Gives a default name to an element according to the last created
201     void updateDefaultName(QLineEdit* name_field, HEXA_NS::EnumElt type);
202     DocumentModel::GeomObj* getGeomObj(const QModelIndex& index);
203
204     virtual void _initInputWidget( Mode editmode )=0; //must be implemented on inherited dialog box
205     virtual QGroupBox*  _initButtonBox( Mode editmode );
206     void _initWidget( Mode editmode ); // call _initInputWidget() & _initButtonBox()
207     QModelIndexList getIndexList(QListWidget* itemsList, bool mapToSource = true);
208
209     void _allowSelection();
210     void _disallowSelection();
211     QItemSelectionModel* _allowSelection( HexaWidgetType wtype );
212
213     bool _allowVTKSelection( QObject* obj );
214     bool _allowOCCSelection( QObject* obj );
215     QItemSelectionModel* _getSelector( QObject* obj );
216
217     void _selectAndHighlight( const QModelIndex& i );
218
219     void _highlightWidget(QObject* obj, Qt::GlobalColor clr);
220
221     void setFocusToNextField();
222
223     void _updateCurrentObject(QObject*);
224
225     bool isDimensionType(const QObject* obj);
226
227     Mode _editMode;
228
229     QMap<QObject*, QModelIndex>    _index;
230     QObject*                       _currentObj;
231     QMap<HexaWidgetType, QString>  _strHexaWidgetType;
232     QPushButton*                   _applyButton;
233     QString                        _helpFileName;
234
235     private:
236     bool _isLineOrListWidget(QObject*);
237
238     protected slots:
239     virtual void onSelectionChanged(  const QItemSelection& sel, const QItemSelection& unsel ); //from qt model/view selectionManager
240     virtual void onCurrentSelectionChanged();//from salome selectionManager
241     bool _onSelectionChanged( const QItemSelection& sel, QLineEdit*   le );
242     bool _onSelectionChanged( const QItemSelection& sel, QListWidget* lw );
243     virtual void updateButtonBox();
244     void updateName();
245     virtual void selectElementOfModel();
246
247     };
248
249     class HEXABLOCK_EXPORT VertexDialog : public HexaBaseDialog,
250     public Ui::VertexDialog
251     {
252       Q_OBJECT
253
254     public:
255       VertexDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
256       virtual ~VertexDialog();
257
258       void clear();
259
260       void setValue(HEXA_NS::Vertex* v);
261       HEXA_NS::Vertex* getValue();
262
263       void setIndex(const QModelIndex& i);
264
265     public slots:
266     virtual bool apply(QModelIndex& result);
267
268     protected:
269     void _initInputWidget( Mode editmode );
270
271     private:
272     HEXA_NS::Vertex     *_value;
273     QModelIndex         _ivalue;
274     };
275
276
277     class HEXABLOCK_EXPORT EdgeDialog : public HexaBaseDialog,
278     public Ui::EdgeDialog
279     {
280       Q_OBJECT
281
282     public:
283       EdgeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
284       virtual ~EdgeDialog();
285
286       void clear();
287
288       void setValue(HEXA_NS::Edge* e);
289       HEXA_NS::Edge* getValue();
290
291     protected:
292       void _initInputWidget( Mode editmode );
293
294     public slots:
295     virtual bool apply(QModelIndex& result);
296
297     private:
298     HEXA_NS::Edge *_value;
299     QModelIndex   _ivalue;
300     };
301
302
303     class HEXABLOCK_EXPORT QuadDialog : public HexaBaseDialog,
304     public Ui::QuadDialog
305     {
306       Q_OBJECT
307
308     public:
309       QuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
310       virtual ~QuadDialog();
311
312       void clear();
313
314       void setValue(HEXA_NS::Quad* v);
315       HEXA_NS::Quad* getValue();
316
317     public slots:
318     virtual bool apply(QModelIndex& result);
319
320     protected:
321     void _initInputWidget( Mode editmode );
322
323     private:
324     HEXA_NS::Quad    *_value;
325     QModelIndex      _ivalue;
326     };
327
328
329
330     class HEXABLOCK_EXPORT HexaDialog : public HexaBaseDialog,
331     public Ui::HexaDialog
332     {
333       Q_OBJECT
334
335     public:
336       HexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
337       virtual ~HexaDialog();
338
339       void clear();
340       virtual QModelIndexList getAssocsVTK();
341
342       void setValue(HEXA_NS::Hexa* v);
343       HEXA_NS::Hexa* getValue();
344
345     public slots:
346     virtual bool apply(QModelIndex& result);
347
348     protected:
349     void _initInputWidget( Mode editmode );
350
351     protected slots:
352     void deleteQuadItem();
353     void deleteVertexItem();
354     void updateButtonBox();
355
356     private:
357     void _setValueQuads( HEXA_NS::Hexa* h );
358     void _setValueVertices( HEXA_NS::Hexa* h );
359
360     HEXA_NS::Hexa   *_value;
361     QModelIndex     _ivalue;
362     };
363
364
365     class HEXABLOCK_EXPORT VectorDialog : public HexaBaseDialog,
366     public Ui::VectorDialog
367     {
368       Q_OBJECT
369
370     public:
371       VectorDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
372       virtual ~VectorDialog();
373
374       void clear();
375
376       void setValue(HEXA_NS::Vector* v);
377       HEXA_NS::Vector* getValue();
378
379     public slots:
380     virtual bool apply(QModelIndex& result);
381
382     protected:
383     void _initInputWidget( Mode editmode );
384
385     private:
386     HEXA_NS::Vector *_value;
387     QModelIndex     _ivalue;
388     };
389
390     class HEXABLOCK_EXPORT MakeGridDialog : public HexaBaseDialog,
391     public Ui::MakeGridDialog
392     {
393       Q_OBJECT
394
395     public:
396       MakeGridDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
397       virtual ~MakeGridDialog();
398
399       void clear();
400
401     public slots:
402     virtual bool apply(QModelIndex& result);
403
404     protected:
405     void _initInputWidget( Mode editmode );
406
407     protected slots:
408     void addRadiusItem();
409     void delRadiusItem();
410     void addAngleItem();
411     void delAngleItem();
412     void addHeightItem();
413     void delHeightItem();
414     void updateHelpFileName();
415
416     };
417
418
419     class HEXABLOCK_EXPORT MakeCylinderDialog : public HexaBaseDialog,
420     public Ui::MakeCylinderDialog
421     {
422       Q_OBJECT
423
424     public:
425       MakeCylinderDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
426       virtual ~MakeCylinderDialog();
427
428       void clear();
429
430     protected:
431       void _initInputWidget( Mode editmode );
432
433     protected slots:
434       void addRadiusItem();
435       void delRadiusItem();
436       void addAngleItem();
437       void delAngleItem();
438       void addHeightItem();
439       void delHeightItem();
440       void updateHelpFileName();
441
442     public slots:
443     virtual bool apply(QModelIndex& result);
444     };
445
446
447     class HEXABLOCK_EXPORT MakePipeDialog : public HexaBaseDialog,
448     public Ui::MakePipeDialog
449     {
450       Q_OBJECT
451
452     public:
453       MakePipeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
454       virtual ~MakePipeDialog();
455
456       void clear();
457
458     public slots:
459     virtual bool apply(QModelIndex& result);
460
461     protected:
462     void _initInputWidget( Mode editmode );
463
464     protected slots:
465     void addRadiusItem();
466     void delRadiusItem();
467     void addAngleItem();
468     void delAngleItem();
469     void addHeightItem();
470     void delHeightItem();
471     void updateHelpFileName();
472     };
473
474
475     class HEXABLOCK_EXPORT MakeCylindersDialog : public HexaBaseDialog,
476     public Ui::MakeCylindersDialog
477     {
478       Q_OBJECT
479
480     public:
481       MakeCylindersDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
482       virtual ~MakeCylindersDialog();
483
484       void clear();
485
486     public slots:
487     virtual bool apply(QModelIndex& result);
488
489     protected:
490     void _initInputWidget( Mode editmode );
491     };
492
493
494     class HEXABLOCK_EXPORT MakePipesDialog : public HexaBaseDialog,
495     public Ui::MakePipesDialog
496     {
497       Q_OBJECT
498
499     public:
500       MakePipesDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
501       virtual ~MakePipesDialog();
502
503       void clear();
504
505     public slots:
506     virtual bool apply(QModelIndex& result);
507
508     protected:
509     void _initInputWidget( Mode editmode );
510     };
511
512
513
514     class HEXABLOCK_EXPORT RemoveHexaDialog : public HexaBaseDialog,
515     public Ui::RemoveHexaDialog
516     {
517       Q_OBJECT
518
519     public:
520       RemoveHexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
521       virtual ~RemoveHexaDialog();
522
523       void clear();
524
525     public slots:
526     virtual bool apply(QModelIndex& result);
527
528     protected:
529     void _initInputWidget( Mode editmode );
530     };
531
532
533     class HEXABLOCK_EXPORT PrismQuadDialog : public HexaBaseDialog,
534     public Ui::PrismQuadDialog
535     {
536       Q_OBJECT
537
538     public:
539       PrismQuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
540       virtual ~PrismQuadDialog();
541       void clear();
542       virtual QModelIndexList getAssocsVTK();
543
544     public slots:
545     virtual bool apply(QModelIndex& result);
546
547     protected:
548     void _initInputWidget( Mode editmode );
549
550     protected slots:
551     void addHeightItem();
552     void delHeightItem();
553     void updateHelpFileName();
554
555     private slots:
556     //void addQuad();
557     void removeQuad();
558     //void clearQuads();
559
560     };
561
562     class HEXABLOCK_EXPORT JoinQuadDialog : public HexaBaseDialog,
563     public Ui::JoinQuadDialog
564     {
565       Q_OBJECT
566
567     public:
568       JoinQuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
569       virtual ~JoinQuadDialog();
570
571       void clear();
572       virtual QModelIndexList getAssocsVTK();
573
574     public slots:
575     virtual bool apply(QModelIndex& result);
576
577     protected:
578     void _initInputWidget( Mode editmode );
579
580     protected slots:
581     void addHeightItem();
582     void delHeightItem();
583     void updateHelpFileName();
584
585     private slots:
586     //void addQuad();
587     void removeQuad();
588     //void clearQuads();
589
590     };
591
592
593     class HEXABLOCK_EXPORT MergeDialog : public HexaBaseDialog,
594     public Ui::MergeDialog
595     {
596       Q_OBJECT
597
598     public:
599       MergeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
600       virtual ~MergeDialog();
601
602       void clear();
603
604     public slots:
605     virtual bool apply(QModelIndex& result);
606
607     protected:
608     void _initInputWidget( Mode editmode );
609
610     protected slots:
611     void updateHelpFileName();
612
613
614     };
615
616
617     class HEXABLOCK_EXPORT DisconnectDialog : public HexaBaseDialog,
618     public Ui::DisconnectDialog
619     {
620       Q_OBJECT
621
622     public:
623       DisconnectDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
624       virtual ~DisconnectDialog();
625
626       void clear();
627       virtual QModelIndexList getAssocsVTK();
628
629     public slots:
630     virtual bool apply(QModelIndex& result);
631
632     protected:
633     void _initInputWidget( Mode editmode );
634
635     protected slots:
636     void updateHelpFileName();
637     void deleteEdgeItem();
638     void deleteHexaItem();
639     };
640
641
642
643     class HEXABLOCK_EXPORT CutEdgeDialog : public HexaBaseDialog,
644     public Ui::CutEdgeDialog
645     {
646       Q_OBJECT
647
648     public:
649       CutEdgeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
650       virtual ~CutEdgeDialog();
651
652       void clear();
653
654     protected slots:
655     void addHeightItem();
656     void delHeightItem();
657     void updateHelpFileName();
658
659     public slots:
660     virtual bool apply(QModelIndex& result);
661
662     protected:
663     void _initInputWidget( Mode editmode );
664     };
665
666
667     class HEXABLOCK_EXPORT MakeTransformationDialog : public HexaBaseDialog,
668     public Ui::TransformationDialog
669     {
670       Q_OBJECT
671
672     public:
673       MakeTransformationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
674       virtual ~MakeTransformationDialog ();
675
676       void clear();
677
678     public slots:
679     virtual bool apply(QModelIndex& result);
680
681     protected:
682     void _initInputWidget( Mode editmode );
683
684     protected slots:
685     void updateHelpFileName();
686     };
687
688
689     class HEXABLOCK_EXPORT MakeSymmetryDialog : public HexaBaseDialog,
690     public Ui::SymmetryDialog
691     {
692       Q_OBJECT
693
694     public:
695       MakeSymmetryDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
696       virtual ~MakeSymmetryDialog();
697
698       void clear();
699
700     public slots:
701     virtual bool apply(QModelIndex& result);
702
703     protected:
704     void _initInputWidget( Mode editmode );
705
706     protected slots:
707     void updateHelpFileName();
708     };
709
710
711
712
713     class HEXABLOCK_EXPORT PerformTransformationDialog : public HexaBaseDialog,
714     public Ui::TransformationDialog
715     {
716       Q_OBJECT
717
718     public:
719       PerformTransformationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
720       virtual ~PerformTransformationDialog ();
721
722       void clear();
723
724     public slots:
725     virtual bool apply(QModelIndex& result);
726
727     protected:
728     void _initInputWidget( Mode editmode );
729
730     protected slots:
731     void updateHelpFileName();
732     };
733
734
735     class HEXABLOCK_EXPORT PerformSymmetryDialog : public HexaBaseDialog,
736     public Ui::SymmetryDialog
737     {
738       Q_OBJECT
739
740     public:
741       PerformSymmetryDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
742       virtual ~PerformSymmetryDialog();
743
744       void clear();
745
746     public slots:
747     virtual bool apply(QModelIndex& result);
748
749     protected:
750     void _initInputWidget( Mode editmode );
751
752     protected slots:
753     void updateHelpFileName();
754     };
755
756 class HEXABLOCK_EXPORT EdgeAssocDialog : public HexaBaseDialog,
757     public Ui::EdgeAssocDialog
758     {
759       Q_OBJECT
760
761     public:
762       EdgeAssocDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
763       virtual ~EdgeAssocDialog();
764       void clear();
765       virtual QModelIndexList getAssocsVTK();
766       virtual QMultiMap<QString, int> getAssocsGEOM();
767       virtual void setCurrentGeomObj(DocumentModel::GeomObj* geomObj) { myLine = geomObj; }
768
769     public slots:
770     virtual bool apply(QModelIndex& result);
771     virtual void close();
772     virtual void onWindowActivated(SUIT_ViewManager*);
773
774     protected:
775     virtual void _initInputWidget( Mode editmode );
776
777     protected slots:
778     virtual void selectElementOfGeom();
779     void updateHelpFileName();
780
781     void deleteEdgeItem(){
782         delete edges_lw->currentItem();
783     }
784     void deleteLineItem(){
785         delete lines_lw->currentItem();
786     };
787
788     private:
789     DocumentModel::GeomObj* myLine;
790
791     };
792
793
794     class HEXABLOCK_EXPORT QuadAssocDialog : public HexaBaseDialog,
795     public Ui::QuadAssocDialog
796     {
797       Q_OBJECT
798
799     public:
800       QuadAssocDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
801       virtual ~QuadAssocDialog();
802       void clear();
803       virtual QModelIndexList getAssocsVTK();
804       virtual QMultiMap<QString, int> getAssocsGEOM();
805
806     public slots:
807     virtual bool apply(QModelIndex& result);
808     virtual void close();
809     virtual void onWindowActivated(SUIT_ViewManager*);
810
811     protected:
812     virtual void _initInputWidget( Mode editmode );
813
814     protected slots:
815     void deleteFaceItem();
816     virtual void selectElementOfGeom();
817
818     private:
819     QList<DocumentModel::GeomObj> _assocs;
820     QShortcut*                    _delFaceShortcut;
821     };
822
823
824
825     class HEXABLOCK_EXPORT GroupDialog : public HexaBaseDialog,
826     public Ui::GroupDialog
827     {
828       Q_OBJECT
829
830       QMap<DocumentModel::Group, QString> strKind;
831
832     public:
833       GroupDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
834       virtual ~GroupDialog();
835       void clear();
836       virtual QModelIndexList getAssocsVTK();
837
838       void setValue(HEXA_NS::Group* v);
839       HEXA_NS::Group* getValue();
840
841     public slots:
842     virtual bool apply(QModelIndex& result);
843
844     protected:
845     void _initInputWidget( Mode editmode );
846
847     private slots:
848     void removeEltBase();
849     void onKindChanged( int index );
850
851     private:
852     HEXA_NS::Group   *_value;
853     };
854
855
856
857     class HEXABLOCK_EXPORT LawDialog : public HexaBaseDialog,
858     public Ui::LawDialog
859     {
860       Q_OBJECT
861
862       QMap<DocumentModel::KindLaw, QString> strKind;
863
864     public:
865       LawDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
866       virtual ~LawDialog();
867       void clear();
868
869       void setValue(HEXA_NS::Law* v);
870       HEXA_NS::Law* getValue();
871
872     public slots:
873     virtual bool apply(QModelIndex& result);
874
875     protected:
876     void _initInputWidget( Mode editmode );
877
878     private:
879     HEXA_NS::Law   *_value;
880     };
881
882
883
884
885     class HEXABLOCK_EXPORT PropagationDialog : public HexaBaseDialog,
886     public Ui::PropagationDialog
887     {
888       Q_OBJECT
889
890     public:
891       PropagationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
892       virtual ~PropagationDialog();
893       void clear();
894
895       void setValue(HEXA_NS::Propagation* v);
896       HEXA_NS::Propagation* getValue();
897
898     public slots:
899     virtual bool apply(QModelIndex& result);
900
901     protected:
902     void _initInputWidget( Mode editmode );
903
904     protected slots:
905     //void updateHelpFileName();
906     void deletePropagationItem();
907     virtual void selectElementOfModel();
908
909     private:
910     HEXA_NS::Propagation *_value;
911     };
912
913
914
915     // Define the compute mesh dialog box
916     // ----------------------------------
917
918     class HEXABLOCK_EXPORT ComputeMeshDialog : public HexaBaseDialog,
919     public Ui::ComputeMeshDialog
920     {
921       Q_OBJECT
922
923     public:
924       ComputeMeshDialog( QWidget* parent = 0, Mode editmode = NEW_MODE, Qt::WindowFlags f = Qt::SubWindow );
925       virtual ~ComputeMeshDialog();
926       void clear();
927
928       void setDocumentModel(DocumentModel* m);
929
930     public slots:
931     virtual bool apply(QModelIndex& result);
932
933     protected:
934     void _initInputWidget( Mode editmode );
935     };
936
937
938
939     class HEXABLOCK_EXPORT ReplaceHexaDialog : public HexaBaseDialog,
940     public Ui::ReplaceHexaDialog
941     {
942       Q_OBJECT
943
944     public:
945       ReplaceHexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
946       virtual ~ReplaceHexaDialog();
947       void clear();
948       virtual QModelIndexList getAssocsVTK();
949
950
951     public slots:
952     virtual bool apply(QModelIndex& result);
953
954     protected:
955     void _initInputWidget( Mode editmode );
956
957     protected slots:
958     void deleteQuadItem();
959     void deleteQuadItem2();
960     void updateButtonBox();
961     //void updateHelpFileName();
962
963     private:
964     HEXA_NS::Elements *_value;
965     };
966
967
968
969
970
971     class HEXABLOCK_EXPORT QuadRevolutionDialog : public HexaBaseDialog,
972     public Ui::QuadRevolutionDialog
973     {
974       Q_OBJECT
975
976     public:
977       QuadRevolutionDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
978       virtual ~QuadRevolutionDialog();
979       void clear();
980       virtual QModelIndexList getAssocsVTK();
981
982     public slots:
983     virtual bool apply(QModelIndex& result);
984
985     protected:
986     void _initInputWidget( Mode editmode );
987
988     protected slots:
989     void addAngleItem();
990     void delAngleItem();
991     void delQuadItem();
992     void updateHelpFileName();
993
994     private:
995     HEXA_NS::Elements *_value;
996     };
997
998
999
1000     class HEXABLOCK_EXPORT MakeHemiSphereDialog : public HexaBaseDialog,
1001     public Ui::MakeHemiSphereDialog
1002     {
1003       Q_OBJECT
1004
1005     public:
1006       MakeHemiSphereDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 );
1007       virtual ~MakeHemiSphereDialog();
1008       void clear();
1009
1010     public slots:
1011     virtual bool apply(QModelIndex& result);
1012
1013     protected:
1014     void _initInputWidget( Mode editmode );
1015
1016     protected slots:
1017     void addRadiusItem1();
1018     void delRadiusItem1();
1019     void addRadiusItem2();
1020     void delRadiusItem2();
1021     void addAngleItem();
1022     void delAngleItem();
1023     void addHeightItem();
1024     void delHeightItem();
1025     void updateHelpFileName();
1026
1027     private:
1028     HEXA_NS::Elements *_value;
1029     };
1030
1031     class HEXABLOCK_EXPORT ModelInfoDialog : public HexaBaseDialog,
1032     public Ui::ModelInfoDialog
1033     {
1034         Q_OBJECT
1035
1036     public:
1037         ModelInfoDialog( QWidget* parent = NULL, Qt::WindowFlags wf = Qt::SubWindow );
1038         virtual ~ModelInfoDialog(){}
1039
1040     public slots:
1041         void updateInfo();
1042
1043     protected:
1044         virtual void hideEvent ( QHideEvent * event );
1045         virtual void showEvent ( QShowEvent * event );
1046         virtual bool apply(QModelIndex& result){ return true;}
1047         virtual void _initInputWidget( Mode editmode ){}
1048     };
1049
1050     class HEXABLOCK_EXPORT AddShapeDialog : public HexaBaseDialog,
1051     public Ui::AddShapeDialog
1052     {
1053         Q_OBJECT
1054
1055     public:
1056         AddShapeDialog( QWidget* parent = NULL, Mode editmode = NEW_MODE, Qt::WindowFlags wf = Qt::SubWindow );
1057         virtual ~AddShapeDialog();
1058         void clear();
1059
1060     public slots:
1061         virtual bool apply(QModelIndex& result);
1062         virtual void close();
1063         virtual void onWindowActivated(SUIT_ViewManager*);
1064
1065     protected:
1066         virtual void _initInputWidget( Mode editmode );
1067
1068     protected slots:
1069         virtual void onCurrentSelectionChanged();
1070     };
1071
1072   }
1073 }
1074
1075 #endif