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