From a4fe250a03ac4b9571dd4da9e9d83e941046775b Mon Sep 17 00:00:00 2001 From: Chris Lahey Date: Thu, 1 Mar 2001 08:33:29 +0000 Subject: New class implementing a simple selection model that you add rows to and * gal/widgets/e-selection-model-simple.c, gal/widgets/e-selection-model-simple.h: New class implementing a simple selection model that you add rows to and remove rows from. svn path=/trunk/; revision=8443 --- widgets/misc/e-selection-model-simple.c | 98 +++++++++++++++++++++++++++++++++ widgets/misc/e-selection-model-simple.h | 46 ++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 widgets/misc/e-selection-model-simple.c create mode 100644 widgets/misc/e-selection-model-simple.h diff --git a/widgets/misc/e-selection-model-simple.c b/widgets/misc/e-selection-model-simple.c new file mode 100644 index 0000000000..9a9c1e0d79 --- /dev/null +++ b/widgets/misc/e-selection-model-simple.c @@ -0,0 +1,98 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * e-selection-model-simple.c: a Table Selection Model + * + * Author: + * Christopher James Lahey + * + * (C) 2000, 2001 Ximian, Inc. + */ +#include +#include +#include "e-selection-model-simple.h" + +#define ESMS_CLASS(e) ((ESelectionModelSimpleClass *)((GtkObject *)e)->klass) + +#define PARENT_TYPE e_selection_model_get_type () + +static ESelectionModel *parent_class; + +static gint esms_get_row_count (ESelectionModel *esm); + +static void +e_selection_model_simple_init (ESelectionModelSimple *selection) +{ + selection->row_count = 0; +} + +static void +e_selection_model_simple_class_init (ESelectionModelSimpleClass *klass) +{ + ESelectionModelClass *esm_class; + + parent_class = gtk_type_class (PARENT_TYPE); + + esm_class = E_SELECTION_MODEL_CLASS(klass); + + esm_class->get_row_count = esms_get_row_count; +} + +E_MAKE_TYPE(e_selection_model_simple, "ESelectionModelSimple", ESelectionModelSimple, + e_selection_model_simple_class_init, e_selection_model_simple_init, PARENT_TYPE); + +/** + * e_selection_model_simple_new + * + * This routine creates a new #ESelectionModelSimple. + * + * Returns: The new #ESelectionModelSimple. + */ +ESelectionModelSimple * +e_selection_model_simple_new (void) +{ + return gtk_type_new (e_selection_model_simple_get_type ()); +} + +void +e_selection_model_simple_set_row_count (ESelectionModelSimple *esms, + int row_count) +{ + if (esms->row_count != row_count) { + ESelectionModel *esm = E_SELECTION_MODEL(esms); + g_free(esm->selection); + esm->selection = NULL; + esm->row_count = -1; + } + esms->row_count = row_count; +} + +static gint +esms_get_row_count (ESelectionModel *esm) +{ + ESelectionModelSimple *esms = E_SELECTION_MODEL_SIMPLE(esm); + + return esms->row_count; +} + +void e_selection_model_simple_insert_row (ESelectionModelSimple *esms, + int row) +{ + esms->row_count ++; + e_selection_model_insert_row (E_SELECTION_MODEL(esms), row); +} + +void +e_selection_model_simple_delete_row (ESelectionModelSimple *esms, + int row) +{ + esms->row_count --; + e_selection_model_delete_row (E_SELECTION_MODEL(esms), row); +} + +void +e_selection_model_simple_move_row (ESelectionModelSimple *esms, + int old_row, + int new_row) +{ + e_selection_model_move_row (E_SELECTION_MODEL(esms), old_row, new_row); +} diff --git a/widgets/misc/e-selection-model-simple.h b/widgets/misc/e-selection-model-simple.h new file mode 100644 index 0000000000..52e785880c --- /dev/null +++ b/widgets/misc/e-selection-model-simple.h @@ -0,0 +1,46 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +#ifndef _E_SELECTION_MODEL_SIMPLE_H_ +#define _E_SELECTION_MODEL_SIMPLE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define E_SELECTION_MODEL_SIMPLE_TYPE (e_selection_model_simple_get_type ()) +#define E_SELECTION_MODEL_SIMPLE(o) (GTK_CHECK_CAST ((o), E_SELECTION_MODEL_SIMPLE_TYPE, ESelectionModelSimple)) +#define E_SELECTION_MODEL_SIMPLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_SELECTION_MODEL_SIMPLE_TYPE, ESelectionModelSimpleClass)) +#define E_IS_SELECTION_MODEL_SIMPLE(o) (GTK_CHECK_TYPE ((o), E_SELECTION_MODEL_SIMPLE_TYPE)) +#define E_IS_SELECTION_MODEL_SIMPLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_SELECTION_MODEL_SIMPLE_TYPE)) + +typedef struct { + ESelectionModel parent; + + int row_count; +} ESelectionModelSimple; + +typedef struct { + ESelectionModelClass parent_class; +} ESelectionModelSimpleClass; + +GtkType e_selection_model_simple_get_type (void); +ESelectionModelSimple *e_selection_model_simple_new (void); + +void e_selection_model_simple_insert_row (ESelectionModelSimple *esms, + int row); +void e_selection_model_simple_delete_row (ESelectionModelSimple *esms, + int row); +void e_selection_model_simple_move_row (ESelectionModelSimple *esms, + int old_row, + int new_row); + +void e_selection_model_simple_set_row_count (ESelectionModelSimple *selection, + int row_count); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _E_SELECTION_MODEL_SIMPLE_H_ */ + -- cgit