diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/blocks/fs.c | 2 | ||||
| -rw-r--r-- | src/blocks/slider.c | 41 | ||||
| -rw-r--r-- | src/config.c | 79 | ||||
| -rw-r--r-- | src/config.h | 19 |
4 files changed, 81 insertions, 60 deletions
diff --git a/src/blocks/fs.c b/src/blocks/fs.c index 1f92776..f7feeeb 100644 --- a/src/blocks/fs.c +++ b/src/blocks/fs.c @@ -175,7 +175,7 @@ static int block_fs_validate(block_t *block, config_t *config) } static const config_entry_t block_fs_entries[] = { - { "path", CONFIG_STRING, NULL, offsetof(block_fs_t, path) }, + { "path", CONFIG_STRING, NULL, NULL, offsetof(block_fs_t, path) }, { 0 }, }; diff --git a/src/blocks/slider.c b/src/blocks/slider.c index 5246162..fe8ee28 100644 --- a/src/blocks/slider.c +++ b/src/blocks/slider.c @@ -190,6 +190,7 @@ static void block_slider_event(layout_t *layout, config_t *config, event_t event int bar_width = slider->width; int bar_height = slider->height; + // NOTE: Consider disabling these actions for non seekable sliders bool clicked = check_capsule(event.x, event.y, bar_x, bar_y, bar_width, bar_height); action_t *action = layout->block->actions[event.type]; @@ -307,26 +308,26 @@ static config_enum_t knob_shape_enum[] = { static const config_entry_t block_slider_entries[] = { // TODO: Ugly names - { "bar-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, bar_color) }, - { "bar-line-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, line_color) }, - { "bar-bg-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, bg_color) }, - { "bar-height", CONFIG_UINT, NULL, offsetof(block_slider_t, height) }, - { "bar-width", CONFIG_UINT, NULL, offsetof(block_slider_t, width) }, - { "bar-line-width", CONFIG_UINT, NULL, offsetof(block_slider_t, line_width) }, - { "bar-value", CONFIG_INT, NULL, offsetof(block_slider_t, value) }, - { "seekable", CONFIG_BOOL, NULL, offsetof(block_slider_t, seekable) }, - { "knob", CONFIG_ENUM, knob_shape_enum, offsetof(block_slider_t, knob) }, - { "knob-height", CONFIG_UINT, NULL, offsetof(block_slider_t, knob_height) }, - { "knob-width", CONFIG_UINT, NULL, offsetof(block_slider_t, knob_width) }, - { "knob-line-width", CONFIG_UINT, NULL, offsetof(block_slider_t, knob_line_width) }, - { "knob-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, knob_color) }, - { "knob-line-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, knob_line_color) }, - { "knob-x-offset", CONFIG_INT, NULL, offsetof(block_slider_t, knob_x_offset) }, - { "knob-y-offset", CONFIG_INT, NULL, offsetof(block_slider_t, knob_y_offset) }, - { "knob-rotation", CONFIG_DOUBLE, NULL, offsetof(block_slider_t, knob_rotation) }, - { "left-click-bar", CONFIG_STRING, NULL, offsetof(block_slider_t, left_click) }, - { "middle-click-bar", CONFIG_STRING, NULL, offsetof(block_slider_t, middle_click) }, - { "right-click-bar", CONFIG_STRING, NULL, offsetof(block_slider_t, right_click) }, + { "bar-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, bar_color) }, + { "bar-line-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, line_color) }, + { "bar-bg-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, bg_color) }, + { "bar-height", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, height) }, + { "bar-width", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, width) }, + { "bar-line-width", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, line_width) }, + { "bar-value", CONFIG_INT, NULL, NULL, offsetof(block_slider_t, value) }, + { "seekable", CONFIG_BOOL, NULL, NULL, offsetof(block_slider_t, seekable) }, + { "knob", CONFIG_ENUM, knob_shape_enum, NULL, offsetof(block_slider_t, knob) }, + { "knob-height", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, knob_height) }, + { "knob-width", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, knob_width) }, + { "knob-line-width", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, knob_line_width) }, + { "knob-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, knob_color) }, + { "knob-line-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, knob_line_color) }, + { "knob-x-offset", CONFIG_INT, NULL, NULL, offsetof(block_slider_t, knob_x_offset) }, + { "knob-y-offset", CONFIG_INT, NULL, NULL, offsetof(block_slider_t, knob_y_offset) }, + { "knob-rotation", CONFIG_DOUBLE, NULL, NULL, offsetof(block_slider_t, knob_rotation) }, + { "left-click-bar", CONFIG_STRING, NULL, NULL, offsetof(block_slider_t, left_click) }, + { "middle-click-bar", CONFIG_STRING, NULL, NULL, offsetof(block_slider_t, middle_click) }, + { "right-click-bar", CONFIG_STRING, NULL, NULL, offsetof(block_slider_t, right_click) }, { 0 }, }; diff --git a/src/config.c b/src/config.c index 6f66cd4..43b7928 100644 --- a/src/config.c +++ b/src/config.c @@ -15,20 +15,20 @@ #include "any_ini.h" const config_entry_t bar_entries[] = { - { "override-redirect", CONFIG_BOOL, NULL, offsetof(config_t, override_redirect) }, - { "action-strict-run", CONFIG_BOOL, NULL, offsetof(config_t, action_strict_run) }, - { "action-strict-set", CONFIG_BOOL, NULL, offsetof(config_t, action_strict_set) }, - { "action-fail-fast", CONFIG_BOOL, NULL, offsetof(config_t, action_failfast) }, - { "wm-name", CONFIG_STRING, NULL, offsetof(config_t, wm_name) }, - { "wm-struts", CONFIG_BOOL, NULL, offsetof(config_t, wm_struts) }, - { "background", CONFIG_GRADIENT, NULL, offsetof(config_t, background) }, - { "font", CONFIG_STRING, NULL, offsetof(config_t, font) }, - { "monitor", CONFIG_STRING, NULL, offsetof(config_t, monitor) }, - { "width", CONFIG_UINT, NULL, offsetof(config_t, width) }, - { "height", CONFIG_UINT, NULL, offsetof(config_t, height) }, - { "x-offset", CONFIG_UINT, NULL, offsetof(config_t, x_offset) }, - { "y-offset", CONFIG_UINT, NULL, offsetof(config_t, y_offset) }, - { "scale", CONFIG_DOUBLE, NULL, offsetof(config_t, scale) }, + { "override-redirect", CONFIG_BOOL, NULL, NULL, offsetof(config_t, override_redirect) }, + { "action-strict-run", CONFIG_BOOL, NULL, NULL, offsetof(config_t, action_strict_run) }, + { "action-strict-set", CONFIG_BOOL, NULL, NULL, offsetof(config_t, action_strict_set) }, + { "action-fail-fast", CONFIG_BOOL, NULL, NULL, offsetof(config_t, action_failfast) }, + { "wm-name", CONFIG_STRING, NULL, NULL, offsetof(config_t, wm_name) }, + { "wm-struts", CONFIG_BOOL, NULL, NULL, offsetof(config_t, wm_struts) }, + { "background", CONFIG_GRADIENT, NULL, NULL, offsetof(config_t, background) }, + { "font", CONFIG_STRING, NULL, NULL, offsetof(config_t, font) }, + { "monitor", CONFIG_STRING, NULL, NULL, offsetof(config_t, monitor) }, + { "width", CONFIG_UINT, NULL, NULL, offsetof(config_t, width) }, + { "height", CONFIG_UINT, NULL, NULL, offsetof(config_t, height) }, + { "x-offset", CONFIG_UINT, NULL, NULL, offsetof(config_t, x_offset) }, + { "y-offset", CONFIG_UINT, NULL, NULL, offsetof(config_t, y_offset) }, + { "scale", CONFIG_DOUBLE, NULL, NULL, offsetof(config_t, scale) }, { 0 }, }; @@ -40,39 +40,39 @@ const config_enum_t text_align_enum[] = { }; const config_entry_t block_entries[] = { - { "hidden", CONFIG_BOOL, NULL, offsetof(block_t, hidden) }, - { "color", CONFIG_GRADIENT, NULL, offsetof(block_t, bg_color) }, - { "line-color", CONFIG_GRADIENT, NULL, offsetof(block_t, line_color) }, - { "line-width", CONFIG_UINT, NULL, offsetof(block_t, line_width) }, - { "x-padding", CONFIG_UINT, NULL, offsetof(block_t, x_padding) }, - { "y-padding", CONFIG_UINT, NULL, offsetof(block_t, y_padding) }, - { "min-width", CONFIG_UINT, NULL, offsetof(block_t, min_width) }, - { "max-width", CONFIG_UINT, NULL, offsetof(block_t, max_width) }, - { "interval", CONFIG_TIME, NULL, offsetof(block_t, update_interval) }, - { "trigger", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_TRIGGER]) }, - { "left-click", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_LEFT_CLICK]) }, - { "middle-click", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_MIDDLE_CLICK]) }, - { "right-click", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_RIGHT_CLICK]) }, - { "scroll-up", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_SCROLL_UP]) }, - { "scroll-down", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_SCROLL_DOWN]) }, - { "hover-start", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_HOVER_START]) }, - { "hover-move", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_HOVER_MOVE]) }, - { "hover-stop", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_HOVER_STOP]) }, + { "hidden", CONFIG_BOOL, NULL, NULL, offsetof(block_t, hidden) }, + { "color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_t, bg_color) }, + { "line-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_t, line_color) }, + { "line-width", CONFIG_UINT, NULL, NULL, offsetof(block_t, line_width) }, + { "x-padding", CONFIG_UINT, NULL, NULL, offsetof(block_t, x_padding) }, + { "y-padding", CONFIG_UINT, NULL, NULL, offsetof(block_t, y_padding) }, + { "min-width", CONFIG_UINT, NULL, NULL, offsetof(block_t, min_width) }, + { "max-width", CONFIG_UINT, NULL, NULL, offsetof(block_t, max_width) }, + { "interval", CONFIG_TIME, NULL, NULL, offsetof(block_t, update_interval) }, + { "trigger", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_TRIGGER]) }, + { "left-click", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_LEFT_CLICK]) }, + { "middle-click", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_MIDDLE_CLICK]) }, + { "right-click", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_RIGHT_CLICK]) }, + { "scroll-up", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_SCROLL_UP]) }, + { "scroll-down", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_SCROLL_DOWN]) }, + { "hover-start", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_HOVER_START]) }, + { "hover-move", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_HOVER_MOVE]) }, + { "hover-stop", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_HOVER_STOP]) }, { 0 }, }; const config_entry_t block_group_entries[] = { - { "spacing", CONFIG_UINT, NULL, offsetof(block_group_t, spacing) }, - { "blocks", CONFIG_LIST, NULL, offsetof(block_group_t, children) }, - { "collapse", CONFIG_BOOL, NULL, offsetof(block_group_t, collapse) }, + { "spacing", CONFIG_UINT, NULL, NULL, offsetof(block_group_t, spacing) }, + { "blocks", CONFIG_LIST, NULL, NULL, offsetof(block_group_t, children) }, + { "collapse", CONFIG_BOOL, NULL, NULL, offsetof(block_group_t, collapse) }, { 0 }, }; const config_entry_t block_text_entries[] = { - { "text", CONFIG_STRING, NULL, offsetof(block_text_t, text) }, - { "text-color", CONFIG_COLOR, NULL, offsetof(block_text_t, text_color) }, - { "text-size", CONFIG_UINT, NULL, offsetof(block_text_t, text_size) }, - { "text-align", CONFIG_ENUM, text_align_enum, offsetof(block_text_t, text_size) }, + { "text", CONFIG_STRING, NULL, NULL, offsetof(block_text_t, text) }, + { "text-color", CONFIG_COLOR, NULL, NULL, offsetof(block_text_t, text_color) }, + { "text-size", CONFIG_UINT, NULL, NULL, offsetof(block_text_t, text_size) }, + { "text-align", CONFIG_ENUM, text_align_enum, NULL, offsetof(block_text_t, text_size) }, { 0 }, }; @@ -710,6 +710,7 @@ int config_read(config_t *config, FILE *file) case CONFIG_SUCCESS: if (result != NULL && found != NULL) { result += found->offset; + log_value_debug("Parsed entry", "s:key", key, "g:value", config_formatters[found->type], result, diff --git a/src/config.h b/src/config.h index 699fa83..427ad40 100644 --- a/src/config.h +++ b/src/config.h @@ -5,6 +5,7 @@ #include <stdint.h> #include "util.h" +#include "any_log.h" typedef struct block block_t; @@ -23,10 +24,26 @@ typedef enum { CONFIG_LIST, } config_type_t; +typedef enum { + CHECK_NONE, + CHECK_POSITIVE, + CHECK_IN_RANGE, +} config_check_type_t; + +typedef struct { + config_check_type_t type; + union { + struct { + int min, max; + } range; + }; +} config_check_t; + typedef struct { const char *key; config_type_t type; const void *data; + const config_check_t *checks; size_t offset; } config_entry_t; @@ -62,6 +79,8 @@ typedef struct { int value; } config_enum_t; +extern const any_log_formatter_t config_formatters[]; + const char *config_type_to_string(config_type_t type); void config_init(config_t *config); |
