void items_actions_setup (GimpActionGroup *group, const gchar *prefix) { GEnumClass *enum_class; GEnumValue *value; enum_class = g_type_class_ref (GIMP_TYPE_COLOR_TAG); for (value = enum_class->values; value->value_name; value++) { gchar action[32]; g_snprintf (action, sizeof (action), "%s-color-tag-%s", prefix, value->value_nick); if (value->value == GIMP_COLOR_TAG_NONE) { gimp_action_group_set_action_always_show_image (group, action, TRUE); } else { GimpRGB color; gimp_action_group_set_action_context (group, action, gimp_get_user_context (group->gimp)); gimp_get_color_tag_color (value->value, &color, FALSE); gimp_action_group_set_action_color (group, action, &color, FALSE); } } g_type_class_unref (enum_class); }
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); }
static void windows_actions_image_notify (GimpDisplay *display, const GParamSpec *unused, GimpActionGroup *group) { GimpImage *image = gimp_display_get_image (display); if (image) { GtkAction *action; gchar *action_name = gimp_display_get_action_name (display); action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), action_name); if (! action) { GimpActionEntry entry; entry.name = action_name; entry.stock_id = GIMP_STOCK_IMAGE; entry.label = ""; entry.accelerator = NULL; entry.tooltip = NULL; entry.callback = G_CALLBACK (windows_show_display_cmd_callback); entry.help_id = NULL; gimp_action_group_add_actions (group, NULL, &entry, 1); gimp_action_group_set_action_always_show_image (group, action_name, TRUE); action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), action_name); g_object_set_data (G_OBJECT (action), "display", display); } { const gchar *display_name; gchar *escaped; gchar *title; display_name = gimp_image_get_display_name (image); escaped = gimp_escape_uline (display_name); title = g_strdup_printf ("%s-%d.%d", escaped, gimp_image_get_ID (image), gimp_display_get_instance (display)); g_free (escaped); g_object_set (action, "label", title, "tooltip", gimp_image_get_display_path (image), "viewable", image, "context", gimp_get_user_context (group->gimp), NULL); g_free (title); } g_free (action_name); windows_actions_update_display_accels (group); } else { windows_actions_display_remove (group->gimp->displays, display, group); } }