void vectors_edit_cmd_callback (GtkAction *action, gpointer data) { GimpImage *image; GimpVectors *vectors; GimpTool *active_tool; return_if_no_vectors (image, vectors, data); active_tool = tool_manager_get_active (image->gimp); if (! GIMP_IS_VECTOR_TOOL (active_tool)) { GimpToolInfo *tool_info = gimp_get_tool_info (image->gimp, "gimp-vector-tool"); if (GIMP_IS_TOOL_INFO (tool_info)) { gimp_context_set_tool (action_data_get_context (data), tool_info); active_tool = tool_manager_get_active (image->gimp); } } if (GIMP_IS_VECTOR_TOOL (active_tool)) gimp_vector_tool_set_vectors (GIMP_VECTOR_TOOL (active_tool), vectors); }
void layers_text_tool_cmd_callback (GtkAction *action, gpointer data) { GimpImage *image; GimpLayer *layer; GtkWidget *widget; GimpTool *active_tool; return_if_no_layer (image, layer, data); return_if_no_widget (widget, data); if (! gimp_item_is_text_layer (GIMP_ITEM (layer))) { layers_edit_attributes_cmd_callback (action, data); return; } active_tool = tool_manager_get_active (image->gimp); if (! GIMP_IS_TEXT_TOOL (active_tool)) { GimpToolInfo *tool_info = gimp_get_tool_info (image->gimp, "gimp-text-tool"); if (GIMP_IS_TOOL_INFO (tool_info)) { gimp_context_set_tool (action_data_get_context (data), tool_info); active_tool = tool_manager_get_active (image->gimp); } } if (GIMP_IS_TEXT_TOOL (active_tool)) gimp_text_tool_set_layer (GIMP_TEXT_TOOL (active_tool), layer); }
GimpToolOptions * gimp_tool_get_options (GimpTool *tool) { g_return_val_if_fail (GIMP_IS_TOOL (tool), NULL); g_return_val_if_fail (GIMP_IS_TOOL_INFO (tool->tool_info), NULL); return tool->tool_info->tool_options; }
static void gimp_paint_tool_modifier_key (GimpTool *tool, GdkModifierType key, gboolean press, GdkModifierType state, GimpDisplay *display) { GimpPaintTool *paint_tool = GIMP_PAINT_TOOL (tool); GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool); if (paint_tool->pick_colors && ! paint_tool->draw_line) { if ((state & gimp_get_all_modifiers_mask ()) == gimp_get_constrain_behavior_mask ()) { if (! gimp_color_tool_is_enabled (GIMP_COLOR_TOOL (tool))) { GimpToolInfo *info = gimp_get_tool_info (display->gimp, "gimp-color-picker-tool"); if (GIMP_IS_TOOL_INFO (info)) { if (gimp_draw_tool_is_active (draw_tool)) gimp_draw_tool_stop (draw_tool); gimp_color_tool_enable (GIMP_COLOR_TOOL (tool), GIMP_COLOR_OPTIONS (info->tool_options)); switch (GIMP_COLOR_TOOL (tool)->pick_mode) { case GIMP_COLOR_PICK_MODE_FOREGROUND: gimp_tool_push_status (tool, display, _("Click in any image to pick the " "foreground color")); break; case GIMP_COLOR_PICK_MODE_BACKGROUND: gimp_tool_push_status (tool, display, _("Click in any image to pick the " "background color")); break; default: break; } } } } else { if (gimp_color_tool_is_enabled (GIMP_COLOR_TOOL (tool))) { gimp_tool_pop_status (tool, display); gimp_color_tool_disable (GIMP_COLOR_TOOL (tool)); } } } }
static void gimp_tool_constructed (GObject *object) { GimpTool *tool = GIMP_TOOL (object); G_OBJECT_CLASS (parent_class)->constructed (object); g_assert (GIMP_IS_TOOL_INFO (tool->tool_info)); g_signal_connect_object (gimp_tool_get_options (tool), "notify", G_CALLBACK (gimp_tool_options_notify), tool, 0); }
GFile * gimp_tool_info_get_options_file (GimpToolInfo *tool_info, const gchar *suffix) { gchar *basename; GFile *file; g_return_val_if_fail (GIMP_IS_TOOL_INFO (tool_info), NULL); /* also works for a NULL suffix */ basename = g_strconcat (gimp_object_get_name (tool_info), suffix, NULL); file = gimp_directory_file ("tool-options", basename, NULL); g_free (basename); return file; }
void gimp_tool_info_set_standard (Gimp *gimp, GimpToolInfo *tool_info) { g_return_if_fail (GIMP_IS_GIMP (gimp)); g_return_if_fail (! tool_info || GIMP_IS_TOOL_INFO (tool_info)); if (tool_info != gimp->standard_tool_info) { if (gimp->standard_tool_info) g_object_unref (gimp->standard_tool_info); gimp->standard_tool_info = tool_info; if (gimp->standard_tool_info) g_object_ref (gimp->standard_tool_info); } }
static void gimp_paint_tool_constructed (GObject *object) { GimpTool *tool = GIMP_TOOL (object); GimpPaintTool *paint_tool = GIMP_PAINT_TOOL (object); GimpPaintOptions *options = GIMP_PAINT_TOOL_GET_OPTIONS (tool); GimpDisplayConfig *display_config; GimpPaintInfo *paint_info; G_OBJECT_CLASS (parent_class)->constructed (object); g_assert (GIMP_IS_TOOL_INFO (tool->tool_info)); g_assert (GIMP_IS_PAINT_INFO (tool->tool_info->paint_info)); display_config = GIMP_DISPLAY_CONFIG (tool->tool_info->gimp->config); paint_info = tool->tool_info->paint_info; g_assert (g_type_is_a (paint_info->paint_type, GIMP_TYPE_PAINT_CORE)); paint_tool->core = g_object_new (paint_info->paint_type, "undo-desc", paint_info->blurb, NULL); g_signal_connect_object (options, "notify::hard", G_CALLBACK (gimp_paint_tool_hard_notify), tool, 0); gimp_paint_tool_hard_notify (options, NULL, tool); paint_tool->show_cursor = display_config->show_paint_tool_cursor; paint_tool->draw_brush = display_config->show_brush_outline; g_signal_connect_object (display_config, "notify::show-paint-tool-cursor", G_CALLBACK (gimp_paint_tool_cursor_notify), paint_tool, 0); g_signal_connect_object (display_config, "notify::show-brush-outline", G_CALLBACK (gimp_paint_tool_cursor_notify), paint_tool, 0); }