Salome HOME
PAL6938
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_FilterLibraryDlg.h
1 //  SMESH SMESHGUI : GUI for SMESH component
2 //
3 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5 // 
6 //  This library is free software; you can redistribute it and/or 
7 //  modify it under the terms of the GNU Lesser General Public 
8 //  License as published by the Free Software Foundation; either 
9 //  version 2.1 of the License. 
10 // 
11 //  This library is distributed in the hope that it will be useful, 
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14 //  Lesser General Public License for more details. 
15 // 
16 //  You should have received a copy of the GNU Lesser General Public 
17 //  License along with this library; if not, write to the Free Software 
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
19 // 
20 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 //
22 //
23 //
24 //  File   : SMESHGUI_FilterLibraryDlg.h
25 //  Author : Sergey LITONIN
26 //  Module : SMESH
27
28
29 #ifndef SMESHGUI_FilterLibraryDlg_H
30 #define SMESHGUI_FilterLibraryDlg_H
31
32 #include <qdialog.h>
33 #include <SMESHGUI_FilterDlg.h>
34
35 #include <SALOMEconfig.h>
36 #include CORBA_SERVER_HEADER(SMESH_Filter)
37
38 class QCloseEvent;
39 class QListBox;
40 class QFrame;
41 class QEvent;
42 class QLineEdit;
43 class QPushButton;
44 class QGroupBox;
45
46 /*
47   Class       : SMESHGUI_FilterLibraryDlg
48   Description : Dialog to specify filters for VTK viewer
49 */
50
51 class SMESHGUI_FilterLibraryDlg : public QDialog
52
53   Q_OBJECT
54   
55   // Buttons
56   enum { BTN_OK, BTN_Cancel, BTN_Apply, BTN_Close };
57
58   class Dialog;
59   
60 public:
61   
62   // Mode
63   enum { ADD_TO, COPY_FROM, EDIT };
64     
65 public:
66   
67                               SMESHGUI_FilterLibraryDlg( QWidget*               parent,
68                                                          const QValueList<int>& types,
69                                                          const int              mode,
70                                                          const char*            name = 0 );
71                                                 
72                               SMESHGUI_FilterLibraryDlg( QWidget*               parent,
73                                                          const int              type,
74                                                          const int              mode,
75                                                          const char*            name = 0 );
76                                                          
77   virtual                     ~SMESHGUI_FilterLibraryDlg();
78                             
79   void                        Init( const QValueList<int>& types, const int theMode );
80   void                        Init( const int type, const int theMode );
81   
82   const SMESHGUI_FilterTable* GetTable() const;
83   void                        SetTable( const SMESHGUI_FilterTable* );
84
85 private:
86
87   void                        closeEvent( QCloseEvent* e ) ;
88   void                        enterEvent ( QEvent * ) ;            
89   
90 private slots:
91
92   void                        onOk();
93   bool                        onApply();
94   void                        onClose();
95
96   void                        onDeactivate();
97   
98   void                        onBrowse();
99   void                        onReturnPressed();
100   void                        onFilterChanged( const QString& );
101   void                        onAddBtnPressed();
102   void                        onDeleteBtnPressed();
103   void                        onFilterNameChanged( const QString& );
104   void                        onEntityTypeChanged( const int );
105   void                        onNeedValidation();
106
107 private:
108
109   void                        construct( const QValueList<int>& types, const int mode ); 
110   QFrame*                     createButtonFrame( QWidget* );
111   QFrame*                     createMainFrame  ( QWidget* );
112   bool                        isValid( const bool theMess = true ) const;
113   bool                        isNameValid( const bool theMess = true ) const;
114   SMESH::Filter_ptr           createFilter( const int theType = -1 );
115   QStringList                 prepareFilters() const;
116   QString                     autoExtension( const QString& ) const;
117   bool                        setSelected( const QString& );
118   int                         getIndex( const QString& ) const;
119   void                        updateControlsVisibility();
120   void                        updateMainButtons();
121   void                        enableMainButtons();
122   void                        processNewLibrary();
123   QString                     getFileName() const;
124   void                        setFileName( const QString& txt, const bool autoExtension = true );
125   QStringList                 filterWildCards( const QString& theFilter ) const;
126   QString&                    getDefaultLibraryName() const;
127   QString                     getDefaultFilterName() const;
128   void                        addFilterToLib( const QString& name );
129   void                        updateList();
130   bool                        isPermissionValid( const bool theIsExistingOnly );
131
132 private:
133
134   QFrame*                     myMainFrame;
135   QMap<int, QPushButton*>     myButtons;
136   SMESHGUI_FilterTable*       myTable;
137   QLineEdit*                  myFileName;
138   QPushButton*                myOpenBtn;
139   QListBox*                   myListBox;
140   QPushButton*                myAddBtn;
141   QPushButton*                myDeleteBtn;
142   QGroupBox*                  myNameGrp;
143   QLineEdit*                  myName;
144
145   QValueList<int>             myTypes;
146   int                         myMode;
147       
148   SMESH::FilterLibrary_var    myLibrary;
149   QString                     myCurrFilterName;
150   int                         myCurrFilter;
151
152 };
153
154 #endif