laptop sync

svn path=/trunk/; revision=2038
This commit is contained in:
Bertrand Guiheneuf
2000-03-04 05:15:28 +00:00
parent b6788c4e5d
commit 7fc7a2644f

View File

@ -32,7 +32,7 @@
#include <gtkhtml/gtkhtml.h>
/* corba/bonobo stuff */
#include <bonobo/bonobo.h>
#include <bonobo.h>
#include <libgnorba/gnorba.h>
static void
@ -346,6 +346,17 @@ on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, void *data)
gchar *uid;
GtkWidget *bonobo_embedable;
CamelStream *stream;
gchar tmp_buffer[4097];
gint nb_bytes_read;
GString *tmp_gstring = NULL;
BonoboStream *mem_stream;
CORBA_Environment ev;
BonoboObjectClient *server;
Bonobo_PersistStream persist;
uid = gtk_html_embedded_get_parameter (eb, "uid");
@ -359,9 +370,89 @@ on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, void *data)
gtk_widget_show (bonobo_embedable);
gtk_container_add (GTK_CONTAINER(eb), bonobo_embedable);
if (sscanf (uid, "camel://%p", &stream) == 1) {
server = bonobo_widget_get_server (BONOBO_WIDGET (bonobo_embedable));
/* if the component supports persistant streams,
* then we are going to create a mem stream */
if (bonobo_object_client_has_interface (server,
"IDL:Bonobo/PersistStream:1.0",
NULL)) {
tmp_gstring = g_string_new ("");
do {
/* read next chunk of text */
nb_bytes_read = camel_stream_read (stream,
tmp_buffer,
4096);
tmp_buffer [nb_bytes_read] = '\0';
/* If there's any text, append it to the gstring */
if (nb_bytes_read > 0) {
tmp_gstring = g_string_append (tmp_gstring, tmp_buffer);
}
} while (!camel_stream_eos (stream));
if (tmp_gstring->len) {
mem_stream = bonobo_stream_mem_create (tmp_gstring->str,tmp_gstring->len , TRUE);
persist = bonobo_object_client_query_interface (server,
"IDL:Bonobo/PersistStream:1.0",
NULL);
/*
* If the component doesn't support PersistStream (and it
* really ought to -- we query it to see if it supports
* PersistStream before we even give the user the option of
* loading data into it with PersistStream), then we destroy
* the stream we created and bail.
*/
if (persist == CORBA_OBJECT_NIL) {
gnome_warning_dialog (_("The component now claims that it "
"doesn't support PersistStream!"));
bonobo_object_unref (BONOBO_OBJECT (mem_stream));
return;
}
CORBA_exception_init (&ev);
/*
* Load the file into the component using PersistStream.
*/
Bonobo_PersistStream_load (persist,
(Bonobo_Stream) bonobo_object_corba_objref (BONOBO_OBJECT (mem_stream)),
&ev);
if (ev._major != CORBA_NO_EXCEPTION) {
gnome_warning_dialog (_("An exception occured while trying "
"to load data into the component with "
"PersistStream"));
}
/*
* Now we destroy the PersistStream object.
*/
Bonobo_Unknown_unref (persist, &ev);
CORBA_Object_release (persist, &ev);
CORBA_exception_free (&ev);
}
}
}
}
static GtkWidget*
get_gtk_html_contents_window (CamelDataWrapper* data)
{