From c9bdd4418c49ad0debedcd311ab5d0683978162f Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Tue, 13 Mar 2007 14:07:03 +0100 Subject: [PATCH] Implement save_uri. Add boolean return arguments. --- lib/python/_sugar.defs | 4 ++-- lib/src/Makefile.am | 1 + lib/src/sugar-browser.cpp | 46 +++++++++++++++++++++++++++++++++++++-- lib/src/sugar-browser.h | 4 ++-- 4 files changed, 49 insertions(+), 6 deletions(-) diff --git a/lib/python/_sugar.defs b/lib/python/_sugar.defs index 00659072..47882507 100644 --- a/lib/python/_sugar.defs +++ b/lib/python/_sugar.defs @@ -101,7 +101,7 @@ (define-method save_uri (of-object "SugarBrowser") (c-name "sugar_browser_save_uri") - (return-type "none") + (return-type "gboolean") (parameters '("const-char*" "uri") '("const-char*" "filename") @@ -111,7 +111,7 @@ (define-method save_document (of-object "SugarBrowser") (c-name "sugar_browser_save_document") - (return-type "none") + (return-type "gboolean") (parameters '("const-char*" "filename") ) diff --git a/lib/src/Makefile.am b/lib/src/Makefile.am index 56e1cc4d..cf0a6d66 100644 --- a/lib/src/Makefile.am +++ b/lib/src/Makefile.am @@ -11,6 +11,7 @@ libsugarprivate_la_CPPFLAGS = \ -I$(MOZILLA_INCLUDE_DIR)/pref \ -I$(MOZILLA_INCLUDE_DIR)/uriloader \ -I$(MOZILLA_INCLUDE_DIR)/webbrwsr \ + -I$(MOZILLA_INCLUDE_DIR)/webbrowserpersist \ -DPLUGIN_DIR=\"$(libdir)/mozilla/plugins\" \ -DSHARE_DIR=\"$(pkgdatadir)\" diff --git a/lib/src/sugar-browser.cpp b/lib/src/sugar-browser.cpp index e0d0fd7d..f96a1f4c 100644 --- a/lib/src/sugar-browser.cpp +++ b/lib/src/sugar-browser.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -40,6 +41,8 @@ #include #include #include +#include +#include enum { PROP_0, @@ -484,14 +487,53 @@ sugar_browser_grab_focus(SugarBrowser *browser) } } -void +nsresult +NewURI(const char *uri, nsIURI **result) +{ + nsresult rv; + + nsCOMPtr mgr; + NS_GetServiceManager (getter_AddRefs (mgr)); + NS_ENSURE_TRUE(mgr, FALSE); + + nsCOMPtr ioService; + rv = mgr->GetServiceByContractID ("@mozilla.org/network/io-service;1", + NS_GET_IID (nsIIOService), + getter_AddRefs(ioService)); + NS_ENSURE_SUCCESS(rv, FALSE); + + nsCString cSpec(uri); + return ioService->NewURI (cSpec, nsnull, nsnull, result); +} + +gboolean sugar_browser_save_uri(SugarBrowser *browser, const char *uri, const char *filename) { + nsresult rv; + + nsCOMPtr sourceURI; + rv = NewURI(uri, getter_AddRefs(sourceURI)); + NS_ENSURE_SUCCESS(rv, FALSE); + + nsCOMPtr destFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID); + NS_ENSURE_TRUE(destFile, FALSE); + + destFile->InitWithNativePath(nsCString(filename)); + + nsCOMPtr webBrowser; + gtk_moz_embed_get_nsIWebBrowser(GTK_MOZ_EMBED(browser), + getter_AddRefs(webBrowser)); + NS_ENSURE_TRUE(webBrowser, FALSE); + + nsCOMPtr webPersist = do_QueryInterface (webBrowser); + NS_ENSURE_TRUE(webPersist, FALSE); + + rv = webPersist->SaveURI(sourceURI, nsnull, nsnull, nsnull, nsnull, destFile); } -void +gboolean sugar_browser_save_document(SugarBrowser *browser, const char *filename) { diff --git a/lib/src/sugar-browser.h b/lib/src/sugar-browser.h index 63d1e1dd..138b3dda 100644 --- a/lib/src/sugar-browser.h +++ b/lib/src/sugar-browser.h @@ -63,10 +63,10 @@ void sugar_browser_scroll_pixels (SugarBrowser *browser, int dx, int dy); void sugar_browser_grab_focus (SugarBrowser *browser); -void sugar_browser_save_uri (SugarBrowser *browser, +gboolean sugar_browser_save_uri (SugarBrowser *browser, const char *uri, const char *filename); -void sugar_browser_save_document (SugarBrowser *browser, +gboolean sugar_browser_save_document (SugarBrowser *browser, const char *filename); gboolean sugar_browser_startup (const char *profile_path,