-GtkWidget* create_main_dialog ()
-{
- GtkWidget *dlg, *vbox, *hbox, *hbox2, *button, *notebook, *frame, *table, *table2;
- GtkWidget *check, *spin, *radio, *label, *entry, *scale;
- GtkObject *adj;
- GSList *group;
- int i;
- char *games[] = { "Quake 2", "Half-Life", "SiN", "Heretic 2", "Kingpin", "Genesis3D", "Quake 3 Arena" };
- char *waveforms[] = { "Alternating hill/valley", "Cylindrical left-to-right", "Cylindrical top-to-bottom",
- "From bitmap", "Fractal" };
- char *orientations[] = { "Ground surface", "Ceiling", "Wall facing 0", "Wall facing 90",
- "Wall facing 180","Wall facing 270" };
-
- g_pWnd = dlg = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title (GTK_WINDOW (dlg), gszCaption);
- g_signal_connect (G_OBJECT (dlg), "delete_event", G_CALLBACK (main_close), NULL);
- // g_signal_connect (G_OBJECT (dlg), "destroy", G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (g_pRadiantWnd));
-
- hbox = gtk_hbox_new (FALSE, 5);
- gtk_widget_show (hbox);
- gtk_container_add (GTK_CONTAINER (dlg), hbox);
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-
- notebook = gtk_notebook_new ();
- gtk_widget_show (notebook);
- gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0);
- g_signal_connect (G_OBJECT (notebook), "switch_page",
- G_CALLBACK (switch_page), NULL);
- gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);
- g_object_set_data (G_OBJECT (dlg), "notebook", notebook);
-
- table = gtk_table_new (2, 2, FALSE);
- gtk_widget_show (table);
- 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);
-
- label = gtk_label_new ("General");
- gtk_widget_show (label);
- gtk_notebook_append_page (GTK_NOTEBOOK (notebook), table, label);
-
- frame = gtk_frame_new ("Game");
- gtk_widget_show (frame);
- gtk_table_attach (GTK_TABLE (table), frame, 0, 1, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
-
- vbox = gtk_vbox_new (TRUE, 5);
- gtk_widget_show (vbox);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
-
- for (i = 0, group = NULL; i < NUMGAMES; i++)
- {
- radio = gtk_radio_button_new_with_label (group, games[i]);
- gtk_widget_show (radio);
- gtk_box_pack_start (GTK_BOX (vbox), radio, TRUE, TRUE, 0);
- group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio));
- game_radios[i] = radio;
- g_signal_connect (G_OBJECT (radio), "toggled", G_CALLBACK (general_game), GINT_TO_POINTER (i));
- }
-
- frame = gtk_frame_new ("Waveform");
- gtk_widget_show (frame);
- gtk_table_attach (GTK_TABLE (table), frame, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
-
- vbox = gtk_vbox_new (TRUE, 5);
- gtk_widget_show (vbox);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
-
- for (i = 0, group = NULL; i < 5; i++)
- {
- radio = gtk_radio_button_new_with_label (group, waveforms[i]);
- gtk_widget_show (radio);
- gtk_box_pack_start (GTK_BOX (vbox), radio, TRUE, TRUE, 0);
- group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio));
- wave_radios[i] = radio;
- g_signal_connect (G_OBJECT (radio), "toggled", G_CALLBACK (general_wave), GINT_TO_POINTER (i));
- }
-
- frame = gtk_frame_new ("Orientation");
- gtk_widget_show (frame);
- gtk_table_attach (GTK_TABLE (table), frame, 0, 1, 1, 2,
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
-
- vbox = gtk_vbox_new (TRUE, 5);
- gtk_widget_show (vbox);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
-
- for (i = 0, group = NULL; i < 6; i++)
- {
- radio = gtk_radio_button_new_with_label (group, orientations[i]);
- gtk_widget_show (radio);
- gtk_box_pack_start (GTK_BOX (vbox), radio, TRUE, TRUE, 0);
- group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio));
- plane_radios[i] = radio;
- g_signal_connect (G_OBJECT (radio), "toggled", G_CALLBACK (general_plane), GINT_TO_POINTER (i));
- }
-
- table2 = gtk_table_new (4, 2, FALSE);
- gtk_widget_show (table2);
- 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);
-
- label = gtk_label_new ("Wavelength:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table2), label, 0, 1, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_RIGHT);
-
- label = gtk_label_new ("Max. amplitude:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table2), label, 0, 1, 1, 2,
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_RIGHT);
-
- label = gtk_label_new ("Roughness:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table2), label, 0, 1, 2, 3,
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_RIGHT);
-
- label = gtk_label_new ("Random seed:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table2), label, 0, 1, 3, 4,
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_RIGHT);
-
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- 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_usize (entry, 50, -2);
- g_object_set_data (G_OBJECT (dlg), "wavelength", entry);
- g_signal_connect (G_OBJECT (entry), "focus_out_event", G_CALLBACK (doublevariable_entryfocusout), &WaveLength);
-
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- 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_usize (entry, 50, -2);
- g_object_set_data (G_OBJECT (dlg), "amplitude", entry);
- g_signal_connect (G_OBJECT (entry), "focus_out_event", G_CALLBACK (doublevariable_entryfocusout), &Amplitude);
-
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- 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_usize (entry, 50, -2);
- g_object_set_data (G_OBJECT (dlg), "roughness", entry);
- g_signal_connect (G_OBJECT (entry), "focus_out_event", G_CALLBACK (doublevariable_entryfocusout), &Roughness);
-
- adj = gtk_adjustment_new (1, 1, 32767, 1, 10, 10);
- g_signal_connect (G_OBJECT (adj), "value_changed", G_CALLBACK (general_random), NULL);
- spin = gtk_spin_button_new (GTK_ADJUSTMENT (adj), 1, 0);
- gtk_widget_show (spin);
- 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_usize (spin, 60, -2);
- g_object_set_data (G_OBJECT (dlg), "random", spin);
-
- vbox = gtk_vbox_new (FALSE, 5);
- gtk_widget_show (vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
-
- label = gtk_label_new ("Extents");
- gtk_widget_show (label);
- gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label);
-
- hbox2 = gtk_hbox_new (FALSE, 5);
- gtk_widget_show (hbox2);
- gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, TRUE, 0);
-
- frame = gtk_frame_new ("Extents");
- gtk_widget_show (frame);
- gtk_box_pack_start (GTK_BOX (hbox2), frame, TRUE, TRUE, 0);
-
- table = gtk_table_new (3, 4, FALSE);
- gtk_widget_show (table);
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);
- gtk_container_add (GTK_CONTAINER (frame), table);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
- label = gtk_label_new ("X:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
- g_object_set_data (G_OBJECT (dlg), "hmin_text", label);
-
- label = gtk_label_new ("X:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 2, 3, 1, 2,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
- g_object_set_data (G_OBJECT (dlg), "hmax_text", label);
-
- label = gtk_label_new ("Y:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
- g_object_set_data (G_OBJECT (dlg), "vmin_text", label);
-
- label = gtk_label_new ("Y:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 2, 3, 2, 3,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
- g_object_set_data (G_OBJECT (dlg), "vmax_text", label);
-
- label = gtk_label_new ("Lower-left");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
-
- label = gtk_label_new ("Upper-right");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 3, 4, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
-
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- 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_usize (entry, 50, -2);
- g_object_set_data (G_OBJECT (dlg), "hmin", entry);
- g_signal_connect (G_OBJECT (entry), "focus_out_event", G_CALLBACK (doublevariable_entryfocusout), &Hll);
-
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- 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_usize (entry, 50, -2);
- g_object_set_data (G_OBJECT (dlg), "hmax", entry);
- g_signal_connect (G_OBJECT (entry), "focus_out_event", G_CALLBACK (doublevariable_entryfocusout), &Hur);
-
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- 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_usize (entry, 50, -2);
- g_object_set_data (G_OBJECT (dlg), "vmin", entry);
- g_signal_connect (G_OBJECT (entry), "focus_out_event", G_CALLBACK (doublevariable_entryfocusout), &Vll);
-
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- 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_usize (entry, 50, -2);
- g_object_set_data (G_OBJECT (dlg), "vmax", entry);
- g_signal_connect (G_OBJECT (entry), "focus_out_event", G_CALLBACK (doublevariable_entryfocusout), &Vur);
-
- frame = gtk_frame_new ("Divisions");
- gtk_widget_show (frame);
- gtk_box_pack_start (GTK_BOX (hbox2), frame, TRUE, TRUE, 0);
-
- table = gtk_table_new (2, 2, FALSE);
- gtk_widget_show (table);
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);
- gtk_container_add (GTK_CONTAINER (frame), table);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
- label = gtk_label_new ("X:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
- g_object_set_data (G_OBJECT (dlg), "nh_text", label);
-
- label = gtk_label_new ("Y:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), 0, 0);
- g_object_set_data (G_OBJECT (dlg), "nv_text", label);
-
- adj = gtk_adjustment_new (8, 1, MAX_ROWS, 1, 10, 10);
- g_signal_connect (G_OBJECT (adj), "value_changed", G_CALLBACK (extents_nhnv_spin), &NH);
- spin = gtk_spin_button_new (GTK_ADJUSTMENT (adj), 1, 0);
- gtk_widget_show (spin);
- 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_usize (spin, 60, -2);
- g_object_set_data (G_OBJECT (dlg), "nh", spin);
-
- adj = gtk_adjustment_new (8, 1, MAX_ROWS, 1, 10, 10);
- g_signal_connect (G_OBJECT (adj), "value_changed", G_CALLBACK (extents_nhnv_spin), &NV);
- spin = gtk_spin_button_new (GTK_ADJUSTMENT (adj), 1, 0);
- gtk_widget_show (spin);
- 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_usize (spin, 60, -2);
- g_object_set_data (G_OBJECT (dlg), "nv", spin);
-
- check = gtk_check_button_new_with_label ("Use Bezier patches");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, TRUE, 0);
- g_object_set_data (G_OBJECT (dlg), "use_patches", check);
- g_signal_connect (G_OBJECT (check), "toggled", G_CALLBACK (extents_use_patches), NULL);
+GtkWidget* create_main_dialog(){
+ GtkWidget *hbox2, *button, *notebook, *table2;
+ GtkWidget *check, *spin, *radio, *label, *entry, *scale;
+ ui::Adjustment adj;
+ GSList *group;
+ int i;
+ const char *games[] = { "Quake 2", "Half-Life", "SiN", "Heretic 2", "Kingpin", "Genesis3D", "Quake 3 Arena" };
+ const char *waveforms[] = { "Alternating hill/valley", "Cylindrical left-to-right", "Cylindrical top-to-bottom",
+ "From bitmap", "Fractal" };
+ const char *orientations[] = { "Ground surface", "Ceiling", "Wall facing 0", "Wall facing 90",
+ "Wall facing 180","Wall facing 270" };
+
+ auto dlg = g_pWnd = ui::Window( ui::window_type::TOP );
+ 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( dlg, g_pRadiantWnd );
+
+ auto hbox = ui::HBox( FALSE, 5 );
+ hbox.show();
+ dlg.add(hbox);
+ gtk_container_set_border_width( GTK_CONTAINER( hbox ), 5 );
+
+ notebook = gtk_notebook_new();
+ notebook.show();
+ hbox.pack_start( notebook, TRUE, TRUE, 0 );
+ notebook.connect( "switch_page",
+ G_CALLBACK( switch_page ), NULL );
+ gtk_notebook_set_tab_pos( GTK_NOTEBOOK( notebook ), GTK_POS_TOP );
+ g_object_set_data( G_OBJECT( dlg ), "notebook", notebook );
+
+ table = ui::Table( 2, 2, FALSE );
+ table.show();
+ gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
+ gtk_table_set_row_spacings(table, 5);
+ gtk_table_set_col_spacings(table, 5);
+
+ label = ui::Label( "General" );
+ label.show();
+ gtk_notebook_append_page( GTK_NOTEBOOK( notebook ), table, label );
+
+ auto frame = ui::Frame( "Game" );
+ frame.show();
+ table.attach(frame, {0, 1, 0, 1});
+
+ auto vbox = ui::VBox( TRUE, 5 );
+ vbox.show();
+ frame.add(vbox);
+ gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 );
+
+ for ( i = 0, group = NULL; i < NUMGAMES; i++ )
+ {
+ radio = gtk_radio_button_new_with_label( group, games[i] );
+ radio.show();
+ vbox.pack_start( radio, TRUE, TRUE, 0 );
+ group = gtk_radio_button_get_group( GTK_RADIO_BUTTON( radio ) );
+ game_radios[i] = radio;
+ radio.connect( "toggled", G_CALLBACK( general_game ), GINT_TO_POINTER( i ) );
+ }
+
+ frame = ui::Frame( "Waveform" );
+ frame.show();
+ table.attach(frame, {1, 2, 0, 1});
+
+ vbox = ui::VBox( TRUE, 5 );
+ vbox.show();
+ frame.add(vbox);
+ gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 );
+
+ for ( i = 0, group = NULL; i < 5; i++ )
+ {
+ radio = gtk_radio_button_new_with_label( group, waveforms[i] );
+ radio.show();
+ vbox.pack_start( radio, TRUE, TRUE, 0 );
+ group = gtk_radio_button_get_group( GTK_RADIO_BUTTON( radio ) );
+ wave_radios[i] = radio;
+ radio.connect( "toggled", G_CALLBACK( general_wave ), GINT_TO_POINTER( i ) );
+ }
+
+ frame = ui::Frame( "Orientation" );
+ frame.show();
+ table.attach(frame, {0, 1, 1, 2});
+
+ vbox = ui::VBox( TRUE, 5 );
+ vbox.show();
+ frame.add(vbox);
+ gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 );
+
+ for ( i = 0, group = NULL; i < 6; i++ )
+ {
+ radio = gtk_radio_button_new_with_label( group, orientations[i] );
+ radio.show();
+ vbox.pack_start( radio, TRUE, TRUE, 0 );
+ group = gtk_radio_button_get_group( GTK_RADIO_BUTTON( radio ) );
+ plane_radios[i] = radio;
+ radio.connect( "toggled", G_CALLBACK( general_plane ), GINT_TO_POINTER( i ) );
+ }
+
+ table2 = ui::Table( 4, 2, FALSE );
+ table2.show();
+ 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();
+ 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();
+ 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();
+ 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();
+ 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();
+ 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();
+ 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();
+ 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 );
+
+ adj = ui::Adjustment( 1, 1, 32767, 1, 10, 0 );
+ adj.connect( "value_changed", G_CALLBACK( general_random ), NULL );
+ spin = ui::SpinButton( adj, 1, 0 );
+ spin.show();
+ 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 );
+ vbox.show();
+ gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 );
+
+ label = ui::Label( "Extents" );
+ label.show();
+ gtk_notebook_append_page( GTK_NOTEBOOK( notebook ), vbox, label );
+
+ hbox2 = ui::HBox( FALSE, 5 );
+ hbox2.show();
+ vbox.pack_start( hbox2, FALSE, TRUE, 0 );
+
+ frame = ui::Frame( "Extents" );
+ frame.show();
+ hbox2.pack_start( frame, TRUE, TRUE, 0 );
+
+ auto table = ui::Table( 3, 4, FALSE );
+ table.show();
+ gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
+ frame.add(table);
+ gtk_table_set_row_spacings(table, 5);
+ gtk_table_set_col_spacings(table, 5);
+
+ label = ui::Label( "X:" );
+ label.show();
+ 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();
+ 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();
+ 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();
+ 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();
+ table.attach(label, {1, 2, 0, 1}, {GTK_FILL, GTK_FILL});
+
+ label = ui::Label( "Upper-right" );
+ label.show();
+ table.attach(label, {3, 4, 0, 1},, {GTK_FILL, GTK_FILL});
+
+ entry = ui::Entry();
+ entry.show();
+ 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();
+ 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();
+ 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();
+ 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 );
+
+ frame = ui::Frame( "Divisions" );
+ frame.show();
+ hbox2.pack_start( frame, TRUE, TRUE, 0 );
+
+ table = ui::Table( 2, 2, FALSE );
+ table.show();
+ gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
+ frame.add(table);
+ gtk_table_set_row_spacings(table, 5);
+ gtk_table_set_col_spacings(table, 5);
+
+ label = ui::Label( "X:" );
+ label.show();
+ 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();
+ 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();
+ 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();
+ 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" );
+ check.show();
+ vbox.pack_start( check, FALSE, TRUE, 0 );
+ g_object_set_data( G_OBJECT( dlg ), "use_patches", check );
+ check.connect( "toggled", G_CALLBACK( extents_use_patches ), NULL );