aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/menus/gal-view-etable.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/menus/gal-view-etable.c')
-rw-r--r--widgets/menus/gal-view-etable.c56
1 files changed, 51 insertions, 5 deletions
diff --git a/widgets/menus/gal-view-etable.c b/widgets/menus/gal-view-etable.c
index d990e29ff9..b748f66952 100644
--- a/widgets/menus/gal-view-etable.c
+++ b/widgets/menus/gal-view-etable.c
@@ -9,6 +9,7 @@
*/
#include <config.h>
#include "gal-view-etable.h"
+#include <gal/e-table/e-table-config.h>
#define PARENT_TYPE gal_view_get_type ()
@@ -17,7 +18,10 @@ static GalViewClass *gal_view_etable_parent_class;
static void
gal_view_etable_edit (GalView *view)
{
-
+ GalViewEtable *etable_view = GAL_VIEW_ETABLE(view);
+ e_table_config_new(etable_view->title,
+ etable_view->spec,
+ etable_view->state);
}
static void
@@ -40,6 +44,23 @@ gal_view_etable_get_title (GalView *view)
return GAL_VIEW_ETABLE(view)->title;
}
+static GalView *
+gal_view_etable_clone (GalView *view)
+{
+ GalViewEtable *gve, *new;
+
+ gve = GAL_VIEW_ETABLE(view);
+
+ new = gtk_type_new (gal_view_etable_get_type ());
+ new->spec = gve->spec;
+ new->title = g_strdup (gve->title);
+ new->state = e_table_state_duplicate(gve->state);
+
+ gtk_object_ref(GTK_OBJECT(new->spec));
+
+ return GAL_VIEW(new);
+}
+
static void
gal_view_etable_destroy (GtkObject *object)
{
@@ -61,6 +82,7 @@ gal_view_etable_class_init (GtkObjectClass *object_class)
gal_view_class->load_from_node = gal_view_etable_load_from_node;
gal_view_class->save_to_node = gal_view_etable_save_to_node ;
gal_view_class->get_title = gal_view_etable_get_title ;
+ gal_view_class->clone = gal_view_etable_clone ;
object_class->destroy = gal_view_etable_destroy ;
}
@@ -69,23 +91,47 @@ static void
gal_view_etable_init (GalViewEtable *gve)
{
gve->spec = NULL;
- gve->state = NULL;
+ gve->state = e_table_state_new();
gve->title = NULL;
}
+/**
+ * gal_view_etable_new
+ * @spec: The ETableSpecification that this view will be based upon.
+ * @title: The name of the new view.
+ *
+ * Returns a new GalViewEtable. This is primarily for use by
+ * GalViewFactoryEtable.
+ *
+ * Returns: The new GalViewEtable.
+ */
GalView *
-gal_view_etable_new (ETableSpecification *spec)
+gal_view_etable_new (ETableSpecification *spec,
+ const gchar *title)
{
- return gal_view_etable_construct (gtk_type_new (gal_view_etable_get_type ()), spec);
+ return gal_view_etable_construct (gtk_type_new (gal_view_etable_get_type ()), spec, title);
}
+/**
+ * gal_view_etable_construct
+ * @view: The view to construct.
+ * @spec: The ETableSpecification that this view will be based upon.
+ * @title: The name of the new view.
+ *
+ * constructs the GalViewEtable. To be used by subclasses and
+ * language bindings.
+ *
+ * Returns: The GalViewEtable.
+ */
GalView *
gal_view_etable_construct (GalViewEtable *view,
- ETableSpecification *spec)
+ ETableSpecification *spec,
+ const gchar *title)
{
if (spec)
gtk_object_ref(GTK_OBJECT(spec));
view->spec = spec;
+ view->title = g_strdup(title);
return GAL_VIEW(view);
}