summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/gtk_gui.c28
-rw-r--r--render/html.c14
-rw-r--r--render/html.h3
-rw-r--r--riscos/gui.c13
4 files changed, 45 insertions, 13 deletions
diff --git a/gtk/gtk_gui.c b/gtk/gtk_gui.c
index 1977c5f43..07e89e11e 100644
--- a/gtk/gtk_gui.c
+++ b/gtk/gtk_gui.c
@@ -16,19 +16,43 @@
#include "netsurf/desktop/browser.h"
#include "netsurf/desktop/gui.h"
#include "netsurf/desktop/netsurf.h"
+#include "netsurf/desktop/options.h"
#include "netsurf/render/box.h"
#include "netsurf/render/form.h"
+#include "netsurf/render/html.h"
#include "netsurf/utils/messages.h"
#include "netsurf/utils/utils.h"
bool gui_in_multitask = false;
+char *default_stylesheet_url;
+char *adblock_stylesheet_url;
+
void gui_init(int argc, char** argv)
{
+ char *home;
+ char buf[1024];
+
+ /* All our resources are stored in ~/.netsurf/ */
+ home = getenv("HOME");
+ if (!home)
+ die("Couldn't find HOME");
+
gtk_init(&argc, &argv);
- messages_load("messages");
+
+ snprintf(buf, sizeof buf, "%s/.netsurf/Choices", home);
+ options_read(buf);
+
+ snprintf(buf, sizeof buf, "%s/.netsurf/messages", home);
+ messages_load(buf);
+
+ /* set up stylesheet urls */
+ snprintf(buf, sizeof buf, "file:///%s/.netsurf/Default.css", home);
+ default_stylesheet_url = strdup(buf);
+ snprintf(buf, sizeof buf, "file:///%s/.netsurf/AdBlock.css", home);
+ adblock_stylesheet_url = strdup(buf);
}
@@ -55,6 +79,8 @@ void gui_multitask(void)
void gui_quit(void)
{
+ free(default_stylesheet_url);
+ free(adblock_stylesheet_url);
}
diff --git a/render/html.c b/render/html.c
index abbbb92b9..62f75aadf 100644
--- a/render/html.c
+++ b/render/html.c
@@ -20,9 +20,7 @@
#include "netsurf/content/fetch.h"
#include "netsurf/content/fetchcache.h"
#include "netsurf/desktop/imagemap.h"
-#ifdef riscos
#include "netsurf/desktop/gui.h"
-#endif
#include "netsurf/desktop/options.h"
#include "netsurf/render/box.h"
#include "netsurf/render/font.h"
@@ -337,11 +335,7 @@ void html_find_stylesheets(struct content *c, xmlNode *head)
c->active = 0;
c->data.html.stylesheet_content[STYLESHEET_BASE] = fetchcache(
-#ifdef riscos
- "file:/<NetSurf$Dir>/Resources/CSS",
-#else
- "file:///home/james/Projects/netsurf/CSS",
-#endif
+ default_stylesheet_url,
html_convert_css_callback, c,
(void *) STYLESHEET_BASE, c->width, c->height,
true, 0, 0, false);
@@ -353,11 +347,7 @@ void html_find_stylesheets(struct content *c, xmlNode *head)
if (option_block_ads) {
c->data.html.stylesheet_content[STYLESHEET_ADBLOCK] = fetchcache(
-#ifdef riscos
- "file:/<NetSurf$Dir>/Resources/AdBlock",
-#else
- "file:///home/james/Projects/netsurf/AdBlock",
-#endif
+ adblock_stylesheet_url,
html_convert_css_callback, c,
(void *) STYLESHEET_ADBLOCK, c->width,
c->height, true, 0, 0, false);
diff --git a/render/html.h b/render/html.h
index ec27dc531..c91f89f1f 100644
--- a/render/html.h
+++ b/render/html.h
@@ -33,6 +33,9 @@ struct plotters;
#define STYLESHEET_STYLE 2 /* <style> elements (not cached) */
#define STYLESHEET_START 3 /* start of document stylesheets */
+extern char *default_stylesheet_url;
+extern char *adblock_stylesheet_url;
+
/** Data specific to CONTENT_HTML. */
struct content_html_data {
htmlParserCtxt *parser; /**< HTML parser context. */
diff --git a/riscos/gui.c b/riscos/gui.c
index 7edaa2a6f..745220a68 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -68,6 +68,9 @@ int __riscosify_control = __RISCOSIFY_NO_SUFFIX |
char *NETSURF_DIR;
+char *default_stylesheet_url;
+char *adblock_stylesheet_url;
+
/** The pointer is over a window which is tracking mouse movement. */
static bool gui_track = false;
/** Handle of window which the pointer is over. */
@@ -196,6 +199,9 @@ void gui_init(int argc, char** argv)
messages_load(path);
messages_load("<NetSurf$Dir>.Resources.LangNames");
+ default_stylesheet_url = strdup("file:/<NetSurf$Dir>/Resources/CSS");
+ adblock_stylesheet_url = strdup("file:/<NetSurf$Dir>/Resources/AdBlock");
+
/* Totally pedantic, but base the taskname on the build options.
*/
#ifndef ncos
@@ -516,6 +522,8 @@ void gui_quit(void)
ro_gui_history_quit();
free(gui_sprites);
xwimp_close_down(task_handle);
+ free(default_stylesheet_url);
+ free(adblock_stylesheet_url);
xhourglass_off();
}
@@ -1484,6 +1492,11 @@ void ro_gui_open_help_page(const char *page)
void ro_gui_view_source(struct content *content)
{
+ if (!content || !content->source_data) {
+ warn_user("MiscError", "No document source");
+ return;
+ }
+
xosfile_save_stamped("<Wimp$Scrap>", 0xfff,
content->source_data,
content->source_data + content->source_size);