Salome HOME
updated copyright message
[modules/gui.git] / src / SUIT / SUIT_MessageBox.h
old mode 100755 (executable)
new mode 100644 (file)
index 24b3506..55967f3
@@ -1,17 +1,20 @@
-// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
-// 
+// Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either 
-// version 2.1 of the License.
-// 
-// This library is distributed in the hope that it will be useful 
-// but WITHOUT ANY WARRANTY; without even the implied warranty of 
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 // Lesser General Public License for more details.
 //
-// You should have received a copy of the GNU Lesser General Public  
-// License along with this library; if not, write to the Free Software 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 
 #include "SUIT.h"
 
-#include <qstring.h>
-#include <qwidget.h>
+#include <QMap>
+#include <QList>
+#include <QMessageBox>
 
-#define SUIT_OK                      1
-#define SUIT_CANCEL                  2
-#define SUIT_YES                     3
-#define SUIT_NO                      4
-#define SUIT_HELP                    5
-
-/*!
-  \class SUIT_MessageBox
-  \brief Message dialog box for SUIT-based application
-*/
-class SUIT_EXPORT SUIT_MessageBox
+class SUIT_EXPORT SUIT_MessageBox : public QMessageBox
 {
+  Q_OBJECT
 public:
-    
-    /** @name One button message boxes.*/
-    //@{
-    static int info1 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0 );
-    static int warn1 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0 );
-    static int error1 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0 );
-    static int question1 ( QWidget* parent, const QString& caption, const QString& text,
-                          const QString& textButton0 );
-    //@}
+  // construction/destruction
+  SUIT_MessageBox( QWidget* = 0 );
+  SUIT_MessageBox( Icon, const QString&, const QString&, StandardButtons buttons = NoButton,
+                   QWidget* = 0, Qt::WindowFlags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint );
+  ~SUIT_MessageBox();
+
+  // customize the standard buttons text
+  QString               buttonText( StandardButton ) const;
+  void                  setButtonText( StandardButton, const QString& );
+
+  // message box with standard buttons
+  static StandardButton critical( QWidget* parent, const QString& title, const QString& text,
+                                  StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
+  static StandardButton warning( QWidget* parent, const QString& title, const QString& text,
+                                 StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
+  static StandardButton information( QWidget* parent, const QString& title, const QString& text,
+                                     StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
+  static StandardButton question( QWidget* parent, const QString& title, const QString& text,
+                                  StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
+  
+  // message boxes with one custom button
+  static int            critical( QWidget* parent, const QString& title, const QString& text,
+                                  const QString& button );
+  static int            warning( QWidget* parent, const QString& title, const QString& text,
+                                 const QString& button );
+  static int            information( QWidget* parent, const QString& title, const QString& text,
+                                     const QString& button );
+  static int            question( QWidget* parent, const QString& title, const QString& text,
+                                  const QString& button );
+
+  // message boxes with two custom buttons
+  static int            critical( QWidget* parent, const QString& title, const QString& text,
+                                  const QString& button1, const QString& button2, 
+                                  const int defaultButton = -1, const int escapeButton = -1 );
+  static int            warning( QWidget* parent, const QString& title, const QString& text,
+                                 const QString& button1, const QString& button2, 
+                                 const int defaultButton = -1, const int escapeButton = -1 );
+  static int            information( QWidget* parent, const QString& title, const QString& text,
+                                     const QString& button1, const QString& button2, 
+                                     const int defaultButton = -1, const int escapeButton = -1 );
+  static int            question( QWidget* parent, const QString& title, const QString& text,
+                                  const QString& button1, const QString& button2, 
+                                  const int defaultButton = -1, const int escapeButton = -1 );
+  
+  // message boxes with three custom buttons
+  static int            critical( QWidget* parent, const QString& title, const QString& text,
+                                  const QString& button1, const QString& button2, const QString& button3,
+                                  const int defaultButton = -1, const int escapeButton = -1 );
+  static int            warning( QWidget* parent, const QString& title, const QString& text,
+                                 const QString& button1, const QString& button2, const QString& button3,
+                                 const int defaultButton = -1, const int escapeButton = -1 );
+  static int            information( QWidget* parent, const QString& title, const QString& text,
+                                     const QString& button1, const QString& button2, const QString& button3,
+                                     const int defaultButton = -1, const int escapeButton = -1 );
+  static int            question( QWidget* parent, const QString& title, const QString& text,
+                                  const QString& button1, const QString& button2, const QString& button3,
+                                  const int defaultButton = -1, const int escapeButton = -1 );
+  
+  // message boxes with four custom buttons
+  static int            critical( QWidget* parent, const QString& title, const QString& text,
+                                  const QString& button1, const QString& button2,
+                                  const QString& button3, const QString& button4,
+                                  const int defaultButton = -1, const int escapeButton = -1 );
+  static int            warning( QWidget* parent, const QString& title, const QString& text,
+                                 const QString& button1, const QString& button2,
+                                 const QString& button3, const QString& button4,
+                                 const int defaultButton = -1, const int escapeButton = -1 );
+  static int            information( QWidget* parent, const QString& title, const QString& text,
+                                     const QString& button1, const QString& button2,
+                                     const QString& button3, const QString& button4,
+                                     const int defaultButton = -1, const int escapeButton = -1 );
+  static int            question( QWidget* parent, const QString& title, const QString& text,
+                                  const QString& button1, const QString& button2,
+                                  const QString& button3, const QString& button4,
+                                  const int defaultButton = -1, const int escapeButton = -1 );
+  
+  // message boxes with arbitrary number of buttons
+  static int            critical( QWidget* parent, const QString& title, const QString& text,
+                                  const QStringList& buttons,
+                                  const int defaultButton = -1, const int escapeButton = -1 );
+  static int            warning( QWidget* parent, const QString& title, const QString& text,
+                                const QStringList& buttons,
+                                 const int defaultButton = -1, const int escapeButton = -1 );
+  static int            information( QWidget* parent, const QString& title, const QString& text,
+                                    const QStringList& buttons,
+                                     const int defaultButton = -1, const int escapeButton = -1 );
+  static int            question( QWidget* parent, const QString& title, const QString& text,
+                                  const QStringList& buttons,
+                                  const int defaultButton = -1, const int escapeButton = -1 );
+
+  static int            critical( QWidget* parent, const QString& title, const QString& text, 
+                                  const int defaultButton, const int escapeButton, 
+                                  char*, ... );
+  static int            warning( QWidget* parent, const QString& title, const QString& text,
+                                 const int defaultButton, const int escapeButton, 
+                                 char*, ... );
+  static int            information( QWidget* parent, const QString& title, const QString& text,
+                                     const int defaultButton, const int escapeButton, 
+                                     char*, ... );
+  static int            question( QWidget* parent, const QString& title, const QString& text,
+                                  const int defaultButton, const int escapeButton, 
+                                  char*, ... );
+
+private:
+  class ButtonInfo
+  {
+  public:
+    ButtonInfo( const int id, 
+                const QString& text, 
+                const ButtonRole role = ActionRole )
+      : myId( id ), myText( text ), myRole( role ) {}
+    int        id()   const { return myId;   }
+    QString    text() const { return myText; }
+    ButtonRole role() const { return myRole; }
+  private:
+    int        myId;      //!< button id
+    QString    myText;    //!< button text
+    ButtonRole myRole;    //!< button role
+  };
 
-    /** @name Two buttons message boxes.*/
-    //@{
-    static int info2 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0, const QString& textButton1,
-                       int idButton0, int idButton1, int idDefault );
-    static int warn2 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0, const QString& textButton1,
-                       int idButton0, int idButton1, int idDefault );
-    static int error2 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0, const QString& textButton1,
-                       int idButton0, int idButton1, int idDefault );
-    static int question2 ( QWidget* parent, const QString& caption, const QString& text,
-                          const QString& textButton0, const QString& textButton1,
-                          int idButton0, int idButton1, int idDefault );
-    //@}
+  typedef QList<ButtonInfo> ButtonInfos;
 
-    /** @name Three buttons message boxes.*/
-    //@{
-    static int info3 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0, const QString& textButton1,
-                       const QString& textButton2, int idButton0, int idButton1,
-                       int idButton2, int idDefault );
-    static int warn3 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0, const QString& textButton1,
-                       const QString& textButton2, int idButton0, int idButton1,
-                       int idButton2, int idDefault );
-    static int error3 ( QWidget* parent, const QString& caption, const QString& text,
-                       const QString& textButton0, const QString& textButton1,
-                       const QString& textButton2, int idButton0, int idButton1,
-                       int idButton2, int idDefault );
-    static int question3 ( QWidget* parent, const QString& caption, const QString& text,
-                          const QString& textButton0, const QString& textButton1,
-                          const QString& textButton2, int idButton0, int idButton1,
-                          int idButton2, int idDefault );
-    //@}
+private:
+  static int          messageBox( SUIT_MessageBox::Icon icon, QWidget* parent, 
+                                  const QString& title, const QString& text, 
+                                  const ButtonInfos& lst, 
+                                  const int defaultButton = -1, 
+                                  const int escapeButton  = -1 );
+  static ButtonInfos  messageList( char*, va_list& );
 };
 
 #endif