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"
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);
553 reparent_label (GtkWidget *widget,
554 GtkWidget *new_parent)
558 label = gtk_object_get_user_data (GTK_OBJECT (widget));
560 gtk_widget_reparent (label, new_parent);
566 static GtkWidget *window = NULL;
573 GtkWidget *separator;
577 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
579 gtk_signal_connect (GTK_OBJECT (window), "destroy",
580 GTK_SIGNAL_FUNC(destroy_window),
582 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
583 GTK_SIGNAL_FUNC(destroy_window),
586 gtk_window_set_title (GTK_WINDOW (window), "buttons");
587 gtk_container_border_width (GTK_CONTAINER (window), 0);
590 box1 = gtk_vbox_new (FALSE, 0);
591 gtk_container_add (GTK_CONTAINER (window), box1);
592 gtk_widget_show (box1);
595 box2 = gtk_hbox_new (FALSE, 5);
596 gtk_container_border_width (GTK_CONTAINER (box2), 10);
597 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
598 gtk_widget_show (box2);
601 label = gtk_label_new ("Hello World");
603 frame = gtk_frame_new ("Frame 1");
604 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
605 gtk_widget_show (frame);
607 box3 = gtk_vbox_new (FALSE, 5);
608 gtk_container_border_width (GTK_CONTAINER (box3), 5);
609 gtk_container_add (GTK_CONTAINER (frame), box3);
610 gtk_widget_show (box3);
612 button = gtk_button_new_with_label ("switch");
613 gtk_signal_connect (GTK_OBJECT (button), "clicked",
614 GTK_SIGNAL_FUNC(reparent_label),
616 gtk_object_set_user_data (GTK_OBJECT (button), label);
617 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
618 gtk_widget_show (button);
620 gtk_box_pack_start (GTK_BOX (box3), label, FALSE, TRUE, 0);
621 gtk_widget_show (label);
624 frame = gtk_frame_new ("Frame 2");
625 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
626 gtk_widget_show (frame);
628 box3 = gtk_vbox_new (FALSE, 5);
629 gtk_container_border_width (GTK_CONTAINER (box3), 5);
630 gtk_container_add (GTK_CONTAINER (frame), box3);
631 gtk_widget_show (box3);
633 button = gtk_button_new_with_label ("switch");
634 gtk_signal_connect (GTK_OBJECT (button), "clicked",
635 GTK_SIGNAL_FUNC(reparent_label),
637 gtk_object_set_user_data (GTK_OBJECT (button), label);
638 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
639 gtk_widget_show (button);
642 separator = gtk_hseparator_new ();
643 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
644 gtk_widget_show (separator);
647 box2 = gtk_vbox_new (FALSE, 10);
648 gtk_container_border_width (GTK_CONTAINER (box2), 10);
649 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
650 gtk_widget_show (box2);
653 button = gtk_button_new_with_label ("close");
654 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
655 GTK_SIGNAL_FUNC(gtk_widget_destroy),
656 GTK_OBJECT (window));
657 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
658 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
659 gtk_widget_grab_default (button);
660 gtk_widget_show (button);
663 if (!GTK_WIDGET_VISIBLE (window))
664 gtk_widget_show (window);
666 gtk_widget_destroy (window);
672 static GtkWidget *window = NULL;
678 GtkWidget *separator;
679 GtkWidget *pixmapwid;
686 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
688 gtk_signal_connect (GTK_OBJECT (window), "destroy",
689 GTK_SIGNAL_FUNC(destroy_window),
691 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
692 GTK_SIGNAL_FUNC(destroy_window),
695 gtk_window_set_title (GTK_WINDOW (window), "pixmap");
696 gtk_container_border_width (GTK_CONTAINER (window), 0);
697 gtk_widget_realize(window);
699 box1 = gtk_vbox_new (FALSE, 0);
700 gtk_container_add (GTK_CONTAINER (window), box1);
701 gtk_widget_show (box1);
703 box2 = gtk_vbox_new (FALSE, 10);
704 gtk_container_border_width (GTK_CONTAINER (box2), 10);
705 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
706 gtk_widget_show (box2);
708 button = gtk_button_new ();
709 gtk_box_pack_start (GTK_BOX (box2), button, FALSE, FALSE, 0);
710 gtk_widget_show (button);
712 style=gtk_widget_get_style(button);
714 pixmap = gdk_pixmap_create_from_xpm (window->window, &mask,
715 &style->bg[GTK_STATE_NORMAL],
717 pixmapwid = gtk_pixmap_new (pixmap, mask);
719 label = gtk_label_new ("Pixmap\ntest");
720 box3 = gtk_hbox_new (FALSE, 0);
721 gtk_container_border_width (GTK_CONTAINER (box3), 2);
722 gtk_container_add (GTK_CONTAINER (box3), pixmapwid);
723 gtk_container_add (GTK_CONTAINER (box3), label);
724 gtk_container_add (GTK_CONTAINER (button), box3);
725 gtk_widget_show (pixmapwid);
726 gtk_widget_show (label);
727 gtk_widget_show (box3);
729 separator = gtk_hseparator_new ();
730 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
731 gtk_widget_show (separator);
734 box2 = gtk_vbox_new (FALSE, 10);
735 gtk_container_border_width (GTK_CONTAINER (box2), 10);
736 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
737 gtk_widget_show (box2);
740 button = gtk_button_new_with_label ("close");
741 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
742 GTK_SIGNAL_FUNC(gtk_widget_destroy),
743 GTK_OBJECT (window));
744 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
745 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
746 gtk_widget_grab_default (button);
747 gtk_widget_show (button);
750 if (!GTK_WIDGET_VISIBLE (window))
751 gtk_widget_show (window);
753 gtk_widget_destroy (window);
759 static GtkWidget *window = NULL;
763 GtkWidget *separator;
764 GtkTooltips *tooltips;
768 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
770 gtk_signal_connect (GTK_OBJECT (window), "destroy",
771 GTK_SIGNAL_FUNC(destroy_window),
773 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
774 GTK_SIGNAL_FUNC(destroy_window),
777 gtk_window_set_title (GTK_WINDOW (window), "tooltips");
778 gtk_container_border_width (GTK_CONTAINER (window), 0);
780 tooltips=gtk_tooltips_new();
782 box1 = gtk_vbox_new (FALSE, 0);
783 gtk_container_add (GTK_CONTAINER (window), box1);
784 gtk_widget_show (box1);
787 box2 = gtk_vbox_new (FALSE, 10);
788 gtk_container_border_width (GTK_CONTAINER (box2), 10);
789 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
790 gtk_widget_show (box2);
793 button = gtk_toggle_button_new_with_label ("button1");
794 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
795 gtk_widget_show (button);
797 gtk_tooltips_set_tips(tooltips,button,"This is button 1");
799 button = gtk_toggle_button_new_with_label ("button2");
800 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
801 gtk_widget_show (button);
803 gtk_tooltips_set_tips(tooltips,button,"This is button 2");
805 button = gtk_toggle_button_new_with_label ("button3");
806 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
807 gtk_widget_show (button);
809 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.");
811 separator = gtk_hseparator_new ();
812 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
813 gtk_widget_show (separator);
816 box2 = gtk_vbox_new (FALSE, 10);
817 gtk_container_border_width (GTK_CONTAINER (box2), 10);
818 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
819 gtk_widget_show (box2);
822 button = gtk_button_new_with_label ("close");
823 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
824 GTK_SIGNAL_FUNC(gtk_widget_destroy),
825 GTK_OBJECT (window));
826 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
827 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
828 gtk_widget_grab_default (button);
829 gtk_widget_show (button);
831 gtk_tooltips_set_tips (tooltips, button, "Push this button to close window");
834 if (!GTK_WIDGET_VISIBLE (window))
835 gtk_widget_show (window);
837 gtk_widget_destroy (window);
841 create_menu (int depth)
853 menu = gtk_menu_new ();
857 for (i = 0, j = 1; i < 5; i++, j++)
859 sprintf (buf, "item %2d - %d", depth, j);
860 menuitem = gtk_radio_menu_item_new_with_label (group, buf);
861 group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
863 gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menuitem), TRUE);
864 gtk_menu_append (GTK_MENU (menu), menuitem);
865 gtk_widget_show (menuitem);
870 submenu = create_menu (depth - 1);
871 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
881 static GtkWidget *window = NULL;
888 GtkWidget *optionmenu;
889 GtkWidget *separator;
893 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
895 gtk_signal_connect (GTK_OBJECT (window), "destroy",
896 GTK_SIGNAL_FUNC(destroy_window),
898 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
899 GTK_SIGNAL_FUNC(destroy_window),
902 gtk_window_set_title (GTK_WINDOW (window), "menus");
903 gtk_container_border_width (GTK_CONTAINER (window), 0);
906 box1 = gtk_vbox_new (FALSE, 0);
907 gtk_container_add (GTK_CONTAINER (window), box1);
908 gtk_widget_show (box1);
911 menubar = gtk_menu_bar_new ();
912 gtk_box_pack_start (GTK_BOX (box1), menubar, FALSE, TRUE, 0);
913 gtk_widget_show (menubar);
915 menu = create_menu (2);
917 menuitem = gtk_menu_item_new_with_label ("test\nline2");
918 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
919 gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
920 gtk_widget_show (menuitem);
922 menuitem = gtk_menu_item_new_with_label ("foo");
923 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
924 gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
925 gtk_widget_show (menuitem);
927 menuitem = gtk_menu_item_new_with_label ("bar");
928 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
929 gtk_menu_item_right_justify (GTK_MENU_ITEM (menuitem));
930 gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
931 gtk_widget_show (menuitem);
934 box2 = gtk_vbox_new (FALSE, 10);
935 gtk_container_border_width (GTK_CONTAINER (box2), 10);
936 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
937 gtk_widget_show (box2);
940 optionmenu = gtk_option_menu_new ();
941 gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), create_menu (1));
942 gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 4);
943 gtk_box_pack_start (GTK_BOX (box2), optionmenu, TRUE, TRUE, 0);
944 gtk_widget_show (optionmenu);
947 separator = gtk_hseparator_new ();
948 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
949 gtk_widget_show (separator);
952 box2 = gtk_vbox_new (FALSE, 10);
953 gtk_container_border_width (GTK_CONTAINER (box2), 10);
954 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
955 gtk_widget_show (box2);
958 button = gtk_button_new_with_label ("close");
959 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
960 GTK_SIGNAL_FUNC(gtk_widget_destroy),
961 GTK_OBJECT (window));
962 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
963 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
964 gtk_widget_grab_default (button);
965 gtk_widget_show (button);
968 if (!GTK_WIDGET_VISIBLE (window))
969 gtk_widget_show (window);
971 gtk_widget_destroy (window);
975 create_scrolled_windows ()
977 static GtkWidget *window;
978 GtkWidget *scrolled_window;
986 window = gtk_dialog_new ();
988 gtk_signal_connect (GTK_OBJECT (window), "destroy",
989 GTK_SIGNAL_FUNC(destroy_window),
991 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
992 GTK_SIGNAL_FUNC(destroy_window),
995 gtk_window_set_title (GTK_WINDOW (window), "dialog");
996 gtk_container_border_width (GTK_CONTAINER (window), 0);
999 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1000 gtk_container_border_width (GTK_CONTAINER (scrolled_window), 10);
1001 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1002 GTK_POLICY_AUTOMATIC,
1003 GTK_POLICY_AUTOMATIC);
1004 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
1005 scrolled_window, TRUE, TRUE, 0);
1006 gtk_widget_show (scrolled_window);
1008 table = gtk_table_new (20, 20, FALSE);
1009 gtk_table_set_row_spacings (GTK_TABLE (table), 10);
1010 gtk_table_set_col_spacings (GTK_TABLE (table), 10);
1011 gtk_container_add (GTK_CONTAINER (scrolled_window), table);
1012 gtk_widget_show (table);
1014 for (i = 0; i < 20; i++)
1015 for (j = 0; j < 20; j++)
1017 sprintf (buffer, "button (%d,%d)\n", i, j);
1018 button = gtk_toggle_button_new_with_label (buffer);
1019 gtk_table_attach_defaults (GTK_TABLE (table), button,
1021 gtk_widget_show (button);
1025 button = gtk_button_new_with_label ("close");
1026 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1027 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1028 GTK_OBJECT (window));
1029 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1030 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
1031 button, TRUE, TRUE, 0);
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;
1050 GtkWidget *separator;
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), "entry");
1064 gtk_container_border_width (GTK_CONTAINER (window), 0);
1067 box1 = gtk_vbox_new (FALSE, 0);
1068 gtk_container_add (GTK_CONTAINER (window), box1);
1069 gtk_widget_show (box1);
1072 box2 = gtk_vbox_new (FALSE, 10);
1073 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1074 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1075 gtk_widget_show (box2);
1078 entry = gtk_entry_new ();
1079 /* gtk_widget_set_usize (entry, 0, 25); */
1080 gtk_entry_set_text (GTK_ENTRY (entry), "hello world");
1081 gtk_box_pack_start (GTK_BOX (box2), entry, TRUE, TRUE, 0);
1082 gtk_widget_show (entry);
1085 separator = gtk_hseparator_new ();
1086 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1087 gtk_widget_show (separator);
1090 box2 = gtk_vbox_new (FALSE, 10);
1091 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1092 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1093 gtk_widget_show (box2);
1096 button = gtk_button_new_with_label ("close");
1097 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1098 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1099 GTK_OBJECT (window));
1100 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1101 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1102 gtk_widget_grab_default (button);
1103 gtk_widget_show (button);
1106 if (!GTK_WIDGET_VISIBLE (window))
1107 gtk_widget_show (window);
1109 gtk_widget_destroy (window); */
1113 list_add (GtkWidget *widget,
1118 GtkWidget *list_item;
1120 sprintf (buffer, "added item %d", i++);
1121 list_item = gtk_list_item_new_with_label (buffer);
1122 gtk_widget_show (list_item);
1123 gtk_container_add (GTK_CONTAINER (list), list_item);
1127 list_remove (GtkWidget *widget,
1133 tmp_list = GTK_LIST (list)->selection;
1138 clear_list = g_list_prepend (clear_list, tmp_list->data);
1139 tmp_list = tmp_list->next;
1142 clear_list = g_list_reverse (clear_list);
1144 gtk_list_remove_items (GTK_LIST (list), clear_list);
1146 tmp_list = clear_list;
1150 gtk_widget_destroy (GTK_WIDGET (tmp_list->data));
1151 tmp_list = tmp_list->next;
1154 g_list_free (clear_list);
1160 static GtkWidget *window = NULL;
1161 static char *list_items[] =
1174 static int nlist_items = sizeof (list_items) / sizeof (list_items[0]);
1178 GtkWidget *scrolled_win;
1180 GtkWidget *list_item;
1182 GtkWidget *separator;
1187 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1189 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1190 GTK_SIGNAL_FUNC(destroy_window),
1192 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1193 GTK_SIGNAL_FUNC(destroy_window),
1196 gtk_window_set_title (GTK_WINDOW (window), "list");
1197 gtk_container_border_width (GTK_CONTAINER (window), 0);
1200 box1 = gtk_vbox_new (FALSE, 0);
1201 gtk_container_add (GTK_CONTAINER (window), box1);
1202 gtk_widget_show (box1);
1205 box2 = gtk_vbox_new (FALSE, 10);
1206 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1207 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1208 gtk_widget_show (box2);
1211 scrolled_win = gtk_scrolled_window_new (NULL, NULL);
1212 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
1213 GTK_POLICY_AUTOMATIC,
1214 GTK_POLICY_AUTOMATIC);
1215 gtk_box_pack_start (GTK_BOX (box2), scrolled_win, TRUE, TRUE, 0);
1216 gtk_widget_show (scrolled_win);
1218 list = gtk_list_new ();
1219 gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_MULTIPLE);
1220 gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE);
1221 gtk_container_add (GTK_CONTAINER (scrolled_win), list);
1222 gtk_widget_show (list);
1224 for (i = 0; i < nlist_items; i++)
1226 list_item = gtk_list_item_new_with_label (list_items[i]);
1227 gtk_container_add (GTK_CONTAINER (list), list_item);
1228 gtk_widget_show (list_item);
1231 button = gtk_button_new_with_label ("add");
1232 GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
1233 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1234 GTK_SIGNAL_FUNC(list_add),
1236 gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0);
1237 gtk_widget_show (button);
1239 button = gtk_button_new_with_label ("remove");
1240 GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
1241 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1242 GTK_SIGNAL_FUNC(list_remove),
1244 gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0);
1245 gtk_widget_show (button);
1248 separator = gtk_hseparator_new ();
1249 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1250 gtk_widget_show (separator);
1253 box2 = gtk_vbox_new (FALSE, 10);
1254 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1255 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1256 gtk_widget_show (box2);
1259 button = gtk_button_new_with_label ("close");
1260 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1261 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1262 GTK_OBJECT (window));
1263 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1264 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1265 gtk_widget_grab_default (button);
1266 gtk_widget_show (button);
1269 if (!GTK_WIDGET_VISIBLE (window))
1270 gtk_widget_show (window);
1272 gtk_widget_destroy (window);
1276 color_selection_ok (GtkWidget *w,
1277 GtkColorSelectionDialog *cs)
1279 GtkColorSelection *colorsel;
1282 colorsel=GTK_COLOR_SELECTION(cs->colorsel);
1284 gtk_color_selection_get_color(colorsel,color);
1285 gtk_color_selection_set_color(colorsel,color);
1289 color_selection_changed (GtkWidget *w,
1290 GtkColorSelectionDialog *cs)
1292 GtkColorSelection *colorsel;
1295 colorsel=GTK_COLOR_SELECTION(cs->colorsel);
1296 gtk_color_selection_get_color(colorsel,color);
1300 create_color_selection ()
1302 static GtkWidget *window = NULL;
1306 gtk_preview_set_install_cmap (TRUE);
1307 gtk_widget_push_visual (gtk_preview_get_visual ());
1308 gtk_widget_push_colormap (gtk_preview_get_cmap ());
1310 window = gtk_color_selection_dialog_new ("color selection dialog");
1312 gtk_color_selection_set_opacity (
1313 GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1316 gtk_color_selection_set_update_policy(
1317 GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1318 GTK_UPDATE_CONTINUOUS);
1320 gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
1322 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1323 GTK_SIGNAL_FUNC(destroy_window),
1325 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1326 GTK_SIGNAL_FUNC(destroy_window),
1329 gtk_signal_connect (
1330 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
1332 GTK_SIGNAL_FUNC(color_selection_changed),
1335 gtk_signal_connect (
1336 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->ok_button),
1338 GTK_SIGNAL_FUNC(color_selection_ok),
1341 gtk_signal_connect_object (
1342 GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->cancel_button),
1344 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1345 GTK_OBJECT (window));
1347 gtk_widget_pop_colormap ();
1348 gtk_widget_pop_visual ();
1351 if (!GTK_WIDGET_VISIBLE (window))
1352 gtk_widget_show (window);
1354 gtk_widget_destroy (window);
1359 file_selection_ok (GtkWidget *w,
1360 GtkFileSelection *fs)
1362 g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
1366 create_file_selection ()
1368 static GtkWidget *window = NULL;
1372 window = gtk_file_selection_new ("file selection dialog");
1373 gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
1375 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1376 GTK_SIGNAL_FUNC(destroy_window),
1378 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1379 GTK_SIGNAL_FUNC(destroy_window),
1382 gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (window)->ok_button),
1383 "clicked", GTK_SIGNAL_FUNC(file_selection_ok),
1385 gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (window)->cancel_button),
1386 "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),
1387 GTK_OBJECT (window));
1390 if (!GTK_WIDGET_VISIBLE (window))
1391 gtk_widget_show (window);
1393 gtk_widget_destroy (window);
1400 static GtkWidget *dialog_window = NULL;
1403 label_toggle (GtkWidget *widget,
1408 *label = gtk_label_new ("Dialog Test");
1409 gtk_misc_set_padding (GTK_MISC (*label), 10, 10);
1410 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->vbox),
1411 *label, TRUE, TRUE, 0);
1412 gtk_widget_show (*label);
1416 gtk_widget_destroy (*label);
1424 static GtkWidget *label;
1429 dialog_window = gtk_dialog_new ();
1431 gtk_signal_connect (GTK_OBJECT (dialog_window), "destroy",
1432 GTK_SIGNAL_FUNC(destroy_window),
1434 gtk_signal_connect (GTK_OBJECT (dialog_window), "delete_event",
1435 GTK_SIGNAL_FUNC(destroy_window),
1438 gtk_window_set_title (GTK_WINDOW (dialog_window), "dialog");
1439 gtk_container_border_width (GTK_CONTAINER (dialog_window), 0);
1441 button = gtk_button_new_with_label ("OK");
1442 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1443 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->action_area),
1444 button, TRUE, TRUE, 0);
1445 gtk_widget_grab_default (button);
1446 gtk_widget_show (button);
1448 button = gtk_button_new_with_label ("Toggle");
1449 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1450 GTK_SIGNAL_FUNC(label_toggle),
1452 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1453 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->action_area),
1454 button, TRUE, TRUE, 0);
1455 gtk_widget_show (button);
1460 if (!GTK_WIDGET_VISIBLE (dialog_window))
1461 gtk_widget_show (dialog_window);
1463 gtk_widget_destroy (dialog_window);
1471 create_range_controls ()
1473 static GtkWidget *window = NULL;
1477 GtkWidget *scrollbar;
1479 GtkWidget *separator;
1480 GtkObject *adjustment;
1484 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1486 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1487 GTK_SIGNAL_FUNC(destroy_window),
1489 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1490 GTK_SIGNAL_FUNC(destroy_window),
1493 gtk_window_set_title (GTK_WINDOW (window), "range controls");
1494 gtk_container_border_width (GTK_CONTAINER (window), 0);
1497 box1 = gtk_vbox_new (FALSE, 0);
1498 gtk_container_add (GTK_CONTAINER (window), box1);
1499 gtk_widget_show (box1);
1502 box2 = gtk_vbox_new (FALSE, 10);
1503 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1504 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1505 gtk_widget_show (box2);
1508 adjustment = gtk_adjustment_new (0.0, 0.0, 101.0, 0.1, 1.0, 1.0);
1510 scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
1511 gtk_widget_set_usize (GTK_WIDGET (scale), 150, 30);
1512 gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
1513 gtk_scale_set_digits (GTK_SCALE (scale), 1);
1514 gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
1515 gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
1516 gtk_widget_show (scale);
1518 scrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (adjustment));
1519 gtk_range_set_update_policy (GTK_RANGE (scrollbar),
1520 GTK_UPDATE_CONTINUOUS);
1521 gtk_box_pack_start (GTK_BOX (box2), scrollbar, TRUE, TRUE, 0);
1522 gtk_widget_show (scrollbar);
1525 separator = gtk_hseparator_new ();
1526 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1527 gtk_widget_show (separator);
1530 box2 = gtk_vbox_new (FALSE, 10);
1531 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1532 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1533 gtk_widget_show (box2);
1536 button = gtk_button_new_with_label ("close");
1537 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1538 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1539 GTK_OBJECT (window));
1540 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1541 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1542 gtk_widget_grab_default (button);
1543 gtk_widget_show (button);
1546 if (!GTK_WIDGET_VISIBLE (window))
1547 gtk_widget_show (window);
1549 gtk_widget_destroy (window);
1559 static GtkWidget *window = NULL;
1565 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1567 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1568 GTK_SIGNAL_FUNC(destroy_window),
1570 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1571 GTK_SIGNAL_FUNC(destroy_window),
1574 gtk_window_set_title (GTK_WINDOW (window), "rulers");
1575 gtk_widget_set_usize (window, 300, 300);
1576 gtk_widget_set_events (window,
1577 GDK_POINTER_MOTION_MASK
1578 | GDK_POINTER_MOTION_HINT_MASK);
1579 gtk_container_border_width (GTK_CONTAINER (window), 0);
1581 table = gtk_table_new (2, 2, FALSE);
1582 gtk_container_add (GTK_CONTAINER (window), table);
1583 gtk_widget_show (table);
1585 ruler = gtk_hruler_new ();
1586 gtk_ruler_set_range (GTK_RULER (ruler), 5, 15, 0, 20);
1588 gtk_signal_connect_object (
1589 GTK_OBJECT (window),
1590 "motion_notify_event",
1592 GTK_WIDGET_CLASS (GTK_OBJECT (ruler)->klass)->motion_notify_event),
1593 GTK_OBJECT (ruler));
1595 gtk_table_attach (GTK_TABLE (table), ruler, 1, 2, 0, 1,
1596 GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
1597 gtk_widget_show (ruler);
1600 ruler = gtk_vruler_new ();
1601 gtk_ruler_set_range (GTK_RULER (ruler), 5, 15, 0, 20);
1603 gtk_signal_connect_object (
1604 GTK_OBJECT (window),
1605 "motion_notify_event",
1606 GTK_SIGNAL_FUNC (GTK_WIDGET_CLASS (GTK_OBJECT (ruler)->klass)->motion_notify_event),
1607 GTK_OBJECT (ruler));
1609 gtk_table_attach (GTK_TABLE (table), ruler, 0, 1, 1, 2,
1610 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
1611 gtk_widget_show (ruler);
1614 if (!GTK_WIDGET_VISIBLE (window))
1615 gtk_widget_show (window);
1617 gtk_widget_destroy (window);
1627 static GtkWidget *window = NULL;
1631 GtkWidget *separator;
1633 GtkWidget *hscrollbar;
1634 GtkWidget *vscrollbar;
1639 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1640 gtk_widget_set_name (window, "text window");
1642 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1643 GTK_SIGNAL_FUNC(destroy_window),
1645 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1646 GTK_SIGNAL_FUNC(destroy_window),
1649 gtk_window_set_title (GTK_WINDOW (window), "test");
1650 gtk_container_border_width (GTK_CONTAINER (window), 0);
1653 box1 = gtk_vbox_new (FALSE, 0);
1654 gtk_container_add (GTK_CONTAINER (window), box1);
1655 gtk_widget_show (box1);
1658 box2 = gtk_vbox_new (FALSE, 10);
1659 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1660 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1661 gtk_widget_show (box2);
1664 table = gtk_table_new (2, 2, FALSE);
1665 gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2);
1666 gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
1667 gtk_box_pack_start (GTK_BOX (box2), table, TRUE, TRUE, 0);
1668 gtk_widget_show (table);
1670 text = gtk_text_new (NULL, NULL);
1671 gtk_table_attach_defaults (GTK_TABLE (table), text, 0, 1, 0, 1);
1672 gtk_widget_show (text);
1674 hscrollbar = gtk_hscrollbar_new (GTK_TEXT (text)->hadj);
1675 gtk_table_attach (GTK_TABLE (table), hscrollbar, 0, 1, 1, 2,
1676 GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
1677 gtk_widget_show (hscrollbar);
1679 vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
1680 gtk_table_attach (GTK_TABLE (table), vscrollbar, 1, 2, 0, 1,
1681 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
1682 gtk_widget_show (vscrollbar);
1684 gtk_text_freeze (GTK_TEXT (text));
1686 gtk_widget_realize (text);
1688 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1689 "spencer blah blah blah\n", -1);
1690 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1692 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1694 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1696 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1698 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1700 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1702 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1704 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1705 "girlfriend\n", -1);
1706 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1708 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1710 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1712 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1714 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1716 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1718 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1720 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1722 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1724 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1726 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1728 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->white, NULL,
1731 gtk_text_thaw (GTK_TEXT (text));
1733 separator = gtk_hseparator_new ();
1734 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1735 gtk_widget_show (separator);
1738 box2 = gtk_vbox_new (FALSE, 10);
1739 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1740 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1741 gtk_widget_show (box2);
1744 button = gtk_button_new_with_label ("close");
1745 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1746 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1747 GTK_OBJECT (window));
1748 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1749 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1750 gtk_widget_grab_default (button);
1751 gtk_widget_show (button);
1754 if (!GTK_WIDGET_VISIBLE (window))
1755 gtk_widget_show (window);
1757 gtk_widget_destroy (window);
1765 rotate_notebook (GtkButton *button,
1766 GtkNotebook *notebook)
1768 gtk_notebook_set_tab_pos (notebook, (notebook->tab_pos + 1) % 4);
1774 static GtkWidget *window = NULL;
1778 GtkWidget *separator;
1779 GtkWidget *notebook;
1787 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1789 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1790 GTK_SIGNAL_FUNC(destroy_window),
1792 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1793 GTK_SIGNAL_FUNC(destroy_window),
1796 gtk_window_set_title (GTK_WINDOW (window), "notebook");
1797 gtk_container_border_width (GTK_CONTAINER (window), 0);
1800 box1 = gtk_vbox_new (FALSE, 0);
1801 gtk_container_add (GTK_CONTAINER (window), box1);
1802 gtk_widget_show (box1);
1805 box2 = gtk_vbox_new (FALSE, 10);
1806 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1807 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
1808 gtk_widget_show (box2);
1811 notebook = gtk_notebook_new ();
1812 gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);
1813 gtk_box_pack_start (GTK_BOX (box2), notebook, TRUE, TRUE, 0);
1814 gtk_widget_show (notebook);
1817 for (i = 0; i < 5; i++)
1819 sprintf (buffer, "Page %d", i+1);
1821 frame = gtk_frame_new (buffer);
1822 gtk_container_border_width (GTK_CONTAINER (frame), 10);
1823 gtk_widget_set_usize (frame, 200, 150);
1824 gtk_widget_show (frame);
1826 label = gtk_label_new (buffer);
1827 gtk_container_add (GTK_CONTAINER (frame), label);
1828 gtk_widget_show (label);
1830 label = gtk_label_new (buffer);
1831 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
1835 separator = gtk_hseparator_new ();
1836 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
1837 gtk_widget_show (separator);
1840 box2 = gtk_hbox_new (FALSE, 10);
1841 gtk_container_border_width (GTK_CONTAINER (box2), 10);
1842 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
1843 gtk_widget_show (box2);
1846 button = gtk_button_new_with_label ("close");
1847 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1848 GTK_SIGNAL_FUNC(gtk_widget_destroy),
1849 GTK_OBJECT (window));
1850 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1851 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1852 gtk_widget_grab_default (button);
1853 gtk_widget_show (button);
1855 button = gtk_button_new_with_label ("next");
1856 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1857 GTK_SIGNAL_FUNC(gtk_notebook_next_page),
1858 GTK_OBJECT (notebook));
1859 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1860 gtk_widget_show (button);
1862 button = gtk_button_new_with_label ("prev");
1863 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
1864 GTK_SIGNAL_FUNC(gtk_notebook_prev_page),
1865 GTK_OBJECT (notebook));
1866 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1867 gtk_widget_show (button);
1869 button = gtk_button_new_with_label ("rotate");
1870 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1871 GTK_SIGNAL_FUNC(rotate_notebook),
1873 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
1874 gtk_widget_show (button);
1877 if (!GTK_WIDGET_VISIBLE (window))
1878 gtk_widget_show (window);
1880 gtk_widget_destroy (window);
1890 static GtkWidget *window = NULL;
1897 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
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_window_set_title (GTK_WINDOW (window), "Panes");
1907 gtk_container_border_width (GTK_CONTAINER (window), 0);
1909 vpaned = gtk_vpaned_new ();
1910 gtk_container_add (GTK_CONTAINER (window), vpaned);
1911 gtk_container_border_width (GTK_CONTAINER(vpaned), 5);
1912 gtk_widget_show (vpaned);
1914 hpaned = gtk_hpaned_new ();
1915 gtk_paned_add1 (GTK_PANED (vpaned), hpaned);
1917 frame = gtk_frame_new (NULL);
1918 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
1919 gtk_widget_set_usize (frame, 60, 60);
1920 gtk_paned_add1 (GTK_PANED (hpaned), frame);
1921 gtk_widget_show (frame);
1923 frame = gtk_frame_new (NULL);
1924 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
1925 gtk_widget_set_usize (frame, 80, 60);
1926 gtk_paned_add2 (GTK_PANED (hpaned), frame);
1927 gtk_widget_show (frame);
1929 gtk_widget_show (hpaned);
1931 frame = gtk_frame_new (NULL);
1932 gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
1933 gtk_widget_set_usize (frame, 60, 80);
1934 gtk_paned_add2 (GTK_PANED (vpaned), frame);
1935 gtk_widget_show (frame);
1938 if (!GTK_WIDGET_VISIBLE (window))
1939 gtk_widget_show (window);
1941 gtk_widget_destroy (window);
1950 dnd_drop_destroy_popup (GtkWidget *widget, GtkWindow **window)
1952 if(GTK_IS_BUTTON(widget)) /* I.e. they clicked the close button */
1953 gtk_widget_destroy(GTK_WIDGET(*window));
1955 gtk_grab_remove(GTK_WIDGET(*window));
1962 dnd_drop (GtkWidget *button, GdkEvent *event)
1964 static GtkWidget *window = NULL;
1965 GtkWidget *vbox, *lbl, *btn;
1968 window = gtk_window_new(GTK_WINDOW_DIALOG);
1969 gtk_container_border_width (GTK_CONTAINER(window), 10);
1971 gtk_signal_connect (GTK_OBJECT (window), "destroy",
1972 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
1974 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
1975 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
1978 vbox = gtk_vbox_new(FALSE, 5);
1980 /* Display message that we got from drop source */
1981 msg = g_malloc(strlen(event->dropdataavailable.data)
1982 + strlen(event->dropdataavailable.data_type) + 100);
1983 sprintf(msg, "Drop data of type %s was:\n\n%s",
1984 event->dropdataavailable.data_type,
1985 event->dropdataavailable.data);
1986 lbl = gtk_label_new(msg);
1987 gtk_label_set_justify(GTK_LABEL(lbl), GTK_JUSTIFY_FILL);
1989 gtk_widget_show(lbl);
1990 gtk_box_pack_start_defaults(GTK_BOX(vbox), lbl);
1992 /* Provide an obvious way out of this heinousness */
1993 btn = gtk_button_new_with_label("Continue with life in\nspite of this oppression");
1994 gtk_signal_connect (GTK_OBJECT (btn), "clicked",
1995 GTK_SIGNAL_FUNC(dnd_drop_destroy_popup),
1997 gtk_widget_show(btn);
1998 gtk_box_pack_start_defaults(GTK_BOX(vbox), btn);
2000 gtk_container_add(GTK_CONTAINER(window), vbox);
2002 gtk_widget_show(vbox);
2003 gtk_grab_add(window);
2004 gtk_widget_show(window);
2006 g_free (event->dropdataavailable.data);
2007 g_free (event->dropdataavailable.data_type);
2011 dnd_drag_request (GtkWidget *button, GdkEvent *event)
2013 #define DND_STRING "Bill Gates demands royalties for\nyour use of his innovation."
2014 gtk_widget_dnd_data_set (button, event, DND_STRING, strlen(DND_STRING) + 1);
2020 static GtkWidget *window = NULL;
2027 GtkWidget *separator;
2028 /* For clarity... */
2029 char *possible_drag_types[] = {"text/plain"};
2030 char *accepted_drop_types[] = {"text/plain"};
2034 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2036 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2037 GTK_SIGNAL_FUNC(destroy_window),
2039 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2040 GTK_SIGNAL_FUNC(destroy_window),
2043 gtk_window_set_title (GTK_WINDOW (window), "Drag -N- Drop");
2044 gtk_container_border_width (GTK_CONTAINER (window), 0);
2046 box1 = gtk_vbox_new (FALSE, 0);
2047 gtk_container_add (GTK_CONTAINER (window), box1);
2048 gtk_widget_show (box1);
2050 box2 = gtk_hbox_new (FALSE, 5);
2051 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2052 gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
2053 gtk_widget_show (box2);
2055 frame = gtk_frame_new ("Drag");
2056 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
2057 gtk_widget_show (frame);
2059 box3 = gtk_vbox_new (FALSE, 5);
2060 gtk_container_border_width (GTK_CONTAINER (box3), 5);
2061 gtk_container_add (GTK_CONTAINER (frame), box3);
2062 gtk_widget_show (box3);
2067 button = gtk_button_new_with_label ("Drag me!");
2068 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
2069 gtk_widget_show (button);
2072 * currently, the widget has to be realized to
2073 * set dnd on it, this needs to change
2075 gtk_widget_realize (button);
2076 gtk_signal_connect (GTK_OBJECT (button),
2077 "drag_request_event",
2078 GTK_SIGNAL_FUNC(dnd_drag_request),
2081 gtk_widget_dnd_drag_set (button, TRUE, possible_drag_types, 1);
2084 frame = gtk_frame_new ("Drop");
2085 gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
2086 gtk_widget_show (frame);
2088 box3 = gtk_vbox_new (FALSE, 5);
2089 gtk_container_border_width (GTK_CONTAINER (box3), 5);
2090 gtk_container_add (GTK_CONTAINER (frame), box3);
2091 gtk_widget_show (box3);
2097 button = gtk_button_new_with_label ("To");
2098 gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
2099 gtk_widget_show (button);
2101 gtk_widget_realize (button);
2102 gtk_signal_connect (GTK_OBJECT (button),
2103 "drop_data_available_event",
2104 GTK_SIGNAL_FUNC(dnd_drop),
2107 gtk_widget_dnd_drop_set (button, TRUE, accepted_drop_types, 1, FALSE);
2110 separator = gtk_hseparator_new ();
2111 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
2112 gtk_widget_show (separator);
2115 box2 = gtk_vbox_new (FALSE, 10);
2116 gtk_container_border_width (GTK_CONTAINER (box2), 10);
2117 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
2118 gtk_widget_show (box2);
2121 button = gtk_button_new_with_label ("close");
2123 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2124 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2125 GTK_OBJECT (window));
2127 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
2128 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2129 gtk_widget_grab_default (button);
2130 gtk_widget_show (button);
2133 if (!GTK_WIDGET_VISIBLE (window))
2134 gtk_widget_show (window);
2136 gtk_widget_destroy (window);
2142 static GdkWindow *root_win = NULL;
2143 static GtkWidget *modeller = NULL;
2144 static GtkWidget *sheets = NULL;
2145 static GtkWidget *rings = NULL;
2147 typedef struct _cursoroffset {gint x,y;} CursorOffset;
2150 shape_pressed (GtkWidget *widget)
2154 p = gtk_object_get_user_data (GTK_OBJECT(widget));
2155 gtk_widget_get_pointer (widget, &(p->x), &(p->y));
2157 gtk_grab_add (widget);
2158 gdk_pointer_grab (widget->window, TRUE,
2159 GDK_BUTTON_RELEASE_MASK |
2160 GDK_BUTTON_MOTION_MASK,
2166 shape_released (GtkWidget *widget)
2168 gtk_grab_remove (widget);
2169 gdk_pointer_ungrab (0);
2173 shape_motion (GtkWidget *widget,
2174 GdkEventMotion *event)
2178 GdkModifierType mask;
2180 p = gtk_object_get_user_data (GTK_OBJECT (widget));
2182 gdk_window_get_pointer (root_win, &xp, &yp, &mask);
2183 gtk_widget_set_uposition (widget, xp - p->x, yp - p->y);
2187 shape_create_icon (char *xpm_file,
2197 CursorOffset* icon_pos;
2199 GdkBitmap *gdk_pixmap_mask;
2200 GdkPixmap *gdk_pixmap;
2203 style = gtk_widget_get_default_style ();
2204 gc = style->black_gc;
2207 * GDK_WINDOW_TOPLEVEL works also, giving you a title border
2209 window = gtk_window_new (window_type);
2211 fixed = gtk_fixed_new ();
2212 gtk_widget_set_usize (fixed, 100,100);
2213 gtk_container_add (GTK_CONTAINER (window), fixed);
2214 gtk_widget_show (fixed);
2216 gdk_pixmap = gdk_pixmap_create_from_xpm (window->window, &gdk_pixmap_mask,
2217 &style->bg[GTK_STATE_NORMAL],
2220 pixmap = gtk_pixmap_new (gdk_pixmap, gdk_pixmap_mask);
2221 gtk_fixed_put (GTK_FIXED (fixed), pixmap, px,py);
2222 gtk_widget_show (pixmap);
2224 gtk_widget_shape_combine_mask (window, gdk_pixmap_mask, px,py);
2226 gtk_widget_set_events (window,
2227 gtk_widget_get_events (window) |
2228 GDK_BUTTON_MOTION_MASK |
2229 GDK_BUTTON_PRESS_MASK);
2231 gtk_signal_connect (GTK_OBJECT (window), "button_press_event",
2232 GTK_SIGNAL_FUNC (shape_pressed),NULL);
2233 gtk_signal_connect (GTK_OBJECT (window), "button_release_event",
2234 GTK_SIGNAL_FUNC (shape_released),NULL);
2235 gtk_signal_connect (GTK_OBJECT (window), "motion_notify_event",
2236 GTK_SIGNAL_FUNC (shape_motion),NULL);
2238 icon_pos = g_new (CursorOffset, 1);
2239 gtk_object_set_user_data(GTK_OBJECT(window), icon_pos);
2241 gtk_widget_set_uposition (window, x, y);
2242 gtk_widget_show (window);
2250 root_win = gdk_window_foreign_new (GDK_ROOT_WINDOW ());
2254 modeller = shape_create_icon ("Modeller.xpm",
2255 440, 140, 0,0, GTK_WINDOW_POPUP);
2257 gtk_signal_connect (GTK_OBJECT (modeller), "destroy",
2258 GTK_SIGNAL_FUNC(destroy_window),
2260 gtk_signal_connect (GTK_OBJECT (modeller), "delete_event",
2261 GTK_SIGNAL_FUNC(destroy_window),
2265 gtk_widget_destroy (modeller);
2269 sheets = shape_create_icon ("FilesQueue.xpm",
2270 580, 170, 0,0, GTK_WINDOW_POPUP);
2272 gtk_signal_connect (GTK_OBJECT (sheets), "destroy",
2273 GTK_SIGNAL_FUNC(destroy_window),
2275 gtk_signal_connect (GTK_OBJECT (sheets), "delete_event",
2276 GTK_SIGNAL_FUNC(destroy_window),
2281 gtk_widget_destroy (sheets);
2285 rings = shape_create_icon ("3DRings.xpm",
2286 460, 270, 25,25, GTK_WINDOW_TOPLEVEL);
2288 gtk_signal_connect (GTK_OBJECT (rings), "destroy",
2289 GTK_SIGNAL_FUNC(destroy_window),
2291 gtk_signal_connect (GTK_OBJECT (rings), "delete_event",
2292 GTK_SIGNAL_FUNC(destroy_window),
2296 gtk_widget_destroy (rings);
2303 static int progress_timer = 0;
2306 progress_timeout (gpointer data)
2310 new_val = GTK_PROGRESS_BAR (data)->percentage;
2315 gtk_progress_bar_update (GTK_PROGRESS_BAR (data), new_val);
2321 destroy_progress (GtkWidget *widget,
2324 destroy_window (widget, window);
2325 gtk_timeout_remove (progress_timer);
2330 create_progress_bar ()
2332 static GtkWidget *window = NULL;
2340 window = gtk_dialog_new ();
2342 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2343 GTK_SIGNAL_FUNC(destroy_progress),
2345 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2346 GTK_SIGNAL_FUNC(destroy_progress),
2349 gtk_window_set_title (GTK_WINDOW (window), "dialog");
2350 gtk_container_border_width (GTK_CONTAINER (window), 0);
2353 vbox = gtk_vbox_new (FALSE, 5);
2354 gtk_container_border_width (GTK_CONTAINER (vbox), 10);
2355 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
2356 vbox, TRUE, TRUE, 0);
2357 gtk_widget_show (vbox);
2359 label = gtk_label_new ("progress...");
2360 gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
2361 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
2362 gtk_widget_show (label);
2364 pbar = gtk_progress_bar_new ();
2365 gtk_widget_set_usize (pbar, 200, 20);
2366 gtk_box_pack_start (GTK_BOX (vbox), pbar, TRUE, TRUE, 0);
2367 gtk_widget_show (pbar);
2369 progress_timer = gtk_timeout_add (100, progress_timeout, pbar);
2371 button = gtk_button_new_with_label ("close");
2372 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2373 GTK_SIGNAL_FUNC(gtk_widget_destroy),
2374 GTK_OBJECT (window));
2375 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
2376 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
2377 button, TRUE, TRUE, 0);
2378 gtk_widget_grab_default (button);
2379 gtk_widget_show (button);
2382 if (!GTK_WIDGET_VISIBLE (window))
2383 gtk_widget_show (window);
2385 gtk_widget_destroy (window);
2392 static int color_idle = 0;
2395 color_idle_func (GtkWidget *preview)
2397 static int count = 1;
2401 for (i = 0; i < 256; i++)
2403 for (j = 0, k = 0; j < 256; j++)
2405 buf[k+0] = i + count;
2407 buf[k+2] = j + count;
2411 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
2416 gtk_widget_draw (preview, NULL);
2422 color_preview_destroy (GtkWidget *widget,
2425 gtk_idle_remove (color_idle);
2428 destroy_window (widget, window);
2432 create_color_preview ()
2434 static GtkWidget *window = NULL;
2441 gtk_widget_push_visual (gtk_preview_get_visual ());
2442 gtk_widget_push_colormap (gtk_preview_get_cmap ());
2444 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2446 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2447 GTK_SIGNAL_FUNC(color_preview_destroy),
2449 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2450 GTK_SIGNAL_FUNC(color_preview_destroy),
2453 gtk_window_set_title (GTK_WINDOW (window), "test");
2454 gtk_container_border_width (GTK_CONTAINER (window), 10);
2456 preview = gtk_preview_new (GTK_PREVIEW_COLOR);
2457 gtk_preview_size (GTK_PREVIEW (preview), 256, 256);
2458 gtk_container_add (GTK_CONTAINER (window), preview);
2459 gtk_widget_show (preview);
2461 for (i = 0; i < 256; i++)
2463 for (j = 0, k = 0; j < 256; j++)
2471 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
2474 color_idle = gtk_idle_add ((GtkFunction) color_idle_func, preview);
2476 gtk_widget_pop_colormap ();
2477 gtk_widget_pop_visual ();
2480 if (!GTK_WIDGET_VISIBLE (window))
2481 gtk_widget_show (window);
2483 gtk_widget_destroy (window);
2490 static int gray_idle = 0;
2493 gray_idle_func (GtkWidget *preview)
2495 static int count = 1;
2499 for (i = 0; i < 256; i++)
2501 for (j = 0; j < 256; j++)
2502 buf[j] = i + j + count;
2504 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
2509 gtk_widget_draw (preview, NULL);
2515 gray_preview_destroy (GtkWidget *widget,
2518 gtk_idle_remove (gray_idle);
2521 destroy_window (widget, window);
2525 create_gray_preview ()
2527 static GtkWidget *window = NULL;
2534 gtk_widget_push_visual (gtk_preview_get_visual ());
2535 gtk_widget_push_colormap (gtk_preview_get_cmap ());
2537 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2539 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2540 GTK_SIGNAL_FUNC(gray_preview_destroy),
2542 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2543 GTK_SIGNAL_FUNC(gray_preview_destroy),
2546 gtk_window_set_title (GTK_WINDOW (window), "test");
2547 gtk_container_border_width (GTK_CONTAINER (window), 10);
2549 preview = gtk_preview_new (GTK_PREVIEW_GRAYSCALE);
2550 gtk_preview_size (GTK_PREVIEW (preview), 256, 256);
2551 gtk_container_add (GTK_CONTAINER (window), preview);
2552 gtk_widget_show (preview);
2554 for (i = 0; i < 256; i++)
2556 for (j = 0; j < 256; j++)
2559 gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 256);
2562 gray_idle = gtk_idle_add ((GtkFunction) gray_idle_func, preview);
2564 gtk_widget_pop_colormap ();
2565 gtk_widget_pop_visual ();
2568 if (!GTK_WIDGET_VISIBLE (window))
2569 gtk_widget_show (window);
2571 gtk_widget_destroy (window);
2579 selection_test_received (GtkWidget *list, GtkSelectionData *data)
2582 GtkWidget *list_item;
2586 if (data->length < 0)
2588 g_print ("Selection retrieval failed\n");
2591 if (data->type != GDK_SELECTION_TYPE_ATOM)
2593 g_print ("Selection \"TARGETS\" was not returned as atoms!\n");
2597 /* Clear out any current list items */
2599 gtk_list_clear_items (GTK_LIST(list), 0, -1);
2601 /* Add new items to list */
2603 atoms = (GdkAtom *)data->data;
2606 l = data->length / sizeof (GdkAtom);
2607 for (i = 0; i < l; i++)
2610 name = gdk_atom_name (atoms[i]);
2613 list_item = gtk_list_item_new_with_label (name);
2617 list_item = gtk_list_item_new_with_label ("(bad atom)");
2619 gtk_widget_show (list_item);
2620 item_list = g_list_append (item_list, list_item);
2623 gtk_list_append_items (GTK_LIST (list), item_list);
2629 selection_test_get_targets (GtkWidget *widget, GtkWidget *list)
2631 static GdkAtom targets_atom = GDK_NONE;
2633 if (targets_atom == GDK_NONE)
2634 targets_atom = gdk_atom_intern ("TARGETS", FALSE);
2636 gtk_selection_convert (list, GDK_SELECTION_PRIMARY, targets_atom,
2641 create_selection_test ()
2643 static GtkWidget *window = NULL;
2646 GtkWidget *scrolled_win;
2652 window = gtk_dialog_new ();
2654 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2655 GTK_SIGNAL_FUNC(destroy_window),
2657 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2658 GTK_SIGNAL_FUNC(destroy_window),
2661 gtk_window_set_title (GTK_WINDOW (window), "Selection Test");
2662 gtk_container_border_width (GTK_CONTAINER (window), 0);
2664 /* Create the list */
2666 vbox = gtk_vbox_new (FALSE, 5);
2667 gtk_container_border_width (GTK_CONTAINER (vbox), 10);
2668 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox,
2670 gtk_widget_show (vbox);
2672 label = gtk_label_new ("Gets available targets for current selection");
2673 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
2674 gtk_widget_show (label);
2676 scrolled_win = gtk_scrolled_window_new (NULL, NULL);
2677 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
2678 GTK_POLICY_AUTOMATIC,
2679 GTK_POLICY_AUTOMATIC);
2680 gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
2681 gtk_widget_set_usize (scrolled_win, 100, 200);
2682 gtk_widget_show (scrolled_win);
2684 list = gtk_list_new ();
2685 gtk_container_add (GTK_CONTAINER (scrolled_win), list);
2687 gtk_signal_connect (GTK_OBJECT(list), "selection_received",
2688 GTK_SIGNAL_FUNC (selection_test_received), NULL);
2689 gtk_widget_show (list);
2691 /* .. And create some buttons */
2692 button = gtk_button_new_with_label ("Get Targets");
2693 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
2694 button, TRUE, TRUE, 0);
2696 gtk_signal_connect (GTK_OBJECT (button), "clicked",
2697 GTK_SIGNAL_FUNC (selection_test_get_targets), list);
2698 gtk_widget_show (button);
2700 button = gtk_button_new_with_label ("Quit");
2701 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
2702 button, TRUE, TRUE, 0);
2704 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2705 GTK_SIGNAL_FUNC (gtk_widget_destroy),
2706 GTK_OBJECT (window));
2707 gtk_widget_show (button);
2710 if (!GTK_WIDGET_VISIBLE (window))
2711 gtk_widget_show (window);
2713 gtk_widget_destroy (window);
2721 create_gamma_curve ()
2723 static GtkWidget *window = NULL, *curve;
2724 static int count = 0;
2731 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2732 gtk_window_set_title (GTK_WINDOW (window), "test");
2733 gtk_container_border_width (GTK_CONTAINER (window), 10);
2735 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2736 GTK_SIGNAL_FUNC(destroy_window),
2738 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2739 GTK_SIGNAL_FUNC(destroy_window),
2742 curve = gtk_gamma_curve_new ();
2743 gtk_container_add (GTK_CONTAINER (window), curve);
2744 gtk_widget_show (curve);
2747 max = 127 + (count % 2)*128;
2748 gtk_curve_set_range (GTK_CURVE (GTK_GAMMA_CURVE (curve)->curve),
2750 for (i = 0; i < max; ++i)
2751 vec[i] = (127 / sqrt (max)) * sqrt (i);
2752 gtk_curve_set_vector (GTK_CURVE (GTK_GAMMA_CURVE (curve)->curve),
2755 if (!GTK_WIDGET_VISIBLE (window))
2756 gtk_widget_show (window);
2757 else if (count % 4 == 3)
2759 gtk_widget_destroy (window);
2766 static int scroll_test_pos = 0.0;
2767 static GdkGC *scroll_test_gc = NULL;
2770 scroll_test_expose (GtkWidget *widget, GdkEventExpose *event,
2774 gint imin, imax, jmin, jmax;
2776 imin = (event->area.x) / 10;
2777 imax = (event->area.x + event->area.width + 9) / 10;
2779 jmin = ((int)adj->value + event->area.y) / 10;
2780 jmax = ((int)adj->value + event->area.y + event->area.height + 9) / 10;
2782 gdk_window_clear_area (widget->window,
2783 event->area.x, event->area.y,
2784 event->area.width, event->area.height);
2786 for (i=imin; i<imax; i++)
2787 for (j=jmin; j<jmax; j++)
2789 gdk_draw_rectangle (widget->window,
2790 widget->style->black_gc,
2792 10*i, 10*j - (int)adj->value, 1+i%10, 1+j%10);
2798 scroll_test_configure (GtkWidget *widget, GdkEventConfigure *event,
2801 adj->page_increment = 0.9 * widget->allocation.height;
2802 adj->page_size = widget->allocation.height;
2804 gtk_signal_emit_by_name (GTK_OBJECT (adj), "changed");
2808 scroll_test_adjustment_changed (GtkAdjustment *adj, GtkWidget *widget)
2810 gint source_min = (int)adj->value - scroll_test_pos;
2811 gint source_max = source_min + widget->allocation.height;
2813 gint dest_max = widget->allocation.height;
2817 scroll_test_pos = adj->value;
2819 if (!GTK_WIDGET_DRAWABLE (widget))
2826 rect.width = widget->allocation.width;
2827 rect.height = -source_min;
2828 if (rect.height > widget->allocation.height)
2829 rect.height = widget->allocation.height;
2832 dest_min = rect.height;
2837 rect.y = 2*widget->allocation.height - source_max;
2840 rect.width = widget->allocation.width;
2841 rect.height = widget->allocation.height - rect.y;
2843 source_max = widget->allocation.height;
2847 if (source_min != source_max)
2849 if (scroll_test_gc == NULL)
2851 scroll_test_gc = gdk_gc_new (widget->window);
2852 gdk_gc_set_exposures (scroll_test_gc, TRUE);
2855 gdk_draw_pixmap (widget->window,
2860 widget->allocation.width,
2861 source_max - source_min);
2863 /* Make sure graphics expose events are processed before scrolling
2866 while ((event = gdk_event_get_graphics_expose (widget->window)) != NULL)
2868 gtk_widget_event (widget, event);
2869 if (event->expose.count == 0)
2871 gdk_event_free (event);
2874 gdk_event_free (event);
2879 if (rect.height != 0)
2880 gtk_widget_draw (widget, &rect);
2885 create_scroll_test ()
2887 static GtkWidget *window = NULL;
2889 GtkWidget *drawing_area;
2890 GtkWidget *scrollbar;
2896 window = gtk_dialog_new ();
2898 gtk_signal_connect (GTK_OBJECT (window), "destroy",
2899 GTK_SIGNAL_FUNC(destroy_window),
2901 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2902 GTK_SIGNAL_FUNC(destroy_window),
2905 gtk_window_set_title (GTK_WINDOW (window), "Scroll Test");
2906 gtk_container_border_width (GTK_CONTAINER (window), 0);
2908 hbox = gtk_hbox_new (FALSE, 0);
2909 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), hbox,
2911 gtk_widget_show (hbox);
2913 drawing_area = gtk_drawing_area_new ();
2914 gtk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 200, 200);
2915 gtk_box_pack_start (GTK_BOX (hbox), drawing_area, TRUE, TRUE, 0);
2916 gtk_widget_show (drawing_area);
2918 gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK);
2920 adj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 1000.0, 1.0, 180.0, 200.0));
2921 scroll_test_pos = 0.0;
2923 scrollbar = gtk_vscrollbar_new (adj);
2924 gtk_box_pack_start (GTK_BOX (hbox), scrollbar, FALSE, FALSE, 0);
2925 gtk_widget_show (scrollbar);
2927 gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
2928 GTK_SIGNAL_FUNC (scroll_test_expose), adj);
2929 gtk_signal_connect (GTK_OBJECT (drawing_area), "configure_event",
2930 GTK_SIGNAL_FUNC (scroll_test_configure), adj);
2933 gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
2934 GTK_SIGNAL_FUNC (scroll_test_adjustment_changed),
2937 /* .. And create some buttons */
2939 button = gtk_button_new_with_label ("Quit");
2940 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
2941 button, TRUE, TRUE, 0);
2943 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
2944 GTK_SIGNAL_FUNC (gtk_widget_destroy),
2945 GTK_OBJECT (window));
2946 gtk_widget_show (button);
2949 if (!GTK_WIDGET_VISIBLE (window))
2950 gtk_widget_show (window);
2952 gtk_widget_destroy (window);
2958 static int timer = 0;
2961 timeout_test (GtkWidget *label)
2963 static int count = 0;
2964 static char buffer[32];
2966 sprintf (buffer, "count: %d", ++count);
2967 gtk_label_set (GTK_LABEL (label), buffer);
2971 start_timeout_test (GtkWidget *widget,
2976 timer = gtk_timeout_add (100, (GtkFunction) timeout_test, label);
2981 stop_timeout_test (GtkWidget *widget,
2986 gtk_timeout_remove (timer);
2992 destroy_timeout_test (GtkWidget *widget,
2995 destroy_window (widget, window);
2996 stop_timeout_test (NULL, NULL);
3000 create_timeout_test ()
3002 static GtkWidget *window = NULL;
3008 window = gtk_dialog_new ();
3010 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3011 GTK_SIGNAL_FUNC(destroy_timeout_test),
3013 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3014 GTK_SIGNAL_FUNC(destroy_timeout_test),
3017 gtk_window_set_title (GTK_WINDOW (window), "Timeout Test");
3018 gtk_container_border_width (GTK_CONTAINER (window), 0);
3020 label = gtk_label_new ("count: 0");
3021 gtk_misc_set_padding (GTK_MISC (label), 10, 10);
3022 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
3023 label, TRUE, TRUE, 0);
3024 gtk_widget_show (label);
3026 button = gtk_button_new_with_label ("close");
3027 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3028 GTK_SIGNAL_FUNC(gtk_widget_destroy),
3029 GTK_OBJECT (window));
3030 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3031 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3032 button, TRUE, TRUE, 0);
3033 gtk_widget_grab_default (button);
3034 gtk_widget_show (button);
3036 button = gtk_button_new_with_label ("start");
3037 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3038 GTK_SIGNAL_FUNC(start_timeout_test),
3040 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3041 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3042 button, TRUE, TRUE, 0);
3043 gtk_widget_show (button);
3045 button = gtk_button_new_with_label ("stop");
3046 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3047 GTK_SIGNAL_FUNC(stop_timeout_test),
3049 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3050 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3051 button, TRUE, TRUE, 0);
3052 gtk_widget_show (button);
3055 if (!GTK_WIDGET_VISIBLE (window))
3056 gtk_widget_show (window);
3058 gtk_widget_destroy (window);
3065 static int idle = 0;
3068 idle_test (GtkWidget *label)
3070 static int count = 0;
3071 static char buffer[32];
3073 sprintf (buffer, "count: %d", ++count);
3074 gtk_label_set (GTK_LABEL (label), buffer);
3080 start_idle_test (GtkWidget *widget,
3085 idle = gtk_idle_add ((GtkFunction) idle_test, label);
3090 stop_idle_test (GtkWidget *widget,
3095 gtk_idle_remove (idle);
3101 destroy_idle_test (GtkWidget *widget,
3104 destroy_window (widget, window);
3105 stop_idle_test (NULL, NULL);
3111 static GtkWidget *window = NULL;
3117 window = gtk_dialog_new ();
3119 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3120 GTK_SIGNAL_FUNC(destroy_idle_test),
3122 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3123 GTK_SIGNAL_FUNC(destroy_idle_test),
3126 gtk_window_set_title (GTK_WINDOW (window), "Idle Test");
3127 gtk_container_border_width (GTK_CONTAINER (window), 0);
3129 label = gtk_label_new ("count: 0");
3130 gtk_misc_set_padding (GTK_MISC (label), 10, 10);
3131 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
3132 label, TRUE, TRUE, 0);
3133 gtk_widget_show (label);
3135 button = gtk_button_new_with_label ("close");
3136 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
3137 GTK_SIGNAL_FUNC(gtk_widget_destroy),
3138 GTK_OBJECT (window));
3139 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3140 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3141 button, TRUE, TRUE, 0);
3142 gtk_widget_grab_default (button);
3143 gtk_widget_show (button);
3145 button = gtk_button_new_with_label ("start");
3146 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3147 GTK_SIGNAL_FUNC(start_idle_test),
3149 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3150 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3151 button, TRUE, TRUE, 0);
3152 gtk_widget_show (button);
3154 button = gtk_button_new_with_label ("stop");
3155 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3156 GTK_SIGNAL_FUNC(stop_idle_test),
3158 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3159 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
3160 button, TRUE, TRUE, 0);
3161 gtk_widget_show (button);
3164 if (!GTK_WIDGET_VISIBLE (window))
3165 gtk_widget_show (window);
3167 gtk_widget_destroy (window);
3171 test_destroy (GtkWidget *widget,
3174 destroy_window (widget, window);
3184 static GtkWidget *window = NULL;
3188 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3190 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3191 GTK_SIGNAL_FUNC(test_destroy),
3193 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3194 GTK_SIGNAL_FUNC(test_destroy),
3198 gtk_window_set_title (GTK_WINDOW (window), "test");
3199 gtk_container_border_width (GTK_CONTAINER (window), 0);
3202 if (!GTK_WIDGET_VISIBLE (window))
3204 gtk_widget_show (window);
3206 g_print ("create_test: start\n");
3208 g_print ("create_test: done\n");
3211 gtk_widget_destroy (window);
3216 * Main Window and Exit
3225 create_main_window ()
3232 { "buttons", create_buttons },
3233 { "toggle buttons", create_toggle_buttons },
3234 { "check buttons", create_check_buttons },
3235 { "radio buttons", create_radio_buttons },
3236 { "button box", create_button_box },
3237 { "reparent", create_reparent },
3238 { "pixmap", create_pixmap },
3239 { "tooltips", create_tooltips },
3240 { "menus", create_menus },
3241 { "scrolled windows", create_scrolled_windows },
3242 { "drawing areas", NULL },
3243 { "entry", create_entry },
3244 { "list", create_list },
3245 { "color selection", create_color_selection },
3246 { "file selection", create_file_selection },
3247 { "dialog", create_dialog },
3248 { "miscellaneous", NULL },
3249 { "range controls", create_range_controls },
3250 { "rulers", create_rulers },
3251 { "text", create_text },
3252 { "notebook", create_notebook },
3253 { "panes", create_panes },
3254 { "shapes", create_shapes },
3255 { "dnd", create_dnd },
3256 { "progress bar", create_progress_bar },
3257 { "preview color", create_color_preview },
3258 { "preview gray", create_gray_preview },
3259 { "gamma curve", create_gamma_curve },
3260 { "test scrolling", create_scroll_test },
3261 { "test selection", create_selection_test },
3262 { "test timeout", create_timeout_test },
3263 { "test idle", create_idle_test },
3264 { "test", create_test },
3266 int nbuttons = sizeof (buttons) / sizeof (buttons[0]);
3270 GtkWidget *scrolled_window;
3272 GtkWidget *separator;
3275 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
3276 gtk_widget_set_name (window, "main window");
3277 gtk_widget_set_usize (window, 200, 400);
3278 gtk_widget_set_uposition (window, 20, 20);
3280 gtk_signal_connect (GTK_OBJECT (window), "destroy",
3281 GTK_SIGNAL_FUNC(gtk_main_quit),
3283 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3284 GTK_SIGNAL_FUNC(gtk_main_quit),
3287 box1 = gtk_vbox_new (FALSE, 0);
3288 gtk_container_add (GTK_CONTAINER (window), box1);
3289 gtk_widget_show (box1);
3291 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
3292 gtk_container_border_width (GTK_CONTAINER (scrolled_window), 10);
3293 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
3294 GTK_POLICY_AUTOMATIC,
3295 GTK_POLICY_AUTOMATIC);
3296 gtk_box_pack_start (GTK_BOX (box1), scrolled_window, TRUE, TRUE, 0);
3297 gtk_widget_show (scrolled_window);
3299 box2 = gtk_vbox_new (FALSE, 0);
3300 gtk_container_border_width (GTK_CONTAINER (box2), 10);
3301 gtk_container_add (GTK_CONTAINER (scrolled_window), box2);
3302 gtk_widget_show (box2);
3304 for (i = 0; i < nbuttons; i++)
3306 button = gtk_button_new_with_label (buttons[i].label);
3307 if (buttons[i].func)
3308 gtk_signal_connect (GTK_OBJECT (button),
3310 GTK_SIGNAL_FUNC(buttons[i].func),
3313 gtk_widget_set_sensitive (button, FALSE);
3314 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
3315 gtk_widget_show (button);
3318 separator = gtk_hseparator_new ();
3319 gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
3320 gtk_widget_show (separator);
3322 box2 = gtk_vbox_new (FALSE, 10);
3323 gtk_container_border_width (GTK_CONTAINER (box2), 10);
3324 gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
3325 gtk_widget_show (box2);
3327 button = gtk_button_new_with_label ("close");
3328 gtk_signal_connect (GTK_OBJECT (button), "clicked",
3329 GTK_SIGNAL_FUNC(do_exit), NULL);
3330 gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
3331 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
3332 gtk_widget_grab_default (button);
3333 gtk_widget_show (button);
3335 gtk_widget_show (window);
3339 main (int argc, char *argv[])
3343 gtk_init (&argc, &argv);
3344 gtk_rc_parse ("testgtkrc");
3346 create_main_window ();