Advertisement
Guest User

Swaping layouts in GTK+3.

a guest
Jun 27th, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.12 KB | None | 0 0
  1. #include <gtk/gtk.h>
  2.  
  3. static void on_button1_clicked (GtkWidget * widget, gpointer user_data);
  4. static void on_button2_clicked (GtkWidget * widget, gpointer user_data);
  5. static void _quit (GtkWidget * widget, gpointer user_data);
  6.  
  7. GtkWidget * window;
  8. GtkWidget * layout1;
  9. GtkWidget * layout2;
  10.  
  11. main (int argc, char * argv[]) {
  12.   gtk_init(&argc, &argv);
  13.   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  14.   layout1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,3);
  15.   layout2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,3);
  16.  
  17.   GtkWidget * button1 = gtk_button_new_with_label ("Switch to Layout 2");
  18.   GtkWidget * button2 = gtk_button_new_with_label ("Switch to Layout 1");
  19.  
  20.   GtkWidget * label1 = gtk_label_new ("Current layout: 1");
  21.   GtkWidget * label2 = gtk_label_new ("Current layout: 2");
  22.  
  23.   gtk_container_add (GTK_CONTAINER (window), layout1);
  24.   gtk_container_add (GTK_CONTAINER (layout1), label1);
  25.   gtk_container_add (GTK_CONTAINER (layout1), button1);
  26.  
  27.   gtk_container_add (GTK_CONTAINER (layout2), button2);
  28.   gtk_container_add (GTK_CONTAINER (layout2), label2);
  29.  
  30.   g_signal_connect (button1, "clicked", G_CALLBACK (on_button1_clicked), NULL);
  31.   g_signal_connect (button2, "clicked", G_CALLBACK (on_button2_clicked), NULL);
  32.   g_signal_connect (window, "destroy", G_CALLBACK (_quit), NULL);
  33.   gtk_widget_show_all (window);
  34.  
  35.   gtk_main ();
  36.   return 0;
  37. }
  38.  
  39. static void on_button1_clicked (GtkWidget * widget, gpointer user_data) {
  40.   g_print ("Bit\n");
  41.   g_object_ref (G_OBJECT(layout1)); //prevents the layout from being destroyd.
  42.   gtk_container_remove (GTK_CONTAINER (window), layout1);
  43.   gtk_container_add (GTK_CONTAINER (window), (GtkWidget*) layout2);
  44.   gtk_widget_show_all (window);
  45. }
  46.  
  47.  
  48. static void on_button2_clicked (GtkWidget * widget, gpointer user_data) {
  49.   g_print ("Bup\n");
  50.   g_object_ref (G_OBJECT(layout2)); //prevents the layout from being destroyd.
  51.   gtk_container_remove (GTK_CONTAINER (window), layout2);
  52.   gtk_container_add (GTK_CONTAINER (window), (GtkWidget*) layout1);
  53.   gtk_widget_show_all (window);
  54. }
  55.  
  56. static void _quit (GtkWidget * widget, gpointer user_data) {
  57.   gtk_main_quit ();
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement