Salome HOME
Fix for bug 10438: Crash during Explode on Blocks operation (Global selection on...
[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,
49                    SetFocus  = 0x000008 } DialogFlags;
50
51 public:
52     QtxDialog( QWidget* = 0, const char* = 0, bool = false,
53                bool = false, const int = Standard, WFlags = 0 );
54     virtual ~QtxDialog();
55
56     void             setDialogFlags( const int );
57     void             clearDialogFlags( const int );
58     bool             testDialogFlags( const int ) const;
59
60     void             setButtonFlags( const int );
61     void             clearButtonFlags( const int );
62     bool             testButtonFlags( const int ) const;
63
64     int              buttonPosition( const int ) const;
65     void             setButtonPosition( const int, const int = -1 );
66     void             setPlacePosition( const int, const int );
67
68     int              placePolicy( const int ) const;
69     void             setPlacePolicy( const int, const int );
70     void             setButtonPlace( const int, const int );
71
72     QString          buttonText( const int );
73     void             setButtonText( const int, const QString& text );
74
75     void             setButtonFocus( const int );
76     bool             hasButtonFocus( const int ) const;
77
78     bool             isButtonEnabled( const int ) const;
79     void             setButtonEnabled( const bool, const int );
80
81     bool             isBorderEnabled( const int ) const;
82     void             setBorderEnabled( const bool, const int );
83
84     void             removeButton( const int );
85     int              insertButton( const QString&, const int = BottomArea );
86
87     QValueList<int>  userButtonIds() const;
88     QButton*         userButton( const int ) const;
89
90     virtual void     show();
91     virtual void     hide();
92
93     uint             setAlignment( uint align );
94     static  void     setUnits( QLabel*, const QString& );
95
96 signals:
97     void             dlgButton( int );
98     void             dlgParamChanged();
99
100     void             dlgHelp();
101     void             dlgApply();
102
103     void             dlgOk();
104     void             dlgNo();
105     void             dlgYes();
106     void             dlgClose();
107     void             dlgCancel();
108
109 public slots:
110     void             update();
111
112 protected slots:
113     virtual void     accept();
114     virtual void     reject();
115
116 private slots:
117     void             onAccept();
118     void             onReject();
119     void             onButton();
120     void             onSizeGripDestroyed();
121     void             onDestroyed( QObject* );
122
123 protected:
124     typedef QMap<int, QButton*> ButtonMap;
125
126 protected:
127     QFrame*          mainFrame() const;
128
129     virtual bool     acceptData() const;
130     virtual bool     rejectData() const;
131
132     virtual QButton* createButton( QWidget* );
133
134     QButton*         button( const int ) const;
135     ButtonMap        buttons( const int = All ) const;
136     int              buttonId( const QButton* ) const;
137     int              buttonPosition( QButton* ) const;
138
139     virtual void     showEvent( QShowEvent* );
140     virtual void     hideEvent( QHideEvent* );
141     virtual void     closeEvent( QCloseEvent* );
142     virtual void     childEvent( QChildEvent* );
143     virtual void     keyPressEvent( QKeyEvent* );
144
145 private:
146           void             adjustButtons();
147     void             emitSignal();
148
149 private:
150     typedef QMap<int, Area*> AreaMap;
151     typedef QMap<int, int>   PositionMap;
152
153     friend class Area;
154
155 private:
156     AreaMap          myArea;
157     ButtonMap        myButton;
158     PositionMap      myPosition;
159
160     bool             myInited;
161     const QObject*   mySender;
162     uint             myAlignment;
163     QFrame*          myMainFrame;
164     int              myButtonFlags;
165     int              myDialogFlags;
166 };
167
168 #ifdef WIN32
169 #pragma warning( default:4251 )
170 #endif
171
172 #endif