3 #include <gtk/gtkunixprint.h>
4 #include <gdk/gdkkeysyms.h>
9 #define SMALL_WIDTH 240
10 #define SMALL_HEIGHT 75
11 #define MEDIUM_WIDTH 240
12 #define MEDIUM_HEIGHT 165
13 #define LARGE_WIDTH 240
14 #define LARGE_HEIGHT 240
17 find_toplevel_window (Window xid)
19 Window root, parent, *children;
24 if (XQueryTree (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xid, &root,
25 &parent, &children, &nchildren) == 0)
27 g_warning ("Couldn't find window manager window");
41 adjust_size_callback (WidgetInfo *info)
52 gint target_width = 0;
53 gint target_height = 0;
55 window = gtk_widget_get_window (info->window);
56 toplevel = find_toplevel_window (GDK_WINDOW_XID (window));
57 XGetGeometry (GDK_WINDOW_XDISPLAY (window),
59 &root, &tx, &ty, &twidth, &theight, &tborder_width, &tdepth);
64 target_width = SMALL_WIDTH;
65 target_height = SMALL_HEIGHT;
68 target_width = MEDIUM_WIDTH;
69 target_height = MEDIUM_HEIGHT;
72 target_width = LARGE_WIDTH;
73 target_height = LARGE_HEIGHT;
76 target_width = twidth;
77 target_height = theight;
81 if (twidth > target_width ||
82 theight > target_height)
84 gtk_widget_set_size_request (info->window,
85 2 + target_width - (twidth - target_width), /* Dunno why I need the +2 fudge factor; */
86 2 + target_height - (theight - target_height));
92 realize_callback (GtkWidget *widget,
95 gdk_threads_add_timeout (500, (GSourceFunc)adjust_size_callback, info);
99 new_widget_info (const char *name,
105 info = g_new0 (WidgetInfo, 1);
106 info->name = g_strdup (name);
108 if (GTK_IS_WINDOW (widget))
110 info->window = widget;
111 gtk_window_set_resizable (GTK_WINDOW (info->window), FALSE);
112 info->include_decorations = TRUE;
113 g_signal_connect (info->window, "realize", G_CALLBACK (realize_callback), info);
117 info->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
118 gtk_window_set_has_resize_grip (GTK_WINDOW (info->window), FALSE);
119 info->include_decorations = FALSE;
120 gtk_widget_show_all (widget);
121 gtk_container_add (GTK_CONTAINER (info->window), widget);
123 info->no_focus = TRUE;
125 gtk_widget_set_app_paintable (info->window, TRUE);
126 g_signal_connect (info->window, "focus", G_CALLBACK (gtk_true), NULL);
127 gtk_container_set_border_width (GTK_CONTAINER (info->window), 12);
132 gtk_widget_set_size_request (info->window,
136 gtk_widget_set_size_request (info->window,
140 gtk_widget_set_size_request (info->window,
156 widget = gtk_button_new_with_mnemonic ("_Button");
157 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
158 gtk_container_add (GTK_CONTAINER (align), widget);
160 return new_widget_info ("button", align, SMALL);
170 widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
171 sw = gtk_switch_new ();
172 gtk_switch_set_active (GTK_SWITCH (sw), TRUE);
173 gtk_box_pack_start (GTK_BOX (widget), sw, TRUE, TRUE, 0);
174 sw = gtk_switch_new ();
175 gtk_box_pack_start (GTK_BOX (widget), sw, TRUE, TRUE, 0);
177 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
178 gtk_container_add (GTK_CONTAINER (align), widget);
180 return new_widget_info ("switch", align, SMALL);
184 create_toggle_button (void)
189 widget = gtk_toggle_button_new_with_mnemonic ("_Toggle Button");
190 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
191 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
192 gtk_container_add (GTK_CONTAINER (align), widget);
194 return new_widget_info ("toggle-button", align, SMALL);
198 create_check_button (void)
203 widget = gtk_check_button_new_with_mnemonic ("_Check Button");
204 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
205 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
206 gtk_container_add (GTK_CONTAINER (align), widget);
208 return new_widget_info ("check-button", align, SMALL);
212 create_link_button (void)
217 widget = gtk_link_button_new_with_label ("http://www.gtk.org", "Link Button");
218 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
219 gtk_container_add (GTK_CONTAINER (align), widget);
221 return new_widget_info ("link-button", align, SMALL);
224 #define G_TYPE_TEST_PERMISSION (g_test_permission_get_type ())
225 #define G_TEST_PERMISSION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \
226 G_TYPE_TEST_PERMISSION, \
228 #define G_IS_TEST_PERMISSION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \
229 G_TYPE_TEST_PERMISSION))
231 typedef struct _GTestPermission GTestPermission;
232 typedef struct _GTestPermissionClass GTestPermissionClass;
234 struct _GTestPermission
241 struct _GTestPermissionClass
243 GPermissionClass parent_class;
246 G_DEFINE_TYPE (GTestPermission, g_test_permission, G_TYPE_PERMISSION)
249 g_test_permission_init (GTestPermission *test)
251 g_permission_impl_update (G_PERMISSION (test), FALSE, TRUE, TRUE);
255 g_test_permission_class_init (GTestPermissionClass *class)
260 create_lockbutton (void)
265 widget = gtk_lock_button_new (g_object_new (G_TYPE_TEST_PERMISSION, NULL));
266 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
267 gtk_container_add (GTK_CONTAINER (align), widget);
269 return new_widget_info ("lock-button", align, SMALL);
278 widget = gtk_entry_new ();
279 gtk_entry_set_text (GTK_ENTRY (widget), "Entry");
280 gtk_editable_set_position (GTK_EDITABLE (widget), -1);
281 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
282 gtk_container_add (GTK_CONTAINER (align), widget);
284 return new_widget_info ("entry", align, SMALL);
294 widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
295 radio = gtk_radio_button_new_with_mnemonic (NULL, "Radio Button _One");
296 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
297 radio = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (radio), "Radio Button _Two");
298 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
299 radio = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (radio), "Radio Button T_hree");
300 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
301 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
302 gtk_container_add (GTK_CONTAINER (align), widget);
304 return new_widget_info ("radio-group", align, MEDIUM);
313 widget = gtk_label_new ("Label");
314 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
315 gtk_container_add (GTK_CONTAINER (align), widget);
317 return new_widget_info ("label", align, SMALL);
321 create_accel_label (void)
324 GtkWidget *widget, *button, *box;
325 GtkAccelGroup *accel_group;
327 widget = gtk_accel_label_new ("Accel Label");
329 button = gtk_button_new_with_label ("Quit");
330 gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (widget), button);
331 gtk_widget_set_no_show_all (button, TRUE);
333 box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
334 gtk_container_add (GTK_CONTAINER (box), widget);
335 gtk_container_add (GTK_CONTAINER (box), button);
337 gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (widget), button);
338 accel_group = gtk_accel_group_new();
340 info = new_widget_info ("accel-label", box, SMALL);
342 gtk_widget_add_accelerator (button, "activate", accel_group, GDK_KEY_Q, GDK_CONTROL_MASK,
343 GTK_ACCEL_VISIBLE | GTK_ACCEL_LOCKED);
349 create_combo_box_entry (void)
356 gtk_rc_parse_string ("style \"combo-box-entry-style\" {\n"
357 " GtkComboBox::appears-as-list = 1\n"
359 "widget_class \"GtkComboBoxEntry\" style \"combo-box-entry-style\"\n" );
361 model = (GtkTreeModel *)gtk_list_store_new (1, G_TYPE_STRING);
362 widget = g_object_new (GTK_TYPE_COMBO_BOX,
365 "entry-text-column", 0,
367 g_object_unref (model);
369 child = gtk_bin_get_child (GTK_BIN (widget));
370 gtk_entry_set_text (GTK_ENTRY (child), "Combo Box Entry");
371 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
372 gtk_container_add (GTK_CONTAINER (align), widget);
374 return new_widget_info ("combo-box-entry", align, SMALL);
378 create_combo_box (void)
383 gtk_rc_parse_string ("style \"combo-box-style\" {\n"
384 " GtkComboBox::appears-as-list = 0\n"
386 "widget_class \"GtkComboBox\" style \"combo-box-style\"\n" );
388 widget = gtk_combo_box_text_new ();
389 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Combo Box");
390 gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
391 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
392 gtk_container_add (GTK_CONTAINER (align), widget);
394 return new_widget_info ("combo-box", align, SMALL);
398 create_recent_chooser_dialog (void)
403 widget = gtk_recent_chooser_dialog_new ("Recent Chooser Dialog",
405 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
406 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
408 gtk_window_set_default_size (GTK_WINDOW (widget), 505, 305);
410 info = new_widget_info ("recentchooserdialog", widget, ASIS);
411 info->include_decorations = TRUE;
417 create_text_view (void)
420 GtkWidget *text_view;
422 widget = gtk_frame_new (NULL);
423 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
424 text_view = gtk_text_view_new ();
425 gtk_container_add (GTK_CONTAINER (widget), text_view);
426 /* Bad hack to add some size to the widget */
427 gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)),
428 "Multiline\nText\n\n", -1);
429 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
431 return new_widget_info ("multiline-text", widget, MEDIUM);
435 create_tree_view (void)
438 GtkWidget *tree_view;
439 GtkListStore *list_store;
443 widget = gtk_frame_new (NULL);
444 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
445 list_store = gtk_list_store_new (1, G_TYPE_STRING);
446 gtk_list_store_append (list_store, &iter);
447 gtk_list_store_set (list_store, &iter, 0, "Line One", -1);
448 gtk_list_store_append (list_store, &iter);
449 gtk_list_store_set (list_store, &iter, 0, "Line Two", -1);
450 gtk_list_store_append (list_store, &iter);
451 gtk_list_store_set (list_store, &iter, 0, "Line Three", -1);
453 tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store));
454 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
456 gtk_cell_renderer_text_new (),
458 gtk_container_add (GTK_CONTAINER (widget), tree_view);
460 info = new_widget_info ("list-and-tree", widget, MEDIUM);
461 info->no_focus = FALSE;
467 create_icon_view (void)
472 GtkWidget *icon_view;
473 GtkListStore *list_store;
478 widget = gtk_frame_new (NULL);
479 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
480 list_store = gtk_list_store_new (2, G_TYPE_STRING, GDK_TYPE_PIXBUF);
481 gtk_list_store_append (list_store, &iter);
482 pixbuf = gdk_pixbuf_new_from_file ("folder.png", NULL);
483 gtk_list_store_set (list_store, &iter, 0, "One", 1, pixbuf, -1);
484 gtk_list_store_append (list_store, &iter);
485 pixbuf = gdk_pixbuf_new_from_file ("gnome.png", NULL);
486 gtk_list_store_set (list_store, &iter, 0, "Two", 1, pixbuf, -1);
488 icon_view = gtk_icon_view_new();
490 gtk_icon_view_set_model (GTK_ICON_VIEW (icon_view), GTK_TREE_MODEL (list_store));
491 gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), 0);
492 gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), 1);
494 gtk_container_add (GTK_CONTAINER (widget), icon_view);
496 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
497 align = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
498 gtk_container_add (GTK_CONTAINER (align), widget);
499 gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
500 gtk_box_pack_start (GTK_BOX (vbox),
501 gtk_label_new ("Icon View"),
504 info = new_widget_info ("icon-view", vbox, MEDIUM);
505 info->no_focus = FALSE;
511 create_color_button (void)
518 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
519 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
520 color.red = 0x1e<<8; /* Go Gagne! */
521 color.green = 0x90<<8;
522 color.blue = 0xff<<8;
523 picker = gtk_color_button_new_with_color (&color);
524 gtk_container_add (GTK_CONTAINER (align), picker);
525 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
526 gtk_box_pack_start (GTK_BOX (vbox),
527 gtk_label_new ("Color Button"),
530 return new_widget_info ("color-button", vbox, SMALL);
534 create_font_button (void)
540 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
541 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
542 picker = gtk_font_button_new_with_font ("Sans Serif 10");
543 gtk_container_add (GTK_CONTAINER (align), picker);
544 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
545 gtk_box_pack_start (GTK_BOX (vbox),
546 gtk_label_new ("Font Button"),
549 return new_widget_info ("font-button", vbox, SMALL);
553 create_file_button (void)
560 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
561 vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
562 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
563 picker = gtk_file_chooser_button_new ("File Chooser Button",
564 GTK_FILE_CHOOSER_ACTION_OPEN);
565 gtk_widget_set_size_request (picker, 150, -1);
566 gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (picker), "/etc/yum.conf");
567 gtk_container_add (GTK_CONTAINER (align), picker);
568 gtk_box_pack_start (GTK_BOX (vbox2), align, FALSE, FALSE, 0);
569 gtk_box_pack_start (GTK_BOX (vbox2),
570 gtk_label_new ("File Button (Files)"),
573 gtk_box_pack_start (GTK_BOX (vbox),
574 vbox2, TRUE, TRUE, 0);
575 gtk_box_pack_start (GTK_BOX (vbox),
576 gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
579 vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
580 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
581 picker = gtk_file_chooser_button_new ("File Chooser Button",
582 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
583 gtk_widget_set_size_request (picker, 150, -1);
584 gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (picker), "/");
585 gtk_container_add (GTK_CONTAINER (align), picker);
586 gtk_box_pack_start (GTK_BOX (vbox2), align, FALSE, FALSE, 0);
587 gtk_box_pack_start (GTK_BOX (vbox2),
588 gtk_label_new ("File Button (Select Folder)"),
590 gtk_box_pack_start (GTK_BOX (vbox),
591 vbox2, TRUE, TRUE, 0);
593 return new_widget_info ("file-button", vbox, MEDIUM);
597 create_separator (void)
602 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
603 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
604 gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
605 gtk_box_pack_start (GTK_BOX (hbox),
606 gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
608 gtk_box_pack_start (GTK_BOX (hbox),
609 gtk_separator_new (GTK_ORIENTATION_VERTICAL),
611 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
612 gtk_box_pack_start (GTK_BOX (vbox),
613 g_object_new (GTK_TYPE_LABEL,
614 "label", "Horizontal and Vertical\nSeparators",
615 "justify", GTK_JUSTIFY_CENTER,
618 return new_widget_info ("separator", vbox, MEDIUM);
628 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
629 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
630 gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
631 pane = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
632 gtk_paned_pack1 (GTK_PANED (pane),
633 g_object_new (GTK_TYPE_FRAME,
634 "shadow", GTK_SHADOW_IN,
637 gtk_paned_pack2 (GTK_PANED (pane),
638 g_object_new (GTK_TYPE_FRAME,
639 "shadow", GTK_SHADOW_IN,
642 gtk_box_pack_start (GTK_BOX (hbox),
645 pane = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
646 gtk_paned_pack1 (GTK_PANED (pane),
647 g_object_new (GTK_TYPE_FRAME,
648 "shadow", GTK_SHADOW_IN,
651 gtk_paned_pack2 (GTK_PANED (pane),
652 g_object_new (GTK_TYPE_FRAME,
653 "shadow", GTK_SHADOW_IN,
656 gtk_box_pack_start (GTK_BOX (hbox),
659 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
660 gtk_box_pack_start (GTK_BOX (vbox),
661 g_object_new (GTK_TYPE_LABEL,
662 "label", "Horizontal and Vertical\nPanes",
663 "justify", GTK_JUSTIFY_CENTER,
666 return new_widget_info ("panes", vbox, MEDIUM);
674 widget = gtk_frame_new ("Frame");
676 return new_widget_info ("frame", widget, MEDIUM);
685 widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
686 info = new_widget_info ("window", widget, MEDIUM);
687 info->include_decorations = TRUE;
688 gtk_window_set_title (GTK_WINDOW (info->window), "Window");
694 create_colorsel (void)
698 GtkColorSelection *colorsel;
699 GtkColorSelectionDialog *selection_dialog;
702 widget = gtk_color_selection_dialog_new ("Color Selection Dialog");
703 selection_dialog = GTK_COLOR_SELECTION_DIALOG (widget);
704 colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
710 gtk_color_selection_set_previous_rgba (colorsel, &rgba);
716 gtk_color_selection_set_current_rgba (colorsel, &rgba);
718 info = new_widget_info ("colorsel", widget, ASIS);
719 info->include_decorations = TRUE;
725 create_fontsel (void)
730 widget = gtk_font_selection_dialog_new ("Font Selection Dialog");
731 info = new_widget_info ("fontsel", widget, ASIS);
732 info->include_decorations = TRUE;
738 create_filesel (void)
743 widget = gtk_file_chooser_dialog_new ("File Chooser Dialog",
745 GTK_FILE_CHOOSER_ACTION_OPEN,
746 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
747 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
749 gtk_window_set_default_size (GTK_WINDOW (widget), 505, 305);
751 info = new_widget_info ("filechooser", widget, ASIS);
752 info->include_decorations = TRUE;
758 create_print_dialog (void)
763 widget = gtk_print_unix_dialog_new ("Print Dialog", NULL);
764 gtk_widget_set_size_request (widget, 505, 350);
765 info = new_widget_info ("printdialog", widget, ASIS);
766 info->include_decorations = TRUE;
772 create_page_setup_dialog (void)
776 GtkPageSetup *page_setup;
777 GtkPrintSettings *settings;
779 page_setup = gtk_page_setup_new ();
780 settings = gtk_print_settings_new ();
781 widget = gtk_page_setup_unix_dialog_new ("Page Setup Dialog", NULL);
782 gtk_page_setup_unix_dialog_set_page_setup (GTK_PAGE_SETUP_UNIX_DIALOG (widget),
784 gtk_page_setup_unix_dialog_set_print_settings (GTK_PAGE_SETUP_UNIX_DIALOG (widget),
787 info = new_widget_info ("pagesetupdialog", widget, ASIS);
788 gtk_widget_set_app_paintable (info->window, FALSE);
789 info->include_decorations = TRUE;
795 create_toolbar (void)
797 GtkWidget *widget, *menu;
800 widget = gtk_toolbar_new ();
802 item = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);
803 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
805 item = gtk_menu_tool_button_new_from_stock (GTK_STOCK_OPEN);
806 menu = gtk_menu_new ();
807 gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (item), menu);
808 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
810 item = gtk_tool_button_new_from_stock (GTK_STOCK_REFRESH);
811 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
813 gtk_toolbar_set_show_arrow (GTK_TOOLBAR (widget), FALSE);
815 return new_widget_info ("toolbar", widget, SMALL);
819 create_toolpalette (void)
821 GtkWidget *widget, *group;
824 widget = gtk_tool_palette_new ();
825 group = gtk_tool_item_group_new ("Tools");
826 gtk_container_add (GTK_CONTAINER (widget), group);
827 item = gtk_tool_button_new_from_stock (GTK_STOCK_ABOUT);
828 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
829 item = gtk_tool_button_new_from_stock (GTK_STOCK_FILE);
830 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
831 item = gtk_tool_button_new_from_stock (GTK_STOCK_CONNECT);
832 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
834 group = gtk_tool_item_group_new ("More tools");
835 gtk_container_add (GTK_CONTAINER (widget), group);
836 item = gtk_tool_button_new_from_stock (GTK_STOCK_CUT);
837 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
838 item = gtk_tool_button_new_from_stock (GTK_STOCK_EXECUTE);
839 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
840 item = gtk_tool_button_new_from_stock (GTK_STOCK_CANCEL);
841 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
843 return new_widget_info ("toolpalette", widget, MEDIUM);
847 create_menubar (void)
849 GtkWidget *widget, *vbox, *align, *item;
851 widget = gtk_menu_bar_new ();
853 item = gtk_menu_item_new_with_mnemonic ("_File");
854 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
856 item = gtk_menu_item_new_with_mnemonic ("_Edit");
857 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
859 item = gtk_menu_item_new_with_mnemonic ("_Help");
860 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
862 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
863 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
864 gtk_container_add (GTK_CONTAINER (align), widget);
865 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
866 gtk_box_pack_start (GTK_BOX (vbox),
867 gtk_label_new ("Menu Bar"),
870 return new_widget_info ("menubar", vbox, SMALL);
874 create_message_dialog (void)
878 widget = gtk_message_dialog_new (NULL,
883 gtk_window_set_icon_name (GTK_WINDOW (widget), "edit-copy");
884 gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (widget),
885 "<b>Message Dialog</b>\n\nWith secondary text");
886 return new_widget_info ("messagedialog", widget, ASIS);
890 create_about_dialog (void)
893 const gchar *authors[] = {
901 widget = gtk_about_dialog_new ();
902 g_object_set (widget,
903 "program-name", "GTK+ Code Demos",
904 "version", PACKAGE_VERSION,
905 "copyright", "(C) 1997-2009 The GTK+ Team",
906 "website", "http://www.gtk.org",
907 "comments", "Program to demonstrate GTK+ functions.",
908 "logo-icon-name", "help-about",
909 "title", "About GTK+ Code Demos",
912 gtk_window_set_icon_name (GTK_WINDOW (widget), "help-about");
913 return new_widget_info ("aboutdialog", widget, ASIS);
917 create_notebook (void)
921 widget = gtk_notebook_new ();
923 gtk_notebook_append_page (GTK_NOTEBOOK (widget),
924 gtk_label_new ("Notebook"),
926 gtk_notebook_append_page (GTK_NOTEBOOK (widget), gtk_event_box_new (), NULL);
927 gtk_notebook_append_page (GTK_NOTEBOOK (widget), gtk_event_box_new (), NULL);
929 return new_widget_info ("notebook", widget, MEDIUM);
933 create_progressbar (void)
939 widget = gtk_progress_bar_new ();
940 gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (widget), 0.5);
942 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
943 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
944 gtk_container_add (GTK_CONTAINER (align), widget);
945 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
946 gtk_box_pack_start (GTK_BOX (vbox),
947 gtk_label_new ("Progress Bar"),
950 return new_widget_info ("progressbar", vbox, SMALL);
954 create_scrolledwindow (void)
956 GtkWidget *scrolledwin, *label;
958 scrolledwin = gtk_scrolled_window_new (NULL, NULL);
959 label = gtk_label_new ("Scrolled Window");
961 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolledwin),
964 return new_widget_info ("scrolledwindow", scrolledwin, MEDIUM);
968 create_spinbutton (void)
971 GtkWidget *vbox, *align;
973 widget = gtk_spin_button_new_with_range (0.0, 100.0, 1.0);
975 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
976 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
977 gtk_container_add (GTK_CONTAINER (align), widget);
978 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
979 gtk_box_pack_start (GTK_BOX (vbox),
980 gtk_label_new ("Spin Button"),
983 return new_widget_info ("spinbutton", vbox, SMALL);
987 create_statusbar (void)
991 GtkWidget *vbox, *align;
993 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
994 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
995 gtk_container_add (GTK_CONTAINER (align), gtk_label_new ("Status Bar"));
996 gtk_box_pack_start (GTK_BOX (vbox),
999 widget = gtk_statusbar_new ();
1000 align = gtk_alignment_new (0.5, 1.0, 1.0, 0.0);
1001 gtk_container_add (GTK_CONTAINER (align), widget);
1002 gtk_statusbar_push (GTK_STATUSBAR (widget), 0, "Hold on...");
1004 gtk_box_pack_end (GTK_BOX (vbox), align, FALSE, FALSE, 0);
1006 info = new_widget_info ("statusbar", vbox, SMALL);
1007 gtk_container_set_border_width (GTK_CONTAINER (info->window), 0);
1013 create_scales (void)
1018 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
1019 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1020 gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
1021 gtk_box_pack_start (GTK_BOX (hbox),
1022 gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
1025 gtk_box_pack_start (GTK_BOX (hbox),
1026 gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
1029 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
1030 gtk_box_pack_start (GTK_BOX (vbox),
1031 g_object_new (GTK_TYPE_LABEL,
1032 "label", "Horizontal and Vertical\nScales",
1033 "justify", GTK_JUSTIFY_CENTER,
1036 return new_widget_info ("scales", vbox, MEDIUM);}
1042 GtkWidget *align, *vbox;
1044 widget = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING,
1047 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
1048 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
1049 gtk_container_add (GTK_CONTAINER (align), widget);
1050 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
1051 gtk_box_pack_start (GTK_BOX (vbox),
1052 gtk_label_new ("Image"),
1055 return new_widget_info ("image", vbox, SMALL);
1059 create_spinner (void)
1062 GtkWidget *align, *vbox;
1064 widget = gtk_spinner_new ();
1065 gtk_widget_set_size_request (widget, 24, 24);
1067 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
1068 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
1069 gtk_container_add (GTK_CONTAINER (align), widget);
1070 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
1071 gtk_box_pack_start (GTK_BOX (vbox),
1072 gtk_label_new ("Spinner"),
1075 return new_widget_info ("spinner", vbox, SMALL);
1079 create_volume_button (void)
1081 GtkWidget *button, *widget;
1082 GtkWidget *plus_button;
1084 button = gtk_volume_button_new ();
1085 gtk_scale_button_set_value (GTK_SCALE_BUTTON (button), 33);
1086 /* Hack: get the private dock */
1087 plus_button = gtk_scale_button_get_plus_button (GTK_SCALE_BUTTON (button));
1088 widget = gtk_widget_get_parent (gtk_widget_get_parent (gtk_widget_get_parent (plus_button)));
1089 gtk_widget_show_all (widget);
1090 return new_widget_info ("volumebutton", widget, ASIS);
1094 create_assistant (void)
1097 GtkWidget *page1, *page2;
1100 widget = gtk_assistant_new ();
1101 gtk_window_set_title (GTK_WINDOW (widget), "Assistant");
1103 page1 = gtk_label_new ("Assistant");
1104 gtk_widget_show (page1);
1105 gtk_widget_set_size_request (page1, 300, 140);
1106 gtk_assistant_prepend_page (GTK_ASSISTANT (widget), page1);
1107 gtk_assistant_set_page_title (GTK_ASSISTANT (widget), page1, "Assistant page");
1108 gtk_assistant_set_page_complete (GTK_ASSISTANT (widget), page1, TRUE);
1110 page2 = gtk_label_new (NULL);
1111 gtk_widget_show (page2);
1112 gtk_assistant_append_page (GTK_ASSISTANT (widget), page2);
1113 gtk_assistant_set_page_type (GTK_ASSISTANT (widget), page2, GTK_ASSISTANT_PAGE_CONFIRM);
1115 info = new_widget_info ("assistant", widget, ASIS);
1116 info->include_decorations = TRUE;
1122 create_appchooserbutton (void)
1125 GtkWidget *align, *vbox;
1127 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
1128 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
1129 picker = gtk_app_chooser_button_new ("text/plain");
1130 gtk_container_add (GTK_CONTAINER (align), picker);
1131 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
1132 gtk_box_pack_start (GTK_BOX (vbox),
1133 gtk_label_new ("Application Button"),
1136 return new_widget_info ("appchooserbutton", vbox, SMALL);
1140 create_appchooserdialog (void)
1145 widget = gtk_app_chooser_dialog_new_for_content_type (NULL, 0, "image/png");
1146 gtk_window_set_default_size (GTK_WINDOW (widget), 200, 300);
1148 info = new_widget_info ("appchooserdialog", widget, ASIS);
1149 info->include_decorations = TRUE;
1155 get_all_widgets (void)
1157 GList *retval = NULL;
1159 retval = g_list_prepend (retval, create_toolpalette ());
1160 retval = g_list_prepend (retval, create_spinner ());
1161 retval = g_list_prepend (retval, create_about_dialog ());
1162 retval = g_list_prepend (retval, create_accel_label ());
1163 retval = g_list_prepend (retval, create_button ());
1164 retval = g_list_prepend (retval, create_check_button ());
1165 retval = g_list_prepend (retval, create_color_button ());
1166 retval = g_list_prepend (retval, create_combo_box ());
1167 retval = g_list_prepend (retval, create_combo_box_entry ());
1168 retval = g_list_prepend (retval, create_entry ());
1169 retval = g_list_prepend (retval, create_file_button ());
1170 retval = g_list_prepend (retval, create_font_button ());
1171 retval = g_list_prepend (retval, create_frame ());
1172 retval = g_list_prepend (retval, create_icon_view ());
1173 retval = g_list_prepend (retval, create_image ());
1174 retval = g_list_prepend (retval, create_label ());
1175 retval = g_list_prepend (retval, create_link_button ());
1176 retval = g_list_prepend (retval, create_menubar ());
1177 retval = g_list_prepend (retval, create_message_dialog ());
1178 retval = g_list_prepend (retval, create_notebook ());
1179 retval = g_list_prepend (retval, create_panes ());
1180 retval = g_list_prepend (retval, create_progressbar ());
1181 retval = g_list_prepend (retval, create_radio ());
1182 retval = g_list_prepend (retval, create_scales ());
1183 retval = g_list_prepend (retval, create_scrolledwindow ());
1184 retval = g_list_prepend (retval, create_separator ());
1185 retval = g_list_prepend (retval, create_spinbutton ());
1186 retval = g_list_prepend (retval, create_statusbar ());
1187 retval = g_list_prepend (retval, create_text_view ());
1188 retval = g_list_prepend (retval, create_toggle_button ());
1189 retval = g_list_prepend (retval, create_toolbar ());
1190 retval = g_list_prepend (retval, create_tree_view ());
1191 retval = g_list_prepend (retval, create_window ());
1192 retval = g_list_prepend (retval, create_colorsel ());
1193 retval = g_list_prepend (retval, create_filesel ());
1194 retval = g_list_prepend (retval, create_fontsel ());
1195 retval = g_list_prepend (retval, create_assistant ());
1196 retval = g_list_prepend (retval, create_recent_chooser_dialog ());
1197 retval = g_list_prepend (retval, create_page_setup_dialog ());
1198 retval = g_list_prepend (retval, create_print_dialog ());
1199 retval = g_list_prepend (retval, create_volume_button ());
1200 retval = g_list_prepend (retval, create_switch ());
1201 retval = g_list_prepend (retval, create_appchooserbutton ());
1202 retval = g_list_prepend (retval, create_appchooserdialog ());
1203 retval = g_list_prepend (retval, create_lockbutton ());