summaryrefslogtreecommitdiff
path: root/desktop/options.h
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2012-03-22 09:34:34 +0000
committerVincent Sanders <vince@netsurf-browser.org>2012-03-22 09:34:34 +0000
commit1490b52a6b96b6a69a0c4fe9e0515dc717425128 (patch)
tree8caba44a9da98e6cebf4f188e3232534b1596a4d /desktop/options.h
parent0797bf5a5731b2c8d55105b453530584ea4e1f5b (diff)
downloadnetsurf-1490b52a6b96b6a69a0c4fe9e0515dc717425128.tar.gz
netsurf-1490b52a6b96b6a69a0c4fe9e0515dc717425128.tar.bz2
NetSurf options rework (a=vince r=daniels,jmb)
svn path=/trunk/netsurf/; revision=13548
Diffstat (limited to 'desktop/options.h')
-rw-r--r--desktop/options.h180
1 files changed, 79 insertions, 101 deletions
diff --git a/desktop/options.h b/desktop/options.h
index 42375f9ef..b96aaec52 100644
--- a/desktop/options.h
+++ b/desktop/options.h
@@ -35,116 +35,94 @@
#ifndef _NETSURF_DESKTOP_OPTIONS_H_
#define _NETSURF_DESKTOP_OPTIONS_H_
+#define _NETSURF_DESKTOP_OPTIONS_INCLUDING_
+
#include <stdbool.h>
#include <stdio.h>
+
#include "desktop/plot_style.h"
+#include "desktop/options_main.h"
+
+#if defined(riscos)
+#include "riscos/options.h"
+#elif defined(nsgtk)
+#include "gtk/options.h"
+#elif defined(nsbeos)
+#include "beos/options.h"
+#elif defined(nsamiga)
+#include "amiga/options.h"
+#elif defined(nsframebuffer)
+#include "framebuffer/options.h"
+#elif defined(nsatari)
+#include "atari/options.h"
+#elif defined(nsmonkey)
+#include "monkey/options.h"
+#else
+#define NSOPTION_EXTRA_DEFINE
+#define NSOPTION_EXTRA_DEFAULTS
+#define NSOPTION_EXTRA_TABLE
+#endif
+
+/* allow the colour defaults to be overidden by the frontends */
+#ifndef NSOPTION_SYS_COLOUR_DEFAULTS
+#define NSOPTION_SYS_COLOUR_DEFAULTS NSOPTION_MAIN_SYS_COLOUR_DEFAULTS
+#endif
+
+#undef _NETSURF_DESKTOP_OPTIONS_INCLUDING_
+
enum { OPTION_HTTP_PROXY_AUTH_NONE = 0,
OPTION_HTTP_PROXY_AUTH_BASIC = 1,
OPTION_HTTP_PROXY_AUTH_NTLM = 2 };
-extern bool option_http_proxy;
-extern char *option_http_proxy_host;
-extern int option_http_proxy_port;
-extern int option_http_proxy_auth;
-extern char *option_http_proxy_auth_user;
-extern char *option_http_proxy_auth_pass;
-extern int option_font_size;
-extern int option_font_min_size;
-extern char *option_accept_language;
-extern char *option_accept_charset;
-extern int option_memory_cache_size;
-extern int option_disc_cache_age;
-extern bool option_block_ads;
-extern int option_minimum_gif_delay;
-extern bool option_send_referer;
-extern bool option_foreground_images;
-extern bool option_background_images;
-extern bool option_animate_images;
-extern int option_expire_url;
-extern int option_font_default; /* a css_font_family */
-extern char *option_font_sans;
-extern char *option_font_serif;
-extern char *option_font_mono;
-extern char *option_font_cursive;
-extern char *option_font_fantasy;
-extern char *option_ca_bundle;
-extern char *option_ca_path;
-extern char *option_cookie_file;
-extern char *option_cookie_jar;
-extern char *option_homepage_url;
-extern bool option_search_url_bar;
-extern int option_search_provider;
-extern bool option_target_blank;
-extern bool option_button_2_tab;
-extern bool option_url_suggestion;
-extern int option_window_x;
-extern int option_window_y;
-extern int option_window_width;
-extern int option_window_height;
-extern int option_window_screen_width;
-extern int option_window_screen_height;
-extern int option_toolbar_status_width;
-extern int option_scale;
-extern bool option_incremental_reflow;
-extern unsigned int option_min_reflow_period;
-extern bool option_core_select_menu;
-
-extern int option_margin_top;
-extern int option_margin_bottom;
-extern int option_margin_left;
-extern int option_margin_right;
-extern int option_export_scale;
-extern bool option_suppress_images;
-extern bool option_remove_backgrounds;
-extern bool option_enable_loosening;
-extern bool option_enable_PDF_compression;
-extern bool option_enable_PDF_password;
#define DEFAULT_MARGIN_TOP_MM 10
#define DEFAULT_MARGIN_BOTTOM_MM 10
#define DEFAULT_MARGIN_LEFT_MM 10
#define DEFAULT_MARGIN_RIGHT_MM 10
#define DEFAULT_EXPORT_SCALE 0.7
+#ifdef riscos
+#define DEFAULT_REFLOW_PERIOD 100 /* time in cs */
+#else
+#define DEFAULT_REFLOW_PERIOD 25 /* time in cs */
+#endif
-/* Fetcher configuration. */
-extern int option_max_fetchers;
-extern int option_max_fetchers_per_host;
-extern int option_max_cached_fetch_handles;
-extern bool option_suppress_curl_debug;
-
-/* Interface colours */
-extern colour option_gui_colour_bg_1;
-extern colour option_gui_colour_fg_1;
-extern colour option_gui_colour_fg_2;
-
-extern colour option_sys_colour_ActiveBorder;
-extern colour option_sys_colour_ActiveCaption;
-extern colour option_sys_colour_AppWorkspace;
-extern colour option_sys_colour_Background;
-extern colour option_sys_colour_ButtonFace;
-extern colour option_sys_colour_ButtonHighlight;
-extern colour option_sys_colour_ButtonShadow;
-extern colour option_sys_colour_ButtonText;
-extern colour option_sys_colour_CaptionText;
-extern colour option_sys_colour_GrayText;
-extern colour option_sys_colour_Highlight;
-extern colour option_sys_colour_HighlightText;
-extern colour option_sys_colour_InactiveBorder;
-extern colour option_sys_colour_InactiveCaption;
-extern colour option_sys_colour_InactiveCaptionText;
-extern colour option_sys_colour_InfoBackground;
-extern colour option_sys_colour_InfoText;
-extern colour option_sys_colour_Menu;
-extern colour option_sys_colour_MenuText;
-extern colour option_sys_colour_Scrollbar;
-extern colour option_sys_colour_ThreeDDarkShadow;
-extern colour option_sys_colour_ThreeDFace;
-extern colour option_sys_colour_ThreeDHighlight;
-extern colour option_sys_colour_ThreeDLightShadow;
-extern colour option_sys_colour_ThreeDShadow;
-extern colour option_sys_colour_Window;
-extern colour option_sys_colour_WindowFrame;
-extern colour option_sys_colour_WindowText;
+struct ns_options {
+ NSOPTION_MAIN_DEFINE;
+ NSOPTION_EXTRA_DEFINE;
+};
+
+/* global option struct */
+extern struct ns_options nsoptions;
+
+/* acessors */
+#define nsoption_bool(OPTION) (nsoptions.OPTION)
+#define nsoption_int(OPTION) (nsoptions.OPTION)
+#define nsoption_charp(OPTION) (nsoptions.OPTION)
+#define nsoption_colour(OPTION) (nsoptions.OPTION)
+
+#define nsoption_set_bool(OPTION, VALUE) nsoptions.OPTION = VALUE
+#define nsoption_set_int(OPTION, VALUE) nsoptions.OPTION = VALUE
+#define nsoption_set_colour(OPTION, VALUE) nsoptions.OPTION = VALUE
+#define nsoption_set_charp(OPTION, VALUE) do { \
+ if (nsoptions.OPTION != NULL) { \
+ free(nsoptions.OPTION); \
+ } \
+ nsoptions.OPTION = VALUE; \
+ if (*nsoptions.OPTION == 0) { \
+ free(nsoptions.OPTION); \
+ nsoptions.OPTION = NULL; \
+ } \
+ } while (0)
+
+#define nsoption_setnull_charp(OPTION, VALUE) do { \
+ if (nsoptions.OPTION == NULL) { \
+ nsoptions.OPTION = VALUE; \
+ if (*nsoptions.OPTION == 0) { \
+ free(nsoptions.OPTION); \
+ nsoptions.OPTION = NULL; \
+ } \
+ } \
+ } while (0)
/**
@@ -155,7 +133,7 @@ extern colour option_sys_colour_WindowText;
* Option variables corresponding to lines in the file are updated. Missing
* options are unchanged. If the file fails to open, options are unchanged.
*/
-void options_read(const char *path);
+void nsoption_read(const char *path);
/**
* Save options to a file.
@@ -164,14 +142,14 @@ void options_read(const char *path);
*
* Errors are ignored.
*/
-void options_write(const char *path);
+void nsoption_write(const char *path);
/**
* Dump user options to stream
*
* \param outf output stream to dump options to.
*/
-void options_dump(FILE *outf);
+void nsoption_dump(FILE *outf);
/**
* Fill a buffer with an option using a format.
@@ -189,13 +167,13 @@ void options_dump(FILE *outf);
* \param fmt The format string.
* \return The number of bytes written to \a string or -1 on error
*/
-int options_snoptionf(char *string, size_t size, unsigned int option,
+int nsoption_snoptionf(char *string, size_t size, unsigned int option,
const char *fmt);
/**
* Process commandline and set options approriately.
*/
-void options_commandline(int *pargc, char **argv);
+void nsoption_commandline(int *pargc, char **argv);
#endif