# ETableGroup

## Name

ETableGroup --

## Synopsis

    #define     E_TABLE_GROUP_TYPE
    typedef     ETableGroup;
    void        e_table_group_add               (ETableGroup *etg,
                                                 gint row);
    void        e_table_group_add_all           (ETableGroup *etg);
    gboolean    e_table_group_remove            (ETableGroup *etg,
                                                 gint row);
    gint        e_table_group_get_count         (ETableGroup *etg);
    void        e_table_group_increment         (ETableGroup *etg,
                                                 gint position,
                                                 gint amount);
    void        e_table_group_decrement         (ETableGroup *etg,
                                                 gint position,
                                                 gint amount);
    gint        e_table_group_row_count         (ETableGroup *etg);
    void        e_table_group_set_focus         (ETableGroup *etg,
                                                 EFocus direction,
                                                 gint view_col);
    void        e_table_group_set_cursor_row    (ETableGroup *etg,
                                                 gint row);
    int         e_table_group_get_cursor_row    (ETableGroup *etg);
    gboolean    e_table_group_get_focus         (ETableGroup *etg);
    gint        e_table_group_get_focus_column  (ETableGroup *etg);
    ETableHeader* e_table_group_get_header      (ETableGroup *etg);
    ETableCol*  e_table_group_get_ecol          (ETableGroup *etg);
    EPrintable* e_table_group_get_printable     (ETableGroup *etg);
    void        e_table_group_compute_location  (ETableGroup *etg,
                                                 int *x,
                                                 int *y,
                                                 int *row,
                                                 int *col);
    ETableGroup* e_table_group_new              (const char *title,
                                                 ETableModel *table);
    void        e_table_group_construct         (GnomeCanvasGroup *parent,
                                                 ETableGroup *etg,
                                                 ETableHeader *full_header,
                                                 ETableHeader *header,
                                                 ETableModel *model);
    void        e_table_group_cursor_change     (ETableGroup *etg,
                                                 gint row);
    void        e_table_group_double_click      (ETableGroup *etg,
                                                 gint row,
                                                 gint col,
                                                 GdkEvent *event);
    gint        e_table_group_right_click       (ETableGroup *etg,
                                                 gint row,
                                                 gint col,
                                                 GdkEvent *event);
    gint        e_table_group_click             (ETableGroup *etg,
                                                 gint row,
                                                 gint col,
                                                 GdkEvent *event);
    gint        e_table_group_key_press         (ETableGroup *etg,
                                                 gint row,
                                                 gint col,
                                                 GdkEvent *event);
    void        (*ETableGroupLeafFn)            (void *e_table_item,
                                                 void *closure);
    void        e_table_group_apply_to_leafs    (ETableGroup *etg,
                                                 ETableGroupLeafFn fn,
                                                 void *closure);

## Object Hierarchy

      GtkObject
       +----GnomeCanvasItem
             +----GnomeCanvasGroup
                   +----ETableGroup
                         +----ETableGroupContainer
                         +----ETableGroupLeaf

## Signal Prototypes

    "cursor-change"
                void        user_function      (ETableGroup *etablegroup,
                                                gint arg1,
                                                gpointer user_data);
    "double-click"
                void        user_function      (ETableGroup *etablegroup,
                                                gint arg1,
                                                gint arg2,
                                                gpointer arg3,
                                                gpointer user_data);
    "right-click"
                gint        user_function      (ETableGroup *etablegroup,
                                                gint arg1,
                                                gint arg2,
                                                gpointer arg3,
                                                gpointer user_data);
    "click"     gint        user_function      (ETableGroup *etablegroup,
                                                gint arg1,
                                                gint arg2,
                                                gpointer arg3,
                                                gpointer user_data);
    "key-press" gint        user_function      (ETableGroup *etablegroup,
                                                gint arg1,
                                                gint arg2,
                                                gpointer arg3,
                                                gpointer user_data);

## Description

## Details

### E_TABLE_GROUP_TYPE

    #define E_TABLE_GROUP_TYPE        (e_table_group_get_type ())

### ETableGroup

    typedef struct {
    	GnomeCanvasGroup group;

    	/*
    	 * The full header.
    	 */
    	ETableHeader *full_header;
    	ETableHeader *header;

    	/*
    	 * The model we pull data from.
    	 */
    	ETableModel *model;

    	/*
    	 * Whether we should add indentation and open/close markers,
    	 * or if we just act as containers of subtables.
    	 */
    	guint transparent : 1;

    	guint has_focus : 1;

    	guint frozen : 1;
    } ETableGroup;

