aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs
diff options
context:
space:
mode:
authorJP Rosevear <jpr@ximian.com>2002-05-27 00:21:28 +0800
committerJP Rosevear <jpr@src.gnome.org>2002-05-27 00:21:28 +0800
commitfb1d17d150cb5178ca1d63431958d3df9dfc60b3 (patch)
tree5c17aae3a1d8b6a5d52909a30bcc5391c03f465f /calendar/gui/dialogs
parente6298a6cd5faa861d4185c1399fe627e6d70d8f8 (diff)
downloadgsoc2013-evolution-fb1d17d150cb5178ca1d63431958d3df9dfc60b3.tar
gsoc2013-evolution-fb1d17d150cb5178ca1d63431958d3df9dfc60b3.tar.gz
gsoc2013-evolution-fb1d17d150cb5178ca1d63431958d3df9dfc60b3.tar.bz2
gsoc2013-evolution-fb1d17d150cb5178ca1d63431958d3df9dfc60b3.tar.lz
gsoc2013-evolution-fb1d17d150cb5178ca1d63431958d3df9dfc60b3.tar.xz
gsoc2013-evolution-fb1d17d150cb5178ca1d63431958d3df9dfc60b3.tar.zst
gsoc2013-evolution-fb1d17d150cb5178ca1d63431958d3df9dfc60b3.zip
a registry of comp editors so we can close them all centrally
2002-05-26 JP Rosevear <jpr@ximian.com> * gui/e-comp-editor-registry.[hc]: a registry of comp editors so we can close them all centrally * gui/gnome-cal.c (gnome_calendar_init): there is no editor hash now (gnome_calendar_destroy): ditto (gnome_calendar_edit_object): look for the event editor in the registry, if it isn't there, create it and add it to the registry * gui/e-calendar-table.c (open_task): look for the task editor in the registry, if it isn't there, create it and add it to the registry * gui/component-factory.c (request_quit): close all open editors (create_object): add a request_quit function to the shell component * gui/comp-editor-factory.c (free_client): there is no uid_comp_hash to free any more (editor_destroy_cb): we get an OpenClient as callback data now, reduce the editor count and destroy it if it is 0 (edit_existing): don't create the Component, add the new editor to the registry, increase the editor count (edit_new): ditto (open_client): set the editor count to 0 (impl_editExisting): look in the registry for the editor * gui/Makefile.am: Build new sources * gui/main.c (main): create the registry * gui/dialogs/comp-editor.c (comp_editor_close): prompt to save and then close dialog * gui/dialogs/comp-editor.h: new proto * gui/GNOME_Evolution_Calendar.oaf.in: remove dead summary stuff svn path=/trunk/; revision=17018
Diffstat (limited to 'calendar/gui/dialogs')
-rw-r--r--calendar/gui/dialogs/comp-editor.c38
-rw-r--r--calendar/gui/dialogs/comp-editor.h1
2 files changed, 26 insertions, 13 deletions
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c
index f2a028a4ee..21f5e1c9f3 100644
--- a/calendar/gui/dialogs/comp-editor.c
+++ b/calendar/gui/dialogs/comp-editor.c
@@ -411,6 +411,19 @@ prompt_to_save_changes (CompEditor *editor, gboolean send)
}
}
+/* This sets the focus to the toplevel, so any field being edited is committed.
+ FIXME: In future we may also want to check some of the fields are valid,
+ e.g. the EDateEdit fields. */
+static void
+commit_all_fields (CompEditor *editor)
+{
+ CompEditorPrivate *priv;
+
+ priv = editor->priv;
+
+ gtk_window_set_focus (GTK_WINDOW (editor), NULL);
+}
+
/* Closes the dialog box and emits the appropriate signals */
static void
close_dialog (CompEditor *editor)
@@ -965,6 +978,18 @@ comp_editor_send_comp (CompEditor *editor, CalComponentItipMethod method)
klass->send_comp (editor, method);
}
+void
+comp_editor_close (CompEditor *editor)
+{
+ g_return_if_fail (editor != NULL);
+ g_return_if_fail (IS_COMP_EDITOR (editor));
+
+ commit_all_fields (editor);
+
+ if (prompt_to_save_changes (editor, TRUE))
+ close_dialog (editor);
+}
+
/**
* comp_editor_merge_ui:
* @editor:
@@ -1048,19 +1073,6 @@ comp_editor_focus (CompEditor *editor)
raise_and_focus (GTK_WIDGET (editor));
}
-/* This sets the focus to the toplevel, so any field being edited is committed.
- FIXME: In future we may also want to check some of the fields are valid,
- e.g. the EDateEdit fields. */
-static void
-commit_all_fields (CompEditor *editor)
-{
- CompEditorPrivate *priv;
-
- priv = editor->priv;
-
- gtk_window_set_focus (GTK_WINDOW (editor), NULL);
-}
-
/* Menu Commands */
static void
save_cmd (GtkWidget *widget, gpointer data)
diff --git a/calendar/gui/dialogs/comp-editor.h b/calendar/gui/dialogs/comp-editor.h
index cc5679d1cd..9297526e48 100644
--- a/calendar/gui/dialogs/comp-editor.h
+++ b/calendar/gui/dialogs/comp-editor.h
@@ -83,6 +83,7 @@ gboolean comp_editor_save_comp (CompEditor *editor,
void comp_editor_delete_comp (CompEditor *editor);
void comp_editor_send_comp (CompEditor *editor,
CalComponentItipMethod method);
+void comp_editor_close (CompEditor *editor);
void comp_editor_merge_ui (CompEditor *editor,
const char *filename,
BonoboUIVerb *verbs,