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