aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--widgets/misc/e-selection-model-simple.c98
-rw-r--r--widgets/misc/e-selection-model-simple.h46
2 files changed, 144 insertions, 0 deletions
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 <clahey@ximian.com>
+ *
+ * (C) 2000, 2001 Ximian, Inc.
+ */
+#include <config.h>
+#include <gal/util/e-util.h>
+#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 <gal/widgets/e-selection-model.h>
+
+#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_ */
+