diff options
author | Phil Mellor <phil@monkeyson.info> | 2003-06-01 23:02:56 +0000 |
---|---|---|
committer | Phil Mellor <phil@monkeyson.info> | 2003-06-01 23:02:56 +0000 |
commit | 9f81422aeaca41d8c93e2b69c3c525d84a9c633b (patch) | |
tree | bff8eb0e329f82f907b3d96500d785c92fa74336 /riscos/options.c | |
parent | cbd104704bb11b6141c2b5c3bde88950157e5fcf (diff) | |
download | netsurf-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.c | 170 |
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); +} + |