X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=contrib%2Fprtview%2FLoadPortalFileDialog.cpp;h=2d6b4d75fdb70520af1eb96f2e6f4ea2d2e9bddf;hb=HEAD;hp=4e64faf88f8c1dc0974a7892717cc0375557025c;hpb=225950494a606af9aac2bc2f06ece70cb2146481;p=xonotic%2Fnetradiant.git diff --git a/contrib/prtview/LoadPortalFileDialog.cpp b/contrib/prtview/LoadPortalFileDialog.cpp index 4e64faf8..2d6b4d75 100644 --- a/contrib/prtview/LoadPortalFileDialog.cpp +++ b/contrib/prtview/LoadPortalFileDialog.cpp @@ -33,11 +33,10 @@ #include "prtview.h" #include "portals.h" -static void dialog_button_callback( GtkWidget *widget, gpointer data ){ - GtkWidget *parent; +static void dialog_button_callback( ui::Widget widget, gpointer data ){ int *loop, *ret; - parent = gtk_widget_get_toplevel( widget ); + auto parent = widget.window(); loop = (int*)g_object_get_data( G_OBJECT( parent ), "loop" ); ret = (int*)g_object_get_data( G_OBJECT( parent ), "ret" ); @@ -45,24 +44,24 @@ static void dialog_button_callback( GtkWidget *widget, gpointer data ){ *ret = gpointer_to_int( data ); } -static gint dialog_delete_callback( GtkWidget *widget, GdkEvent* event, gpointer data ){ - int *loop; - - gtk_widget_hide( widget ); - loop = (int*)g_object_get_data( G_OBJECT( widget ), "loop" ); +static gint dialog_delete_callback( ui::Widget widget, GdkEvent* event, gpointer data ){ + widget.hide(); + int *loop = (int *) g_object_get_data(G_OBJECT(widget), "loop"); *loop = 0; - return TRUE; } -static void change_clicked( GtkWidget *widget, gpointer data ){ - GtkWidget* file_sel; +static void change_clicked(ui::Widget widget, gpointer data ){ char* filename = NULL; - file_sel = gtk_file_chooser_dialog_new ( "Locate portal (.prt) file", nullptr, GTK_FILE_CHOOSER_ACTION_OPEN, + auto file_sel = ui::Widget::from(gtk_file_chooser_dialog_new ( "Locate portal (.prt) file", nullptr, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - nullptr); + nullptr)); + + gtk_window_set_transient_for( GTK_WINDOW( file_sel ), GTK_WINDOW( g_pRadiantWnd ) ); + gtk_window_set_position( GTK_WINDOW( file_sel ),GTK_WIN_POS_CENTER_ON_PARENT ); + gtk_window_set_modal( GTK_WINDOW( file_sel ), TRUE ); gtk_file_chooser_set_filename( GTK_FILE_CHOOSER(file_sel), portals.fn ); @@ -70,7 +69,7 @@ static void change_clicked( GtkWidget *widget, gpointer data ){ { filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_sel)); } - gtk_widget_destroy (file_sel); + ui::Widget(file_sel).destroy(); if ( filename != NULL ) { strcpy( portals.fn, filename ); @@ -80,14 +79,18 @@ static void change_clicked( GtkWidget *widget, gpointer data ){ } int DoLoadPortalFileDialog(){ - GtkWidget *hbox, *button, *entry, *check2d, *check3d; int loop = 1, ret = IDCANCEL; auto dlg = ui::Window( ui::window_type::TOP ); - gtk_window_set_title( GTK_WINDOW( dlg ), "Load .prt" ); - g_signal_connect( GTK_OBJECT( dlg ), "delete_event", + + gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( g_pRadiantWnd ) ); + gtk_window_set_position( GTK_WINDOW( dlg ),GTK_WIN_POS_CENTER_ON_PARENT ); + gtk_window_set_modal( GTK_WINDOW( dlg ), TRUE ); + + gtk_window_set_title( dlg, "Load .prt" ); + dlg.connect( "delete_event", G_CALLBACK( dialog_delete_callback ), NULL ); - g_signal_connect( GTK_OBJECT( dlg ), "destroy", + dlg.connect( "destroy", G_CALLBACK( gtk_widget_destroy ), NULL ); g_object_set_data( G_OBJECT( dlg ), "loop", &loop ); g_object_set_data( G_OBJECT( dlg ), "ret", &ret ); @@ -97,46 +100,46 @@ int DoLoadPortalFileDialog(){ dlg.add(vbox); gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 ); - entry = ui::Entry(); - gtk_widget_show( entry ); + auto entry = ui::Entry(ui::New); + entry.show(); gtk_editable_set_editable( GTK_EDITABLE( entry ), FALSE ); - gtk_box_pack_start( GTK_BOX( vbox ), entry, FALSE, FALSE, 0 ); + vbox.pack_start( entry, FALSE, FALSE, 0 ); - hbox = ui::HBox( FALSE, 5 ); - gtk_widget_show( hbox ); - gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 ); + auto hbox = ui::HBox( FALSE, 5 ); + hbox.show(); + vbox.pack_start( hbox, FALSE, FALSE, 0 ); - check3d = ui::CheckButton( "Show 3D" ); - gtk_widget_show( check3d ); - gtk_box_pack_start( GTK_BOX( hbox ), check3d, FALSE, FALSE, 0 ); + auto check3d = ui::CheckButton( "Show 3D" ); + check3d.show(); + hbox.pack_start( check3d, FALSE, FALSE, 0 ); - check2d = ui::CheckButton( "Show 2D" ); - gtk_widget_show( check2d ); - gtk_box_pack_start( GTK_BOX( hbox ), check2d, FALSE, FALSE, 0 ); + auto check2d = ui::CheckButton( "Show 2D" ); + check2d.show(); + hbox.pack_start( check2d, FALSE, FALSE, 0 ); - button = ui::Button( "Change" ); - gtk_widget_show( button ); - gtk_box_pack_end( GTK_BOX( hbox ), button, FALSE, FALSE, 0 ); - g_signal_connect( GTK_OBJECT( button ), "clicked", G_CALLBACK( change_clicked ), entry ); - gtk_widget_set_size_request( button, 60, -1 ); + auto button = ui::Button( "Change" ); + button.show(); + hbox.pack_end(button, FALSE, FALSE, 0); + button.connect( "clicked", G_CALLBACK( change_clicked ), entry ); + button.dimensions(60, -1); hbox = ui::HBox( FALSE, 5 ); - gtk_widget_show( hbox ); - gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 ); + hbox.show(); + vbox.pack_start( hbox, FALSE, FALSE, 0 ); button = ui::Button( "Cancel" ); - gtk_widget_show( button ); - gtk_box_pack_end( GTK_BOX( hbox ), button, FALSE, FALSE, 0 ); - g_signal_connect( GTK_OBJECT( button ), "clicked", + button.show(); + hbox.pack_end(button, FALSE, FALSE, 0); + button.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) ); - gtk_widget_set_size_request( button, 60, -1 ); + button.dimensions(60, -1); button = ui::Button( "OK" ); - gtk_widget_show( button ); - gtk_box_pack_end( GTK_BOX( hbox ), button, FALSE, FALSE, 0 ); - g_signal_connect( GTK_OBJECT( button ), "clicked", + button.show(); + hbox.pack_end(button, FALSE, FALSE, 0); + button.connect( "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( IDOK ) ); - gtk_widget_set_size_request( button, 60, -1 ); + button.dimensions(60, -1); strcpy( portals.fn, GlobalRadiant().getMapName() ); char* fn = strrchr( portals.fn, '.' ); @@ -151,7 +154,7 @@ int DoLoadPortalFileDialog(){ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( check3d ), portals.show_3d ); gtk_grab_add( dlg ); - gtk_widget_show( dlg ); + dlg.show(); while ( loop ) gtk_main_iteration(); @@ -164,7 +167,7 @@ int DoLoadPortalFileDialog(){ } gtk_grab_remove( dlg ); - gtk_widget_destroy( dlg ); + dlg.destroy(); return ret; }