Add "simple dialog" routines to pop up modal message boxes.
svn path=/trunk/; revision=43330
This commit is contained in:
parent
5c423a4c51
commit
7fbd6ca1f0
|
@ -35,6 +35,8 @@
|
|||
|
||||
#include "simple_dialog_qt.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
|
||||
/* Simple dialog function - Displays a dialog box with the supplied message
|
||||
* text.
|
||||
*
|
||||
|
@ -143,3 +145,115 @@ SimpleDialog::SimpleDialog(QWidget *parent) :
|
|||
QErrorMessage(parent)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
do_simple_message_box(ESD_TYPE_E type, gboolean *notagain,
|
||||
const char *secondary_msg, const char *msg_format,
|
||||
va_list ap)
|
||||
{
|
||||
QMessageBox *msg_dialog;
|
||||
gchar *message;
|
||||
|
||||
if (notagain != NULL) {
|
||||
if (*notagain) {
|
||||
/*
|
||||
* The user had checked the "Don't show this message again" checkbox
|
||||
* in the past; don't bother showing it.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX - this should be passed the main window.
|
||||
* Also, this should be set to window modal by setting its window
|
||||
* modality to Qt::WindowModal, so it shows up as a sheet in
|
||||
* OS X.
|
||||
*/
|
||||
msg_dialog = new QMessageBox(NULL);
|
||||
switch (type) {
|
||||
|
||||
case ESD_TYPE_INFO:
|
||||
msg_dialog->setIcon(QMessageBox::Information);
|
||||
break;
|
||||
|
||||
case ESD_TYPE_WARN:
|
||||
msg_dialog->setIcon(QMessageBox::Warning);
|
||||
break;
|
||||
|
||||
case ESD_TYPE_ERROR:
|
||||
msg_dialog->setIcon(QMessageBox::Critical);
|
||||
break;
|
||||
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
return;
|
||||
}
|
||||
|
||||
/* Format the message. */
|
||||
message = g_strdup_vprintf(msg_format, ap);
|
||||
msg_dialog->setText(message);
|
||||
g_free(message);
|
||||
|
||||
/* Add the secondary text. */
|
||||
if (secondary_msg != NULL)
|
||||
msg_dialog->setInformativeText(secondary_msg);
|
||||
|
||||
#if 0
|
||||
if (notagain != NULL) {
|
||||
checkbox = gtk_check_button_new_with_label("Don't show this message again.");
|
||||
gtk_container_set_border_width(GTK_CONTAINER(checkbox), 12);
|
||||
gtk_box_pack_start(GTK_BOX(gtk_message_dialog_get_message_area(GTK_MESSAGE_DIALOG(msg_dialog))), checkbox,
|
||||
TRUE, TRUE, 0);
|
||||
gtk_widget_show(checkbox);
|
||||
}
|
||||
#endif
|
||||
|
||||
msg_dialog->exec();
|
||||
#if 0
|
||||
if (notagain != NULL) {
|
||||
/*
|
||||
* OK, did they check the checkbox?
|
||||
*/
|
||||
*notagain = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox));
|
||||
}
|
||||
#endif
|
||||
delete msg_dialog;
|
||||
}
|
||||
|
||||
/*
|
||||
* Alert box, with optional "don't show this message again" variable
|
||||
* and checkbox, and optional secondary text.
|
||||
*/
|
||||
void
|
||||
simple_message_box(ESD_TYPE_E type, gboolean *notagain,
|
||||
const char *secondary_msg, const char *msg_format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, msg_format);
|
||||
do_simple_message_box(type, notagain, secondary_msg, msg_format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*
|
||||
* Error alert box, taking a format and a va_list argument.
|
||||
*/
|
||||
void
|
||||
vsimple_error_message_box(const char *msg_format, va_list ap)
|
||||
{
|
||||
do_simple_message_box(ESD_TYPE_ERROR, NULL, NULL, msg_format, ap);
|
||||
}
|
||||
|
||||
/*
|
||||
* Error alert box, taking a format and a list of arguments.
|
||||
*/
|
||||
void
|
||||
simple_error_message_box(const char *msg_format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, msg_format);
|
||||
do_simple_message_box(ESD_TYPE_ERROR, NULL, NULL, msg_format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue