aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/menus/gal-view-collection.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/menus/gal-view-collection.c')
-rw-r--r--widgets/menus/gal-view-collection.c128
1 files changed, 128 insertions, 0 deletions
diff --git a/widgets/menus/gal-view-collection.c b/widgets/menus/gal-view-collection.c
new file mode 100644
index 0000000000..5b625c44f4
--- /dev/null
+++ b/widgets/menus/gal-view-collection.c
@@ -0,0 +1,128 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gal-view-collection.c: a View Collection
+ *
+ * Authors:
+ * Chris Lahey (clahey@helixcode.com)
+ *
+ * (C) 1999, 2000 Helix Code, Inc.
+ */
+#include <config.h>
+#include <gtk/gtksignal.h>
+#include <gal/util/e-util.h>
+#include "gal-view-collection.h"
+
+#define GVC_CLASS(e) ((GalViewCollectionClass *)((GtkObject *)e)->klass)
+
+#define PARENT_TYPE gtk_object_get_type ()
+
+static GtkObjectClass *gal_view_collection_parent_class;
+
+enum {
+ DISPLAY_VIEW,
+ LAST_SIGNAL
+};
+
+static guint gal_view_collection_signals [LAST_SIGNAL] = { 0, };
+
+/**
+ * gal_view_collection_display_view:
+ * @collection: The GalViewCollection to send the signal on.
+ * @view: The view to display.
+ *
+ */
+void
+gal_view_collection_display_view (GalViewCollection *collection,
+ GalView *view)
+{
+ g_return_if_fail (collection != NULL);
+ g_return_if_fail (GAL_IS_VIEW_COLLECTION (collection));
+
+ gtk_signal_emit (GTK_OBJECT (collection),
+ gal_view_collection_signals [DISPLAY_VIEW],
+ view);
+}
+
+static void
+gal_view_collection_destroy (GtkObject *object)
+{
+ GalViewCollection *collection = GAL_VIEW_COLLECTION(object);
+
+ e_free_object_list(collection->view_list);
+ e_free_object_list(collection->factory_list);
+
+ if (gal_view_collection_parent_class->destroy)
+ (*gal_view_collection_parent_class->destroy)(object);
+}
+
+static void
+gal_view_collection_class_init (GtkObjectClass *object_class)
+{
+ GalViewCollectionClass *klass = GAL_VIEW_COLLECTION_CLASS(object_class);
+ gal_view_collection_parent_class = gtk_type_class (PARENT_TYPE);
+
+ object_class->destroy = gal_view_collection_destroy;
+
+ gal_view_collection_signals [DISPLAY_VIEW] =
+ gtk_signal_new ("display_view",
+ GTK_RUN_LAST,
+ object_class->type,
+ GTK_SIGNAL_OFFSET (GalViewCollectionClass, display_view),
+ gtk_marshal_NONE__OBJECT,
+ GTK_TYPE_NONE, 1, GTK_TYPE_OBJECT);
+
+ gtk_object_class_add_signals (object_class, gal_view_collection_signals, LAST_SIGNAL);
+
+ klass->display_view = NULL;
+}
+
+static void
+gal_view_collection_init (GalViewCollection *collection)
+{
+ collection->view_list = NULL;
+ collection->factory_list = NULL;
+}
+
+guint
+gal_view_collection_get_type (void)
+{
+ static guint type = 0;
+
+ if (!type)
+ {
+ GtkTypeInfo info =
+ {
+ "GalViewCollection",
+ sizeof (GalViewCollection),
+ sizeof (GalViewCollectionClass),
+ (GtkClassInitFunc) gal_view_collection_class_init,
+ (GtkObjectInitFunc) gal_view_collection_init,
+ /* reserved_1 */ NULL,
+ /* reserved_2 */ NULL,
+ (GtkClassInitFunc) NULL,
+ };
+
+ type = gtk_type_unique (PARENT_TYPE, &info);
+ }
+
+ return type;
+}
+
+GalViewCollection *gal_view_collection_new (void)
+{
+ return gtk_type_new(gal_view_collection_get_type());
+}
+
+/* Set up the view collection */
+void gal_view_collection_set_storage_directories (GalViewCollection *collection,
+ char *system_dir,
+ char *local_dir)
+{
+}
+
+void gal_view_collection_add_factory (GalViewCollection *collection,
+ GalViewFactory *factory)
+{
+ gtk_object_ref(GTK_OBJECT(factory));
+ collection->factory_list = g_list_prepend(collection->factory_list, factory);
+}