Salome HOME
Initial version
[modules/gui.git] / src / Qtx / QtxPathDialog.h
1 // File:      QtxPathDialog.h
2 // Author:    Sergey TELKOV
3
4 #ifndef QTXPATHDIALOG_H
5 #define QTXPATHDIALOG_H
6
7 #include "QtxDialog.h"
8
9 #include <qmap.h>
10
11 class QFrame;
12 class QLineEdit;
13 class QPushButton;
14 class QFileDialog;
15
16 #ifdef WIN32
17 #pragma warning( disable:4251 )
18 #endif
19
20 class QTX_EXPORT QtxPathDialog : public QtxDialog
21 {
22   Q_OBJECT
23
24 protected:
25   QtxPathDialog( QWidget* = 0, const bool = true, const bool = false );
26
27 public:
28   QtxPathDialog( const bool, QWidget* = 0, const bool = true, const bool = false );
29   virtual ~QtxPathDialog();
30
31   QString            fileName() const;
32   void               setFileName( const QString&, const bool = false );
33
34   QString            filter() const;
35   void               setFilter( const QString& );
36
37   virtual void       show();
38
39 signals:
40   void               fileNameChanged( QString );
41
42 protected slots:
43   void               validate();
44
45 private slots:
46   void               onBrowse();
47   void               onReturnPressed();
48   void               onTextChanged( const QString& );
49
50 protected:
51   virtual bool       isValid();
52   virtual bool       acceptData() const;
53   virtual void       fileNameChanged( int, QString );
54
55   QFrame*            optionsFrame();
56   QString            fileName( const int ) const;
57   void               setFileName( const int, const QString&, const bool = false );
58
59   QLineEdit*         fileEntry( const int ) const;
60   QLineEdit*         fileEntry( const int, int& ) const;
61   int                createFileEntry( const QString&, const int, const int = -1 );
62
63   int                defaultEntry() const;
64   void               setDefaultEntry( const int );
65
66 private:
67   void               initialize();
68   QStringList        prepareFilters() const;
69         bool               hasVisibleChildren( QWidget* ) const;
70   QStringList        filterWildCards( const QString& ) const;
71   QString            autoExtension( const QString&, const QString& = QString::null ) const;
72
73 protected:
74   enum { OpenFile, SaveFile, OpenDir, SaveDir, NewDir };
75
76 private:
77   typedef struct { int mode; QLineEdit* edit;
78                    QPushButton* btn; QFileDialog* dlg; } FileEntry;
79   typedef QMap<int, FileEntry> FileEntryMap;
80
81 private:
82   QString            myFilter;
83   FileEntryMap       myEntries;
84   int                myDefault;
85   QFrame*            myEntriesFrame;
86   QFrame*            myOptionsFrame;
87 };
88
89 #ifdef WIN32
90 #pragma warning( default:4251 )
91 #endif
92
93 #endif