aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2010-08-16 10:33:12 +0800
committerMatthew Barnes <mbarnes@redhat.com>2010-08-16 10:37:06 +0800
commitb91e79ec73003ea724567bd79624ecd9003df8ae (patch)
treee2409ad7214fc4eb3c41df06d5363216d70de9e9 /widgets/misc
parenta43aa5eb4f179d1e22af8e62b00c52ad92d9d3b2 (diff)
downloadgsoc2013-evolution-b91e79ec73003ea724567bd79624ecd9003df8ae.tar
gsoc2013-evolution-b91e79ec73003ea724567bd79624ecd9003df8ae.tar.gz
gsoc2013-evolution-b91e79ec73003ea724567bd79624ecd9003df8ae.tar.bz2
gsoc2013-evolution-b91e79ec73003ea724567bd79624ecd9003df8ae.tar.lz
gsoc2013-evolution-b91e79ec73003ea724567bd79624ecd9003df8ae.tar.xz
gsoc2013-evolution-b91e79ec73003ea724567bd79624ecd9003df8ae.tar.zst
gsoc2013-evolution-b91e79ec73003ea724567bd79624ecd9003df8ae.zip
ESelectionModel cleanups.
Diffstat (limited to 'widgets/misc')
-rw-r--r--widgets/misc/e-selection-model.c536
-rw-r--r--widgets/misc/e-selection-model.h233
2 files changed, 455 insertions, 314 deletions
diff --git a/widgets/misc/e-selection-model.c b/widgets/misc/e-selection-model.c
index 882306df9e..d27ff9b122 100644
--- a/widgets/misc/e-selection-model.c
+++ b/widgets/misc/e-selection-model.c
@@ -39,7 +39,7 @@ enum {
LAST_SIGNAL
};
-static guint e_selection_model_signals [LAST_SIGNAL] = { 0, };
+static guint signals[LAST_SIGNAL] = { 0, };
enum {
PROP_0,
@@ -75,61 +75,61 @@ esm_dispose (GObject *object)
drop_sorter(esm);
- if (G_OBJECT_CLASS (e_selection_model_parent_class)->dispose)
- (* G_OBJECT_CLASS (e_selection_model_parent_class)->dispose) (object);
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (e_selection_model_parent_class)->dispose (object);
}
static void
esm_get_property (GObject *object,
- guint prop_id,
+ guint property_id,
GValue *value,
GParamSpec *pspec)
{
ESelectionModel *esm = E_SELECTION_MODEL (object);
- switch (prop_id) {
- case PROP_SORTER:
- g_value_set_object (value, esm->sorter);
- break;
+ switch (property_id) {
+ case PROP_SORTER:
+ g_value_set_object (value, esm->sorter);
+ break;
- case PROP_SELECTION_MODE:
- g_value_set_int (value, esm->mode);
- break;
+ case PROP_SELECTION_MODE:
+ g_value_set_int (value, esm->mode);
+ break;
- case PROP_CURSOR_MODE:
- g_value_set_int (value, esm->cursor_mode);
- break;
+ case PROP_CURSOR_MODE:
+ g_value_set_int (value, esm->cursor_mode);
+ break;
}
}
static void
esm_set_property (GObject *object,
- guint prop_id,
+ guint property_id,
const GValue *value,
GParamSpec *pspec)
{
ESelectionModel *esm = E_SELECTION_MODEL (object);
- switch (prop_id) {
- case PROP_SORTER:
- drop_sorter(esm);
- add_sorter (
- esm, g_value_get_object (value) ?
- E_SORTER (g_value_get_object (value)) : NULL);
- break;
+ switch (property_id) {
+ case PROP_SORTER:
+ drop_sorter(esm);
+ add_sorter (
+ esm, g_value_get_object (value) ?
+ E_SORTER (g_value_get_object (value)) : NULL);
+ break;
- case PROP_SELECTION_MODE:
- esm->mode = g_value_get_int (value);
- if (esm->mode == GTK_SELECTION_SINGLE) {
- gint cursor_row = e_selection_model_cursor_row(esm);
- gint cursor_col = e_selection_model_cursor_col(esm);
- e_selection_model_do_something(esm, cursor_row, cursor_col, 0);
- }
- break;
+ case PROP_SELECTION_MODE:
+ esm->mode = g_value_get_int (value);
+ if (esm->mode == GTK_SELECTION_SINGLE) {
+ gint cursor_row = e_selection_model_cursor_row(esm);
+ gint cursor_col = e_selection_model_cursor_col(esm);
+ e_selection_model_do_something(esm, cursor_row, cursor_col, 0);
+ }
+ break;
- case PROP_CURSOR_MODE:
- esm->cursor_mode = g_value_get_int (value);
- break;
+ case PROP_CURSOR_MODE:
+ esm->cursor_mode = g_value_get_int (value);
+ break;
}
}
@@ -142,97 +142,89 @@ e_selection_model_init (ESelectionModel *selection)
}
static void
-e_selection_model_class_init (ESelectionModelClass *klass)
+e_selection_model_class_init (ESelectionModelClass *class)
{
GObjectClass *object_class;
- object_class = G_OBJECT_CLASS(klass);
-
+ object_class = G_OBJECT_CLASS(class);
object_class->dispose = esm_dispose;
object_class->get_property = esm_get_property;
object_class->set_property = esm_set_property;
- e_selection_model_signals [CURSOR_CHANGED] =
- g_signal_new ("cursor_changed",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ESelectionModelClass, cursor_changed),
- NULL, NULL,
- e_marshal_NONE__INT_INT,
- G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
-
- e_selection_model_signals [CURSOR_ACTIVATED] =
- g_signal_new ("cursor_activated",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ESelectionModelClass, cursor_activated),
- NULL, NULL,
- e_marshal_NONE__INT_INT,
- G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
-
- e_selection_model_signals [SELECTION_CHANGED] =
- g_signal_new ("selection_changed",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ESelectionModelClass, selection_changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-
- e_selection_model_signals [SELECTION_ROW_CHANGED] =
- g_signal_new ("selection_row_changed",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ESelectionModelClass, selection_row_changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__INT,
- G_TYPE_NONE, 1, G_TYPE_INT);
-
- klass->cursor_changed = NULL;
- klass->cursor_activated = NULL;
- klass->selection_changed = NULL;
- klass->selection_row_changed = NULL;
-
- klass->is_row_selected = NULL;
- klass->foreach = NULL;
- klass->clear = NULL;
- klass->selected_count = NULL;
- klass->select_all = NULL;
- klass->invert_selection = NULL;
- klass->row_count = NULL;
-
- klass->change_one_row = NULL;
- klass->change_cursor = NULL;
- klass->cursor_row = NULL;
- klass->cursor_col = NULL;
-
- klass->select_single_row = NULL;
- klass->toggle_single_row = NULL;
- klass->move_selection_end = NULL;
- klass->set_selection_end = NULL;
-
- g_object_class_install_property (object_class, PROP_SORTER,
- g_param_spec_object ("sorter",
- "Sorter",
- NULL,
- E_SORTER_TYPE,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class, PROP_SELECTION_MODE,
- g_param_spec_int ("selection_mode",
- "Selection Mode",
- NULL,
- GTK_SELECTION_NONE, GTK_SELECTION_MULTIPLE,
- GTK_SELECTION_SINGLE,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class, PROP_CURSOR_MODE,
- g_param_spec_int ("cursor_mode",
- "Cursor Mode",
- NULL,
- E_CURSOR_LINE, E_CURSOR_SPREADSHEET,
- E_CURSOR_LINE,
- G_PARAM_READWRITE));
+ signals[CURSOR_CHANGED] = g_signal_new (
+ "cursor_changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ESelectionModelClass, cursor_changed),
+ NULL, NULL,
+ e_marshal_NONE__INT_INT,
+ G_TYPE_NONE, 2,
+ G_TYPE_INT,
+ G_TYPE_INT);
+
+ signals[CURSOR_ACTIVATED] = g_signal_new (
+ "cursor_activated",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ESelectionModelClass, cursor_activated),
+ NULL, NULL,
+ e_marshal_NONE__INT_INT,
+ G_TYPE_NONE, 2,
+ G_TYPE_INT,
+ G_TYPE_INT);
+
+ signals[SELECTION_CHANGED] = g_signal_new (
+ "selection_changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ESelectionModelClass, selection_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[SELECTION_ROW_CHANGED] = g_signal_new (
+ "selection_row_changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ESelectionModelClass, selection_row_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE, 1,
+ G_TYPE_INT);
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SORTER,
+ g_param_spec_object (
+ "sorter",
+ "Sorter",
+ NULL,
+ E_SORTER_TYPE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SELECTION_MODE,
+ g_param_spec_int (
+ "selection_mode",
+ "Selection Mode",
+ NULL,
+ GTK_SELECTION_NONE,
+ GTK_SELECTION_MULTIPLE,
+ GTK_SELECTION_SINGLE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_CURSOR_MODE,
+ g_param_spec_int (
+ "cursor_mode",
+ "Cursor Mode",
+ NULL,
+ E_CURSOR_LINE,
+ E_CURSOR_SPREADSHEET,
+ E_CURSOR_LINE,
+ G_PARAM_READWRITE));
}
/**
@@ -246,12 +238,16 @@ e_selection_model_class_init (ESelectionModelClass *klass)
*/
gboolean
e_selection_model_is_row_selected (ESelectionModel *selection,
- gint n)
+ gint n)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->is_row_selected)
- return E_SELECTION_MODEL_GET_CLASS(selection)->is_row_selected (selection, n);
- else
- return FALSE;
+ ESelectionModelClass *class;
+
+ g_return_val_if_fail (E_IS_SELECTION_MODEL (selection), FALSE);
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_val_if_fail (class->is_row_selected != NULL, FALSE);
+
+ return class->is_row_selected (selection, n);
}
/**
@@ -264,12 +260,19 @@ e_selection_model_is_row_selected (ESelectionModel *selection,
* selected row, passing closure as the closure.
*/
void
-e_selection_model_foreach (ESelectionModel *selection,
- EForeachFunc callback,
- gpointer closure)
+e_selection_model_foreach (ESelectionModel *selection,
+ EForeachFunc callback,
+ gpointer closure)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->foreach)
- E_SELECTION_MODEL_GET_CLASS(selection)->foreach (selection, callback, closure);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+ g_return_if_fail (callback != NULL);
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->foreach != NULL);
+
+ class->foreach (selection, callback, closure);
}
/**
@@ -279,10 +282,16 @@ e_selection_model_foreach (ESelectionModel *selection,
* This routine clears the selection to no rows selected.
*/
void
-e_selection_model_clear(ESelectionModel *selection)
+e_selection_model_clear (ESelectionModel *selection)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->clear)
- E_SELECTION_MODEL_GET_CLASS(selection)->clear (selection);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->clear != NULL);
+
+ class->clear (selection);
}
/**
@@ -296,10 +305,14 @@ e_selection_model_clear(ESelectionModel *selection)
gint
e_selection_model_selected_count (ESelectionModel *selection)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->selected_count)
- return E_SELECTION_MODEL_GET_CLASS(selection)->selected_count (selection);
- else
- return 0;
+ ESelectionModelClass *class;
+
+ g_return_val_if_fail (E_IS_SELECTION_MODEL (selection), 0);
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_val_if_fail (class->selected_count != NULL, 0);
+
+ return class->selected_count (selection);
}
/**
@@ -312,8 +325,14 @@ e_selection_model_selected_count (ESelectionModel *selection)
void
e_selection_model_select_all (ESelectionModel *selection)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->select_all)
- E_SELECTION_MODEL_GET_CLASS(selection)->select_all (selection);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->select_all != NULL);
+
+ class->select_all (selection);
}
/**
@@ -326,77 +345,139 @@ e_selection_model_select_all (ESelectionModel *selection)
void
e_selection_model_invert_selection (ESelectionModel *selection)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->invert_selection)
- E_SELECTION_MODEL_GET_CLASS(selection)->invert_selection (selection);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->invert_selection != NULL);
+
+ class->invert_selection (selection);
}
gint
e_selection_model_row_count (ESelectionModel *selection)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->row_count)
- return E_SELECTION_MODEL_GET_CLASS(selection)->row_count (selection);
- else
- return 0;
+ ESelectionModelClass *class;
+
+ g_return_val_if_fail (E_IS_SELECTION_MODEL (selection), 0);
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_val_if_fail (class->row_count != NULL, 0);
+
+ return class->row_count (selection);
}
void
-e_selection_model_change_one_row(ESelectionModel *selection, gint row, gboolean grow)
+e_selection_model_change_one_row (ESelectionModel *selection,
+ gint row,
+ gboolean grow)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->change_one_row)
- E_SELECTION_MODEL_GET_CLASS(selection)->change_one_row (selection, row, grow);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->change_one_row != NULL);
+
+ return class->change_one_row (selection, row, grow);
}
void
-e_selection_model_change_cursor (ESelectionModel *selection, gint row, gint col)
+e_selection_model_change_cursor (ESelectionModel *selection,
+ gint row,
+ gint col)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->change_cursor)
- E_SELECTION_MODEL_GET_CLASS(selection)->change_cursor (selection, row, col);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->change_cursor != NULL);
+
+ class->change_cursor (selection, row, col);
}
gint
e_selection_model_cursor_row (ESelectionModel *selection)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->cursor_row)
- return E_SELECTION_MODEL_GET_CLASS(selection)->cursor_row (selection);
- else
- return -1;
+ ESelectionModelClass *class;
+
+ g_return_val_if_fail (E_IS_SELECTION_MODEL (selection), -1);
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_val_if_fail (class->cursor_row != NULL, -1);
+
+ return class->cursor_row (selection);
}
gint
e_selection_model_cursor_col (ESelectionModel *selection)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->cursor_col)
- return E_SELECTION_MODEL_GET_CLASS(selection)->cursor_col (selection);
- else
- return -1;
+ ESelectionModelClass *class;
+
+ g_return_val_if_fail (E_IS_SELECTION_MODEL (selection), -1);
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_val_if_fail (class->cursor_col != NULL, -1);
+
+ return class->cursor_col (selection);
}
void
-e_selection_model_select_single_row (ESelectionModel *selection, gint row)
+e_selection_model_select_single_row (ESelectionModel *selection,
+ gint row)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->select_single_row)
- E_SELECTION_MODEL_GET_CLASS(selection)->select_single_row (selection, row);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->select_single_row != NULL);
+
+ class->select_single_row (selection, row);
}
void
-e_selection_model_toggle_single_row (ESelectionModel *selection, gint row)
+e_selection_model_toggle_single_row (ESelectionModel *selection,
+ gint row)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->toggle_single_row)
- E_SELECTION_MODEL_GET_CLASS(selection)->toggle_single_row (selection, row);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->toggle_single_row != NULL);
+
+ class->toggle_single_row (selection, row);
}
void
-e_selection_model_move_selection_end (ESelectionModel *selection, gint row)
+e_selection_model_move_selection_end (ESelectionModel *selection,
+ gint row)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->move_selection_end)
- E_SELECTION_MODEL_GET_CLASS(selection)->move_selection_end (selection, row);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->move_selection_end != NULL);
+
+ class->move_selection_end (selection, row);
}
void
-e_selection_model_set_selection_end (ESelectionModel *selection, gint row)
+e_selection_model_set_selection_end (ESelectionModel *selection,
+ gint row)
{
- if (E_SELECTION_MODEL_GET_CLASS(selection)->set_selection_end)
- E_SELECTION_MODEL_GET_CLASS(selection)->set_selection_end (selection, row);
+ ESelectionModelClass *class;
+
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ class = E_SELECTION_MODEL_GET_CLASS (selection);
+ g_return_if_fail (class->set_selection_end != NULL);
+
+ class->set_selection_end (selection, row);
}
/**
@@ -411,14 +492,16 @@ e_selection_model_set_selection_end (ESelectionModel *selection, gint row)
*/
void
e_selection_model_do_something (ESelectionModel *selection,
- guint row,
- guint col,
- GdkModifierType state)
+ guint row,
+ guint col,
+ GdkModifierType state)
{
gint shift_p = state & GDK_SHIFT_MASK;
gint ctrl_p = state & GDK_CONTROL_MASK;
gint row_count;
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
selection->old_selection = -1;
if (row == -1 && col != -1)
@@ -450,10 +533,10 @@ e_selection_model_do_something (ESelectionModel *selection,
}
e_selection_model_change_cursor(selection, row, col);
g_signal_emit(selection,
- e_selection_model_signals[CURSOR_CHANGED], 0,
+ signals[CURSOR_CHANGED], 0,
row, col);
g_signal_emit(selection,
- e_selection_model_signals[CURSOR_ACTIVATED], 0,
+ signals[CURSOR_ACTIVATED], 0,
row, col);
}
}
@@ -472,17 +555,19 @@ e_selection_model_do_something (ESelectionModel *selection,
* they don't want it to change.
*/
gboolean
-e_selection_model_maybe_do_something (ESelectionModel *selection,
- guint row,
- guint col,
- GdkModifierType state)
+e_selection_model_maybe_do_something (ESelectionModel *selection,
+ guint row,
+ guint col,
+ GdkModifierType state)
{
+ g_return_val_if_fail (E_IS_SELECTION_MODEL (selection), FALSE);
+
selection->old_selection = -1;
if (e_selection_model_is_row_selected(selection, row)) {
e_selection_model_change_cursor(selection, row, col);
g_signal_emit(selection,
- e_selection_model_signals[CURSOR_CHANGED], 0,
+ signals[CURSOR_CHANGED], 0,
row, col);
return FALSE;
} else {
@@ -493,37 +578,50 @@ e_selection_model_maybe_do_something (ESelectionModel *selection,
void
e_selection_model_right_click_down (ESelectionModel *selection,
- guint row,
- guint col,
- GdkModifierType state)
+ guint row,
+ guint col,
+ GdkModifierType state)
{
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
if (selection->mode == GTK_SELECTION_SINGLE) {
- selection->old_selection = e_selection_model_cursor_row (selection);
+ selection->old_selection =
+ e_selection_model_cursor_row (selection);
e_selection_model_select_single_row (selection, row);
} else {
- e_selection_model_maybe_do_something (selection, row, col, state);
+ e_selection_model_maybe_do_something (
+ selection, row, col, state);
}
}
void
e_selection_model_right_click_up (ESelectionModel *selection)
{
- if (selection->mode == GTK_SELECTION_SINGLE && selection->old_selection != -1) {
- e_selection_model_select_single_row (selection, selection->old_selection);
- }
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ if (selection->mode != GTK_SELECTION_SINGLE)
+ return;
+
+ if (selection->old_selection == -1)
+ return;
+
+ e_selection_model_select_single_row (
+ selection, selection->old_selection);
}
void
e_selection_model_select_as_key_press (ESelectionModel *selection,
- guint row,
- guint col,
- GdkModifierType state)
+ guint row,
+ guint col,
+ GdkModifierType state)
{
gint cursor_activated = TRUE;
gint shift_p = state & GDK_SHIFT_MASK;
gint ctrl_p = state & GDK_CONTROL_MASK;
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
selection->old_selection = -1;
switch (selection->mode) {
@@ -546,19 +644,19 @@ e_selection_model_select_as_key_press (ESelectionModel *selection,
if (row != -1) {
e_selection_model_change_cursor(selection, row, col);
g_signal_emit(selection,
- e_selection_model_signals[CURSOR_CHANGED], 0,
+ signals[CURSOR_CHANGED], 0,
row, col);
if (cursor_activated)
g_signal_emit(selection,
- e_selection_model_signals[CURSOR_ACTIVATED], 0,
+ signals[CURSOR_ACTIVATED], 0,
row, col);
}
}
static gint
move_selection (ESelectionModel *selection,
- gboolean up,
- GdkModifierType state)
+ gboolean up,
+ GdkModifierType state)
{
gint row = e_selection_model_cursor_row(selection);
gint col = e_selection_model_cursor_col(selection);
@@ -593,10 +691,13 @@ move_selection (ESelectionModel *selection,
*
* Returns: %TRUE if the #ESelectionModel used the key.
*/
-gint
-e_selection_model_key_press (ESelectionModel *selection,
- GdkEventKey *key)
+gboolean
+e_selection_model_key_press (ESelectionModel *selection,
+ GdkEventKey *key)
{
+ g_return_val_if_fail (E_IS_SELECTION_MODEL (selection), FALSE);
+ g_return_val_if_fail (key != NULL, FALSE);
+
selection->old_selection = -1;
switch (key->keyval) {
@@ -616,7 +717,7 @@ e_selection_model_key_press (ESelectionModel *selection,
e_selection_model_toggle_single_row (selection, row);
g_signal_emit(selection,
- e_selection_model_signals[CURSOR_ACTIVATED], 0,
+ signals[CURSOR_ACTIVATED], 0,
row, col);
return TRUE;
}
@@ -628,7 +729,7 @@ e_selection_model_key_press (ESelectionModel *selection,
gint col = e_selection_model_cursor_col(selection);
e_selection_model_select_single_row (selection, row);
g_signal_emit(selection,
- e_selection_model_signals[CURSOR_ACTIVATED], 0,
+ signals[CURSOR_ACTIVATED], 0,
row, col);
return TRUE;
}
@@ -660,37 +761,38 @@ e_selection_model_key_press (ESelectionModel *selection,
}
void
-e_selection_model_cursor_changed (ESelectionModel *selection,
- gint row,
- gint col)
+e_selection_model_cursor_changed (ESelectionModel *selection,
+ gint row,
+ gint col)
{
- g_signal_emit(selection,
- e_selection_model_signals[CURSOR_CHANGED], 0,
- row, col);
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ g_signal_emit (selection, signals[CURSOR_CHANGED], 0, row, col);
}
void
-e_selection_model_cursor_activated (ESelectionModel *selection,
- gint row,
- gint col)
+e_selection_model_cursor_activated (ESelectionModel *selection,
+ gint row,
+ gint col)
{
- g_signal_emit(selection,
- e_selection_model_signals[CURSOR_ACTIVATED], 0,
- row, col);
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ g_signal_emit (selection, signals[CURSOR_ACTIVATED], 0, row, col);
}
void
-e_selection_model_selection_changed (ESelectionModel *selection)
+e_selection_model_selection_changed (ESelectionModel *selection)
{
- g_signal_emit(selection,
- e_selection_model_signals[SELECTION_CHANGED], 0);
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ g_signal_emit (selection, signals[SELECTION_CHANGED], 0);
}
void
e_selection_model_selection_row_changed (ESelectionModel *selection,
- gint row)
+ gint row)
{
- g_signal_emit(selection,
- e_selection_model_signals[SELECTION_ROW_CHANGED], 0,
- row);
+ g_return_if_fail (E_IS_SELECTION_MODEL (selection));
+
+ g_signal_emit (selection, signals[SELECTION_ROW_CHANGED], 0, row);
}
diff --git a/widgets/misc/e-selection-model.h b/widgets/misc/e-selection-model.h
index fb62b1fc9f..a96b6e8be6 100644
--- a/widgets/misc/e-selection-model.h
+++ b/widgets/misc/e-selection-model.h
@@ -21,20 +21,32 @@
*
*/
-#ifndef _E_SELECTION_MODEL_H_
-#define _E_SELECTION_MODEL_H_
+#ifndef E_SELECTION_MODEL_H
+#define E_SELECTION_MODEL_H
#include <gtk/gtk.h>
#include <e-util/e-sorter.h>
-G_BEGIN_DECLS
+/* Standard GObject macros */
+#define E_TYPE_SELECTION_MODEL \
+ (e_selection_model_get_type ())
+#define E_SELECTION_MODEL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_SELECTION_MODEL, ESelectionModel))
+#define E_SELECTION_MODEL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_SELECTION_MODEL, ESelectionModelClass))
+#define E_IS_SELECTION_MODEL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_SELECTION_MODEL))
+#define E_IS_SELECTION_MODEL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), E_TYPE_SELECTION_MODEL))
+#define E_SELECTION_MODEL_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), E_TYPE_SELECTION_MODEL, ESelectionModelClass))
-#define E_SELECTION_MODEL_TYPE (e_selection_model_get_type ())
-#define E_SELECTION_MODEL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_SELECTION_MODEL_TYPE, ESelectionModel))
-#define E_SELECTION_MODEL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), E_SELECTION_MODEL_TYPE, ESelectionModelClass))
-#define E_IS_SELECTION_MODEL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_SELECTION_MODEL_TYPE))
-#define E_IS_SELECTION_MODEL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_SELECTION_MODEL_TYPE))
-#define E_SELECTION_MODEL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), E_SELECTION_MODEL_TYPE, ESelectionModelClass))
+G_BEGIN_DECLS
#ifndef _E_FOREACH_FUNC_H_
#define _E_FOREACH_FUNC_H_
@@ -42,6 +54,9 @@ typedef void (*EForeachFunc) (gint model_row,
gpointer closure);
#endif
+typedef struct _ESelectionModel ESelectionModel;
+typedef struct _ESelectionModelClass ESelectionModelClass;
+
/* list selection modes */
typedef enum {
E_CURSOR_LINE,
@@ -49,8 +64,8 @@ typedef enum {
E_CURSOR_SPREADSHEET
} ECursorMode;
-typedef struct {
- GObject base;
+struct _ESelectionModel {
+ GObject parent;
ESorter *sorter;
@@ -58,105 +73,129 @@ typedef struct {
ECursorMode cursor_mode;
gint old_selection;
-} ESelectionModel;
+};
-typedef struct {
+struct _ESelectionModelClass {
GObjectClass parent_class;
/* Virtual methods */
- gboolean (*is_row_selected) (ESelectionModel *esm, gint row);
- void (*foreach) (ESelectionModel *esm, EForeachFunc callback, gpointer closure);
- void (*clear) (ESelectionModel *esm);
- gint (*selected_count) (ESelectionModel *esm);
- void (*select_all) (ESelectionModel *esm);
- void (*invert_selection) (ESelectionModel *esm);
- gint (*row_count) (ESelectionModel *esm);
+ gboolean (*is_row_selected) (ESelectionModel *esm,
+ gint row);
+ void (*foreach) (ESelectionModel *esm,
+ EForeachFunc callback,
+ gpointer closure);
+ void (*clear) (ESelectionModel *esm);
+ gint (*selected_count) (ESelectionModel *esm);
+ void (*select_all) (ESelectionModel *esm);
+ void (*invert_selection) (ESelectionModel *esm);
+ gint (*row_count) (ESelectionModel *esm);
/* Protected virtual methods. */
- void (*change_one_row) (ESelectionModel *esm, gint row, gboolean on);
- void (*change_cursor) (ESelectionModel *esm, gint row, gint col);
- gint (*cursor_row) (ESelectionModel *esm);
- gint (*cursor_col) (ESelectionModel *esm);
-
- void (*select_single_row) (ESelectionModel *selection, gint row);
- void (*toggle_single_row) (ESelectionModel *selection, gint row);
- void (*move_selection_end) (ESelectionModel *selection, gint row);
- void (*set_selection_end) (ESelectionModel *selection, gint row);
-
- /*
- * Signals
- */
-
- void (*cursor_changed) (ESelectionModel *esm, gint row, gint col);
- void (*cursor_activated) (ESelectionModel *esm, gint row, gint col);
- void (*selection_row_changed) (ESelectionModel *esm, gint row);
- void (*selection_changed) (ESelectionModel *esm);
-
-} ESelectionModelClass;
-
-GType e_selection_model_get_type (void);
-void e_selection_model_do_something (ESelectionModel *esm,
- guint row,
- guint col,
- GdkModifierType state);
-gboolean e_selection_model_maybe_do_something (ESelectionModel *esm,
- guint row,
- guint col,
- GdkModifierType state);
-void e_selection_model_right_click_down (ESelectionModel *selection,
- guint row,
- guint col,
- GdkModifierType state);
-void e_selection_model_right_click_up (ESelectionModel *selection);
-gint e_selection_model_key_press (ESelectionModel *esm,
- GdkEventKey *key);
-void e_selection_model_select_as_key_press (ESelectionModel *esm,
- guint row,
- guint col,
- GdkModifierType state);
+ void (*change_one_row) (ESelectionModel *esm,
+ gint row,
+ gboolean on);
+ void (*change_cursor) (ESelectionModel *esm,
+ gint row,
+ gint col);
+ gint (*cursor_row) (ESelectionModel *esm);
+ gint (*cursor_col) (ESelectionModel *esm);
+
+ void (*select_single_row) (ESelectionModel *selection,
+ gint row);
+ void (*toggle_single_row) (ESelectionModel *selection,
+ gint row);
+ void (*move_selection_end) (ESelectionModel *selection,
+ gint row);
+ void (*set_selection_end) (ESelectionModel *selection,
+ gint row);
+
+ /* Signals */
+ void (*cursor_changed) (ESelectionModel *esm,
+ gint row,
+ gint col);
+ void (*cursor_activated) (ESelectionModel *esm,
+ gint row,
+ gint col);
+ void (*selection_row_changed)(ESelectionModel *esm,
+ gint row);
+ void (*selection_changed) (ESelectionModel *esm);
+};
+
+GType e_selection_model_get_type (void);
+void e_selection_model_do_something (ESelectionModel *esm,
+ guint row,
+ guint col,
+ GdkModifierType state);
+gboolean e_selection_model_maybe_do_something
+ (ESelectionModel *esm,
+ guint row,
+ guint col,
+ GdkModifierType state);
+void e_selection_model_right_click_down
+ (ESelectionModel *selection,
+ guint row,
+ guint col,
+ GdkModifierType state);
+void e_selection_model_right_click_up(ESelectionModel *selection);
+gboolean e_selection_model_key_press (ESelectionModel *esm,
+ GdkEventKey *key);
+void e_selection_model_select_as_key_press
+ (ESelectionModel *esm,
+ guint row,
+ guint col,
+ GdkModifierType state);
/* Virtual functions */
-gboolean e_selection_model_is_row_selected (ESelectionModel *esm,
- gint n);
-void e_selection_model_foreach (ESelectionModel *esm,
- EForeachFunc callback,
- gpointer closure);
-void e_selection_model_clear (ESelectionModel *esm);
-gint e_selection_model_selected_count (ESelectionModel *esm);
-void e_selection_model_select_all (ESelectionModel *esm);
-void e_selection_model_invert_selection (ESelectionModel *esm);
-gint e_selection_model_row_count (ESelectionModel *esm);
+gboolean e_selection_model_is_row_selected
+ (ESelectionModel *esm,
+ gint n);
+void e_selection_model_foreach (ESelectionModel *esm,
+ EForeachFunc callback,
+ gpointer closure);
+void e_selection_model_clear (ESelectionModel *esm);
+gint e_selection_model_selected_count(ESelectionModel *esm);
+void e_selection_model_select_all (ESelectionModel *esm);
+void e_selection_model_invert_selection
+ (ESelectionModel *esm);
+gint e_selection_model_row_count (ESelectionModel *esm);
/* Private virtual Functions */
-void e_selection_model_change_one_row (ESelectionModel *esm,
- gint row,
- gboolean on);
-void e_selection_model_change_cursor (ESelectionModel *esm,
- gint row,
- gint col);
-gint e_selection_model_cursor_row (ESelectionModel *esm);
-gint e_selection_model_cursor_col (ESelectionModel *esm);
-void e_selection_model_select_single_row (ESelectionModel *selection,
- gint row);
-void e_selection_model_toggle_single_row (ESelectionModel *selection,
- gint row);
-void e_selection_model_move_selection_end (ESelectionModel *selection,
- gint row);
-void e_selection_model_set_selection_end (ESelectionModel *selection,
- gint row);
+void e_selection_model_change_one_row(ESelectionModel *esm,
+ gint row,
+ gboolean on);
+void e_selection_model_change_cursor (ESelectionModel *esm,
+ gint row,
+ gint col);
+gint e_selection_model_cursor_row (ESelectionModel *esm);
+gint e_selection_model_cursor_col (ESelectionModel *esm);
+void e_selection_model_select_single_row
+ (ESelectionModel *selection,
+ gint row);
+void e_selection_model_toggle_single_row
+ (ESelectionModel *selection,
+ gint row);
+void e_selection_model_move_selection_end
+ (ESelectionModel *selection,
+ gint row);
+void e_selection_model_set_selection_end
+ (ESelectionModel *selection,
+ gint row);
/* Signals */
-void e_selection_model_cursor_changed (ESelectionModel *selection,
- gint row,
- gint col);
-void e_selection_model_cursor_activated (ESelectionModel *selection,
- gint row,
- gint col);
-void e_selection_model_selection_row_changed (ESelectionModel *selection,
- gint row);
-void e_selection_model_selection_changed (ESelectionModel *selection);
+void e_selection_model_cursor_changed(ESelectionModel *selection,
+ gint row,
+ gint col);
+void e_selection_model_cursor_activated
+ (ESelectionModel *selection,
+ gint row,
+ gint col);
+void e_selection_model_selection_row_changed
+ (ESelectionModel *selection,
+ gint row);
+void e_selection_model_selection_changed
+ (ESelectionModel *selection);
G_END_DECLS
-#endif /* _E_SELECTION_MODEL_H_ */
+#endif /* E_SELECTION_MODEL_H */