Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarco 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)
commitc9bdd4418c49ad0debedcd311ab5d0683978162f (patch)
treed6f80da4bf0d790772ae0c7270ad8c00c48e08f4 /lib
parent070c77c67ff7e906a6f4291e1f9883701d0d812f (diff)
Implement save_uri. Add boolean return arguments.
Diffstat (limited to 'lib')
-rw-r--r--lib/python/_sugar.defs4
-rw-r--r--lib/src/Makefile.am1
-rw-r--r--lib/src/sugar-browser.cpp46
-rw-r--r--lib/src/sugar-browser.h4
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,