2001-03-26 Christopher James Lahey <clahey@ximian.com> * gal/Makefile.am (libgal_la_LIBADD): Added util/e-bit-array.lo. * gal/util/Makefile.am: Added e-bit-array.c and e-bit-array.h. * gal/util/e-bit-array.c, gal/util/e-bit-array.h: New class containing the implementation of the bit array used in e-selection-model-array. * gal/widgets/e-selection-model-array.c, e-selection-model-array.h: Refactored the bit array implementation into a separate class. * gal/widgets/e-selection-model-simple.c: Changed how it clears the bit array of the ESelectionModelArray parent class. * gal/widgets/e-selection-model.h: Added code to make the declaration of EForeachFunc only get included once. svn path=/trunk/; revision=8955
102 lines
2.7 KiB
C
102 lines
2.7 KiB
C
/* -*- 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-array.h"
|
|
#include "e-selection-model-simple.h"
|
|
|
|
#define ESMS_CLASS(e) ((ESelectionModelSimpleClass *)((GtkObject *)e)->klass)
|
|
|
|
#define PARENT_TYPE e_selection_model_array_get_type ()
|
|
|
|
static ESelectionModelArray *parent_class;
|
|
|
|
static gint esms_get_row_count (ESelectionModelArray *esma);
|
|
|
|
static void
|
|
e_selection_model_simple_init (ESelectionModelSimple *selection)
|
|
{
|
|
selection->row_count = 0;
|
|
}
|
|
|
|
static void
|
|
e_selection_model_simple_class_init (ESelectionModelSimpleClass *klass)
|
|
{
|
|
ESelectionModelArrayClass *esma_class;
|
|
|
|
parent_class = gtk_type_class (PARENT_TYPE);
|
|
|
|
esma_class = E_SELECTION_MODEL_ARRAY_CLASS(klass);
|
|
|
|
esma_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) {
|
|
ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(esms);
|
|
if (esma->eba)
|
|
gtk_object_unref(GTK_OBJECT(esma->eba));
|
|
esma->eba = NULL;
|
|
}
|
|
esms->row_count = row_count;
|
|
}
|
|
|
|
static gint
|
|
esms_get_row_count (ESelectionModelArray *esma)
|
|
{
|
|
ESelectionModelSimple *esms = E_SELECTION_MODEL_SIMPLE(esma);
|
|
|
|
return esms->row_count;
|
|
}
|
|
|
|
void e_selection_model_simple_insert_rows (ESelectionModelSimple *esms,
|
|
int row,
|
|
int count)
|
|
{
|
|
esms->row_count += count;
|
|
e_selection_model_array_insert_rows (E_SELECTION_MODEL_ARRAY(esms), row, count);
|
|
}
|
|
|
|
void
|
|
e_selection_model_simple_delete_rows (ESelectionModelSimple *esms,
|
|
int row,
|
|
int count)
|
|
{
|
|
esms->row_count -= count;
|
|
e_selection_model_array_delete_rows (E_SELECTION_MODEL_ARRAY(esms), row, count);
|
|
}
|
|
|
|
void
|
|
e_selection_model_simple_move_row (ESelectionModelSimple *esms,
|
|
int old_row,
|
|
int new_row)
|
|
{
|
|
e_selection_model_array_move_row (E_SELECTION_MODEL_ARRAY(esms), old_row, new_row);
|
|
}
|