diff options
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | mail/Makefile.am | 1 | ||||
-rw-r--r-- | mail/folder-browser-factory.c | 40 | ||||
-rw-r--r-- | mail/mail-display.c | 38 |
4 files changed, 79 insertions, 5 deletions
diff --git a/Makefile.am b/Makefile.am index c68ea925e7..ffa9923093 100644 --- a/Makefile.am +++ b/Makefile.am @@ -25,8 +25,9 @@ SUBDIRS = \ tests \ addressbook \ libical \ - libversit \ - calendar + libversit +# Add this when the calendar builds. +# calendar dist-hook: for subdir in intl ; do \ diff --git a/mail/Makefile.am b/mail/Makefile.am index fec2e6f329..d9b015c897 100644 --- a/mail/Makefile.am +++ b/mail/Makefile.am @@ -45,6 +45,7 @@ evolution_mail_LDADD = \ ../shell/Evolution-stubs.o \ ../shell/Evolution-skels.o \ ../shell/evolution-service-repository.o \ + ../composer/libcomposer.la \ ../widgets/e-table/libetable.a \ ../widgets/e-text/libetext.a \ ../camel/libcamel.la \ diff --git a/mail/folder-browser-factory.c b/mail/folder-browser-factory.c index 17b0f16325..f2397ef15b 100644 --- a/mail/folder-browser-factory.c +++ b/mail/folder-browser-factory.c @@ -19,6 +19,7 @@ #include "main.h" #include "shell/Evolution.h" #include "shell/evolution-service-repository.h" +#include "composer/e-msg-composer.h" static const gchar *warning_dialog_buttons[] = { @@ -99,6 +100,41 @@ development_warning () } +static void +msg_composer_send_cb (EMsgComposer *composer, + gpointer data) +{ + CamelMimeMessage *message; + CamelStream *stream; + gint stdout_dup; + + message = e_msg_composer_get_message (composer); + + stdout_dup = dup (1); + stream = camel_stream_fs_new_with_fd (stdout_dup); + camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), + stream); + camel_stream_close (stream); + + gtk_object_unref (GTK_OBJECT (message)); + +#if 0 + gtk_widget_destroy (GTK_WIDGET (composer)); + gtk_main_quit (); +#endif +} + + +static void +msg_composer_cb (GtkObject *obj, gpointer user_data) +{ + CamelMimeMessage *msg; + GtkWidget *composer; + + composer = e_msg_composer_new (); + gtk_signal_connect (GTK_OBJECT (composer), "send", GTK_SIGNAL_FUNC (msg_composer_send_cb), NULL); + gtk_widget_show (composer); +} static void @@ -114,9 +150,9 @@ control_add_menu (BonoboControl *control) bonobo_ui_handler_set_container (uih, remote_uih); bonobo_ui_handler_menu_new_item (uih, - "/File/Stuff", N_("_Stuff"), NULL, -1, + "/File/New", N_("_Mail"), NULL, -1, BONOBO_UI_HANDLER_PIXMAP_NONE, NULL, 0, 0, - NULL, NULL); + msg_composer_cb, NULL); } diff --git a/mail/mail-display.c b/mail/mail-display.c index 2dc02094f1..1f3c94e404 100644 --- a/mail/mail-display.c +++ b/mail/mail-display.c @@ -139,6 +139,38 @@ camel_stream_to_gstring (CamelStream* stream) return tmp_gstring; } +static void +embeddable_destroy_cb (GtkObject *obj, gpointer user_data) +{ + BonoboWidget *be; /* bonobo embeddable */ + BonoboViewFrame *vf; /* the embeddable view frame */ + GtkWidget *w; /* the viewframe widget */ + BonoboObjectClient* server; + CORBA_Environment ev; + + + printf ("in the bonobo embeddable destroy callback\n"); + be = BONOBO_WIDGET (obj); + server = bonobo_widget_get_server (be); + + + + vf = bonobo_widget_get_view_frame (be); + bonobo_control_frame_control_deactivate (vf); + //w = bonobo_control_frame_get_widget (BONOBO_CONTROL_FRAME (vf)); + + //gtk_widget_destroy (w); + + CORBA_exception_init (&ev); + Bonobo_Unknown_unref (bonobo_object_corba_objref (server), &ev); + CORBA_Object_release (bonobo_object_corba_objref (server), &ev); + CORBA_exception_free (&ev); + bonobo_object_destroy (BONOBO_OBJECT (vf)); + //gtk_object_unref (obj); +} + + + /* * As a page is loaded, when gtkhtml comes across <object> tags, this * callback is invoked. The GtkHTMLEmbedded param is a GtkContainer; @@ -156,7 +188,7 @@ on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, void *unused) CORBA_Environment ev; gchar *uid = gtk_html_embedded_get_parameter (eb, "uid"); - printf ("Here\n"); + /* Both the classid (which specifies which bonobo object to * fire up) and the uid (which tells us where to find data to * persist from) must be available; if one of them isn't, @@ -173,6 +205,9 @@ on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, void *unused) /* Try to get a server with goadid specified by eb->classid */ bonobo_embeddable = bonobo_widget_new_subdoc (eb->classid, NULL); + gtk_signal_connect (GTK_OBJECT (bonobo_embeddable), + "destroy", embeddable_destroy_cb, NULL); + server = bonobo_widget_get_server (BONOBO_WIDGET (bonobo_embeddable)); if (!server) { printf ("Couldn't get the server for the bonobo embeddable\n"); @@ -227,6 +262,7 @@ on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, void *unused) + void mail_display_set_message (MailDisplay *mail_display, CamelMedium *medium) |