3 * Copyright (C) 2002 Anders Carlsson <andersca@codefactory.se>
4 * Copyright (C) 2002 James Henstridge <james@daa.com.au>
5 * Copyright (C) 2003 Soeren Sandmann <sandmann@daimi.au.dk>
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
24 #include "prop-editor.h"
27 reload_clicked (GtkWidget *widget)
29 static GdkAtom atom_rcfiles = GDK_NONE;
35 atom_rcfiles = gdk_atom_intern("_GTK_READ_RCFILES", FALSE);
37 for(i = 0; i < 5; i++)
40 sev.message_type = atom_rcfiles;
41 gdk_event_send_clientmessage_toall ((GdkEvent *) &sev);
45 change_orientation (GtkWidget *button, GtkWidget *toolbar)
48 GtkOrientation orientation;
50 table = gtk_widget_get_parent (toolbar);
51 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
52 orientation = GTK_ORIENTATION_VERTICAL;
54 orientation = GTK_ORIENTATION_HORIZONTAL;
56 g_object_ref (toolbar);
57 gtk_container_remove (GTK_CONTAINER (table), toolbar);
58 gtk_orientable_set_orientation (GTK_ORIENTABLE (toolbar), orientation);
59 if (orientation == GTK_ORIENTATION_HORIZONTAL)
61 gtk_table_attach (GTK_TABLE (table), toolbar,
62 0,2, 0,1, GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 0);
66 gtk_table_attach (GTK_TABLE (table), toolbar,
67 0,1, 0,4, GTK_FILL, GTK_FILL|GTK_EXPAND, 0, 0);
69 g_object_unref (toolbar);
73 change_show_arrow (GtkWidget *button, GtkWidget *toolbar)
75 gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar),
76 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)));
80 set_toolbar_style_toggled (GtkCheckButton *button, GtkToolbar *toolbar)
82 GtkWidget *option_menu;
85 option_menu = g_object_get_data (G_OBJECT (button), "option-menu");
87 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
89 style = gtk_combo_box_get_active (GTK_COMBO_BOX (option_menu));
91 gtk_toolbar_set_style (toolbar, style);
92 gtk_widget_set_sensitive (option_menu, TRUE);
96 gtk_toolbar_unset_style (toolbar);
97 gtk_widget_set_sensitive (option_menu, FALSE);
102 change_toolbar_style (GtkWidget *option_menu, GtkWidget *toolbar)
104 GtkToolbarStyle style;
106 style = gtk_combo_box_get_active (GTK_COMBO_BOX (option_menu));
107 gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), style);
111 set_visible_func(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
112 GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
114 GtkToolItem *tool_item;
117 gtk_tree_model_get (model, iter, 0, &tool_item, -1);
119 g_object_get (tool_item, "visible", &visible, NULL);
120 g_object_set (cell, "active", visible, NULL);
121 g_object_unref (tool_item);
125 visibile_toggled(GtkCellRendererToggle *cell, const gchar *path_str,
130 GtkToolItem *tool_item;
133 path = gtk_tree_path_new_from_string (path_str);
134 gtk_tree_model_get_iter (model, &iter, path);
136 gtk_tree_model_get (model, &iter, 0, &tool_item, -1);
137 g_object_get (tool_item, "visible", &visible, NULL);
138 g_object_set (tool_item, "visible", !visible, NULL);
139 g_object_unref (tool_item);
141 gtk_tree_model_row_changed (model, path, &iter);
142 gtk_tree_path_free (path);
146 set_expand_func(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
147 GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
149 GtkToolItem *tool_item;
151 gtk_tree_model_get (model, iter, 0, &tool_item, -1);
153 g_object_set (cell, "active", gtk_tool_item_get_expand (tool_item), NULL);
154 g_object_unref (tool_item);
158 expand_toggled(GtkCellRendererToggle *cell, const gchar *path_str,
163 GtkToolItem *tool_item;
165 path = gtk_tree_path_new_from_string (path_str);
166 gtk_tree_model_get_iter (model, &iter, path);
168 gtk_tree_model_get (model, &iter, 0, &tool_item, -1);
169 gtk_tool_item_set_expand (tool_item, !gtk_tool_item_get_expand (tool_item));
170 g_object_unref (tool_item);
172 gtk_tree_model_row_changed (model, path, &iter);
173 gtk_tree_path_free (path);
177 set_homogeneous_func(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
178 GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
180 GtkToolItem *tool_item;
182 gtk_tree_model_get (model, iter, 0, &tool_item, -1);
184 g_object_set (cell, "active", gtk_tool_item_get_homogeneous (tool_item), NULL);
185 g_object_unref (tool_item);
189 homogeneous_toggled(GtkCellRendererToggle *cell, const gchar *path_str,
194 GtkToolItem *tool_item;
196 path = gtk_tree_path_new_from_string (path_str);
197 gtk_tree_model_get_iter (model, &iter, path);
199 gtk_tree_model_get (model, &iter, 0, &tool_item, -1);
200 gtk_tool_item_set_homogeneous (tool_item, !gtk_tool_item_get_homogeneous (tool_item));
201 g_object_unref (tool_item);
203 gtk_tree_model_row_changed (model, path, &iter);
204 gtk_tree_path_free (path);
209 set_important_func(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
210 GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
212 GtkToolItem *tool_item;
214 gtk_tree_model_get (model, iter, 0, &tool_item, -1);
216 g_object_set (cell, "active", gtk_tool_item_get_is_important (tool_item), NULL);
217 g_object_unref (tool_item);
221 important_toggled(GtkCellRendererToggle *cell, const gchar *path_str,
226 GtkToolItem *tool_item;
228 path = gtk_tree_path_new_from_string (path_str);
229 gtk_tree_model_get_iter (model, &iter, path);
231 gtk_tree_model_get (model, &iter, 0, &tool_item, -1);
232 gtk_tool_item_set_is_important (tool_item, !gtk_tool_item_get_is_important (tool_item));
233 g_object_unref (tool_item);
235 gtk_tree_model_row_changed (model, path, &iter);
236 gtk_tree_path_free (path);
239 static GtkListStore *
240 create_items_list (GtkWidget **tree_view_p)
242 GtkWidget *tree_view;
243 GtkListStore *list_store;
244 GtkCellRenderer *cell;
246 list_store = gtk_list_store_new (2, GTK_TYPE_TOOL_ITEM, G_TYPE_STRING);
248 tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store));
250 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
252 gtk_cell_renderer_text_new (),
255 cell = gtk_cell_renderer_toggle_new ();
256 g_signal_connect (cell, "toggled", G_CALLBACK (visibile_toggled),
258 gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (tree_view),
261 set_visible_func, NULL, NULL);
263 cell = gtk_cell_renderer_toggle_new ();
264 g_signal_connect (cell, "toggled", G_CALLBACK (expand_toggled),
266 gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (tree_view),
269 set_expand_func, NULL, NULL);
271 cell = gtk_cell_renderer_toggle_new ();
272 g_signal_connect (cell, "toggled", G_CALLBACK (homogeneous_toggled),
274 gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (tree_view),
277 set_homogeneous_func, NULL,NULL);
279 cell = gtk_cell_renderer_toggle_new ();
280 g_signal_connect (cell, "toggled", G_CALLBACK (important_toggled),
282 gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (tree_view),
285 set_important_func, NULL,NULL);
287 g_object_unref (list_store);
289 *tree_view_p = tree_view;
295 add_item_to_list (GtkListStore *store, GtkToolItem *item, const gchar *text)
299 gtk_list_store_append (store, &iter);
300 gtk_list_store_set (store, &iter,
308 bold_toggled (GtkToggleToolButton *button)
310 g_message ("Bold toggled (active=%d)",
311 gtk_toggle_tool_button_get_active (button));
315 set_icon_size_toggled (GtkCheckButton *button, GtkToolbar *toolbar)
317 GtkWidget *option_menu;
320 option_menu = g_object_get_data (G_OBJECT (button), "option-menu");
322 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
324 if (gtk_combo_box_get_active (GTK_COMBO_BOX (option_menu)) == 0)
325 icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR;
327 icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR;
329 gtk_toolbar_set_icon_size (toolbar, icon_size);
330 gtk_widget_set_sensitive (option_menu, TRUE);
334 gtk_toolbar_unset_icon_size (toolbar);
335 gtk_widget_set_sensitive (option_menu, FALSE);
340 icon_size_history_changed (GtkComboBox *menu, GtkToolbar *toolbar)
344 if (gtk_combo_box_get_active (menu) == 0)
345 icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR;
347 icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR;
349 gtk_toolbar_set_icon_size (toolbar, icon_size);
353 toolbar_drag_drop (GtkWidget *widget, GdkDragContext *context,
354 gint x, gint y, guint time, GtkWidget *label)
358 g_snprintf(buf, sizeof(buf), "%d",
359 gtk_toolbar_get_drop_index (GTK_TOOLBAR (widget), x, y));
360 gtk_label_set_label (GTK_LABEL (label), buf);
365 static GtkTargetEntry target_table[] = {
366 { "application/x-toolbar-item", 0, 0 }
370 make_prop_editor (GObject *object)
372 GtkWidget *prop_editor = create_prop_editor (object, 0);
373 gtk_widget_show (prop_editor);
378 rtl_toggled (GtkCheckButton *check)
380 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)))
381 gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
383 gtk_widget_set_default_direction (GTK_TEXT_DIR_LTR);
393 position_function (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data)
395 /* Do not do this in your own code */
397 MenuPositionData *position_data = user_data;
400 *x = position_data->x;
403 *y = position_data->y;
410 popup_context_menu (GtkToolbar *toolbar, gint x, gint y, gint button_number)
412 MenuPositionData position_data;
414 GtkMenu *menu = GTK_MENU (gtk_menu_new ());
417 for (i = 0; i < 5; i++)
420 gchar *label = g_strdup_printf ("Item _%d", i);
421 item = gtk_menu_item_new_with_mnemonic (label);
422 gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
424 gtk_widget_show_all (GTK_WIDGET (menu));
426 if (button_number != -1)
431 gtk_menu_popup (menu, NULL, NULL, position_function,
432 &position_data, button_number, gtk_get_current_event_time());
435 gtk_menu_popup (menu, NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
440 static GtkToolItem *drag_item = NULL;
443 toolbar_drag_motion (GtkToolbar *toolbar,
444 GdkDragContext *context,
454 drag_item = gtk_tool_button_new (NULL, "A quite long button");
455 g_object_ref_sink (g_object_ref (drag_item));
458 gdk_drag_status (context, GDK_ACTION_MOVE, time);
460 index = gtk_toolbar_get_drop_index (toolbar, x, y);
462 gtk_toolbar_set_drop_highlight_item (toolbar, drag_item, index);
468 toolbar_drag_leave (GtkToolbar *toolbar,
469 GdkDragContext *context,
475 g_object_unref (drag_item);
479 gtk_toolbar_set_drop_highlight_item (toolbar, NULL, 0);
483 timeout_cb (GtkWidget *widget)
485 static gboolean sensitive = TRUE;
487 sensitive = !sensitive;
489 gtk_widget_set_sensitive (widget, sensitive);
495 timeout_cb1 (GtkWidget *widget)
497 static gboolean sensitive = TRUE;
498 sensitive = !sensitive;
499 gtk_widget_set_sensitive (widget, sensitive);
504 main (gint argc, gchar **argv)
506 GtkWidget *window, *toolbar, *table, *treeview, *scrolled_window;
507 GtkWidget *hbox, *hbox1, *hbox2, *checkbox, *option_menu, *menu;
509 static const gchar *toolbar_styles[] = { "icons", "text", "both (vertical)",
510 "both (horizontal)" };
520 gtk_init (&argc, &argv);
522 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
524 g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
526 table = gtk_table_new (4, 2, FALSE);
527 gtk_container_add (GTK_CONTAINER (window), table);
529 toolbar = gtk_toolbar_new ();
530 gtk_table_attach (GTK_TABLE (table), toolbar,
531 0,2, 0,1, GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 0);
533 hbox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
534 gtk_container_set_border_width (GTK_CONTAINER (hbox1), 5);
535 gtk_table_attach (GTK_TABLE (table), hbox1,
536 1,2, 1,2, GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 0);
538 hbox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
539 gtk_container_set_border_width (GTK_CONTAINER (hbox2), 5);
540 gtk_table_attach (GTK_TABLE (table), hbox2,
541 1,2, 2,3, GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 0);
543 checkbox = gtk_check_button_new_with_mnemonic("_Vertical");
544 gtk_box_pack_start (GTK_BOX (hbox1), checkbox, FALSE, FALSE, 0);
545 g_signal_connect (checkbox, "toggled",
546 G_CALLBACK (change_orientation), toolbar);
548 checkbox = gtk_check_button_new_with_mnemonic("_Show Arrow");
549 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbox), TRUE);
550 gtk_box_pack_start (GTK_BOX (hbox1), checkbox, FALSE, FALSE, 0);
551 g_signal_connect (checkbox, "toggled",
552 G_CALLBACK (change_show_arrow), toolbar);
554 checkbox = gtk_check_button_new_with_mnemonic("_Set Toolbar Style:");
555 g_signal_connect (checkbox, "toggled", G_CALLBACK (set_toolbar_style_toggled), toolbar);
556 gtk_box_pack_start (GTK_BOX (hbox1), checkbox, FALSE, FALSE, 0);
558 option_menu = gtk_combo_box_text_new ();
559 gtk_widget_set_sensitive (option_menu, FALSE);
560 g_object_set_data (G_OBJECT (checkbox), "option-menu", option_menu);
562 for (i = 0; i < G_N_ELEMENTS (toolbar_styles); i++)
563 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (option_menu), toolbar_styles[i]);
564 gtk_combo_box_set_active (GTK_COMBO_BOX (option_menu),
565 gtk_toolbar_get_style (GTK_TOOLBAR (toolbar)));
566 gtk_box_pack_start (GTK_BOX (hbox2), option_menu, FALSE, FALSE, 0);
567 g_signal_connect (option_menu, "changed",
568 G_CALLBACK (change_toolbar_style), toolbar);
570 checkbox = gtk_check_button_new_with_mnemonic("_Set Icon Size:");
571 g_signal_connect (checkbox, "toggled", G_CALLBACK (set_icon_size_toggled), toolbar);
572 gtk_box_pack_start (GTK_BOX (hbox2), checkbox, FALSE, FALSE, 0);
574 option_menu = gtk_combo_box_text_new ();
575 g_object_set_data (G_OBJECT (checkbox), "option-menu", option_menu);
576 gtk_widget_set_sensitive (option_menu, FALSE);
577 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (option_menu), "small toolbar");
578 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (option_menu), "large toolbar");
580 gtk_box_pack_start (GTK_BOX (hbox2), option_menu, FALSE, FALSE, 0);
581 g_signal_connect (option_menu, "changed",
582 G_CALLBACK (icon_size_history_changed), toolbar);
584 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
585 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
586 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
587 gtk_table_attach (GTK_TABLE (table), scrolled_window,
588 1,2, 3,4, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0);
590 store = create_items_list (&treeview);
591 gtk_container_add (GTK_CONTAINER (scrolled_window), treeview);
593 item = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);
594 gtk_tool_button_set_label (GTK_TOOL_BUTTON (item), "Custom label");
595 gtk_tool_button_set_label (GTK_TOOL_BUTTON (item), NULL);
596 add_item_to_list (store, item, "New");
597 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
598 gdk_threads_add_timeout (3000, (GSourceFunc) timeout_cb, item);
599 gtk_tool_item_set_expand (item, TRUE);
601 menu = gtk_menu_new ();
602 for (i = 0; i < 20; i++)
605 text = g_strdup_printf ("Menuitem %d", i);
606 menuitem = gtk_menu_item_new_with_label (text);
608 gtk_widget_show (menuitem);
609 gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
612 item = gtk_menu_tool_button_new_from_stock (GTK_STOCK_OPEN);
613 gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (item), menu);
614 add_item_to_list (store, item, "Open");
615 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
616 gdk_threads_add_timeout (3000, (GSourceFunc) timeout_cb1, item);
618 menu = gtk_menu_new ();
619 for (i = 0; i < 20; i++)
622 text = g_strdup_printf ("A%d", i);
623 menuitem = gtk_menu_item_new_with_label (text);
625 gtk_widget_show (menuitem);
626 gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
629 item = gtk_menu_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
630 gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (item), menu);
631 add_item_to_list (store, item, "BackWithHistory");
632 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
634 item = gtk_separator_tool_item_new ();
635 add_item_to_list (store, item, "-----");
636 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
638 item = gtk_tool_button_new_from_stock (GTK_STOCK_REFRESH);
639 add_item_to_list (store, item, "Refresh");
640 g_signal_connect (item, "clicked", G_CALLBACK (reload_clicked), NULL);
641 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
643 image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
644 item = gtk_tool_item_new ();
645 gtk_widget_show (image);
646 gtk_container_add (GTK_CONTAINER (item), image);
647 add_item_to_list (store, item, "(Custom Item)");
648 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
650 item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
651 add_item_to_list (store, item, "Back");
652 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
654 item = gtk_separator_tool_item_new ();
655 add_item_to_list (store, item, "-----");
656 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
658 item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
659 add_item_to_list (store, item, "Forward");
660 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
662 item = gtk_toggle_tool_button_new_from_stock (GTK_STOCK_BOLD);
663 g_signal_connect (item, "toggled", G_CALLBACK (bold_toggled), NULL);
664 add_item_to_list (store, item, "Bold");
665 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
666 gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE);
668 item = gtk_separator_tool_item_new ();
669 add_item_to_list (store, item, "-----");
670 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
671 gtk_tool_item_set_expand (item, TRUE);
672 gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (item), FALSE);
673 g_assert (gtk_toolbar_get_nth_item (GTK_TOOLBAR (toolbar), 0) != 0);
675 item = gtk_radio_tool_button_new_from_stock (NULL, GTK_STOCK_JUSTIFY_LEFT);
676 group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item));
677 add_item_to_list (store, item, "Left");
678 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
681 item = gtk_radio_tool_button_new_from_stock (group, GTK_STOCK_JUSTIFY_CENTER);
682 make_prop_editor (G_OBJECT (item));
684 group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item));
685 add_item_to_list (store, item, "Center");
686 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
688 item = gtk_radio_tool_button_new_from_stock (group, GTK_STOCK_JUSTIFY_RIGHT);
689 add_item_to_list (store, item, "Right");
690 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
692 item = gtk_tool_button_new (gtk_image_new_from_file ("apple-red.png"), "_Apple");
693 add_item_to_list (store, item, "Apple");
694 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
695 gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON (item), TRUE);
697 gicon = g_content_type_get_icon ("video/ogg");
698 image = gtk_image_new_from_gicon (gicon, GTK_ICON_SIZE_LARGE_TOOLBAR);
699 g_object_unref (gicon);
700 item = gtk_tool_button_new (image, "Video");
701 add_item_to_list (store, item, "Video");
702 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
704 image = gtk_image_new_from_icon_name ("utilities-terminal", GTK_ICON_SIZE_LARGE_TOOLBAR);
705 item = gtk_tool_button_new (image, "Terminal");
706 add_item_to_list (store, item, "Terminal");
707 gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
709 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
710 gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
711 gtk_table_attach (GTK_TABLE (table), hbox,
712 1,2, 4,5, GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 0);
714 button = gtk_button_new_with_label ("Drag me to the toolbar");
715 gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
717 label = gtk_label_new ("Drop index:");
718 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
720 label = gtk_label_new ("");
721 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
723 checkbox = gtk_check_button_new_with_mnemonic("_Right to left");
724 if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL)
725 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbox), TRUE);
727 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbox), FALSE);
728 g_signal_connect (checkbox, "toggled", G_CALLBACK (rtl_toggled), NULL);
730 gtk_box_pack_end (GTK_BOX (hbox), checkbox, FALSE, FALSE, 0);
732 gtk_drag_source_set (button, GDK_BUTTON1_MASK,
733 target_table, G_N_ELEMENTS (target_table),
735 gtk_drag_dest_set (toolbar, GTK_DEST_DEFAULT_DROP,
736 target_table, G_N_ELEMENTS (target_table),
738 g_signal_connect (toolbar, "drag_motion",
739 G_CALLBACK (toolbar_drag_motion), NULL);
740 g_signal_connect (toolbar, "drag_leave",
741 G_CALLBACK (toolbar_drag_leave), NULL);
742 g_signal_connect (toolbar, "drag_drop",
743 G_CALLBACK (toolbar_drag_drop), label);
745 gtk_widget_show_all (window);
747 make_prop_editor (G_OBJECT (toolbar));
749 g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
751 g_signal_connect (toolbar, "popup_context_menu", G_CALLBACK (popup_context_menu), NULL);