gboolean gimp_file_proc_view_set_proc (GimpFileProcView *view, GimpPlugInProcedure *proc) { GtkTreeModel *model; GtkTreeIter iter; gboolean iter_valid; g_return_val_if_fail (GIMP_IS_FILE_PROC_VIEW (view), FALSE); model = gtk_tree_view_get_model (GTK_TREE_VIEW (view)); for (iter_valid = gtk_tree_model_get_iter_first (model, &iter); iter_valid; iter_valid = gtk_tree_model_iter_next (model, &iter)) { GimpPlugInProcedure *this; gtk_tree_model_get (model, &iter, COLUMN_PROC, &this, -1); if (this) g_object_unref (this); if (this == proc) break; } if (iter_valid) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); gtk_tree_selection_select_iter (selection, &iter); } return iter_valid; }
GimpPlugInProcedure * gimp_file_proc_view_get_proc (GimpFileProcView *view, gchar **label) { GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; g_return_val_if_fail (GIMP_IS_FILE_PROC_VIEW (view), NULL); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { GimpPlugInProcedure *proc; if (label) gtk_tree_model_get (model, &iter, COLUMN_PROC, &proc, COLUMN_LABEL, label, -1); else gtk_tree_model_get (model, &iter, COLUMN_PROC, &proc, -1); if (proc) g_object_unref (proc); return proc; } if (label) *label = NULL; return NULL; }
gchar * gimp_file_proc_view_get_help_id (GimpFileProcView *view) { GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; g_return_val_if_fail (GIMP_IS_FILE_PROC_VIEW (view), NULL); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gchar *help_id; gtk_tree_model_get (model, &iter, COLUMN_HELP_ID, &help_id, -1); return help_id; } return NULL; }
GimpPlugInProcedure * gimp_file_proc_view_get_proc (GimpFileProcView *view, gchar **label, GtkFileFilter **filter) { GtkTreeModel *model; GtkTreeSelection *selection; GimpPlugInProcedure *proc; GtkTreeIter iter; gboolean has_selection; g_return_val_if_fail (GIMP_IS_FILE_PROC_VIEW (view), NULL); if (label) *label = NULL; if (filter) *filter = NULL; selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); has_selection = gtk_tree_selection_get_selected (selection, &model, &iter); /* if there's no selected item, we return the "automatic" procedure, which, * if exists, is the first item. */ if (! has_selection) { model = gtk_tree_view_get_model (GTK_TREE_VIEW (view)); if (! gtk_tree_model_get_iter_first (model, &iter)) return NULL; } gtk_tree_model_get (model, &iter, COLUMN_PROC, &proc, -1); if (proc) { g_object_unref (proc); /* there's no selected item, and no "automatic" procedure. return NULL. */ if (! has_selection) return NULL; } if (label) { gtk_tree_model_get (model, &iter, COLUMN_LABEL, label, -1); } if (filter) { gtk_tree_model_get (model, &iter, COLUMN_FILTER, filter, -1); } return proc; }