## ETableSortInfo ETableSortInfo |

## Synopsis

    struct              ETableSortInfo;
    ETableSortInfo *    e_table_sort_info_new               (struct _ETableSpecification *specification);
    void                e_table_sort_info_parse_context_push
                                                            (GMarkupParseContext *context,
                                                             struct _ETableSpecification *specification);
    ETableSortInfo *    e_table_sort_info_parse_context_pop (GMarkupParseContext *context);
    struct _ETableSpecification * e_table_sort_info_ref_specification
                                                            (ETableSortInfo *sort_info);
    gboolean            e_table_sort_info_get_can_group     (ETableSortInfo *sort_info);
    void                e_table_sort_info_set_can_group     (ETableSortInfo *sort_info,
                                                             gboolean can_group);
    guint               e_table_sort_info_grouping_get_count
                                                            (ETableSortInfo *sort_info);
    void                e_table_sort_info_grouping_truncate (ETableSortInfo *sort_info,
                                                             guint length);
    ETableColumnSpecification * e_table_sort_info_grouping_get_nth
                                                            (ETableSortInfo *sort_info,
                                                             guint n,
                                                             GtkSortType *out_sort_type);
    void                e_table_sort_info_grouping_set_nth  (ETableSortInfo *sort_info,
                                                             guint n,
                                                             ETableColumnSpecification *spec,
                                                             GtkSortType sort_type);
    guint               e_table_sort_info_sorting_get_count (ETableSortInfo *sort_info);
    void                e_table_sort_info_sorting_remove    (ETableSortInfo *sort_info,
                                                             guint n);
    void                e_table_sort_info_sorting_truncate  (ETableSortInfo *sort_info,
                                                             guint length);
    ETableColumnSpecification * e_table_sort_info_sorting_get_nth
                                                            (ETableSortInfo *sort_info,
                                                             guint n,
                                                             GtkSortType *out_sort_type);
    void                e_table_sort_info_sorting_set_nth   (ETableSortInfo *sort_info,
                                                             guint n,
                                                             ETableColumnSpecification *spec,
                                                             GtkSortType sort_type);
    void                e_table_sort_info_sorting_insert    (ETableSortInfo *sort_info,
                                                             guint n,
                                                             ETableColumnSpecification *spec,
                                                             GtkSortType sort_type);
    void                e_table_sort_info_load_from_node    (ETableSortInfo *sort_info,
                                                             xmlNode *node,
                                                             gdouble state_version);
    xmlNode *           e_table_sort_info_save_to_node      (ETableSortInfo *sort_info,
                                                             xmlNode *parent);
    ETableSortInfo *    e_table_sort_info_duplicate         (ETableSortInfo *sort_info);

## Object Hierarchy

      GObject
       +----ETableSortInfo

## Properties

      "specification"            ETableSpecification*  : Read / Write / Construct Only

## Signals

      "group-info-changed"                             : Run Last
      "sort-info-changed"                              : Run Last

## Description

## Details

### struct ETableSortInfo

    struct ETableSortInfo;

### e_table_sort_info_new ()

    ETableSortInfo *    e_table_sort_info_new               (struct _ETableSpecification *specification);

This creates a new ETableSortInfo object that contains no grouping and no sorting defined as of yet. This object is used to keep track of multi-level sorting and multi-level grouping of an ETable.

`specification` : | an ETableSpecification
Returns : | A new ETableSortInfo object

### e_table_sort_info_parse_context_push ()

    void                e_table_sort_info_parse_context_push
                                                            (GMarkupParseContext *context,
                                                             struct _ETableSpecification *specification);

Creates a new ETableSortInfo from a segment of XML data being fed to `context`. Call this function for the appropriate opening tag from the `start_element` callback of a GMarkupParser, then call `e_table_sort_info_parse_context_pop()` for the corresponding closing tag from the `end_element` callback.

`context` : | a GMarkupParseContext
`specification` : | an ETableSpecification

### e_table_sort_info_parse_context_pop ()

    ETableSortInfo *    e_table_sort_info_parse_context_pop (GMarkupParseContext *context);

Creates a new ETableSortInfo from a segment of XML data being fed to `context`. Call `e_table_sort_info_parse_context_push()` for the appropriate opening tag from the `start_element` callback of a GMarkupParser, then call this function for the corresponding closing tag from the `end_element` callback.

Unreference the newly-created ETableSortInfo with `g_object_unref()` when finished with it.

`context` : | a GMarkupParseContext
Returns : | an ETableSortInfo

### e_table_sort_info_ref_specification ()

    struct _ETableSpecification * e_table_sort_info_ref_specification
                                                            (ETableSortInfo *sort_info);

Returns the ETableSpecification passed to `e_table_sort_info_new()`.

The returned ETableSpecification is referenced for thread-safety and must be unreferenced with `g_object_unref()` when finished with it.

`sort_info` : | an ETableSortInfo
Returns : | an ETableSpecification

### e_table_sort_info_get_can_group ()

    gboolean            e_table_sort_info_get_can_group     (ETableSortInfo *sort_info);

