
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
211 lines
3.9 KiB
C
211 lines
3.9 KiB
C
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
|
/*
|
|
* gal-view.c: A View
|
|
*
|
|
* Authors:
|
|
* Chris Lahey (clahey@helixcode.com)
|
|
*
|
|
* (C) 2000 Helix Code, Inc.
|
|
*/
|
|
#include <config.h>
|
|
#include <gtk/gtksignal.h>
|
|
#include "gal-view.h"
|
|
|
|
#define GV_CLASS(e) ((GalViewClass *)((GtkObject *)e)->klass)
|
|
|
|
#define PARENT_TYPE gtk_object_get_type ()
|
|
|
|
#define d(x)
|
|
|
|
d(static gint depth = 0);
|
|
|
|
|
|
static GtkObjectClass *gal_view_parent_class;
|
|
|
|
enum {
|
|
CHANGED,
|
|
LAST_SIGNAL
|
|
};
|
|
|
|
static guint gal_view_signals [LAST_SIGNAL] = { 0, };
|
|
|
|
/**
|
|
* gal_view_edit
|
|
* @view: The view to edit
|
|
*/
|
|
void
|
|
gal_view_edit (GalView *view)
|
|
{
|
|
g_return_if_fail (view != NULL);
|
|
g_return_if_fail (GAL_IS_VIEW (view));
|
|
|
|
if (GV_CLASS (view)->edit)
|
|
GV_CLASS (view)->edit (view);
|
|
}
|
|
|
|
/**
|
|
* gal_view_load
|
|
* @view: The view to load to
|
|
* @filename: The file to load from
|
|
*/
|
|
void
|
|
gal_view_load (GalView *view,
|
|
const char *filename)
|
|
{
|
|
g_return_if_fail (view != NULL);
|
|
g_return_if_fail (GAL_IS_VIEW (view));
|
|
|
|
if (GV_CLASS (view)->load)
|
|
GV_CLASS (view)->load (view, filename);
|
|
}
|
|
|
|
/**
|
|
* gal_view_save
|
|
* @view: The view to save
|
|
* @filename: The file to save to
|
|
*/
|
|
void
|
|
gal_view_save (GalView *view,
|
|
const char *filename)
|
|
{
|
|
g_return_if_fail (view != NULL);
|
|
g_return_if_fail (GAL_IS_VIEW (view));
|
|
|
|
if (GV_CLASS (view)->save)
|
|
GV_CLASS (view)->save (view, filename);
|
|
}
|
|
|
|
/**
|
|
* gal_view_get_title
|
|
* @view: The view to query.
|
|
*
|
|
* Returns: The title of the view.
|
|
*/
|
|
const char *
|
|
gal_view_get_title (GalView *view)
|
|
{
|
|
g_return_val_if_fail (view != NULL, NULL);
|
|
g_return_val_if_fail (GAL_IS_VIEW (view), NULL);
|
|
|
|
if (GV_CLASS (view)->get_title)
|
|
return GV_CLASS (view)->get_title (view);
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
/**
|
|
* gal_view_set_title
|
|
* @view: The view to set.
|
|
* @title: The new title value.
|
|
*/
|
|
void
|
|
gal_view_set_title (GalView *view,
|
|
const char *title)
|
|
{
|
|
g_return_if_fail (view != NULL);
|
|
g_return_if_fail (GAL_IS_VIEW (view));
|
|
|
|
if (GV_CLASS (view)->set_title)
|
|
GV_CLASS (view)->set_title (view, title);
|
|
}
|
|
|
|
/**
|
|
* gal_view_get_type_code
|
|
* @view: The view to get.
|
|
*
|
|
* Returns: The type of the view.
|
|
*/
|
|
const char *
|
|
gal_view_get_type_code (GalView *view)
|
|
{
|
|
g_return_val_if_fail (view != NULL, NULL);
|
|
g_return_val_if_fail (GAL_IS_VIEW (view), NULL);
|
|
|
|
if (GV_CLASS (view)->get_type_code)
|
|
return GV_CLASS (view)->get_type_code (view);
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
/**
|
|
* gal_view_clone
|
|
* @view: The view to clone.
|
|
*
|
|
* Returns: The clone.
|
|
*/
|
|
GalView *
|
|
gal_view_clone (GalView *view)
|
|
{
|
|
g_return_val_if_fail (view != NULL, NULL);
|
|
g_return_val_if_fail (GAL_IS_VIEW (view), NULL);
|
|
|
|
if (GV_CLASS (view)->clone)
|
|
return GV_CLASS (view)->clone (view);
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
/**
|
|
* gal_view_changed
|
|
* @view: The view that changed.
|
|
*/
|
|
void
|
|
gal_view_changed (GalView *view)
|
|
{
|
|
g_return_if_fail (view != NULL);
|
|
g_return_if_fail (GAL_IS_VIEW (view));
|
|
|
|
gtk_signal_emit(GTK_OBJECT(view),
|
|
gal_view_signals [CHANGED]);
|
|
}
|
|
|
|
static void
|
|
gal_view_class_init (GtkObjectClass *object_class)
|
|
{
|
|
GalViewClass *klass = GAL_VIEW_CLASS(object_class);
|
|
gal_view_parent_class = gtk_type_class (PARENT_TYPE);
|
|
|
|
klass->edit = NULL;
|
|
klass->load = NULL;
|
|
klass->save = NULL;
|
|
klass->get_title = NULL;
|
|
klass->clone = NULL;
|
|
|
|
klass->changed = NULL;
|
|
|
|
gal_view_signals [CHANGED] =
|
|
gtk_signal_new ("changed",
|
|
GTK_RUN_LAST,
|
|
object_class->type,
|
|
GTK_SIGNAL_OFFSET (GalViewClass, changed),
|
|
gtk_marshal_NONE__NONE,
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
gtk_object_class_add_signals (object_class, gal_view_signals, LAST_SIGNAL);
|
|
}
|
|
|
|
GtkType
|
|
gal_view_get_type (void)
|
|
{
|
|
static guint type = 0;
|
|
|
|
if (!type)
|
|
{
|
|
GtkTypeInfo info =
|
|
{
|
|
"GalView",
|
|
sizeof (GalView),
|
|
sizeof (GalViewClass),
|
|
(GtkClassInitFunc) gal_view_class_init,
|
|
NULL,
|
|
/* reserved_1 */ NULL,
|
|
/* reserved_2 */ NULL,
|
|
(GtkClassInitFunc) NULL,
|
|
};
|
|
|
|
type = gtk_type_unique (PARENT_TYPE, &info);
|
|
}
|
|
|
|
return type;
|
|
}
|