3 * The GtkHPaned and GtkVPaned Widgets divide their content
4 * area into two panes with a divider in between that the
5 * user can adjust. A separate child is placed into each
8 * There are a number of options that can be set for each pane.
9 * This test contains both a horizontal (HPaned) and a vertical
10 * (VPaned) widget, and allows you to adjust the options for
11 * each side of each widget.
17 toggle_resize (GtkWidget *widget,
20 GtkPaned *paned = GTK_PANED (child->parent);
21 gboolean is_child1 = (child == gtk_paned_get_child1 (paned));
22 gboolean resize, shrink;
24 gtk_container_child_get (GTK_CONTAINER (paned), child,
30 gtk_container_remove (GTK_CONTAINER (child->parent), child);
32 gtk_paned_pack1 (paned, child, !resize, shrink);
34 gtk_paned_pack2 (paned, child, !resize, shrink);
35 g_object_unref (child);
39 toggle_shrink (GtkWidget *widget,
42 GtkPaned *paned = GTK_PANED (child->parent);
43 gboolean is_child1 = (child == gtk_paned_get_child1 (paned));
44 gboolean resize, shrink;
46 gtk_container_child_get (GTK_CONTAINER (paned), child,
52 gtk_container_remove (GTK_CONTAINER (child->parent), child);
54 gtk_paned_pack1 (paned, child, resize, !shrink);
56 gtk_paned_pack2 (paned, child, resize, !shrink);
57 g_object_unref (child);
61 create_pane_options (GtkPaned *paned,
62 const gchar *frame_label,
66 GtkWidget *child1, *child2;
70 GtkWidget *check_button;
72 child1 = gtk_paned_get_child1 (paned);
73 child2 = gtk_paned_get_child2 (paned);
75 frame = gtk_frame_new (frame_label);
76 gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
78 table = gtk_table_new (3, 2, TRUE);
79 gtk_container_add (GTK_CONTAINER (frame), table);
81 label = gtk_label_new (label1);
82 gtk_table_attach_defaults (GTK_TABLE (table), label,
85 check_button = gtk_check_button_new_with_mnemonic ("_Resize");
86 gtk_table_attach_defaults (GTK_TABLE (table), check_button,
88 g_signal_connect (check_button, "toggled",
89 G_CALLBACK (toggle_resize), child1);
91 check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
92 gtk_table_attach_defaults (GTK_TABLE (table), check_button,
94 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
96 g_signal_connect (check_button, "toggled",
97 G_CALLBACK (toggle_shrink), child1);
99 label = gtk_label_new (label2);
100 gtk_table_attach_defaults (GTK_TABLE (table), label,
103 check_button = gtk_check_button_new_with_mnemonic ("_Resize");
104 gtk_table_attach_defaults (GTK_TABLE (table), check_button,
106 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
108 g_signal_connect (check_button, "toggled",
109 G_CALLBACK (toggle_resize), child2);
111 check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
112 gtk_table_attach_defaults (GTK_TABLE (table), check_button,
114 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
116 g_signal_connect (check_button, "toggled",
117 G_CALLBACK (toggle_shrink), child2);
123 do_panes (GtkWidget *do_widget)
125 static GtkWidget *window = NULL;
134 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
135 gtk_window_set_screen (GTK_WINDOW (window),
136 gtk_widget_get_screen (do_widget));
138 g_signal_connect (window, "destroy",
139 G_CALLBACK (gtk_widget_destroyed), &window);
141 gtk_window_set_title (GTK_WINDOW (window), "Panes");
142 gtk_container_set_border_width (GTK_CONTAINER (window), 0);
144 vbox = gtk_vbox_new (FALSE, 0);
145 gtk_container_add (GTK_CONTAINER (window), vbox);
147 vpaned = gtk_vpaned_new ();
148 gtk_box_pack_start (GTK_BOX (vbox), vpaned, TRUE, TRUE, 0);
149 gtk_container_set_border_width (GTK_CONTAINER(vpaned), 5);
151 hpaned = gtk_hpaned_new ();
152 gtk_paned_add1 (GTK_PANED (vpaned), hpaned);
154 frame = gtk_frame_new (NULL);
155 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
156 gtk_widget_set_size_request (frame, 60, 60);
157 gtk_paned_add1 (GTK_PANED (hpaned), frame);
159 button = gtk_button_new_with_mnemonic ("_Hi there");
160 gtk_container_add (GTK_CONTAINER(frame), button);
162 frame = gtk_frame_new (NULL);
163 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
164 gtk_widget_set_size_request (frame, 80, 60);
165 gtk_paned_add2 (GTK_PANED (hpaned), frame);
167 frame = gtk_frame_new (NULL);
168 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
169 gtk_widget_set_size_request (frame, 60, 80);
170 gtk_paned_add2 (GTK_PANED (vpaned), frame);
172 /* Now create toggle buttons to control sizing */
174 gtk_box_pack_start (GTK_BOX (vbox),
175 create_pane_options (GTK_PANED (hpaned),
181 gtk_box_pack_start (GTK_BOX (vbox),
182 create_pane_options (GTK_PANED (vpaned),
188 gtk_widget_show_all (vbox);
191 if (!gtk_widget_get_visible (window))
193 gtk_widget_show (window);
197 gtk_widget_destroy (window);