## GcrCollectionModel GcrCollectionModel — A GtkTreeModel that represents a collection |

## Synopsis

    struct              GcrCollectionModel;
    struct              GcrCollectionModelClass;
    enum                GcrCollectionModelMode;
    GcrCollectionModel * gcr_collection_model_new           (GcrCollection *collection,
                                                             GcrCollectionModelMode mode,
                                                             ...);
    GcrCollectionModel * gcr_collection_model_new_full      (GcrCollection *collection,
                                                             GcrCollectionModelMode mode,
                                                             const GcrColumn *columns);
    guint               gcr_collection_model_set_columns    (GcrCollectionModel *self,
                                                             const GcrColumn *columns);
    GcrCollection *     gcr_collection_model_get_collection (GcrCollectionModel *self);
    void                gcr_collection_model_set_collection (GcrCollectionModel *self,
                                                             GcrCollection *collection);
    gboolean            gcr_collection_model_iter_for_object
                                                            (GcrCollectionModel *self,
                                                             GObject *object,
                                                             GtkTreeIter *iter);
    GObject *           gcr_collection_model_object_for_iter
                                                            (GcrCollectionModel *self,
                                                             const GtkTreeIter *iter);
    gboolean            gcr_collection_model_is_selected    (GcrCollectionModel *self,
                                                             GtkTreeIter *iter);
    void                gcr_collection_model_change_selected
                                                            (GcrCollectionModel *self,
                                                             GtkTreeIter *iter,
                                                             gboolean selected);
    void                gcr_collection_model_toggle_selected
                                                            (GcrCollectionModel *self,
                                                             GtkTreeIter *iter);
    GList *             gcr_collection_model_get_selected_objects
                                                            (GcrCollectionModel *self);
    void                gcr_collection_model_set_selected_objects
                                                            (GcrCollectionModel *self,
                                                             GList *selected);
    gint                gcr_collection_model_column_for_selected
                                                            (GcrCollectionModel *self);

## Object Hierarchy

      GObject
       +----GcrCollectionModel

## Implemented Interfaces

GcrCollectionModel implements GtkTreeModel and GtkTreeSortable.

## Properties

      "collection"               GcrCollection*        : Read / Write
      "columns"                  gpointer              : Read / Write / Construct Only
      "mode"                     GcrCollectionModelMode  : Read / Write / Construct Only

## Description

This is an implementation of GtkTreeModel which represents the objects in the a GcrCollection. As objects are added or removed from the collection, rows are added and removed from this model.

The row values come from the properties of the objects in the collection. Use `gcr_collection_model_new()` to create a new collection model. To have more control over the values use a set of GcrColumn structures to define the columns. This can be done with `gcr_collection_model_new_full()` or `gcr_collection_model_set_columns()`.

Each row can have a selected state, which is represented by a boolean column. The selected state can be toggled with `gcr_collection_model_toggle_selected()` or set with `gcr_collection_model_set_selected_objects()` and retrieved with `gcr_collection_model_get_selected_objects()`.

To determine which object a row represents and vice versa, use the `gcr_collection_model_iter_for_object()` or `gcr_collection_model_object_for_iter()` functions.

## Details

### struct GcrCollectionModel

    struct GcrCollectionModel;

A GtkTreeModel which contains a row for each object in a GcrCollection.

### struct GcrCollectionModelClass

    struct GcrCollectionModelClass {
    	GObjectClass parent_class;
    };

The class for GcrCollectionModel.

GObjectClass `parent_class`; | The parent class

### enum GcrCollectionModelMode

    typedef enum {
    	GCR_COLLECTION_MODEL_LIST = 0,
    	GCR_COLLECTION_MODEL_TREE
    } GcrCollectionModelMode;

If set GcrCollectionModel is created with a mode of `GCR_COLLECTION_MODEL_TREE`, then any included objects that are themselves a GcrCollection, will have all child objects include as child rows in a tree form.

`GCR_COLLECTION_MODEL_LIST` | only objects in the top collection, no child objects
`GCR_COLLECTION_MODEL_TREE` | show objects in the collection, and child objects in a tree form

### gcr_collection_model_new ()

    GcrCollectionModel * gcr_collection_model_new           (GcrCollection *collection,
                                                             GcrCollectionModelMode mode,
                                                             ...);

Create a new GcrCollectionModel. The variable argument list should contain pairs of property names, and GType values. The variable argument list should be terminated with `NULL`.