### e_table_group_add ()

    void        e_table_group_add               (ETableGroup *etg,
                                                 gint row);

This routine adds the given row from the `ETableModel` to this set of rows.

`etg` : | The `ETableGroup` to add a row to
`row` : | The row to add.

### e_table_group_add_all ()

    void        e_table_group_add_all           (ETableGroup *etg);

This routine adds all the rows from the `ETableModel` to this set of rows.

`etg` : | The `ETableGroup` to add to

### e_table_group_remove ()

    gboolean    e_table_group_remove            (ETableGroup *etg,
                                                 gint row);

This routine removes the given row from the `ETableModel` from this set of rows.

`etg` : | The `ETableGroup` to remove a row from
`row` : | The row to remove.
Returns : | TRUE if the row was deleted and FALSE if the row was not found.

### e_table_group_get_count ()

    gint        e_table_group_get_count         (ETableGroup *etg);

`etg` : |
Returns : |

### e_table_group_increment ()

    void        e_table_group_increment         (ETableGroup *etg,
                                                 gint position,
                                                 gint amount);

This routine calculates the number of rows shown in this group.

`etg` : | The `ETableGroup` to count
`position` : |
`amount` : |

### e_table_group_decrement ()

    void        e_table_group_decrement         (ETableGroup *etg,
                                                 gint position,
                                                 gint amount);

`etg` : |
`position` : |
`amount` : |

### e_table_group_row_count ()

    gint        e_table_group_row_count         (ETableGroup *etg);

`etg` : |
Returns : |

### e_table_group_set_focus ()

    void        e_table_group_set_focus         (ETableGroup *etg,
                                                 EFocus direction,
                                                 gint view_col);

Sets the focus to this widget. Places the focus in the view column coming from direction direction.

`etg` : | The `ETableGroup` to set
`direction` : | The direction the focus is coming from.
`view_col` : | The column to set the focus in.

### e_table_group_set_cursor_row ()

    void        e_table_group_set_cursor_row    (ETableGroup *etg,
                                                 gint row);

`etg` : |
`row` : |

### e_table_group_get_cursor_row ()

    int         e_table_group_get_cursor_row    (ETableGroup *etg);

`etg` : |
Returns : |

### e_table_group_get_focus ()

    gboolean    e_table_group_get_focus         (ETableGroup *etg);

Calculates if this group has the focus.

`etg` : | The `ETableGroup` to check
Returns : | TRUE if this group has the focus.

### e_table_group_get_focus_column ()

    gint        e_table_group_get_focus_column  (ETableGroup *etg);

Calculates which column in this group has the focus.

`etg` : | The `ETableGroup` to check
Returns : | The column index (view column).

### e_table_group_get_header ()

    ETableHeader* e_table_group_get_header      (ETableGroup *etg);

This routine returns the `ETableGroup`'s header.

`etg` : |
Returns : | The `ETableHeader`.

### e_table_group_get_ecol ()

    ETableCol*  e_table_group_get_ecol          (ETableGroup *etg);

`etg` : |
Returns : |

### e_table_group_get_printable ()

    EPrintable* e_table_group_get_printable     (ETableGroup *etg);

This routine creates and returns an `EPrintable` that can be used to print the given `ETableGroup`.

`etg` : | `ETableGroup` which will be printed
Returns : | The `EPrintable`.

### e_table_group_compute_location ()

    void        e_table_group_compute_location  (ETableGroup *etg,
                                                 int *x,
                                                 int *y,
                                                 int *row,
                                                 int *col);

This routine locates the pixel location (*x, *y) in the `ETableGroup`. If that location is in the `ETableGroup`, *row and *col are set to the view row and column where it was found. If that location is not in the `ETableGroup`, the height of the `ETableGroup` is removed from the value y points to.

`etg` : |
`x` : | A pointer to the x location to find in the `ETableGroup`.
`y` : | A pointer to the y location to find in the `ETableGroup`.
`row` : | A pointer to the location to store the found row in.
`col` : | A pointer to the location to store the found col in.

### e_table_group_new ()

    ETableGroup* e_table_group_new              (const char *title,
                                                 ETableModel *table);

`ETableGroup` is a collection of rows of an `ETable`. It's a `GnomeCanvasItem`. There are two different forms. If n < the number of groupings in the given `ETableSortInfo`, then the `ETableGroup` will need to contain other `ETableGroups`, thus it creates an `ETableGroupContainer`. Otherwise, it will just contain an `ETableItem`, and thus it creates an `ETableGroupLeaf`.

