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.
22 #undef GTK_DISABLE_DEPRECATED
25 #include "prop-editor.h"
28 reload_clicked (GtkWidget
*widget
)
30 static GdkAtom atom_rcfiles
= GDK_NONE
;
36 atom_rcfiles
= gdk_atom_intern("_GTK_READ_RCFILES", FALSE
);
38 for(i
= 0; i
< 5; i
++)
41 sev
.message_type
= atom_rcfiles
;
42 gdk_event_send_clientmessage_toall ((GdkEvent
*) &sev
);
46 change_orientation (GtkWidget
*button
, GtkWidget
*toolbar
)
49 GtkOrientation orientation
;
51 table
= gtk_widget_get_parent (toolbar
);
52 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button
)))
53 orientation
= GTK_ORIENTATION_VERTICAL
;
55 orientation
= GTK_ORIENTATION_HORIZONTAL
;
57 g_object_ref (toolbar
);
58 gtk_container_remove (GTK_CONTAINER (table
), toolbar
);
59 gtk_toolbar_set_orientation (GTK_TOOLBAR (toolbar
), orientation
);
60 if (orientation
== GTK_ORIENTATION_HORIZONTAL
)
62 gtk_table_attach (GTK_TABLE (table
), toolbar
,
63 0,2, 0,1, GTK_FILL
|GTK_EXPAND
, GTK_FILL
, 0, 0);
67 gtk_table_attach (GTK_TABLE (table
), toolbar
,
68 0,1, 0,4, GTK_FILL
, GTK_FILL
|GTK_EXPAND
, 0, 0);
70 g_object_unref (toolbar
);
74 change_show_arrow (GtkWidget
*button
, GtkWidget
*toolbar
)
76 gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar
),
77 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button
)));
81 set_toolbar_style_toggled (GtkCheckButton
*button
, GtkToolbar
*toolbar
)
83 GtkWidget
*option_menu
;
86 option_menu
= g_object_get_data (G_OBJECT (button
), "option-menu");
88 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button
)))
90 style
= gtk_option_menu_get_history (GTK_OPTION_MENU (option_menu
));
92 gtk_toolbar_set_style (toolbar
, style
);
93 gtk_widget_set_sensitive (option_menu
, TRUE
);
97 gtk_toolbar_unset_style (toolbar
);
98 gtk_widget_set_sensitive (option_menu
, FALSE
);
103 change_toolbar_style (GtkWidget
*option_menu
, GtkWidget
*toolbar
)
105 GtkToolbarStyle style
;
107 style
= gtk_option_menu_get_history (GTK_OPTION_MENU (option_menu
));
108 gtk_toolbar_set_style (GTK_TOOLBAR (toolbar
), style
);
112 set_visible_func(GtkTreeViewColumn
*tree_column
, GtkCellRenderer
*cell
,
113 GtkTreeModel
*model
, GtkTreeIter
*iter
, gpointer data
)
115 GtkToolItem
*tool_item
;
118 gtk_tree_model_get (model
, iter
, 0, &tool_item
, -1);
120 g_object_get (tool_item
, "visible", &visible
, NULL
);
121 g_object_set (cell
, "active", visible
, NULL
);
122 g_object_unref (tool_item
);
126 visibile_toggled(GtkCellRendererToggle
*cell
, const gchar
*path_str
,
131 GtkToolItem
*tool_item
;
134 path
= gtk_tree_path_new_from_string (path_str
);
135 gtk_tree_model_get_iter (model
, &iter
, path
);
137 gtk_tree_model_get (model
, &iter
, 0, &tool_item
, -1);
138 g_object_get (tool_item
, "visible", &visible
, NULL
);
139 g_object_set (tool_item
, "visible", !visible
, NULL
);
140 g_object_unref (tool_item
);
142 gtk_tree_model_row_changed (model
, path
, &iter
);
143 gtk_tree_path_free (path
);
147 set_expand_func(GtkTreeViewColumn
*tree_column
, GtkCellRenderer
*cell
,
148 GtkTreeModel
*model
, GtkTreeIter
*iter
, gpointer data
)
150 GtkToolItem
*tool_item
;
152 gtk_tree_model_get (model
, iter
, 0, &tool_item
, -1);
154 g_object_set (cell
, "active", gtk_tool_item_get_expand (tool_item
), NULL
);
155 g_object_unref (tool_item
);
159 expand_toggled(GtkCellRendererToggle
*cell
, const gchar
*path_str
,
164 GtkToolItem
*tool_item
;
166 path
= gtk_tree_path_new_from_string (path_str
);
167 gtk_tree_model_get_iter (model
, &iter
, path
);
169 gtk_tree_model_get (model
, &iter
, 0, &tool_item
, -1);
170 gtk_tool_item_set_expand (tool_item
, !gtk_tool_item_get_expand (tool_item
));
171 g_object_unref (tool_item
);
173 gtk_tree_model_row_changed (model
, path
, &iter
);
174 gtk_tree_path_free (path
);
178 set_homogeneous_func(GtkTreeViewColumn
*tree_column
, GtkCellRenderer
*cell
,
179 GtkTreeModel
*model
, GtkTreeIter
*iter
, gpointer data
)
181 GtkToolItem
*tool_item
;
183 gtk_tree_model_get (model
, iter
, 0, &tool_item
, -1);
185 g_object_set (cell
, "active", gtk_tool_item_get_homogeneous (tool_item
), NULL
);
186 g_object_unref (tool_item
);
190 homogeneous_toggled(GtkCellRendererToggle
*cell
, const gchar
*path_str
,
195 GtkToolItem
*tool_item
;
197 path
= gtk_tree_path_new_from_string (path_str
);
198 gtk_tree_model_get_iter (model
, &iter
, path
);
200 gtk_tree_model_get (model
, &iter
, 0, &tool_item
, -1);
201 gtk_tool_item_set_homogeneous (tool_item
, !gtk_tool_item_get_homogeneous (tool_item
));
202 g_object_unref (tool_item
);
204 gtk_tree_model_row_changed (model
, path
, &iter
);
205 gtk_tree_path_free (path
);
210 set_important_func(GtkTreeViewColumn
*tree_column
, GtkCellRenderer
*cell
,
211 GtkTreeModel
*model
, GtkTreeIter
*iter
, gpointer data
)
213 GtkToolItem
*tool_item
;
215 gtk_tree_model_get (model
, iter
, 0, &tool_item
, -1);
217 g_object_set (cell
, "active", gtk_tool_item_get_is_important (tool_item
), NULL
);
218 g_object_unref (tool_item
);
222 important_toggled(GtkCellRendererToggle
*cell
, const gchar
*path_str
,
227 GtkToolItem
*tool_item
;
229 path
= gtk_tree_path_new_from_string (path_str
);
230 gtk_tree_model_get_iter (model
, &iter
, path
);
232 gtk_tree_model_get (model
, &iter
, 0, &tool_item
, -1);
233 gtk_tool_item_set_is_important (tool_item
, !gtk_tool_item_get_is_important (tool_item
));
234 g_object_unref (tool_item
);
236 gtk_tree_model_row_changed (model
, path
, &iter
);
237 gtk_tree_path_free (path
);
240 static GtkListStore
*
241 create_items_list (GtkWidget
**tree_view_p
)
243 GtkWidget
*tree_view
;
244 GtkListStore
*list_store
;
245 GtkCellRenderer
*cell
;
247 list_store
= gtk_list_store_new (2, GTK_TYPE_TOOL_ITEM
, G_TYPE_STRING
);
249 tree_view
= gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store
));
251 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view
),
253 gtk_cell_renderer_text_new (),
256 cell
= gtk_cell_renderer_toggle_new ();
257 g_signal_connect (cell
, "toggled", G_CALLBACK (visibile_toggled
),
259 gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (tree_view
),
262 set_visible_func
, NULL
, NULL
);
264 cell
= gtk_cell_renderer_toggle_new ();
265 g_signal_connect (cell
, "toggled", G_CALLBACK (expand_toggled
),
267 gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (tree_view
),
270 set_expand_func
, NULL
, NULL
);
272 cell
= gtk_cell_renderer_toggle_new ();
273 g_signal_connect (cell
, "toggled", G_CALLBACK (homogeneous_toggled
),
275 gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (tree_view
),
278 set_homogeneous_func
, NULL
,NULL
);
280 cell
= gtk_cell_renderer_toggle_new ();
281 g_signal_connect (cell
, "toggled", G_CALLBACK (important_toggled
),
283 gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (tree_view
),
286 set_important_func
, NULL
,NULL
);
288 g_object_unref (list_store
);
290 *tree_view_p
= tree_view
;
296 add_item_to_list (GtkListStore
*store
, GtkToolItem
*item
, const gchar
*text
)
300 gtk_list_store_append (store
, &iter
);
301 gtk_list_store_set (store
, &iter
,
309 bold_toggled (GtkToggleToolButton
*button
)
311 g_message ("Bold toggled (active=%d)",
312 gtk_toggle_tool_button_get_active (button
));
316 set_icon_size_toggled (GtkCheckButton
*button
, GtkToolbar
*toolbar
)
318 GtkWidget
*option_menu
;
321 option_menu
= g_object_get_data (G_OBJECT (button
), "option-menu");
323 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button
)))
325 icon_size
= gtk_option_menu_get_history (GTK_OPTION_MENU (option_menu
));
326 icon_size
+= GTK_ICON_SIZE_SMALL_TOOLBAR
;
328 gtk_toolbar_set_icon_size (toolbar
, icon_size
);
329 gtk_widget_set_sensitive (option_menu
, TRUE
);
333 gtk_toolbar_unset_icon_size (toolbar
);
334 gtk_widget_set_sensitive (option_menu
, FALSE
);
339 icon_size_history_changed (GtkOptionMenu
*menu
, GtkToolbar
*toolbar
)
343 icon_size
= gtk_option_menu_get_history (menu
);
344 icon_size
+= GTK_ICON_SIZE_SMALL_TOOLBAR
;
346 gtk_toolbar_set_icon_size (toolbar
, icon_size
);
350 toolbar_drag_drop (GtkWidget
*widget
, GdkDragContext
*context
,
351 gint x
, gint y
, guint time
, GtkWidget
*label
)
355 g_snprintf(buf
, sizeof(buf
), "%d",
356 gtk_toolbar_get_drop_index (GTK_TOOLBAR (widget
), x
, y
));
357 gtk_label_set_label (GTK_LABEL (label
), buf
);
362 static GtkTargetEntry target_table
[] = {
363 { "application/x-toolbar-item", 0, 0 }
367 make_prop_editor (GObject
*object
)
369 GtkWidget
*prop_editor
= create_prop_editor (object
, 0);
370 gtk_widget_show (prop_editor
);
375 rtl_toggled (GtkCheckButton
*check
)
377 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check
)))
378 gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL
);
380 gtk_widget_set_default_direction (GTK_TEXT_DIR_LTR
);
390 position_function (GtkMenu
*menu
, gint
*x
, gint
*y
, gboolean
*push_in
, gpointer user_data
)
392 /* Do not do this in your own code */
394 MenuPositionData
*position_data
= user_data
;
397 *x
= position_data
->x
;
400 *y
= position_data
->y
;
407 popup_context_menu (GtkToolbar
*toolbar
, gint x
, gint y
, gint button_number
)
409 MenuPositionData position_data
;
411 GtkMenu
*menu
= GTK_MENU (gtk_menu_new ());
414 for (i
= 0; i
< 5; i
++)
417 gchar
*label
= g_strdup_printf ("Item _%d", i
);
418 item
= gtk_menu_item_new_with_mnemonic (label
);
419 gtk_menu_shell_append (GTK_MENU_SHELL (menu
), item
);
421 gtk_widget_show_all (GTK_WIDGET (menu
));
423 if (button_number
!= -1)
428 gtk_menu_popup (menu
, NULL
, NULL
, position_function
,
429 &position_data
, button_number
, gtk_get_current_event_time());
432 gtk_menu_popup (menu
, NULL
, NULL
, NULL
, NULL
, 0, gtk_get_current_event_time());
437 static GtkToolItem
*drag_item
= NULL
;
440 toolbar_drag_motion (GtkToolbar
*toolbar
,
441 GdkDragContext
*context
,
451 drag_item
= gtk_tool_button_new (NULL
, "A quite long button");
452 gtk_object_sink (GTK_OBJECT (g_object_ref (drag_item
)));
455 gdk_drag_status (context
, GDK_ACTION_MOVE
, time
);
457 index
= gtk_toolbar_get_drop_index (toolbar
, x
, y
);
459 gtk_toolbar_set_drop_highlight_item (toolbar
, drag_item
, index
);
465 toolbar_drag_leave (GtkToolbar
*toolbar
,
466 GdkDragContext
*context
,
472 g_object_unref (drag_item
);
476 gtk_toolbar_set_drop_highlight_item (toolbar
, NULL
, 0);
480 timeout_cb (GtkWidget
*widget
)
482 static gboolean sensitive
= TRUE
;
484 sensitive
= !sensitive
;
486 gtk_widget_set_sensitive (widget
, sensitive
);
492 timeout_cb1 (GtkWidget
*widget
)
494 static gboolean sensitive
= TRUE
;
495 sensitive
= !sensitive
;
496 gtk_widget_set_sensitive (widget
, sensitive
);
501 main (gint argc
, gchar
**argv
)
503 GtkWidget
*window
, *toolbar
, *table
, *treeview
, *scrolled_window
;
504 GtkWidget
*hbox
, *hbox1
, *hbox2
, *checkbox
, *option_menu
, *menu
;
506 static const gchar
*toolbar_styles
[] = { "icons", "text", "both (vertical)",
507 "both (horizontal)" };
516 gtk_init (&argc
, &argv
);
518 window
= gtk_window_new (GTK_WINDOW_TOPLEVEL
);
520 g_signal_connect (window
, "destroy", G_CALLBACK(gtk_main_quit
), NULL
);
522 table
= gtk_table_new (4, 2, FALSE
);
523 gtk_container_add (GTK_CONTAINER (window
), table
);
525 toolbar
= gtk_toolbar_new ();
526 gtk_table_attach (GTK_TABLE (table
), toolbar
,
527 0,2, 0,1, GTK_FILL
|GTK_EXPAND
, GTK_FILL
, 0, 0);
529 hbox1
= gtk_hbox_new (FALSE
, 3);
530 gtk_container_set_border_width (GTK_CONTAINER (hbox1
), 5);
531 gtk_table_attach (GTK_TABLE (table
), hbox1
,
532 1,2, 1,2, GTK_FILL
|GTK_EXPAND
, GTK_FILL
, 0, 0);
534 hbox2
= gtk_hbox_new (FALSE
, 2);
535 gtk_container_set_border_width (GTK_CONTAINER (hbox2
), 5);
536 gtk_table_attach (GTK_TABLE (table
), hbox2
,
537 1,2, 2,3, GTK_FILL
|GTK_EXPAND
, GTK_FILL
, 0, 0);
539 checkbox
= gtk_check_button_new_with_mnemonic("_Vertical");
540 gtk_box_pack_start (GTK_BOX (hbox1
), checkbox
, FALSE
, FALSE
, 0);
541 g_signal_connect (checkbox
, "toggled",
542 G_CALLBACK (change_orientation
), toolbar
);
544 checkbox
= gtk_check_button_new_with_mnemonic("_Show Arrow");
545 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbox
), TRUE
);
546 gtk_box_pack_start (GTK_BOX (hbox1
), checkbox
, FALSE
, FALSE
, 0);
547 g_signal_connect (checkbox
, "toggled",
548 G_CALLBACK (change_show_arrow
), toolbar
);
550 checkbox
= gtk_check_button_new_with_mnemonic("_Set Toolbar Style:");
551 g_signal_connect (checkbox
, "toggled", G_CALLBACK (set_toolbar_style_toggled
), toolbar
);
552 gtk_box_pack_start (GTK_BOX (hbox1
), checkbox
, FALSE
, FALSE
, 0);
554 option_menu
= gtk_option_menu_new();
555 gtk_widget_set_sensitive (option_menu
, FALSE
);
556 g_object_set_data (G_OBJECT (checkbox
), "option-menu", option_menu
);
558 menu
= gtk_menu_new();
559 for (i
= 0; i
< G_N_ELEMENTS (toolbar_styles
); i
++)
563 menuitem
= gtk_menu_item_new_with_label (toolbar_styles
[i
]);
564 gtk_container_add (GTK_CONTAINER (menu
), menuitem
);
565 gtk_widget_show (menuitem
);
567 gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu
), menu
);
568 gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu
),
569 GTK_TOOLBAR (toolbar
)->style
);
570 gtk_box_pack_start (GTK_BOX (hbox2
), option_menu
, FALSE
, FALSE
, 0);
571 g_signal_connect (option_menu
, "changed",
572 G_CALLBACK (change_toolbar_style
), toolbar
);
574 checkbox
= gtk_check_button_new_with_mnemonic("_Set Icon Size:");
575 g_signal_connect (checkbox
, "toggled", G_CALLBACK (set_icon_size_toggled
), toolbar
);
576 gtk_box_pack_start (GTK_BOX (hbox2
), checkbox
, FALSE
, FALSE
, 0);
578 option_menu
= gtk_option_menu_new();
579 g_object_set_data (G_OBJECT (checkbox
), "option-menu", option_menu
);
580 gtk_widget_set_sensitive (option_menu
, FALSE
);
581 menu
= gtk_menu_new();
582 menuitem
= gtk_menu_item_new_with_label ("small toolbar");
583 g_object_set_data (G_OBJECT (menuitem
), "value-id", GINT_TO_POINTER (GTK_ICON_SIZE_SMALL_TOOLBAR
));
584 gtk_container_add (GTK_CONTAINER (menu
), menuitem
);
585 gtk_widget_show (menuitem
);
587 menuitem
= gtk_menu_item_new_with_label ("large toolbar");
588 g_object_set_data (G_OBJECT (menuitem
), "value-id", GINT_TO_POINTER (GTK_ICON_SIZE_LARGE_TOOLBAR
));
589 gtk_container_add (GTK_CONTAINER (menu
), menuitem
);
590 gtk_widget_show (menuitem
);
592 gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu
), menu
);
593 gtk_box_pack_start (GTK_BOX (hbox2
), option_menu
, FALSE
, FALSE
, 0);
594 g_signal_connect (option_menu
, "changed",
595 G_CALLBACK (icon_size_history_changed
), toolbar
);
597 scrolled_window
= gtk_scrolled_window_new (NULL
, NULL
);
598 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window
),
599 GTK_POLICY_AUTOMATIC
, GTK_POLICY_AUTOMATIC
);
600 gtk_table_attach (GTK_TABLE (table
), scrolled_window
,
601 1,2, 3,4, GTK_FILL
|GTK_EXPAND
, GTK_FILL
|GTK_EXPAND
, 0, 0);
603 store
= create_items_list (&treeview
);
604 gtk_container_add (GTK_CONTAINER (scrolled_window
), treeview
);
606 item
= gtk_tool_button_new_from_stock (GTK_STOCK_NEW
);
607 gtk_tool_button_set_label (GTK_TOOL_BUTTON (item
), "Custom label");
608 gtk_tool_button_set_label (GTK_TOOL_BUTTON (item
), NULL
);
609 add_item_to_list (store
, item
, "New");
610 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
611 gdk_threads_add_timeout (3000, (GSourceFunc
) timeout_cb
, item
);
612 gtk_tool_item_set_expand (item
, TRUE
);
614 menu
= gtk_menu_new ();
615 for (i
= 0; i
< 20; i
++)
618 text
= g_strdup_printf ("Menuitem %d", i
);
619 menuitem
= gtk_menu_item_new_with_label (text
);
621 gtk_widget_show (menuitem
);
622 gtk_menu_shell_append (GTK_MENU_SHELL (menu
), menuitem
);
625 item
= gtk_menu_tool_button_new_from_stock (GTK_STOCK_OPEN
);
626 gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (item
), menu
);
627 add_item_to_list (store
, item
, "Open");
628 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
629 gdk_threads_add_timeout (3000, (GSourceFunc
) timeout_cb1
, item
);
631 menu
= gtk_menu_new ();
632 for (i
= 0; i
< 20; i
++)
635 text
= g_strdup_printf ("A%d", i
);
636 menuitem
= gtk_menu_item_new_with_label (text
);
638 gtk_widget_show (menuitem
);
639 gtk_menu_shell_append (GTK_MENU_SHELL (menu
), menuitem
);
642 item
= gtk_menu_tool_button_new_from_stock (GTK_STOCK_GO_BACK
);
643 gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (item
), menu
);
644 add_item_to_list (store
, item
, "BackWithHistory");
645 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
647 item
= gtk_separator_tool_item_new ();
648 add_item_to_list (store
, item
, "-----");
649 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
651 item
= gtk_tool_button_new_from_stock (GTK_STOCK_REFRESH
);
652 add_item_to_list (store
, item
, "Refresh");
653 g_signal_connect (item
, "clicked", G_CALLBACK (reload_clicked
), NULL
);
654 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
656 image
= gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING
, GTK_ICON_SIZE_DIALOG
);
657 item
= gtk_tool_item_new ();
658 gtk_widget_show (image
);
659 gtk_container_add (GTK_CONTAINER (item
), image
);
660 add_item_to_list (store
, item
, "(Custom Item)");
661 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
663 item
= gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK
);
664 add_item_to_list (store
, item
, "Back");
665 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
667 item
= gtk_separator_tool_item_new ();
668 add_item_to_list (store
, item
, "-----");
669 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
671 item
= gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD
);
672 add_item_to_list (store
, item
, "Forward");
673 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
675 item
= gtk_toggle_tool_button_new_from_stock (GTK_STOCK_BOLD
);
676 g_signal_connect (item
, "toggled", G_CALLBACK (bold_toggled
), NULL
);
677 add_item_to_list (store
, item
, "Bold");
678 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
679 gtk_widget_set_sensitive (GTK_WIDGET (item
), FALSE
);
681 item
= gtk_separator_tool_item_new ();
682 add_item_to_list (store
, item
, "-----");
683 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
684 gtk_tool_item_set_expand (item
, TRUE
);
685 gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (item
), FALSE
);
686 g_assert (gtk_toolbar_get_nth_item (GTK_TOOLBAR (toolbar
), 0) != 0);
688 item
= gtk_radio_tool_button_new_from_stock (NULL
, GTK_STOCK_JUSTIFY_LEFT
);
689 group
= gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item
));
690 add_item_to_list (store
, item
, "Left");
691 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
694 item
= gtk_radio_tool_button_new_from_stock (group
, GTK_STOCK_JUSTIFY_CENTER
);
695 make_prop_editor (G_OBJECT (item
));
697 group
= gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item
));
698 add_item_to_list (store
, item
, "Center");
699 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
701 item
= gtk_radio_tool_button_new_from_stock (group
, GTK_STOCK_JUSTIFY_RIGHT
);
702 add_item_to_list (store
, item
, "Right");
703 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
705 item
= gtk_tool_button_new (gtk_image_new_from_file ("apple-red.png"), "_Apple");
706 add_item_to_list (store
, item
, "Apple");
707 gtk_toolbar_insert (GTK_TOOLBAR (toolbar
), item
, -1);
708 gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON (item
), TRUE
);
710 hbox
= gtk_hbox_new (FALSE
, 5);
711 gtk_container_set_border_width (GTK_CONTAINER (hbox
), 5);
712 gtk_table_attach (GTK_TABLE (table
), hbox
,
713 1,2, 4,5, GTK_FILL
|GTK_EXPAND
, GTK_FILL
, 0, 0);
715 button
= gtk_button_new_with_label ("Drag me to the toolbar");
716 gtk_box_pack_start (GTK_BOX (hbox
), button
, FALSE
, FALSE
, 0);
718 label
= gtk_label_new ("Drop index:");
719 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
721 label
= gtk_label_new ("");
722 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
724 checkbox
= gtk_check_button_new_with_mnemonic("_Right to left");
725 if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL
)
726 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbox
), TRUE
);
728 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbox
), FALSE
);
729 g_signal_connect (checkbox
, "toggled", G_CALLBACK (rtl_toggled
), NULL
);
731 gtk_box_pack_end (GTK_BOX (hbox
), checkbox
, FALSE
, FALSE
, 0);
733 gtk_drag_source_set (button
, GDK_BUTTON1_MASK
,
734 target_table
, G_N_ELEMENTS (target_table
),
736 gtk_drag_dest_set (toolbar
, GTK_DEST_DEFAULT_DROP
,
737 target_table
, G_N_ELEMENTS (target_table
),
739 g_signal_connect (toolbar
, "drag_motion",
740 G_CALLBACK (toolbar_drag_motion
), NULL
);
741 g_signal_connect (toolbar
, "drag_leave",
742 G_CALLBACK (toolbar_drag_leave
), NULL
);
743 g_signal_connect (toolbar
, "drag_drop",
744 G_CALLBACK (toolbar_drag_drop
), label
);
746 gtk_widget_show_all (window
);
748 make_prop_editor (G_OBJECT (toolbar
));
750 g_signal_connect (window
, "delete_event", G_CALLBACK (gtk_main_quit
), NULL
);
752 g_signal_connect (toolbar
, "popup_context_menu", G_CALLBACK (popup_context_menu
), NULL
);