## GtkCellLayout GtkCellLayout |

## Functions

void | (*GtkCellLayoutDataFunc) ()
void | gtk_cell_layout_pack_start ()
void | gtk_cell_layout_pack_end ()
GList * | gtk_cell_layout_get_cells ()
void | gtk_cell_layout_reorder ()
void | gtk_cell_layout_clear ()
void | gtk_cell_layout_set_attributes ()
void | gtk_cell_layout_add_attribute ()
void | gtk_cell_layout_set_cell_data_func ()
void | gtk_cell_layout_clear_attributes ()

## Types and Values

| GtkCellLayout
struct | GtkCellLayoutIface

## Object Hierarchy

        GInterface
        ╰── GtkCellLayout

## Prerequisites

GtkCellLayout requires GObject.

## Known Implementations

GtkCellLayout is implemented by GtkCellView, GtkComboBox, GtkComboBoxEntry, GtkComboBoxText, GtkEntryCompletion, GtkIconView and GtkTreeViewColumn.

## Includes

    #include <gtk/gtk.h>

## Description

## Functions

### GtkCellLayoutDataFunc ()

    void
    (*GtkCellLayoutDataFunc) (GtkCellLayout *cell_layout,
                              GtkCellRenderer *cell,
                              GtkTreeModel *tree_model,
                              GtkTreeIter *iter,
                              gpointer data);

### gtk_cell_layout_pack_start ()

    void
    gtk_cell_layout_pack_start (GtkCellLayout *cell_layout,
                                GtkCellRenderer *cell,
                                gboolean expand);

Packs the `cell` into the beginning of `cell_layout` . If `expand` is `FALSE`, then the `cell` is allocated no more space than it needs. Any unused space is divided evenly between cells for which `expand` is `TRUE`.

Note that reusing the same cell renderer is not supported.

#### Parameters

cell_layout | A GtkCellLayout. |
cell | A GtkCellRenderer. |
expand | `TRUE` if `cell` is to be given extra space allocated to `cell_layout` . |

Since: 2.4

### gtk_cell_layout_pack_end ()

    void
    gtk_cell_layout_pack_end (GtkCellLayout *cell_layout,
                              GtkCellRenderer *cell,
                              gboolean expand);

Adds the `cell` to the end of `cell_layout` . If `expand` is `FALSE`, then the `cell` is allocated no more space than it needs. Any unused space is divided evenly between cells for which `expand` is `TRUE`.

Note that reusing the same cell renderer is not supported.

#### Parameters

cell_layout | A GtkCellLayout. |
cell | A GtkCellRenderer. |
expand | `TRUE` if `cell` is to be given extra space allocated to `cell_layout` . |

Since: 2.4

### gtk_cell_layout_get_cells ()

    GList *
    gtk_cell_layout_get_cells (GtkCellLayout *cell_layout);

Returns the cell renderers which have been added to `cell_layout` .

#### Parameters

cell_layout | a GtkCellLayout |

#### Returns

a list of cell renderers. The list, but not the renderers has been newly allocated and should be freed with `g_list_free()` when no longer needed.

[element-type GtkCellRenderer][transfer container]

Since: 2.12

### gtk_cell_layout_reorder ()

    void
    gtk_cell_layout_reorder (GtkCellLayout *cell_layout,
                             GtkCellRenderer *cell,
                             gint position);

Re-inserts `cell` at `position` . Note that `cell` has already to be packed into `cell_layout` for this to function properly.

#### Parameters

cell_layout | A GtkCellLayout. |
cell | A GtkCellRenderer to reorder. |
position | New position to insert `cell` at. |

Since: 2.4

### gtk_cell_layout_clear ()

    void
    gtk_cell_layout_clear (GtkCellLayout *cell_layout);

Unsets all the mappings on all renderers on `cell_layout` and removes all renderers from `cell_layout` .

#### Parameters

cell_layout | A GtkCellLayout. |

Since: 2.4

