## EReflowModel EReflowModel |

## Synopsis

    struct              EReflowModel;
    void                e_reflow_model_set_width            (EReflowModel *reflow_model,
                                                             gint width);
    gint                e_reflow_model_count                (EReflowModel *reflow_model);
    gint                e_reflow_model_height               (EReflowModel *reflow_model,
                                                             gint n,
                                                             GnomeCanvasGroup *parent);
    GnomeCanvasItem *   e_reflow_model_incarnate            (EReflowModel *reflow_model,
                                                             gint n,
                                                             GnomeCanvasGroup *parent);
    GHashTable *        e_reflow_model_create_cmp_cache     (EReflowModel *reflow_model);
    gint                e_reflow_model_compare              (EReflowModel *reflow_model,
                                                             gint n1,
                                                             gint n2,
                                                             GHashTable *cmp_cache);
    void                e_reflow_model_reincarnate          (EReflowModel *reflow_model,
                                                             gint n,
                                                             GnomeCanvasItem *item);
    void                e_reflow_model_changed              (EReflowModel *reflow_model);
    void                e_reflow_model_comparison_changed   (EReflowModel *reflow_model);
    void                e_reflow_model_items_inserted       (EReflowModel *reflow_model,
                                                             gint position,
                                                             gint count);
    void                e_reflow_model_item_removed         (EReflowModel *reflow_model,
                                                             gint n);
    void                e_reflow_model_item_changed         (EReflowModel *reflow_model,
                                                             gint n);

## Object Hierarchy

      GObject
       +----EReflowModel

## Signals

      "comparison-changed"                             : Run Last
      "model-changed"                                  : Run Last
      "model-item-changed"                             : Run Last
      "model-item-removed"                             : Run Last
      "model-items-inserted"                           : Run Last

## Description

## Details

### struct EReflowModel

    struct EReflowModel;

### e_reflow_model_set_width ()

    void                e_reflow_model_set_width            (EReflowModel *reflow_model,
                                                             gint width);

`reflow_model` : | The e-reflow-model to operate on
`width` : | The new value for the width of each item.

### e_reflow_model_count ()

    gint                e_reflow_model_count                (EReflowModel *reflow_model);

`reflow_model` : | The e-reflow-model to operate on
Returns : | the number of items in the reflow model.

### e_reflow_model_height ()

    gint                e_reflow_model_height               (EReflowModel *reflow_model,
                                                             gint n,
                                                             GnomeCanvasGroup *parent);

`reflow_model` : | The e-reflow-model to operate on
`n` : | The item number to get the height of.
`parent` : | The parent GnomeCanvasItem.
Returns : | the height of the nth item.

### e_reflow_model_incarnate ()

    GnomeCanvasItem *   e_reflow_model_incarnate            (EReflowModel *reflow_model,
                                                             gint n,
                                                             GnomeCanvasGroup *parent);

Create a GnomeCanvasItem to represent the nth piece of data.

`reflow_model` : | The e-reflow-model to operate on
`n` : | The item to create.
`parent` : | The parent GnomeCanvasItem to create a child of.
Returns : | the new GnomeCanvasItem.

### e_reflow_model_create_cmp_cache ()

    GHashTable *        e_reflow_model_create_cmp_cache     (EReflowModel *reflow_model);

Creates a compare cache for quicker sorting. The sorting function may not depend on the cache, but it should benefit from it if available.

`reflow_model` : | The e-reflow-model to operate on
Returns : | Newly created GHashTable with cached compare values. This will be automatically freed with `g_hash_table_destroy()` when no longer needed.

### e_reflow_model_compare ()

    gint                e_reflow_model_compare              (EReflowModel *reflow_model,
                                                             gint n1,
                                                             gint n2,
                                                             GHashTable *cmp_cache);

Compares item n1 and item n2 to see which should come first.

`reflow_model` : | The e-reflow-model to operate on
`n1` : | The first item to compare
`n2` : | The second item to compare
`cmp_cache` : | GHashTable of cached compare values, created by `e_reflow_model_create_cmp_cache()`. This can be NULL, when caching is not available, even when `reflow_model` defines the create_cmp_cache function.
Returns : | strcmp like semantics for the comparison value.

### e_reflow_model_reincarnate ()

    void                e_reflow_model_reincarnate          (EReflowModel *reflow_model,
                                                             gint n,
                                                             GnomeCanvasItem *item);

Update item to represent the nth piece of data.

`reflow_model` : | The e-reflow-model to operate on
`n` : | The item to create.
`item` : | The item to reuse.

### e_reflow_model_changed ()

    void                e_reflow_model_changed              (EReflowModel *reflow_model);

Use this function to notify any views of this reflow model that the contents of the reflow model have changed. This will emit the signal "model_changed" on the `reflow_model` object.

It is preferable to use the `e_reflow_model_item_changed()` signal to notify of smaller changes than to invalidate the entire model, as the views might have ways of caching the information they render from the model.

`reflow_model` : | the reflow model to notify of the change

### e_reflow_model_comparison_changed ()

    void                e_reflow_model_comparison_changed   (EReflowModel *reflow_model);

Use this function to notify any views of this reflow model that the sorting has changed. The actual contents of the items hasn't, so there's no need to re-query the model for the heights of the individual items.

`reflow_model` : | the reflow model to notify of the change

### e_reflow_model_items_inserted ()

    void                e_reflow_model_items_inserted       (EReflowModel *reflow_model,
                                                             gint position,
                                                             gint count);

Use this function to notify any views of the reflow model that a number of items have been inserted.

`reflow_model` : | The model changed.
`position` : | The position the items were insert in.
`count` : | The number of items inserted.

### e_reflow_model_item_removed ()

    void                e_reflow_model_item_removed         (EReflowModel *reflow_model,
                                                             gint n);

Use this function to notify any views of the reflow model that an item has been removed.

`reflow_model` : | The model changed.
`n` : | The position from which the items were removed.

### e_reflow_model_item_changed ()

    void                e_reflow_model_item_changed         (EReflowModel *reflow_model,
                                                             gint n);

Use this function to notify any views of the reflow model that the contents of item `item` have changed in model such that the height has changed or the item needs to be reincarnated. This function will emit the "model_item_changed" signal on the `reflow_model` object

`reflow_model` : | the reflow model to notify of the change
`n` : | the item that was changed in the model.

## Signal Details

### The `"comparison-changed"` signal

    void                user_function                      (EReflowModel *ereflowmodel,
                                                            gpointer      user_data)         : Run Last

### The `"model-changed"` signal

    void                user_function                      (EReflowModel *ereflowmodel,
                                                            gpointer      user_data)         : Run Last

### The `"model-item-changed"` signal

    void                user_function                      (EReflowModel *ereflowmodel,
                                                            gint          arg1,
                                                            gpointer      user_data)         : Run Last

### The `"model-item-removed"` signal

    void                user_function                      (EReflowModel *ereflowmodel,
                                                            gint          arg1,
                                                            gpointer      user_data)         : Run Last

### The `"model-items-inserted"` signal

    void                user_function                      (EReflowModel *ereflowmodel,
                                                            gint          arg1,
                                                            gint          arg2,
                                                            gpointer      user_data)         : Run Last