]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - contrib/gtkgensurf/gendlgs.cpp
GTK: wrap gtk_widget_set_size_request
[xonotic/netradiant.git] / contrib / gtkgensurf / gendlgs.cpp
index a6545f34ea13c88ac02adb8c353571e32965f7f3..e64a6598b5fc68c5bc63cb8dd8d8d9019dd82a22 100644 (file)
@@ -934,7 +934,7 @@ static gint fix_value_entryfocusout( GtkWidget* widget, GdkEventFocus *event, gp
                                                                         "GenSurf", eMB_OK, eMB_ICONWARNING );
                sprintf( Text, "%d", (int)xyz[Vertex[0].i][Vertex[0].j].fixed_value );
                gtk_entry_set_text( GTK_ENTRY( widget ), Text );
-               gtk_window_set_focus( GTK_WINDOW( gtk_widget_get_toplevel( widget ) ), widget );
+               gtk_window_set_focus( widget.window(), widget );
        }
        else if ( i != xyz[Vertex[0].i][Vertex[0].j].fixed_value ) {
                for ( k = 0; k < NumVerticesSelected; k++ )
@@ -1356,10 +1356,10 @@ GtkWidget* create_main_dialog(){
                                                                   "Wall facing 180","Wall facing 270" };
 
        auto dlg = g_pWnd = ui::Window( ui::window_type::TOP );
-       gtk_window_set_title( GTK_WINDOW( dlg ), gszCaption );
+       gtk_window_set_title( dlg, gszCaption );
        dlg.connect( "delete_event", G_CALLBACK( main_close ), NULL );
        //  dlg.connect( "destroy", G_CALLBACK (gtk_widget_destroy), NULL);
-       gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( g_pRadiantWnd ) );
+       gtk_window_set_transient_for( dlg, g_pRadiantWnd );
 
        auto hbox = ui::HBox( FALSE, 5 );
        hbox.show();
@@ -1377,8 +1377,8 @@ GtkWidget* create_main_dialog(){
        table = ui::Table( 2, 2, FALSE );
        table.show();
        gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "General" );
        label.show();
