Introduce new data structure for handling settings
authorQuentin Rameau <quinq@fifth.space>
Sun, 29 Nov 2015 16:16:48 +0000 (17:16 +0100)
committerQuentin Rameau <quinq@fifth.space>
Tue, 5 Jul 2016 11:01:56 +0000 (13:01 +0200)
surf.c

diff --git a/surf.c b/surf.c
index 8f2bfe9..43b1531 100644 (file)
--- a/surf.c
+++ b/surf.c
 
 #define LENGTH(x)               (sizeof(x) / sizeof(x[0]))
 #define CLEANMASK(mask)         (mask & (MODKEY|GDK_SHIFT_MASK))
+#define SETB(p, s)              [p] = (Parameter){ { .b = s }, }
+#define SETI(p, s)              [p] = (Parameter){ { .i = s }, }
+#define SETV(p, s)              [p] = (Parameter){ { .v = s }, }
+#define SETF(p, s)              [p] = (Parameter){ { .f = s }, }
+#define FSETB(p, s)             [p] = (Parameter){ { .b = s }, 1 }
+#define FSETI(p, s)             [p] = (Parameter){ { .i = s }, 1 }
+#define FSETV(p, s)             [p] = (Parameter){ { .v = s }, 1 }
+#define FSETF(p, s)             [p] = (Parameter){ { .f = s }, 1 }
 
 enum { AtomFind, AtomGo, AtomUri, AtomLast };
 
-enum {
+typedef enum {
        CaretBrowsing,
+       CookiePolicies,
+       DiskCache,
+       DNSPrefetch,
+       FontSize,
        FrameFlattening,
        Geolocation,
+       HideBackground,
+       Inspector,
        JavaScript,
+       KioskMode,
        LoadImages,
        Plugins,
+       PreferredLanguages,
+       RunInFullscreen,
        ScrollBars,
-};
+       ShowIndicators,
+       SpellChecking,
+       SpellLanguages,
+       StrictSSL,
+       Style,
+       ZoomLevel,
+       ParameterLast,
+} ParamName;
 
 enum {
        OnDoc   = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT,
@@ -58,9 +82,15 @@ enum {
 typedef union {
        int b;
        int i;
+       float f;
        const void *v;
 } Arg;
 
+typedef struct {
+       Arg val;
+       int force;
+} Parameter;
+
 typedef struct Client {
        GtkWidget *win;
        WebKitWebView *view;
@@ -91,6 +121,12 @@ typedef struct {
        unsigned int stopevent;
 } Button;
 
+typedef struct {
+       const char *uri;
+       Parameter config[ParameterLast];
+       regex_t re;
+} UriParameters;
+
 typedef struct {
        char *regex;
        char *style;