evolution r34968 - in branches/mbarnes-composer: composer plugins/exchange-operations ui
- From: mbarnes svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r34968 - in branches/mbarnes-composer: composer plugins/exchange-operations ui
- Date: Thu, 7 Feb 2008 01:58:16 +0000 (GMT)
Author: mbarnes
Date: Thu Feb 7 01:58:16 2008
New Revision: 34968
URL: http://svn.gnome.org/viewvc/evolution?rev=34968&view=rev
Log:
Kill evolution-composer-entries.xml. One down...
Override the HTML editor's Cut / Copy / Paste / Select All methods
way more elegantly now with Bonobo crud out of the way.
Removed:
branches/mbarnes-composer/ui/evolution-composer-entries.xml
Modified:
branches/mbarnes-composer/composer/e-msg-composer.c
branches/mbarnes-composer/plugins/exchange-operations/Makefile.am
branches/mbarnes-composer/ui/Makefile.am
Modified: branches/mbarnes-composer/composer/e-msg-composer.c
==============================================================================
--- branches/mbarnes-composer/composer/e-msg-composer.c (original)
+++ branches/mbarnes-composer/composer/e-msg-composer.c Thu Feb 7 01:58:16 2008
@@ -1646,54 +1646,6 @@
}
static void
-menu_edit_cut_cb (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- EMsgComposer *composer = data;
- EMsgComposerPrivate *p = composer->priv;
-
- g_return_if_fail (p->focused_entry != NULL);
-
- if (GTK_IS_ENTRY (p->focused_entry)) {
- gtk_editable_cut_clipboard (GTK_EDITABLE (p->focused_entry));
- } else {
- /* happy happy joy joy, an EEntry. */
- g_return_if_reached ();
- }
-}
-
-static void
-menu_edit_copy_cb (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- EMsgComposer *composer = data;
- EMsgComposerPrivate *p = composer->priv;
-
- g_return_if_fail (p->focused_entry != NULL);
-
- if (GTK_IS_ENTRY (p->focused_entry)) {
- gtk_editable_copy_clipboard (GTK_EDITABLE (p->focused_entry));
- } else {
- /* happy happy joy joy, an EEntry. */
- g_return_if_reached ();
- }
-}
-
-static void
-menu_edit_paste_cb (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- EMsgComposer *composer = data;
- EMsgComposerPrivate *p = composer->priv;
-
- g_return_if_fail (p->focused_entry != NULL);
-
- if (GTK_IS_ENTRY (p->focused_entry)) {
- gtk_editable_paste_clipboard (GTK_EDITABLE (p->focused_entry));
- } else {
- /* happy happy joy joy, an EEntry. */
- g_return_if_reached ();
- }
-}
-
-static void
menu_send_options_cb (BonoboUIComponent *component, gpointer data, const char *path)
{
EMEvent *e = em_event_peek ();
@@ -1709,23 +1661,6 @@
}
static void
-menu_edit_select_all_cb (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- EMsgComposer *composer = data;
- EMsgComposerPrivate *p = composer->priv;
-
- g_return_if_fail (p->focused_entry != NULL);
-
- if (GTK_IS_ENTRY (p->focused_entry)) {
- gtk_editable_set_position (GTK_EDITABLE (p->focused_entry), -1);
- gtk_editable_select_region (GTK_EDITABLE (p->focused_entry), 0, -1);
- } else {
- /* happy happy joy joy, an EEntry. */
- g_return_if_reached ();
- }
-}
-
-static void
menu_edit_delete_all_cb (BonoboUIComponent *uic, gpointer data, const char *path)
{
#if 0 /* GTKHTML-EDITOR */
@@ -2028,10 +1963,6 @@
bonobo_ui_component_thaw (p->uic, NULL);
- /* Create the UIComponent for the non-control entries */
-
- p->entry_uic = bonobo_ui_component_new_default ();
-
/* Setup main menu plugin mechanism */
target = em_menu_target_new_widget (p->menu, (GtkWidget *)composer);
e_menu_update_target ((EMenu *)p->menu, target);
@@ -2237,143 +2168,6 @@
}
-/* GObject methods. */
-
-static void
-msg_composer_finalize (GObject *object)
-{
- EMsgComposer *composer = E_MSG_COMPOSER (object);
- EMsgComposerPrivate *p = composer->priv;
-
- if (p->extra_hdr_names) {
- gint i;
-
- for (i = 0; i < p->extra_hdr_names->len; i++) {
- g_free (p->extra_hdr_names->pdata[i]);
- g_free (p->extra_hdr_values->pdata[i]);
- }
- g_ptr_array_free (p->extra_hdr_names, TRUE);
- g_ptr_array_free (p->extra_hdr_values, TRUE);
- }
-
- g_hash_table_destroy (p->inline_images);
- g_hash_table_destroy (p->inline_images_by_url);
-
- g_free (p->charset);
- g_free (p->mime_type);
- g_free (p->mime_body);
-
- if (p->redirect)
- camel_object_unref (p->redirect);
-
- /* Chain up to parent's finalize () method. */
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-msg_composer_dispose (GObject *object)
-{
- /* When destroy () is called, the contents of the window
- * (including the remote editor control) will already have
- * been destroyed, so we have to do this here.
- */
- autosave_manager_unregister (E_MSG_COMPOSER (object));
-
- /* Chain up to parent's dispose () method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-/* GtkObject methods */
-static void
-msg_composer_destroy (GtkObject *object)
-{
- EMsgComposer *composer = (EMsgComposer *)object;
- EMsgComposerPrivate *p = composer->priv;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
-
-#if 0 /* GTKHTML-EDITOR */
- if (p->menu) {
- e_menu_update_target ((EMenu *)p->menu, NULL);
- g_object_unref (p->menu);
- p->menu = NULL;
- }
-#endif
-
- if (p->load) {
- gtk_widget_destroy (p->load);
- p->load = NULL;
- }
-
- if (p->saveas) {
- gtk_widget_destroy (p->saveas);
- p->saveas = NULL;
- }
-
-#if 0 /* GTKHTML-EDITOR */
- if (p->uic) {
- bonobo_object_unref (BONOBO_OBJECT (p->uic));
- p->uic = NULL;
- }
-
- if (p->entry_uic) {
- bonobo_object_unref (BONOBO_OBJECT (p->entry_uic));
- p->entry_uic = NULL;
- }
-#endif
-
- /* FIXME? I assume the Bonobo widget will get destroyed
- normally? */
- if (p->address_dialog != NULL) {
- gtk_widget_destroy (p->address_dialog);
- p->address_dialog = NULL;
- }
-
- if (p->header_table != NULL) {
- gtk_widget_destroy (p->header_table);
- p->header_table = NULL;
- }
-
- if (p->notify_id) {
- GConfClient *gconf = gconf_client_get_default ();
- gconf_client_notify_remove (gconf, p->notify_id);
- p->notify_id = 0;
- g_object_unref (gconf);
- }
-
-#if 0 /* GTKHTML-EDITOR */
- if (p->persist_stream_interface != CORBA_OBJECT_NIL) {
- Bonobo_Unknown_unref (p->persist_stream_interface, &ev);
- CORBA_Object_release (p->persist_stream_interface, &ev);
- p->persist_stream_interface = CORBA_OBJECT_NIL;
- }
-
- if (p->persist_file_interface != CORBA_OBJECT_NIL) {
- Bonobo_Unknown_unref (p->persist_file_interface, &ev);
- CORBA_Object_release (p->persist_file_interface, &ev);
- p->persist_file_interface = CORBA_OBJECT_NIL;
- }
-
- if (p->eeditor_engine != CORBA_OBJECT_NIL) {
- Bonobo_Unknown_unref (p->eeditor_engine, &ev);
- CORBA_Object_release (p->eeditor_engine, &ev);
- p->eeditor_engine = CORBA_OBJECT_NIL;
- }
-
- CORBA_exception_free (&ev);
-
- if (p->eeditor_listener) {
- bonobo_object_unref (p->eeditor_listener);
- p->eeditor_listener = NULL;
- }
-#endif
-
- /* Chain up to parent's destroy () method. */
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-
/* show the help menu item of the composer */
static void
e_msg_composer_show_help (EMsgComposer *composer)
@@ -2389,17 +2183,6 @@
}
-/* GtkWidget methods. */
-
-static int
-msg_composer_delete_event (GtkWidget *widget,
- GdkEventAny *event)
-{
- do_exit (E_MSG_COMPOSER (widget));
-
- return TRUE;
-}
-
static void
attach_message (EMsgComposer *composer, CamelMimeMessage *msg)
{
@@ -2752,11 +2535,222 @@
}
static void
+msg_composer_dispose (GObject *object)
+{
+ /* When destroy () is called, the contents of the window
+ * (including the remote editor control) will already have
+ * been destroyed, so we have to do this here.
+ */
+ autosave_manager_unregister (E_MSG_COMPOSER (object));
+
+ /* Chain up to parent's dispose () method. */
+ G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+msg_composer_finalize (GObject *object)
+{
+ EMsgComposer *composer = E_MSG_COMPOSER (object);
+ EMsgComposerPrivate *p = composer->priv;
+
+ if (p->extra_hdr_names) {
+ gint i;
+
+ for (i = 0; i < p->extra_hdr_names->len; i++) {
+ g_free (p->extra_hdr_names->pdata[i]);
+ g_free (p->extra_hdr_values->pdata[i]);
+ }
+ g_ptr_array_free (p->extra_hdr_names, TRUE);
+ g_ptr_array_free (p->extra_hdr_values, TRUE);
+ }
+
+ g_hash_table_destroy (p->inline_images);
+ g_hash_table_destroy (p->inline_images_by_url);
+
+ g_free (p->charset);
+ g_free (p->mime_type);
+ g_free (p->mime_body);
+
+ if (p->redirect)
+ camel_object_unref (p->redirect);
+
+ /* Chain up to parent's finalize () method. */
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+msg_composer_destroy (GtkObject *object)
+{
+ EMsgComposer *composer = (EMsgComposer *)object;
+ EMsgComposerPrivate *p = composer->priv;
+ CORBA_Environment ev;
+
+ CORBA_exception_init (&ev);
+
+#if 0 /* GTKHTML-EDITOR */
+ if (p->menu) {
+ e_menu_update_target ((EMenu *)p->menu, NULL);
+ g_object_unref (p->menu);
+ p->menu = NULL;
+ }
+#endif
+
+ if (p->load) {
+ gtk_widget_destroy (p->load);
+ p->load = NULL;
+ }
+
+ if (p->saveas) {
+ gtk_widget_destroy (p->saveas);
+ p->saveas = NULL;
+ }
+
+#if 0 /* GTKHTML-EDITOR */
+ if (p->uic) {
+ bonobo_object_unref (BONOBO_OBJECT (p->uic));
+ p->uic = NULL;
+ }
+#endif
+
+ /* FIXME? I assume the Bonobo widget will get destroyed
+ normally? */
+ if (p->address_dialog != NULL) {
+ gtk_widget_destroy (p->address_dialog);
+ p->address_dialog = NULL;
+ }
+
+ if (p->header_table != NULL) {
+ gtk_widget_destroy (p->header_table);
+ p->header_table = NULL;
+ }
+
+ if (p->notify_id) {
+ GConfClient *gconf = gconf_client_get_default ();
+ gconf_client_notify_remove (gconf, p->notify_id);
+ p->notify_id = 0;
+ g_object_unref (gconf);
+ }
+
+#if 0 /* GTKHTML-EDITOR */
+ if (p->persist_stream_interface != CORBA_OBJECT_NIL) {
+ Bonobo_Unknown_unref (p->persist_stream_interface, &ev);
+ CORBA_Object_release (p->persist_stream_interface, &ev);
+ p->persist_stream_interface = CORBA_OBJECT_NIL;
+ }
+
+ if (p->persist_file_interface != CORBA_OBJECT_NIL) {
+ Bonobo_Unknown_unref (p->persist_file_interface, &ev);
+ CORBA_Object_release (p->persist_file_interface, &ev);
+ p->persist_file_interface = CORBA_OBJECT_NIL;
+ }
+
+ if (p->eeditor_engine != CORBA_OBJECT_NIL) {
+ Bonobo_Unknown_unref (p->eeditor_engine, &ev);
+ CORBA_Object_release (p->eeditor_engine, &ev);
+ p->eeditor_engine = CORBA_OBJECT_NIL;
+ }
+
+ CORBA_exception_free (&ev);
+
+ if (p->eeditor_listener) {
+ bonobo_object_unref (p->eeditor_listener);
+ p->eeditor_listener = NULL;
+ }
+#endif
+
+ /* Chain up to parent's destroy () method. */
+ GTK_OBJECT_CLASS (parent_class)->destroy (object);
+}
+
+static gint
+msg_composer_delete_event (GtkWidget *widget,
+ GdkEventAny *event)
+{
+ do_exit (E_MSG_COMPOSER (widget));
+
+ return TRUE;
+}
+
+static void
+msg_composer_cut (GtkhtmlEditor *editor)
+{
+ EMsgComposer *composer;
+ GtkWidget *parent;
+ GtkWidget *widget;
+
+ composer = E_MSG_COMPOSER (editor);
+ widget = gtk_window_get_focus (GTK_WINDOW (editor));
+ parent = gtk_widget_get_parent (widget);
+
+ if (parent == composer->priv->header_table)
+ gtk_editable_cut_clipboard (GTK_EDITABLE (widget));
+ else
+ /* Chain up to the parent's cut() method. */
+ GTKHTML_EDITOR_CLASS (parent_class)->cut (editor);
+}
+
+static void
+msg_composer_copy (GtkhtmlEditor *editor)
+{
+ EMsgComposer *composer;
+ GtkWidget *parent;
+ GtkWidget *widget;
+
+ composer = E_MSG_COMPOSER (editor);
+ widget = gtk_window_get_focus (GTK_WINDOW (editor));
+ parent = gtk_widget_get_parent (widget);
+
+ if (parent == composer->priv->header_table)
+ gtk_editable_copy_clipboard (GTK_EDITABLE (widget));
+ else
+ /* Chain up to the parent's copy() method. */
+ GTKHTML_EDITOR_CLASS (parent_class)->copy (editor);
+}
+
+static void
+msg_composer_paste (GtkhtmlEditor *editor)
+{
+ EMsgComposer *composer;
+ GtkWidget *parent;
+ GtkWidget *widget;
+
+ composer = E_MSG_COMPOSER (editor);
+ widget = gtk_window_get_focus (GTK_WINDOW (editor));
+ parent = gtk_widget_get_parent (widget);
+
+ if (parent == composer->priv->header_table)
+ gtk_editable_paste_clipboard (GTK_EDITABLE (widget));
+ else
+ /* Chain up to the parent's paste() method. */
+ GTKHTML_EDITOR_CLASS (parent_class)->paste (editor);
+}
+
+static void
+msg_composer_select_all (GtkhtmlEditor *editor)
+{
+ EMsgComposer *composer;
+ GtkWidget *parent;
+ GtkWidget *widget;
+
+ composer = E_MSG_COMPOSER (editor);
+ widget = gtk_window_get_focus (GTK_WINDOW (editor));
+ parent = gtk_widget_get_parent (widget);
+
+ if (parent == composer->priv->header_table) {
+ gtk_editable_set_position (GTK_EDITABLE (widget), -1);
+ gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
+ } else
+ /* Chain up to the parent's select_all() method. */
+ GTKHTML_EDITOR_CLASS (parent_class)->select_all (editor);
+}
+
+static void
msg_composer_class_init (EMsgComposerClass *class)
{
GObjectClass *object_class;
GtkObjectClass *gtk_object_class;
GtkWidgetClass *widget_class;
+ GtkhtmlEditorClass *editor_class;
gint ii;
for (ii = 0; ii < G_N_ELEMENTS (drag_info); ii++)
@@ -2776,6 +2770,12 @@
widget_class = GTK_WIDGET_CLASS (class);
widget_class->delete_event = msg_composer_delete_event;
+ editor_class = GTKHTML_EDITOR_CLASS (class);
+ editor_class->cut = msg_composer_cut;
+ editor_class->copy = msg_composer_copy;
+ editor_class->paste = msg_composer_paste;
+ editor_class->select_all = msg_composer_select_all;
+
signals[SEND] =
g_signal_new ("send",
E_TYPE_MSG_COMPOSER,
@@ -3034,104 +3034,6 @@
return FALSE;
}
-
-/* Verbs for non-control entries */
-static BonoboUIVerb entry_verbs [] = {
- BONOBO_UI_VERB ("EditCut", menu_edit_cut_cb),
- BONOBO_UI_VERB ("EditCopy", menu_edit_copy_cb),
- BONOBO_UI_VERB ("EditPaste", menu_edit_paste_cb),
- BONOBO_UI_VERB ("EditSelectAll", menu_edit_select_all_cb),
- BONOBO_UI_VERB_END
-};
-
-/* All this snot is so that Cut/Copy/Paste work. */
-static gboolean
-composer_entry_focus_in_event_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data)
-{
-#if 0 /* GTKHTML-EDITOR */
- EMsgComposer *composer = user_data;
- EMsgComposerPrivate *p = composer->priv;
- BonoboUIContainer *container;
- char *xmlfile;
-
- p->focused_entry = widget;
-
- container = bonobo_window_get_ui_container (BONOBO_WINDOW (composer));
- bonobo_ui_component_set_container (p->entry_uic, bonobo_object_corba_objref (BONOBO_OBJECT (container)), NULL);
-
- bonobo_ui_component_add_verb_list_with_data (p->entry_uic, entry_verbs, composer);
-
- bonobo_ui_component_freeze (p->entry_uic, NULL);
-
- xmlfile = g_build_filename (EVOLUTION_UIDIR, "evolution-composer-entries.xml", NULL);
- bonobo_ui_util_set_ui (p->entry_uic, PREFIX,
- xmlfile,
- "evolution-composer-entries", NULL);
- g_free (xmlfile);
-
- bonobo_ui_component_thaw (p->entry_uic, NULL);
-#endif /* GTKHTML-EDITOR */
-
- return FALSE;
-}
-
-static gboolean
-composer_entry_focus_out_event_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data)
-{
-#if 0 /* GTKHTML-EDITOR */
- EMsgComposer *composer = user_data;
- EMsgComposerPrivate *p = composer->priv;
-
- g_return_val_if_fail (p->focused_entry == widget, FALSE);
- p->focused_entry = NULL;
-
- bonobo_ui_component_unset_container (p->entry_uic, NULL);
-#endif /* GTKHTML-EDITOR */
-
- return FALSE;
-}
-
-static void
-setup_cut_copy_paste (EMsgComposer *composer)
-{
- EComposerHeaderTable *table;
- GtkWidget *entry;
-
- /* XXX Shouldn't EComposerHeader be handling this? */
-
- table = e_msg_composer_get_header_table (composer);
-
- entry = e_composer_header_table_get_header (
- table, E_COMPOSER_HEADER_SUBJECT)->input_widget;
- g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
- g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
-
- entry = e_composer_header_table_get_header (
- table, E_COMPOSER_HEADER_REPLY_TO)->input_widget;
- g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
- g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
-
- entry = e_composer_header_table_get_header (
- table, E_COMPOSER_HEADER_TO)->input_widget;
- g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
- g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
-
- entry = e_composer_header_table_get_header (
- table, E_COMPOSER_HEADER_CC)->input_widget;
- g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
- g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
-
- entry = e_composer_header_table_get_header (
- table, E_COMPOSER_HEADER_BCC)->input_widget;
- g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
- g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
-
- entry = e_composer_header_table_get_header (
- table, E_COMPOSER_HEADER_POST_TO)->input_widget;
- g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
- g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
-}
-
static void
composer_settings_update (GConfClient *gconf, guint cnxn_id, GConfEntry *entry, gpointer data)
{
@@ -3527,8 +3429,6 @@
}
#endif /* GTKHTML-EDITOR */
- setup_cut_copy_paste (composer);
-
g_signal_connect (composer, "map", (GCallback) map_default_cb, NULL);
e_composer_autosave_register (composer);
Modified: branches/mbarnes-composer/plugins/exchange-operations/Makefile.am
==============================================================================
--- branches/mbarnes-composer/plugins/exchange-operations/Makefile.am (original)
+++ branches/mbarnes-composer/plugins/exchange-operations/Makefile.am Thu Feb 7 01:58:16 2008
@@ -5,6 +5,7 @@
-I$(top_builddir)/composer \
-I$(top_builddir)/mail \
$(CAMEL_EXCHANGE_CFLAGS) \
+ $(EVOLUTION_MAIL_CFLAGS) \
-DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
-DCONNECTOR_GLADEDIR=\""$(gladedir)"\"
@@ -54,7 +55,8 @@
$(top_builddir)/calendar/gui/libevolution-calendar.la \
$(top_builddir)/mail/libevolution-mail.la \
$(top_builddir)/addressbook/gui/component/libevolution-addressbook.la \
- $(CAMEL_EXCHANGE_LIBS)
+ $(CAMEL_EXCHANGE_LIBS) \
+ $(EVOLUTION_MAIL_LIBS)
liborg_gnome_exchange_operations_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED)
Modified: branches/mbarnes-composer/ui/Makefile.am
==============================================================================
--- branches/mbarnes-composer/ui/Makefile.am (original)
+++ branches/mbarnes-composer/ui/Makefile.am Thu Feb 7 01:58:16 2008
@@ -2,7 +2,6 @@
evolution.xml \
evolution-addressbook.xml \
evolution-calendar.xml \
- evolution-composer-entries.xml \
evolution-mail-message.xml \
evolution-mail-list.xml \
evolution-mail-global.xml \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]