diff --git a/examples/cairo.c b/examples/cairo.c index dff9bbd..8cae7a6 100644 --- a/examples/cairo.c +++ b/examples/cairo.c @@ -108,34 +108,12 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Cairo textures"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Cairo textures", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 10000); @@ -148,17 +126,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/cubes.c b/examples/cubes.c index d58183d..595a689 100644 --- a/examples/cubes.c +++ b/examples/cubes.c @@ -266,34 +266,12 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Cubes"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Cubes", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 10000); @@ -306,17 +284,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/effects.c b/examples/effects.c index 565b4fe..777cec9 100644 --- a/examples/effects.c +++ b/examples/effects.c @@ -288,31 +288,9 @@ pass_toggled (GtkToggleButton *toggle_button, GthreePass *pass) int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area, *check; - -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Effects"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); + GtkWidget *window, *box, *hbox, *area, *check; - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Effects", &box); init_scene (); init_scene2 (); @@ -323,7 +301,7 @@ main (int argc, char *argv[]) g_signal_connect (area, "render", G_CALLBACK (render_area), NULL); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); @@ -363,12 +341,6 @@ main (int argc, char *argv[]) gtk_widget_show (check); g_signal_connect (check, "toggled", G_CALLBACK (pass_toggled), greyscale_pass); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/envmap.c b/examples/envmap.c index d14c91f..7503952 100644 --- a/examples/envmap.c +++ b/examples/envmap.c @@ -137,33 +137,11 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Environment map"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Environment map", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 5000); @@ -176,17 +154,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/gtklogo.c b/examples/gtklogo.c index 658eb5c..1113804 100644 --- a/examples/gtklogo.c +++ b/examples/gtklogo.c @@ -233,34 +233,12 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); - gtk_window_set_title (GTK_WINDOW (window), "GTK+ logo"); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("GTK+ logo", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 10000); @@ -273,17 +251,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/interactive.c b/examples/interactive.c index 0cbe295..d102180 100644 --- a/examples/interactive.c +++ b/examples/interactive.c @@ -214,33 +214,11 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Interactive"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Interactive", &box); scene = init_scene (); camera = gthree_perspective_camera_new (70, 1, 1, 10000); @@ -253,17 +231,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/materials.c b/examples/materials.c index cc2ba85..ac0387f 100644 --- a/examples/materials.c +++ b/examples/materials.c @@ -346,48 +346,20 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; - -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Materials"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + GtkWidget *window, *box, *area; + + window = examples_init ("Materials", &box); init_scene (); area = gthree_area_new (scene, GTHREE_CAMERA (camera)); g_signal_connect (area, "resize", G_CALLBACK (resize_area), NULL); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/model.c b/examples/model.c index 621f856..c70dd0d 100644 --- a/examples/model.c +++ b/examples/model.c @@ -494,12 +494,6 @@ main (int argc, char *argv[]) { "resource:///org/gnome/gthree-examples/models/RobotExpressive.glb", "Robot" }, }; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - env_maps = g_ptr_array_new_with_free_func (g_object_unref); for (i = 0; i < G_N_ELEMENTS (cubes); i++) { @@ -514,23 +508,7 @@ main (int argc, char *argv[]) g_ptr_array_add (env_maps, cube_texture); } - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Models"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Models", &box); area = gthree_area_new (NULL, NULL); @@ -552,7 +530,7 @@ main (int argc, char *argv[]) gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); @@ -612,18 +590,12 @@ main (int argc, char *argv[]) gtk_widget_show (check); g_signal_connect (check, "toggled", G_CALLBACK (fade_animations_toggled), NULL); - morph_scale =scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 1.0, 0.01); + morph_scale = scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 1.0, 0.01); gtk_widget_set_size_request (scale, 100, -1); gtk_container_add (GTK_CONTAINER (hbox), scale); gtk_widget_show (scale); g_signal_connect (morph_scale, "value-changed", G_CALLBACK (morph_scale_changed), NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); update_scene (GTHREE_AREA (area)); diff --git a/examples/morphtargets.c b/examples/morphtargets.c index f205d24..7f13596 100644 --- a/examples/morphtargets.c +++ b/examples/morphtargets.c @@ -95,34 +95,12 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Morph targets"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Morph targets", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 10000); @@ -135,17 +113,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/multi.c b/examples/multi.c index 99b8932..5ecfbc1 100644 --- a/examples/multi.c +++ b/examples/multi.c @@ -174,39 +174,17 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *grid; + GtkWidget *window, *box, *grid; GthreeScene *scene; graphene_point3d_t pos; graphene_euler_t euler; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Multi views"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Multi views", &box); scene = init_scene (); grid = gtk_grid_new (); - gtk_container_add (GTK_CONTAINER (hbox), grid); + gtk_container_add (GTK_CONTAINER (box), grid); gtk_widget_show (grid); gtk_grid_set_row_homogeneous (GTK_GRID (grid), TRUE); gtk_grid_set_row_spacing (GTK_GRID (grid), 6); @@ -268,12 +246,6 @@ main (int argc, char *argv[]) gtk_widget_add_tick_callback (GTK_WIDGET (area_z), tick, NULL, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/normals.c b/examples/normals.c index f1c7191..d9c490d 100644 --- a/examples/normals.c +++ b/examples/normals.c @@ -153,34 +153,12 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); - gtk_window_set_title (GTK_WINDOW (window), "Normals"); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Normals", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 10000); @@ -193,17 +171,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/performance.c b/examples/performance.c index 5a3ac25..092b7ef 100644 --- a/examples/performance.c +++ b/examples/performance.c @@ -113,33 +113,11 @@ motion_event (GtkWidget *widget, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Performance"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Performance", &box); scene = init_scene (); camera = gthree_perspective_camera_new (60, 1, 1, 10000); @@ -154,17 +132,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "motion-notify-event", G_CALLBACK (motion_event), NULL); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/points.c b/examples/points.c index d59b8a7..f974266 100644 --- a/examples/points.c +++ b/examples/points.c @@ -157,34 +157,12 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Points"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Points", &box); scene = init_scene (); camera = gthree_perspective_camera_new (27, 1, 5, 3500); @@ -197,17 +175,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/properties.c b/examples/properties.c index 094d6de..9433c55 100644 --- a/examples/properties.c +++ b/examples/properties.c @@ -249,35 +249,13 @@ material_combo_changed (GtkComboBox *combo_box) int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area, *sw, *combo; + GtkWidget *window, *box, *area, *sw, *combo; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; int i; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); - gtk_window_set_title (GTK_WINDOW (window), "Properties"); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Properties", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 10000); @@ -290,7 +268,7 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); @@ -313,12 +291,6 @@ main (int argc, char *argv[]) property_pane = sw; - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); update_property_pane (); diff --git a/examples/rendertarget.c b/examples/rendertarget.c index 78a76a5..f1f79be 100644 --- a/examples/rendertarget.c +++ b/examples/rendertarget.c @@ -135,31 +135,9 @@ render_area (GtkGLArea *gl_area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; - -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Render targets"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + GtkWidget *window, *box, *area; + + window = examples_init ("Render targets", &box); init_scene (); @@ -168,17 +146,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "render", G_CALLBACK (render_area), NULL); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/shader.c b/examples/shader.c index c4dcf59..b3e7f62 100644 --- a/examples/shader.c +++ b/examples/shader.c @@ -276,34 +276,12 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Shader"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Shaders", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 10000); @@ -316,17 +294,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/shadow.c b/examples/shadow.c index 7946d6c..c80925e 100644 --- a/examples/shadow.c +++ b/examples/shadow.c @@ -192,31 +192,9 @@ realize_area (GthreeArea *area) int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; - -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Shadows"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + GtkWidget *window, *box, *area; + + window = examples_init ("Shadows", &box); init_scene (); area = gthree_area_new (scene, GTHREE_CAMERA (camera)); @@ -224,17 +202,11 @@ main (int argc, char *argv[]) g_signal_connect_after (area, "realize", G_CALLBACK (realize_area), NULL); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/skinning.c b/examples/skinning.c index 2343458..fcacb6d 100644 --- a/examples/skinning.c +++ b/examples/skinning.c @@ -218,36 +218,14 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; GthreeAmbientLight *ambient_light; GthreeDirectionalLight *directional_light; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Skinning"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Skinning", &box); scene = init_scene (); @@ -272,17 +250,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/sprites.c b/examples/sprites.c index cc624d8..f26e5c0 100644 --- a/examples/sprites.c +++ b/examples/sprites.c @@ -346,33 +346,11 @@ render_area (GtkGLArea *gl_area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window), "Sprites"); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Sprites", &box); scene = init_scene (window); camera = gthree_perspective_camera_new (60, 1, 1, 2100); @@ -393,17 +371,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "render", G_CALLBACK (render_area), NULL); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/testanimation.c b/examples/testanimation.c index eb23884..f69c6ad 100644 --- a/examples/testanimation.c +++ b/examples/testanimation.c @@ -127,34 +127,12 @@ resize_area (GthreeArea *area, int main (int argc, char *argv[]) { - GtkWidget *window, *box, *hbox, *button, *area; + GtkWidget *window, *box, *area; GthreeScene *scene; GthreePerspectiveCamera *camera; graphene_point3d_t pos; -#ifdef USE_GTK4 - gtk_init (); -#else - gtk_init (&argc, &argv); -#endif - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); - gtk_window_set_title (GTK_WINDOW (window), "Animations"); -#ifdef USE_GTK3 - gtk_container_set_border_width (GTK_CONTAINER (window), 12); -#endif - g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); - gtk_box_set_spacing (GTK_BOX (box), 6); - gtk_container_add (GTK_CONTAINER (window), box); - gtk_widget_show (box); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE); - gtk_box_set_spacing (GTK_BOX (hbox), 6); - gtk_container_add (GTK_CONTAINER (box), hbox); - gtk_widget_show (hbox); + window = examples_init ("Animations", &box); scene = init_scene (); camera = gthree_perspective_camera_new (30, 1, 1, 10000); @@ -167,17 +145,11 @@ main (int argc, char *argv[]) g_signal_connect (area, "resize", G_CALLBACK (resize_area), camera); gtk_widget_set_hexpand (area, TRUE); gtk_widget_set_vexpand (area, TRUE); - gtk_container_add (GTK_CONTAINER (hbox), area); + gtk_container_add (GTK_CONTAINER (box), area); gtk_widget_show (area); gtk_widget_add_tick_callback (GTK_WIDGET (area), tick, area, NULL); - button = gtk_button_new_with_label ("Quit"); - gtk_widget_set_hexpand (button, TRUE); - gtk_container_add (GTK_CONTAINER (box), button); - g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); - gtk_widget_show (button); - gtk_widget_show (window); gtk_main (); diff --git a/examples/utils.c b/examples/utils.c index eb5a62f..d69be16 100644 --- a/examples/utils.c +++ b/examples/utils.c @@ -163,3 +163,56 @@ examples_load_gltl (const char *name, GError **error) return loader; } + +GtkWidget * +examples_init (const char *title, + GtkWidget **box) +{ + GtkWidget *window, *outer_box, *button; + g_autofree char *full_title = NULL; + +#ifdef USE_GTK4 + gtk_init (); +#else + gtk_init (NULL, NULL); +#endif + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + full_title = g_strdup_printf ("%s - %s", title, +#ifdef USE_GTK4 + "gtk 4" +#else + "gtk 3" +#endif + ); + gtk_window_set_title (GTK_WINDOW (window), full_title); + gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); +#ifdef USE_GTK3 + gtk_container_set_border_width (GTK_CONTAINER (window), 12); +#endif + g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); + + outer_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); + gtk_box_set_spacing (GTK_BOX (outer_box), 6); +#ifdef USE_GTK4 + gtk_widget_set_margin_start (GTK_WIDGET (outer_box), 12); + gtk_widget_set_margin_end (GTK_WIDGET (outer_box), 12); + gtk_widget_set_margin_top (GTK_WIDGET (outer_box), 12); + gtk_widget_set_margin_bottom (GTK_WIDGET (outer_box), 12); +#endif + gtk_container_add (GTK_CONTAINER (window), outer_box); + gtk_widget_show (outer_box); + + *box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE); + gtk_box_set_spacing (GTK_BOX (*box), 6); + gtk_container_add (GTK_CONTAINER (outer_box), *box); + gtk_widget_show (*box); + + button = gtk_button_new_with_label ("Quit"); + gtk_widget_set_hexpand (button, TRUE); + gtk_container_add (GTK_CONTAINER (outer_box), button); + g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); + gtk_widget_show (button); + + return window; +} diff --git a/examples/utils.h b/examples/utils.h index e711945..5a0003c 100644 --- a/examples/utils.h +++ b/examples/utils.h @@ -1,5 +1,6 @@ #include #include +#include GdkPixbuf *examples_load_pixbuf (const char *file); GthreeGeometry *examples_load_geometry (const char *name); @@ -23,3 +24,6 @@ const graphene_vec3_t *grey (void); const graphene_vec3_t *light_grey (void); const graphene_vec3_t *dark_green (void); const graphene_vec3_t *orange (void); + +GtkWidget *examples_init (const char *title, + GtkWidget **box);