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