@@ -1386,9 +1386,7 @@ GtkWidget* create_main_dialog(){
 
        auto frame = ui::Frame( "Game" );
        frame.show();
-       gtk_table_attach( GTK_TABLE( table ), frame, 0, 1, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(frame, {0, 1, 0, 1});
 
        auto vbox = ui::VBox( TRUE, 5 );
        vbox.show();
@@ -1407,9 +1405,7 @@ GtkWidget* create_main_dialog(){
 
        frame = ui::Frame( "Waveform" );
        frame.show();
-       gtk_table_attach( GTK_TABLE( table ), frame, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(frame, {1, 2, 0, 1});
 
        vbox = ui::VBox( TRUE, 5 );
        vbox.show();
@@ -1428,9 +1424,7 @@ GtkWidget* create_main_dialog(){
 
        frame = ui::Frame( "Orientation" );
        frame.show();
-       gtk_table_attach( GTK_TABLE( table ), frame, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(frame, {0, 1, 1, 2});
 
        vbox = ui::VBox( TRUE, 5 );
        vbox.show();
@@ -1449,68 +1443,52 @@ GtkWidget* create_main_dialog(){
 
        table2 = ui::Table( 4, 2, FALSE );
        table2.show();
-       gtk_table_set_row_spacings( GTK_TABLE( table2 ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table2 ), 5 );
-       gtk_table_attach( GTK_TABLE( table ), table2, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+    gtk_table_set_row_spacings(table2, 5);
+    gtk_table_set_col_spacings(table2, 5);
+       table.attach(table2, {1, 2, 1, 2});
 
        label = ui::Label( "Wavelength:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table2 ), label, 0, 1, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table2.attach(label, {0, 1, 0, 1});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        gtk_label_set_justify( GTK_LABEL( label ), GTK_JUSTIFY_RIGHT );
 
        label = ui::Label( "Max. amplitude:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table2 ), label, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table2.attach(label, {0, 1, 1, 2});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        gtk_label_set_justify( GTK_LABEL( label ), GTK_JUSTIFY_RIGHT );
 
        label = ui::Label( "Roughness:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table2 ), label, 0, 1, 2, 3,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+    table2.attach(label, {0, 1, 2, 3});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        gtk_label_set_justify( GTK_LABEL( label ), GTK_JUSTIFY_RIGHT );
 
        label = ui::Label( "Random seed:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table2 ), label, 0, 1, 3, 4,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+    table2.attach(label, {0, 1, 3, 4});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        gtk_label_set_justify( GTK_LABEL( label ), GTK_JUSTIFY_RIGHT );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table2 ), entry, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+    table2.attach(entry, {1, 2, 0, 1});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "wavelength", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &WaveLength );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table2 ), entry, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+    table2.attach(entry, {1, 2, 1, 2});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "amplitude", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Amplitude );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table2 ), entry, 1, 2, 2, 3,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table2.attach(entry, {1, 2, 2, 3});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "roughness", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Roughness );
 
@@ -1518,10 +1496,8 @@ GtkWidget* create_main_dialog(){
        adj.connect( "value_changed", G_CALLBACK( general_random ), NULL );
        spin = ui::SpinButton( adj, 1, 0 );
        spin.show();
-       gtk_table_attach( GTK_TABLE( table2 ), spin, 1, 2, 3, 4,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( spin, 60, -1 );
+       table2.attach(spin, {1, 2, 3, 4});
+       spin.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "random", spin );
 
        vbox = ui::VBox( FALSE, 5 );
@@ -1544,82 +1520,62 @@ GtkWidget* create_main_dialog(){
        table.show();
        gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
        frame.add(table);
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "X:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach( label, {0, 1, 1, 2}, {GTK_FILL, GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "hmin_text", label );
 
        label = ui::Label( "X:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 1, 2,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {2, 3, 1, 2}, {GTK_FILL, GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "hmax_text", label );
 
        label = ui::Label( "Y:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 2, 3,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 2, 3}, {GTK_FILL, GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "vmin_text", label );
 
        label = ui::Label( "Y:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 2, 3,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {2, 3, 2, 3}, {GTK_FILL, GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "vmax_text", label );
 
        label = ui::Label( "Lower-left" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {1, 2, 0, 1}, {GTK_FILL, GTK_FILL});
 
        label = ui::Label( "Upper-right" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 3, 4, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {3, 4, 0, 1},, {GTK_FILL, GTK_FILL});
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table.attach(entry, {1, 2, 1, 2});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "hmin", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Hll );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 3, 4, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table.attach(entry, {3, 4, 1, 2});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "hmax", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Hur );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 2, 3,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table.attach(entry, {1, 2, 2, 3});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "vmin", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Vll );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 3, 4, 2, 3,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table.attach(entry, {3, 4, 2, 3});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "vmax", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Vur );
 
@@ -1631,41 +1587,33 @@ GtkWidget* create_main_dialog(){
        table.show();
        gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
        frame.add(table);
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "X:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 0, 1}, {GTK_FILL, GTK_EXPAND | GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "nh_text", label );
 
        label = ui::Label( "Y:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 1, 2}, {GTK_FILL, GTK_EXPAND | GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "nv_text", label );
 
        adj = ui::Adjustment( 8, 1, MAX_ROWS, 1, 10, 0 );
        adj.connect( "value_changed", G_CALLBACK( extents_nhnv_spin ), &NH );
        spin = ui::SpinButton( adj, 1, 0 );
        spin.show();
-       gtk_table_attach( GTK_TABLE( table ), spin, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( spin, 60, -1 );
+       table.attach(spin, {1, 2, 0, 1});
+       spin.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "nh", spin );
 
        adj = ui::Adjustment( 8, 1, MAX_ROWS, 1, 10, 0 );
        adj.connect( "value_changed", G_CALLBACK( extents_nhnv_spin ), &NV );
        spin = ui::SpinButton( adj, 1, 0 );
        spin.show();
-       gtk_table_attach( GTK_TABLE( table ), spin, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( spin, 60, -1 );
+       table.attach(spin, {1, 2, 1, 2});
+       spin.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "nv", spin );
 
        check = ui::CheckButton( "Use Bezier patches" );
@@ -1685,7 +1633,7 @@ GtkWidget* create_main_dialog(){
        spin = ui::SpinButton( adj, 1, 0 );
        spin.show();
        vbox.pack_start( spin, FALSE, TRUE, 0 );
-       gtk_widget_set_size_request( spin, 60, -1 );
+       spin.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "sp", spin );
        // ^Fishman - End of Snap to grid code.
 
@@ -1715,74 +1663,56 @@ GtkWidget* create_main_dialog(){
        table.show();
        gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
        frame.add(table);
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "Upper-left:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 0, 1}, {GTK_FILL, GTK_FILL});
 
        label = ui::Label( "Lower-left:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 1, 2}, {GTK_FILL, GTK_FILL});
 
        label = ui::Label( "Upper-right:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {2, 3, 0, 1}, {GTK_FILL, GTK_FILL});
 
        label = ui::Label( "Lower-right:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 1, 2,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {2, 3, 1, 2}, {GTK_FILL, GTK_FILL});
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table.attach(entry, {1, 2, 0, 1});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "z01", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Z01 );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table.attach(entry, {1, 2, 1, 2});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "z00", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Z00 );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 3, 4, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table.attach(entry, {3, 4, 0, 1});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "z11", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Z11 );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 3, 4, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       table.attach(entry, {3, 4, 1, 2});
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "z10", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Z10 );
 
        check = ui::CheckButton( "Linear borders" );
        check.show();
-       gtk_table_attach( GTK_TABLE( table ), check, 0, 4, 2, 3,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(check, {0, 4, 2, 3});
        g_object_set_data( G_OBJECT( dlg ), "linearborder", check );
        check.connect( "toggled", G_CALLBACK( extents_linearborder ), NULL );
 
@@ -1803,41 +1733,35 @@ GtkWidget* create_main_dialog(){
        table.show();
        gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
        vbox.pack_start( table, FALSE, TRUE, 0 );
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "Filename:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 0, 1}, {GTK_FILL, GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "bmp_text1", label );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(entry, {1, 2, 0, 1}, {GTK_EXPAND | GTK_FILL, GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "bmp_file", entry );
        entry.connect( "focus_out_event", G_CALLBACK( bitmap_file_entryfocusout ), NULL );
 
        hbox2 = ui::HBox( TRUE, 5 );
        hbox2.show();
-       gtk_table_attach( GTK_TABLE( table ), hbox2, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( 0 ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(hbox2, {1, 2, 1, 2}, {0, GTK_EXPAND | GTK_FILL});
 
        button = ui::Button( "Browse..." );
        button.show();
        hbox2.pack_start( button, FALSE, FALSE, 0 );
-       gtk_widget_set_size_request( button, 60, -1 );
+       button.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "bmp_file_browse", button );
        button.connect( "clicked", G_CALLBACK( bitmap_browse ), NULL );
 
        button = ui::Button( "Reload" );
        button.show();
        hbox2.pack_start( button, FALSE, FALSE, 0 );
-       gtk_widget_set_size_request( button, 60, -1 );
+       button.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "bmp_reload", button );
        button.connect( "clicked", G_CALLBACK( bitmap_reload ), NULL );
 
@@ -1845,50 +1769,42 @@ GtkWidget* create_main_dialog(){
        table.show();
        gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
        vbox.pack_start( table, FALSE, TRUE, 0 );
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "Map color 0 to:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL | GTK_EXPAND ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 0, 1}, {GTK_FILL | GTK_EXPAND, GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "bmp_text2", label );
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        gtk_label_set_justify( GTK_LABEL( label ), GTK_JUSTIFY_RIGHT );
 
        label = ui::Label( "Map color 255 to:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_FILL | GTK_EXPAND ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 1, 2}, {GTK_FILL | GTK_EXPAND, GTK_FILL});
        g_object_set_data( G_OBJECT( dlg ), "bmp_text3", label );
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        gtk_label_set_justify( GTK_LABEL( label ), GTK_JUSTIFY_RIGHT );
 
        hbox2 = ui::HBox( FALSE, 5 );
        hbox2.show();
-       gtk_table_attach( GTK_TABLE( table ), hbox2, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(hbox2, {1, 2, 0, 1});
 
        entry = ui::Entry();
        entry.show();
        hbox2.pack_start( entry, FALSE, FALSE, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "bmp_black", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &gbmp.black_value );
 
        hbox2 = ui::HBox( FALSE, 5 );
        hbox2.show();
-       gtk_table_attach( GTK_TABLE( table ), hbox2, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+       table.attach(hbox2, {1, 2, 1, 2});
 
        entry = ui::Entry();
        entry.show();
        hbox2.pack_start( entry, FALSE, FALSE, 0 );
-       gtk_widget_set_size_request( entry, 50, -1 );
+       entry.dimensions( 50, -1 );
        g_object_set_data( G_OBJECT( dlg ), "bmp_white", entry );
        entry.connect( "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &gbmp.white_value );
 
@@ -1913,30 +1829,24 @@ GtkWidget* create_main_dialog(){
        table.show();
        gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
        vbox.pack_start( table, FALSE, TRUE, 0 );
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "Value:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 0, 1}, {GTK_FILL, GTK_FILL});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        g_object_set_data( G_OBJECT( dlg ), "fix_value_text", label );
 
        label = ui::Label( "Range affected:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 1, 2}, {GTK_FILL, GTK_FILL});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        g_object_set_data( G_OBJECT( dlg ), "fix_range_text", label );
 
        label = ui::Label( "Rate of change:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 2, 3,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 2, 3}, {GTK_FILL, GTK_FILL});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
        g_object_set_data( G_OBJECT( dlg ), "fix_rate_text", label );
 
@@ -1944,46 +1854,36 @@ GtkWidget* create_main_dialog(){
        adj.connect( "value_changed", G_CALLBACK( fix_value_changed ), NULL );
        spin = ui::SpinButton( adj, 1, 0 );
        spin.show();
-       gtk_table_attach( GTK_TABLE( table ), spin, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND ),
-                                         (GtkAttachOptions) ( GTK_EXPAND ), 0, 0 );
-       gtk_widget_set_size_request( spin, 60, -1 );
+       table.attach(spin, {1, 2, 0, 1}, {GTK_EXPAND, GTK_EXPAND});
+       spin.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "fix_value", spin );
        spin.connect( "focus_out_event", G_CALLBACK( fix_value_entryfocusout ), NULL );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {1, 2, 1, 2}, {GTK_EXPAND, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "fix_range", entry );
        entry.connect( "focus_out_event", G_CALLBACK( fix_range_entryfocusout ), NULL );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 2, 3,
-                                         (GtkAttachOptions) ( GTK_EXPAND ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {1, 2, 2, 3}, {GTK_EXPAND, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "fix_rate", entry );
        entry.connect( "focus_out_event", G_CALLBACK( fix_rate_entryfocusout ), NULL );
 
        button = ui::Button( "Free" );
        button.show();
-       gtk_table_attach( GTK_TABLE( table ), button, 2, 3, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( button, 60, -1 );
+       table.attach(button, {2, 3, 0, 1}, {GTK_EXPAND, GTK_FILL});
+       button.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "fix_free", button );
        button.connect( "clicked", G_CALLBACK( fix_free ), NULL );
 
        button = ui::Button( "Free All" );
        button.show();
-       gtk_table_attach( GTK_TABLE( table ), button, 2, 3, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( button, 60, -1 );
+       table.attach(button, {2, 3, 1, 2}, {GTK_EXPAND, GTK_FILL});
+       button.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "fix_freeall", button );
        button.connect( "clicked", G_CALLBACK( fix_freeall ), NULL );
 
@@ -1999,54 +1899,42 @@ GtkWidget* create_main_dialog(){
        table = ui::Table( 5, 2, FALSE );
        table.show();
        vbox.pack_start( table, FALSE, TRUE, 0 );
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "Surface:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 0, 1}, {GTK_FILL, GTK_FILL});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
 
        label = ui::Label( "Other:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 1, 2}, {GTK_FILL, GTK_FILL});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
 
        label = ui::Label( "Steep:" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 2, 3,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 1, 2, 3}, {GTK_FILL, GTK_FILL});
        gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {1, 2, 0, 1}, {GTK_EXPAND | GTK_FILL, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "texture1", entry );
        entry.connect( "focus_out_event", G_CALLBACK( texture_entryfocusout ), GINT_TO_POINTER( 0 ) );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {1, 2, 1, 2}, {GTK_EXPAND | GTK_FILL, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "texture2", entry );
        entry.connect( "focus_out_event", G_CALLBACK( texture_entryfocusout ), GINT_TO_POINTER( 1 ) );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 2, 3,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {1, 2, 2, 3}, {GTK_EXPAND | GTK_FILL, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "texture3", entry );
 
        hbox2 = ui::HBox( FALSE, 5 );
@@ -2066,51 +1954,39 @@ GtkWidget* create_main_dialog(){
        table = ui::Table( 2, 4, TRUE );
        table.show();
        vbox.pack_start( table, FALSE, TRUE, 0 );
-       gtk_table_set_row_spacings( GTK_TABLE( table ), 5 );
-       gtk_table_set_col_spacings( GTK_TABLE( table ), 5 );
+    gtk_table_set_row_spacings(table, 5);
+    gtk_table_set_col_spacings(table, 5);
 
        label = ui::Label( "Offset <h,v>" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 0, 2, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {0, 2, 0, 1}, {GTK_FILL, GTK_FILL});
 
        label = ui::Label( "Scale <h,v>" );
        label.show();
-       gtk_table_attach( GTK_TABLE( table ), label, 2, 4, 0, 1,
-                                         (GtkAttachOptions) ( GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+       table.attach(label, {2, 4, 0, 1}, {GTK_FILL, GTK_FILL});
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 0, 1, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {0, 1, 1, 2}, {GTK_EXPAND | GTK_FILL, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "texoffsetx", entry );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {1, 2, 1, 2}, {GTK_EXPAND | GTK_FILL, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "texoffsety", entry );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 2, 3, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {2, 3, 1, 2}, {GTK_EXPAND | GTK_FILL, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "texscalex", entry );
 
        entry = ui::Entry();
        entry.show();
-       gtk_table_attach( GTK_TABLE( table ), entry, 3, 4, 1, 2,
-                                         (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
-                                         (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
-       gtk_widget_set_size_request( entry, 60, -1 );
+       table.attach(entry, {3, 4, 1, 2}, {GTK_EXPAND | GTK_FILL, GTK_FILL});
+       entry.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "texscaley", entry );
 
 
@@ -2141,7 +2017,7 @@ GtkWidget* create_main_dialog(){
        button = ui::Button( "OK" );
        button.show();
        vbox.pack_start( button, FALSE, TRUE, 0 );
-       gtk_widget_set_size_request( button, 60, -1 );
+       button.dimensions( 60, -1 );
        g_object_set_data( G_OBJECT( dlg ), "go", button );
        button.connect( "clicked", G_CALLBACK( main_go ), NULL );