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);
230 widget = gtk_entry_new ();
231 gtk_entry_set_text (GTK_ENTRY (widget), "Entry");
232 gtk_editable_set_position (GTK_EDITABLE (widget), -1);
233 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
234 gtk_container_add (GTK_CONTAINER (align), widget);
236 return new_widget_info ("entry", align, SMALL);
246 widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
247 radio = gtk_radio_button_new_with_mnemonic (NULL, "Radio Button _One");
248 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
249 radio = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (radio), "Radio Button _Two");
250 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
251 radio = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (radio), "Radio Button T_hree");
252 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
253 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
254 gtk_container_add (GTK_CONTAINER (align), widget);
256 return new_widget_info ("radio-group", align, MEDIUM);
265 widget = gtk_label_new ("Label");
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 ("label", align, SMALL);
273 create_accel_label (void)
276 GtkWidget *widget, *button, *box;
277 GtkAccelGroup *accel_group;
279 widget = gtk_accel_label_new ("Accel Label");
281 button = gtk_button_new_with_label ("Quit");
282 gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (widget), button);
283 gtk_widget_set_no_show_all (button, TRUE);
285 box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
286 gtk_container_add (GTK_CONTAINER (box), widget);
287 gtk_container_add (GTK_CONTAINER (box), button);
289 gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (widget), button);
290 accel_group = gtk_accel_group_new();
292 info = new_widget_info ("accel-label", box, SMALL);
294 gtk_widget_add_accelerator (button, "activate", accel_group, GDK_KEY_Q, GDK_CONTROL_MASK,
295 GTK_ACCEL_VISIBLE | GTK_ACCEL_LOCKED);
301 create_combo_box_entry (void)
308 gtk_rc_parse_string ("style \"combo-box-entry-style\" {\n"
309 " GtkComboBox::appears-as-list = 1\n"
311 "widget_class \"GtkComboBoxEntry\" style \"combo-box-entry-style\"\n" );
313 model = (GtkTreeModel *)gtk_list_store_new (1, G_TYPE_STRING);
314 widget = g_object_new (GTK_TYPE_COMBO_BOX,
317 "entry-text-column", 0,
319 g_object_unref (model);
321 child = gtk_bin_get_child (GTK_BIN (widget));
322 gtk_entry_set_text (GTK_ENTRY (child), "Combo Box Entry");
323 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
324 gtk_container_add (GTK_CONTAINER (align), widget);
326 return new_widget_info ("combo-box-entry", align, SMALL);
330 create_combo_box (void)
335 gtk_rc_parse_string ("style \"combo-box-style\" {\n"
336 " GtkComboBox::appears-as-list = 0\n"
338 "widget_class \"GtkComboBox\" style \"combo-box-style\"\n" );
340 widget = gtk_combo_box_text_new ();
341 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Combo Box");
342 gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
343 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
344 gtk_container_add (GTK_CONTAINER (align), widget);
346 return new_widget_info ("combo-box", align, SMALL);
350 create_recent_chooser_dialog (void)
355 widget = gtk_recent_chooser_dialog_new ("Recent Chooser Dialog",
357 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
358 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
360 gtk_window_set_default_size (GTK_WINDOW (widget), 505, 305);
362 info = new_widget_info ("recentchooserdialog", widget, ASIS);
363 info->include_decorations = TRUE;
369 create_text_view (void)
372 GtkWidget *text_view;
374 widget = gtk_frame_new (NULL);
375 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
376 text_view = gtk_text_view_new ();
377 gtk_container_add (GTK_CONTAINER (widget), text_view);
378 /* Bad hack to add some size to the widget */
379 gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)),
380 "Multiline\nText\n\n", -1);
381 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
383 return new_widget_info ("multiline-text", widget, MEDIUM);
387 create_tree_view (void)
390 GtkWidget *tree_view;
391 GtkListStore *list_store;
395 widget = gtk_frame_new (NULL);
396 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
397 list_store = gtk_list_store_new (1, G_TYPE_STRING);
398 gtk_list_store_append (list_store, &iter);
399 gtk_list_store_set (list_store, &iter, 0, "Line One", -1);
400 gtk_list_store_append (list_store, &iter);
401 gtk_list_store_set (list_store, &iter, 0, "Line Two", -1);
402 gtk_list_store_append (list_store, &iter);
403 gtk_list_store_set (list_store, &iter, 0, "Line Three", -1);
405 tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store));
406 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
408 gtk_cell_renderer_text_new (),
410 gtk_container_add (GTK_CONTAINER (widget), tree_view);
412 info = new_widget_info ("list-and-tree", widget, MEDIUM);
413 info->no_focus = FALSE;
419 create_icon_view (void)
424 GtkWidget *icon_view;
425 GtkListStore *list_store;
430 widget = gtk_frame_new (NULL);
431 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
432 list_store = gtk_list_store_new (2, G_TYPE_STRING, GDK_TYPE_PIXBUF);
433 gtk_list_store_append (list_store, &iter);
434 pixbuf = gdk_pixbuf_new_from_file ("folder.png", NULL);
435 gtk_list_store_set (list_store, &iter, 0, "One", 1, pixbuf, -1);
436 gtk_list_store_append (list_store, &iter);
437 pixbuf = gdk_pixbuf_new_from_file ("gnome.png", NULL);
438 gtk_list_store_set (list_store, &iter, 0, "Two", 1, pixbuf, -1);
440 icon_view = gtk_icon_view_new();
442 gtk_icon_view_set_model (GTK_ICON_VIEW (icon_view), GTK_TREE_MODEL (list_store));
443 gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), 0);
444 gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), 1);
446 gtk_container_add (GTK_CONTAINER (widget), icon_view);
448 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
449 align = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
450 gtk_container_add (GTK_CONTAINER (align), widget);
451 gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
452 gtk_box_pack_start (GTK_BOX (vbox),
453 gtk_label_new ("Icon View"),
456 info = new_widget_info ("icon-view", vbox, MEDIUM);
457 info->no_focus = FALSE;
463 create_color_button (void)
470 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
471 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
472 color.red = 0x1e<<8; /* Go Gagne! */
473 color.green = 0x90<<8;
474 color.blue = 0xff<<8;
475 picker = gtk_color_button_new_with_color (&color);
476 gtk_container_add (GTK_CONTAINER (align), picker);
477 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
478 gtk_box_pack_start (GTK_BOX (vbox),
479 gtk_label_new ("Color Button"),
482 return new_widget_info ("color-button", vbox, SMALL);
486 create_font_button (void)
492 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
493 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
494 picker = gtk_font_button_new_with_font ("Sans Serif 10");
495 gtk_container_add (GTK_CONTAINER (align), picker);
496 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
497 gtk_box_pack_start (GTK_BOX (vbox),
498 gtk_label_new ("Font Button"),
501 return new_widget_info ("font-button", vbox, SMALL);
505 create_file_button (void)
512 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
513 vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
514 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
515 picker = gtk_file_chooser_button_new ("File Chooser Button",
516 GTK_FILE_CHOOSER_ACTION_OPEN);
517 gtk_widget_set_size_request (picker, 150, -1);
518 gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (picker), "/etc/yum.conf");
519 gtk_container_add (GTK_CONTAINER (align), picker);
520 gtk_box_pack_start (GTK_BOX (vbox2), align, FALSE, FALSE, 0);
521 gtk_box_pack_start (GTK_BOX (vbox2),
522 gtk_label_new ("File Button (Files)"),
525 gtk_box_pack_start (GTK_BOX (vbox),
526 vbox2, TRUE, TRUE, 0);
527 gtk_box_pack_start (GTK_BOX (vbox),
528 gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
531 vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
532 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
533 picker = gtk_file_chooser_button_new ("File Chooser Button",
534 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
535 gtk_widget_set_size_request (picker, 150, -1);
536 gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (picker), "/");
537 gtk_container_add (GTK_CONTAINER (align), picker);
538 gtk_box_pack_start (GTK_BOX (vbox2), align, FALSE, FALSE, 0);
539 gtk_box_pack_start (GTK_BOX (vbox2),
540 gtk_label_new ("File Button (Select Folder)"),
542 gtk_box_pack_start (GTK_BOX (vbox),
543 vbox2, TRUE, TRUE, 0);
545 return new_widget_info ("file-button", vbox, MEDIUM);
549 create_separator (void)
554 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
555 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
556 gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
557 gtk_box_pack_start (GTK_BOX (hbox),
558 gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
560 gtk_box_pack_start (GTK_BOX (hbox),
561 gtk_separator_new (GTK_ORIENTATION_VERTICAL),
563 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
564 gtk_box_pack_start (GTK_BOX (vbox),
565 g_object_new (GTK_TYPE_LABEL,
566 "label", "Horizontal and Vertical\nSeparators",
567 "justify", GTK_JUSTIFY_CENTER,
570 return new_widget_info ("separator", vbox, MEDIUM);
580 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
581 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
582 gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
583 pane = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
584 gtk_paned_pack1 (GTK_PANED (pane),
585 g_object_new (GTK_TYPE_FRAME,
586 "shadow", GTK_SHADOW_IN,
589 gtk_paned_pack2 (GTK_PANED (pane),
590 g_object_new (GTK_TYPE_FRAME,
591 "shadow", GTK_SHADOW_IN,
594 gtk_box_pack_start (GTK_BOX (hbox),
597 pane = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
598 gtk_paned_pack1 (GTK_PANED (pane),
599 g_object_new (GTK_TYPE_FRAME,
600 "shadow", GTK_SHADOW_IN,
603 gtk_paned_pack2 (GTK_PANED (pane),
604 g_object_new (GTK_TYPE_FRAME,
605 "shadow", GTK_SHADOW_IN,
608 gtk_box_pack_start (GTK_BOX (hbox),
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\nPanes",
615 "justify", GTK_JUSTIFY_CENTER,
618 return new_widget_info ("panes", vbox, MEDIUM);
626 widget = gtk_frame_new ("Frame");
628 return new_widget_info ("frame", widget, MEDIUM);
637 widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
638 info = new_widget_info ("window", widget, MEDIUM);
639 info->include_decorations = TRUE;
640 gtk_window_set_title (GTK_WINDOW (info->window), "Window");
646 create_colorsel (void)
650 GtkColorSelection *colorsel;
651 GtkColorSelectionDialog *selection_dialog;
654 widget = gtk_color_selection_dialog_new ("Color Selection Dialog");
655 selection_dialog = GTK_COLOR_SELECTION_DIALOG (widget);
656 colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
659 color.green = 0xdbdb;
662 gtk_color_selection_set_previous_color (colorsel, &color);
665 color.green = 0x9393;
668 gtk_color_selection_set_current_color (colorsel, &color);
670 info = new_widget_info ("colorsel", widget, ASIS);
671 info->include_decorations = TRUE;
677 create_fontsel (void)
682 widget = gtk_font_selection_dialog_new ("Font Selection Dialog");
683 info = new_widget_info ("fontsel", widget, ASIS);
684 info->include_decorations = TRUE;
690 create_filesel (void)
695 widget = gtk_file_chooser_dialog_new ("File Chooser Dialog",
697 GTK_FILE_CHOOSER_ACTION_OPEN,
698 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
699 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
701 gtk_window_set_default_size (GTK_WINDOW (widget), 505, 305);
703 info = new_widget_info ("filechooser", widget, ASIS);
704 info->include_decorations = TRUE;
710 create_print_dialog (void)
715 widget = gtk_print_unix_dialog_new ("Print Dialog", NULL);
716 gtk_widget_set_size_request (widget, 505, 350);
717 info = new_widget_info ("printdialog", widget, ASIS);
718 info->include_decorations = TRUE;
724 create_page_setup_dialog (void)
728 GtkPageSetup *page_setup;
729 GtkPrintSettings *settings;
731 page_setup = gtk_page_setup_new ();
732 settings = gtk_print_settings_new ();
733 widget = gtk_page_setup_unix_dialog_new ("Page Setup Dialog", NULL);
734 gtk_page_setup_unix_dialog_set_page_setup (GTK_PAGE_SETUP_UNIX_DIALOG (widget),
736 gtk_page_setup_unix_dialog_set_print_settings (GTK_PAGE_SETUP_UNIX_DIALOG (widget),
739 info = new_widget_info ("pagesetupdialog", widget, ASIS);
740 gtk_widget_set_app_paintable (info->window, FALSE);
741 info->include_decorations = TRUE;
747 create_toolbar (void)
749 GtkWidget *widget, *menu;
752 widget = gtk_toolbar_new ();
754 item = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);
755 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
757 item = gtk_menu_tool_button_new_from_stock (GTK_STOCK_OPEN);
758 menu = gtk_menu_new ();
759 gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (item), menu);
760 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
762 item = gtk_tool_button_new_from_stock (GTK_STOCK_REFRESH);
763 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
765 gtk_toolbar_set_show_arrow (GTK_TOOLBAR (widget), FALSE);
767 return new_widget_info ("toolbar", widget, SMALL);
771 create_toolpalette (void)
773 GtkWidget *widget, *group;
776 widget = gtk_tool_palette_new ();
777 group = gtk_tool_item_group_new ("Tools");
778 gtk_container_add (GTK_CONTAINER (widget), group);
779 item = gtk_tool_button_new_from_stock (GTK_STOCK_ABOUT);
780 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
781 item = gtk_tool_button_new_from_stock (GTK_STOCK_FILE);
782 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
783 item = gtk_tool_button_new_from_stock (GTK_STOCK_CONNECT);
784 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
786 group = gtk_tool_item_group_new ("More tools");
787 gtk_container_add (GTK_CONTAINER (widget), group);
788 item = gtk_tool_button_new_from_stock (GTK_STOCK_CUT);
789 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
790 item = gtk_tool_button_new_from_stock (GTK_STOCK_EXECUTE);
791 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
792 item = gtk_tool_button_new_from_stock (GTK_STOCK_CANCEL);
793 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
795 return new_widget_info ("toolpalette", widget, MEDIUM);
799 create_menubar (void)
801 GtkWidget *widget, *vbox, *align, *item;
803 widget = gtk_menu_bar_new ();
805 item = gtk_menu_item_new_with_mnemonic ("_File");
806 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
808 item = gtk_menu_item_new_with_mnemonic ("_Edit");
809 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
811 item = gtk_menu_item_new_with_mnemonic ("_Help");
812 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
814 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
815 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
816 gtk_container_add (GTK_CONTAINER (align), widget);
817 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
818 gtk_box_pack_start (GTK_BOX (vbox),
819 gtk_label_new ("Menu Bar"),
822 return new_widget_info ("menubar", vbox, SMALL);
826 create_message_dialog (void)
830 widget = gtk_message_dialog_new (NULL,
835 gtk_window_set_icon_name (GTK_WINDOW (widget), "edit-copy");
836 gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (widget),
837 "<b>Message Dialog</b>\n\nWith secondary text");
838 return new_widget_info ("messagedialog", widget, ASIS);
842 create_about_dialog (void)
845 const gchar *authors[] = {
853 widget = gtk_about_dialog_new ();
854 g_object_set (widget,
855 "program-name", "GTK+ Code Demos",
856 "version", PACKAGE_VERSION,
857 "copyright", "(C) 1997-2009 The GTK+ Team",
858 "website", "http://www.gtk.org",
859 "comments", "Program to demonstrate GTK+ functions.",
860 "logo-icon-name", "help-about",
861 "title", "About GTK+ Code Demos",
864 gtk_window_set_icon_name (GTK_WINDOW (widget), "help-about");
865 return new_widget_info ("aboutdialog", widget, ASIS);
869 create_notebook (void)
873 widget = gtk_notebook_new ();
875 gtk_notebook_append_page (GTK_NOTEBOOK (widget),
876 gtk_label_new ("Notebook"),
878 gtk_notebook_append_page (GTK_NOTEBOOK (widget), gtk_event_box_new (), NULL);
879 gtk_notebook_append_page (GTK_NOTEBOOK (widget), gtk_event_box_new (), NULL);
881 return new_widget_info ("notebook", widget, MEDIUM);
885 create_progressbar (void)
891 widget = gtk_progress_bar_new ();
892 gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (widget), 0.5);
894 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
895 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
896 gtk_container_add (GTK_CONTAINER (align), widget);
897 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
898 gtk_box_pack_start (GTK_BOX (vbox),
899 gtk_label_new ("Progress Bar"),
902 return new_widget_info ("progressbar", vbox, SMALL);
906 create_scrolledwindow (void)
908 GtkWidget *scrolledwin, *label;
910 scrolledwin = gtk_scrolled_window_new (NULL, NULL);
911 label = gtk_label_new ("Scrolled Window");
913 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolledwin),
916 return new_widget_info ("scrolledwindow", scrolledwin, MEDIUM);
920 create_spinbutton (void)
923 GtkWidget *vbox, *align;
925 widget = gtk_spin_button_new_with_range (0.0, 100.0, 1.0);
927 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
928 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
929 gtk_container_add (GTK_CONTAINER (align), widget);
930 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
931 gtk_box_pack_start (GTK_BOX (vbox),
932 gtk_label_new ("Spin Button"),
935 return new_widget_info ("spinbutton", vbox, SMALL);
939 create_statusbar (void)
943 GtkWidget *vbox, *align;
945 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
946 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
947 gtk_container_add (GTK_CONTAINER (align), gtk_label_new ("Status Bar"));
948 gtk_box_pack_start (GTK_BOX (vbox),
951 widget = gtk_statusbar_new ();
952 align = gtk_alignment_new (0.5, 1.0, 1.0, 0.0);
953 gtk_container_add (GTK_CONTAINER (align), widget);
954 gtk_statusbar_push (GTK_STATUSBAR (widget), 0, "Hold on...");
956 gtk_box_pack_end (GTK_BOX (vbox), align, FALSE, FALSE, 0);
958 info = new_widget_info ("statusbar", vbox, SMALL);
959 gtk_container_set_border_width (GTK_CONTAINER (info->window), 0);
970 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
971 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
972 gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
973 gtk_box_pack_start (GTK_BOX (hbox),
974 gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
977 gtk_box_pack_start (GTK_BOX (hbox),
978 gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
981 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
982 gtk_box_pack_start (GTK_BOX (vbox),
983 g_object_new (GTK_TYPE_LABEL,
984 "label", "Horizontal and Vertical\nScales",
985 "justify", GTK_JUSTIFY_CENTER,
988 return new_widget_info ("scales", vbox, MEDIUM);}
994 GtkWidget *align, *vbox;
996 widget = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING,
999 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
1000 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
1001 gtk_container_add (GTK_CONTAINER (align), widget);
1002 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
1003 gtk_box_pack_start (GTK_BOX (vbox),
1004 gtk_label_new ("Image"),
1007 return new_widget_info ("image", vbox, SMALL);
1011 create_spinner (void)
1014 GtkWidget *align, *vbox;
1016 widget = gtk_spinner_new ();
1017 gtk_widget_set_size_request (widget, 24, 24);
1019 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
1020 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
1021 gtk_container_add (GTK_CONTAINER (align), widget);
1022 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
1023 gtk_box_pack_start (GTK_BOX (vbox),
1024 gtk_label_new ("Spinner"),
1027 return new_widget_info ("spinner", vbox, SMALL);
1031 create_volume_button (void)
1033 GtkWidget *button, *widget;
1034 GtkWidget *plus_button;
1036 button = gtk_volume_button_new ();
1037 gtk_scale_button_set_value (GTK_SCALE_BUTTON (button), 33);
1038 /* Hack: get the private dock */
1039 plus_button = gtk_scale_button_get_plus_button (GTK_SCALE_BUTTON (button));
1040 widget = gtk_widget_get_parent (gtk_widget_get_parent (gtk_widget_get_parent (plus_button)));
1041 gtk_widget_show_all (widget);
1042 return new_widget_info ("volumebutton", widget, ASIS);
1046 create_assistant (void)
1049 GtkWidget *page1, *page2;
1052 widget = gtk_assistant_new ();
1053 gtk_window_set_title (GTK_WINDOW (widget), "Assistant");
1055 page1 = gtk_label_new ("Assistant");
1056 gtk_widget_show (page1);
1057 gtk_widget_set_size_request (page1, 300, 140);
1058 gtk_assistant_prepend_page (GTK_ASSISTANT (widget), page1);
1059 gtk_assistant_set_page_title (GTK_ASSISTANT (widget), page1, "Assistant page");
1060 gtk_assistant_set_page_complete (GTK_ASSISTANT (widget), page1, TRUE);
1062 page2 = gtk_label_new (NULL);
1063 gtk_widget_show (page2);
1064 gtk_assistant_append_page (GTK_ASSISTANT (widget), page2);
1065 gtk_assistant_set_page_type (GTK_ASSISTANT (widget), page2, GTK_ASSISTANT_PAGE_CONFIRM);
1067 info = new_widget_info ("assistant", widget, ASIS);
1068 info->include_decorations = TRUE;
1074 get_all_widgets (void)
1076 GList *retval = NULL;
1078 retval = g_list_prepend (retval, create_toolpalette ());
1079 retval = g_list_prepend (retval, create_spinner ());
1080 retval = g_list_prepend (retval, create_about_dialog ());
1081 retval = g_list_prepend (retval, create_accel_label ());
1082 retval = g_list_prepend (retval, create_button ());
1083 retval = g_list_prepend (retval, create_check_button ());
1084 retval = g_list_prepend (retval, create_color_button ());
1085 retval = g_list_prepend (retval, create_combo_box ());
1086 retval = g_list_prepend (retval, create_combo_box_entry ());
1087 retval = g_list_prepend (retval, create_entry ());
1088 retval = g_list_prepend (retval, create_file_button ());
1089 retval = g_list_prepend (retval, create_font_button ());
1090 retval = g_list_prepend (retval, create_frame ());
1091 retval = g_list_prepend (retval, create_icon_view ());
1092 retval = g_list_prepend (retval, create_image ());
1093 retval = g_list_prepend (retval, create_label ());
1094 retval = g_list_prepend (retval, create_link_button ());
1095 retval = g_list_prepend (retval, create_menubar ());
1096 retval = g_list_prepend (retval, create_message_dialog ());
1097 retval = g_list_prepend (retval, create_notebook ());
1098 retval = g_list_prepend (retval, create_panes ());
1099 retval = g_list_prepend (retval, create_progressbar ());
1100 retval = g_list_prepend (retval, create_radio ());
1101 retval = g_list_prepend (retval, create_scales ());
1102 retval = g_list_prepend (retval, create_scrolledwindow ());
1103 retval = g_list_prepend (retval, create_separator ());
1104 retval = g_list_prepend (retval, create_spinbutton ());
1105 retval = g_list_prepend (retval, create_statusbar ());
1106 retval = g_list_prepend (retval, create_text_view ());
1107 retval = g_list_prepend (retval, create_toggle_button ());
1108 retval = g_list_prepend (retval, create_toolbar ());
1109 retval = g_list_prepend (retval, create_tree_view ());
1110 retval = g_list_prepend (retval, create_window ());
1111 retval = g_list_prepend (retval, create_colorsel ());
1112 retval = g_list_prepend (retval, create_filesel ());
1113 retval = g_list_prepend (retval, create_fontsel ());
1114 retval = g_list_prepend (retval, create_assistant ());
1115 retval = g_list_prepend (retval, create_recent_chooser_dialog ());
1116 retval = g_list_prepend (retval, create_page_setup_dialog ());
1117 retval = g_list_prepend (retval, create_print_dialog ());
1118 retval = g_list_prepend (retval, create_volume_button ());
1119 retval = g_list_prepend (retval, create_switch ());