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,
23 gboolean resize, shrink;
25 parent = gtk_widget_get_parent (child);
26 paned = GTK_PANED (parent);
28 is_child1 = (child == gtk_paned_get_child1 (paned));
30 gtk_container_child_get (GTK_CONTAINER (paned), child,
36 gtk_container_remove (GTK_CONTAINER (parent), child);
38 gtk_paned_pack1 (paned, child, !resize, shrink);
40 gtk_paned_pack2 (paned, child, !resize, shrink);
41 g_object_unref (child);
45 toggle_shrink (GtkWidget *widget,
51 gboolean resize, shrink;
53 parent = gtk_widget_get_parent (child);
54 paned = GTK_PANED (parent);
56 is_child1 = (child == gtk_paned_get_child1 (paned));
58 gtk_container_child_get (GTK_CONTAINER (paned), child,
64 gtk_container_remove (GTK_CONTAINER (parent), child);
66 gtk_paned_pack1 (paned, child, resize, !shrink);
68 gtk_paned_pack2 (paned, child, resize, !shrink);
69 g_object_unref (child);
73 create_pane_options (GtkPaned *paned,
74 const gchar *frame_label,
78 GtkWidget *child1, *child2;
82 GtkWidget *check_button;
84 child1 = gtk_paned_get_child1 (paned);
85 child2 = gtk_paned_get_child2 (paned);
87 frame = gtk_frame_new (frame_label);
88 gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
90 table = gtk_grid_new ();
91 gtk_container_add (GTK_CONTAINER (frame), table);
93 label = gtk_label_new (label1);
94 gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
96 check_button = gtk_check_button_new_with_mnemonic ("_Resize");
97 gtk_grid_attach (GTK_GRID (table), check_button, 0, 1, 1, 1);
98 g_signal_connect (check_button, "toggled",
99 G_CALLBACK (toggle_resize), child1);
101 check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
102 gtk_grid_attach (GTK_GRID (table), check_button, 0, 2, 1, 1);
103 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
104 g_signal_connect (check_button, "toggled",
105 G_CALLBACK (toggle_shrink), child1);
107 label = gtk_label_new (label2);
108 gtk_grid_attach (GTK_GRID (table), label, 1, 0, 1, 1);
110 check_button = gtk_check_button_new_with_mnemonic ("_Resize");
111 gtk_grid_attach (GTK_GRID (table), check_button, 1, 1, 1, 1);
112 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
113 g_signal_connect (check_button, "toggled",
114 G_CALLBACK (toggle_resize), child2);
116 check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
117 gtk_grid_attach (GTK_GRID (table), check_button, 1, 2, 1, 1);
118 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
119 g_signal_connect (check_button, "toggled",
120 G_CALLBACK (toggle_shrink), child2);
126 do_panes (GtkWidget *do_widget)
128 static GtkWidget *window = NULL;
137 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
138 gtk_window_set_screen (GTK_WINDOW (window),
139 gtk_widget_get_screen (do_widget));
141 g_signal_connect (window, "destroy",
142 G_CALLBACK (gtk_widget_destroyed), &window);
144 gtk_window_set_title (GTK_WINDOW (window), "Panes");
145 gtk_container_set_border_width (GTK_CONTAINER (window), 0);
147 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
148 gtk_container_add (GTK_CONTAINER (window), vbox);
150 vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
151 gtk_box_pack_start (GTK_BOX (vbox), vpaned, TRUE, TRUE, 0);
152 gtk_container_set_border_width (GTK_CONTAINER(vpaned), 5);
154 hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
155 gtk_paned_add1 (GTK_PANED (vpaned), hpaned);
157 frame = gtk_frame_new (NULL);
158 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
159 gtk_widget_set_size_request (frame, 60, 60);
160 gtk_paned_add1 (GTK_PANED (hpaned), frame);
162 button = gtk_button_new_with_mnemonic ("_Hi there");
163 gtk_container_add (GTK_CONTAINER(frame), button);
165 frame = gtk_frame_new (NULL);
166 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
167 gtk_widget_set_size_request (frame, 80, 60);
168 gtk_paned_add2 (GTK_PANED (hpaned), frame);
170 frame = gtk_frame_new (NULL);
171 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
172 gtk_widget_set_size_request (frame, 60, 80);
173 gtk_paned_add2 (GTK_PANED (vpaned), frame);
175 /* Now create toggle buttons to control sizing */
177 gtk_box_pack_start (GTK_BOX (vbox),
178 create_pane_options (GTK_PANED (hpaned),
184 gtk_box_pack_start (GTK_BOX (vbox),
185 create_pane_options (GTK_PANED (vpaned),
191 gtk_widget_show_all (vbox);
194 if (!gtk_widget_get_visible (window))
196 gtk_widget_show (window);
200 gtk_widget_destroy (window);