static GObject * gimp_color_profile_store_constructor (GType type, guint n_params, GObjectConstructParam *params) { GObject *object; GimpColorProfileStore *store; GtkTreeIter iter; object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params); store = GIMP_COLOR_PROFILE_STORE (object); gtk_list_store_append (GTK_LIST_STORE (store), &iter); gtk_list_store_set (GTK_LIST_STORE (store), &iter, GIMP_COLOR_PROFILE_STORE_ITEM_TYPE, GIMP_COLOR_PROFILE_STORE_ITEM_DIALOG, GIMP_COLOR_PROFILE_STORE_LABEL, _("Select color profile from disk..."), -1); if (store->history) { gimp_color_profile_store_load (store, store->history, NULL); } return object; }
static void gimp_color_profile_store_dispose (GObject *object) { GimpColorProfileStore *store = GIMP_COLOR_PROFILE_STORE (object); if (store->history) { gimp_color_profile_store_save (store, store->history, NULL); } G_OBJECT_CLASS (parent_class)->dispose (object); }
static void gimp_color_profile_combo_box_changed (GtkComboBox *combo) { GimpColorProfileComboBoxPrivate *priv; GtkTreeModel *model = gtk_combo_box_get_model (combo); GtkTreeIter iter; gint type; if (! gtk_combo_box_get_active_iter (combo, &iter)) return; gtk_tree_model_get (model, &iter, GIMP_COLOR_PROFILE_STORE_ITEM_TYPE, &type, -1); priv = GIMP_COLOR_PROFILE_COMBO_BOX_GET_PRIVATE (combo); switch (type) { case GIMP_COLOR_PROFILE_STORE_ITEM_DIALOG: { GtkWidget *dialog = GIMP_COLOR_PROFILE_COMBO_BOX (combo)->dialog; GtkWidget *parent = gtk_widget_get_toplevel (GTK_WIDGET (combo)); if (GTK_IS_WINDOW (parent)) gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent)); gtk_window_present (GTK_WINDOW (dialog)); if (priv->last_path && gtk_tree_model_get_iter (model, &iter, priv->last_path)) { gtk_combo_box_set_active_iter (combo, &iter); } } break; case GIMP_COLOR_PROFILE_STORE_ITEM_FILE: if (priv->last_path) gtk_tree_path_free (priv->last_path); priv->last_path = gtk_tree_model_get_path (model, &iter); _gimp_color_profile_store_history_reorder (GIMP_COLOR_PROFILE_STORE (model), &iter); break; default: break; } }
static void gimp_color_profile_store_finalize (GObject *object) { GimpColorProfileStore *store = GIMP_COLOR_PROFILE_STORE (object); if (store->history) { g_free (store->history); store->history = NULL; } G_OBJECT_CLASS (parent_class)->finalize (object); }
/** * gimp_color_profile_combo_box_add: * @combo: a #GimpColorProfileComboBox * @filename: filename of the profile to add (or %NULL) * @label: label to use for the profile * (may only be %NULL if @filename is %NULL) * * This function delegates to the underlying * #GimpColorProfileStore. Please refer to the documentation of * gimp_color_profile_store_add() for details. * * Since: GIMP 2.4 **/ void gimp_color_profile_combo_box_add (GimpColorProfileComboBox *combo, const gchar *filename, const gchar *label) { GtkTreeModel *model; g_return_if_fail (GIMP_IS_COLOR_PROFILE_COMBO_BOX (combo)); g_return_if_fail (label != NULL || filename == NULL); model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo)); gimp_color_profile_store_add (GIMP_COLOR_PROFILE_STORE (model), filename, label); }
/** * gimp_color_profile_combo_box_set_active: * @combo: a #GimpColorProfileComboBox * @filename: filename of the profile to select * @label: label to use when adding a new entry (can be %NULL) * * Selects a color profile from the @combo and makes it the active * item. If the profile is not listed in the @combo, then it is added * with the given @label (or @filename in case that @label is %NULL). * * Since: GIMP 2.4 **/ void gimp_color_profile_combo_box_set_active (GimpColorProfileComboBox *combo, const gchar *filename, const gchar *label) { GtkTreeModel *model; GtkTreeIter iter; g_return_if_fail (GIMP_IS_COLOR_PROFILE_COMBO_BOX (combo)); model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo)); if (_gimp_color_profile_store_history_add (GIMP_COLOR_PROFILE_STORE (model), filename, label, &iter)) gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter); }
/** * gimp_color_profile_combo_box_set_active: * @combo: a #GimpColorProfileComboBox * @filename: filename of the profile to select * @label: label to use when adding a new entry (can be %NULL) * * Selects a color profile from the @combo and makes it the active * item. If the profile is not listed in the @combo, then it is added * with the given @label (or @filename in case that @label is %NULL). * * Since: GIMP 2.4 **/ void gimp_color_profile_combo_box_set_active (GimpColorProfileComboBox *combo, const gchar *filename, const gchar *label) { GtkTreeModel *model; GtkTreeIter iter; gchar *l = NULL; g_return_if_fail (GIMP_IS_COLOR_PROFILE_COMBO_BOX (combo)); model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo)); if (filename && ! (label && *label)) { cmsHPROFILE profile; GError *error = NULL; profile = gimp_lcms_profile_open_from_file (filename, &error); if (! profile) { g_message ("%s", error->message); g_clear_error (&error); } else { l = gimp_lcms_profile_get_label (profile); cmsCloseProfile (profile); } } else { l = g_strdup (label); } if (_gimp_color_profile_store_history_add (GIMP_COLOR_PROFILE_STORE (model), filename, l, &iter)) { gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter); } g_free (l); }
static void gimp_color_profile_store_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { GimpColorProfileStore *store = GIMP_COLOR_PROFILE_STORE (object); switch (property_id) { case PROP_HISTORY: g_value_set_string (value, store->history); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }
static void gimp_color_profile_store_constructed (GObject *object) { GimpColorProfileStore *store = GIMP_COLOR_PROFILE_STORE (object); GtkTreeIter iter; G_OBJECT_CLASS (parent_class)->constructed (object); gtk_list_store_append (GTK_LIST_STORE (store), &iter); gtk_list_store_set (GTK_LIST_STORE (store), &iter, GIMP_COLOR_PROFILE_STORE_ITEM_TYPE, GIMP_COLOR_PROFILE_STORE_ITEM_DIALOG, GIMP_COLOR_PROFILE_STORE_LABEL, _("Select color profile from disk..."), -1); if (store->history) { gimp_color_profile_store_load (store, store->history, NULL); } }
/** * gimp_color_profile_combo_box_set_active: * @combo: a #GimpColorProfileComboBox * @filename: filename of the profile to select * @label: label to use when adding a new entry (can be %NULL) * * Selects a color profile from the @combo and makes it the active * item. If the profile is not listed in the @combo, then it is added * with the given @label (or @filename in case that @label is %NULL). * * Since: 2.4 **/ void gimp_color_profile_combo_box_set_active (GimpColorProfileComboBox *combo, const gchar *filename, const gchar *label) { GtkTreeModel *model; GtkTreeIter iter; g_return_if_fail (GIMP_IS_COLOR_PROFILE_COMBO_BOX (combo)); model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo)); if (filename && ! (label && *label)) { GFile *file; GimpColorProfile *profile; GError *error = NULL; file = g_file_new_for_path (filename); profile = gimp_color_profile_new_from_file (file, &error); g_object_unref (file); if (! profile) { g_message ("%s", error->message); g_clear_error (&error); } else { label = gimp_color_profile_get_label (profile); g_object_unref (profile); } } if (_gimp_color_profile_store_history_add (GIMP_COLOR_PROFILE_STORE (model), filename, label, &iter)) { gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter); } }