Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
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;
}