/** * gimp_color_profile_store_add_file: * @store: a #GimpColorProfileStore * @file: file of the profile to add (or %NULL) * @label: label to use for the profile * (may only be %NULL if @filename is %NULL) * * Adds a color profile item to the #GimpColorProfileStore. Items * added with this function will be kept at the top, separated from * the history of last used color profiles. * * This function is often used to add a selectable item for the %NULL * file. If you pass %NULL for both @file and @label, the @label will * be set to the string "None" for you (and translated for the user). * * Since: 2.10 **/ void gimp_color_profile_store_add_file (GimpColorProfileStore *store, GFile *file, const gchar *label) { GtkTreeIter separator; GtkTreeIter iter; g_return_if_fail (GIMP_IS_COLOR_PROFILE_STORE (store)); g_return_if_fail (label != NULL || file == NULL); g_return_if_fail (file == NULL || G_IS_FILE (file)); if (! file && ! label) label = C_("profile", "None"); gimp_color_profile_store_get_separator (store, &separator, TRUE); gtk_list_store_insert_before (GTK_LIST_STORE (store), &iter, &separator); gtk_list_store_set (GTK_LIST_STORE (store), &iter, GIMP_COLOR_PROFILE_STORE_ITEM_TYPE, GIMP_COLOR_PROFILE_STORE_ITEM_FILE, GIMP_COLOR_PROFILE_STORE_FILE, file, GIMP_COLOR_PROFILE_STORE_LABEL, label, GIMP_COLOR_PROFILE_STORE_INDEX, -1, -1); }
/** * gimp_color_profile_combo_box_new_with_model: * @dialog: a #GtkDialog to present when the user selects the * "Select color profile from disk..." item * @model: a #GimpColorProfileStore object * * This constructor is useful when you want to create several * combo-boxes for profile selection that all share the same * #GimpColorProfileStore. This is for example done in the * GIMP Preferences dialog. * * See also gimp_color_profile_combo_box_new(). * * Return value: a new #GimpColorProfileComboBox. * * Since: GIMP 2.4 **/ GtkWidget * gimp_color_profile_combo_box_new_with_model (GtkWidget *dialog, GtkTreeModel *model) { g_return_val_if_fail (GTK_IS_DIALOG (dialog), NULL); g_return_val_if_fail (GIMP_IS_COLOR_PROFILE_STORE (model), NULL); return g_object_new (GIMP_TYPE_COLOR_PROFILE_COMBO_BOX, "dialog", dialog, "model", model, NULL); }
/** * _gimp_color_profile_store_history_reorder * @store: a #GimpColorProfileStore * @iter: a #GtkTreeIter * * Moves the entry pointed to by @iter to the front of the MRU list. * * Since: 2.4 **/ void _gimp_color_profile_store_history_reorder (GimpColorProfileStore *store, GtkTreeIter *iter) { GtkTreeModel *model; gint index; gboolean iter_valid; g_return_if_fail (GIMP_IS_COLOR_PROFILE_STORE (store)); g_return_if_fail (iter != NULL); model = GTK_TREE_MODEL (store); gtk_tree_model_get (model, iter, GIMP_COLOR_PROFILE_STORE_INDEX, &index, -1); if (index == 0) return; /* already at the top */ for (iter_valid = gtk_tree_model_get_iter_first (model, iter); iter_valid; iter_valid = gtk_tree_model_iter_next (model, iter)) { gint type; gint this_index; gtk_tree_model_get (model, iter, GIMP_COLOR_PROFILE_STORE_ITEM_TYPE, &type, GIMP_COLOR_PROFILE_STORE_INDEX, &this_index, -1); if (type == GIMP_COLOR_PROFILE_STORE_ITEM_FILE && this_index > -1) { if (this_index < index) { this_index++; } else if (this_index == index) { this_index = 0; } gtk_list_store_set (GTK_LIST_STORE (store), iter, GIMP_COLOR_PROFILE_STORE_INDEX, this_index, -1); } } }
/** * gimp_color_profile_store_add: * @store: a #GimpColorProfileStore * @filename: filename of the profile to add (or %NULL) * @label: label to use for the profile * (may only be %NULL if @filename is %NULL) * * Adds a color profile item to the #GimpColorProfileStore. Items * added with this function will be kept at the top, separated from * the history of last used color profiles. * * This function is often used to add a selectable item for the %NULL * filename. If you pass %NULL for both @filename and @label, the * @label will be set to the string "None" for you (and translated for * the user). * * Deprecated: use gimp_color_profile_store_add_file() instead. * * Since: 2.4 **/ void gimp_color_profile_store_add (GimpColorProfileStore *store, const gchar *filename, const gchar *label) { GFile *file = NULL; g_return_if_fail (GIMP_IS_COLOR_PROFILE_STORE (store)); g_return_if_fail (label != NULL || filename == NULL); if (filename) file = g_file_new_for_path (filename); gimp_color_profile_store_add_file (store, file, label); g_object_unref (file); }
/** * _gimp_color_profile_store_history_add: * @store: a #GimpColorProfileStore * @file: file of the profile to add (or %NULL) * @label: label to use for the profile (or %NULL) * @iter: a #GtkTreeIter * * Return value: %TRUE if the iter is valid and pointing to the item * * Since: 2.4 **/ gboolean _gimp_color_profile_store_history_add (GimpColorProfileStore *store, GFile *file, const gchar *label, GtkTreeIter *iter) { GtkTreeModel *model; gboolean iter_valid; gint max = -1; g_return_val_if_fail (GIMP_IS_COLOR_PROFILE_STORE (store), FALSE); g_return_val_if_fail (iter != NULL, FALSE); model = GTK_TREE_MODEL (store); for (iter_valid = gtk_tree_model_get_iter_first (model, iter); iter_valid; iter_valid = gtk_tree_model_iter_next (model, iter)) { gint type; gint index; GFile *this; gtk_tree_model_get (model, iter, GIMP_COLOR_PROFILE_STORE_ITEM_TYPE, &type, GIMP_COLOR_PROFILE_STORE_INDEX, &index, -1); if (type != GIMP_COLOR_PROFILE_STORE_ITEM_FILE) continue; if (index > max) max = index; /* check if we found a filename match */ gtk_tree_model_get (model, iter, GIMP_COLOR_PROFILE_STORE_FILE, &this, -1); if ((this && file && g_file_equal (this, file)) || (! this && ! file)) { /* update the label */ if (label && *label) gtk_list_store_set (GTK_LIST_STORE (store), iter, GIMP_COLOR_PROFILE_STORE_LABEL, label, -1); if (this) g_object_unref (this); return TRUE; } if (this) g_object_unref (this); } if (! file) return FALSE; if (label && *label) { iter_valid = gimp_color_profile_store_history_insert (store, iter, file, label, ++max); } else { const gchar *utf8 = gimp_file_get_utf8_name (file); gchar *basename = g_path_get_basename (utf8); iter_valid = gimp_color_profile_store_history_insert (store, iter, file, basename, ++max); g_free (basename); } return iter_valid; }