diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2007-03-13 13:07:03 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <mpg@redhat.com> | 2007-03-13 13:07:03 (GMT) |
commit | c9bdd4418c49ad0debedcd311ab5d0683978162f (patch) | |
tree | d6f80da4bf0d790772ae0c7270ad8c00c48e08f4 /lib | |
parent | 070c77c67ff7e906a6f4291e1f9883701d0d812f (diff) |
Implement save_uri. Add boolean return arguments.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/python/_sugar.defs | 4 | ||||
-rw-r--r-- | lib/src/Makefile.am | 1 | ||||
-rw-r--r-- | lib/src/sugar-browser.cpp | 46 | ||||
-rw-r--r-- | 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 0065907..4788250 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 56e1cc4..cf0a6d6 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 e0d0fd7..f96a1f4 100644 --- a/lib/src/sugar-browser.cpp +++ b/lib/src/sugar-browser.cpp @@ -32,6 +32,7 @@ #include <nsILocalFile.h> #include <nsIWebBrowser.h> #include <nsIWebBrowserFocus.h> +#include <nsIWebBrowserPersist.h> #include <nsIDOMWindow.h> #include <nsIDOMMouseEvent.h> #include <nsIGenericFactory.h> @@ -40,6 +41,8 @@ #include <nsIDOMNode.h> #include <nsIDOMEventTarget.h> #include <nsIDOMHTMLImageElement.h> +#include <nsIIOService.h> +#include <nsComponentManagerUtils.h> enum { PROP_0, @@ -484,14 +487,53 @@ sugar_browser_grab_focus(SugarBrowser *browser) } } -void +nsresult +NewURI(const char *uri, nsIURI **result) +{ + nsresult rv; + + nsCOMPtr<nsIServiceManager> mgr; + NS_GetServiceManager (getter_AddRefs (mgr)); + NS_ENSURE_TRUE(mgr, FALSE); + + nsCOMPtr<nsIIOService> 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<nsIURI> sourceURI; + rv = NewURI(uri, getter_AddRefs(sourceURI)); + NS_ENSURE_SUCCESS(rv, FALSE); + + nsCOMPtr<nsILocalFile> destFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID); + NS_ENSURE_TRUE(destFile, FALSE); + + destFile->InitWithNativePath(nsCString(filename)); + + nsCOMPtr<nsIWebBrowser> webBrowser; + gtk_moz_embed_get_nsIWebBrowser(GTK_MOZ_EMBED(browser), + getter_AddRefs(webBrowser)); + NS_ENSURE_TRUE(webBrowser, FALSE); + + nsCOMPtr<nsIWebBrowserPersist> 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 63d1e1d..138b3dd 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, |