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);
1335 void entry_toggle_editable (GtkWidget *checkbutton,
1338 gtk_entry_set_editable(GTK_ENTRY(entry),
1339 GTK_TOGGLE_BUTTON(checkbutton)->active);
1345 static GtkWidget *window = NULL;
1348 GtkWidget *editable_check;
1351 GtkWidget *separator;
1355 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1357 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1358 GTK_SIGNAL_FUNC(destroy_window),
1360 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1361 GTK_SIGNAL_FUNC(destroy_window),
1364 gtk_window_set_title (GTK_WINDOW (window), "entry");
1365 gtk_container_border_width (GTK_CONTAINER (window), 0);
1368 box1 = gtk_vbox_new (FALSE, 0);
1369 gtk_container_add (GTK_CONTAINER (window), box1);
1370 gtk_widget_show (box1);
1373 box2 = gtk_vbox_new (FALSE, 10);
1374 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1375 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1376 gtk_widget_show (box2);
1378 entry = gtk_entry_new ();
1379 /* gtk_widget_set_usize (entry, 0, 25); */
1380 gtk_entry_set_text (GTK_ENTRY (entry), "hello world");
1381 gtk_entry_select_region (GTK_ENTRY (entry),
1382 0, GTK_ENTRY(entry)->text_length);
1383 gtk_box_pack_start (GTK_BOX (box2), entry, TRUE, TRUE, 0);
1384 gtk_widget_show (entry);
1386 editable_check = gtk_check_button_new_with_label("Editable");
1387 gtk_box_pack_start (GTK_BOX (box2), editable_check, TRUE, TRUE, 0);
1388 gtk_signal_connect (GTK_OBJECT(editable_check), "toggled",
1389 GTK_SIGNAL_FUNC(entry_toggle_editable), entry);
1390 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(editable_check), TRUE);
1391 gtk_widget_show (editable_check);
1393 separator = gtk_hseparator_new ();
1394 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1395 gtk_widget_show (separator);
1398 box2 = gtk_vbox_new (FALSE, 10);
1399 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1400 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1401 gtk_widget_show (box2);
1404 button = gtk_button_new_with_label ("close");
1405 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1406 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1407 GTK_OBJECT (window));
1408 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1409 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1410 gtk_widget_grab_default (button);
1411 gtk_widget_show (button);
1414 if (!GTK_WIDGET_VISIBLE (window))
1415 gtk_widget_show (window);
1417 gtk_widget_destroy (window); */
1424 list_add (GtkWidget *widget,
1429 GtkWidget *list_item;
1431 sprintf (buffer, "added item %d", i++);
1432 list_item = gtk_list_item_new_with_label (buffer);
1433 gtk_widget_show (list_item);
1434 gtk_container_add (GTK_CONTAINER (list), list_item);
1438 list_remove (GtkWidget *widget,
1444 tmp_list = GTK_LIST (list)->selection;
1449 clear_list = g_list_prepend (clear_list, tmp_list->data);
1450 tmp_list = tmp_list->next;
1453 clear_list = g_list_reverse (clear_list);
1455 gtk_list_remove_items (GTK_LIST (list), clear_list);
1457 tmp_list = clear_list;
1461 gtk_widget_destroy (GTK_WIDGET (tmp_list->data));
1462 tmp_list = tmp_list->next;
1465 g_list_free (clear_list);
1471 static GtkWidget *window = NULL;
1472 static char *list_items[] =
1485 static int nlist_items = sizeof (list_items) / sizeof (list_items[0]);
1489 GtkWidget *scrolled_win;
1491 GtkWidget *list_item;
1493 GtkWidget *separator;
1498 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1500 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1501 GTK_SIGNAL_FUNC(destroy_window),
1503 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1504 GTK_SIGNAL_FUNC(destroy_window),
1507 gtk_window_set_title (GTK_WINDOW (window), "list");
1508 gtk_container_border_width (GTK_CONTAINER (window), 0);
1511 box1 = gtk_vbox_new (FALSE, 0);
1512 gtk_container_add (GTK_CONTAINER (window), box1);
1513 gtk_widget_show (box1);
1516 box2 = gtk_vbox_new (FALSE, 10);
1517 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1518 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1519 gtk_widget_show (box2);
1522 scrolled_win = gtk_scrolled_window_new (NULL, NULL);
1523 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
1524 GTK_POLICY_AUTOMATIC,
1525 GTK_POLICY_AUTOMATIC);
1526 gtk_box_pack_start (GTK_BOX (box2), scrolled_win, TRUE, TRUE, 0);
1527 gtk_widget_show (scrolled_win);
1529 list = gtk_list_new ();
1530 gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_MULTIPLE);
1531 gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE);
1532 gtk_container_add (GTK_CONTAINER (scrolled_win), list);
1533 gtk_widget_show (list);
1535 for (i = 0; i < nlist_items; i++)
1537 list_item = gtk_list_item_new_with_label (list_items[i]);
1538 gtk_container_add (GTK_CONTAINER (list), list_item);
1539 gtk_widget_show (list_item);
1542 button = gtk_button_new_with_label ("add");
1543 GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
1544 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1545 GTK_SIGNAL_FUNC(list_add),
1547 gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0);
1548 gtk_widget_show (button);
1550 button = gtk_button_new_with_label ("remove");
1551 GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
1552 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1553 GTK_SIGNAL_FUNC(list_remove),
1555 gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0);
1556 gtk_widget_show (button);
1559 separator = gtk_hseparator_new ();
1560 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1561 gtk_widget_show (separator);
1564 box2 = gtk_vbox_new (FALSE, 10);
1565 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1566 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1567 gtk_widget_show (box2);
1570 button = gtk_button_new_with_label ("close");
1571 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1572 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1573 GTK_OBJECT (window));
1574 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1575 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1576 gtk_widget_grab_default (button);
1577 gtk_widget_show (button);
1580 if (!GTK_WIDGET_VISIBLE (window))
1581 gtk_widget_show (window);
1583 gtk_widget_destroy (window);
1589 #define TESTGTK_CLIST_COLUMNS 7
1590 static gint clist_rows = 0;
1591 static gint clist_selected_row = 0;
1594 add1000_clist (GtkWidget *widget, gpointer data)
1597 char text[TESTGTK_CLIST_COLUMNS][50];
1598 char *texts[TESTGTK_CLIST_COLUMNS];
1600 for (i = 0; i < TESTGTK_CLIST_COLUMNS; i++)
1603 sprintf (text[i], "Column %d", i);
1606 sprintf (text[1], "Right");
1607 sprintf (text[2], "Center");
1609 gtk_clist_freeze (GTK_CLIST (data));
1610 for (i = 0; i < 1000; i++)
1612 sprintf (text[0], "Row %d", clist_rows++);
1613 gtk_clist_append (GTK_CLIST (data), texts);
1615 gtk_clist_thaw (GTK_CLIST (data));
1620 add10000_clist (GtkWidget *widget, gpointer data)
1623 char text[TESTGTK_CLIST_COLUMNS][50];
1624 char *texts[TESTGTK_CLIST_COLUMNS];
1626 for (i = 0; i < TESTGTK_CLIST_COLUMNS; i++)
1629 sprintf (text[i], "Column %d", i);
1632 sprintf (text[1], "Right");
1633 sprintf (text[2], "Center");
1635 gtk_clist_freeze (GTK_CLIST (data));
1636 for (i = 0; i < 10000; i++)
1638 sprintf (text[0], "Row %d", clist_rows++);
1639 gtk_clist_append (GTK_CLIST (data), texts);
1641 gtk_clist_thaw (GTK_CLIST (data));
1646 clear_clist (GtkWidget *widget, gpointer data)
1648 gtk_clist_clear (GTK_CLIST (data));
1653 remove_row_clist (GtkWidget *widget, gpointer data)
1655 gtk_clist_remove (GTK_CLIST (data), clist_selected_row);
1660 select_clist (GtkWidget *widget,
1663 GdkEventButton *bevent)
1668 button = bevent->button;
1670 g_print ("GtkCList Selection: row %d column %d button %d\n",
1671 row, column, button);
1673 clist_selected_row = row;
1680 static GtkWidget *window = NULL;
1682 static char *titles[] =
1693 char text[TESTGTK_CLIST_COLUMNS][50];
1694 char *texts[TESTGTK_CLIST_COLUMNS];
1700 GtkWidget *separator;
1705 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1707 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1708 GTK_SIGNAL_FUNC(destroy_window),
1710 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1711 GTK_SIGNAL_FUNC(destroy_window),
1714 gtk_window_set_title (GTK_WINDOW (window), "clist");
1715 gtk_container_border_width (GTK_CONTAINER (window), 0);
1718 box1 = gtk_vbox_new (FALSE, 0);
1719 gtk_container_add (GTK_CONTAINER (window), box1);
1720 gtk_widget_show (box1);
1723 box2 = gtk_hbox_new (FALSE, 10);
1724 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1725 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0);
1726 gtk_widget_show (box2);
1728 /* create this here so we have a pointer to throw at the
1729 * button callbacks -- more is done with it later */
1730 clist = gtk_clist_new (TESTGTK_CLIST_COLUMNS, titles);
1732 button = gtk_button_new_with_label ("Add 1,000 Rows");
1733 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1735 gtk_signal_connect (GTK_OBJECT (button),
1737 (GtkSignalFunc) add1000_clist,
1740 gtk_widget_show (button);
1743 button = gtk_button_new_with_label ("Add 10,000 Rows");
1744 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1746 gtk_signal_connect (GTK_OBJECT (button),
1748 (GtkSignalFunc) add10000_clist,
1751 gtk_widget_show (button);
1753 button = gtk_button_new_with_label ("Clear List");
1754 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1756 gtk_signal_connect (GTK_OBJECT (button),
1758 (GtkSignalFunc) clear_clist,
1761 gtk_widget_show (button);
1763 button = gtk_button_new_with_label ("Remove Row");
1764 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1766 gtk_signal_connect (GTK_OBJECT (button),
1768 (GtkSignalFunc) remove_row_clist,
1771 gtk_widget_show (button);
1773 box2 = gtk_vbox_new (FALSE, 10);
1774 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1775 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1776 gtk_widget_show (box2);
1780 * the rest of the clist configuration
1782 gtk_clist_set_row_height (GTK_CLIST (clist), 20);
1784 gtk_signal_connect (GTK_OBJECT (clist),
1786 (GtkSignalFunc) select_clist,
1789 gtk_clist_set_column_width (GTK_CLIST (clist), 0, 100);
1791 for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++)
1792 gtk_clist_set_column_width (GTK_CLIST (clist), i, 80);
1794 gtk_clist_set_selection_mode (GTK_CLIST (clist), GTK_SELECTION_BROWSE);
1796 gtk_clist_set_policy (GTK_CLIST (clist), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1798 gtk_clist_set_column_justification (GTK_CLIST (clist), 1, GTK_JUSTIFY_RIGHT);
1799 gtk_clist_set_column_justification (GTK_CLIST (clist), 2, GTK_JUSTIFY_CENTER);
1801 for (i = 0; i < TESTGTK_CLIST_COLUMNS; i++)
1804 sprintf (text[i], "Column %d", i);
1807 sprintf (text[1], "Right");
1808 sprintf (text[2], "Center");
1810 for (i = 0; i < 100; i++)
1812 sprintf (text[0], "Row %d", clist_rows++);
1813 gtk_clist_append (GTK_CLIST (clist), texts);
1816 gtk_container_border_width (GTK_CONTAINER (clist), 5);
1817 gtk_box_pack_start (GTK_BOX (box2), clist, TRUE, TRUE, 0);
1818 gtk_widget_show (clist);
1821 separator = gtk_hseparator_new ();
1822 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1823 gtk_widget_show (separator);
1825 box2 = gtk_vbox_new (FALSE, 10);
1826 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1827 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1828 gtk_widget_show (box2);
1830 button = gtk_button_new_with_label ("close");
1831 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1832 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1833 GTK_OBJECT (window));
1835 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1836 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1837 gtk_widget_grab_default (button);
1839 gtk_widget_show (button);
1842 if (!GTK_WIDGET_VISIBLE (window))
1843 gtk_widget_show (window);
1845 gtk_widget_destroy (window);
1853 color_selection_ok (GtkWidget *w,
1854 GtkColorSelectionDialog *cs)
1856 GtkColorSelection *colorsel;
1859 colorsel=GTK_COLOR_SELECTION(cs->colorsel);
1861 gtk_color_selection_get_color(colorsel,color);
1862 gtk_color_selection_set_color(colorsel,color);
1866 color_selection_changed (GtkWidget *w,
1867 GtkColorSelectionDialog *cs)
1869 GtkColorSelection *colorsel;
1872 colorsel=GTK_COLOR_SELECTION(cs->colorsel);
1873 gtk_color_selection_get_color(colorsel,color);
1877 create_color_selection ()
1879 static GtkWidget *window = NULL;
1883 gtk_preview_set_install_cmap (TRUE);
1884 gtk_widget_push_visual (gtk_preview_get_visual ());
1885 gtk_widget_push_colormap (gtk_preview_get_cmap ());
1887 window = gtk_color_selection_dialog_new ("color selection dialog");
1889 gtk_color_selection_set_opacity (
1890 GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1893 gtk_color_selection_set_update_policy(
1894 GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1895 GTK_UPDATE_CONTINUOUS);
1897 gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
1899 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1900 GTK_SIGNAL_FUNC(destroy_window),
1902 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1903 GTK_SIGNAL_FUNC(destroy_window),
1906 gtk_signal_connect (
1907 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1909 GTK_SIGNAL_FUNC(color_selection_changed),
1912 gtk_signal_connect (
1913 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->ok_button),
1915 GTK_SIGNAL_FUNC(color_selection_ok),
1918 gtk_signal_connect_object (
1919 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->cancel_button),
1921 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1922 GTK_OBJECT (window));
1924 gtk_widget_pop_colormap ();
1925 gtk_widget_pop_visual ();
1928 if (!GTK_WIDGET_VISIBLE (window))
1929 gtk_widget_show (window);
1931 gtk_widget_destroy (window);
1936 file_selection_ok (GtkWidget *w,
1937 GtkFileSelection *fs)
1939 g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
1943 create_file_selection ()
1945 static GtkWidget *window = NULL;
1949 window = gtk_file_selection_new ("file selection dialog");
1950 gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
1952 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1953 GTK_SIGNAL_FUNC(destroy_window),
1955 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1956 GTK_SIGNAL_FUNC(destroy_window),
1959 gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (window)->ok_button),
1960 "clicked", GTK_SIGNAL_FUNC(file_selection_ok),
1962 gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (window)->cancel_button),
1963 "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),
1964 GTK_OBJECT (window));
1967 if (!GTK_WIDGET_VISIBLE (window))
1968 gtk_widget_show (window);
1970 gtk_widget_destroy (window);
1977 static GtkWidget *dialog_window = NULL;
1980 label_toggle (GtkWidget *widget,
1985 *label = gtk_label_new ("Dialog Test");
1986 gtk_misc_set_padding (GTK_MISC (*label), 10, 10);
1987 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->vbox),
1988 *label, TRUE, TRUE, 0);
1989 gtk_widget_show (*label);
1993 gtk_widget_destroy (*label);
2001 static GtkWidget *label;
2006 dialog_window = gtk_dialog_new ();
2008 gtk_signal_connect (GTK_OBJECT (dialog_window), "destroy",
2009 GTK_SIGNAL_FUNC(destroy_window),
2011 gtk_signal_connect (GTK_OBJECT (dialog_window), "delete_event",
2012 GTK_SIGNAL_FUNC(destroy_window),
2015 gtk_window_set_title (GTK_WINDOW (dialog_window), "dialog");
2016 gtk_container_border_width (GTK_CONTAINER (dialog_window), 0);
2018 button = gtk_button_new_with_label ("OK");
2019 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2020 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->action_area),
2021 button, TRUE, TRUE, 0);
2022 gtk_widget_grab_default (button);
2023 gtk_widget_show (button);
2025 button = gtk_button_new_with_label ("Toggle");
2026 gtk_signal_connect (GTK_OBJECT (button), "clicked",
2027 GTK_SIGNAL_FUNC(label_toggle),
2029 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2030 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->action_area),
2031 button, TRUE, TRUE, 0);
2032 gtk_widget_show (button);
2037 if (!GTK_WIDGET_VISIBLE (dialog_window))
2038 gtk_widget_show (dialog_window);
2040 gtk_widget_destroy (dialog_window);
2048 create_range_controls ()
2050 static GtkWidget *window = NULL;
2054 GtkWidget *scrollbar;
2056 GtkWidget *separator;
2057 GtkObject *adjustment;
2061 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2063 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2064 GTK_SIGNAL_FUNC(destroy_window),
2066 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2067 GTK_SIGNAL_FUNC(destroy_window),
2070 gtk_window_set_title (GTK_WINDOW (window), "range controls");
2071 gtk_container_border_width (GTK_CONTAINER (window), 0);
2074 box1 = gtk_vbox_new (FALSE, 0);
2075 gtk_container_add (GTK_CONTAINER (window), box1);
2076 gtk_widget_show (box1);
2079 box2 = gtk_vbox_new (FALSE, 10);
2080 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2081 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2082 gtk_widget_show (box2);
2085 adjustment = gtk_adjustment_new (0.0, 0.0, 101.0, 0.1, 1.0, 1.0);
2087 scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
2088 gtk_widget_set_usize (GTK_WIDGET (scale), 150, 30);
2089 gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
2090 gtk_scale_set_digits (GTK_SCALE (scale), 1);
2091 gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
2092 gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
2093 gtk_widget_show (scale);
2095 scrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (adjustment));
2096 gtk_range_set_update_policy (GTK_RANGE (scrollbar),
2097 GTK_UPDATE_CONTINUOUS);
2098 gtk_box_pack_start (GTK_BOX (box2), scrollbar, TRUE, TRUE, 0);
2099 gtk_widget_show (scrollbar);
2102 separator = gtk_hseparator_new ();
2103 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2104 gtk_widget_show (separator);
2107 box2 = gtk_vbox_new (FALSE, 10);
2108 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2109 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2110 gtk_widget_show (box2);
2113 button = gtk_button_new_with_label ("close");
2114 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2115 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2116 GTK_OBJECT (window));
2117 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2118 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2119 gtk_widget_grab_default (button);
2120 gtk_widget_show (button);
2123 if (!GTK_WIDGET_VISIBLE (window))
2124 gtk_widget_show (window);
2126 gtk_widget_destroy (window);
2136 static GtkWidget *window = NULL;
2142 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2144 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2145 GTK_SIGNAL_FUNC(destroy_window),
2147 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2148 GTK_SIGNAL_FUNC(destroy_window),
2151 gtk_window_set_title (GTK_WINDOW (window), "rulers");
2152 gtk_widget_set_usize (window, 300, 300);
2153 gtk_widget_set_events (window,
2154 GDK_POINTER_MOTION_MASK
2155 | GDK_POINTER_MOTION_HINT_MASK);
2156 gtk_container_border_width (GTK_CONTAINER (window), 0);
2158 table = gtk_table_new (2, 2, FALSE);
2159 gtk_container_add (GTK_CONTAINER (window), table);
2160 gtk_widget_show (table);
2162 ruler = gtk_hruler_new ();
2163 gtk_ruler_set_range (GTK_RULER (ruler), 5, 15, 0, 20);
2165 gtk_signal_connect_object (
2166 GTK_OBJECT (window),
2167 "motion_notify_event",
2169 GTK_WIDGET_CLASS (GTK_OBJECT (ruler)->klass)->motion_notify_event),
2170 GTK_OBJECT (ruler));
2172 gtk_table_attach (GTK_TABLE (table), ruler, 1, 2, 0, 1,
2173 GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
2174 gtk_widget_show (ruler);
2177 ruler = gtk_vruler_new ();
2178 gtk_ruler_set_range (GTK_RULER (ruler), 5, 15, 0, 20);
2180 gtk_signal_connect_object (
2181 GTK_OBJECT (window),
2182 "motion_notify_event",
2183 GTK_SIGNAL_FUNC (GTK_WIDGET_CLASS (GTK_OBJECT (ruler)->klass)->motion_notify_event),
2184 GTK_OBJECT (ruler));
2186 gtk_table_attach (GTK_TABLE (table), ruler, 0, 1, 1, 2,
2187 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2188 gtk_widget_show (ruler);
2191 if (!GTK_WIDGET_VISIBLE (window))
2192 gtk_widget_show (window);
2194 gtk_widget_destroy (window);
2204 static GtkWidget *window = NULL;
2208 GtkWidget *separator;
2210 GtkWidget *hscrollbar;
2211 GtkWidget *vscrollbar;
2216 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2217 gtk_widget_set_name (window, "text window");
2219 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2220 GTK_SIGNAL_FUNC(destroy_window),
2222 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2223 GTK_SIGNAL_FUNC(destroy_window),
2226 gtk_window_set_title (GTK_WINDOW (window), "test");
2227 gtk_container_border_width (GTK_CONTAINER (window), 0);
2230 box1 = gtk_vbox_new (FALSE, 0);
2231 gtk_container_add (GTK_CONTAINER (window), box1);
2232 gtk_widget_show (box1);
2235 box2 = gtk_vbox_new (FALSE, 10);
2236 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2237 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2238 gtk_widget_show (box2);
2241 table = gtk_table_new (2, 2, FALSE);
2242 gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2);
2243 gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
2244 gtk_box_pack_start (GTK_BOX (box2), table, TRUE, TRUE, 0);
2245 gtk_widget_show (table);
2247 text = gtk_text_new (NULL, NULL);
2248 gtk_table_attach_defaults (GTK_TABLE (table), text, 0, 1, 0, 1);
2249 gtk_widget_show (text);
2251 hscrollbar = gtk_hscrollbar_new (GTK_TEXT (text)->hadj);
2252 gtk_table_attach (GTK_TABLE (table), hscrollbar, 0, 1, 1, 2,
2253 GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
2254 gtk_widget_show (hscrollbar);
2256 vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
2257 gtk_table_attach (GTK_TABLE (table), vscrollbar, 1, 2, 0, 1,
2258 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2259 gtk_widget_show (vscrollbar);
2261 gtk_text_freeze (GTK_TEXT (text));
2263 gtk_widget_realize (text);
2265 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2266 "spencer blah blah blah\n", -1);
2267 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
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,
2282 "girlfriend\n", -1);
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,
2293 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2295 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2297 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2299 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2301 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2303 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2305 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
2308 gtk_text_thaw (GTK_TEXT (text));
2310 separator = gtk_hseparator_new ();
2311 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2312 gtk_widget_show (separator);
2315 box2 = gtk_vbox_new (FALSE, 10);
2316 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2317 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2318 gtk_widget_show (box2);
2321 button = gtk_button_new_with_label ("close");
2322 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2323 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2324 GTK_OBJECT (window));
2325 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2326 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2327 gtk_widget_grab_default (button);
2328 gtk_widget_show (button);
2331 if (!GTK_WIDGET_VISIBLE (window))
2332 gtk_widget_show (window);
2334 gtk_widget_destroy (window);
2342 rotate_notebook (GtkButton *button,
2343 GtkNotebook *notebook)
2345 gtk_notebook_set_tab_pos (notebook, (notebook->tab_pos + 1) % 4);
2351 static GtkWidget *window = NULL;
2355 GtkWidget *separator;
2356 GtkWidget *notebook;
2364 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2366 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2367 GTK_SIGNAL_FUNC(destroy_window),
2369 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2370 GTK_SIGNAL_FUNC(destroy_window),
2373 gtk_window_set_title (GTK_WINDOW (window), "notebook");
2374 gtk_container_border_width (GTK_CONTAINER (window), 0);
2377 box1 = gtk_vbox_new (FALSE, 0);
2378 gtk_container_add (GTK_CONTAINER (window), box1);
2379 gtk_widget_show (box1);
2382 box2 = gtk_vbox_new (FALSE, 10);
2383 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2384 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2385 gtk_widget_show (box2);
2388 notebook = gtk_notebook_new ();
2389 gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);
2390 gtk_box_pack_start (GTK_BOX (box2), notebook, TRUE, TRUE, 0);
2391 gtk_widget_show (notebook);
2394 for (i = 0; i < 5; i++)
2396 sprintf (buffer, "Page %d", i+1);
2398 frame = gtk_frame_new (buffer);
2399 gtk_container_border_width (GTK_CONTAINER (frame), 10);
2400 gtk_widget_set_usize (frame, 200, 150);
2401 gtk_widget_show (frame);
2403 label = gtk_label_new (buffer);
2404 gtk_container_add (GTK_CONTAINER (frame), label);
2405 gtk_widget_show (label);
2407 label = gtk_label_new (buffer);
2408 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
2412 separator = gtk_hseparator_new ();
2413 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2414 gtk_widget_show (separator);
2417 box2 = gtk_hbox_new (FALSE, 10);
2418 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2419 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2420 gtk_widget_show (box2);
2423 button = gtk_button_new_with_label ("close");
2424 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2425 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2426 GTK_OBJECT (window));
2427 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2428 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2429 gtk_widget_grab_default (button);
2430 gtk_widget_show (button);
2432 button = gtk_button_new_with_label ("next");
2433 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2434 GTK_SIGNAL_FUNC(gtk_notebook_next_page),
2435 GTK_OBJECT (notebook));
2436 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2437 gtk_widget_show (button);
2439 button = gtk_button_new_with_label ("prev");
2440 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2441 GTK_SIGNAL_FUNC(gtk_notebook_prev_page),
2442 GTK_OBJECT (notebook));
2443 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2444 gtk_widget_show (button);
2446 button = gtk_button_new_with_label ("rotate");
2447 gtk_signal_connect (GTK_OBJECT (button), "clicked",
2448 GTK_SIGNAL_FUNC(rotate_notebook),
2450 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2451 gtk_widget_show (button);
2454 if (!GTK_WIDGET_VISIBLE (window))
2455 gtk_widget_show (window);
2457 gtk_widget_destroy (window);
2467 static GtkWidget *window = NULL;
2474 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2476 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2477 GTK_SIGNAL_FUNC(destroy_window),
2479 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2480 GTK_SIGNAL_FUNC(destroy_window),
2483 gtk_window_set_title (GTK_WINDOW (window), "Panes");
2484 gtk_container_border_width (GTK_CONTAINER (window), 0);
2486 vpaned = gtk_vpaned_new ();
2487 gtk_container_add (GTK_CONTAINER (window), vpaned);
2488 gtk_container_border_width (GTK_CONTAINER(vpaned), 5);
2489 gtk_widget_show (vpaned);
2491 hpaned = gtk_hpaned_new ();
2492 gtk_paned_add1 (GTK_PANED (vpaned), 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, 60);
2497 gtk_paned_add1 (GTK_PANED (hpaned), frame);
2498 gtk_widget_show (frame);
2500 frame = gtk_frame_new (NULL);
2501 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
2502 gtk_widget_set_usize (frame, 80, 60);
2503 gtk_paned_add2 (GTK_PANED (hpaned), frame);
2504 gtk_widget_show (frame);
2506 gtk_widget_show (hpaned);
2508 frame = gtk_frame_new (NULL);
2509 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
2510 gtk_widget_set_usize (frame, 60, 80);
2511 gtk_paned_add2 (GTK_PANED (vpaned), frame);
2512 gtk_widget_show (frame);
2515 if (!GTK_WIDGET_VISIBLE (window))
2516 gtk_widget_show (window);
2518 gtk_widget_destroy (window);
2527 dnd_drop_destroy_popup (GtkWidget *widget, GtkWindow **window)
2529 if(GTK_IS_BUTTON(widget)) /* I.e. they clicked the close button */
2530 gtk_widget_destroy(GTK_WIDGET(*window));
2532 gtk_grab_remove(GTK_WIDGET(*window));
2539 dnd_drop (GtkWidget *button, GdkEvent *event)
2541 static GtkWidget *window = NULL;
2542 GtkWidget *vbox, *lbl, *btn;
2545 window = gtk_window_new(GTK_WINDOW_DIALOG);
2546 gtk_container_border_width (GTK_CONTAINER(window), 10);
2548 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2549 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
2551 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2552 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
2555 vbox = gtk_vbox_new(FALSE, 5);
2557 /* Display message that we got from drop source */
2558 msg = g_malloc(strlen(event->dropdataavailable.data)
2559 + strlen(event->dropdataavailable.data_type) + 100);
2560 sprintf(msg, "Drop data of type %s was:\n\n%s",
2561 event->dropdataavailable.data_type,
2562 (char *)event->dropdataavailable.data);
2563 lbl = gtk_label_new(msg);
2564 gtk_label_set_justify(GTK_LABEL(lbl), GTK_JUSTIFY_FILL);
2566 gtk_widget_show(lbl);
2567 gtk_box_pack_start_defaults(GTK_BOX(vbox), lbl);
2569 /* Provide an obvious way out of this heinousness */
2570 btn = gtk_button_new_with_label("Continue with life in\nspite of this oppression");
2571 gtk_signal_connect (GTK_OBJECT (btn), "clicked",
2572 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
2574 gtk_widget_show(btn);
2575 gtk_box_pack_start_defaults(GTK_BOX(vbox), btn);
2577 gtk_container_add(GTK_CONTAINER(window), vbox);
2579 gtk_widget_show(vbox);
2580 gtk_grab_add(window);
2581 gtk_widget_show(window);
2583 g_free (event->dropdataavailable.data);
2584 g_free (event->dropdataavailable.data_type);
2588 dnd_drag_request (GtkWidget *button, GdkEvent *event)
2590 #define DND_STRING "Bill Gates demands royalties for\nyour use of his innovation."
2591 gtk_widget_dnd_data_set (button, event, DND_STRING, strlen(DND_STRING) + 1);
2597 static GtkWidget *window = NULL;
2603 GtkWidget *separator;
2605 /* For clarity... */
2606 char *possible_drag_types[] = {"text/plain"};
2607 char *accepted_drop_types[] = {"text/plain"};
2611 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2613 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2614 GTK_SIGNAL_FUNC(destroy_window),
2616 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2617 GTK_SIGNAL_FUNC(destroy_window),
2620 gtk_window_set_title (GTK_WINDOW (window), "Drag -N- Drop");
2621 gtk_container_border_width (GTK_CONTAINER (window), 0);
2623 box1 = gtk_vbox_new (FALSE, 0);
2624 gtk_container_add (GTK_CONTAINER (window), box1);
2625 gtk_widget_show (box1);
2627 box2 = gtk_hbox_new (FALSE, 5);
2628 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2629 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2630 gtk_widget_show (box2);
2632 frame = gtk_frame_new ("Drag");
2633 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
2634 gtk_widget_show (frame);
2636 box3 = gtk_vbox_new (FALSE, 5);
2637 gtk_container_border_width (GTK_CONTAINER (box3), 5);
2638 gtk_container_add (GTK_CONTAINER (frame), box3);
2639 gtk_widget_show (box3);
2644 button = gtk_button_new_with_label ("Drag me!");
2645 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
2646 gtk_widget_show (button);
2649 * currently, the widget has to be realized to
2650 * set dnd on it, this needs to change
2652 gtk_widget_realize (button);
2653 gtk_signal_connect (GTK_OBJECT (button),
2654 "drag_request_event",
2655 GTK_SIGNAL_FUNC(dnd_drag_request),
2658 gtk_widget_dnd_drag_set (button, TRUE, possible_drag_types, 1);
2661 frame = gtk_frame_new ("Drop");
2662 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
2663 gtk_widget_show (frame);
2665 box3 = gtk_vbox_new (FALSE, 5);
2666 gtk_container_border_width (GTK_CONTAINER (box3), 5);
2667 gtk_container_add (GTK_CONTAINER (frame), box3);
2668 gtk_widget_show (box3);
2674 button = gtk_button_new_with_label ("To");
2675 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
2676 gtk_widget_show (button);
2678 gtk_widget_realize (button);
2679 gtk_signal_connect (GTK_OBJECT (button),
2680 "drop_data_available_event",
2681 GTK_SIGNAL_FUNC(dnd_drop),
2684 gtk_widget_dnd_drop_set (button, TRUE, accepted_drop_types, 1, FALSE);
2687 separator = gtk_hseparator_new ();
2688 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2689 gtk_widget_show (separator);
2692 box2 = gtk_vbox_new (FALSE, 10);
2693 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2694 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2695 gtk_widget_show (box2);
2698 button = gtk_button_new_with_label ("close");
2700 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2701 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2702 GTK_OBJECT (window));
2704 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2705 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2706 gtk_widget_grab_default (button);
2707 gtk_widget_show (button);
2710 if (!GTK_WIDGET_VISIBLE (window))
2711 gtk_widget_show (window);
2713 gtk_widget_destroy (window);
2719 static GdkWindow *root_win = NULL;
2720 static GtkWidget *modeller = NULL;
2721 static GtkWidget *sheets = NULL;
2722 static GtkWidget *rings = NULL;
2724 typedef struct _cursoroffset {gint x,y;} CursorOffset;
2727 shape_pressed (GtkWidget *widget)
2731 p = gtk_object_get_user_data (GTK_OBJECT(widget));
2732 gtk_widget_get_pointer (widget, &(p->x), &(p->y));
2734 gtk_grab_add (widget);
2735 gdk_pointer_grab (widget->window, TRUE,
2736 GDK_BUTTON_RELEASE_MASK |
2737 GDK_BUTTON_MOTION_MASK,
2743 shape_released (GtkWidget *widget)
2745 gtk_grab_remove (widget);
2746 gdk_pointer_ungrab (0);
2750 shape_motion (GtkWidget *widget,
2751 GdkEventMotion *event)
2755 GdkModifierType mask;
2757 p = gtk_object_get_user_data (GTK_OBJECT (widget));
2759 gdk_window_get_pointer (root_win, &xp, &yp, &mask);
2760 gtk_widget_set_uposition (widget, xp - p->x, yp - p->y);
2764 shape_create_icon (char *xpm_file,
2774 CursorOffset* icon_pos;
2776 GdkBitmap *gdk_pixmap_mask;
2777 GdkPixmap *gdk_pixmap;
2780 style = gtk_widget_get_default_style ();
2781 gc = style->black_gc;
2784 * GDK_WINDOW_TOPLEVEL works also, giving you a title border
2786 window = gtk_window_new (window_type);
2788 fixed = gtk_fixed_new ();
2789 gtk_widget_set_usize (fixed, 100,100);
2790 gtk_container_add (GTK_CONTAINER (window), fixed);
2791 gtk_widget_show (fixed);
2793 gdk_pixmap = gdk_pixmap_create_from_xpm (window->window, &gdk_pixmap_mask,
2794 &style->bg[GTK_STATE_NORMAL],
2797 pixmap = gtk_pixmap_new (gdk_pixmap, gdk_pixmap_mask);
2798 gtk_fixed_put (GTK_FIXED (fixed), pixmap, px,py);
2799 gtk_widget_show (pixmap);
2801 gtk_widget_shape_combine_mask (window, gdk_pixmap_mask, px,py);
2803 gtk_widget_set_events (window,
2804 gtk_widget_get_events (window) |
2805 GDK_BUTTON_MOTION_MASK |
2806 GDK_BUTTON_PRESS_MASK);
2808 gtk_signal_connect (GTK_OBJECT (window), "button_press_event",
2809 GTK_SIGNAL_FUNC (shape_pressed),NULL);
2810 gtk_signal_connect (GTK_OBJECT (window), "button_release_event",
2811 GTK_SIGNAL_FUNC (shape_released),NULL);
2812 gtk_signal_connect (GTK_OBJECT (window), "motion_notify_event",
2813 GTK_SIGNAL_FUNC (shape_motion),NULL);
2815 icon_pos = g_new (CursorOffset, 1);
2816 gtk_object_set_user_data(GTK_OBJECT(window), icon_pos);
2818 gtk_widget_set_uposition (window, x, y);
2819 gtk_widget_show (window);
2827 root_win = gdk_window_foreign_new (GDK_ROOT_WINDOW ());
2831 modeller = shape_create_icon ("Modeller.xpm",
2832 440, 140, 0,0, GTK_WINDOW_POPUP);
2834 gtk_signal_connect (GTK_OBJECT (modeller), "destroy",
2835 GTK_SIGNAL_FUNC(destroy_window),
2837 gtk_signal_connect (GTK_OBJECT (modeller), "delete_event",
2838 GTK_SIGNAL_FUNC(destroy_window),
2842 gtk_widget_destroy (modeller);
2846 sheets = shape_create_icon ("FilesQueue.xpm",
2847 580, 170, 0,0, GTK_WINDOW_POPUP);
2849 gtk_signal_connect (GTK_OBJECT (sheets), "destroy",
2850 GTK_SIGNAL_FUNC(destroy_window),
2852 gtk_signal_connect (GTK_OBJECT (sheets), "delete_event",
2853 GTK_SIGNAL_FUNC(destroy_window),
2858 gtk_widget_destroy (sheets);
2862 rings = shape_create_icon ("3DRings.xpm",
2863 460, 270, 25,25, GTK_WINDOW_TOPLEVEL);
2865 gtk_signal_connect (GTK_OBJECT (rings), "destroy",
2866 GTK_SIGNAL_FUNC(destroy_window),
2868 gtk_signal_connect (GTK_OBJECT (rings), "delete_event",
2869 GTK_SIGNAL_FUNC(destroy_window),
2873 gtk_widget_destroy (rings);
2880 static int progress_timer = 0;
2883 progress_timeout (gpointer data)
2887 new_val = GTK_PROGRESS_BAR (data)->percentage;
2892 gtk_progress_bar_update (GTK_PROGRESS_BAR (data), new_val);
2898 destroy_progress (GtkWidget *widget,
2901 destroy_window (widget, window);
2902 gtk_timeout_remove (progress_timer);
2907 create_progress_bar ()
2909 static GtkWidget *window = NULL;
2917 window = gtk_dialog_new ();
2919 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2920 GTK_SIGNAL_FUNC(destroy_progress),
2922 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2923 GTK_SIGNAL_FUNC(destroy_progress),
2926 gtk_window_set_title (GTK_WINDOW (window), "dialog");
2927 gtk_container_border_width (GTK_CONTAINER (window), 0);
2930 vbox = gtk_vbox_new (FALSE, 5);
2931 gtk_container_border_width (GTK_CONTAINER (vbox), 10);
2932 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
2933 vbox, TRUE, TRUE, 0);
2934 gtk_widget_show (vbox);
2936 label = gtk_label_new ("progress...");
2937 gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
2938 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
2939 gtk_widget_show (label);
2941 pbar = gtk_progress_bar_new ();
2942 gtk_widget_set_usize (pbar, 200, 20);
2943 gtk_box_pack_start (GTK_BOX (vbox), pbar, TRUE, TRUE, 0);
2944 gtk_widget_show (pbar);
2946 progress_timer = gtk_timeout_add (100, progress_timeout, pbar);
2948 button = gtk_button_new_with_label ("close");
2949 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2950 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2951 GTK_OBJECT (window));
2952 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2953 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
2954 button, TRUE, TRUE, 0);
2955 gtk_widget_grab_default (button);
2956 gtk_widget_show (button);
2959 if (!GTK_WIDGET_VISIBLE (window))
2960 gtk_widget_show (window);
2962 gtk_widget_destroy (window);
2969 static int color_idle = 0;
2972 color_idle_func (GtkWidget *preview)
2974 static int count = 1;
2978 for (i = 0; i < 256; i++)
2980 for (j = 0, k = 0; j < 256; j++)
2982 buf[k+0] = i + count;
2984 buf[k+2] = j + count;
2988 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
2993 gtk_widget_draw (preview, NULL);
2999 color_preview_destroy (GtkWidget *widget,
3002 gtk_idle_remove (color_idle);
3005 destroy_window (widget, window);
3009 create_color_preview ()
3011 static GtkWidget *window = NULL;
3018 gtk_widget_push_visual (gtk_preview_get_visual ());
3019 gtk_widget_push_colormap (gtk_preview_get_cmap ());
3021 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3023 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3024 GTK_SIGNAL_FUNC(color_preview_destroy),
3026 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3027 GTK_SIGNAL_FUNC(color_preview_destroy),
3030 gtk_window_set_title (GTK_WINDOW (window), "test");
3031 gtk_container_border_width (GTK_CONTAINER (window), 10);
3033 preview = gtk_preview_new (GTK_PREVIEW_COLOR);
3034 gtk_preview_size (GTK_PREVIEW (preview), 256, 256);
3035 gtk_container_add (GTK_CONTAINER (window), preview);
3036 gtk_widget_show (preview);
3038 for (i = 0; i < 256; i++)
3040 for (j = 0, k = 0; j < 256; j++)
3048 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
3051 color_idle = gtk_idle_add ((GtkFunction) color_idle_func, preview);
3053 gtk_widget_pop_colormap ();
3054 gtk_widget_pop_visual ();
3057 if (!GTK_WIDGET_VISIBLE (window))
3058 gtk_widget_show (window);
3060 gtk_widget_destroy (window);
3067 static int gray_idle = 0;
3070 gray_idle_func (GtkWidget *preview)
3072 static int count = 1;
3076 for (i = 0; i < 256; i++)
3078 for (j = 0; j < 256; j++)
3079 buf[j] = i + j + count;
3081 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
3086 gtk_widget_draw (preview, NULL);
3092 gray_preview_destroy (GtkWidget *widget,
3095 gtk_idle_remove (gray_idle);
3098 destroy_window (widget, window);
3102 create_gray_preview ()
3104 static GtkWidget *window = NULL;
3111 gtk_widget_push_visual (gtk_preview_get_visual ());
3112 gtk_widget_push_colormap (gtk_preview_get_cmap ());
3114 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3116 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3117 GTK_SIGNAL_FUNC(gray_preview_destroy),
3119 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3120 GTK_SIGNAL_FUNC(gray_preview_destroy),
3123 gtk_window_set_title (GTK_WINDOW (window), "test");
3124 gtk_container_border_width (GTK_CONTAINER (window), 10);
3126 preview = gtk_preview_new (GTK_PREVIEW_GRAYSCALE);
3127 gtk_preview_size (GTK_PREVIEW (preview), 256, 256);
3128 gtk_container_add (GTK_CONTAINER (window), preview);
3129 gtk_widget_show (preview);
3131 for (i = 0; i < 256; i++)
3133 for (j = 0; j < 256; j++)
3136 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
3139 gray_idle = gtk_idle_add ((GtkFunction) gray_idle_func, preview);
3141 gtk_widget_pop_colormap ();
3142 gtk_widget_pop_visual ();
3145 if (!GTK_WIDGET_VISIBLE (window))
3146 gtk_widget_show (window);
3148 gtk_widget_destroy (window);
3156 selection_test_received (GtkWidget *list, GtkSelectionData *data)
3159 GtkWidget *list_item;
3163 if (data->length < 0)
3165 g_print ("Selection retrieval failed\n");
3168 if (data->type != GDK_SELECTION_TYPE_ATOM)
3170 g_print ("Selection \"TARGETS\" was not returned as atoms!\n");
3174 /* Clear out any current list items */
3176 gtk_list_clear_items (GTK_LIST(list), 0, -1);
3178 /* Add new items to list */
3180 atoms = (GdkAtom *)data->data;
3183 l = data->length / sizeof (GdkAtom);
3184 for (i = 0; i < l; i++)
3187 name = gdk_atom_name (atoms[i]);
3190 list_item = gtk_list_item_new_with_label (name);
3194 list_item = gtk_list_item_new_with_label ("(bad atom)");
3196 gtk_widget_show (list_item);
3197 item_list = g_list_append (item_list, list_item);
3200 gtk_list_append_items (GTK_LIST (list), item_list);
3206 selection_test_get_targets (GtkWidget *widget, GtkWidget *list)
3208 static GdkAtom targets_atom = GDK_NONE;
3210 if (targets_atom == GDK_NONE)
3211 targets_atom = gdk_atom_intern ("TARGETS", FALSE);
3213 gtk_selection_convert (list, GDK_SELECTION_PRIMARY, targets_atom,
3218 create_selection_test ()
3220 static GtkWidget *window = NULL;
3223 GtkWidget *scrolled_win;
3229 window = gtk_dialog_new ();
3231 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3232 GTK_SIGNAL_FUNC(destroy_window),
3234 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3235 GTK_SIGNAL_FUNC(destroy_window),
3238 gtk_window_set_title (GTK_WINDOW (window), "Selection Test");
3239 gtk_container_border_width (GTK_CONTAINER (window), 0);
3241 /* Create the list */
3243 vbox = gtk_vbox_new (FALSE, 5);
3244 gtk_container_border_width (GTK_CONTAINER (vbox), 10);
3245 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox,
3247 gtk_widget_show (vbox);
3249 label = gtk_label_new ("Gets available targets for current selection");
3250 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
3251 gtk_widget_show (label);
3253 scrolled_win = gtk_scrolled_window_new (NULL, NULL);
3254 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
3255 GTK_POLICY_AUTOMATIC,
3256 GTK_POLICY_AUTOMATIC);
3257 gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
3258 gtk_widget_set_usize (scrolled_win, 100, 200);
3259 gtk_widget_show (scrolled_win);
3261 list = gtk_list_new ();
3262 gtk_container_add (GTK_CONTAINER (scrolled_win), list);
3264 gtk_signal_connect (GTK_OBJECT(list), "selection_received",
3265 GTK_SIGNAL_FUNC (selection_test_received), NULL);
3266 gtk_widget_show (list);
3268 /* .. And create some buttons */
3269 button = gtk_button_new_with_label ("Get Targets");
3270 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3271 button, TRUE, TRUE, 0);
3273 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3274 GTK_SIGNAL_FUNC (selection_test_get_targets), list);
3275 gtk_widget_show (button);
3277 button = gtk_button_new_with_label ("Quit");
3278 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3279 button, TRUE, TRUE, 0);
3281 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3282 GTK_SIGNAL_FUNC (gtk_widget_destroy),
3283 GTK_OBJECT (window));
3284 gtk_widget_show (button);
3287 if (!GTK_WIDGET_VISIBLE (window))
3288 gtk_widget_show (window);
3290 gtk_widget_destroy (window);
3298 create_gamma_curve ()
3300 static GtkWidget *window = NULL, *curve;
3301 static int count = 0;
3308 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3309 gtk_window_set_title (GTK_WINDOW (window), "test");
3310 gtk_container_border_width (GTK_CONTAINER (window), 10);
3312 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3313 GTK_SIGNAL_FUNC(destroy_window),
3315 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3316 GTK_SIGNAL_FUNC(destroy_window),
3319 curve = gtk_gamma_curve_new ();
3320 gtk_container_add (GTK_CONTAINER (window), curve);
3321 gtk_widget_show (curve);
3324 max = 127 + (count % 2)*128;
3325 gtk_curve_set_range (GTK_CURVE (GTK_GAMMA_CURVE (curve)->curve),
3327 for (i = 0; i < max; ++i)
3328 vec[i] = (127 / sqrt (max)) * sqrt (i);
3329 gtk_curve_set_vector (GTK_CURVE (GTK_GAMMA_CURVE (curve)->curve),
3332 if (!GTK_WIDGET_VISIBLE (window))
3333 gtk_widget_show (window);
3334 else if (count % 4 == 3)
3336 gtk_widget_destroy (window);
3343 static int scroll_test_pos = 0.0;
3344 static GdkGC *scroll_test_gc = NULL;
3347 scroll_test_expose (GtkWidget *widget, GdkEventExpose *event,
3351 gint imin, imax, jmin, jmax;
3353 imin = (event->area.x) / 10;
3354 imax = (event->area.x + event->area.width + 9) / 10;
3356 jmin = ((int)adj->value + event->area.y) / 10;
3357 jmax = ((int)adj->value + event->area.y + event->area.height + 9) / 10;
3359 gdk_window_clear_area (widget->window,
3360 event->area.x, event->area.y,
3361 event->area.width, event->area.height);
3363 for (i=imin; i<imax; i++)
3364 for (j=jmin; j<jmax; j++)
3366 gdk_draw_rectangle (widget->window,
3367 widget->style->black_gc,
3369 10*i, 10*j - (int)adj->value, 1+i%10, 1+j%10);
3375 scroll_test_configure (GtkWidget *widget, GdkEventConfigure *event,
3378 adj->page_increment = 0.9 * widget->allocation.height;
3379 adj->page_size = widget->allocation.height;
3381 gtk_signal_emit_by_name (GTK_OBJECT (adj), "changed");
3385 scroll_test_adjustment_changed (GtkAdjustment *adj, GtkWidget *widget)
3387 gint source_min = (int)adj->value - scroll_test_pos;
3388 gint source_max = source_min + widget->allocation.height;
3390 gint dest_max = widget->allocation.height;
3394 scroll_test_pos = adj->value;
3396 if (!GTK_WIDGET_DRAWABLE (widget))
3403 rect.width = widget->allocation.width;
3404 rect.height = -source_min;
3405 if (rect.height > widget->allocation.height)
3406 rect.height = widget->allocation.height;
3409 dest_min = rect.height;
3414 rect.y = 2*widget->allocation.height - source_max;
3417 rect.width = widget->allocation.width;
3418 rect.height = widget->allocation.height - rect.y;
3420 source_max = widget->allocation.height;
3424 if (source_min != source_max)
3426 if (scroll_test_gc == NULL)
3428 scroll_test_gc = gdk_gc_new (widget->window);
3429 gdk_gc_set_exposures (scroll_test_gc, TRUE);
3432 gdk_draw_pixmap (widget->window,
3437 widget->allocation.width,
3438 source_max - source_min);
3440 /* Make sure graphics expose events are processed before scrolling
3443 while ((event = gdk_event_get_graphics_expose (widget->window)) != NULL)
3445 gtk_widget_event (widget, event);
3446 if (event->expose.count == 0)
3448 gdk_event_free (event);
3451 gdk_event_free (event);
3456 if (rect.height != 0)
3457 gtk_widget_draw (widget, &rect);
3462 create_scroll_test ()
3464 static GtkWidget *window = NULL;
3466 GtkWidget *drawing_area;
3467 GtkWidget *scrollbar;
3473 window = gtk_dialog_new ();
3475 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3476 GTK_SIGNAL_FUNC(destroy_window),
3478 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3479 GTK_SIGNAL_FUNC(destroy_window),
3482 gtk_window_set_title (GTK_WINDOW (window), "Scroll Test");
3483 gtk_container_border_width (GTK_CONTAINER (window), 0);
3485 hbox = gtk_hbox_new (FALSE, 0);
3486 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), hbox,
3488 gtk_widget_show (hbox);
3490 drawing_area = gtk_drawing_area_new ();
3491 gtk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 200, 200);
3492 gtk_box_pack_start (GTK_BOX (hbox), drawing_area, TRUE, TRUE, 0);
3493 gtk_widget_show (drawing_area);
3495 gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK);
3497 adj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 1000.0, 1.0, 180.0, 200.0));
3498 scroll_test_pos = 0.0;
3500 scrollbar = gtk_vscrollbar_new (adj);
3501 gtk_box_pack_start (GTK_BOX (hbox), scrollbar, FALSE, FALSE, 0);
3502 gtk_widget_show (scrollbar);
3504 gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
3505 GTK_SIGNAL_FUNC (scroll_test_expose), adj);
3506 gtk_signal_connect (GTK_OBJECT (drawing_area), "configure_event",
3507 GTK_SIGNAL_FUNC (scroll_test_configure), adj);
3510 gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
3511 GTK_SIGNAL_FUNC (scroll_test_adjustment_changed),
3514 /* .. And create some buttons */
3516 button = gtk_button_new_with_label ("Quit");
3517 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3518 button, TRUE, TRUE, 0);
3520 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3521 GTK_SIGNAL_FUNC (gtk_widget_destroy),
3522 GTK_OBJECT (window));
3523 gtk_widget_show (button);
3526 if (!GTK_WIDGET_VISIBLE (window))
3527 gtk_widget_show (window);
3529 gtk_widget_destroy (window);
3535 static int timer = 0;
3538 timeout_test (GtkWidget *label)
3540 static int count = 0;
3541 static char buffer[32];
3543 sprintf (buffer, "count: %d", ++count);
3544 gtk_label_set (GTK_LABEL (label), buffer);
3548 start_timeout_test (GtkWidget *widget,
3553 timer = gtk_timeout_add (100, (GtkFunction) timeout_test, label);
3558 stop_timeout_test (GtkWidget *widget,
3563 gtk_timeout_remove (timer);
3569 destroy_timeout_test (GtkWidget *widget,
3572 destroy_window (widget, window);
3573 stop_timeout_test (NULL, NULL);
3577 create_timeout_test ()
3579 static GtkWidget *window = NULL;
3585 window = gtk_dialog_new ();
3587 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3588 GTK_SIGNAL_FUNC(destroy_timeout_test),
3590 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3591 GTK_SIGNAL_FUNC(destroy_timeout_test),
3594 gtk_window_set_title (GTK_WINDOW (window), "Timeout Test");
3595 gtk_container_border_width (GTK_CONTAINER (window), 0);
3597 label = gtk_label_new ("count: 0");
3598 gtk_misc_set_padding (GTK_MISC (label), 10, 10);
3599 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
3600 label, TRUE, TRUE, 0);
3601 gtk_widget_show (label);
3603 button = gtk_button_new_with_label ("close");
3604 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3605 GTK_SIGNAL_FUNC(gtk_widget_destroy),
3606 GTK_OBJECT (window));
3607 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3608 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3609 button, TRUE, TRUE, 0);
3610 gtk_widget_grab_default (button);
3611 gtk_widget_show (button);
3613 button = gtk_button_new_with_label ("start");
3614 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3615 GTK_SIGNAL_FUNC(start_timeout_test),
3617 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3618 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3619 button, TRUE, TRUE, 0);
3620 gtk_widget_show (button);
3622 button = gtk_button_new_with_label ("stop");
3623 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3624 GTK_SIGNAL_FUNC(stop_timeout_test),
3626 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3627 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3628 button, TRUE, TRUE, 0);
3629 gtk_widget_show (button);
3632 if (!GTK_WIDGET_VISIBLE (window))
3633 gtk_widget_show (window);
3635 gtk_widget_destroy (window);
3642 static int idle = 0;
3645 idle_test (GtkWidget *label)
3647 static int count = 0;
3648 static char buffer[32];
3650 sprintf (buffer, "count: %d", ++count);
3651 gtk_label_set (GTK_LABEL (label), buffer);
3657 start_idle_test (GtkWidget *widget,
3662 idle = gtk_idle_add ((GtkFunction) idle_test, label);
3667 stop_idle_test (GtkWidget *widget,
3672 gtk_idle_remove (idle);
3678 destroy_idle_test (GtkWidget *widget,
3681 destroy_window (widget, window);
3682 stop_idle_test (NULL, NULL);
3688 static GtkWidget *window = NULL;
3694 window = gtk_dialog_new ();
3696 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3697 GTK_SIGNAL_FUNC(destroy_idle_test),
3699 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3700 GTK_SIGNAL_FUNC(destroy_idle_test),
3703 gtk_window_set_title (GTK_WINDOW (window), "Idle Test");
3704 gtk_container_border_width (GTK_CONTAINER (window), 0);
3706 label = gtk_label_new ("count: 0");
3707 gtk_misc_set_padding (GTK_MISC (label), 10, 10);
3708 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
3709 label, TRUE, TRUE, 0);
3710 gtk_widget_show (label);
3712 button = gtk_button_new_with_label ("close");
3713 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3714 GTK_SIGNAL_FUNC(gtk_widget_destroy),
3715 GTK_OBJECT (window));
3716 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3717 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3718 button, TRUE, TRUE, 0);
3719 gtk_widget_grab_default (button);
3720 gtk_widget_show (button);
3722 button = gtk_button_new_with_label ("start");
3723 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3724 GTK_SIGNAL_FUNC(start_idle_test),
3726 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3727 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3728 button, TRUE, TRUE, 0);
3729 gtk_widget_show (button);
3731 button = gtk_button_new_with_label ("stop");
3732 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3733 GTK_SIGNAL_FUNC(stop_idle_test),
3735 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3736 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3737 button, TRUE, TRUE, 0);
3738 gtk_widget_show (button);
3741 if (!GTK_WIDGET_VISIBLE (window))
3742 gtk_widget_show (window);
3744 gtk_widget_destroy (window);
3748 test_destroy (GtkWidget *widget,
3751 destroy_window (widget, window);
3761 static GtkWidget *window = NULL;
3765 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3767 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3768 GTK_SIGNAL_FUNC(test_destroy),
3770 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3771 GTK_SIGNAL_FUNC(test_destroy),
3775 gtk_window_set_title (GTK_WINDOW (window), "test");
3776 gtk_container_border_width (GTK_CONTAINER (window), 0);
3779 if (!GTK_WIDGET_VISIBLE (window))
3781 gtk_widget_show (window);
3783 g_print ("create_test: start\n");
3785 g_print ("create_test: done\n");
3788 gtk_widget_destroy (window);
3793 * Main Window and Exit
3802 create_main_window ()
3809 { "buttons", create_buttons },
3810 { "toggle buttons", create_toggle_buttons },
3811 { "check buttons", create_check_buttons },
3812 { "radio buttons", create_radio_buttons },
3813 { "button box", create_button_box },
3814 { "toolbar", create_toolbar },
3815 { "handle box", create_handle_box },
3816 { "reparent", create_reparent },
3817 { "pixmap", create_pixmap },
3818 { "tooltips", create_tooltips },
3819 { "menus", create_menus },
3820 { "scrolled windows", create_scrolled_windows },
3821 { "drawing areas", NULL },
3822 { "entry", create_entry },
3823 { "list", create_list },
3824 { "clist", create_clist},
3825 { "color selection", create_color_selection },
3826 { "file selection", create_file_selection },
3827 { "dialog", create_dialog },
3828 { "miscellaneous", NULL },
3829 { "range controls", create_range_controls },
3830 { "rulers", create_rulers },
3831 { "text", create_text },
3832 { "notebook", create_notebook },
3833 { "panes", create_panes },
3834 { "shapes", create_shapes },
3835 { "dnd", create_dnd },
3836 { "progress bar", create_progress_bar },
3837 { "preview color", create_color_preview },
3838 { "preview gray", create_gray_preview },
3839 { "gamma curve", create_gamma_curve },
3840 { "test scrolling", create_scroll_test },
3841 { "test selection", create_selection_test },
3842 { "test timeout", create_timeout_test },
3843 { "test idle", create_idle_test },
3844 { "test", create_test },
3846 int nbuttons = sizeof (buttons) / sizeof (buttons[0]);
3850 GtkWidget *scrolled_window;
3852 GtkWidget *separator;
3855 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3856 gtk_widget_set_name (window, "main window");
3857 gtk_widget_set_usize (window, 200, 400);
3858 gtk_widget_set_uposition (window, 20, 20);
3860 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3861 GTK_SIGNAL_FUNC(gtk_main_quit),
3863 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3864 GTK_SIGNAL_FUNC(gtk_main_quit),
3867 box1 = gtk_vbox_new (FALSE, 0);
3868 gtk_container_add (GTK_CONTAINER (window), box1);
3869 gtk_widget_show (box1);
3871 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
3872 gtk_container_border_width (GTK_CONTAINER (scrolled_window), 10);
3873 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
3874 GTK_POLICY_AUTOMATIC,
3875 GTK_POLICY_AUTOMATIC);
3876 gtk_box_pack_start (GTK_BOX (box1), scrolled_window, TRUE, TRUE, 0);
3877 gtk_widget_show (scrolled_window);
3879 box2 = gtk_vbox_new (FALSE, 0);
3880 gtk_container_border_width (GTK_CONTAINER (box2), 10);
3881 gtk_container_add (GTK_CONTAINER (scrolled_window), box2);
3882 gtk_widget_show (box2);
3884 for (i = 0; i < nbuttons; i++)
3886 button = gtk_button_new_with_label (buttons[i].label);
3887 if (buttons[i].func)
3888 gtk_signal_connect (GTK_OBJECT (button),
3890 GTK_SIGNAL_FUNC(buttons[i].func),
3893 gtk_widget_set_sensitive (button, FALSE);
3894 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
3895 gtk_widget_show (button);
3898 separator = gtk_hseparator_new ();
3899 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
3900 gtk_widget_show (separator);
3902 box2 = gtk_vbox_new (FALSE, 10);
3903 gtk_container_border_width (GTK_CONTAINER (box2), 10);
3904 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
3905 gtk_widget_show (box2);
3907 button = gtk_button_new_with_label ("close");
3908 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3909 GTK_SIGNAL_FUNC(do_exit), NULL);
3910 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
3911 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3912 gtk_widget_grab_default (button);
3913 gtk_widget_show (button);
3915 gtk_widget_show (window);
3919 main (int argc, char *argv[])
3923 gtk_init (&argc, &argv);
3924 gtk_rc_parse ("testgtkrc");
3926 create_main_window ();