]> SALOME platform Git repositories - modules/gui.git/blob - src/SUIT/SUIT_MessageBox.h
Salome HOME
6fb2e5164811aee3ecd22e46291bfcc8f9d09642
[modules/gui.git] / src / SUIT / SUIT_MessageBox.h
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 #ifndef SUIT_MESSAGEBOX_H
23 #define SUIT_MESSAGEBOX_H
24
25 #include "SUIT.h"
26
27 #include <QMap>
28 #include <QList>
29 #include <QMessageBox>
30
31 class SUIT_EXPORT SUIT_MessageBox : public QMessageBox
32 {
33 public:
34   // construction/destruction
35   SUIT_MessageBox( QWidget* = 0 );
36   SUIT_MessageBox( Icon, const QString&, const QString&, StandardButtons buttons = NoButton,
37                    QWidget* = 0, Qt::WindowFlags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint );
38   ~SUIT_MessageBox();
39
40   // customize the standard buttons text
41   QString               buttonText( StandardButton ) const;
42   void                  setButtonText( StandardButton, const QString& );
43
44   // message box with standard buttons
45   static StandardButton critical( QWidget* parent, const QString& title, const QString& text,
46                                   StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
47   static StandardButton warning( QWidget* parent, const QString& title, const QString& text,
48                                  StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
49   static StandardButton information( QWidget* parent, const QString& title, const QString& text,
50                                      StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
51   static StandardButton question( QWidget* parent, const QString& title, const QString& text,
52                                   StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
53   
54   // message boxes with one custom button
55   static int            critical( QWidget* parent, const QString& title, const QString& text,
56                                   const QString& button );
57   static int            warning( QWidget* parent, const QString& title, const QString& text,
58                                  const QString& button );
59   static int            information( QWidget* parent, const QString& title, const QString& text,
60                                      const QString& button );
61   static int            question( QWidget* parent, const QString& title, const QString& text,
62                                   const QString& button );
63
64   // message boxes with two custom buttons
65   static int            critical( QWidget* parent, const QString& title, const QString& text,
66                                   const QString& button1, const QString& button2, 
67                                   const int defaultButton = -1, const int escapeButton = -1 );
68   static int            warning( QWidget* parent, const QString& title, const QString& text,
69                                  const QString& button1, const QString& button2, 
70                                  const int defaultButton = -1, const int escapeButton = -1 );
71   static int            information( QWidget* parent, const QString& title, const QString& text,
72                                      const QString& button1, const QString& button2, 
73                                      const int defaultButton = -1, const int escapeButton = -1 );
74   static int            question( QWidget* parent, const QString& title, const QString& text,
75                                   const QString& button1, const QString& button2, 
76                                   const int defaultButton = -1, const int escapeButton = -1 );
77   
78   // message boxes with three custom buttons
79   static int            critical( QWidget* parent, const QString& title, const QString& text,
80                                   const QString& button1, const QString& button2, const QString& button3,
81                                   const int defaultButton = -1, const int escapeButton = -1 );
82   static int            warning( QWidget* parent, const QString& title, const QString& text,
83                                  const QString& button1, const QString& button2, const QString& button3,
84                                  const int defaultButton = -1, const int escapeButton = -1 );
85   static int            information( QWidget* parent, const QString& title, const QString& text,
86                                      const QString& button1, const QString& button2, const QString& button3,
87                                      const int defaultButton = -1, const int escapeButton = -1 );
88   static int            question( QWidget* parent, const QString& title, const QString& text,
89                                   const QString& button1, const QString& button2, const QString& button3,
90                                   const int defaultButton = -1, const int escapeButton = -1 );
91   
92   // message boxes with four custom buttons
93   static int            critical( QWidget* parent, const QString& title, const QString& text,
94                                   const QString& button1, const QString& button2,
95                                   const QString& button3, const QString& button4,
96                                   const int defaultButton = -1, const int escapeButton = -1 );
97   static int            warning( QWidget* parent, const QString& title, const QString& text,
98                                  const QString& button1, const QString& button2,
99                                  const QString& button3, const QString& button4,
100                                  const int defaultButton = -1, const int escapeButton = -1 );
101   static int            information( QWidget* parent, const QString& title, const QString& text,
102                                      const QString& button1, const QString& button2,
103                                      const QString& button3, const QString& button4,
104                                      const int defaultButton = -1, const int escapeButton = -1 );
105   static int            question( QWidget* parent, const QString& title, const QString& text,
106                                   const QString& button1, const QString& button2,
107                                   const QString& button3, const QString& button4,
108                                   const int defaultButton = -1, const int escapeButton = -1 );
109   
110   // message boxes with arbitrary number of buttons
111   static int            critical( QWidget* parent, const QString& title, const QString& text, 
112                                   const int defaultButton, const int escapeButton, 
113                                   char*, ... );
114   static int            warning( QWidget* parent, const QString& title, const QString& text,
115                                  const int defaultButton, const int escapeButton, 
116                                  char*, ... );
117   static int            information( QWidget* parent, const QString& title, const QString& text,
118                                      const int defaultButton, const int escapeButton, 
119                                      char*, ... );
120   static int            question( QWidget* parent, const QString& title, const QString& text,
121                                   const int defaultButton, const int escapeButton, 
122                                   char*, ... );
123
124 private:
125   class ButtonInfo
126   {
127   public:
128     ButtonInfo( const int id, 
129                 const QString& text, 
130                 const ButtonRole role = ActionRole )
131       : myId( id ), myText( text ), myRole( role ) {}
132     int        id()   const { return myId;   }
133     QString    text() const { return myText; }
134     ButtonRole role() const { return myRole; }
135   private:
136     int        myId;      //!< button id
137     QString    myText;    //!< button text
138     ButtonRole myRole;    //!< button role
139   };
140
141   typedef QList<ButtonInfo> ButtonInfos;
142
143 private:
144   static int          messageBox( SUIT_MessageBox::Icon icon, QWidget* parent, 
145                                   const QString& title, const QString& text, 
146                                   const ButtonInfos& lst, 
147                                   const int defaultButton = -1, 
148                                   const int escapeButton  = -1 );
149   static ButtonInfos  messageList( char*, va_list& );
150 };
151
152 #endif