1 /* GTK - The GIMP Toolkit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the Free
16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 #include "../gdk/gdk.h"
22 #include "../gdk/gdkx.h"
23 #include "gtkhandlebox.h"
26 destroy_window (GtkWidget *widget,
33 button_window (GtkWidget *widget,
36 if (!GTK_WIDGET_VISIBLE (button))
37 gtk_widget_show (button);
39 gtk_widget_hide (button);
45 static GtkWidget *window = NULL;
49 GtkWidget *button[10];
54 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
56 gtk_signal_connect (GTK_OBJECT (window), "destroy",
57 GTK_SIGNAL_FUNC(destroy_window),
59 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
60 GTK_SIGNAL_FUNC(destroy_window),
63 gtk_window_set_title (GTK_WINDOW (window), "buttons");
64 gtk_container_border_width (GTK_CONTAINER (window), 0);
66 box1 = gtk_vbox_new (FALSE, 0);
67 gtk_container_add (GTK_CONTAINER (window), box1);
68 gtk_widget_show (box1);
71 table = gtk_table_new (3, 3, FALSE);
72 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
73 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
74 gtk_container_border_width (GTK_CONTAINER (table), 10);
75 gtk_box_pack_start (GTK_BOX (box1), table, TRUE, TRUE, 0);
76 gtk_widget_show (table);
79 button[0] = gtk_button_new_with_label ("button1");
80 button[1] = gtk_button_new_with_label ("button2");
81 button[2] = gtk_button_new_with_label ("button3");
82 button[3] = gtk_button_new_with_label ("button4");
83 button[4] = gtk_button_new_with_label ("button5");
84 button[5] = gtk_button_new_with_label ("button6");
85 button[6] = gtk_button_new_with_label ("button7");
86 button[7] = gtk_button_new_with_label ("button8");
87 button[8] = gtk_button_new_with_label ("button9");
89 gtk_signal_connect (GTK_OBJECT (button[0]), "clicked",
90 GTK_SIGNAL_FUNC(button_window),
93 gtk_table_attach (GTK_TABLE (table), button[0], 0, 1, 0, 1,
94 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
95 gtk_widget_show (button[0]);
97 gtk_signal_connect (GTK_OBJECT (button[1]), "clicked",
98 GTK_SIGNAL_FUNC(button_window),
101 gtk_table_attach (GTK_TABLE (table), button[1], 1, 2, 1, 2,
102 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
103 gtk_widget_show (button[1]);
105 gtk_signal_connect (GTK_OBJECT (button[2]), "clicked",
106 GTK_SIGNAL_FUNC(button_window),
108 gtk_table_attach (GTK_TABLE (table), button[2], 2, 3, 2, 3,
109 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
110 gtk_widget_show (button[2]);
112 gtk_signal_connect (GTK_OBJECT (button[3]), "clicked",
113 GTK_SIGNAL_FUNC(button_window),
115 gtk_table_attach (GTK_TABLE (table), button[3], 0, 1, 2, 3,
116 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
117 gtk_widget_show (button[3]);
119 gtk_signal_connect (GTK_OBJECT (button[4]), "clicked",
120 GTK_SIGNAL_FUNC(button_window),
122 gtk_table_attach (GTK_TABLE (table), button[4], 2, 3, 0, 1,
123 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
124 gtk_widget_show (button[4]);
126 gtk_signal_connect (GTK_OBJECT (button[5]), "clicked",
127 GTK_SIGNAL_FUNC(button_window),
129 gtk_table_attach (GTK_TABLE (table), button[5], 1, 2, 2, 3,
130 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
131 gtk_widget_show (button[5]);
133 gtk_signal_connect (GTK_OBJECT (button[6]), "clicked",
134 GTK_SIGNAL_FUNC(button_window),
136 gtk_table_attach (GTK_TABLE (table), button[6], 1, 2, 0, 1,
137 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
138 gtk_widget_show (button[6]);
140 gtk_signal_connect (GTK_OBJECT (button[7]), "clicked",
141 GTK_SIGNAL_FUNC(button_window),
143 gtk_table_attach (GTK_TABLE (table), button[7], 2, 3, 1, 2,
144 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
145 gtk_widget_show (button[7]);
147 gtk_signal_connect (GTK_OBJECT (button[8]), "clicked",
148 GTK_SIGNAL_FUNC(button_window),
150 gtk_table_attach (GTK_TABLE (table), button[8], 0, 1, 1, 2,
151 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
152 gtk_widget_show (button[8]);
155 separator = gtk_hseparator_new ();
156 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
157 gtk_widget_show (separator);
160 box2 = gtk_vbox_new (FALSE, 10);
161 gtk_container_border_width (GTK_CONTAINER (box2), 10);
162 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
163 gtk_widget_show (box2);
166 button[9] = gtk_button_new_with_label ("close");
167 gtk_signal_connect_object (GTK_OBJECT (button[9]), "clicked",
168 GTK_SIGNAL_FUNC(gtk_widget_destroy),
169 GTK_OBJECT (window));
170 gtk_box_pack_start (GTK_BOX (box2), button[9], TRUE, TRUE, 0);
171 GTK_WIDGET_SET_FLAGS (button[9], GTK_CAN_DEFAULT);
172 gtk_widget_grab_default (button[9]);
173 gtk_widget_show (button[9]);
176 if (!GTK_WIDGET_VISIBLE (window))
177 gtk_widget_show (window);
179 gtk_widget_destroy (window);
183 create_toggle_buttons ()
185 static GtkWidget *window = NULL;
189 GtkWidget *separator;
193 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
195 gtk_signal_connect (GTK_OBJECT (window), "destroy",
196 GTK_SIGNAL_FUNC(destroy_window),
198 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
199 GTK_SIGNAL_FUNC(destroy_window),
202 gtk_window_set_title (GTK_WINDOW (window), "toggle buttons");
203 gtk_container_border_width (GTK_CONTAINER (window), 0);
206 box1 = gtk_vbox_new (FALSE, 0);
207 gtk_container_add (GTK_CONTAINER (window), box1);
208 gtk_widget_show (box1);
211 box2 = gtk_vbox_new (FALSE, 10);
212 gtk_container_border_width (GTK_CONTAINER (box2), 10);
213 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
214 gtk_widget_show (box2);
217 button = gtk_toggle_button_new_with_label ("button1");
218 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
219 gtk_widget_show (button);
221 button = gtk_toggle_button_new_with_label ("button2");
222 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
223 gtk_widget_show (button);
225 button = gtk_toggle_button_new_with_label ("button3");
226 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
227 gtk_widget_show (button);
230 separator = gtk_hseparator_new ();
231 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
232 gtk_widget_show (separator);
235 box2 = gtk_vbox_new (FALSE, 10);
236 gtk_container_border_width (GTK_CONTAINER (box2), 10);
237 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
238 gtk_widget_show (box2);
241 button = gtk_button_new_with_label ("close");
242 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
243 GTK_SIGNAL_FUNC(gtk_widget_destroy),
244 GTK_OBJECT (window));
245 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
246 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
247 gtk_widget_grab_default (button);
248 gtk_widget_show (button);
251 if (!GTK_WIDGET_VISIBLE (window))
252 gtk_widget_show (window);
254 gtk_widget_destroy (window);
258 create_check_buttons ()
260 static GtkWidget *window = NULL;
264 GtkWidget *separator;
268 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
270 gtk_signal_connect (GTK_OBJECT (window), "destroy",
271 GTK_SIGNAL_FUNC(destroy_window),
273 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
274 GTK_SIGNAL_FUNC(destroy_window),
277 gtk_window_set_title (GTK_WINDOW (window), "check buttons");
278 gtk_container_border_width (GTK_CONTAINER (window), 0);
281 box1 = gtk_vbox_new (FALSE, 0);
282 gtk_container_add (GTK_CONTAINER (window), box1);
283 gtk_widget_show (box1);
286 box2 = gtk_vbox_new (FALSE, 10);
287 gtk_container_border_width (GTK_CONTAINER (box2), 10);
288 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
289 gtk_widget_show (box2);
292 button = gtk_check_button_new_with_label ("button1");
293 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
294 gtk_widget_show (button);
296 button = gtk_check_button_new_with_label ("button2");
297 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
298 gtk_widget_show (button);
300 button = gtk_check_button_new_with_label ("button3");
301 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
302 gtk_widget_show (button);
305 separator = gtk_hseparator_new ();
306 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
307 gtk_widget_show (separator);
310 box2 = gtk_vbox_new (FALSE, 10);
311 gtk_container_border_width (GTK_CONTAINER (box2), 10);
312 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
313 gtk_widget_show (box2);
316 button = gtk_button_new_with_label ("close");
317 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
318 GTK_SIGNAL_FUNC(gtk_widget_destroy),
319 GTK_OBJECT (window));
320 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
321 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
322 gtk_widget_grab_default (button);
323 gtk_widget_show (button);
326 if (!GTK_WIDGET_VISIBLE (window))
327 gtk_widget_show (window);
329 gtk_widget_destroy (window);
333 create_radio_buttons ()
335 static GtkWidget *window = NULL;
339 GtkWidget *separator;
343 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
345 gtk_signal_connect (GTK_OBJECT (window), "destroy",
346 GTK_SIGNAL_FUNC(destroy_window),
348 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
349 GTK_SIGNAL_FUNC(destroy_window),
352 gtk_window_set_title (GTK_WINDOW (window), "radio buttons");
353 gtk_container_border_width (GTK_CONTAINER (window), 0);
356 box1 = gtk_vbox_new (FALSE, 0);
357 gtk_container_add (GTK_CONTAINER (window), box1);
358 gtk_widget_show (box1);
361 box2 = gtk_vbox_new (FALSE, 10);
362 gtk_container_border_width (GTK_CONTAINER (box2), 10);
363 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
364 gtk_widget_show (box2);
367 button = gtk_radio_button_new_with_label (NULL, "button1");
368 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
369 gtk_widget_show (button);
371 button = gtk_radio_button_new_with_label (
372 gtk_radio_button_group (GTK_RADIO_BUTTON (button)),
374 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (button), TRUE);
375 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
376 gtk_widget_show (button);
378 button = gtk_radio_button_new_with_label (
379 gtk_radio_button_group (GTK_RADIO_BUTTON (button)),
381 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
382 gtk_widget_show (button);
385 separator = gtk_hseparator_new ();
386 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
387 gtk_widget_show (separator);
390 box2 = gtk_vbox_new (FALSE, 10);
391 gtk_container_border_width (GTK_CONTAINER (box2), 10);
392 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
393 gtk_widget_show (box2);
396 button = gtk_button_new_with_label ("close");
397 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
398 GTK_SIGNAL_FUNC(gtk_widget_destroy),
399 GTK_OBJECT (window));
400 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
401 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
402 gtk_widget_grab_default (button);
403 gtk_widget_show (button);
406 if (!GTK_WIDGET_VISIBLE (window))
407 gtk_widget_show (window);
409 gtk_widget_destroy (window);
413 bbox_widget_destroy (GtkWidget* widget, GtkWidget* todestroy)
418 create_bbox_window (gint horizontal,
431 /* create a new window */
432 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
433 gtk_window_set_title (GTK_WINDOW (window), title);
435 gtk_signal_connect (GTK_OBJECT (window), "destroy",
436 GTK_SIGNAL_FUNC(bbox_widget_destroy), window);
437 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
438 GTK_SIGNAL_FUNC(bbox_widget_destroy), window);
442 gtk_widget_set_usize (window, 550, 60);
443 gtk_widget_set_uposition (window, 150, pos);
444 box1 = gtk_vbox_new (FALSE, 0);
448 gtk_widget_set_usize (window, 150, 400);
449 gtk_widget_set_uposition (window, pos, 200);
450 box1 = gtk_vbox_new (FALSE, 0);
453 gtk_container_add (GTK_CONTAINER (window), box1);
454 gtk_widget_show (box1);
457 bbox = gtk_hbutton_box_new();
459 bbox = gtk_vbutton_box_new();
460 gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
461 gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), spacing);
462 gtk_button_box_set_child_size (GTK_BUTTON_BOX (bbox), child_w, child_h);
463 gtk_widget_show (bbox);
465 gtk_container_border_width (GTK_CONTAINER(box1), 25);
466 gtk_box_pack_start (GTK_BOX (box1), bbox, TRUE, TRUE, 0);
468 button = gtk_button_new_with_label ("OK");
469 gtk_container_add (GTK_CONTAINER(bbox), button);
471 gtk_signal_connect (GTK_OBJECT (button), "clicked",
472 GTK_SIGNAL_FUNC(bbox_widget_destroy), window);
474 gtk_widget_show (button);
476 button = gtk_button_new_with_label ("Cancel");
477 gtk_container_add (GTK_CONTAINER(bbox), button);
478 gtk_widget_show (button);
480 button = gtk_button_new_with_label ("Help");
481 gtk_container_add (GTK_CONTAINER(bbox), button);
482 gtk_widget_show (button);
484 gtk_widget_show (window);
490 create_bbox_window (TRUE, "Spread", 50, 40, 85, 28, GTK_BUTTONBOX_SPREAD);
491 create_bbox_window (TRUE, "Edge", 200, 40, 85, 25, GTK_BUTTONBOX_EDGE);
492 create_bbox_window (TRUE, "Start", 350, 40, 85, 25, GTK_BUTTONBOX_START);
493 create_bbox_window (TRUE, "End", 500, 15, 30, 25, GTK_BUTTONBOX_END);
499 create_bbox_window (FALSE, "Spread", 50, 40, 85, 25, GTK_BUTTONBOX_SPREAD);
500 create_bbox_window (FALSE, "Edge", 250, 40, 85, 28, GTK_BUTTONBOX_EDGE);
501 create_bbox_window (FALSE, "Start", 450, 40, 85, 25, GTK_BUTTONBOX_START);
502 create_bbox_window (FALSE, "End", 650, 15, 30, 25, GTK_BUTTONBOX_END);
508 static GtkWidget* window = NULL;
514 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
515 gtk_window_set_title (GTK_WINDOW (window),
518 gtk_signal_connect (GTK_OBJECT (window), "destroy",
519 GTK_SIGNAL_FUNC(destroy_window), &window);
520 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
521 GTK_SIGNAL_FUNC(destroy_window), &window);
523 gtk_container_border_width (GTK_CONTAINER (window), 20);
526 *these 15 lines are a nice and easy example for GtkHButtonBox
528 bbox = gtk_hbutton_box_new ();
529 gtk_container_add (GTK_CONTAINER (window), bbox);
530 gtk_widget_show (bbox);
532 button = gtk_button_new_with_label ("Horizontal");
533 gtk_signal_connect (GTK_OBJECT (button), "clicked",
534 GTK_SIGNAL_FUNC(test_hbbox), 0);
535 gtk_container_add (GTK_CONTAINER (bbox), button);
536 gtk_widget_show (button);
538 button = gtk_button_new_with_label ("Vertical");
539 gtk_signal_connect (GTK_OBJECT (button), "clicked",
540 GTK_SIGNAL_FUNC(test_vbbox), 0);
541 gtk_container_add (GTK_CONTAINER (bbox), button);
542 gtk_widget_show (button);
545 if (!GTK_WIDGET_VISIBLE (window))
546 gtk_widget_show (window);
548 gtk_widget_destroy (window);
552 new_pixmap (char *filename,
554 GdkColor *background)
560 pixmap = gdk_pixmap_create_from_xpm (window, &mask,
563 wpixmap = gtk_pixmap_new (pixmap, mask);
569 set_toolbar_horizontal (GtkWidget *widget,
572 gtk_toolbar_set_orientation (GTK_TOOLBAR (data), GTK_ORIENTATION_HORIZONTAL);
576 set_toolbar_vertical (GtkWidget *widget,
579 gtk_toolbar_set_orientation (GTK_TOOLBAR (data), GTK_ORIENTATION_VERTICAL);
583 set_toolbar_icons (GtkWidget *widget,
586 gtk_toolbar_set_style (GTK_TOOLBAR (data), GTK_TOOLBAR_ICONS);
590 set_toolbar_text (GtkWidget *widget,
593 gtk_toolbar_set_style (GTK_TOOLBAR (data), GTK_TOOLBAR_TEXT);
597 set_toolbar_both (GtkWidget *widget,
600 gtk_toolbar_set_style (GTK_TOOLBAR (data), GTK_TOOLBAR_BOTH);
604 set_toolbar_small_space (GtkWidget *widget,
607 gtk_toolbar_set_space_size (GTK_TOOLBAR (data), 5);
611 set_toolbar_big_space (GtkWidget *widget,
614 gtk_toolbar_set_space_size (GTK_TOOLBAR (data), 10);
618 set_toolbar_enable (GtkWidget *widget,
621 gtk_toolbar_set_tooltips (GTK_TOOLBAR (data), TRUE);
625 set_toolbar_disable (GtkWidget *widget,
628 gtk_toolbar_set_tooltips (GTK_TOOLBAR (data), FALSE);
632 create_toolbar (void)
634 static GtkWidget *window = NULL;
639 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
640 gtk_window_set_title (GTK_WINDOW (window), "Toolbar test");
641 gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, TRUE);
643 gtk_signal_connect (GTK_OBJECT (window), "destroy",
644 GTK_SIGNAL_FUNC (destroy_window),
646 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
647 GTK_SIGNAL_FUNC (destroy_window),
650 gtk_container_border_width (GTK_CONTAINER (window), 0);
651 gtk_widget_realize (window);
653 toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH);
655 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
656 "Horizontal", "Horizontal toolbar layout",
657 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
658 &window->style->bg[GTK_STATE_NORMAL])),
659 (GtkSignalFunc) set_toolbar_horizontal, toolbar);
660 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
661 "Vertical", "Vertical toolbar layout",
662 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
663 &window->style->bg[GTK_STATE_NORMAL])),
664 (GtkSignalFunc) set_toolbar_vertical, toolbar);
666 gtk_toolbar_append_space (GTK_TOOLBAR(toolbar));
668 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
669 "Icons", "Only show toolbar icons",
670 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
671 &window->style->bg[GTK_STATE_NORMAL])),
672 (GtkSignalFunc) set_toolbar_icons, toolbar);
673 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
674 "Text", "Only show toolbar text",
675 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
676 &window->style->bg[GTK_STATE_NORMAL])),
677 (GtkSignalFunc) set_toolbar_text, toolbar);
678 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
679 "Both", "Show toolbar icons and text",
680 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
681 &window->style->bg[GTK_STATE_NORMAL])),
682 (GtkSignalFunc) set_toolbar_both, toolbar);
684 gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
686 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
687 "Small", "Use small spaces",
688 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
689 &window->style->bg[GTK_STATE_NORMAL])),
690 (GtkSignalFunc) set_toolbar_small_space, toolbar);
691 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
692 "Big", "Use big spaces",
693 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
694 &window->style->bg[GTK_STATE_NORMAL])),
695 (GtkSignalFunc) set_toolbar_big_space, toolbar);
697 gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
699 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
700 "Enable", "Enable tooltips",
701 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
702 &window->style->bg[GTK_STATE_NORMAL])),
703 (GtkSignalFunc) set_toolbar_enable, toolbar);
704 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
705 "Disable", "Disable tooltips",
706 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
707 &window->style->bg[GTK_STATE_NORMAL])),
708 (GtkSignalFunc) set_toolbar_disable, toolbar);
710 gtk_container_add (GTK_CONTAINER (window), toolbar);
711 gtk_widget_show (toolbar);
714 if (!GTK_WIDGET_VISIBLE (window))
715 gtk_widget_show (window);
717 gtk_widget_destroy (window);
721 make_toolbar (GtkWidget *window)
725 if (!GTK_WIDGET_REALIZED (window))
726 gtk_widget_realize (window);
728 toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH);
730 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
731 "Horizontal", "Horizontal toolbar layout",
732 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
733 &window->style->bg[GTK_STATE_NORMAL])),
734 (GtkSignalFunc) set_toolbar_horizontal, toolbar);
735 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
736 "Vertical", "Vertical toolbar layout",
737 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
738 &window->style->bg[GTK_STATE_NORMAL])),
739 (GtkSignalFunc) set_toolbar_vertical, toolbar);
741 gtk_toolbar_append_space (GTK_TOOLBAR(toolbar));
743 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
744 "Icons", "Only show toolbar icons",
745 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
746 &window->style->bg[GTK_STATE_NORMAL])),
747 (GtkSignalFunc) set_toolbar_icons, toolbar);
748 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
749 "Text", "Only show toolbar text",
750 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
751 &window->style->bg[GTK_STATE_NORMAL])),
752 (GtkSignalFunc) set_toolbar_text, toolbar);
753 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
754 "Both", "Show toolbar icons and text",
755 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
756 &window->style->bg[GTK_STATE_NORMAL])),
757 (GtkSignalFunc) set_toolbar_both, toolbar);
759 gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
761 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
762 "Small", "Use small spaces",
763 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
764 &window->style->bg[GTK_STATE_NORMAL])),
765 (GtkSignalFunc) set_toolbar_small_space, toolbar);
766 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
767 "Big", "Use big spaces",
768 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
769 &window->style->bg[GTK_STATE_NORMAL])),
770 (GtkSignalFunc) set_toolbar_big_space, toolbar);
772 gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
774 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
775 "Enable", "Enable tooltips",
776 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
777 &window->style->bg[GTK_STATE_NORMAL])),
778 (GtkSignalFunc) set_toolbar_enable, toolbar);
779 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
780 "Disable", "Disable tooltips",
781 GTK_PIXMAP (new_pixmap ("test.xpm", window->window,
782 &window->style->bg[GTK_STATE_NORMAL])),
783 (GtkSignalFunc) set_toolbar_disable, toolbar);
791 static GtkWidget* window = NULL;
799 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
800 gtk_window_set_title (GTK_WINDOW (window),
803 gtk_signal_connect (GTK_OBJECT (window), "destroy",
804 GTK_SIGNAL_FUNC(destroy_window), &window);
805 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
806 GTK_SIGNAL_FUNC(destroy_window), &window);
808 gtk_container_border_width (GTK_CONTAINER (window), 20);
810 hbox = gtk_handle_box_new ();
811 gtk_container_add (GTK_CONTAINER (window), hbox);
812 gtk_widget_show (hbox);
815 button = gtk_toggle_button_new_with_label ("Let's try this");
817 button = gtk_label_new ("Let's try this");
819 gtk_container_add (GTK_CONTAINER (hbox), button);
820 gtk_widget_set_usize(button, 250, 40);
821 gtk_widget_show (button);
824 GtkWidget *toolbar = make_toolbar (window);
825 gtk_container_add (GTK_CONTAINER (hbox), toolbar);
826 gtk_widget_show (toolbar);
831 if (!GTK_WIDGET_VISIBLE (window))
832 gtk_widget_show (window);
834 gtk_widget_destroy (window);
839 reparent_label (GtkWidget *widget,
840 GtkWidget *new_parent)
844 label = gtk_object_get_user_data (GTK_OBJECT (widget));
846 gtk_widget_reparent (label, new_parent);
852 static GtkWidget *window = NULL;
859 GtkWidget *separator;
863 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
865 gtk_signal_connect (GTK_OBJECT (window), "destroy",
866 GTK_SIGNAL_FUNC(destroy_window),
868 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
869 GTK_SIGNAL_FUNC(destroy_window),
872 gtk_window_set_title (GTK_WINDOW (window), "buttons");
873 gtk_container_border_width (GTK_CONTAINER (window), 0);
876 box1 = gtk_vbox_new (FALSE, 0);
877 gtk_container_add (GTK_CONTAINER (window), box1);
878 gtk_widget_show (box1);
881 box2 = gtk_hbox_new (FALSE, 5);
882 gtk_container_border_width (GTK_CONTAINER (box2), 10);
883 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
884 gtk_widget_show (box2);
887 label = gtk_label_new ("Hello World");
889 frame = gtk_frame_new ("Frame 1");
890 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
891 gtk_widget_show (frame);
893 box3 = gtk_vbox_new (FALSE, 5);
894 gtk_container_border_width (GTK_CONTAINER (box3), 5);
895 gtk_container_add (GTK_CONTAINER (frame), box3);
896 gtk_widget_show (box3);
898 button = gtk_button_new_with_label ("switch");
899 gtk_signal_connect (GTK_OBJECT (button), "clicked",
900 GTK_SIGNAL_FUNC(reparent_label),
902 gtk_object_set_user_data (GTK_OBJECT (button), label);
903 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
904 gtk_widget_show (button);
906 gtk_box_pack_start (GTK_BOX (box3), label, FALSE, TRUE, 0);
907 gtk_widget_show (label);
910 frame = gtk_frame_new ("Frame 2");
911 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
912 gtk_widget_show (frame);
914 box3 = gtk_vbox_new (FALSE, 5);
915 gtk_container_border_width (GTK_CONTAINER (box3), 5);
916 gtk_container_add (GTK_CONTAINER (frame), box3);
917 gtk_widget_show (box3);
919 button = gtk_button_new_with_label ("switch");
920 gtk_signal_connect (GTK_OBJECT (button), "clicked",
921 GTK_SIGNAL_FUNC(reparent_label),
923 gtk_object_set_user_data (GTK_OBJECT (button), label);
924 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
925 gtk_widget_show (button);
928 separator = gtk_hseparator_new ();
929 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
930 gtk_widget_show (separator);
933 box2 = gtk_vbox_new (FALSE, 10);
934 gtk_container_border_width (GTK_CONTAINER (box2), 10);
935 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
936 gtk_widget_show (box2);
939 button = gtk_button_new_with_label ("close");
940 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
941 GTK_SIGNAL_FUNC(gtk_widget_destroy),
942 GTK_OBJECT (window));
943 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
944 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
945 gtk_widget_grab_default (button);
946 gtk_widget_show (button);
949 if (!GTK_WIDGET_VISIBLE (window))
950 gtk_widget_show (window);
952 gtk_widget_destroy (window);
958 static GtkWidget *window = NULL;
964 GtkWidget *separator;
965 GtkWidget *pixmapwid;
972 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
974 gtk_signal_connect (GTK_OBJECT (window), "destroy",
975 GTK_SIGNAL_FUNC(destroy_window),
977 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
978 GTK_SIGNAL_FUNC(destroy_window),
981 gtk_window_set_title (GTK_WINDOW (window), "pixmap");
982 gtk_container_border_width (GTK_CONTAINER (window), 0);
983 gtk_widget_realize(window);
985 box1 = gtk_vbox_new (FALSE, 0);
986 gtk_container_add (GTK_CONTAINER (window), box1);
987 gtk_widget_show (box1);
989 box2 = gtk_vbox_new (FALSE, 10);
990 gtk_container_border_width (GTK_CONTAINER (box2), 10);
991 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
992 gtk_widget_show (box2);
994 button = gtk_button_new ();
995 gtk_box_pack_start (GTK_BOX (box2), button, FALSE, FALSE, 0);
996 gtk_widget_show (button);
998 style=gtk_widget_get_style(button);
1000 pixmap = gdk_pixmap_create_from_xpm (window->window, &mask,
1001 &style->bg[GTK_STATE_NORMAL],
1003 pixmapwid = gtk_pixmap_new (pixmap, mask);
1005 label = gtk_label_new ("Pixmap\ntest");
1006 box3 = gtk_hbox_new (FALSE, 0);
1007 gtk_container_border_width (GTK_CONTAINER (box3), 2);
1008 gtk_container_add (GTK_CONTAINER (box3), pixmapwid);
1009 gtk_container_add (GTK_CONTAINER (box3), label);
1010 gtk_container_add (GTK_CONTAINER (button), box3);
1011 gtk_widget_show (pixmapwid);
1012 gtk_widget_show (label);
1013 gtk_widget_show (box3);
1015 separator = gtk_hseparator_new ();
1016 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1017 gtk_widget_show (separator);
1020 box2 = gtk_vbox_new (FALSE, 10);
1021 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1022 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1023 gtk_widget_show (box2);
1026 button = gtk_button_new_with_label ("close");
1027 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1028 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1029 GTK_OBJECT (window));
1030 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1031 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1032 gtk_widget_grab_default (button);
1033 gtk_widget_show (button);
1036 if (!GTK_WIDGET_VISIBLE (window))
1037 gtk_widget_show (window);
1039 gtk_widget_destroy (window);
1045 static GtkWidget *window = NULL;
1049 GtkWidget *separator;
1050 GtkTooltips *tooltips;
1054 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1056 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1057 GTK_SIGNAL_FUNC(destroy_window),
1059 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1060 GTK_SIGNAL_FUNC(destroy_window),
1063 gtk_window_set_title (GTK_WINDOW (window), "tooltips");
1064 gtk_container_border_width (GTK_CONTAINER (window), 0);
1066 tooltips=gtk_tooltips_new();
1068 box1 = gtk_vbox_new (FALSE, 0);
1069 gtk_container_add (GTK_CONTAINER (window), box1);
1070 gtk_widget_show (box1);
1073 box2 = gtk_vbox_new (FALSE, 10);
1074 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1075 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1076 gtk_widget_show (box2);
1079 button = gtk_toggle_button_new_with_label ("button1");
1080 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1081 gtk_widget_show (button);
1083 gtk_tooltips_set_tips(tooltips,button,"This is button 1");
1085 button = gtk_toggle_button_new_with_label ("button2");
1086 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1087 gtk_widget_show (button);
1089 gtk_tooltips_set_tips(tooltips,button,"This is button 2");
1091 button = gtk_toggle_button_new_with_label ("button3");
1092 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1093 gtk_widget_show (button);
1095 gtk_tooltips_set_tips (tooltips, button, "This is button 3. This is also a really long tooltip which probably won't fit on a single line and will therefore need to be wrapped. Hopefully the wrapping will work correctly.");
1097 separator = gtk_hseparator_new ();
1098 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1099 gtk_widget_show (separator);
1102 box2 = gtk_vbox_new (FALSE, 10);
1103 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1104 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1105 gtk_widget_show (box2);
1108 button = gtk_button_new_with_label ("close");
1109 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1110 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1111 GTK_OBJECT (window));
1112 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1113 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1114 gtk_widget_grab_default (button);
1115 gtk_widget_show (button);
1117 gtk_tooltips_set_tips (tooltips, button, "Push this button to close window");
1120 if (!GTK_WIDGET_VISIBLE (window))
1121 gtk_widget_show (window);
1123 gtk_widget_destroy (window);
1127 create_menu (int depth)
1131 GtkWidget *menuitem;
1139 menu = gtk_menu_new ();
1143 for (i = 0, j = 1; i < 5; i++, j++)
1145 sprintf (buf, "item %2d - %d", depth, j);
1146 menuitem = gtk_radio_menu_item_new_with_label (group, buf);
1147 group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
1149 gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menuitem), TRUE);
1150 gtk_menu_append (GTK_MENU (menu), menuitem);
1151 gtk_widget_show (menuitem);
1156 submenu = create_menu (depth - 1);
1157 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
1167 static GtkWidget *window = NULL;
1173 GtkWidget *menuitem;
1174 GtkWidget *optionmenu;
1175 GtkWidget *separator;
1179 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1181 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1182 GTK_SIGNAL_FUNC(destroy_window),
1184 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1185 GTK_SIGNAL_FUNC(destroy_window),
1188 gtk_window_set_title (GTK_WINDOW (window), "menus");
1189 gtk_container_border_width (GTK_CONTAINER (window), 0);
1192 box1 = gtk_vbox_new (FALSE, 0);
1193 gtk_container_add (GTK_CONTAINER (window), box1);
1194 gtk_widget_show (box1);
1197 menubar = gtk_menu_bar_new ();
1198 gtk_box_pack_start (GTK_BOX (box1), menubar, FALSE, TRUE, 0);
1199 gtk_widget_show (menubar);
1201 menu = create_menu (2);
1203 menuitem = gtk_menu_item_new_with_label ("test\nline2");
1204 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
1205 gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
1206 gtk_widget_show (menuitem);
1208 menuitem = gtk_menu_item_new_with_label ("foo");
1209 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
1210 gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
1211 gtk_widget_show (menuitem);
1213 menuitem = gtk_menu_item_new_with_label ("bar");
1214 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
1215 gtk_menu_item_right_justify (GTK_MENU_ITEM (menuitem));
1216 gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
1217 gtk_widget_show (menuitem);
1220 box2 = gtk_vbox_new (FALSE, 10);
1221 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1222 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1223 gtk_widget_show (box2);
1226 optionmenu = gtk_option_menu_new ();
1227 gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), create_menu (1));
1228 gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 4);
1229 gtk_box_pack_start (GTK_BOX (box2), optionmenu, TRUE, TRUE, 0);
1230 gtk_widget_show (optionmenu);
1233 separator = gtk_hseparator_new ();
1234 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1235 gtk_widget_show (separator);
1238 box2 = gtk_vbox_new (FALSE, 10);
1239 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1240 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1241 gtk_widget_show (box2);
1244 button = gtk_button_new_with_label ("close");
1245 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1246 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1247 GTK_OBJECT (window));
1248 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1249 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1250 gtk_widget_grab_default (button);
1251 gtk_widget_show (button);
1254 if (!GTK_WIDGET_VISIBLE (window))
1255 gtk_widget_show (window);
1257 gtk_widget_destroy (window);
1264 create_scrolled_windows ()
1266 static GtkWidget *window;
1267 GtkWidget *scrolled_window;
1275 window = gtk_dialog_new ();
1277 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1278 GTK_SIGNAL_FUNC(destroy_window),
1280 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1281 GTK_SIGNAL_FUNC(destroy_window),
1284 gtk_window_set_title (GTK_WINDOW (window), "dialog");
1285 gtk_container_border_width (GTK_CONTAINER (window), 0);
1288 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1289 gtk_container_border_width (GTK_CONTAINER (scrolled_window), 10);
1290 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1291 GTK_POLICY_AUTOMATIC,
1292 GTK_POLICY_AUTOMATIC);
1293 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
1294 scrolled_window, TRUE, TRUE, 0);
1295 gtk_widget_show (scrolled_window);
1297 table = gtk_table_new (20, 20, FALSE);
1298 gtk_table_set_row_spacings (GTK_TABLE (table), 10);
1299 gtk_table_set_col_spacings (GTK_TABLE (table), 10);
1300 gtk_container_add (GTK_CONTAINER (scrolled_window), table);
1301 gtk_widget_show (table);
1303 for (i = 0; i < 20; i++)
1304 for (j = 0; j < 20; j++)
1306 sprintf (buffer, "button (%d,%d)\n", i, j);
1307 button = gtk_toggle_button_new_with_label (buffer);
1308 gtk_table_attach_defaults (GTK_TABLE (table), button,
1310 gtk_widget_show (button);
1314 button = gtk_button_new_with_label ("close");
1315 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1316 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1317 GTK_OBJECT (window));
1318 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1319 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
1320 button, TRUE, TRUE, 0);
1321 gtk_widget_grab_default (button);
1322 gtk_widget_show (button);
1325 if (!GTK_WIDGET_VISIBLE (window))
1326 gtk_widget_show (window);
1328 gtk_widget_destroy (window);
1337 static GtkWidget *window = NULL;
1342 GtkWidget *separator;
1346 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1348 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1349 GTK_SIGNAL_FUNC(destroy_window),
1351 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1352 GTK_SIGNAL_FUNC(destroy_window),
1355 gtk_window_set_title (GTK_WINDOW (window), "entry");
1356 gtk_container_border_width (GTK_CONTAINER (window), 0);
1359 box1 = gtk_vbox_new (FALSE, 0);
1360 gtk_container_add (GTK_CONTAINER (window), box1);
1361 gtk_widget_show (box1);
1364 box2 = gtk_vbox_new (FALSE, 10);
1365 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1366 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1367 gtk_widget_show (box2);
1370 entry = gtk_entry_new ();
1371 /* gtk_widget_set_usize (entry, 0, 25); */
1372 gtk_entry_set_text (GTK_ENTRY (entry), "hello world");
1373 gtk_entry_select_region (GTK_ENTRY (entry),
1374 0, GTK_ENTRY(entry)->text_length);
1375 gtk_box_pack_start (GTK_BOX (box2), entry, TRUE, TRUE, 0);
1376 gtk_widget_show (entry);
1379 separator = gtk_hseparator_new ();
1380 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1381 gtk_widget_show (separator);
1384 box2 = gtk_vbox_new (FALSE, 10);
1385 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1386 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1387 gtk_widget_show (box2);
1390 button = gtk_button_new_with_label ("close");
1391 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1392 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1393 GTK_OBJECT (window));
1394 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1395 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1396 gtk_widget_grab_default (button);
1397 gtk_widget_show (button);
1400 if (!GTK_WIDGET_VISIBLE (window))
1401 gtk_widget_show (window);
1403 gtk_widget_destroy (window); */
1410 list_add (GtkWidget *widget,
1415 GtkWidget *list_item;
1417 sprintf (buffer, "added item %d", i++);
1418 list_item = gtk_list_item_new_with_label (buffer);
1419 gtk_widget_show (list_item);
1420 gtk_container_add (GTK_CONTAINER (list), list_item);
1424 list_remove (GtkWidget *widget,
1430 tmp_list = GTK_LIST (list)->selection;
1435 clear_list = g_list_prepend (clear_list, tmp_list->data);
1436 tmp_list = tmp_list->next;
1439 clear_list = g_list_reverse (clear_list);
1441 gtk_list_remove_items (GTK_LIST (list), clear_list);
1443 tmp_list = clear_list;
1447 gtk_widget_destroy (GTK_WIDGET (tmp_list->data));
1448 tmp_list = tmp_list->next;
1451 g_list_free (clear_list);
1457 static GtkWidget *window = NULL;
1458 static char *list_items[] =
1471 static int nlist_items = sizeof (list_items) / sizeof (list_items[0]);
1475 GtkWidget *scrolled_win;
1477 GtkWidget *list_item;
1479 GtkWidget *separator;
1484 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1486 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1487 GTK_SIGNAL_FUNC(destroy_window),
1489 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1490 GTK_SIGNAL_FUNC(destroy_window),
1493 gtk_window_set_title (GTK_WINDOW (window), "list");
1494 gtk_container_border_width (GTK_CONTAINER (window), 0);
1497 box1 = gtk_vbox_new (FALSE, 0);
1498 gtk_container_add (GTK_CONTAINER (window), box1);
1499 gtk_widget_show (box1);
1502 box2 = gtk_vbox_new (FALSE, 10);
1503 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1504 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1505 gtk_widget_show (box2);
1508 scrolled_win = gtk_scrolled_window_new (NULL, NULL);
1509 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
1510 GTK_POLICY_AUTOMATIC,
1511 GTK_POLICY_AUTOMATIC);
1512 gtk_box_pack_start (GTK_BOX (box2), scrolled_win, TRUE, TRUE, 0);
1513 gtk_widget_show (scrolled_win);
1515 list = gtk_list_new ();
1516 gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_MULTIPLE);
1517 gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE);
1518 gtk_container_add (GTK_CONTAINER (scrolled_win), list);
1519 gtk_widget_show (list);
1521 for (i = 0; i < nlist_items; i++)
1523 list_item = gtk_list_item_new_with_label (list_items[i]);
1524 gtk_container_add (GTK_CONTAINER (list), list_item);
1525 gtk_widget_show (list_item);
1528 button = gtk_button_new_with_label ("add");
1529 GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
1530 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1531 GTK_SIGNAL_FUNC(list_add),
1533 gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0);
1534 gtk_widget_show (button);
1536 button = gtk_button_new_with_label ("remove");
1537 GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
1538 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1539 GTK_SIGNAL_FUNC(list_remove),
1541 gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0);
1542 gtk_widget_show (button);
1545 separator = gtk_hseparator_new ();
1546 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1547 gtk_widget_show (separator);
1550 box2 = gtk_vbox_new (FALSE, 10);
1551 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1552 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1553 gtk_widget_show (box2);
1556 button = gtk_button_new_with_label ("close");
1557 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1558 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1559 GTK_OBJECT (window));
1560 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1561 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1562 gtk_widget_grab_default (button);
1563 gtk_widget_show (button);
1566 if (!GTK_WIDGET_VISIBLE (window))
1567 gtk_widget_show (window);
1569 gtk_widget_destroy (window);
1575 #define TESTGTK_CLIST_COLUMNS 7
1576 static gint clist_rows = 0;
1577 static gint clist_selected_row = 0;
1580 add1000_clist (GtkWidget *widget, gpointer data)
1583 char text[TESTGTK_CLIST_COLUMNS][50];
1584 char *texts[TESTGTK_CLIST_COLUMNS];
1586 for (i = 0; i < TESTGTK_CLIST_COLUMNS; i++)
1589 sprintf (text[i], "Column %d", i);
1592 sprintf (text[1], "Right");
1593 sprintf (text[2], "Center");
1595 gtk_clist_freeze (GTK_CLIST (data));
1596 for (i = 0; i < 1000; i++)
1598 sprintf (text[0], "Row %d", clist_rows++);
1599 gtk_clist_append (GTK_CLIST (data), texts);
1601 gtk_clist_thaw (GTK_CLIST (data));
1606 add10000_clist (GtkWidget *widget, gpointer data)
1609 char text[TESTGTK_CLIST_COLUMNS][50];
1610 char *texts[TESTGTK_CLIST_COLUMNS];
1612 for (i = 0; i < TESTGTK_CLIST_COLUMNS; i++)
1615 sprintf (text[i], "Column %d", i);
1618 sprintf (text[1], "Right");
1619 sprintf (text[2], "Center");
1621 gtk_clist_freeze (GTK_CLIST (data));
1622 for (i = 0; i < 10000; i++)
1624 sprintf (text[0], "Row %d", clist_rows++);
1625 gtk_clist_append (GTK_CLIST (data), texts);
1627 gtk_clist_thaw (GTK_CLIST (data));
1632 clear_clist (GtkWidget *widget, gpointer data)
1634 gtk_clist_clear (GTK_CLIST (data));
1639 remove_row_clist (GtkWidget *widget, gpointer data)
1641 gtk_clist_remove (GTK_CLIST (data), clist_selected_row);
1646 select_clist (GtkWidget *widget,
1649 GdkEventButton *bevent)
1654 button = bevent->button;
1656 g_print ("GtkCList Selection: row %d column %d button %d\n",
1657 row, column, button);
1659 clist_selected_row = row;
1666 static GtkWidget *window = NULL;
1668 static char *titles[] =
1679 char text[TESTGTK_CLIST_COLUMNS][50];
1680 char *texts[TESTGTK_CLIST_COLUMNS];
1686 GtkWidget *separator;
1691 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1693 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1694 GTK_SIGNAL_FUNC(destroy_window),
1696 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1697 GTK_SIGNAL_FUNC(destroy_window),
1700 gtk_window_set_title (GTK_WINDOW (window), "clist");
1701 gtk_container_border_width (GTK_CONTAINER (window), 0);
1704 box1 = gtk_vbox_new (FALSE, 0);
1705 gtk_container_add (GTK_CONTAINER (window), box1);
1706 gtk_widget_show (box1);
1709 box2 = gtk_hbox_new (FALSE, 10);
1710 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1711 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0);
1712 gtk_widget_show (box2);
1714 /* create this here so we have a pointer to throw at the
1715 * button callbacks -- more is done with it later */
1716 clist = gtk_clist_new (TESTGTK_CLIST_COLUMNS, titles);
1718 button = gtk_button_new_with_label ("Add 1,000 Rows");
1719 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1721 gtk_signal_connect (GTK_OBJECT (button),
1723 (GtkSignalFunc) add1000_clist,
1726 gtk_widget_show (button);
1729 button = gtk_button_new_with_label ("Add 10,000 Rows");
1730 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1732 gtk_signal_connect (GTK_OBJECT (button),
1734 (GtkSignalFunc) add10000_clist,
1737 gtk_widget_show (button);
1739 button = gtk_button_new_with_label ("Clear List");
1740 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1742 gtk_signal_connect (GTK_OBJECT (button),
1744 (GtkSignalFunc) clear_clist,
1747 gtk_widget_show (button);
1749 button = gtk_button_new_with_label ("Remove Row");
1750 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1752 gtk_signal_connect (GTK_OBJECT (button),
1754 (GtkSignalFunc) remove_row_clist,
1757 gtk_widget_show (button);
1759 box2 = gtk_vbox_new (FALSE, 10);
1760 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1761 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1762 gtk_widget_show (box2);
1766 * the rest of the clist configuration
1768 gtk_clist_set_row_height (GTK_CLIST (clist), 20);
1770 gtk_signal_connect (GTK_OBJECT (clist),
1772 (GtkSignalFunc) select_clist,
1775 gtk_clist_set_column_width (GTK_CLIST (clist), 0, 100);
1777 for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++)
1778 gtk_clist_set_column_width (GTK_CLIST (clist), i, 80);
1780 gtk_clist_set_selection_mode (GTK_CLIST (clist), GTK_SELECTION_BROWSE);
1782 gtk_clist_set_policy (GTK_CLIST (clist), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1784 gtk_clist_set_column_justification (GTK_CLIST (clist), 1, GTK_JUSTIFY_RIGHT);
1785 gtk_clist_set_column_justification (GTK_CLIST (clist), 2, GTK_JUSTIFY_CENTER);
1787 for (i = 0; i < TESTGTK_CLIST_COLUMNS; i++)
1790 sprintf (text[i], "Column %d", i);
1793 sprintf (text[1], "Right");
1794 sprintf (text[2], "Center");
1796 for (i = 0; i < 100; i++)
1798 sprintf (text[0], "Row %d", clist_rows++);
1799 gtk_clist_append (GTK_CLIST (clist), texts);
1802 gtk_container_border_width (GTK_CONTAINER (clist), 5);
1803 gtk_box_pack_start (GTK_BOX (box2), clist, TRUE, TRUE, 0);
1804 gtk_widget_show (clist);
1807 separator = gtk_hseparator_new ();
1808 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1809 gtk_widget_show (separator);
1811 box2 = gtk_vbox_new (FALSE, 10);
1812 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1813 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1814 gtk_widget_show (box2);
1816 button = gtk_button_new_with_label ("close");
1817 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1818 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1819 GTK_OBJECT (window));
1821 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1822 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1823 gtk_widget_grab_default (button);
1825 gtk_widget_show (button);
1828 if (!GTK_WIDGET_VISIBLE (window))
1829 gtk_widget_show (window);
1831 gtk_widget_destroy (window);
1839 color_selection_ok (GtkWidget *w,
1840 GtkColorSelectionDialog *cs)
1842 GtkColorSelection *colorsel;
1845 colorsel=GTK_COLOR_SELECTION(cs->colorsel);
1847 gtk_color_selection_get_color(colorsel,color);
1848 gtk_color_selection_set_color(colorsel,color);
1852 color_selection_changed (GtkWidget *w,
1853 GtkColorSelectionDialog *cs)
1855 GtkColorSelection *colorsel;
1858 colorsel=GTK_COLOR_SELECTION(cs->colorsel);
1859 gtk_color_selection_get_color(colorsel,color);
1863 create_color_selection ()
1865 static GtkWidget *window = NULL;
1869 gtk_preview_set_install_cmap (TRUE);
1870 gtk_widget_push_visual (gtk_preview_get_visual ());
1871 gtk_widget_push_colormap (gtk_preview_get_cmap ());
1873 window = gtk_color_selection_dialog_new ("color selection dialog");
1875 gtk_color_selection_set_opacity (
1876 GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1879 gtk_color_selection_set_update_policy(
1880 GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1881 GTK_UPDATE_CONTINUOUS);
1883 gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
1885 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1886 GTK_SIGNAL_FUNC(destroy_window),
1888 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1889 GTK_SIGNAL_FUNC(destroy_window),
1892 gtk_signal_connect (
1893 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1895 GTK_SIGNAL_FUNC(color_selection_changed),
1898 gtk_signal_connect (
1899 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->ok_button),
1901 GTK_SIGNAL_FUNC(color_selection_ok),
1904 gtk_signal_connect_object (
1905 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->cancel_button),
1907 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1908 GTK_OBJECT (window));
1910 gtk_widget_pop_colormap ();
1911 gtk_widget_pop_visual ();
1914 if (!GTK_WIDGET_VISIBLE (window))
1915 gtk_widget_show (window);
1917 gtk_widget_destroy (window);
1922 file_selection_ok (GtkWidget *w,
1923 GtkFileSelection *fs)
1925 g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
1929 create_file_selection ()
1931 static GtkWidget *window = NULL;
1935 window = gtk_file_selection_new ("file selection dialog");
1936 gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
1938 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1939 GTK_SIGNAL_FUNC(destroy_window),
1941 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1942 GTK_SIGNAL_FUNC(destroy_window),
1945 gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (window)->ok_button),
1946 "clicked", GTK_SIGNAL_FUNC(file_selection_ok),
1948 gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (window)->cancel_button),
1949 "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),
1950 GTK_OBJECT (window));
1953 if (!GTK_WIDGET_VISIBLE (window))
1954 gtk_widget_show (window);
1956 gtk_widget_destroy (window);
1963 static GtkWidget *dialog_window = NULL;
1966 label_toggle (GtkWidget *widget,
1971 *label = gtk_label_new ("Dialog Test");
1972 gtk_misc_set_padding (GTK_MISC (*label), 10, 10);
1973 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->vbox),
1974 *label, TRUE, TRUE, 0);
1975 gtk_widget_show (*label);
1979 gtk_widget_destroy (*label);
1987 static GtkWidget *label;
1992 dialog_window = gtk_dialog_new ();
1994 gtk_signal_connect (GTK_OBJECT (dialog_window), "destroy",
1995 GTK_SIGNAL_FUNC(destroy_window),
1997 gtk_signal_connect (GTK_OBJECT (dialog_window), "delete_event",
1998 GTK_SIGNAL_FUNC(destroy_window),
2001 gtk_window_set_title (GTK_WINDOW (dialog_window), "dialog");
2002 gtk_container_border_width (GTK_CONTAINER (dialog_window), 0);
2004 button = gtk_button_new_with_label ("OK");
2005 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2006 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->action_area),
2007 button, TRUE, TRUE, 0);
2008 gtk_widget_grab_default (button);
2009 gtk_widget_show (button);
2011 button = gtk_button_new_with_label ("Toggle");
2012 gtk_signal_connect (GTK_OBJECT (button), "clicked",
2013 GTK_SIGNAL_FUNC(label_toggle),
2015 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2016 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->action_area),
2017 button, TRUE, TRUE, 0);
2018 gtk_widget_show (button);
2023 if (!GTK_WIDGET_VISIBLE (dialog_window))
2024 gtk_widget_show (dialog_window);
2026 gtk_widget_destroy (dialog_window);
2034 create_range_controls ()
2036 static GtkWidget *window = NULL;
2040 GtkWidget *scrollbar;
2042 GtkWidget *separator;
2043 GtkObject *adjustment;
2047 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2049 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2050 GTK_SIGNAL_FUNC(destroy_window),
2052 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2053 GTK_SIGNAL_FUNC(destroy_window),
2056 gtk_window_set_title (GTK_WINDOW (window), "range controls");
2057 gtk_container_border_width (GTK_CONTAINER (window), 0);
2060 box1 = gtk_vbox_new (FALSE, 0);
2061 gtk_container_add (GTK_CONTAINER (window), box1);
2062 gtk_widget_show (box1);
2065 box2 = gtk_vbox_new (FALSE, 10);
2066 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2067 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2068 gtk_widget_show (box2);
2071 adjustment = gtk_adjustment_new (0.0, 0.0, 101.0, 0.1, 1.0, 1.0);
2073 scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
2074 gtk_widget_set_usize (GTK_WIDGET (scale), 150, 30);
2075 gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
2076 gtk_scale_set_digits (GTK_SCALE (scale), 1);
2077 gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
2078 gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
2079 gtk_widget_show (scale);
2081 scrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (adjustment));
2082 gtk_range_set_update_policy (GTK_RANGE (scrollbar),
2083 GTK_UPDATE_CONTINUOUS);
2084 gtk_box_pack_start (GTK_BOX (box2), scrollbar, TRUE, TRUE, 0);
2085 gtk_widget_show (scrollbar);
2088 separator = gtk_hseparator_new ();
2089 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2090 gtk_widget_show (separator);
2093 box2 = gtk_vbox_new (FALSE, 10);
2094 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2095 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2096 gtk_widget_show (box2);
2099 button = gtk_button_new_with_label ("close");
2100 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2101 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2102 GTK_OBJECT (window));
2103 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2104 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2105 gtk_widget_grab_default (button);
2106 gtk_widget_show (button);
2109 if (!GTK_WIDGET_VISIBLE (window))
2110 gtk_widget_show (window);
2112 gtk_widget_destroy (window);
2122 static GtkWidget *window = NULL;
2128 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2130 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2131 GTK_SIGNAL_FUNC(destroy_window),
2133 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2134 GTK_SIGNAL_FUNC(destroy_window),
2137 gtk_window_set_title (GTK_WINDOW (window), "rulers");
2138 gtk_widget_set_usize (window, 300, 300);
2139 gtk_widget_set_events (window,
2140 GDK_POINTER_MOTION_MASK
2141 | GDK_POINTER_MOTION_HINT_MASK);
2142 gtk_container_border_width (GTK_CONTAINER (window), 0);
2144 table = gtk_table_new (2, 2, FALSE);
2145 gtk_container_add (GTK_CONTAINER (window), table);
2146 gtk_widget_show (table);
2148 ruler = gtk_hruler_new ();
2149 gtk_ruler_set_range (GTK_RULER (ruler), 5, 15, 0, 20);
2151 gtk_signal_connect_object (
2152 GTK_OBJECT (window),
2153 "motion_notify_event",
2155 GTK_WIDGET_CLASS (GTK_OBJECT (ruler)->klass)->motion_notify_event),
2156 GTK_OBJECT (ruler));
2158 gtk_table_attach (GTK_TABLE (table), ruler, 1, 2, 0, 1,
2159 GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
2160 gtk_widget_show (ruler);
2163 ruler = gtk_vruler_new ();
2164 gtk_ruler_set_range (GTK_RULER (ruler), 5, 15, 0, 20);
2166 gtk_signal_connect_object (
2167 GTK_OBJECT (window),
2168 "motion_notify_event",
2169 GTK_SIGNAL_FUNC (GTK_WIDGET_CLASS (GTK_OBJECT (ruler)->klass)->motion_notify_event),
2170 GTK_OBJECT (ruler));
2172 gtk_table_attach (GTK_TABLE (table), ruler, 0, 1, 1, 2,
2173 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2174 gtk_widget_show (ruler);
2177 if (!GTK_WIDGET_VISIBLE (window))
2178 gtk_widget_show (window);
2180 gtk_widget_destroy (window);
2190 static GtkWidget *window = NULL;
2194 GtkWidget *separator;
2196 GtkWidget *hscrollbar;
2197 GtkWidget *vscrollbar;
2202 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2203 gtk_widget_set_name (window, "text window");
2205 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2206 GTK_SIGNAL_FUNC(destroy_window),
2208 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2209 GTK_SIGNAL_FUNC(destroy_window),
2212 gtk_window_set_title (GTK_WINDOW (window), "test");
2213 gtk_container_border_width (GTK_CONTAINER (window), 0);
2216 box1 = gtk_vbox_new (FALSE, 0);
2217 gtk_container_add (GTK_CONTAINER (window), box1);
2218 gtk_widget_show (box1);
2221 box2 = gtk_vbox_new (FALSE, 10);
2222 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2223 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2224 gtk_widget_show (box2);
2227 table = gtk_table_new (2, 2, FALSE);
2228 gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2);
2229 gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
2230 gtk_box_pack_start (GTK_BOX (box2), table, TRUE, TRUE, 0);
2231 gtk_widget_show (table);
2233 text = gtk_text_new (NULL, NULL);
2234 gtk_table_attach_defaults (GTK_TABLE (table), text, 0, 1, 0, 1);
2235 gtk_widget_show (text);
2237 hscrollbar = gtk_hscrollbar_new (GTK_TEXT (text)->hadj);
2238 gtk_table_attach (GTK_TABLE (table), hscrollbar, 0, 1, 1, 2,
2239 GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
2240 gtk_widget_show (hscrollbar);
2242 vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
2243 gtk_table_attach (GTK_TABLE (table), vscrollbar, 1, 2, 0, 1,
2244 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2245 gtk_widget_show (vscrollbar);
2247 gtk_text_freeze (GTK_TEXT (text));
2249 gtk_widget_realize (text);
2251 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2252 "spencer blah blah blah\n", -1);
2253 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2255 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2257 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2259 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2261 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2263 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2265 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2267 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2268 "girlfriend\n", -1);
2269 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2271 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2273 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2275 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2277 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2279 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2281 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2283 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2285 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2287 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2289 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2291 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2294 gtk_text_thaw (GTK_TEXT (text));
2296 separator = gtk_hseparator_new ();
2297 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2298 gtk_widget_show (separator);
2301 box2 = gtk_vbox_new (FALSE, 10);
2302 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2303 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2304 gtk_widget_show (box2);
2307 button = gtk_button_new_with_label ("close");
2308 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2309 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2310 GTK_OBJECT (window));
2311 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2312 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2313 gtk_widget_grab_default (button);
2314 gtk_widget_show (button);
2317 if (!GTK_WIDGET_VISIBLE (window))
2318 gtk_widget_show (window);
2320 gtk_widget_destroy (window);
2328 rotate_notebook (GtkButton *button,
2329 GtkNotebook *notebook)
2331 gtk_notebook_set_tab_pos (notebook, (notebook->tab_pos + 1) % 4);
2337 static GtkWidget *window = NULL;
2341 GtkWidget *separator;
2342 GtkWidget *notebook;
2350 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2352 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2353 GTK_SIGNAL_FUNC(destroy_window),
2355 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2356 GTK_SIGNAL_FUNC(destroy_window),
2359 gtk_window_set_title (GTK_WINDOW (window), "notebook");
2360 gtk_container_border_width (GTK_CONTAINER (window), 0);
2363 box1 = gtk_vbox_new (FALSE, 0);
2364 gtk_container_add (GTK_CONTAINER (window), box1);
2365 gtk_widget_show (box1);
2368 box2 = gtk_vbox_new (FALSE, 10);
2369 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2370 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2371 gtk_widget_show (box2);
2374 notebook = gtk_notebook_new ();
2375 gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);
2376 gtk_box_pack_start (GTK_BOX (box2), notebook, TRUE, TRUE, 0);
2377 gtk_widget_show (notebook);
2380 for (i = 0; i < 5; i++)
2382 sprintf (buffer, "Page %d", i+1);
2384 frame = gtk_frame_new (buffer);
2385 gtk_container_border_width (GTK_CONTAINER (frame), 10);
2386 gtk_widget_set_usize (frame, 200, 150);
2387 gtk_widget_show (frame);
2389 label = gtk_label_new (buffer);
2390 gtk_container_add (GTK_CONTAINER (frame), label);
2391 gtk_widget_show (label);
2393 label = gtk_label_new (buffer);
2394 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
2398 separator = gtk_hseparator_new ();
2399 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2400 gtk_widget_show (separator);
2403 box2 = gtk_hbox_new (FALSE, 10);
2404 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2405 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2406 gtk_widget_show (box2);
2409 button = gtk_button_new_with_label ("close");
2410 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2411 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2412 GTK_OBJECT (window));
2413 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2414 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2415 gtk_widget_grab_default (button);
2416 gtk_widget_show (button);
2418 button = gtk_button_new_with_label ("next");
2419 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2420 GTK_SIGNAL_FUNC(gtk_notebook_next_page),
2421 GTK_OBJECT (notebook));
2422 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2423 gtk_widget_show (button);
2425 button = gtk_button_new_with_label ("prev");
2426 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2427 GTK_SIGNAL_FUNC(gtk_notebook_prev_page),
2428 GTK_OBJECT (notebook));
2429 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2430 gtk_widget_show (button);
2432 button = gtk_button_new_with_label ("rotate");
2433 gtk_signal_connect (GTK_OBJECT (button), "clicked",
2434 GTK_SIGNAL_FUNC(rotate_notebook),
2436 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2437 gtk_widget_show (button);
2440 if (!GTK_WIDGET_VISIBLE (window))
2441 gtk_widget_show (window);
2443 gtk_widget_destroy (window);
2453 static GtkWidget *window = NULL;
2460 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2462 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2463 GTK_SIGNAL_FUNC(destroy_window),
2465 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2466 GTK_SIGNAL_FUNC(destroy_window),
2469 gtk_window_set_title (GTK_WINDOW (window), "Panes");
2470 gtk_container_border_width (GTK_CONTAINER (window), 0);
2472 vpaned = gtk_vpaned_new ();
2473 gtk_container_add (GTK_CONTAINER (window), vpaned);
2474 gtk_container_border_width (GTK_CONTAINER(vpaned), 5);
2475 gtk_widget_show (vpaned);
2477 hpaned = gtk_hpaned_new ();
2478 gtk_paned_add1 (GTK_PANED (vpaned), hpaned);
2480 frame = gtk_frame_new (NULL);
2481 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
2482 gtk_widget_set_usize (frame, 60, 60);
2483 gtk_paned_add1 (GTK_PANED (hpaned), frame);
2484 gtk_widget_show (frame);
2486 frame = gtk_frame_new (NULL);
2487 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
2488 gtk_widget_set_usize (frame, 80, 60);
2489 gtk_paned_add2 (GTK_PANED (hpaned), frame);
2490 gtk_widget_show (frame);
2492 gtk_widget_show (hpaned);
2494 frame = gtk_frame_new (NULL);
2495 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
2496 gtk_widget_set_usize (frame, 60, 80);
2497 gtk_paned_add2 (GTK_PANED (vpaned), frame);
2498 gtk_widget_show (frame);
2501 if (!GTK_WIDGET_VISIBLE (window))
2502 gtk_widget_show (window);
2504 gtk_widget_destroy (window);
2513 dnd_drop_destroy_popup (GtkWidget *widget, GtkWindow **window)
2515 if(GTK_IS_BUTTON(widget)) /* I.e. they clicked the close button */
2516 gtk_widget_destroy(GTK_WIDGET(*window));
2518 gtk_grab_remove(GTK_WIDGET(*window));
2525 dnd_drop (GtkWidget *button, GdkEvent *event)
2527 static GtkWidget *window = NULL;
2528 GtkWidget *vbox, *lbl, *btn;
2531 window = gtk_window_new(GTK_WINDOW_DIALOG);
2532 gtk_container_border_width (GTK_CONTAINER(window), 10);
2534 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2535 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
2537 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2538 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
2541 vbox = gtk_vbox_new(FALSE, 5);
2543 /* Display message that we got from drop source */
2544 msg = g_malloc(strlen(event->dropdataavailable.data)
2545 + strlen(event->dropdataavailable.data_type) + 100);
2546 sprintf(msg, "Drop data of type %s was:\n\n%s",
2547 event->dropdataavailable.data_type,
2548 (char *)event->dropdataavailable.data);
2549 lbl = gtk_label_new(msg);
2550 gtk_label_set_justify(GTK_LABEL(lbl), GTK_JUSTIFY_FILL);
2552 gtk_widget_show(lbl);
2553 gtk_box_pack_start_defaults(GTK_BOX(vbox), lbl);
2555 /* Provide an obvious way out of this heinousness */
2556 btn = gtk_button_new_with_label("Continue with life in\nspite of this oppression");
2557 gtk_signal_connect (GTK_OBJECT (btn), "clicked",
2558 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
2560 gtk_widget_show(btn);
2561 gtk_box_pack_start_defaults(GTK_BOX(vbox), btn);
2563 gtk_container_add(GTK_CONTAINER(window), vbox);
2565 gtk_widget_show(vbox);
2566 gtk_grab_add(window);
2567 gtk_widget_show(window);
2569 g_free (event->dropdataavailable.data);
2570 g_free (event->dropdataavailable.data_type);
2574 dnd_drag_request (GtkWidget *button, GdkEvent *event)
2576 #define DND_STRING "Bill Gates demands royalties for\nyour use of his innovation."
2577 gtk_widget_dnd_data_set (button, event, DND_STRING, strlen(DND_STRING) + 1);
2583 static GtkWidget *window = NULL;
2589 GtkWidget *separator;
2591 /* For clarity... */
2592 char *possible_drag_types[] = {"text/plain"};
2593 char *accepted_drop_types[] = {"text/plain"};
2597 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2599 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2600 GTK_SIGNAL_FUNC(destroy_window),
2602 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2603 GTK_SIGNAL_FUNC(destroy_window),
2606 gtk_window_set_title (GTK_WINDOW (window), "Drag -N- Drop");
2607 gtk_container_border_width (GTK_CONTAINER (window), 0);
2609 box1 = gtk_vbox_new (FALSE, 0);
2610 gtk_container_add (GTK_CONTAINER (window), box1);
2611 gtk_widget_show (box1);
2613 box2 = gtk_hbox_new (FALSE, 5);
2614 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2615 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2616 gtk_widget_show (box2);
2618 frame = gtk_frame_new ("Drag");
2619 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
2620 gtk_widget_show (frame);
2622 box3 = gtk_vbox_new (FALSE, 5);
2623 gtk_container_border_width (GTK_CONTAINER (box3), 5);
2624 gtk_container_add (GTK_CONTAINER (frame), box3);
2625 gtk_widget_show (box3);
2630 button = gtk_button_new_with_label ("Drag me!");
2631 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
2632 gtk_widget_show (button);
2635 * currently, the widget has to be realized to
2636 * set dnd on it, this needs to change
2638 gtk_widget_realize (button);
2639 gtk_signal_connect (GTK_OBJECT (button),
2640 "drag_request_event",
2641 GTK_SIGNAL_FUNC(dnd_drag_request),
2644 gtk_widget_dnd_drag_set (button, TRUE, possible_drag_types, 1);
2647 frame = gtk_frame_new ("Drop");
2648 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
2649 gtk_widget_show (frame);
2651 box3 = gtk_vbox_new (FALSE, 5);
2652 gtk_container_border_width (GTK_CONTAINER (box3), 5);
2653 gtk_container_add (GTK_CONTAINER (frame), box3);
2654 gtk_widget_show (box3);
2660 button = gtk_button_new_with_label ("To");
2661 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
2662 gtk_widget_show (button);
2664 gtk_widget_realize (button);
2665 gtk_signal_connect (GTK_OBJECT (button),
2666 "drop_data_available_event",
2667 GTK_SIGNAL_FUNC(dnd_drop),
2670 gtk_widget_dnd_drop_set (button, TRUE, accepted_drop_types, 1, FALSE);
2673 separator = gtk_hseparator_new ();
2674 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2675 gtk_widget_show (separator);
2678 box2 = gtk_vbox_new (FALSE, 10);
2679 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2680 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2681 gtk_widget_show (box2);
2684 button = gtk_button_new_with_label ("close");
2686 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2687 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2688 GTK_OBJECT (window));
2690 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2691 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2692 gtk_widget_grab_default (button);
2693 gtk_widget_show (button);
2696 if (!GTK_WIDGET_VISIBLE (window))
2697 gtk_widget_show (window);
2699 gtk_widget_destroy (window);
2705 static GdkWindow *root_win = NULL;
2706 static GtkWidget *modeller = NULL;
2707 static GtkWidget *sheets = NULL;
2708 static GtkWidget *rings = NULL;
2710 typedef struct _cursoroffset {gint x,y;} CursorOffset;
2713 shape_pressed (GtkWidget *widget)
2717 p = gtk_object_get_user_data (GTK_OBJECT(widget));
2718 gtk_widget_get_pointer (widget, &(p->x), &(p->y));
2720 gtk_grab_add (widget);
2721 gdk_pointer_grab (widget->window, TRUE,
2722 GDK_BUTTON_RELEASE_MASK |
2723 GDK_BUTTON_MOTION_MASK,
2729 shape_released (GtkWidget *widget)
2731 gtk_grab_remove (widget);
2732 gdk_pointer_ungrab (0);
2736 shape_motion (GtkWidget *widget,
2737 GdkEventMotion *event)
2741 GdkModifierType mask;
2743 p = gtk_object_get_user_data (GTK_OBJECT (widget));
2745 gdk_window_get_pointer (root_win, &xp, &yp, &mask);
2746 gtk_widget_set_uposition (widget, xp - p->x, yp - p->y);
2750 shape_create_icon (char *xpm_file,
2760 CursorOffset* icon_pos;
2762 GdkBitmap *gdk_pixmap_mask;
2763 GdkPixmap *gdk_pixmap;
2766 style = gtk_widget_get_default_style ();
2767 gc = style->black_gc;
2770 * GDK_WINDOW_TOPLEVEL works also, giving you a title border
2772 window = gtk_window_new (window_type);
2774 fixed = gtk_fixed_new ();
2775 gtk_widget_set_usize (fixed, 100,100);
2776 gtk_container_add (GTK_CONTAINER (window), fixed);
2777 gtk_widget_show (fixed);
2779 gdk_pixmap = gdk_pixmap_create_from_xpm (window->window, &gdk_pixmap_mask,
2780 &style->bg[GTK_STATE_NORMAL],
2783 pixmap = gtk_pixmap_new (gdk_pixmap, gdk_pixmap_mask);
2784 gtk_fixed_put (GTK_FIXED (fixed), pixmap, px,py);
2785 gtk_widget_show (pixmap);
2787 gtk_widget_shape_combine_mask (window, gdk_pixmap_mask, px,py);
2789 gtk_widget_set_events (window,
2790 gtk_widget_get_events (window) |
2791 GDK_BUTTON_MOTION_MASK |
2792 GDK_BUTTON_PRESS_MASK);
2794 gtk_signal_connect (GTK_OBJECT (window), "button_press_event",
2795 GTK_SIGNAL_FUNC (shape_pressed),NULL);
2796 gtk_signal_connect (GTK_OBJECT (window), "button_release_event",
2797 GTK_SIGNAL_FUNC (shape_released),NULL);
2798 gtk_signal_connect (GTK_OBJECT (window), "motion_notify_event",
2799 GTK_SIGNAL_FUNC (shape_motion),NULL);
2801 icon_pos = g_new (CursorOffset, 1);
2802 gtk_object_set_user_data(GTK_OBJECT(window), icon_pos);
2804 gtk_widget_set_uposition (window, x, y);
2805 gtk_widget_show (window);
2813 root_win = gdk_window_foreign_new (GDK_ROOT_WINDOW ());
2817 modeller = shape_create_icon ("Modeller.xpm",
2818 440, 140, 0,0, GTK_WINDOW_POPUP);
2820 gtk_signal_connect (GTK_OBJECT (modeller), "destroy",
2821 GTK_SIGNAL_FUNC(destroy_window),
2823 gtk_signal_connect (GTK_OBJECT (modeller), "delete_event",
2824 GTK_SIGNAL_FUNC(destroy_window),
2828 gtk_widget_destroy (modeller);
2832 sheets = shape_create_icon ("FilesQueue.xpm",
2833 580, 170, 0,0, GTK_WINDOW_POPUP);
2835 gtk_signal_connect (GTK_OBJECT (sheets), "destroy",
2836 GTK_SIGNAL_FUNC(destroy_window),
2838 gtk_signal_connect (GTK_OBJECT (sheets), "delete_event",
2839 GTK_SIGNAL_FUNC(destroy_window),
2844 gtk_widget_destroy (sheets);
2848 rings = shape_create_icon ("3DRings.xpm",
2849 460, 270, 25,25, GTK_WINDOW_TOPLEVEL);
2851 gtk_signal_connect (GTK_OBJECT (rings), "destroy",
2852 GTK_SIGNAL_FUNC(destroy_window),
2854 gtk_signal_connect (GTK_OBJECT (rings), "delete_event",
2855 GTK_SIGNAL_FUNC(destroy_window),
2859 gtk_widget_destroy (rings);
2866 static int progress_timer = 0;
2869 progress_timeout (gpointer data)
2873 new_val = GTK_PROGRESS_BAR (data)->percentage;
2878 gtk_progress_bar_update (GTK_PROGRESS_BAR (data), new_val);
2884 destroy_progress (GtkWidget *widget,
2887 destroy_window (widget, window);
2888 gtk_timeout_remove (progress_timer);
2893 create_progress_bar ()
2895 static GtkWidget *window = NULL;
2903 window = gtk_dialog_new ();
2905 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2906 GTK_SIGNAL_FUNC(destroy_progress),
2908 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2909 GTK_SIGNAL_FUNC(destroy_progress),
2912 gtk_window_set_title (GTK_WINDOW (window), "dialog");
2913 gtk_container_border_width (GTK_CONTAINER (window), 0);
2916 vbox = gtk_vbox_new (FALSE, 5);
2917 gtk_container_border_width (GTK_CONTAINER (vbox), 10);
2918 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
2919 vbox, TRUE, TRUE, 0);
2920 gtk_widget_show (vbox);
2922 label = gtk_label_new ("progress...");
2923 gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
2924 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
2925 gtk_widget_show (label);
2927 pbar = gtk_progress_bar_new ();
2928 gtk_widget_set_usize (pbar, 200, 20);
2929 gtk_box_pack_start (GTK_BOX (vbox), pbar, TRUE, TRUE, 0);
2930 gtk_widget_show (pbar);
2932 progress_timer = gtk_timeout_add (100, progress_timeout, pbar);
2934 button = gtk_button_new_with_label ("close");
2935 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2936 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2937 GTK_OBJECT (window));
2938 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2939 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
2940 button, TRUE, TRUE, 0);
2941 gtk_widget_grab_default (button);
2942 gtk_widget_show (button);
2945 if (!GTK_WIDGET_VISIBLE (window))
2946 gtk_widget_show (window);
2948 gtk_widget_destroy (window);
2955 static int color_idle = 0;
2958 color_idle_func (GtkWidget *preview)
2960 static int count = 1;
2964 for (i = 0; i < 256; i++)
2966 for (j = 0, k = 0; j < 256; j++)
2968 buf[k+0] = i + count;
2970 buf[k+2] = j + count;
2974 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
2979 gtk_widget_draw (preview, NULL);
2985 color_preview_destroy (GtkWidget *widget,
2988 gtk_idle_remove (color_idle);
2991 destroy_window (widget, window);
2995 create_color_preview ()
2997 static GtkWidget *window = NULL;
3004 gtk_widget_push_visual (gtk_preview_get_visual ());
3005 gtk_widget_push_colormap (gtk_preview_get_cmap ());
3007 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3009 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3010 GTK_SIGNAL_FUNC(color_preview_destroy),
3012 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3013 GTK_SIGNAL_FUNC(color_preview_destroy),
3016 gtk_window_set_title (GTK_WINDOW (window), "test");
3017 gtk_container_border_width (GTK_CONTAINER (window), 10);
3019 preview = gtk_preview_new (GTK_PREVIEW_COLOR);
3020 gtk_preview_size (GTK_PREVIEW (preview), 256, 256);
3021 gtk_container_add (GTK_CONTAINER (window), preview);
3022 gtk_widget_show (preview);
3024 for (i = 0; i < 256; i++)
3026 for (j = 0, k = 0; j < 256; j++)
3034 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
3037 color_idle = gtk_idle_add ((GtkFunction) color_idle_func, preview);
3039 gtk_widget_pop_colormap ();
3040 gtk_widget_pop_visual ();
3043 if (!GTK_WIDGET_VISIBLE (window))
3044 gtk_widget_show (window);
3046 gtk_widget_destroy (window);
3053 static int gray_idle = 0;
3056 gray_idle_func (GtkWidget *preview)
3058 static int count = 1;
3062 for (i = 0; i < 256; i++)
3064 for (j = 0; j < 256; j++)
3065 buf[j] = i + j + count;
3067 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
3072 gtk_widget_draw (preview, NULL);
3078 gray_preview_destroy (GtkWidget *widget,
3081 gtk_idle_remove (gray_idle);
3084 destroy_window (widget, window);
3088 create_gray_preview ()
3090 static GtkWidget *window = NULL;
3097 gtk_widget_push_visual (gtk_preview_get_visual ());
3098 gtk_widget_push_colormap (gtk_preview_get_cmap ());
3100 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3102 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3103 GTK_SIGNAL_FUNC(gray_preview_destroy),
3105 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3106 GTK_SIGNAL_FUNC(gray_preview_destroy),
3109 gtk_window_set_title (GTK_WINDOW (window), "test");
3110 gtk_container_border_width (GTK_CONTAINER (window), 10);
3112 preview = gtk_preview_new (GTK_PREVIEW_GRAYSCALE);
3113 gtk_preview_size (GTK_PREVIEW (preview), 256, 256);
3114 gtk_container_add (GTK_CONTAINER (window), preview);
3115 gtk_widget_show (preview);
3117 for (i = 0; i < 256; i++)
3119 for (j = 0; j < 256; j++)
3122 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
3125 gray_idle = gtk_idle_add ((GtkFunction) gray_idle_func, preview);
3127 gtk_widget_pop_colormap ();
3128 gtk_widget_pop_visual ();
3131 if (!GTK_WIDGET_VISIBLE (window))
3132 gtk_widget_show (window);
3134 gtk_widget_destroy (window);
3142 selection_test_received (GtkWidget *list, GtkSelectionData *data)
3145 GtkWidget *list_item;
3149 if (data->length < 0)
3151 g_print ("Selection retrieval failed\n");
3154 if (data->type != GDK_SELECTION_TYPE_ATOM)
3156 g_print ("Selection \"TARGETS\" was not returned as atoms!\n");
3160 /* Clear out any current list items */
3162 gtk_list_clear_items (GTK_LIST(list), 0, -1);
3164 /* Add new items to list */
3166 atoms = (GdkAtom *)data->data;
3169 l = data->length / sizeof (GdkAtom);
3170 for (i = 0; i < l; i++)
3173 name = gdk_atom_name (atoms[i]);
3176 list_item = gtk_list_item_new_with_label (name);
3180 list_item = gtk_list_item_new_with_label ("(bad atom)");
3182 gtk_widget_show (list_item);
3183 item_list = g_list_append (item_list, list_item);
3186 gtk_list_append_items (GTK_LIST (list), item_list);
3192 selection_test_get_targets (GtkWidget *widget, GtkWidget *list)
3194 static GdkAtom targets_atom = GDK_NONE;
3196 if (targets_atom == GDK_NONE)
3197 targets_atom = gdk_atom_intern ("TARGETS", FALSE);
3199 gtk_selection_convert (list, GDK_SELECTION_PRIMARY, targets_atom,
3204 create_selection_test ()
3206 static GtkWidget *window = NULL;
3209 GtkWidget *scrolled_win;
3215 window = gtk_dialog_new ();
3217 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3218 GTK_SIGNAL_FUNC(destroy_window),
3220 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3221 GTK_SIGNAL_FUNC(destroy_window),
3224 gtk_window_set_title (GTK_WINDOW (window), "Selection Test");
3225 gtk_container_border_width (GTK_CONTAINER (window), 0);
3227 /* Create the list */
3229 vbox = gtk_vbox_new (FALSE, 5);
3230 gtk_container_border_width (GTK_CONTAINER (vbox), 10);
3231 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox,
3233 gtk_widget_show (vbox);
3235 label = gtk_label_new ("Gets available targets for current selection");
3236 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
3237 gtk_widget_show (label);
3239 scrolled_win = gtk_scrolled_window_new (NULL, NULL);
3240 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
3241 GTK_POLICY_AUTOMATIC,
3242 GTK_POLICY_AUTOMATIC);
3243 gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
3244 gtk_widget_set_usize (scrolled_win, 100, 200);
3245 gtk_widget_show (scrolled_win);
3247 list = gtk_list_new ();
3248 gtk_container_add (GTK_CONTAINER (scrolled_win), list);
3250 gtk_signal_connect (GTK_OBJECT(list), "selection_received",
3251 GTK_SIGNAL_FUNC (selection_test_received), NULL);
3252 gtk_widget_show (list);
3254 /* .. And create some buttons */
3255 button = gtk_button_new_with_label ("Get Targets");
3256 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3257 button, TRUE, TRUE, 0);
3259 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3260 GTK_SIGNAL_FUNC (selection_test_get_targets), list);
3261 gtk_widget_show (button);
3263 button = gtk_button_new_with_label ("Quit");
3264 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3265 button, TRUE, TRUE, 0);
3267 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3268 GTK_SIGNAL_FUNC (gtk_widget_destroy),
3269 GTK_OBJECT (window));
3270 gtk_widget_show (button);
3273 if (!GTK_WIDGET_VISIBLE (window))
3274 gtk_widget_show (window);
3276 gtk_widget_destroy (window);
3284 create_gamma_curve ()
3286 static GtkWidget *window = NULL, *curve;
3287 static int count = 0;
3294 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3295 gtk_window_set_title (GTK_WINDOW (window), "test");
3296 gtk_container_border_width (GTK_CONTAINER (window), 10);
3298 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3299 GTK_SIGNAL_FUNC(destroy_window),
3301 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3302 GTK_SIGNAL_FUNC(destroy_window),
3305 curve = gtk_gamma_curve_new ();
3306 gtk_container_add (GTK_CONTAINER (window), curve);
3307 gtk_widget_show (curve);
3310 max = 127 + (count % 2)*128;
3311 gtk_curve_set_range (GTK_CURVE (GTK_GAMMA_CURVE (curve)->curve),
3313 for (i = 0; i < max; ++i)
3314 vec[i] = (127 / sqrt (max)) * sqrt (i);
3315 gtk_curve_set_vector (GTK_CURVE (GTK_GAMMA_CURVE (curve)->curve),
3318 if (!GTK_WIDGET_VISIBLE (window))
3319 gtk_widget_show (window);
3320 else if (count % 4 == 3)
3322 gtk_widget_destroy (window);
3329 static int scroll_test_pos = 0.0;
3330 static GdkGC *scroll_test_gc = NULL;
3333 scroll_test_expose (GtkWidget *widget, GdkEventExpose *event,
3337 gint imin, imax, jmin, jmax;
3339 imin = (event->area.x) / 10;
3340 imax = (event->area.x + event->area.width + 9) / 10;
3342 jmin = ((int)adj->value + event->area.y) / 10;
3343 jmax = ((int)adj->value + event->area.y + event->area.height + 9) / 10;
3345 gdk_window_clear_area (widget->window,
3346 event->area.x, event->area.y,
3347 event->area.width, event->area.height);
3349 for (i=imin; i<imax; i++)
3350 for (j=jmin; j<jmax; j++)
3352 gdk_draw_rectangle (widget->window,
3353 widget->style->black_gc,
3355 10*i, 10*j - (int)adj->value, 1+i%10, 1+j%10);
3361 scroll_test_configure (GtkWidget *widget, GdkEventConfigure *event,
3364 adj->page_increment = 0.9 * widget->allocation.height;
3365 adj->page_size = widget->allocation.height;
3367 gtk_signal_emit_by_name (GTK_OBJECT (adj), "changed");
3371 scroll_test_adjustment_changed (GtkAdjustment *adj, GtkWidget *widget)
3373 gint source_min = (int)adj->value - scroll_test_pos;
3374 gint source_max = source_min + widget->allocation.height;
3376 gint dest_max = widget->allocation.height;
3380 scroll_test_pos = adj->value;
3382 if (!GTK_WIDGET_DRAWABLE (widget))
3389 rect.width = widget->allocation.width;
3390 rect.height = -source_min;
3391 if (rect.height > widget->allocation.height)
3392 rect.height = widget->allocation.height;
3395 dest_min = rect.height;
3400 rect.y = 2*widget->allocation.height - source_max;
3403 rect.width = widget->allocation.width;
3404 rect.height = widget->allocation.height - rect.y;
3406 source_max = widget->allocation.height;
3410 if (source_min != source_max)
3412 if (scroll_test_gc == NULL)
3414 scroll_test_gc = gdk_gc_new (widget->window);
3415 gdk_gc_set_exposures (scroll_test_gc, TRUE);
3418 gdk_draw_pixmap (widget->window,
3423 widget->allocation.width,
3424 source_max - source_min);
3426 /* Make sure graphics expose events are processed before scrolling
3429 while ((event = gdk_event_get_graphics_expose (widget->window)) != NULL)
3431 gtk_widget_event (widget, event);
3432 if (event->expose.count == 0)
3434 gdk_event_free (event);
3437 gdk_event_free (event);
3442 if (rect.height != 0)
3443 gtk_widget_draw (widget, &rect);
3448 create_scroll_test ()
3450 static GtkWidget *window = NULL;
3452 GtkWidget *drawing_area;
3453 GtkWidget *scrollbar;
3459 window = gtk_dialog_new ();
3461 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3462 GTK_SIGNAL_FUNC(destroy_window),
3464 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3465 GTK_SIGNAL_FUNC(destroy_window),
3468 gtk_window_set_title (GTK_WINDOW (window), "Scroll Test");
3469 gtk_container_border_width (GTK_CONTAINER (window), 0);
3471 hbox = gtk_hbox_new (FALSE, 0);
3472 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), hbox,
3474 gtk_widget_show (hbox);
3476 drawing_area = gtk_drawing_area_new ();
3477 gtk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 200, 200);
3478 gtk_box_pack_start (GTK_BOX (hbox), drawing_area, TRUE, TRUE, 0);
3479 gtk_widget_show (drawing_area);
3481 gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK);
3483 adj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 1000.0, 1.0, 180.0, 200.0));
3484 scroll_test_pos = 0.0;
3486 scrollbar = gtk_vscrollbar_new (adj);
3487 gtk_box_pack_start (GTK_BOX (hbox), scrollbar, FALSE, FALSE, 0);
3488 gtk_widget_show (scrollbar);
3490 gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
3491 GTK_SIGNAL_FUNC (scroll_test_expose), adj);
3492 gtk_signal_connect (GTK_OBJECT (drawing_area), "configure_event",
3493 GTK_SIGNAL_FUNC (scroll_test_configure), adj);
3496 gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
3497 GTK_SIGNAL_FUNC (scroll_test_adjustment_changed),
3500 /* .. And create some buttons */
3502 button = gtk_button_new_with_label ("Quit");
3503 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3504 button, TRUE, TRUE, 0);
3506 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3507 GTK_SIGNAL_FUNC (gtk_widget_destroy),
3508 GTK_OBJECT (window));
3509 gtk_widget_show (button);
3512 if (!GTK_WIDGET_VISIBLE (window))
3513 gtk_widget_show (window);
3515 gtk_widget_destroy (window);
3521 static int timer = 0;
3524 timeout_test (GtkWidget *label)
3526 static int count = 0;
3527 static char buffer[32];
3529 sprintf (buffer, "count: %d", ++count);
3530 gtk_label_set (GTK_LABEL (label), buffer);
3534 start_timeout_test (GtkWidget *widget,
3539 timer = gtk_timeout_add (100, (GtkFunction) timeout_test, label);
3544 stop_timeout_test (GtkWidget *widget,
3549 gtk_timeout_remove (timer);
3555 destroy_timeout_test (GtkWidget *widget,
3558 destroy_window (widget, window);
3559 stop_timeout_test (NULL, NULL);
3563 create_timeout_test ()
3565 static GtkWidget *window = NULL;
3571 window = gtk_dialog_new ();
3573 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3574 GTK_SIGNAL_FUNC(destroy_timeout_test),
3576 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3577 GTK_SIGNAL_FUNC(destroy_timeout_test),
3580 gtk_window_set_title (GTK_WINDOW (window), "Timeout Test");
3581 gtk_container_border_width (GTK_CONTAINER (window), 0);
3583 label = gtk_label_new ("count: 0");
3584 gtk_misc_set_padding (GTK_MISC (label), 10, 10);
3585 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
3586 label, TRUE, TRUE, 0);
3587 gtk_widget_show (label);
3589 button = gtk_button_new_with_label ("close");
3590 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3591 GTK_SIGNAL_FUNC(gtk_widget_destroy),
3592 GTK_OBJECT (window));
3593 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3594 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3595 button, TRUE, TRUE, 0);
3596 gtk_widget_grab_default (button);
3597 gtk_widget_show (button);
3599 button = gtk_button_new_with_label ("start");
3600 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3601 GTK_SIGNAL_FUNC(start_timeout_test),
3603 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3604 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3605 button, TRUE, TRUE, 0);
3606 gtk_widget_show (button);
3608 button = gtk_button_new_with_label ("stop");
3609 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3610 GTK_SIGNAL_FUNC(stop_timeout_test),
3612 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3613 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3614 button, TRUE, TRUE, 0);
3615 gtk_widget_show (button);
3618 if (!GTK_WIDGET_VISIBLE (window))
3619 gtk_widget_show (window);
3621 gtk_widget_destroy (window);
3628 static int idle = 0;
3631 idle_test (GtkWidget *label)
3633 static int count = 0;
3634 static char buffer[32];
3636 sprintf (buffer, "count: %d", ++count);
3637 gtk_label_set (GTK_LABEL (label), buffer);
3643 start_idle_test (GtkWidget *widget,
3648 idle = gtk_idle_add ((GtkFunction) idle_test, label);
3653 stop_idle_test (GtkWidget *widget,
3658 gtk_idle_remove (idle);
3664 destroy_idle_test (GtkWidget *widget,
3667 destroy_window (widget, window);
3668 stop_idle_test (NULL, NULL);
3674 static GtkWidget *window = NULL;
3680 window = gtk_dialog_new ();
3682 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3683 GTK_SIGNAL_FUNC(destroy_idle_test),
3685 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3686 GTK_SIGNAL_FUNC(destroy_idle_test),
3689 gtk_window_set_title (GTK_WINDOW (window), "Idle Test");
3690 gtk_container_border_width (GTK_CONTAINER (window), 0);
3692 label = gtk_label_new ("count: 0");
3693 gtk_misc_set_padding (GTK_MISC (label), 10, 10);
3694 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
3695 label, TRUE, TRUE, 0);
3696 gtk_widget_show (label);
3698 button = gtk_button_new_with_label ("close");
3699 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3700 GTK_SIGNAL_FUNC(gtk_widget_destroy),
3701 GTK_OBJECT (window));
3702 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3703 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3704 button, TRUE, TRUE, 0);
3705 gtk_widget_grab_default (button);
3706 gtk_widget_show (button);
3708 button = gtk_button_new_with_label ("start");
3709 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3710 GTK_SIGNAL_FUNC(start_idle_test),
3712 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3713 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3714 button, TRUE, TRUE, 0);
3715 gtk_widget_show (button);
3717 button = gtk_button_new_with_label ("stop");
3718 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3719 GTK_SIGNAL_FUNC(stop_idle_test),
3721 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3722 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3723 button, TRUE, TRUE, 0);
3724 gtk_widget_show (button);
3727 if (!GTK_WIDGET_VISIBLE (window))
3728 gtk_widget_show (window);
3730 gtk_widget_destroy (window);
3734 test_destroy (GtkWidget *widget,
3737 destroy_window (widget, window);
3747 static GtkWidget *window = NULL;
3751 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3753 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3754 GTK_SIGNAL_FUNC(test_destroy),
3756 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3757 GTK_SIGNAL_FUNC(test_destroy),
3761 gtk_window_set_title (GTK_WINDOW (window), "test");
3762 gtk_container_border_width (GTK_CONTAINER (window), 0);
3765 if (!GTK_WIDGET_VISIBLE (window))
3767 gtk_widget_show (window);
3769 g_print ("create_test: start\n");
3771 g_print ("create_test: done\n");
3774 gtk_widget_destroy (window);
3779 * Main Window and Exit
3788 create_main_window ()
3795 { "buttons", create_buttons },
3796 { "toggle buttons", create_toggle_buttons },
3797 { "check buttons", create_check_buttons },
3798 { "radio buttons", create_radio_buttons },
3799 { "button box", create_button_box },
3800 { "toolbar", create_toolbar },
3801 { "handle box", create_handle_box },
3802 { "reparent", create_reparent },
3803 { "pixmap", create_pixmap },
3804 { "tooltips", create_tooltips },
3805 { "menus", create_menus },
3806 { "scrolled windows", create_scrolled_windows },
3807 { "drawing areas", NULL },
3808 { "entry", create_entry },
3809 { "list", create_list },
3810 { "clist", create_clist},
3811 { "color selection", create_color_selection },
3812 { "file selection", create_file_selection },
3813 { "dialog", create_dialog },
3814 { "miscellaneous", NULL },
3815 { "range controls", create_range_controls },
3816 { "rulers", create_rulers },
3817 { "text", create_text },
3818 { "notebook", create_notebook },
3819 { "panes", create_panes },
3820 { "shapes", create_shapes },
3821 { "dnd", create_dnd },
3822 { "progress bar", create_progress_bar },
3823 { "preview color", create_color_preview },
3824 { "preview gray", create_gray_preview },
3825 { "gamma curve", create_gamma_curve },
3826 { "test scrolling", create_scroll_test },
3827 { "test selection", create_selection_test },
3828 { "test timeout", create_timeout_test },
3829 { "test idle", create_idle_test },
3830 { "test", create_test },
3832 int nbuttons = sizeof (buttons) / sizeof (buttons[0]);
3836 GtkWidget *scrolled_window;
3838 GtkWidget *separator;
3841 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3842 gtk_widget_set_name (window, "main window");
3843 gtk_widget_set_usize (window, 200, 400);
3844 gtk_widget_set_uposition (window, 20, 20);
3846 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3847 GTK_SIGNAL_FUNC(gtk_main_quit),
3849 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3850 GTK_SIGNAL_FUNC(gtk_main_quit),
3853 box1 = gtk_vbox_new (FALSE, 0);
3854 gtk_container_add (GTK_CONTAINER (window), box1);
3855 gtk_widget_show (box1);
3857 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
3858 gtk_container_border_width (GTK_CONTAINER (scrolled_window), 10);
3859 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
3860 GTK_POLICY_AUTOMATIC,
3861 GTK_POLICY_AUTOMATIC);
3862 gtk_box_pack_start (GTK_BOX (box1), scrolled_window, TRUE, TRUE, 0);
3863 gtk_widget_show (scrolled_window);
3865 box2 = gtk_vbox_new (FALSE, 0);
3866 gtk_container_border_width (GTK_CONTAINER (box2), 10);
3867 gtk_container_add (GTK_CONTAINER (scrolled_window), box2);
3868 gtk_widget_show (box2);
3870 for (i = 0; i < nbuttons; i++)
3872 button = gtk_button_new_with_label (buttons[i].label);
3873 if (buttons[i].func)
3874 gtk_signal_connect (GTK_OBJECT (button),
3876 GTK_SIGNAL_FUNC(buttons[i].func),
3879 gtk_widget_set_sensitive (button, FALSE);
3880 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
3881 gtk_widget_show (button);
3884 separator = gtk_hseparator_new ();
3885 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
3886 gtk_widget_show (separator);
3888 box2 = gtk_vbox_new (FALSE, 10);
3889 gtk_container_border_width (GTK_CONTAINER (box2), 10);
3890 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
3891 gtk_widget_show (box2);
3893 button = gtk_button_new_with_label ("close");
3894 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3895 GTK_SIGNAL_FUNC(do_exit), NULL);
3896 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
3897 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3898 gtk_widget_grab_default (button);
3899 gtk_widget_show (button);
3901 gtk_widget_show (window);
3905 main (int argc, char *argv[])
3909 gtk_init (&argc, &argv);
3910 gtk_rc_parse ("testgtkrc");
3912 create_main_window ();