`title` : |
`table` : |
Returns : | The new `ETableGroup`.

### e_table_group_construct ()

    void        e_table_group_construct         (GnomeCanvasGroup *parent,
                                                 ETableGroup *etg,
                                                 ETableHeader *full_header,
                                                 ETableHeader *header,
                                                 ETableModel *model);

This routine does the base construction of the `ETableGroup`.

`parent` : | The `GnomeCanvasGroup` to create a child of.
`etg` : | The `ETableGroup` to construct.
`full_header` : | The full header of the `ETable`.
`header` : | The current header of the `ETable`.
`model` : | The `ETableModel` of the `ETable`.

### e_table_group_cursor_change ()

    void        e_table_group_cursor_change     (ETableGroup *etg,
                                                 gint row);

This routine emits the "cursor_change" signal.

`etg` : |
`row` : | The new cursor row (model row)

### e_table_group_double_click ()

    void        e_table_group_double_click      (ETableGroup *etg,
                                                 gint row,
                                                 gint col,
                                                 GdkEvent *event);

This routine emits the "double_click" signal.

`etg` : |
`row` : | The row clicked on (model row)
`col` : | The col clicked on (model col)
`event` : | The event that caused this signal

### e_table_group_right_click ()

    gint        e_table_group_right_click       (ETableGroup *etg,
                                                 gint row,
                                                 gint col,
                                                 GdkEvent *event);

This routine emits the "right_click" signal.

`etg` : |
`row` : | The row clicked on (model row)
`col` : | The col clicked on (model col)
`event` : | The event that caused this signal
Returns : |

### e_table_group_click ()

    gint        e_table_group_click             (ETableGroup *etg,
                                                 gint row,
                                                 gint col,
                                                 GdkEvent *event);

This routine emits the "click" signal.

`etg` : |
`row` : | The row clicked on (model row)
`col` : | The col clicked on (model col)
`event` : | The event that caused this signal
Returns : |

### e_table_group_key_press ()

    gint        e_table_group_key_press         (ETableGroup *etg,
                                                 gint row,
                                                 gint col,
                                                 GdkEvent *event);

This routine emits the "key_press" signal.

`etg` : |
`row` : | The cursor row (model row)
`col` : | The cursor col (model col)
`event` : | The event that caused this signal
Returns : |

### ETableGroupLeafFn ()

    void        (*ETableGroupLeafFn)            (void *e_table_item,
                                                 void *closure);

`e_table_item` : |
`closure` : |

### e_table_group_apply_to_leafs ()

    void        e_table_group_apply_to_leafs    (ETableGroup *etg,
                                                 ETableGroupLeafFn fn,
                                                 void *closure);

`etg` : |
`fn` : |
`closure` : |

## Signals

### The "cursor-change" signal

    void        user_function                  (ETableGroup *etablegroup,
                                                gint arg1,
                                                gpointer user_data);

`etablegroup` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The "double-click" signal

    void        user_function                  (ETableGroup *etablegroup,
                                                gint arg1,
                                                gint arg2,
                                                gpointer arg3,
                                                gpointer user_data);

`etablegroup` : | the object which received the signal.
`arg1` : |
`arg2` : |
`arg3` : |
`user_data` : | user data set when the signal handler was connected.

### The "right-click" signal

    gint        user_function                  (ETableGroup *etablegroup,
                                                gint arg1,
                                                gint arg2,
                                                gpointer arg3,
                                                gpointer user_data);

`etablegroup` : | the object which received the signal.
`arg1` : |
`arg2` : |
`arg3` : |
`user_data` : | user data set when the signal handler was connected.
Returns : |

### The "click" signal

    gint        user_function                  (ETableGroup *etablegroup,
                                                gint arg1,
                                                gint arg2,
                                                gpointer arg3,
                                                gpointer user_data);

`etablegroup` : | the object which received the signal.
`arg1` : |
`arg2` : |
`arg3` : |
`user_data` : | user data set when the signal handler was connected.
Returns : |

### The "key-press" signal

    gint        user_function                  (ETableGroup *etablegroup,
                                                gint arg1,
                                                gint arg2,
                                                gpointer arg3,
                                                gpointer user_data);

`etablegroup` : | the object which received the signal.
`arg1` : |
`arg2` : |
`arg3` : |
`user_data` : | user data set when the signal handler was connected.
Returns : |