void tools_select_cmd_callback (GtkAction *action, const gchar *value, gpointer data) { Gimp *gimp; GimpToolInfo *tool_info; GimpContext *context; GimpDisplay *display; gboolean rotate_layer = FALSE; return_if_no_gimp (gimp, data); /* special case gimp-rotate-tool being called from the Layer menu */ if (strcmp (value, "gimp-rotate-layer") == 0) { rotate_layer = TRUE; value = "gimp-rotate-tool"; } tool_info = gimp_get_tool_info (gimp, value); context = gimp_get_user_context (gimp); /* always allocate a new tool when selected from the image menu */ if (gimp_context_get_tool (context) != tool_info) { gimp_context_set_tool (context, tool_info); if (rotate_layer) g_object_set (tool_info->tool_options, "type", GIMP_TRANSFORM_TYPE_LAYER, NULL); } else { gimp_context_tool_changed (context); } display = gimp_context_get_display (context); if (display && gimp_display_get_image (display)) tool_manager_initialize_active (gimp, display); }