### gtk_cell_layout_set_attributes ()

    void
    gtk_cell_layout_set_attributes (GtkCellLayout *cell_layout,
                                    GtkCellRenderer *cell,
                                    ...);

Sets the attributes in list as the attributes of `cell_layout` . The attributes should be in attribute/column order, as in `gtk_cell_layout_add_attribute()`. All existing attributes are removed, and replaced with the new attributes.

#### Parameters

cell_layout | A GtkCellLayout. |
cell | A GtkCellRenderer. |
Varargs | A `NULL`-terminated list of attributes. |

Since: 2.4

### gtk_cell_layout_add_attribute ()

    void
    gtk_cell_layout_add_attribute (GtkCellLayout *cell_layout,
                                   GtkCellRenderer *cell,
                                   const gchar *attribute,
                                   gint column);

Adds an attribute mapping to the list in `cell_layout` . The `column` is the column of the model to get a value from, and the `attribute` is the parameter on `cell` to be set from the value. So for example if column 2 of the model contains strings, you could have the "text" attribute of a GtkCellRendererText get its values from column 2.

#### Parameters

cell_layout | A GtkCellLayout. |
cell | A GtkCellRenderer. |
attribute | An attribute on the renderer. |
column | The column position on the model to get the attribute from. |

Since: 2.4

### gtk_cell_layout_set_cell_data_func ()

    void
    gtk_cell_layout_set_cell_data_func (GtkCellLayout *cell_layout,
                                        GtkCellRenderer *cell,
                                        GtkCellLayoutDataFunc func,
                                        gpointer func_data,
                                        GDestroyNotify destroy);

Sets the GtkCellLayoutDataFunc to use for `cell_layout` . This function is used instead of the standard attributes mapping for setting the column value, and should set the value of `cell_layout` 's cell renderer(s) as appropriate. `func` may be `NULL` to remove and older one.

#### Parameters

cell_layout | A GtkCellLayout. |
cell | A GtkCellRenderer. |
func | The GtkCellLayoutDataFunc to use. |
func_data | The user data for `func` . |
destroy | The destroy notification for `func_data` . |

Since: 2.4

### gtk_cell_layout_clear_attributes ()

    void
    gtk_cell_layout_clear_attributes (GtkCellLayout *cell_layout,
                                      GtkCellRenderer *cell);

Clears all existing attributes previously set with `gtk_cell_layout_set_attributes()`.

#### Parameters

cell_layout | A GtkCellLayout. |
cell | A GtkCellRenderer to clear the attribute mapping on. |

Since: 2.4

## Types and Values

### GtkCellLayout

    typedef struct _GtkCellLayout GtkCellLayout;

### struct GtkCellLayoutIface

    struct GtkCellLayoutIface {
      GTypeInterface g_iface;

      /* Virtual Table */
      void (* pack_start)         (GtkCellLayout         *cell_layout,
                                   GtkCellRenderer       *cell,
                                   gboolean               expand);
      void (* pack_end)           (GtkCellLayout         *cell_layout,
                                   GtkCellRenderer       *cell,
                                   gboolean               expand);
      void (* clear)              (GtkCellLayout         *cell_layout);
      void (* add_attribute)      (GtkCellLayout         *cell_layout,
                                   GtkCellRenderer       *cell,
                                   const gchar           *attribute,
                                   gint                   column);
      void (* set_cell_data_func) (GtkCellLayout         *cell_layout,
                                   GtkCellRenderer       *cell,
                                   GtkCellLayoutDataFunc  func,
                                   gpointer               func_data,
                                   GDestroyNotify         destroy);
      void (* clear_attributes)   (GtkCellLayout         *cell_layout,
                                   GtkCellRenderer       *cell);
      void (* reorder)            (GtkCellLayout         *cell_layout,
                                   GtkCellRenderer       *cell,
                                   gint                   position);
      GList* (* get_cells)        (GtkCellLayout         *cell_layout);
    };