/*
-Copyright (C) 2001-2006, William Joseph.
-All Rights Reserved.
+ Copyright (C) 2001-2006, William Joseph.
+ All Rights Reserved.
-This file is part of GtkRadiant.
+ This file is part of GtkRadiant.
-GtkRadiant is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+ GtkRadiant is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
-GtkRadiant 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 General Public License for more details.
+ GtkRadiant 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 General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-*/
+ You should have received a copy of the GNU General Public License
+ along with GtkRadiant; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#include "messagebox.h"
#include <gdk/gdkkeysyms.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkimage.h>
-#include <gtk/gtkstock.h>
+#include <gtk/gtk.h>
#include "dialog.h"
#include "widget.h"
-GtkWidget* create_padding(int width, int height)
+ui::Widget create_padding(int width, int height)
{
- GtkWidget* widget = gtk_alignment_new(0.0, 0.0, 0.0, 0.0);
- gtk_widget_show(widget);
- gtk_widget_set_size_request(widget, width, height);
- return widget;
+ ui::Alignment widget = ui::Alignment(0.0, 0.0, 0.0, 0.0);
+ widget.show();
+ widget.dimensions(width, height);
+ return widget;
}
-const char* messagebox_stock_icon(EMessageBoxIcon type)
+const char *messagebox_stock_icon(EMessageBoxIcon type)
{
- switch(type)
- {
- default:
- case eMB_ICONDEFAULT:
- return GTK_STOCK_DIALOG_INFO;
- case eMB_ICONERROR:
- return GTK_STOCK_DIALOG_ERROR;
- case eMB_ICONWARNING:
- return GTK_STOCK_DIALOG_WARNING;
- case eMB_ICONQUESTION:
- return GTK_STOCK_DIALOG_QUESTION;
- case eMB_ICONASTERISK:
- return GTK_STOCK_DIALOG_INFO;
- }
+ switch (type) {
+ default:
+ case eMB_ICONDEFAULT:
+ return GTK_STOCK_DIALOG_INFO;
+ case eMB_ICONERROR:
+ return GTK_STOCK_DIALOG_ERROR;
+ case eMB_ICONWARNING:
+ return GTK_STOCK_DIALOG_WARNING;
+ case eMB_ICONQUESTION:
+ return GTK_STOCK_DIALOG_QUESTION;
+ case eMB_ICONASTERISK:
+ return GTK_STOCK_DIALOG_INFO;
+ }
}
-EMessageBoxReturn gtk_MessageBox (GtkWidget *parent, const char* text, const char* title, EMessageBoxType type, EMessageBoxIcon icon)
+EMessageBoxReturn
+gtk_MessageBox(ui::Window parentWindow, const char *text, const char *title, EMessageBoxType type, EMessageBoxIcon icon)
{
- ModalDialog dialog;
- ModalDialogButton ok_button(dialog, eIDOK);
- ModalDialogButton cancel_button(dialog, eIDCANCEL);
- ModalDialogButton yes_button(dialog, eIDYES);
- ModalDialogButton no_button(dialog, eIDNO);
-
- GtkWindow* parentWindow = parent != 0 ? GTK_WINDOW(parent) : 0;
-
- GtkWindow* window = create_fixedsize_modal_dialog_window(parentWindow, title, dialog, 400, 100);
-
- if(parentWindow != 0)
- {
- //g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(floating_window_delete_present), parent);
- gtk_window_deiconify(parentWindow);
- }
-
- GtkAccelGroup* accel = gtk_accel_group_new();
- gtk_window_add_accel_group(window, accel);
-
- GtkVBox* vbox = create_dialog_vbox(8, 8);
- gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(vbox));
-
-
- GtkHBox* hboxDummy = create_dialog_hbox(0, 0);
- gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(hboxDummy), FALSE, FALSE, 0);
-
- gtk_box_pack_start(GTK_BOX(hboxDummy), create_padding(0, 50), FALSE, FALSE, 0); // HACK to force minimum height
-
- GtkHBox* iconBox = create_dialog_hbox(16, 0);
- gtk_box_pack_start(GTK_BOX(hboxDummy), GTK_WIDGET(iconBox), FALSE, FALSE, 0);
-
- GtkImage* image = GTK_IMAGE(gtk_image_new_from_stock(messagebox_stock_icon(icon), GTK_ICON_SIZE_DIALOG));
- gtk_widget_show(GTK_WIDGET(image));
- gtk_box_pack_start(GTK_BOX(iconBox), GTK_WIDGET(image), FALSE, FALSE, 0);
-
- GtkLabel* label = GTK_LABEL(gtk_label_new(text));
- gtk_widget_show(GTK_WIDGET(label));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_label_set_justify(label, GTK_JUSTIFY_LEFT);
- gtk_label_set_line_wrap(label, TRUE);
- gtk_box_pack_start(GTK_BOX(iconBox), GTK_WIDGET(label), TRUE, TRUE, 0);
-
-
- GtkVBox* vboxDummy = create_dialog_vbox(0, 0);
- gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(vboxDummy), FALSE, FALSE, 0);
-
- GtkAlignment* alignment = GTK_ALIGNMENT(gtk_alignment_new(0.5, 0.0, 0.0, 0.0));
- gtk_widget_show(GTK_WIDGET(alignment));
- gtk_box_pack_start(GTK_BOX(vboxDummy), GTK_WIDGET(alignment), FALSE, FALSE, 0);
-
- GtkHBox* hbox = create_dialog_hbox(8, 0);
- gtk_container_add(GTK_CONTAINER(alignment), GTK_WIDGET(hbox));
-
- gtk_box_pack_start(GTK_BOX(vboxDummy), create_padding(400, 0), FALSE, FALSE, 0); // HACK to force minimum width
-
-
- if (type == eMB_OK)
- {
- GtkButton* button = create_modal_dialog_button("OK", ok_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0);
- gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0);
- widget_make_default(GTK_WIDGET(button));
- gtk_widget_show(GTK_WIDGET(button));
+ ModalDialog dialog;
+ ModalDialogButton ok_button(dialog, eIDOK);
+ ModalDialogButton cancel_button(dialog, eIDCANCEL);
+ ModalDialogButton yes_button(dialog, eIDYES);
+ ModalDialogButton no_button(dialog, eIDNO);
- dialog.ret = eIDOK;
- }
- else if (type == eMB_OKCANCEL)
- {
- {
- GtkButton* button = create_modal_dialog_button("OK", ok_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0);
- widget_make_default(GTK_WIDGET(button));
- gtk_widget_show(GTK_WIDGET(button));
- }
+ ui::Window window = create_fixedsize_modal_dialog_window(parentWindow, title, dialog, 400, 100);
- {
- GtkButton* button = create_modal_dialog_button("OK", cancel_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0);
- gtk_widget_show(GTK_WIDGET(button));
+ if (parentWindow) {
+ //window.connect( "delete_event", G_CALLBACK(floating_window_delete_present), parent);
+ gtk_window_deiconify(parentWindow);
}
- dialog.ret = eIDCANCEL;
- }
- else if (type == eMB_YESNOCANCEL)
- {
+ auto accel = ui::AccelGroup(ui::New);
+ window.add_accel_group(accel);
+
+ auto vbox = create_dialog_vbox(8, 8);
+ window.add(vbox);
+
+
+ auto hboxDummy = create_dialog_hbox(0, 0);
+ vbox.pack_start(hboxDummy, FALSE, FALSE, 0);
+
+ hboxDummy.pack_start(create_padding(0, 50), FALSE, FALSE, 0); // HACK to force minimum height
+
+ auto iconBox = create_dialog_hbox(16, 0);
+ hboxDummy.pack_start(iconBox, FALSE, FALSE, 0);
+
+ auto image = ui::Image::from(gtk_image_new_from_stock(messagebox_stock_icon(icon), GTK_ICON_SIZE_DIALOG));
+ image.show();
+ iconBox.pack_start(image, FALSE, FALSE, 0);
+
+ auto label = ui::Label(text);
+ label.show();
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_label_set_justify(label, GTK_JUSTIFY_LEFT);
+ gtk_label_set_line_wrap(label, TRUE);
+ iconBox.pack_start(label, TRUE, TRUE, 0);
+
+
+ auto vboxDummy = create_dialog_vbox(0, 0);
+ vbox.pack_start(vboxDummy, FALSE, FALSE, 0);
+
+ auto alignment = ui::Alignment(0.5, 0.0, 0.0, 0.0);
+ alignment.show();
+ vboxDummy.pack_start(alignment, FALSE, FALSE, 0);
+
+ auto hbox = create_dialog_hbox(8, 0);
+ alignment.add(hbox);
+
+ vboxDummy.pack_start(create_padding(400, 0), FALSE, FALSE, 0); // HACK to force minimum width
+
+
+ if (type == eMB_OK) {
+ auto button = create_modal_dialog_button("OK", ok_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ gtk_widget_add_accelerator(button, "clicked", accel, GDK_KEY_Escape, (GdkModifierType) 0, (GtkAccelFlags) 0);
+ gtk_widget_add_accelerator(button, "clicked", accel, GDK_KEY_Return, (GdkModifierType) 0, (GtkAccelFlags) 0);
+ widget_make_default(button);
+ button.show();
+
+ dialog.ret = eIDOK;
+ } else if (type == eMB_OKCANCEL) {
+ {
+ auto button = create_modal_dialog_button("OK", ok_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ gtk_widget_add_accelerator(button, "clicked", accel, GDK_KEY_Return, (GdkModifierType) 0,
+ (GtkAccelFlags) 0);
+ widget_make_default(button);
+ button.show();
+ }
+
+ {
+ auto button = create_modal_dialog_button("OK", cancel_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ gtk_widget_add_accelerator(button, "clicked", accel, GDK_KEY_Escape, (GdkModifierType) 0,
+ (GtkAccelFlags) 0);
+ button.show();
+ }
+
+ dialog.ret = eIDCANCEL;
+ } else if (type == eMB_YESNOCANCEL) {
+ {
+ auto button = create_modal_dialog_button("Yes", yes_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ widget_make_default(button);
+ button.show();
+ }
+
+ {
+ auto button = create_modal_dialog_button("No", no_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ button.show();
+ }
+ {
+ auto button = create_modal_dialog_button("Cancel", cancel_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ button.show();
+ }
+
+ dialog.ret = eIDCANCEL;
+ } else if (type == eMB_NOYES) {
+ {
+ auto button = create_modal_dialog_button("No", no_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ widget_make_default(button);
+ button.show();
+ }
+ {
+ auto button = create_modal_dialog_button("Yes", yes_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ button.show();
+ }
+
+ dialog.ret = eIDNO;
+ } else /* if (type == eMB_YESNO) */
{
- GtkButton* button = create_modal_dialog_button("Yes", yes_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- widget_make_default(GTK_WIDGET(button));
- gtk_widget_show(GTK_WIDGET(button));
+ {
+ auto button = create_modal_dialog_button("Yes", yes_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ widget_make_default(button);
+ button.show();
+ }
+
+ {
+ auto button = create_modal_dialog_button("No", no_button);
+ hbox.pack_start(button, TRUE, FALSE, 0);
+ button.show();
+ }
+ dialog.ret = eIDNO;
}
- {
- GtkButton* button = create_modal_dialog_button("No", no_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- gtk_widget_show(GTK_WIDGET(button));
- }
- {
- GtkButton* button = create_modal_dialog_button("Cancel", cancel_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- gtk_widget_show(GTK_WIDGET(button));
- }
+ modal_dialog_show(window, dialog);
- dialog.ret = eIDCANCEL;
- }
- else if (type == eMB_NOYES)
- {
- {
- GtkButton* button = create_modal_dialog_button("No", no_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- widget_make_default(GTK_WIDGET(button));
- gtk_widget_show(GTK_WIDGET(button));
- }
- {
- GtkButton* button = create_modal_dialog_button("Yes", yes_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- gtk_widget_show(GTK_WIDGET(button));
- }
+ window.destroy();
- dialog.ret = eIDNO;
- }
- else /* if (type == eMB_YESNO) */
- {
- {
- GtkButton* button = create_modal_dialog_button("Yes", yes_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- widget_make_default(GTK_WIDGET(button));
- gtk_widget_show(GTK_WIDGET(button));
- }
-
- {
- GtkButton* button = create_modal_dialog_button("No", no_button);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(button), TRUE, FALSE, 0);
- gtk_widget_show(GTK_WIDGET(button));
- }
- dialog.ret = eIDNO;
- }
-
- modal_dialog_show(window, dialog);
-
- gtk_widget_destroy(GTK_WIDGET(window));
-
- return dialog.ret;
+ return dialog.ret;
}
-