]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/gtkutil/messagebox.cpp
do not write useless empty line at beginning of map file
[xonotic/netradiant.git] / libs / gtkutil / messagebox.cpp
index 4c430ed3a399bf9fc75b6b19486fe22b72a543c6..9b9b899a970325a07835d37b861557e30765b384 100644 (file)
 /*
-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 charmessagebox_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;
 }
-