aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/menus/gal-view-etable.c
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@ximian.com>2002-02-07 18:22:59 +0800
committerChris Lahey <clahey@src.gnome.org>2002-02-07 18:22:59 +0800
commit9f1ac34671b0446c8eb8855e0aca62d5b69840b0 (patch)
treeca6f4d720aa6642ddd43c348adb92cb1e5ba0327 /widgets/menus/gal-view-etable.c
parent6190f4f6879d8533bdb97a7baba33773a6d71d6c (diff)
downloadgsoc2013-evolution-9f1ac34671b0446c8eb8855e0aca62d5b69840b0.tar.gz
gsoc2013-evolution-9f1ac34671b0446c8eb8855e0aca62d5b69840b0.tar.zst
gsoc2013-evolution-9f1ac34671b0446c8eb8855e0aca62d5b69840b0.zip
Bumped the version number to 0.19.99.5.
2002-02-07 Christopher James Lahey <clahey@ximian.com> * configure.in: Bumped the version number to 0.19.99.5. * gal/Makefile.am (libgal_la_LIBADD): Added menus/gal-view-instance-save-as-dialog.lo. * gal/e-text/e-text.c (next_word): Contains refactored code from the E_TEP_FORWARD_WORD case of e_text_command. (e_text_command): Implemented E_TEP_CAPS. From gal/menus/ChangeLog: 2002-02-07 Christopher James Lahey <clahey@ximian.com> * Makefile.am (glade_DATA): Added gal-view-instance-save-as-dialog.glade. (libgalmenus_la_SOURCES): Added gal-view-instance-save-as-dialog.c. (libgalmenusinclude_HEADERS): Added gal-view-instance-save-as-dialog.h. * gal-view-collection.c, gal-view-collection.h (gal_view_collection_append_with_title): Added this new version of the append function that sets the title and returns the new id as well. (gal_view_collection_set_nth_view): Added this function to save over another view. (gal_view_collection_get_default_view, gal_view_collection_set_default_view): Added the concept of a default view for GalViewCollections. * gal-view-etable.c, gal-view-etable.h (gal_view_etable_attach_table, gal_view_etable_attach_tree, gal_view_etable_detach): Added functions to set the state of a table or tree and then send GalView "changed" signals whenever that state changes. (gal_view_etable_set_state): New function to set the ETableState of a GalViewETable. * gal-view-instance-save-as-dialog.c, gal-view-instance-save-as-dialog.glade, gal-view-instance-save-as-dialog.h: New dialog to save the current custom view as a named view. * gal-view-instance.c, gal-view-instance.h (gal_view_instance_set_custom_view): New function to set the state of an instance to custom view and set the custom view to a particular GalView. (gal_view_instance_exists): New function to check if this particular instance has ever been opened before. Use before gal_view_instance_load. (gal_view_instance_save_as): New function to open a save as dialog. (gal_view_instance_load): Added this function which used to be part of _construct. This function can be called multiple times, and those extra times will be ignored. This is so you can set a default view before loading. (gal_view_instance_get_default_view, gal_view_instance_set_default_view): Set the default view for this instance. If unset, this falls back to the default view for the corresponding GalViewCollection. svn path=/trunk/; revision=15590
Diffstat (limited to 'widgets/menus/gal-view-etable.c')
-rw-r--r--widgets/menus/gal-view-etable.c145
1 files changed, 122 insertions, 23 deletions
diff --git a/widgets/menus/gal-view-etable.c b/widgets/menus/gal-view-etable.c
index 24d9815034..87351866bd 100644
--- a/widgets/menus/gal-view-etable.c
+++ b/widgets/menus/gal-view-etable.c
@@ -30,6 +30,31 @@
static GalViewClass *gal_view_etable_parent_class;
+static void
+detach_table (GalViewEtable *view)
+{
+ if (view->table == NULL)
+ return;
+ if (view->table_state_changed_id) {
+ gtk_signal_disconnect (GTK_OBJECT (view->table),
+ view->table_state_changed_id);
+ }
+ gtk_object_unref (GTK_OBJECT (view->table));
+ view->table = NULL;
+}
+
+static void
+detach_tree (GalViewEtable *view)
+{
+ if (view->tree == NULL)
+ return;
+ if (view->tree_state_changed_id) {
+ gtk_signal_disconnect (GTK_OBJECT (view->tree),
+ view->tree_state_changed_id);
+ }
+ gtk_object_unref (GTK_OBJECT (view->tree));
+ view->tree = NULL;
+}
static void
config_changed (ETableConfig *config, GalViewEtable *view)
@@ -79,8 +104,8 @@ gal_view_etable_get_title (GalView *view)
}
static void
-gal_view_etable_set_title (GalView *view,
- const char *title)
+gal_view_etable_set_title (GalView *view,
+ const char *title)
{
g_free(GAL_VIEW_ETABLE(view)->title);
GAL_VIEW_ETABLE(view)->title = g_strdup(title);
@@ -113,6 +138,9 @@ static void
gal_view_etable_destroy (GtkObject *object)
{
GalViewEtable *view = GAL_VIEW_ETABLE(object);
+
+ gal_view_etable_detach (view);
+
g_free(view->title);
if (view->spec)
gtk_object_unref(GTK_OBJECT(view->spec));
@@ -148,6 +176,31 @@ gal_view_etable_init (GalViewEtable *gve)
gve->title = NULL;
}
+GtkType
+gal_view_etable_get_type (void)
+{
+ static guint type = 0;
+
+ if (!type)
+ {
+ GtkTypeInfo info =
+ {
+ "GalViewEtable",
+ sizeof (GalViewEtable),
+ sizeof (GalViewEtableClass),
+ (GtkClassInitFunc) gal_view_etable_class_init,
+ (GtkObjectInitFunc) gal_view_etable_init,
+ /* reserved_1 */ NULL,
+ /* reserved_2 */ NULL,
+ (GtkClassInitFunc) NULL,
+ };
+
+ type = gtk_type_unique (PARENT_TYPE, &info);
+ }
+
+ return type;
+}
+
/**
* gal_view_etable_new
* @spec: The ETableSpecification that this view will be based upon.
@@ -194,27 +247,73 @@ gal_view_etable_construct (GalViewEtable *view,
return GAL_VIEW(view);
}
-GtkType
-gal_view_etable_get_type (void)
+void
+gal_view_etable_set_state (GalViewEtable *view, ETableState *state)
{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "GalViewEtable",
- sizeof (GalViewEtable),
- sizeof (GalViewEtableClass),
- (GtkClassInitFunc) gal_view_etable_class_init,
- (GtkObjectInitFunc) gal_view_etable_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
+ if (view->state)
+ gtk_object_unref(GTK_OBJECT(view->state));
+ view->state = e_table_state_duplicate(state);
- return type;
+ gal_view_changed(GAL_VIEW(view));
+}
+
+static void
+table_state_changed (ETable *table, GalViewEtable *view)
+{
+ ETableState *state;
+
+ state = e_table_get_state_object (table);
+ gtk_object_unref (GTK_OBJECT (view->state));
+ view->state = state;
+
+ gal_view_changed(GAL_VIEW(view));
+}
+
+static void
+tree_state_changed (ETree *tree, GalViewEtable *view)
+{
+ ETableState *state;
+
+ state = e_tree_get_state_object (tree);
+ gtk_object_unref (GTK_OBJECT (view->state));
+ view->state = state;
+
+ gal_view_changed(GAL_VIEW(view));
+}
+
+void
+gal_view_etable_attach_table (GalViewEtable *view, ETable *table)
+{
+ gal_view_etable_detach (view);
+
+ view->table = table;
+
+ e_table_set_state_object(view->table, view->state);
+ gtk_object_ref (GTK_OBJECT (view->table));
+ view->table_state_changed_id =
+ gtk_signal_connect(GTK_OBJECT(view->table), "state_change",
+ GTK_SIGNAL_FUNC (table_state_changed), view);
+}
+
+void
+gal_view_etable_attach_tree (GalViewEtable *view, ETree *tree)
+{
+ gal_view_etable_detach (view);
+
+ view->tree = tree;
+
+ e_tree_set_state_object(view->tree, view->state);
+ gtk_object_ref (GTK_OBJECT (view->tree));
+ view->tree_state_changed_id =
+ gtk_signal_connect(GTK_OBJECT(view->tree), "state_change",
+ GTK_SIGNAL_FUNC (tree_state_changed), view);
+}
+
+void
+gal_view_etable_detach (GalViewEtable *view)
+{
+ if (view->table != NULL)
+ detach_table (view);
+ if (view->tree != NULL)
+ detach_tree (view);
}