// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-/*!
- \class: SUIT_MessageBox
- Message dialog box for SUIT-based application
- Module: SUIT
- Created: UI team, 02.10.00
-*/
-
#include "SUIT_MessageBox.h"
#include "SUIT_OverrideCursor.h"
#include <QMessageBox>
#include <QPushButton>
#include <QApplication>
+#include <QString>
+
+#include <stdarg.h>
+
+/*!
+ \class SUIT_MessageBox
+ \brief Message dialog box for SUIT-based application
+
+ The class provides a modal dialog with a short message, an icon,
+ and buttons laid out depending on the current style.
+
+ Message boxes are used to provide informative messages and to ask
+ simple questions.
+
+ The easiest way to pop up a message box is to call one of the static
+ functions information(), question(), critical(), and warning().
+
+ The class provides the static functions to show message boxes with
+ standard buttons (like \c Ok, \c Cancel, \c Apply, \c Close, \c Yes,
+ \c No, \c Abort, \c Retry, etc). These methods accept ORed buttons
+ flags as one of the parameters. The buttons layouting type and order
+ is system-dependant and defined by the current style. In addition,
+ these methods allow to define default button (where input focus is
+ set by default and which is clicked when user presses \c Enter key).
+
+ Another set of static functions allows to show message boxes with
+ up to four user-defined buttons. It is possible to define default
+ and escape buttons using additional parameters.
+
+ And finally, the last group of static functions allow displaying
+ the message boxes with an arbitrary number of buttons.
+
+ For example:
+ \code
+ // show question message box with two standard buttons
+ int result = SUIT_MessageBox::question(desktop(), "Error",
+ "File already exists? Overwrite?",
+ SUIT_MessageBox::Yes | SUIT_MessageBox::No,
+ SUIT_MessageBox::No );
+ if ( result == SUIT_MessageBox::Yes )
+ overwriteFileFunction();
+
+ // show critical message box with user-defined buttons
+ // default is second button and escape is third button
+ int result = SUIT_MessageBox::critical(desktop(), "Hazard!",
+ "The situation is critical! What to do?",
+ "Hide", "Run Away", "Stand still", 1, 2);
+ switch ( result )
+ {
+ case 0:
+ hideMyself(); break;
+ case 1:
+ runAwayFromHere(); break;
+ case 2:
+ sitDownAndPray(); break;
+ default:
+ break;
+ }
+
+ // show message box with 6 buttons
+ // both default and escape buttons are set to first button ("Zero")
+ int result = SUIT_MessageBox::information(desktop(), "Question",
+ "Select your favourite number",
+ 0, 0,
+ "Zero", "One", "Two", "Three", "Four", "Five");
+ useMyFavouriteNumberSomewhere( result );
+ \endcode
+*/
/*!
- Constructor
+ \brief Constructor.
+ \param parent parent widget
*/
SUIT_MessageBox::SUIT_MessageBox( QWidget* parent )
: QMessageBox( parent )
}
/*!
- Constructor
+ \brief Constructor.
+ \param icon message box icon (QMessageBox::Icon)
+ \param title message box title
+ \param text message box text
+ \param buttons ORed message box standard buttons (QMessageBox::StandardButton)
+ \param parent parent widget
+ \param f window flags
*/
SUIT_MessageBox::SUIT_MessageBox( Icon icon, const QString& title, const QString& text,
StandardButtons buttons, QWidget* parent, Qt::WindowFlags f )
}
/*!
- Destructor
+ \brief Destructor.
*/
SUIT_MessageBox::~SUIT_MessageBox()
{
}
/*!
- Returns the text of the specified button
+ \brief Get the standard button text.
+ \param btn standard button id
+ \return button text
*/
QString SUIT_MessageBox::buttonText( StandardButton btn ) const
{
}
/*!
- Set the text of the specified button
+ \brief Set the standard button text.
+ \param btn standard button id
+ \param text new button text
*/
void SUIT_MessageBox::setButtonText( StandardButton btn, const QString& text )
{
}
/*!
- Shows critical message box with specified standard buttons. [ static ]
+ \brief Show critical message box with specified standard buttons.
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param buttons ORed message box buttons (QMessageBox::StandardButton)
+ \param defaultButton default button (QMessageBox::StandardButton)
+ \return button id clicked by the user (QMessageBox::StandardButton)
*/
SUIT_MessageBox::StandardButton SUIT_MessageBox::critical( QWidget* parent, const QString& title, const QString& text,
StandardButtons buttons, StandardButton defaultButton )
}
/*!
- Shows information message box with specified standard buttons. [ static ]
+ \brief Show warning message box with specified standard buttons.
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param buttons ORed message box buttons (QMessageBox::StandardButton)
+ \param defaultButton default button (QMessageBox::StandardButton)
+ \return button id clicked by the user (QMessageBox::StandardButton)
+*/
+SUIT_MessageBox::StandardButton SUIT_MessageBox::warning( QWidget* parent, const QString& title, const QString& text,
+ SUIT_MessageBox::StandardButtons buttons, StandardButton defaultButton )
+{
+ return QMessageBox::warning( parent, title, text, buttons, defaultButton );
+}
+
+/*!
+ \brief Show information message box with specified standard buttons.
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param buttons ORed message box buttons (QMessageBox::StandardButton)
+ \param defaultButton default button (QMessageBox::StandardButton)
+ \return button id clicked by the user (QMessageBox::StandardButton)
*/
SUIT_MessageBox::StandardButton SUIT_MessageBox::information( QWidget* parent, const QString& title, const QString& text,
StandardButtons buttons, StandardButton defaultButton )
}
/*!
- Shows question message box with specified standard buttons. [ static ]
+ \brief Show question message box with specified standard buttons.
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param buttons ORed message box buttons (QMessageBox::StandardButton)
+ \param defaultButton default button (QMessageBox::StandardButton)
+ \return button id clicked by the user (QMessageBox::StandardButton)
*/
SUIT_MessageBox::StandardButton SUIT_MessageBox::question( QWidget* parent, const QString& title, const QString& text,
StandardButtons buttons, StandardButton defaultButton )
}
/*!
- Shows warning message box with specified standard buttons. [ static ]
+ \brief Show critical message box with one custom button.
+
+ Specified button becomes "default" button and "escape" button, i.e.
+ pressing \c Return or \c Enter and \c Escape keys is equivalent to clicking
+ this button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button button text
+ \return button id clicked by the user (QMessageBox::StandardButton)
*/
-SUIT_MessageBox::StandardButton SUIT_MessageBox::warning( QWidget* parent, const QString& title, const QString& text,
- SUIT_MessageBox::StandardButtons buttons, StandardButton defaultButton )
+int SUIT_MessageBox::critical( QWidget* parent, const QString& title, const QString& text,
+ const QString& button )
{
- return QMessageBox::warning( parent, title, text, buttons, defaultButton );
+ ButtonInfos lst;
+ lst.append( ButtonInfo( 0, button ) );
+ return messageBox( SUIT_MessageBox::Critical, parent, title, text, lst );
}
/*!
- Shows critical message box. Some buttons can be renamed. Variable number of arguments
- should be specified starting from \param btn as pairs of StandardButton and QString.
- After the last pair 0 (zero) value should be specified. [ static ]
+ \brief Show warning message box with one custom button.
+
+ Specified button becomes "default" button and "escape" button, i.e.
+ pressing \c Return or \c Enter and \c Escape keys is equivalent to clicking
+ this button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button button text
+ \return button id clicked by the user (QMessageBox::StandardButton)
*/
-SUIT_MessageBox::StandardButton SUIT_MessageBox::critical( QWidget* parent, const QString& title,
- const QString& text, StandardButtons buttons,
- StandardButton defaultButton, StandardButton btn, ... )
+int SUIT_MessageBox::warning( QWidget* parent, const QString& title, const QString& text,
+ const QString& button )
{
- va_list args;
- va_start( args, btn );
- return messageBox( SUIT_MessageBox::Critical, parent, title, text,
- buttons, defaultButton, messageMap( btn, args ) );
+ ButtonInfos lst;
+ lst.append( ButtonInfo( 0, button ) );
+ return messageBox( SUIT_MessageBox::Warning, parent, title, text, lst );
}
/*!
- Shows information message box. Some buttons can be renamed. Variable number of arguments
- should be specified starting from \param btn as pairs of StandardButton and QString.
- After the last pair 0 (zero) value should be specified. [ static ]
+ \brief Show information message box with one custom button.
+
+ Specified button becomes "default" button and "escape" button, i.e.
+ pressing \c Return or \c Enter and \c Escape keys is equivalent to clicking
+ this button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button button text
+ \return button id clicked by the user (QMessageBox::StandardButton)
*/
-SUIT_MessageBox::StandardButton SUIT_MessageBox::information( QWidget* parent, const QString& title,
- const QString& text,
- SUIT_MessageBox::StandardButtons buttons,
- SUIT_MessageBox::StandardButton defaultButton,
- SUIT_MessageBox::StandardButton btn, ... )
+int SUIT_MessageBox::information( QWidget* parent, const QString& title, const QString& text,
+ const QString& button )
{
- va_list args;
- va_start( args, btn );
- return messageBox( SUIT_MessageBox::Information, parent, title, text,
- buttons, defaultButton, messageMap( btn, args ) );
+ ButtonInfos lst;
+ lst.append( ButtonInfo( 0, button ) );
+ return messageBox( SUIT_MessageBox::Information, parent, title, text, lst );
}
/*!
- Shows question message box. Some buttons can be renamed. Variable number of arguments
- should be specified starting from \param btn as pairs of StandardButton and QString.
- After the last pair 0 (zero) value should be specified. [ static ]
+ \brief Show question message box with one custom button.
+
+ \warning This function does not make a lot of sense because it provides
+ message box with only one button, i.e. it is impossible to give several
+ answers for the question (at least 'yes'/'no').
+ This function is implemented only for completeness.
+
+ Specified button becomes "default" button and "escape" button, i.e.
+ pressing \c Return or \c Enter and \c Escape keys is equivalent to clicking
+ this button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button button text
+ \return button id clicked by the user (QMessageBox::StandardButton)
*/
-SUIT_MessageBox::StandardButton SUIT_MessageBox::question( QWidget* parent, const QString& title,
- const QString& text, StandardButtons buttons,
- StandardButton defaultButton, StandardButton btn, ... )
+int SUIT_MessageBox::question( QWidget* parent, const QString& title, const QString& text,
+ const QString& button )
{
- va_list args;
- va_start( args, btn );
- return messageBox( SUIT_MessageBox::Question, parent, title, text,
- buttons, defaultButton, messageMap( btn, args ) );
+ ButtonInfos lst;
+ lst.append( ButtonInfo( 0, button ) );
+ return messageBox( SUIT_MessageBox::Question, parent, title, text, lst );
+}
+
+/*!
+ \brief Show critical message box with two custom buttons.
+
+ Parameters \a button1 and \a button2 specify the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the second one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
+*/
+int SUIT_MessageBox::critical( QWidget* parent, const QString& title, const QString& text,
+ const QString& button1, const QString& button2,
+ const int defaultButton, const int escapeButton )
+{
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ return messageBox( SUIT_MessageBox::Critical, parent, title, text, lst,
+ defaultButton, escapeButton );
}
/*!
- Shows warning message box. Some buttons can be renamed. Variable number of arguments
- should be specified starting from \param btn as pairs of StandardButton and QString.
- After the last pair 0 (zero) value should be specified. [ static ]
+ \brief Show warning message box with two custom buttons.
+
+ Parameters \a button1 and \a button2 specify the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the second one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
*/
-SUIT_MessageBox::StandardButton SUIT_MessageBox::warning( QWidget* parent, const QString& title,
- const QString& text, StandardButtons buttons,
- StandardButton defaultButton, StandardButton btn, ... )
+int SUIT_MessageBox::warning( QWidget* parent, const QString& title, const QString& text,
+ const QString& button1, const QString& button2,
+ const int defaultButton, const int escapeButton )
{
- va_list args;
- va_start( args, btn );
- return messageBox( SUIT_MessageBox::Warning, parent, title, text,
- buttons, defaultButton, messageMap( btn, args ) );
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ return messageBox( SUIT_MessageBox::Warning, parent, title, text, lst,
+ defaultButton, escapeButton );
+}
+
+/*!
+ \brief Show information message box with two custom buttons.
+
+ Parameters \a button1 and \a button2 specify the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the second one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
+*/
+int SUIT_MessageBox::information( QWidget* parent, const QString& title, const QString& text,
+ const QString& button1, const QString& button2,
+ const int defaultButton, const int escapeButton )
+{
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ return messageBox( SUIT_MessageBox::Information, parent, title, text, lst,
+ defaultButton, escapeButton );
}
/*!
- Shows critical message box with user specified buttons. Each button decribed by two
- parameters: int - button id and QString - button text. First button specified by \param btn0
- and \param txt0, following buttons specified as variable number of arguments which
- should be started from \param btn as pairs of int and QString.
- After the last pair 0 (zero) value should be specified. [ static ]
+ \brief Show question message box with two custom buttons.
+
+ Parameters \a button1 and \a button2 specify the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the second one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
+*/
+int SUIT_MessageBox::question( QWidget* parent, const QString& title, const QString& text,
+ const QString& button1, const QString& button2,
+ const int defaultButton, const int escapeButton )
+{
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ return messageBox( SUIT_MessageBox::Question, parent, title, text, lst,
+ defaultButton, escapeButton );
+}
+
+/*!
+ \brief Show critical message box with three custom buttons.
+
+ Parameters \a button1, \a button2 and \a button3 specify the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param button3 third button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
*/
int SUIT_MessageBox::critical( QWidget* parent, const QString& title, const QString& text,
- int defaultButton, int btn0, QString txt0, int btn, ... )
+ const QString& button1, const QString& button2,
+ const QString& button3,
+ const int defaultButton, const int escapeButton )
{
- va_list args;
- va_start( args, btn );
- return messageBox( SUIT_MessageBox::Critical, parent, title, text,
- defaultButton, messageList( btn0, txt0, btn, args ) );
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ lst.append( ButtonInfo( id++, button3 ) );
+ return messageBox( SUIT_MessageBox::Critical, parent, title, text, lst,
+ defaultButton, escapeButton );
+}
+
+/*!
+ \brief Show warning message box with three custom buttons.
+
+ Parameters \a button1, \a button2 and \a button3 specify the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param button3 third button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
+*/
+int SUIT_MessageBox::warning( QWidget* parent, const QString& title, const QString& text,
+ const QString& button1, const QString& button2,
+ const QString& button3,
+ const int defaultButton, const int escapeButton )
+{
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ lst.append( ButtonInfo( id++, button3 ) );
+ return messageBox( SUIT_MessageBox::Warning, parent, title, text, lst,
+ defaultButton, escapeButton );
}
/*!
- Shows information message box with user specified buttons. Each button decribed by two
- parameters: int - button id and QString - button text. First button specified by \param btn0
- and \param txt0, following buttons specified as variable number of arguments which
- should be started from \param btn as pairs of int and QString.
- After the last pair 0 (zero) value should be specified. [ static ]
+ \brief Show information message box with three custom buttons.
+
+ Parameters \a button1, \a button2 and \a button3 specify the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param button3 third button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
*/
int SUIT_MessageBox::information( QWidget* parent, const QString& title, const QString& text,
- int defaultButton, int btn0, QString txt0, int btn, ... )
+ const QString& button1, const QString& button2,
+ const QString& button3,
+ const int defaultButton, const int escapeButton )
{
- va_list args;
- va_start( args, btn );
- return messageBox( SUIT_MessageBox::Information, parent, title, text,
- defaultButton, messageList( btn0, txt0, btn, args ) );
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ lst.append( ButtonInfo( id++, button3 ) );
+ return messageBox( SUIT_MessageBox::Information, parent, title, text, lst,
+ defaultButton, escapeButton );
}
/*!
- Shows question message box with user specified buttons. Each button decribed by two
- parameters: int - button id and QString - button text. First button specified by \param btn0
- and \param txt0, following buttons specified as variable number of arguments which
- should be started from \param btn as pairs of int and QString.
- After the last pair 0 (zero) value should be specified. [ static ]
+ \brief Show question message box with three custom buttons.
+
+ Parameters \a button1, \a button2 and \a button3 specify the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param button3 third button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
*/
int SUIT_MessageBox::question( QWidget* parent, const QString& title, const QString& text,
- int defaultButton, int btn0, QString txt0, int btn, ... )
+ const QString& button1, const QString& button2,
+ const QString& button3,
+ const int defaultButton, const int escapeButton )
{
- va_list args;
- va_start( args, btn );
- return messageBox( SUIT_MessageBox::Question, parent, title, text,
- defaultButton, messageList( btn0, txt0, btn, args ) );
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ lst.append( ButtonInfo( id++, button3 ) );
+ return messageBox( SUIT_MessageBox::Question, parent, title, text, lst,
+ defaultButton, escapeButton );
}
/*!
- Shows warning message box with user specified buttons. Each button decribed by two
- parameters: int - button id and QString - button text. First button specified by \param btn0
- and \param txt0, following buttons specified as variable number of arguments which
- should be started from \param btn as pairs of int and QString.
- After the last pair 0 (zero) value should be specified. [ static ]
+ \brief Show critical message box with four custom buttons.
+
+ Parameters \a button1, \a button2, \a button3 and \a button4 specify
+ the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param button3 third button text
+ \param button4 fourth button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
+*/
+int SUIT_MessageBox::critical( QWidget* parent, const QString& title, const QString& text,
+ const QString& button1, const QString& button2,
+ const QString& button3, const QString& button4,
+ const int defaultButton, const int escapeButton )
+{
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ lst.append( ButtonInfo( id++, button3 ) );
+ lst.append( ButtonInfo( id++, button4 ) );
+ return messageBox( SUIT_MessageBox::Critical, parent, title, text, lst,
+ defaultButton, escapeButton );
+}
+
+/*!
+ \brief Show warning message box with four custom buttons.
+
+ Parameters \a button1, \a button2, \a button3 and \a button4 specify
+ the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param button3 third button text
+ \param button4 fourth button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
*/
int SUIT_MessageBox::warning( QWidget* parent, const QString& title, const QString& text,
- int defaultButton, int btn0, QString txt0, int btn, ... )
+ const QString& button1, const QString& button2,
+ const QString& button3, const QString& button4,
+ const int defaultButton, const int escapeButton )
{
- va_list args;
- va_start( args, btn );
- return messageBox( SUIT_MessageBox::Warning, parent, title, text,
- defaultButton, messageList( btn0, txt0, btn, args ) );
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ lst.append( ButtonInfo( id++, button3 ) );
+ lst.append( ButtonInfo( id++, button4 ) );
+ return messageBox( SUIT_MessageBox::Warning, parent, title, text, lst,
+ defaultButton, escapeButton );
}
/*!
- Shows critical message box with user specified buttons. Each button decribed by button text.
- Variable number of arguments should be started from \param txt. After the last text 0 (zero)
- value should be specified. [ static ]
+ \brief Show information message box with four custom buttons.
+
+ Parameters \a button1, \a button2, \a button3 and \a button4 specify
+ the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param button3 third button text
+ \param button4 fourth button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
*/
-int SUIT_MessageBox::critical( QWidget* parent, const QString& title, const QString& text, char* txt, ... )
+int SUIT_MessageBox::information( QWidget* parent, const QString& title, const QString& text,
+ const QString& button1, const QString& button2,
+ const QString& button3, const QString& button4,
+ const int defaultButton, const int escapeButton )
{
- va_list args;
- va_start( args, txt );
- return messageBox( SUIT_MessageBox::Critical, parent, title, text,
- 0, messageList( txt, args ) );
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ lst.append( ButtonInfo( id++, button3 ) );
+ lst.append( ButtonInfo( id++, button4 ) );
+ return messageBox( SUIT_MessageBox::Information, parent, title, text, lst,
+ defaultButton, escapeButton );
}
/*!
- Shows information message box with user specified buttons. Each button decribed by button text.
- Variable number of arguments should be started from \param txt. After the last text 0 (zero)
- value should be specified. [ static ]
+ \brief Show question message box with four custom buttons.
+
+ Parameters \a button1, \a button2, \a button3 and \a button4 specify
+ the buttons text.
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param button1 first button text
+ \param button2 second button text
+ \param button3 third button text
+ \param button4 fourth button text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
*/
-int SUIT_MessageBox::information( QWidget* parent, const QString& title, const QString& text, char* txt, ... )
+int SUIT_MessageBox::question( QWidget* parent, const QString& title, const QString& text,
+ const QString& button1, const QString& button2,
+ const QString& button3, const QString& button4,
+ const int defaultButton, const int escapeButton )
{
- va_list args;
- va_start( args, txt );
- return messageBox( SUIT_MessageBox::Information, parent, title, text,
- 0, messageList( txt, args ) );
+ ButtonInfos lst;
+ int id = 0;
+ lst.append( ButtonInfo( id++, button1 ) );
+ lst.append( ButtonInfo( id++, button2 ) );
+ lst.append( ButtonInfo( id++, button3 ) );
+ lst.append( ButtonInfo( id++, button4 ) );
+ return messageBox( SUIT_MessageBox::Question, parent, title, text, lst,
+ defaultButton, escapeButton );
}
/*!
- Shows question message box with user specified buttons. Each button decribed by button text.
- Variable number of arguments should be started from \param txt. After the last text 0 (zero)
- value should be specified. [ static ]
+ \brief Show critical message box with arbitrary number of user-specified
+ buttons.
+
+ The function accepts arbitrary number of parameters. Each parameter starting
+ from \a btn should be of type const char* to specify the button text.
+ After the last button parameter and additional 0 (zero) value should be
+ specified.
+
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \param btn first button text
+ \return button used button id
*/
-int SUIT_MessageBox::question( QWidget* parent, const QString& title, const QString& text, char* txt, ... )
+int SUIT_MessageBox::critical( QWidget* parent, const QString& title, const QString& text,
+ const int defaultButton, const int escapeButton,
+ char* btn, ... )
{
va_list args;
- va_start( args, txt );
- return messageBox( SUIT_MessageBox::Question, parent, title, text,
- 0, messageList( txt, args ) );
+ va_start( args, btn );
+ return messageBox( SUIT_MessageBox::Critical, parent, title, text,
+ messageList( btn, args ),
+ defaultButton, escapeButton );
}
/*!
- Shows warning message box with user specified buttons. Each button decribed by button text.
- Variable number of arguments should be started from \param txt. After the last text 0 (zero)
- value should be specified. [ static ]
+ \brief Show warning message box with arbitrary number of user-specified
+ buttons.
+
+ The function accepts arbitrary number of parameters. Each parameter starting
+ from \a btn should be of type const char* to specify the button text.
+ After the last button parameter and additional 0 (zero) value should be
+ specified.
+
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \param btn first button text
+ \return button used button id
*/
-int SUIT_MessageBox::warning( QWidget* parent, const QString& title, const QString& text, char* txt, ... )
+int SUIT_MessageBox::warning( QWidget* parent, const QString& title, const QString& text,
+ const int defaultButton, const int escapeButton,
+ char* btn, ... )
{
va_list args;
- va_start( args, txt );
+ va_start( args, btn );
return messageBox( SUIT_MessageBox::Warning, parent, title, text,
- 0, messageList( txt, args ) );
+ messageList( btn, args ),
+ defaultButton, escapeButton );
}
-SUIT_MessageBox::StandardButton SUIT_MessageBox::messageBox( SUIT_MessageBox::Icon icon, QWidget* parent,
- const QString& title, const QString& text,
- StandardButtons buttons, StandardButton defaultButton,
- const ButtonMap& map )
+/*!
+ \brief Show information message box with arbitrary number of user-specified
+ buttons.
+
+ The function accepts arbitrary number of parameters. Each parameter starting
+ from \a btn should be of type const char* to specify the button text.
+ After the last button parameter and additional 0 (zero) value should be
+ specified.
+
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \param btn first button text
+ \return button used button id
+*/
+int SUIT_MessageBox::information( QWidget* parent, const QString& title, const QString& text,
+ const int defaultButton, const int escapeButton,
+ char* btn, ... )
{
- SUIT_MessageBox msgBox( icon, title, text, buttons, parent );
- for ( ButtonMap::const_iterator it = map.begin(); it != map.end(); ++it )
- msgBox.setButtonText( it.key(), it.value() );
+ va_list args;
+ va_start( args, btn );
+ return messageBox( SUIT_MessageBox::Information, parent, title, text,
+ messageList( btn, args ),
+ defaultButton, escapeButton );
+}
- if ( defaultButton != NoButton )
- msgBox.setDefaultButton( ::qobject_cast<QPushButton*>( msgBox.button( defaultButton ) ) );
+/*!
+ \brief Show question message box with arbitrary number of user-specified
+ buttons.
+
+ The function accepts arbitrary number of parameters. Each parameter starting
+ from \a btn should be of type const char* to specify the button text.
+ After the last button parameter and additional 0 (zero) value should be
+ specified.
+
+ The function returns clicked button id. The identifiers for the buttons
+ are assigned automatically. The first button is identified as 0, the
+ second one as 1, etc.
+
+ The \a defaultButton parameter allows to specify the button which is assigned
+ for the \c Return or \c Enter key. Similarly, \a escapeButton parameter
+ allows specifing the button which is assigned for \c Escape key.
+ If these parameters are not specified (-1 by default), the first button
+ is set as default button and the last one is defined as escape button.
+
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param defaultButton default button
+ \param escapeButton escape button
+ \param btn first button text
+ \return button used button id
+*/
+int SUIT_MessageBox::question( QWidget* parent, const QString& title, const QString& text,
+ const int defaultButton, const int escapeButton,
+ char* btn, ... )
+{
+ va_list args;
+ va_start( args, btn );
+ return messageBox( SUIT_MessageBox::Question, parent, title, text,
+ messageList( btn, args ),
+ defaultButton, escapeButton );
+}
- SUIT_OverrideCursor cw( parent ? parent->cursor() : Qt::ArrowCursor );
+/*!
+ \brief Parse arbitrary arguments list.
- StandardButton res = NoButton;
- if ( msgBox.exec() == -1 )
- res = QMessageBox::Cancel;
- else
- res = msgBox.standardButton( msgBox.clickedButton() );
+ The last parameter in a sequence should be 0 (zero) value.
- QApplication::processEvents();
+ \param txt first argument which starts arbitrary sequence
+ \param args arguments list from the stack
+ \return list of buttons infos
+*/
+SUIT_MessageBox::ButtonInfos SUIT_MessageBox::messageList( char* txt, va_list& args )
+{
+ int i = 0;
+ ButtonInfos lst;
+ char* cur = txt;
+ while ( cur )
+ {
+ lst.append( ButtonInfo( i++, cur ) );
+ cur = va_arg( args, char* );
+ }
- return res;
+ va_end( args );
+
+ return lst;
}
-int SUIT_MessageBox::messageBox( Icon icon, QWidget* parent, const QString& title, const QString& text,
- const int defaultButton, const ButtonList& lst )
+/*!
+ \brief Create and show the message box.
+ \param icon icon type
+ \param parent parent widget
+ \param title message box title
+ \param text message box text
+ \param lst list of buttons infos
+ \param defaultButton default button
+ \param escapeButton escape button
+ \return button used button id
+*/
+int SUIT_MessageBox::messageBox( Icon icon, QWidget* parent,
+ const QString& title, const QString& text,
+ const ButtonInfos& lst,
+ const int defaultButton,
+ const int escapeButton )
{
SUIT_MessageBox msgBox( icon, title, text, NoButton, parent );
- QMap<QAbstractButton*, int> map;
- for ( ButtonList::const_iterator it = lst.begin(); it != lst.end(); ++it )
+ QMap<QAbstractButton*, int> bm;
+ for ( int i = 0; i < lst.count(); i++ )
{
- int btn = (*it).first;
- QString txt = (*it).second;
- ButtonRole role = InvalidRole;
-
- if ( btn == defaultButton )
- role = AcceptRole;
+ int btn = lst[i].id();
+ QString txt = lst[i].text();
+ ButtonRole role = lst[i].role();
QPushButton* pb = msgBox.addButton( txt, role );
- map.insert( pb, btn );
+ bm.insert( pb, btn );
- if ( btn == defaultButton )
+ if ( defaultButton == -1 && i == 0 || btn == defaultButton )
msgBox.setDefaultButton( pb );
+ if ( escapeButton == -1 && i == lst.count() - 1 || btn == escapeButton )
+ msgBox.setEscapeButton( pb );
}
-
+
SUIT_OverrideCursor cw( parent ? parent->cursor() : Qt::ArrowCursor );
- int res = NoButton;
- if ( msgBox.exec() == -1 )
- res = Cancel;
- else
- res = map[msgBox.clickedButton()];
+ int res = msgBox.exec();
+ if ( res != -1 )
+ res = bm[msgBox.clickedButton()];
QApplication::processEvents();
return res;
}
-SUIT_MessageBox::ButtonMap SUIT_MessageBox::messageMap( StandardButton btn, va_list& args )
-{
- ButtonMap map;
- StandardButton cur = btn;
- while ( !cur )
- {
- QString name = va_arg( args, QString );
- map.insert( cur, name );
- cur = va_arg( args, StandardButton );
- }
-
- va_end( args );
-
- return map;
-}
-
-SUIT_MessageBox::ButtonList SUIT_MessageBox::messageList( int btn0, QString txt0, int btn, va_list& args )
-{
- ButtonList lst;
- lst.append( QPair<int, QString>( btn0, txt0 ) );
- int cur = btn;
- while ( !cur )
- {
- QString name = va_arg( args, QString );
- lst.append( QPair<int, QString>( cur, name ) );
- cur = va_arg( args, int );
- }
-
- va_end( args );
-
- return lst;
-}
-
-SUIT_MessageBox::ButtonList SUIT_MessageBox::messageList( char* txt, va_list& args )
-{
- int i = 0;
- ButtonList lst;
- char* cur = txt;
- while ( cur )
- {
- lst.append( QPair<int, QString>( i++, cur ) );
- cur = va_arg( args, char* );
- }
-
- va_end( args );
-
- return lst;
-}
#include <QList>
#include <QMessageBox>
-#include <stdarg.h>
-
-/*!
- \class SUIT_MessageBox
- \brief Message dialog box for SUIT-based application
-*/
class SUIT_EXPORT SUIT_MessageBox : public QMessageBox
{
public:
+ // 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 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 );
static StandardButton warning( QWidget* parent, const QString& title, const QString& text,
StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
-
- static StandardButton critical( QWidget* parent, const QString& title, const QString& text,
- StandardButtons buttons, StandardButton defaultButton, StandardButton, ... );
static StandardButton information( QWidget* parent, const QString& title, const QString& text,
- StandardButtons buttons, StandardButton defaultButton, StandardButton, ... );
+ StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
static StandardButton question( QWidget* parent, const QString& title, const QString& text,
- StandardButtons buttons, StandardButton defaultButton, StandardButton, ... );
- static StandardButton warning( QWidget* parent, const QString& title, const QString& text,
- StandardButtons buttons, StandardButton defaultButton, StandardButton, ... );
+ 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,
- int defaultButton, int, QString, int, ... );
+ 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,
- int defaultButton, int, QString, int, ... );
+ 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,
- int defaultButton, int, QString, int, ... );
+ 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,
- int defaultButton, int, QString, int, ... );
-
- static int critical( QWidget* parent, const QString& title, const QString& text, char*, ... );
- static int information( QWidget* parent, const QString& title, const QString& text, char*, ... );
- static int question( QWidget* parent, const QString& title, const QString& text, char*, ... );
- static int warning( QWidget* parent, const QString& title, const QString& text, char*, ... );
-
-private:
- typedef QMap<StandardButton, QString> ButtonMap;
- typedef QList< QPair<int, QString> > ButtonList;
+ 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 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:
- static StandardButton messageBox( Icon icon, QWidget* parent, const QString& title, const QString& text,
- StandardButtons buttons, StandardButton defaultButton, const ButtonMap& );
+ 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
+ };
- static int messageBox( Icon icon, QWidget* parent, const QString& title, const QString& text,
- const int defaultButton, const ButtonList& );
+ typedef QList<ButtonInfo> ButtonInfos;
- static ButtonMap messageMap( StandardButton, va_list& );
- static ButtonList messageList( int, QString, int, va_list& );
- static ButtonList messageList( char*, va_list& );
+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