void drawable_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, "drawable-action", drawable_actions, G_N_ELEMENTS (drawable_actions)); gimp_action_group_add_toggle_actions (group, "drawable-action", drawable_toggle_actions, G_N_ELEMENTS (drawable_toggle_actions)); gimp_action_group_add_enum_actions (group, "drawable-action", drawable_flip_actions, G_N_ELEMENTS (drawable_flip_actions), G_CALLBACK (drawable_flip_cmd_callback)); gimp_action_group_add_enum_actions (group, "drawable-action", drawable_rotate_actions, G_N_ELEMENTS (drawable_rotate_actions), G_CALLBACK (drawable_rotate_cmd_callback)); #define SET_ALWAYS_SHOW_IMAGE(action,show) \ gimp_action_group_set_action_always_show_image (group, action, show) SET_ALWAYS_SHOW_IMAGE ("drawable-rotate-90", TRUE); SET_ALWAYS_SHOW_IMAGE ("drawable-rotate-180", TRUE); SET_ALWAYS_SHOW_IMAGE ("drawable-rotate-270", TRUE); #undef SET_ALWAYS_SHOW_IMAGE }
static void tool_options_actions_update_presets (GimpActionGroup *group, const gchar *action_prefix, GCallback callback, const gchar *help_id, GimpContainer *presets) { GList *list; gint n_children = 0; gint i; for (i = 0; ; i++) { gchar *action_name; GtkAction *action; action_name = g_strdup_printf ("%s-%03d", action_prefix, i); action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), action_name); g_free (action_name); if (! action) break; gtk_action_group_remove_action (GTK_ACTION_GROUP (group), action); } if (presets) n_children = gimp_container_get_n_children (presets); if (n_children > 0) { GimpEnumActionEntry entry; entry.name = NULL; entry.label = NULL; entry.accelerator = ""; entry.tooltip = NULL; entry.value = 0; entry.value_variable = FALSE; entry.help_id = help_id; for (list = GIMP_LIST (presets)->list, i = 0; list; list = g_list_next (list), i++) { GimpObject *options = list->data; entry.name = g_strdup_printf ("%s-%03d", action_prefix, i); entry.label = gimp_object_get_name (options); entry.stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (options)); entry.value = i; gimp_action_group_add_enum_actions (group, NULL, &entry, 1, callback); g_free ((gchar *) entry.name); } } }
void error_console_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, "error-console-action", error_console_actions, G_N_ELEMENTS (error_console_actions)); gimp_action_group_add_enum_actions (group, "error-console-action", error_console_save_actions, G_N_ELEMENTS (error_console_save_actions), G_CALLBACK (error_console_save_cmd_callback)); }
void drawable_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, drawable_actions, G_N_ELEMENTS (drawable_actions)); gimp_action_group_add_toggle_actions (group, drawable_toggle_actions, G_N_ELEMENTS (drawable_toggle_actions)); gimp_action_group_add_enum_actions (group, drawable_flip_actions, G_N_ELEMENTS (drawable_flip_actions), G_CALLBACK (drawable_flip_cmd_callback)); gimp_action_group_add_enum_actions (group, drawable_rotate_actions, G_N_ELEMENTS (drawable_rotate_actions), G_CALLBACK (drawable_rotate_cmd_callback)); }
void channels_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, channels_actions, G_N_ELEMENTS (channels_actions)); gimp_action_group_add_enum_actions (group, channels_to_selection_actions, G_N_ELEMENTS (channels_to_selection_actions), G_CALLBACK (channels_to_selection_cmd_callback)); }
void palette_editor_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, "palette-editor-action", palette_editor_actions, G_N_ELEMENTS (palette_editor_actions)); gimp_action_group_add_toggle_actions (group, "palette-editor-action", palette_editor_toggle_actions, G_N_ELEMENTS (palette_editor_toggle_actions)); gimp_action_group_add_enum_actions (group, "palette-editor-action", palette_editor_new_actions, G_N_ELEMENTS (palette_editor_new_actions), G_CALLBACK (palette_editor_new_color_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, palette_editor_zoom_actions, G_N_ELEMENTS (palette_editor_zoom_actions), G_CALLBACK (palette_editor_zoom_cmd_callback)); }
void edit_actions_setup (GimpActionGroup *group) { GimpContext *context = gimp_get_user_context (group->gimp); GimpRGB color; GimpPattern *pattern; GtkAction *action; gimp_action_group_add_actions (group, "edit-action", edit_actions, G_N_ELEMENTS (edit_actions)); gimp_action_group_add_enum_actions (group, "edit-action", edit_fill_actions, G_N_ELEMENTS (edit_fill_actions), G_CALLBACK (edit_fill_cmd_callback)); action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), "edit-paste-as-new-short"); gtk_action_set_accel_path (action, "<Actions>/edit/edit-paste-as-new"); action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), "edit-fill-pattern"); g_object_set (action, "context", context, NULL); g_signal_connect_object (context, "foreground-changed", G_CALLBACK (edit_actions_foreground_changed), group, 0); g_signal_connect_object (context, "background-changed", G_CALLBACK (edit_actions_background_changed), group, 0); g_signal_connect_object (context, "pattern-changed", G_CALLBACK (edit_actions_pattern_changed), group, 0); gimp_context_get_foreground (context, &color); edit_actions_foreground_changed (context, &color, group); gimp_context_get_background (context, &color); edit_actions_background_changed (context, &color, group); pattern = gimp_context_get_pattern (context); edit_actions_pattern_changed (context, pattern, group); #define SET_ALWAYS_SHOW_IMAGE(action,show) \ gimp_action_group_set_action_always_show_image (group, action, show) SET_ALWAYS_SHOW_IMAGE ("edit-fill-fg", TRUE); SET_ALWAYS_SHOW_IMAGE ("edit-fill-bg", TRUE); SET_ALWAYS_SHOW_IMAGE ("edit-fill-pattern", TRUE); #undef SET_ALWAYS_SHOW_IMAGE }
void colormap_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, "colormap-action", colormap_actions, G_N_ELEMENTS (colormap_actions)); gimp_action_group_add_enum_actions (group, "colormap-action", colormap_add_color_actions, G_N_ELEMENTS (colormap_add_color_actions), G_CALLBACK (colormap_add_color_cmd_callback)); }
void vectors_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, "vectors-action", vectors_actions, G_N_ELEMENTS (vectors_actions)); gimp_action_group_add_toggle_actions (group, "vectors-action", vectors_toggle_actions, G_N_ELEMENTS (vectors_toggle_actions)); gimp_action_group_add_enum_actions (group, "vectors-action", vectors_to_selection_actions, G_N_ELEMENTS (vectors_to_selection_actions), G_CALLBACK (vectors_to_selection_cmd_callback)); gimp_action_group_add_enum_actions (group, "vectors-action", vectors_selection_to_vectors_actions, G_N_ELEMENTS (vectors_selection_to_vectors_actions), G_CALLBACK (vectors_selection_to_vectors_cmd_callback)); }
void image_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, "image-action", image_actions, G_N_ELEMENTS (image_actions)); gimp_action_group_add_radio_actions (group, "image-convert-action", image_convert_base_type_actions, G_N_ELEMENTS (image_convert_base_type_actions), NULL, 0, G_CALLBACK (image_convert_base_type_cmd_callback)); gimp_action_group_add_radio_actions (group, "image-convert-action", image_convert_precision_actions, G_N_ELEMENTS (image_convert_precision_actions), NULL, 0, G_CALLBACK (image_convert_precision_cmd_callback)); gimp_action_group_add_enum_actions (group, "image-action", image_flip_actions, G_N_ELEMENTS (image_flip_actions), G_CALLBACK (image_flip_cmd_callback)); gimp_action_group_add_enum_actions (group, "image-action", image_rotate_actions, G_N_ELEMENTS (image_rotate_actions), G_CALLBACK (image_rotate_cmd_callback)); #define SET_ALWAYS_SHOW_IMAGE(action,show) \ gimp_action_group_set_action_always_show_image (group, action, show) SET_ALWAYS_SHOW_IMAGE ("image-rotate-90", TRUE); SET_ALWAYS_SHOW_IMAGE ("image-rotate-180", TRUE); SET_ALWAYS_SHOW_IMAGE ("image-rotate-270", TRUE); #undef SET_ALWAYS_SHOW_IMAGE }
void channels_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, "channels-action", channels_actions, G_N_ELEMENTS (channels_actions)); gimp_action_group_add_toggle_actions (group, "channels-action", channels_toggle_actions, G_N_ELEMENTS (channels_toggle_actions)); gimp_action_group_add_enum_actions (group, "channels-action", channels_color_tag_actions, G_N_ELEMENTS (channels_color_tag_actions), G_CALLBACK (channels_color_tag_cmd_callback)); gimp_action_group_add_enum_actions (group, "channels-action", channels_to_selection_actions, G_N_ELEMENTS (channels_to_selection_actions), G_CALLBACK (channels_to_selection_cmd_callback)); items_actions_setup (group, "channels"); }
void image_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, image_actions, G_N_ELEMENTS (image_actions)); gimp_action_group_add_radio_actions (group, image_convert_actions, G_N_ELEMENTS (image_convert_actions), NULL, 0, G_CALLBACK (image_convert_cmd_callback)); gimp_action_group_add_enum_actions (group, image_flip_actions, G_N_ELEMENTS (image_flip_actions), G_CALLBACK (image_flip_cmd_callback)); gimp_action_group_add_enum_actions (group, image_rotate_actions, G_N_ELEMENTS (image_rotate_actions), G_CALLBACK (image_rotate_cmd_callback)); }
void layers_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, layers_actions, G_N_ELEMENTS (layers_actions)); gimp_action_group_add_toggle_actions (group, layers_toggle_actions, G_N_ELEMENTS (layers_toggle_actions)); gimp_action_group_add_enum_actions (group, layers_mask_apply_actions, G_N_ELEMENTS (layers_mask_apply_actions), G_CALLBACK (layers_mask_apply_cmd_callback)); gimp_action_group_add_enum_actions (group, layers_mask_to_selection_actions, G_N_ELEMENTS (layers_mask_to_selection_actions), G_CALLBACK (layers_mask_to_selection_cmd_callback)); gimp_action_group_add_enum_actions (group, layers_alpha_to_selection_actions, G_N_ELEMENTS (layers_alpha_to_selection_actions), G_CALLBACK (layers_alpha_to_selection_cmd_callback)); gimp_action_group_add_enum_actions (group, layers_text_to_selection_actions, G_N_ELEMENTS (layers_alpha_to_selection_actions), G_CALLBACK (layers_alpha_to_selection_cmd_callback)); gimp_action_group_add_enum_actions (group, layers_select_actions, G_N_ELEMENTS (layers_select_actions), G_CALLBACK (layers_select_cmd_callback)); gimp_action_group_add_enum_actions (group, layers_opacity_actions, G_N_ELEMENTS (layers_opacity_actions), G_CALLBACK (layers_opacity_cmd_callback)); gimp_action_group_add_enum_actions (group, layers_mode_actions, G_N_ELEMENTS (layers_mode_actions), G_CALLBACK (layers_mode_cmd_callback)); }
void layers_actions_setup (GimpActionGroup *group) { gimp_action_group_add_actions (group, "layers-action", layers_actions, G_N_ELEMENTS (layers_actions)); gimp_action_group_add_toggle_actions (group, "layers-action", layers_toggle_actions, G_N_ELEMENTS (layers_toggle_actions)); gimp_action_group_add_enum_actions (group, "layers-action", layers_mask_apply_actions, G_N_ELEMENTS (layers_mask_apply_actions), G_CALLBACK (layers_mask_apply_cmd_callback)); gimp_action_group_add_enum_actions (group, "layers-action", layers_mask_to_selection_actions, G_N_ELEMENTS (layers_mask_to_selection_actions), G_CALLBACK (layers_mask_to_selection_cmd_callback)); gimp_action_group_add_enum_actions (group, "layers-action", layers_alpha_to_selection_actions, G_N_ELEMENTS (layers_alpha_to_selection_actions), G_CALLBACK (layers_alpha_to_selection_cmd_callback)); layers_actions_fix_tooltip (group, "layers-alpha-selection-replace", GDK_MOD1_MASK); layers_actions_fix_tooltip (group, "layers-alpha-selection-add", GDK_SHIFT_MASK | GDK_MOD1_MASK); layers_actions_fix_tooltip (group, "layers-alpha-selection-subtract", GDK_CONTROL_MASK | GDK_MOD1_MASK); layers_actions_fix_tooltip (group, "layers-alpha-selection-intersect", GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK); gimp_action_group_add_enum_actions (group, "layers-action", layers_select_actions, G_N_ELEMENTS (layers_select_actions), G_CALLBACK (layers_select_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, layers_opacity_actions, G_N_ELEMENTS (layers_opacity_actions), G_CALLBACK (layers_opacity_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, layers_mode_actions, G_N_ELEMENTS (layers_mode_actions), G_CALLBACK (layers_mode_cmd_callback)); }
void file_actions_setup (GimpActionGroup *group) { GimpEnumActionEntry *entries; gint n_entries; gint i; gimp_action_group_add_actions (group, "file-action", file_actions, G_N_ELEMENTS (file_actions)); gimp_action_group_add_enum_actions (group, "file-action", file_save_actions, G_N_ELEMENTS (file_save_actions), G_CALLBACK (file_save_cmd_callback)); n_entries = GIMP_GUI_CONFIG (group->gimp->config)->last_opened_size; entries = g_new0 (GimpEnumActionEntry, n_entries); for (i = 0; i < n_entries; i++) { entries[i].name = g_strdup_printf ("file-open-recent-%02d", i + 1); entries[i].icon_name = "document-open"; entries[i].label = entries[i].name; entries[i].tooltip = NULL; entries[i].value = i; entries[i].value_variable = FALSE; if (i < 9) entries[i].accelerator = g_strdup_printf ("<primary>%d", i + 1); else if (i == 9) entries[i].accelerator = g_strdup ("<primary>0"); else entries[i].accelerator = NULL; } gimp_action_group_add_enum_actions (group, NULL, entries, n_entries, G_CALLBACK (file_open_recent_cmd_callback)); for (i = 0; i < n_entries; i++) { GtkAction *action; gimp_action_group_set_action_visible (group, entries[i].name, FALSE); gimp_action_group_set_action_always_show_image (group, entries[i].name, TRUE); action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), entries[i].name); g_object_set (action, "context", gimp_get_user_context (group->gimp), NULL); g_free ((gchar *) entries[i].name); if (entries[i].accelerator) g_free ((gchar *) entries[i].accelerator); } g_free (entries); g_signal_connect_object (group->gimp->documents, "add", G_CALLBACK (file_actions_last_opened_update), group, 0); g_signal_connect_object (group->gimp->documents, "remove", G_CALLBACK (file_actions_last_opened_update), group, 0); g_signal_connect_object (group->gimp->documents, "reorder", G_CALLBACK (file_actions_last_opened_reorder), group, 0); file_actions_last_opened_update (group->gimp->documents, NULL, group); /* also listen to image adding/removal so we catch the case where * the last image is closed but its display stays open. */ g_signal_connect_object (group->gimp->images, "add", G_CALLBACK (file_actions_close_all_update), group, 0); g_signal_connect_object (group->gimp->images, "remove", G_CALLBACK (file_actions_close_all_update), group, 0); file_actions_close_all_update (group->gimp->displays, NULL, group); }
void view_actions_setup (GimpActionGroup *group) { GtkAction *action; gimp_action_group_add_actions (group, "view-action", view_actions, G_N_ELEMENTS (view_actions)); gimp_action_group_add_toggle_actions (group, "view-action", view_toggle_actions, G_N_ELEMENTS (view_toggle_actions)); gimp_action_group_add_enum_actions (group, "view-zoom-action", view_zoom_actions, G_N_ELEMENTS (view_zoom_actions), G_CALLBACK (view_zoom_cmd_callback)); gimp_action_group_add_radio_actions (group, "view-zoom-action", view_zoom_explicit_actions, G_N_ELEMENTS (view_zoom_explicit_actions), NULL, 10000, G_CALLBACK (view_zoom_explicit_cmd_callback)); gimp_action_group_add_enum_actions (group, "view-padding-color", view_padding_color_actions, G_N_ELEMENTS (view_padding_color_actions), G_CALLBACK (view_padding_color_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, view_scroll_horizontal_actions, G_N_ELEMENTS (view_scroll_horizontal_actions), G_CALLBACK (view_scroll_horizontal_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, view_scroll_vertical_actions, G_N_ELEMENTS (view_scroll_vertical_actions), G_CALLBACK (view_scroll_vertical_cmd_callback)); /* connect "activate" of view-zoom-other manually so it can be * selected even if it's the active item of the radio group */ action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), "view-zoom-other"); g_signal_connect (action, "activate", G_CALLBACK (view_zoom_other_cmd_callback), group->user_data); g_signal_connect_object (group->gimp->config, "notify::check-type", G_CALLBACK (view_actions_check_type_notify), group, 0); view_actions_check_type_notify (GIMP_DISPLAY_CONFIG (group->gimp->config), NULL, group); if (GIMP_IS_IMAGE_WINDOW (group->user_data) || GIMP_IS_GIMP (group->user_data)) { /* add window actions only if the context of the group is * the display itself or the global popup (not if the context * is a dock) * (see dock-actions.c) */ window_actions_setup (group, GIMP_HELP_VIEW_CHANGE_SCREEN); } }
void plug_in_actions_setup (GimpActionGroup *group) { GimpPlugInActionEntry *entries; GSList *list; gint n_entries; gint i; gimp_action_group_add_actions (group, plug_in_actions, G_N_ELEMENTS (plug_in_actions)); gimp_action_group_add_enum_actions (group, plug_in_repeat_actions, G_N_ELEMENTS (plug_in_repeat_actions), G_CALLBACK (plug_in_repeat_cmd_callback)); for (list = group->gimp->plug_in_manager->menu_branches; list; list = g_slist_next (list)) { GimpPlugInMenuBranch *branch = list->data; plug_in_actions_menu_branch_added (group->gimp->plug_in_manager, branch->prog_name, branch->menu_path, branch->menu_label, group); } g_signal_connect_object (group->gimp->plug_in_manager, "menu-branch-added", G_CALLBACK (plug_in_actions_menu_branch_added), group, 0); for (list = group->gimp->plug_in_manager->plug_in_procedures; list; list = g_slist_next (list)) { GimpPlugInProcedure *plug_in_proc = list->data; if (plug_in_proc->prog) plug_in_actions_register_procedure (group->gimp->pdb, GIMP_PROCEDURE (plug_in_proc), group); } g_signal_connect_object (group->gimp->pdb, "register-procedure", G_CALLBACK (plug_in_actions_register_procedure), group, 0); g_signal_connect_object (group->gimp->pdb, "unregister-procedure", G_CALLBACK (plug_in_actions_unregister_procedure), group, 0); n_entries = gimp_plug_in_manager_history_size (group->gimp->plug_in_manager); entries = g_new0 (GimpPlugInActionEntry, n_entries); for (i = 0; i < n_entries; i++) { entries[i].name = g_strdup_printf ("plug-in-recent-%02d", i + 1); entries[i].stock_id = NULL; entries[i].label = ""; entries[i].accelerator = ""; entries[i].tooltip = NULL; entries[i].procedure = NULL; entries[i].help_id = GIMP_HELP_FILTER_RESHOW; } gimp_action_group_add_plug_in_actions (group, entries, n_entries, G_CALLBACK (plug_in_history_cmd_callback)); for (i = 0; i < n_entries; i++) { gimp_action_group_set_action_visible (group, entries[i].name, FALSE); g_free ((gchar *) entries[i].name); } g_free (entries); g_signal_connect_object (group->gimp->plug_in_manager, "history-changed", G_CALLBACK (plug_in_actions_history_changed), group, 0); plug_in_actions_history_changed (group->gimp->plug_in_manager, group); }
static void tool_options_actions_update_presets (GimpActionGroup *group, const gchar *action_prefix, GCallback callback, const gchar *help_id, GimpContainer *presets, gboolean need_writable, gboolean need_deletable) { GList *list; gint n_children = 0; gint i; for (i = 0; ; i++) { gchar *action_name; GtkAction *action; action_name = g_strdup_printf ("%s-%03d", action_prefix, i); action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), action_name); g_free (action_name); if (! action) break; gtk_action_group_remove_action (GTK_ACTION_GROUP (group), action); } if (presets) n_children = gimp_container_get_n_children (presets); if (n_children > 0) { GimpEnumActionEntry entry; entry.name = NULL; entry.label = NULL; entry.accelerator = ""; entry.tooltip = NULL; entry.value = 0; entry.value_variable = FALSE; entry.help_id = help_id; for (list = GIMP_LIST (presets)->list, i = 0; list; list = g_list_next (list), i++) { GimpObject *preset = list->data; GdkPixbuf *pixbuf = NULL; entry.name = g_strdup_printf ("%s-%03d", action_prefix, i); entry.label = gimp_object_get_name (preset); entry.icon_name = gimp_viewable_get_icon_name (GIMP_VIEWABLE (preset)); entry.value = i; g_object_get (preset, "icon-pixbuf", &pixbuf, NULL); gimp_action_group_add_enum_actions (group, NULL, &entry, 1, callback); if (need_writable) SET_SENSITIVE (entry.name, gimp_data_is_writable (GIMP_DATA (preset))); if (need_deletable) SET_SENSITIVE (entry.name, gimp_data_is_deletable (GIMP_DATA (preset))); if (pixbuf) gimp_action_group_set_action_pixbuf (group, entry.name, pixbuf); g_free ((gchar *) entry.name); } } }
void tools_actions_setup (GimpActionGroup *group) { GtkAction *action; GList *list; gimp_action_group_add_actions (group, "tools-action", tools_actions, G_N_ELEMENTS (tools_actions)); gimp_action_group_add_string_actions (group, "tools-action", tools_alternative_actions, G_N_ELEMENTS (tools_alternative_actions), G_CALLBACK (tools_select_cmd_callback)); action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), "tools-by-color-select-short"); gtk_action_set_accel_path (action, "<Actions>/tools/tools-by-color-select"); gimp_action_group_add_enum_actions (group, NULL, tools_color_average_radius_actions, G_N_ELEMENTS (tools_color_average_radius_actions), G_CALLBACK (tools_color_average_radius_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_paint_brush_size_actions, G_N_ELEMENTS (tools_paint_brush_size_actions), G_CALLBACK (tools_paint_brush_size_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_paint_brush_angle_actions, G_N_ELEMENTS (tools_paint_brush_angle_actions), G_CALLBACK (tools_paint_brush_angle_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_paint_brush_aspect_ratio_actions, G_N_ELEMENTS (tools_paint_brush_aspect_ratio_actions), G_CALLBACK (tools_paint_brush_aspect_ratio_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_ink_blob_size_actions, G_N_ELEMENTS (tools_ink_blob_size_actions), G_CALLBACK (tools_ink_blob_size_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_ink_blob_aspect_actions, G_N_ELEMENTS (tools_ink_blob_aspect_actions), G_CALLBACK (tools_ink_blob_aspect_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_ink_blob_angle_actions, G_N_ELEMENTS (tools_ink_blob_angle_actions), G_CALLBACK (tools_ink_blob_angle_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_foreground_select_brush_size_actions, G_N_ELEMENTS (tools_foreground_select_brush_size_actions), G_CALLBACK (tools_fg_select_brush_size_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_transform_preview_opacity_actions, G_N_ELEMENTS (tools_transform_preview_opacity_actions), G_CALLBACK (tools_transform_preview_opacity_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_value_1_actions, G_N_ELEMENTS (tools_value_1_actions), G_CALLBACK (tools_value_1_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_value_2_actions, G_N_ELEMENTS (tools_value_2_actions), G_CALLBACK (tools_value_2_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_value_3_actions, G_N_ELEMENTS (tools_value_3_actions), G_CALLBACK (tools_value_3_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_value_4_actions, G_N_ELEMENTS (tools_value_4_actions), G_CALLBACK (tools_value_4_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_object_1_actions, G_N_ELEMENTS (tools_object_1_actions), G_CALLBACK (tools_object_1_cmd_callback)); gimp_action_group_add_enum_actions (group, NULL, tools_object_2_actions, G_N_ELEMENTS (tools_object_2_actions), G_CALLBACK (tools_object_2_cmd_callback)); for (list = gimp_get_tool_info_iter (group->gimp); list; list = g_list_next (list)) { GimpToolInfo *tool_info = list->data; if (tool_info->menu_path) { GimpStringActionEntry entry; const gchar *stock_id; const gchar *identifier; gchar *tmp; gchar *name; stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool_info)); identifier = gimp_object_get_name (tool_info); tmp = g_strndup (identifier + strlen ("gimp-"), strlen (identifier) - strlen ("gimp--tool")); name = g_strdup_printf ("tools-%s", tmp); g_free (tmp); entry.name = name; entry.stock_id = stock_id; entry.label = tool_info->menu_path; entry.accelerator = tool_info->menu_accel; entry.tooltip = tool_info->help; entry.help_id = tool_info->help_id; entry.value = identifier; gimp_action_group_add_string_actions (group, NULL, &entry, 1, G_CALLBACK (tools_select_cmd_callback)); g_free (name); } } }
void filters_actions_setup (GimpActionGroup *group) { GimpProcedureActionEntry *entries; gint n_entries; gint i; gimp_action_group_add_actions (group, "filters-action", filters_menu_actions, G_N_ELEMENTS (filters_menu_actions)); gimp_action_group_add_string_actions (group, "filters-action", filters_actions, G_N_ELEMENTS (filters_actions), G_CALLBACK (filters_filter_cmd_callback)); gimp_action_group_add_enum_actions (group, "filters-action", filters_repeat_actions, G_N_ELEMENTS (filters_repeat_actions), G_CALLBACK (filters_repeat_cmd_callback)); for (i = 0; i < G_N_ELEMENTS (filters_actions); i++) { const GimpStringActionEntry *entry = &filters_actions[i]; const gchar *description; description = gegl_operation_get_key (entry->value, "description"); if (description) gimp_action_group_set_action_tooltip (group, entry->name, description); } n_entries = gimp_filter_history_size (group->gimp); entries = g_new0 (GimpProcedureActionEntry, n_entries); for (i = 0; i < n_entries; i++) { entries[i].name = g_strdup_printf ("filter-recent-%02d", i + 1); entries[i].icon_name = NULL; entries[i].label = ""; entries[i].accelerator = ""; entries[i].tooltip = NULL; entries[i].procedure = NULL; entries[i].help_id = GIMP_HELP_FILTER_RESHOW; } gimp_action_group_add_procedure_actions (group, entries, n_entries, G_CALLBACK (filters_history_cmd_callback)); for (i = 0; i < n_entries; i++) { gimp_action_group_set_action_visible (group, entries[i].name, FALSE); g_free ((gchar *) entries[i].name); } g_free (entries); g_signal_connect_object (group->gimp, "filter-history-changed", G_CALLBACK (filters_actions_history_changed), group, 0); filters_actions_history_changed (group->gimp, group); }