]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/gtkutil/messagebox.cpp
Wrap more GTK
[xonotic/netradiant.git] / libs / gtkutil / messagebox.cpp
index 8f9fb7fa02a812442f398b4927b0e70b6e8f6275..1441b00df3063f79781c1eafcb7e6ae3dbc1ff01 100644 (file)
 #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 ){
-       GtkWidget* widget = gtk_alignment_new( 0.0, 0.0, 0.0, 0.0 );
+       ui::Alignment widget = ui::Alignment( 0.0, 0.0, 0.0, 0.0 );
        gtk_widget_show( widget );
        gtk_widget_set_size_request( widget, width, height );
        return widget;
@@ -59,27 +51,27 @@ const char* messagebox_stock_icon( EMessageBoxIcon type ){
        }
 }
 
-EMessageBoxReturn gtk_MessageBox( GtkWidget *parent, const char* text, const char* title, EMessageBoxType type, EMessageBoxIcon icon ){
+EMessageBoxReturn gtk_MessageBox( ui::Widget parent, 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;
+       ui::Window parentWindow = ui::Window(parent ? GTK_WINDOW( parent ) : 0);
 
-       GtkWindow* window = create_fixedsize_modal_dialog_window( parentWindow, title, dialog, 400, 100 );
+       ui::Window 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);
+       if ( parentWindow ) {
+               //window.connect( "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 );
+       auto accel = ui::AccelGroup(ui::New);
+       window.add_accel_group( accel );
 
-       GtkVBox* vbox = create_dialog_vbox( 8, 8 );
-       gtk_container_add( GTK_CONTAINER( window ), GTK_WIDGET( vbox ) );
+       auto vbox = create_dialog_vbox( 8, 8 );
+       window.add(vbox);
 
 
        GtkHBox* hboxDummy = create_dialog_hbox( 0, 0 );
@@ -94,7 +86,7 @@ EMessageBoxReturn gtk_MessageBox( GtkWidget *parent, const char* text, const cha
        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 ) );
+       GtkLabel* label = GTK_LABEL( ui::Label( 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 );
@@ -105,39 +97,39 @@ EMessageBoxReturn gtk_MessageBox( GtkWidget *parent, const char* text, const cha
        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 ) );
+       auto alignment = ui::Alignment( 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 ) );
+       auto hbox = create_dialog_hbox( 8, 0 );
+       alignment.add(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 );
+               auto 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 ) );
+               gtk_widget_add_accelerator( GTK_WIDGET( button ), "clicked", accel, GDK_KEY_Escape, (GdkModifierType)0, (GtkAccelFlags)0 );
+               gtk_widget_add_accelerator( GTK_WIDGET( button ), "clicked", accel, GDK_KEY_Return, (GdkModifierType)0, (GtkAccelFlags)0 );
+               widget_make_default( button );
+               button.show();
 
                dialog.ret = eIDOK;
        }
        else if ( type ==  eMB_OKCANCEL ) {
                {
-                       GtkButton* button = create_modal_dialog_button( "OK", ok_button );
+                       auto 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 ) );
+                       gtk_widget_add_accelerator( GTK_WIDGET( button ), "clicked", accel, GDK_KEY_Return, (GdkModifierType)0, (GtkAccelFlags)0 );
+                       widget_make_default( button );
+                       button.show();
                }
 
                {
                        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_add_accelerator( GTK_WIDGET( button ), "clicked", accel, GDK_KEY_Escape, (GdkModifierType)0, (GtkAccelFlags)0 );
                        gtk_widget_show( GTK_WIDGET( button ) );
                }
 
@@ -145,10 +137,10 @@ EMessageBoxReturn gtk_MessageBox( GtkWidget *parent, const char* text, const cha
        }
        else if ( type == eMB_YESNOCANCEL ) {
                {
-                       GtkButton* button = create_modal_dialog_button( "Yes", yes_button );
+                       auto 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 ) );
+                       widget_make_default( button );
+                       button.show();
                }
 
                {
@@ -166,10 +158,10 @@ EMessageBoxReturn gtk_MessageBox( GtkWidget *parent, const char* text, const cha
        }
        else if ( type == eMB_NOYES ) {
                {
-                       GtkButton* button = create_modal_dialog_button( "No", no_button );
+                       auto 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 ) );
+                       widget_make_default( button );
+                       button.show();
                }
                {
                        GtkButton* button = create_modal_dialog_button( "Yes", yes_button );
@@ -182,9 +174,9 @@ EMessageBoxReturn gtk_MessageBox( GtkWidget *parent, const char* text, const cha
        else /* if (type == eMB_YESNO) */
        {
                {
-                       GtkButton* button = create_modal_dialog_button( "Yes", yes_button );
+                       auto 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 ) );
+                       widget_make_default( button );
                        gtk_widget_show( GTK_WIDGET( button ) );
                }
 
@@ -198,7 +190,7 @@ EMessageBoxReturn gtk_MessageBox( GtkWidget *parent, const char* text, const cha
 
        modal_dialog_show( window, dialog );
 
-       gtk_widget_destroy( GTK_WIDGET( window ) );
+       window.destroy();
 
        return dialog.ret;
 }