summaryrefslogtreecommitdiff
path: root/riscos/options.c
diff options
context:
space:
mode:
authorPhil Mellor <phil@monkeyson.info>2003-06-01 23:02:56 +0000
committerPhil Mellor <phil@monkeyson.info>2003-06-01 23:02:56 +0000
commit9f81422aeaca41d8c93e2b69c3c525d84a9c633b (patch)
treebff8eb0e329f82f907b3d96500d785c92fa74336 /riscos/options.c
parentcbd104704bb11b6141c2b5c3bde88950157e5fcf (diff)
downloadnetsurf-9f81422aeaca41d8c93e2b69c3c525d84a9c633b.tar.gz
netsurf-9f81422aeaca41d8c93e2b69c3c525d84a9c633b.tar.bz2
[project @ 2003-06-01 23:02:56 by monkeyson]
Configuration windows added. HTTP Proxy support (untested). svn path=/import/netsurf/; revision=145
Diffstat (limited to 'riscos/options.c')
-rw-r--r--riscos/options.c170
1 files changed, 170 insertions, 0 deletions
diff --git a/riscos/options.c b/riscos/options.c
new file mode 100644
index 000000000..26ae0f6bc
--- /dev/null
+++ b/riscos/options.c
@@ -0,0 +1,170 @@
+#include "netsurf/desktop/options.h"
+#include <stdio.h>
+#include "oslib/messagetrans.h"
+#include "netsurf/utils/log.h"
+
+struct options OPTIONS;
+
+char* lookup(messagetrans_control_block* cb, const char* token, const char* deflt)
+{
+ int used;
+ char buffer[256];
+
+ LOG(("Looking up token '%s'",token));
+
+ messagetrans_lookup(cb, token, buffer, 256, 0,0,0,0, &used);
+ if (used > 0)
+ {
+ return strdup(buffer);
+ }
+ else
+ return strdup(deflt);
+}
+
+int lookup_yesno(messagetrans_control_block* cb, const char* token, const char* deflt)
+{
+ char* find;
+ LOG(("yesno token '%s' (default '%s')", token, deflt));
+ find = lookup(cb, token, deflt);
+ if (strcmp(find, "Y") == 0)
+ {
+ xfree(find);
+ return -1;
+ }
+ xfree(find);
+ return 0;
+}
+
+int lookup_i(messagetrans_control_block* cb, const char* token, const char* deflt)
+{
+ char* find = lookup(cb, token, deflt);
+ int ret = atoi(find);
+ xfree(find);
+ return ret;
+}
+
+const char* yesno(int q)
+{
+ if (q)
+ return "Y";
+ else
+ return "N";
+}
+
+void options_write(struct options* opt, char* filename)
+{
+ char* fn;
+ FILE* f;
+
+ if (filename == NULL)
+ fn = (char*) "<NetSurf$Dir>.Choices";
+ else
+ fn = filename;
+
+ f = fopen(fn, "w");
+ if (f != NULL)
+ {
+ fprintf(f, "# General options - for any platform\n# Proxy\n");
+ fprintf(f, "USE_HTTP:%s\n", yesno(opt->http));
+ fprintf(f, "HTTP_PROXY:%s\n", opt->http_proxy);
+ fprintf(f, "HTTP_PORT:%d\n", opt->http_port);
+
+ fprintf(f, "\n# RISC OS specific options\n# Browser\n");
+ fprintf(f, "RO_MOUSE_GESTURES:%s\n", yesno(opt->use_mouse_gestures));
+ fprintf(f, "RO_TEXT_SELECTION:%s\n", yesno(opt->allow_text_selection));
+ fprintf(f, "RO_FORM_ELEMENTS:%s\n", yesno(opt->use_riscos_elements));
+ fprintf(f, "RO_SHOW_TOOLBAR:%s\n", yesno(opt->show_toolbar));
+ fprintf(f, "RO_SHOW_PRINT:%s\n", yesno(opt->show_print_preview));
+ fprintf(f, "\n# Theme\n");
+ fprintf(f, "RO_THEME:%s\n", opt->theme);
+ }
+}
+
+void options_init(struct options* opt)
+{
+ opt->http = 0;
+ opt->http_proxy = NULL;
+ opt->http_port = 8080;
+ opt->use_mouse_gestures = 0;
+ opt->allow_text_selection = 1;
+ opt->use_riscos_elements = 1;
+ opt->show_toolbar = 1;
+ opt->show_print_preview = 0;
+ opt->theme = strdup("Default");
+}
+
+void options_read(struct options* opt, char* filename)
+{
+ messagetrans_control_block cb;
+ messagetrans_file_flags flags;
+ char* data;
+ char* fn;
+ int size;
+
+ LOG(("Testing filename"));
+ if (filename == NULL)
+ fn = "<NetSurf$Dir>.Choices";
+ else
+ fn = filename;
+
+ LOG(("Getting file info"));
+ if (xmessagetrans_file_info(fn, &flags, &size) != NULL)
+ return;
+
+ LOG(("Allocating %d bytes", size));
+ data = xcalloc(size, sizeof(char));
+ messagetrans_open_file(&cb, fn, data);
+
+ opt->http = lookup_yesno(&cb, "USE_HTTP", "N");
+ xfree(opt->http_proxy);
+ opt->http_proxy = lookup(&cb, "HTTP_PROXY", "");
+ opt->http_port = lookup_i(&cb, "HTTP_PORT", "8080");
+
+ opt->use_mouse_gestures = lookup_yesno(&cb, "RO_MOUSE_GESTURES", "N");
+ opt->allow_text_selection = lookup_yesno(&cb, "RO_TEXT_SELECTION", "Y");
+ opt->use_riscos_elements = lookup_yesno(&cb, "RO_FORM_ELEMENTS", "Y");
+ opt->show_toolbar = lookup_yesno(&cb, "RO_SHOW_TOOLBAR", "Y");
+ opt->show_print_preview = lookup_yesno(&cb, "RO_SHOW_PRINT", "N");
+
+ xfree(opt->theme);
+ opt->theme = lookup(&cb, "RO_THEME", "Default");
+}
+
+void options_to_ro(struct options* opt, struct ro_choices* ro)
+{
+ ro->browser.use_mouse_gestures = opt->use_mouse_gestures;
+ ro->browser.allow_text_selection = opt->allow_text_selection;
+ ro->browser.use_riscos_elements = opt->use_riscos_elements;
+ ro->browser.show_toolbar = opt->show_toolbar;
+ ro->browser.show_print_preview = opt->show_print_preview;
+
+ ro->proxy.http = opt->http;
+ if (opt->http_proxy != NULL)
+ strcpy(ro->proxy.http_proxy, opt->http_proxy);
+ else
+ strcpy(ro->proxy.http_proxy, "");
+ ro->proxy.http_port = opt->http_port;
+
+ if (opt->theme != NULL)
+ strcpy(ro->theme.name, opt->theme);
+ else
+ strcpy(ro->theme.name, "Default");
+}
+
+void ro_to_options(struct ro_choices* ro, struct options* opt)
+{
+ opt->use_mouse_gestures = ro->browser.use_mouse_gestures;
+ opt->allow_text_selection = ro->browser.allow_text_selection;
+ opt->use_riscos_elements = ro->browser.use_riscos_elements;
+ opt->show_toolbar = ro->browser.show_toolbar;
+ opt->show_print_preview = ro->browser.show_print_preview;
+
+ opt->http = ro->proxy.http;
+ xfree(opt->http_proxy);
+ opt->http_proxy = strdup(ro->proxy.http_proxy);
+ opt->http_port = ro->proxy.http_port;
+
+ xfree(opt->theme);
+ opt->theme = strdup(ro->theme.name);
+}
+