### e_table_sort_info_set_can_group ()

    void                e_table_sort_info_set_can_group     (ETableSortInfo *sort_info,
                                                             gboolean can_group);

### e_table_sort_info_grouping_get_count ()

    guint               e_table_sort_info_grouping_get_count
                                                            (ETableSortInfo *sort_info);

`sort_info` : | an ETableSortInfo
Returns : | the number of grouping criteria in the object.

### e_table_sort_info_grouping_truncate ()

    void                e_table_sort_info_grouping_truncate (ETableSortInfo *sort_info,
                                                             guint length);

This routine can be used to reduce or grow the number of grouping criteria in the object.

`sort_info` : | an ETableSortInfo
`length` : | position where the truncation happens.

### e_table_sort_info_grouping_get_nth ()

    ETableColumnSpecification * e_table_sort_info_grouping_get_nth
                                                            (ETableSortInfo *sort_info,
                                                             guint n,
                                                             GtkSortType *out_sort_type);

`sort_info` : | an ETableSortInfo
`n` : | Item information to fetch.
`out_sort_type` : | return location for a GtkSortType value, or `NULL`
Returns : | the description of the `n`-th grouping criteria in the `info` object.

### e_table_sort_info_grouping_set_nth ()

    void                e_table_sort_info_grouping_set_nth  (ETableSortInfo *sort_info,
                                                             guint n,
                                                             ETableColumnSpecification *spec,
                                                             GtkSortType sort_type);

Sets the grouping criteria for index `n` to `spec` and `sort_type`.

`sort_info` : | an ETableSortInfo
`n` : | Item information to fetch.
`spec` : | an ETableColumnSpecification
`sort_type` : | a GtkSortType

### e_table_sort_info_sorting_get_count ()

    guint               e_table_sort_info_sorting_get_count (ETableSortInfo *sort_info);

### e_table_sort_info_sorting_remove ()

    void                e_table_sort_info_sorting_remove    (ETableSortInfo *sort_info,
                                                             guint n);

Removes the sorting element at the given index. The following sorting elements are moved down one place.

`sort_info` : | an ETableSortInfo
`n` : | the index of the element to remove

### e_table_sort_info_sorting_truncate ()

    void                e_table_sort_info_sorting_truncate  (ETableSortInfo *sort_info,
                                                             guint length);

This routine can be used to reduce or grow the number of sort criteria in the object.

`sort_info` : | an ETableSortInfo
`length` : | position where the truncation happens.

### e_table_sort_info_sorting_get_nth ()

    ETableColumnSpecification * e_table_sort_info_sorting_get_nth
                                                            (ETableSortInfo *sort_info,
                                                             guint n,
                                                             GtkSortType *out_sort_type);

`sort_info` : | an ETableSortInfo
`n` : | Item information to fetch.
`out_sort_type` : | return location for a GtkSortType value, or `NULL`
Returns : | the description of the `n`-th grouping criteria in the `info` object.

### e_table_sort_info_sorting_set_nth ()

    void                e_table_sort_info_sorting_set_nth   (ETableSortInfo *sort_info,
                                                             guint n,
                                                             ETableColumnSpecification *spec,
                                                             GtkSortType sort_type);

Sets the sorting criteria for index `n` to `spec` and `sort_type`.

`sort_info` : | an ETableSortInfo
`n` : | Item information to fetch.
`spec` : | an ETableColumnSpecification
`sort_type` : | a GtkSortType

### e_table_sort_info_sorting_insert ()

    void                e_table_sort_info_sorting_insert    (ETableSortInfo *sort_info,
                                                             guint n,
                                                             ETableColumnSpecification *spec,
                                                             GtkSortType sort_type);

### e_table_sort_info_load_from_node ()

    void                e_table_sort_info_load_from_node    (ETableSortInfo *sort_info,
                                                             xmlNode *node,
                                                             gdouble state_version);

This loads the state for the ETableSortInfo object `info` from the xml node `node`.

`sort_info` : | an ETableSortInfo
`node` : | pointer to the xmlNode that describes the sorting and grouping information

### e_table_sort_info_save_to_node ()

    xmlNode *           e_table_sort_info_save_to_node      (ETableSortInfo *sort_info,
                                                             xmlNode *parent);

This function is used

`sort_info` : | an ETableSortInfo
`parent` : | xmlNode that will be hosting the saved state of the `info` object.
Returns : | the node that has been appended to `parent` as a child containing the sorting and grouping information for this ETableSortInfo object.

### e_table_sort_info_duplicate ()

    ETableSortInfo *    e_table_sort_info_duplicate         (ETableSortInfo *sort_info);

## Property Details

### The `"specification"` property

      "specification"            ETableSpecification*  : Read / Write / Construct Only

Specification for the table state.

## Signal Details

### The `"group-info-changed"` signal

    void                user_function                      (ETableSortInfo *etablesortinfo,
                                                            gpointer        user_data)           : Run Last

### The `"sort-info-changed"` signal

    void                user_function                      (ETableSortInfo *etablesortinfo,
                                                            gpointer        user_data)           : Run Last