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 info->include_decorations = FALSE;
119 gtk_widget_show_all (widget);
120 gtk_container_add (GTK_CONTAINER (info->window), widget);
122 info->no_focus = TRUE;
124 gtk_widget_set_app_paintable (info->window, TRUE);
125 g_signal_connect (info->window, "focus", G_CALLBACK (gtk_true), NULL);
126 gtk_container_set_border_width (GTK_CONTAINER (info->window), 12);
131 gtk_widget_set_size_request (info->window,
135 gtk_widget_set_size_request (info->window,
139 gtk_widget_set_size_request (info->window,
155 widget = gtk_button_new_with_mnemonic ("_Button");
156 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
157 gtk_container_add (GTK_CONTAINER (align), widget);
159 return new_widget_info ("button", align, SMALL);
163 create_toggle_button (void)
168 widget = gtk_toggle_button_new_with_mnemonic ("_Toggle Button");
169 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
170 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
171 gtk_container_add (GTK_CONTAINER (align), widget);
173 return new_widget_info ("toggle-button", align, SMALL);
177 create_check_button (void)
182 widget = gtk_check_button_new_with_mnemonic ("_Check Button");
183 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
184 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
185 gtk_container_add (GTK_CONTAINER (align), widget);
187 return new_widget_info ("check-button", align, SMALL);
191 create_link_button (void)
196 widget = gtk_link_button_new_with_label ("http://www.gtk.org", "Link Button");
197 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
198 gtk_container_add (GTK_CONTAINER (align), widget);
200 return new_widget_info ("link-button", align, SMALL);
209 widget = gtk_entry_new ();
210 gtk_entry_set_text (GTK_ENTRY (widget), "Entry");
211 gtk_editable_set_position (GTK_EDITABLE (widget), -1);
212 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
213 gtk_container_add (GTK_CONTAINER (align), widget);
215 return new_widget_info ("entry", align, SMALL);
225 widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
226 radio = gtk_radio_button_new_with_mnemonic (NULL, "Radio Button _One");
227 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
228 radio = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (radio), "Radio Button _Two");
229 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
230 radio = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (radio), "Radio Button T_hree");
231 gtk_box_pack_start (GTK_BOX (widget), radio, FALSE, FALSE, 0);
232 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
233 gtk_container_add (GTK_CONTAINER (align), widget);
235 return new_widget_info ("radio-group", align, MEDIUM);
244 widget = gtk_label_new ("Label");
245 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
246 gtk_container_add (GTK_CONTAINER (align), widget);
248 return new_widget_info ("label", align, SMALL);
252 create_accel_label (void)
255 GtkWidget *widget, *button, *box;
256 GtkAccelGroup *accel_group;
258 widget = gtk_accel_label_new ("Accel Label");
260 button = gtk_button_new_with_label ("Quit");
261 gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (widget), button);
262 gtk_widget_set_no_show_all (button, TRUE);
264 box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
265 gtk_container_add (GTK_CONTAINER (box), widget);
266 gtk_container_add (GTK_CONTAINER (box), button);
268 gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (widget), button);
269 accel_group = gtk_accel_group_new();
271 info = new_widget_info ("accel-label", box, SMALL);
273 gtk_widget_add_accelerator (button, "activate", accel_group, GDK_KEY_Q, GDK_CONTROL_MASK,
274 GTK_ACCEL_VISIBLE | GTK_ACCEL_LOCKED);
280 create_combo_box_entry (void)
287 gtk_rc_parse_string ("style \"combo-box-entry-style\" {\n"
288 " GtkComboBox::appears-as-list = 1\n"
290 "widget_class \"GtkComboBoxEntry\" style \"combo-box-entry-style\"\n" );
292 model = (GtkTreeModel *)gtk_list_store_new (1, G_TYPE_STRING);
293 widget = g_object_new (GTK_TYPE_COMBO_BOX,
296 "entry-text-column", 0,
298 g_object_unref (model);
300 child = gtk_bin_get_child (GTK_BIN (widget));
301 gtk_entry_set_text (GTK_ENTRY (child), "Combo Box Entry");
302 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
303 gtk_container_add (GTK_CONTAINER (align), widget);
305 return new_widget_info ("combo-box-entry", align, SMALL);
309 create_combo_box (void)
314 gtk_rc_parse_string ("style \"combo-box-style\" {\n"
315 " GtkComboBox::appears-as-list = 0\n"
317 "widget_class \"GtkComboBox\" style \"combo-box-style\"\n" );
319 widget = gtk_combo_box_text_new ();
320 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Combo Box");
321 gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
322 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
323 gtk_container_add (GTK_CONTAINER (align), widget);
325 return new_widget_info ("combo-box", align, SMALL);
329 create_recent_chooser_dialog (void)
334 widget = gtk_recent_chooser_dialog_new ("Recent Chooser Dialog",
336 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
337 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
339 gtk_window_set_default_size (GTK_WINDOW (widget), 505, 305);
341 info = new_widget_info ("recentchooserdialog", widget, ASIS);
342 info->include_decorations = TRUE;
348 create_text_view (void)
351 GtkWidget *text_view;
353 widget = gtk_frame_new (NULL);
354 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
355 text_view = gtk_text_view_new ();
356 gtk_container_add (GTK_CONTAINER (widget), text_view);
357 /* Bad hack to add some size to the widget */
358 gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)),
359 "Multiline\nText\n\n", -1);
360 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
362 return new_widget_info ("multiline-text", widget, MEDIUM);
366 create_tree_view (void)
369 GtkWidget *tree_view;
370 GtkListStore *list_store;
374 widget = gtk_frame_new (NULL);
375 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
376 list_store = gtk_list_store_new (1, G_TYPE_STRING);
377 gtk_list_store_append (list_store, &iter);
378 gtk_list_store_set (list_store, &iter, 0, "Line One", -1);
379 gtk_list_store_append (list_store, &iter);
380 gtk_list_store_set (list_store, &iter, 0, "Line Two", -1);
381 gtk_list_store_append (list_store, &iter);
382 gtk_list_store_set (list_store, &iter, 0, "Line Three", -1);
384 tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store));
385 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
387 gtk_cell_renderer_text_new (),
389 gtk_container_add (GTK_CONTAINER (widget), tree_view);
391 info = new_widget_info ("list-and-tree", widget, MEDIUM);
392 info->no_focus = FALSE;
398 create_icon_view (void)
403 GtkWidget *icon_view;
404 GtkListStore *list_store;
409 widget = gtk_frame_new (NULL);
410 gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
411 list_store = gtk_list_store_new (2, G_TYPE_STRING, GDK_TYPE_PIXBUF);
412 gtk_list_store_append (list_store, &iter);
413 pixbuf = gdk_pixbuf_new_from_file ("folder.png", NULL);
414 gtk_list_store_set (list_store, &iter, 0, "One", 1, pixbuf, -1);
415 gtk_list_store_append (list_store, &iter);
416 pixbuf = gdk_pixbuf_new_from_file ("gnome.png", NULL);
417 gtk_list_store_set (list_store, &iter, 0, "Two", 1, pixbuf, -1);
419 icon_view = gtk_icon_view_new();
421 gtk_icon_view_set_model (GTK_ICON_VIEW (icon_view), GTK_TREE_MODEL (list_store));
422 gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), 0);
423 gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), 1);
425 gtk_container_add (GTK_CONTAINER (widget), icon_view);
427 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
428 align = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
429 gtk_container_add (GTK_CONTAINER (align), widget);
430 gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
431 gtk_box_pack_start (GTK_BOX (vbox),
432 gtk_label_new ("Icon View"),
435 info = new_widget_info ("icon-view", vbox, MEDIUM);
436 info->no_focus = FALSE;
442 create_color_button (void)
449 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
450 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
451 color.red = 0x1e<<8; /* Go Gagne! */
452 color.green = 0x90<<8;
453 color.blue = 0xff<<8;
454 picker = gtk_color_button_new_with_color (&color);
455 gtk_container_add (GTK_CONTAINER (align), picker);
456 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
457 gtk_box_pack_start (GTK_BOX (vbox),
458 gtk_label_new ("Color Button"),
461 return new_widget_info ("color-button", vbox, SMALL);
465 create_font_button (void)
471 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
472 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
473 picker = gtk_font_button_new_with_font ("Sans Serif 10");
474 gtk_container_add (GTK_CONTAINER (align), picker);
475 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
476 gtk_box_pack_start (GTK_BOX (vbox),
477 gtk_label_new ("Font Button"),
480 return new_widget_info ("font-button", vbox, SMALL);
484 create_file_button (void)
491 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 12);
492 vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
493 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
494 picker = gtk_file_chooser_button_new ("File Chooser Button",
495 GTK_FILE_CHOOSER_ACTION_OPEN);
496 gtk_widget_set_size_request (picker, 150, -1);
497 gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (picker), "/etc/yum.conf");
498 gtk_container_add (GTK_CONTAINER (align), picker);
499 gtk_box_pack_start (GTK_BOX (vbox2), align, FALSE, FALSE, 0);
500 gtk_box_pack_start (GTK_BOX (vbox2),
501 gtk_label_new ("File Button (Files)"),
504 gtk_box_pack_start (GTK_BOX (vbox),
505 vbox2, TRUE, TRUE, 0);
506 gtk_box_pack_start (GTK_BOX (vbox),
507 gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
510 vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
511 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
512 picker = gtk_file_chooser_button_new ("File Chooser Button",
513 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
514 gtk_widget_set_size_request (picker, 150, -1);
515 gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (picker), "/");
516 gtk_container_add (GTK_CONTAINER (align), picker);
517 gtk_box_pack_start (GTK_BOX (vbox2), align, FALSE, FALSE, 0);
518 gtk_box_pack_start (GTK_BOX (vbox2),
519 gtk_label_new ("File Button (Select Folder)"),
521 gtk_box_pack_start (GTK_BOX (vbox),
522 vbox2, TRUE, TRUE, 0);
524 return new_widget_info ("file-button", vbox, MEDIUM);
528 create_separator (void)
533 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
534 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, TRUE, 0);
535 gtk_box_pack_start (GTK_BOX (hbox),
536 gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
538 gtk_box_pack_start (GTK_BOX (hbox),
539 gtk_separator_new (GTK_ORIENTATION_VERTICAL),
541 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
542 gtk_box_pack_start (GTK_BOX (vbox),
543 g_object_new (GTK_TYPE_LABEL,
544 "label", "Horizontal and Vertical\nSeparators",
545 "justify", GTK_JUSTIFY_CENTER,
548 return new_widget_info ("separator", vbox, MEDIUM);
558 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
559 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, TRUE, 12);
560 pane = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
561 gtk_paned_pack1 (GTK_PANED (pane),
562 g_object_new (GTK_TYPE_FRAME,
563 "shadow", GTK_SHADOW_IN,
566 gtk_paned_pack2 (GTK_PANED (pane),
567 g_object_new (GTK_TYPE_FRAME,
568 "shadow", GTK_SHADOW_IN,
571 gtk_box_pack_start (GTK_BOX (hbox),
574 pane = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
575 gtk_paned_pack1 (GTK_PANED (pane),
576 g_object_new (GTK_TYPE_FRAME,
577 "shadow", GTK_SHADOW_IN,
580 gtk_paned_pack2 (GTK_PANED (pane),
581 g_object_new (GTK_TYPE_FRAME,
582 "shadow", GTK_SHADOW_IN,
585 gtk_box_pack_start (GTK_BOX (hbox),
588 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
589 gtk_box_pack_start (GTK_BOX (vbox),
590 g_object_new (GTK_TYPE_LABEL,
591 "label", "Horizontal and Vertical\nPanes",
592 "justify", GTK_JUSTIFY_CENTER,
595 return new_widget_info ("panes", vbox, MEDIUM);
603 widget = gtk_frame_new ("Frame");
605 return new_widget_info ("frame", widget, MEDIUM);
614 widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
615 info = new_widget_info ("window", widget, MEDIUM);
616 info->include_decorations = TRUE;
617 gtk_window_set_title (GTK_WINDOW (info->window), "Window");
623 create_colorsel (void)
627 GtkColorSelection *colorsel;
628 GtkColorSelectionDialog *selection_dialog;
631 widget = gtk_color_selection_dialog_new ("Color Selection Dialog");
632 selection_dialog = GTK_COLOR_SELECTION_DIALOG (widget);
633 colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
636 color.green = 0xdbdb;
639 gtk_color_selection_set_previous_color (colorsel, &color);
642 color.green = 0x9393;
645 gtk_color_selection_set_current_color (colorsel, &color);
647 info = new_widget_info ("colorsel", widget, ASIS);
648 info->include_decorations = TRUE;
654 create_fontsel (void)
659 widget = gtk_font_selection_dialog_new ("Font Selection Dialog");
660 info = new_widget_info ("fontsel", widget, ASIS);
661 info->include_decorations = TRUE;
667 create_filesel (void)
672 widget = gtk_file_chooser_dialog_new ("File Chooser Dialog",
674 GTK_FILE_CHOOSER_ACTION_OPEN,
675 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
676 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
678 gtk_window_set_default_size (GTK_WINDOW (widget), 505, 305);
680 info = new_widget_info ("filechooser", widget, ASIS);
681 info->include_decorations = TRUE;
687 create_print_dialog (void)
692 widget = gtk_print_unix_dialog_new ("Print Dialog", NULL);
693 gtk_widget_set_size_request (widget, 505, 350);
694 info = new_widget_info ("printdialog", widget, ASIS);
695 info->include_decorations = TRUE;
701 create_page_setup_dialog (void)
705 GtkPageSetup *page_setup;
706 GtkPrintSettings *settings;
708 page_setup = gtk_page_setup_new ();
709 settings = gtk_print_settings_new ();
710 widget = gtk_page_setup_unix_dialog_new ("Page Setup Dialog", NULL);
711 gtk_page_setup_unix_dialog_set_page_setup (GTK_PAGE_SETUP_UNIX_DIALOG (widget),
713 gtk_page_setup_unix_dialog_set_print_settings (GTK_PAGE_SETUP_UNIX_DIALOG (widget),
716 info = new_widget_info ("pagesetupdialog", widget, ASIS);
717 gtk_widget_set_app_paintable (info->window, FALSE);
718 info->include_decorations = TRUE;
724 create_toolbar (void)
726 GtkWidget *widget, *menu;
729 widget = gtk_toolbar_new ();
731 item = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);
732 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
734 item = gtk_menu_tool_button_new_from_stock (GTK_STOCK_OPEN);
735 menu = gtk_menu_new ();
736 gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (item), menu);
737 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
739 item = gtk_tool_button_new_from_stock (GTK_STOCK_REFRESH);
740 gtk_toolbar_insert (GTK_TOOLBAR (widget), item, -1);
742 gtk_toolbar_set_show_arrow (GTK_TOOLBAR (widget), FALSE);
744 return new_widget_info ("toolbar", widget, SMALL);
748 create_toolpalette (void)
750 GtkWidget *widget, *group;
753 widget = gtk_tool_palette_new ();
754 group = gtk_tool_item_group_new ("Tools");
755 gtk_container_add (GTK_CONTAINER (widget), group);
756 item = gtk_tool_button_new_from_stock (GTK_STOCK_ABOUT);
757 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
758 item = gtk_tool_button_new_from_stock (GTK_STOCK_FILE);
759 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
760 item = gtk_tool_button_new_from_stock (GTK_STOCK_CONNECT);
761 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
763 group = gtk_tool_item_group_new ("More tools");
764 gtk_container_add (GTK_CONTAINER (widget), group);
765 item = gtk_tool_button_new_from_stock (GTK_STOCK_CUT);
766 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
767 item = gtk_tool_button_new_from_stock (GTK_STOCK_EXECUTE);
768 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
769 item = gtk_tool_button_new_from_stock (GTK_STOCK_CANCEL);
770 gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
772 return new_widget_info ("toolpalette", widget, MEDIUM);
776 create_menubar (void)
778 GtkWidget *widget, *vbox, *align, *item;
780 widget = gtk_menu_bar_new ();
782 item = gtk_menu_item_new_with_mnemonic ("_File");
783 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
785 item = gtk_menu_item_new_with_mnemonic ("_Edit");
786 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
788 item = gtk_menu_item_new_with_mnemonic ("_Help");
789 gtk_menu_shell_append (GTK_MENU_SHELL (widget), item);
791 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
792 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
793 gtk_container_add (GTK_CONTAINER (align), widget);
794 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
795 gtk_box_pack_start (GTK_BOX (vbox),
796 gtk_label_new ("Menu Bar"),
799 return new_widget_info ("menubar", vbox, SMALL);
803 create_message_dialog (void)
807 widget = gtk_message_dialog_new (NULL,
812 gtk_window_set_icon_name (GTK_WINDOW (widget), "edit-copy");
813 gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (widget),
814 "<b>Message Dialog</b>\n\nWith secondary text");
815 return new_widget_info ("messagedialog", widget, ASIS);
819 create_about_dialog (void)
822 const gchar *authors[] = {
830 widget = gtk_about_dialog_new ();
831 g_object_set (widget,
832 "program-name", "GTK+ Code Demos",
833 "version", PACKAGE_VERSION,
834 "copyright", "(C) 1997-2009 The GTK+ Team",
835 "website", "http://www.gtk.org",
836 "comments", "Program to demonstrate GTK+ functions.",
837 "logo-icon-name", "help-about",
838 "title", "About GTK+ Code Demos",
841 gtk_window_set_icon_name (GTK_WINDOW (widget), "help-about");
842 return new_widget_info ("aboutdialog", widget, ASIS);
846 create_notebook (void)
850 widget = gtk_notebook_new ();
852 gtk_notebook_append_page (GTK_NOTEBOOK (widget),
853 gtk_label_new ("Notebook"),
855 gtk_notebook_append_page (GTK_NOTEBOOK (widget), gtk_event_box_new (), NULL);
856 gtk_notebook_append_page (GTK_NOTEBOOK (widget), gtk_event_box_new (), NULL);
858 return new_widget_info ("notebook", widget, MEDIUM);
862 create_progressbar (void)
868 widget = gtk_progress_bar_new ();
869 gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (widget), 0.5);
871 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
872 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
873 gtk_container_add (GTK_CONTAINER (align), widget);
874 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
875 gtk_box_pack_start (GTK_BOX (vbox),
876 gtk_label_new ("Progress Bar"),
879 return new_widget_info ("progressbar", vbox, SMALL);
883 create_scrolledwindow (void)
885 GtkWidget *scrolledwin, *label;
887 scrolledwin = gtk_scrolled_window_new (NULL, NULL);
888 label = gtk_label_new ("Scrolled Window");
890 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolledwin),
893 return new_widget_info ("scrolledwindow", scrolledwin, MEDIUM);
897 create_spinbutton (void)
900 GtkWidget *vbox, *align;
902 widget = gtk_spin_button_new_with_range (0.0, 100.0, 1.0);
904 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
905 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
906 gtk_container_add (GTK_CONTAINER (align), widget);
907 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
908 gtk_box_pack_start (GTK_BOX (vbox),
909 gtk_label_new ("Spin Button"),
912 return new_widget_info ("spinbutton", vbox, SMALL);
916 create_statusbar (void)
920 GtkWidget *vbox, *align;
922 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
923 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
924 gtk_container_add (GTK_CONTAINER (align), gtk_label_new ("Status Bar"));
925 gtk_box_pack_start (GTK_BOX (vbox),
928 widget = gtk_statusbar_new ();
929 align = gtk_alignment_new (0.5, 1.0, 1.0, 0.0);
930 gtk_container_add (GTK_CONTAINER (align), widget);
931 gtk_statusbar_push (GTK_STATUSBAR (widget), 0, "Hold on...");
933 gtk_box_pack_end (GTK_BOX (vbox), align, FALSE, FALSE, 0);
935 info = new_widget_info ("statusbar", vbox, SMALL);
936 gtk_container_set_border_width (GTK_CONTAINER (info->window), 0);
947 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
948 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, TRUE, 0);
949 gtk_box_pack_start (GTK_BOX (hbox),
950 gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
953 gtk_box_pack_start (GTK_BOX (hbox),
954 gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
957 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
958 gtk_box_pack_start (GTK_BOX (vbox),
959 g_object_new (GTK_TYPE_LABEL,
960 "label", "Horizontal and Vertical\nScales",
961 "justify", GTK_JUSTIFY_CENTER,
964 return new_widget_info ("scales", vbox, MEDIUM);}
970 GtkWidget *align, *vbox;
972 widget = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING,
975 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 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 ("Image"),
983 return new_widget_info ("image", vbox, SMALL);
987 create_spinner (void)
990 GtkWidget *align, *vbox;
992 widget = gtk_spinner_new ();
993 gtk_widget_set_size_request (widget, 24, 24);
995 vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 3);
996 align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
997 gtk_container_add (GTK_CONTAINER (align), widget);
998 gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
999 gtk_box_pack_start (GTK_BOX (vbox),
1000 gtk_label_new ("Spinner"),
1003 return new_widget_info ("spinner", vbox, SMALL);
1007 create_volume_button (void)
1009 GtkWidget *button, *widget;
1010 GtkWidget *plus_button;
1012 button = gtk_volume_button_new ();
1013 gtk_scale_button_set_value (GTK_SCALE_BUTTON (button), 33);
1014 /* Hack: get the private dock */
1015 plus_button = gtk_scale_button_get_plus_button (GTK_SCALE_BUTTON (button));
1016 widget = gtk_widget_get_parent (gtk_widget_get_parent (gtk_widget_get_parent (plus_button)));
1017 gtk_widget_show_all (widget);
1018 return new_widget_info ("volumebutton", widget, ASIS);
1022 create_assistant (void)
1025 GtkWidget *page1, *page2;
1028 widget = gtk_assistant_new ();
1029 gtk_window_set_title (GTK_WINDOW (widget), "Assistant");
1031 page1 = gtk_label_new ("Assistant");
1032 gtk_widget_show (page1);
1033 gtk_widget_set_size_request (page1, 300, 140);
1034 gtk_assistant_prepend_page (GTK_ASSISTANT (widget), page1);
1035 gtk_assistant_set_page_title (GTK_ASSISTANT (widget), page1, "Assistant page");
1036 gtk_assistant_set_page_complete (GTK_ASSISTANT (widget), page1, TRUE);
1038 page2 = gtk_label_new (NULL);
1039 gtk_widget_show (page2);
1040 gtk_assistant_append_page (GTK_ASSISTANT (widget), page2);
1041 gtk_assistant_set_page_type (GTK_ASSISTANT (widget), page2, GTK_ASSISTANT_PAGE_CONFIRM);
1043 info = new_widget_info ("assistant", widget, ASIS);
1044 info->include_decorations = TRUE;
1050 get_all_widgets (void)
1052 GList *retval = NULL;
1054 retval = g_list_prepend (retval, create_toolpalette ());
1055 retval = g_list_prepend (retval, create_spinner ());
1056 retval = g_list_prepend (retval, create_about_dialog ());
1057 retval = g_list_prepend (retval, create_accel_label ());
1058 retval = g_list_prepend (retval, create_button ());
1059 retval = g_list_prepend (retval, create_check_button ());
1060 retval = g_list_prepend (retval, create_color_button ());
1061 retval = g_list_prepend (retval, create_combo_box ());
1062 retval = g_list_prepend (retval, create_combo_box_entry ());
1063 retval = g_list_prepend (retval, create_entry ());
1064 retval = g_list_prepend (retval, create_file_button ());
1065 retval = g_list_prepend (retval, create_font_button ());
1066 retval = g_list_prepend (retval, create_frame ());
1067 retval = g_list_prepend (retval, create_icon_view ());
1068 retval = g_list_prepend (retval, create_image ());
1069 retval = g_list_prepend (retval, create_label ());
1070 retval = g_list_prepend (retval, create_link_button ());
1071 retval = g_list_prepend (retval, create_menubar ());
1072 retval = g_list_prepend (retval, create_message_dialog ());
1073 retval = g_list_prepend (retval, create_notebook ());
1074 retval = g_list_prepend (retval, create_panes ());
1075 retval = g_list_prepend (retval, create_progressbar ());
1076 retval = g_list_prepend (retval, create_radio ());
1077 retval = g_list_prepend (retval, create_scales ());
1078 retval = g_list_prepend (retval, create_scrolledwindow ());
1079 retval = g_list_prepend (retval, create_separator ());
1080 retval = g_list_prepend (retval, create_spinbutton ());
1081 retval = g_list_prepend (retval, create_statusbar ());
1082 retval = g_list_prepend (retval, create_text_view ());
1083 retval = g_list_prepend (retval, create_toggle_button ());
1084 retval = g_list_prepend (retval, create_toolbar ());
1085 retval = g_list_prepend (retval, create_tree_view ());
1086 retval = g_list_prepend (retval, create_window ());
1087 retval = g_list_prepend (retval, create_colorsel ());
1088 retval = g_list_prepend (retval, create_filesel ());
1089 retval = g_list_prepend (retval, create_fontsel ());
1090 retval = g_list_prepend (retval, create_assistant ());
1091 retval = g_list_prepend (retval, create_recent_chooser_dialog ());
1092 retval = g_list_prepend (retval, create_page_setup_dialog ());
1093 retval = g_list_prepend (retval, create_print_dialog ());
1094 retval = g_list_prepend (retval, create_volume_button ());