Salome HOME
Initial version
[modules/gui.git] / src / Qtx / QtxDialog.h
1 // File:      QtxDialog.hxx
2 // Author:    Sergey TELKOV
3
4 #ifndef QTXDIALOG_H
5 #define QTXDIALOG_H
6
7 #include "Qtx.h"
8
9 #include <qmap.h>
10 #include <qdialog.h>
11 #include <qvaluelist.h>
12
13 class QFrame;
14 class QLabel;
15 class QButton;
16
17 #ifdef WIN32
18 #pragma warning( disable:4251 )
19 #endif
20
21 class QTX_EXPORT QtxDialog : public QDialog
22 {
23           Q_OBJECT
24
25         class Area;
26         class Border;
27
28 public:
29     typedef enum { Position, Expand, Uniform } PlacePolicy;
30     typedef enum { TopArea, BottomArea, LeftArea, RightArea } ButtonArea;
31     typedef enum { Left, Right, Center, Top = Left, Bottom = Right } ButtonPosition;
32
33     typedef enum { None      = 0x00000000,
34                    OK        = 0x00000001,
35                    Apply     = 0x00000002,
36                    Cancel    = 0x00000004,
37                    Yes       = 0x00000008,
38                    No        = 0x00000010,
39                    Close     = 0x00000020,
40                    Help      = 0x00000040,
41                    OKCancel  = OK  | Cancel,
42                    YesNo     = Yes | No,
43                    Standard  = OK  | Cancel | Help,
44                    All       = Standard | YesNo | Apply | Close } ButtonFlags;
45
46     typedef enum { Accept    = 0x000001,
47                                    Reject    = 0x000002,
48                                    AlignOnce = 0x000004 } DialogFlags;
49
50 public:
51     QtxDialog( QWidget* = 0, const char* = 0, bool = false,
52                bool = false, const int = Standard, WFlags = 0 );
53     virtual ~QtxDialog();
54     
55     void             setDialogFlags( const int );
56     void             clearDialogFlags( const int );
57     bool             testDialogFlags( const int ) const;
58     
59     void             setButtonFlags( const int );
60     void             clearButtonFlags( const int );
61     bool             testButtonFlags( const int ) const;
62     
63     int              buttonPosition( const int ) const;
64     void             setButtonPosition( const int, const int = -1 );
65     void             setPlacePosition( const int, const int );
66     
67     int              placePolicy( const int ) const;
68     void             setPlacePolicy( const int, const int );
69     void             setButtonPlace( const int, const int );
70     
71     QString          buttonText( const int );
72     void             setButtonText( const int, const QString& text );
73     
74     void             setButtonFocus( const int );
75     bool             hasButtonFocus( const int ) const;
76     
77     bool             isButtonEnabled( const int ) const;
78     void             setButtonEnabled( const bool, const int );
79     
80     bool             isBorderEnabled( const int ) const;
81     void             setBorderEnabled( const bool, const int );
82     
83     void             removeButton( const int );
84     int              insertButton( const QString&, const int = BottomArea );
85     
86     QValueList<int>  userButtonIds() const;
87     QButton*         userButton( const int ) const;
88     
89     virtual void     show();
90     virtual void     hide();
91     
92     uint             setAlignment( uint align );
93     static  void     setUnits( QLabel*, const QString& );
94     
95 signals:
96     void             dlgButton( int );
97     void             dlgParamChanged();
98     
99     void             dlgHelp();
100     void             dlgApply();
101     
102     void             dlgOk();
103     void             dlgNo();
104     void             dlgYes();
105     void             dlgClose();
106     void             dlgCancel();
107     
108 public slots:
109     void             update();
110
111 protected slots:
112     virtual void     accept();
113     virtual void     reject();
114
115 private slots:
116     void             onAccept();
117     void             onReject();
118     void             onButton();
119     void             onSizeGripDestroyed();
120     void             onDestroyed( QObject* );
121     
122 protected:
123     typedef QMap<int, QButton*> ButtonMap;
124     
125 protected:
126     QFrame*          mainFrame() const;
127     
128     virtual bool     acceptData() const;
129     virtual bool     rejectData() const;
130     
131     virtual QButton* createButton( QWidget* );
132     
133     QButton*         button( const int ) const;
134     ButtonMap        buttons( const int = All ) const;
135     int              buttonId( const QButton* ) const;
136     int              buttonPosition( QButton* ) const;
137     
138     virtual void     showEvent( QShowEvent* );
139     virtual void     hideEvent( QHideEvent* );
140     virtual void     closeEvent( QCloseEvent* );
141     virtual void     childEvent( QChildEvent* );
142     virtual void     keyPressEvent( QKeyEvent* );
143     
144 private:
145         void             adjustButtons();
146     void             emitSignal();
147     
148 private:
149     typedef QMap<int, Area*> AreaMap;
150     typedef QMap<int, int>   PositionMap;
151     
152     friend class Area;
153     
154 private:
155     AreaMap          myArea;
156     ButtonMap        myButton;
157     PositionMap      myPosition;
158     
159     bool             myInited;
160     const QObject*   mySender;
161     uint             myAlignment;
162     QFrame*          myMainFrame;
163     int              myButtonFlags;
164     int              myDialogFlags;
165 };
166
167 #ifdef WIN32
168 #pragma warning( default:4251 )
169 #endif
170
171 #endif