`collection` : | the collection to represent
`mode` : | whether list or tree mode
`...` : | the column names and types
Returns : | a newly allocated model, which should be released with `g_object_unref()`. [transfer full]

### gcr_collection_model_new_full ()

    GcrCollectionModel * gcr_collection_model_new_full      (GcrCollection *collection,
                                                             GcrCollectionModelMode mode,
                                                             const GcrColumn *columns);

Create a new GcrCollectionModel.

`collection` : | the collection to represent
`mode` : | whether list or tree mode
`columns` : | the columns the model should contain
Returns : | a newly allocated model, which should be released with `g_object_unref()`. [transfer full]

### gcr_collection_model_set_columns ()

    guint               gcr_collection_model_set_columns    (GcrCollectionModel *self,
                                                             const GcrColumn *columns);

Set the columns that the model should contain. `columns` is an array of GcrColumn structures, with the last one containing `NULL` for all values.

This function can only be called once, and only if the model was not created without a set of columns. This function cannot be called after the model has been added to a view.

The columns are accessed as static data. They should continue to remain in memory for longer than the GcrCollectionModel object.

`self` : | The model
`columns` : | The columns the model should contain
Returns : | The number of columns

### gcr_collection_model_get_collection ()

    GcrCollection *     gcr_collection_model_get_collection (GcrCollectionModel *self);

Get the collection which this model represents

`self` : | a collection model
Returns : | the collection, owned by the model. [transfer none]

### gcr_collection_model_set_collection ()

    void                gcr_collection_model_set_collection (GcrCollectionModel *self,
                                                             GcrCollection *collection);

### gcr_collection_model_iter_for_object ()

    gboolean            gcr_collection_model_iter_for_object
                                                            (GcrCollectionModel *self,
                                                             GObject *object,
                                                             GtkTreeIter *iter);

Set `iter` to the row for the given object. If the object is not in this model, then `FALSE` will be returned.

`self` : | The model
`object` : | The object
`iter` : | The row for the object
Returns : | `TRUE` if the object was present.

### gcr_collection_model_object_for_iter ()

    GObject *           gcr_collection_model_object_for_iter
                                                            (GcrCollectionModel *self,
                                                             const GtkTreeIter *iter);

Get the object that is represented by the given row in the model.

`self` : | The model
`iter` : | The row
Returns : | The object, owned by the model. [transfer none]

### gcr_collection_model_is_selected ()

    gboolean            gcr_collection_model_is_selected    (GcrCollectionModel *self,
                                                             GtkTreeIter *iter);

Check whether a given row has been toggled as selected.

`self` : | The model
`iter` : | The row
Returns : | Whether the row has been selected.

### gcr_collection_model_change_selected ()

    void                gcr_collection_model_change_selected
                                                            (GcrCollectionModel *self,
                                                             GtkTreeIter *iter,
                                                             gboolean selected);

Set whether a given row is toggled selected or not.

`self` : | The model
`iter` : | The row
`selected` : | Whether the row should be selected or not.

### gcr_collection_model_toggle_selected ()

    void                gcr_collection_model_toggle_selected
                                                            (GcrCollectionModel *self,
                                                             GtkTreeIter *iter);

Toggle the selected state of a given row.

`self` : | The model
`iter` : | The row

### gcr_collection_model_get_selected_objects ()

    GList *             gcr_collection_model_get_selected_objects
                                                            (GcrCollectionModel *self);

Get a list of checked/selected objects.

`self` : | the collection model
Returns : | a list of selected objects, which should be freed with `g_list_free()`. [transfer container][element-type GLib.Object]

### gcr_collection_model_set_selected_objects ()

    void                gcr_collection_model_set_selected_objects
                                                            (GcrCollectionModel *self,
                                                             GList *selected);

Set the checked/selected objects.

`self` : | the collection model
`selected` : | a list of objects to select. [element-type GLib.Object]

### gcr_collection_model_column_for_selected ()

    gint                gcr_collection_model_column_for_selected
                                                            (GcrCollectionModel *self);

Get the column identifier for the column that contains the values of the selected state.

`self` : | The model
Returns : | The column identifier.

## Property Details

### The `"collection"` property

      "collection"               GcrCollection*        : Read / Write

Collection to get objects from.

### The `"columns"` property

      "columns"                  gpointer              : Read / Write / Construct Only

Columns for the model.

### The `"mode"` property

      "mode"                     GcrCollectionModelMode  : Read / Write / Construct Only

Tree or list mode.

Default value: GCR_COLLECTION_MODEL_TREE