
2001-01-22 Christopher James Lahey <clahey@helixcode.com> * gal-define-views-dialog.c, gal-define-views-dialog.h (gal_define_views_dialog_init): Initialize collection field to NULL. Set the collection on the model as soon as we create it. (gal_define_views_dialog_new): Add a GalViewCollection argument to this function. This just makes this dialog a bit easier to use through the API. (gal_define_views_dialog_set_arg): When we set the collection, set it on the dialog->model. * gal-define-views-model.c, gal-define-views-model.h: Rewrote this object to use a GalViewCollection to store the information instead of an array of GalViews. * gal-view-collection.c, gal-view-collection.h: Added gal_view_collection_get_count, gal_view_collection_get_view, gal_view_collection_append, gal_view_collection_delete_view, and gal_view_collection_copy_view. (view_changed, load_single_file): Connect to the "changed" signal on the views. (load_single_dir): Survive loading if there's no xml file. * gal-view-etable.c: Implemented get_type_code method. * gal-view-factory-etable.c: Implemented get_type_code method. * gal-view.c, gal-view.h: Added gal_view_get_type_code and "changed" signal. svn path=/trunk/; revision=7699
128 lines
3.2 KiB
C
128 lines
3.2 KiB
C
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
|
/*
|
|
* gal-view-factory.c: A View Factory
|
|
*
|
|
* Authors:
|
|
* Chris Lahey (clahey@helixcode.com)
|
|
*
|
|
* (C) 2000 Helix Code, Inc.
|
|
*/
|
|
#include <config.h>
|
|
#include "gal-view-factory-etable.h"
|
|
#include "gal-view-etable.h"
|
|
#include <libgnome/gnome-defs.h>
|
|
#include <libgnome/gnome-i18n.h>
|
|
|
|
#define GVFE_CLASS(e) ((GalViewFactoryEtableClass *)((GtkObject *)e)->klass)
|
|
|
|
#define PARENT_TYPE gal_view_factory_get_type ()
|
|
|
|
static GalViewFactoryClass *gal_view_factory_etable_parent_class;
|
|
|
|
static const char *
|
|
gal_view_factory_etable_get_title (GalViewFactory *factory)
|
|
{
|
|
return _("Table");
|
|
}
|
|
|
|
static GalView *
|
|
gal_view_factory_etable_new_view (GalViewFactory *factory,
|
|
const char *name)
|
|
{
|
|
return gal_view_etable_new(GAL_VIEW_FACTORY_ETABLE(factory)->spec, name);
|
|
}
|
|
|
|
static const char *
|
|
gal_view_factory_etable_get_type_code (GalViewFactory *factory)
|
|
{
|
|
return "etable";
|
|
}
|
|
|
|
static void
|
|
gal_view_factory_etable_destroy (GtkObject *object)
|
|
{
|
|
GalViewFactoryEtable *factory = GAL_VIEW_FACTORY_ETABLE(object);
|
|
|
|
if (factory->spec)
|
|
gtk_object_unref(GTK_OBJECT(factory->spec));
|
|
}
|
|
|
|
static void
|
|
gal_view_factory_etable_class_init (GtkObjectClass *object_class)
|
|
{
|
|
GalViewFactoryClass *view_factory_class = GAL_VIEW_FACTORY_CLASS(object_class);
|
|
gal_view_factory_etable_parent_class = gtk_type_class (PARENT_TYPE);
|
|
|
|
view_factory_class->get_title = gal_view_factory_etable_get_title;
|
|
view_factory_class->new_view = gal_view_factory_etable_new_view;
|
|
view_factory_class->get_type_code = gal_view_factory_etable_get_type_code;
|
|
|
|
object_class->destroy = gal_view_factory_etable_destroy;
|
|
}
|
|
|
|
static void
|
|
gal_view_factory_etable_init (GalViewFactoryEtable *factory)
|
|
{
|
|
factory->spec = NULL;
|
|
}
|
|
|
|
/**
|
|
* gal_view_etable_new
|
|
* @spec: The spec to create GalViewEtables based upon.
|
|
*
|
|
* A new GalViewFactory for creating ETable views. Create one of
|
|
* these and pass it to GalViewCollection for use.
|
|
*
|
|
* Returns: The new GalViewFactoryEtable.
|
|
*/
|
|
GalViewFactory *
|
|
gal_view_factory_etable_new (ETableSpecification *spec)
|
|
{
|
|
return gal_view_factory_etable_construct (gtk_type_new (gal_view_factory_etable_get_type ()), spec);
|
|
}
|
|
|
|
/**
|
|
* gal_view_etable_construct
|
|
* @factory: The factory to construct
|
|
* @spec: The spec to create GalViewEtables based upon.
|
|
*
|
|
* constructs the GalViewFactoryEtable. To be used by subclasses and
|
|
* language bindings.
|
|
*
|
|
* Returns: The GalViewFactoryEtable.
|
|
*/
|
|
GalViewFactory *
|
|
gal_view_factory_etable_construct (GalViewFactoryEtable *factory,
|
|
ETableSpecification *spec)
|
|
{
|
|
if (spec)
|
|
gtk_object_ref(GTK_OBJECT(spec));
|
|
factory->spec = spec;
|
|
return GAL_VIEW_FACTORY(factory);
|
|
}
|
|
|
|
GtkType
|
|
gal_view_factory_etable_get_type (void)
|
|
{
|
|
static guint type = 0;
|
|
|
|
if (!type)
|
|
{
|
|
GtkTypeInfo info =
|
|
{
|
|
"GalViewFactoryEtable",
|
|
sizeof (GalViewFactoryEtable),
|
|
sizeof (GalViewFactoryEtableClass),
|
|
(GtkClassInitFunc) gal_view_factory_etable_class_init,
|
|
(GtkObjectInitFunc) gal_view_factory_etable_init,
|
|
/* reserved_1 */ NULL,
|
|
/* reserved_2 */ NULL,
|
|
(GtkClassInitFunc) NULL,
|
|
};
|
|
|
|
type = gtk_type_unique (PARENT_TYPE, &info);
|
|
}
|
|
|
|
return type;
|
|
}
|