+ action = gtk_action_group_get_action(lw->action_group, action_name);
+
+ action_icon = gtk_action_create_icon(action, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ tooltip_text = gtk_action_get_tooltip(action);
+
+ gtk_ui_manager_add_ui(lw->ui_manager, lw->toolbar_merge_id[type], path, action_name, action_name, GTK_UI_MANAGER_TOOLITEM, FALSE);
+
+ if (GTK_IS_RADIO_ACTION(action) || GTK_IS_TOGGLE_ACTION(action))
+ {
+ button = gtk_toggle_button_new();
+ }
+ else
+ {
+ button = gtk_button_new();
+ }
+
+ if (GTK_IS_TOGGLE_ACTION(action) || GTK_IS_RADIO_ACTION(action))
+ {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action)));
+ }
+
+ if (action_icon)
+ {
+ gtk_button_set_image(GTK_BUTTON(button), action_icon);
+ }
+ else
+ {
+ gtk_button_set_label(GTK_BUTTON(button), action_name);
+ }
+
+ gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
+ gtk_widget_set_tooltip_text(button, tooltip_text);
+
+ if (GTK_IS_RADIO_ACTION(action))
+ {
+ id = g_signal_connect(G_OBJECT(action), "changed", G_CALLBACK(action_radio_changed_cb), button);
+ g_object_set_data(G_OBJECT(button), "id", GUINT_TO_POINTER(id));
+ }
+ else if (GTK_IS_TOGGLE_ACTION(action))
+ {
+ id = g_signal_connect(G_OBJECT(action), "activate", G_CALLBACK(action_toggle_activate_cb), button);
+ g_object_set_data(G_OBJECT(button), "id", GUINT_TO_POINTER(id));
+ }
+
+ g_signal_connect(G_OBJECT(button), "button_press_event", G_CALLBACK(toolbar_button_press_event_cb), action);
+ g_object_set_data(G_OBJECT(button), "action", action);