5 horizontal_policy_changed (GtkComboBox *combo_box,
8 GtkScrollablePolicy policy = gtk_combo_box_get_active (combo_box);
10 gtk_scrollable_set_hscroll_policy (GTK_SCROLLABLE (viewport), policy);
14 vertical_policy_changed (GtkComboBox *combo_box,
15 GtkViewport *viewport)
17 GtkScrollablePolicy policy = gtk_combo_box_get_active (combo_box);
19 gtk_scrollable_set_vscroll_policy (GTK_SCROLLABLE (viewport), policy);
23 label_flip_changed (GtkComboBox *combo_box,
26 gint active = gtk_combo_box_get_active (combo_box);
29 gtk_label_set_angle (label, 0.0);
31 gtk_label_set_angle (label, 90.0);
36 scrollable_policy (void)
38 GtkWidget *window, *swindow, *hbox, *vbox, *frame, *cntl;
39 GtkWidget *viewport, *label, *expander, *widget;
41 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
42 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 2);
43 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 6);
45 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
47 gtk_widget_show (vbox);
48 gtk_widget_show (hbox);
49 gtk_container_add (GTK_CONTAINER (window), hbox);
50 gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
52 frame = gtk_frame_new ("Scrolled Window");
53 gtk_widget_show (frame);
54 gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
56 swindow = gtk_scrolled_window_new (NULL, NULL);
57 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
58 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
60 gtk_widget_show (swindow);
61 gtk_container_add (GTK_CONTAINER (frame), swindow);
63 viewport = gtk_viewport_new (NULL, NULL);
64 label = gtk_label_new ("Here is a wrapping label with a minimum width-chars of 40 and "
65 "a natural max-width-chars of 100 to demonstrate the usage of "
66 "scrollable widgets \"hscroll-policy\" and \"vscroll-policy\" "
67 "properties. Note also that when playing with the window height, "
68 "one can observe that the vscrollbar disappears as soon as there "
69 "is enough height to fit the content vertically if the window were "
70 "to be allocated a width without a vscrollbar present");
72 gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
73 gtk_label_set_width_chars (GTK_LABEL (label), 40);
74 gtk_label_set_max_width_chars (GTK_LABEL (label), 100);
76 gtk_widget_show (label);
77 gtk_widget_show (viewport);
78 gtk_container_add (GTK_CONTAINER (viewport), label);
79 gtk_container_add (GTK_CONTAINER (swindow), viewport);
81 /* Add controls here */
82 expander = gtk_expander_new ("Controls");
83 gtk_expander_set_expanded (GTK_EXPANDER (expander), TRUE);
84 cntl = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 2);
85 gtk_widget_show (cntl);
86 gtk_widget_show (expander);
87 gtk_container_add (GTK_CONTAINER (expander), cntl);
88 gtk_box_pack_start (GTK_BOX (vbox), expander, FALSE, FALSE, 0);
90 /* Add Horizontal policy control here */
91 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 2);
92 gtk_widget_show (hbox);
94 widget = gtk_label_new ("hscroll-policy");
95 gtk_widget_show (widget);
96 gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
98 widget = gtk_combo_box_text_new ();
99 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Minimum");
100 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Natural");
101 gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
102 gtk_widget_show (widget);
104 gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
105 gtk_box_pack_start (GTK_BOX (cntl), hbox, FALSE, FALSE, 0);
107 g_signal_connect (G_OBJECT (widget), "changed",
108 G_CALLBACK (horizontal_policy_changed), viewport);
110 /* Add Vertical policy control here */
111 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 2);
112 gtk_widget_show (hbox);
114 widget = gtk_label_new ("vscroll-policy");
115 gtk_widget_show (widget);
116 gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
118 widget = gtk_combo_box_text_new ();
119 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Minimum");
120 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Natural");
121 gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
122 gtk_widget_show (widget);
124 gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
125 gtk_box_pack_start (GTK_BOX (cntl), hbox, FALSE, FALSE, 0);
127 g_signal_connect (G_OBJECT (widget), "changed",
128 G_CALLBACK (vertical_policy_changed), viewport);
131 /* Add Label orientation control here */
132 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 2);
133 gtk_widget_show (hbox);
135 widget = gtk_label_new ("label-flip");
136 gtk_widget_show (widget);
137 gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
139 widget = gtk_combo_box_text_new ();
140 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Horizontal");
141 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Vertical");
142 gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
143 gtk_widget_show (widget);
145 gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
146 gtk_box_pack_start (GTK_BOX (cntl), hbox, FALSE, FALSE, 0);
148 g_signal_connect (G_OBJECT (widget), "changed",
149 G_CALLBACK (label_flip_changed), label);
151 gtk_widget_show (window);
156 main (int argc, char *argv[])
158 gtk_init (NULL, NULL);
160 scrollable_policy ();