diff options
author | William Wilgus <wilgus.william@gmail.com> | 2021-05-19 23:29:10 -0400 |
---|---|---|
committer | William Wilgus <wilgus.william@gmail.com> | 2021-05-19 23:29:10 -0400 |
commit | e910f63bba42c7e1627a7ec906b9cff38d032f6d (patch) | |
tree | ee7b6bb74607f8f82c96e68ed86c88d854bb45f9 /apps/plugins/lua | |
parent | dcff9b85a3cef778af60ad4426f91262ba815931 (diff) | |
download | rockbox-e910f63bba42c7e1627a7ec906b9cff38d032f6d.tar.gz rockbox-e910f63bba42c7e1627a7ec906b9cff38d032f6d.zip |
lua add a way to filter settings on read
rather than dumping all the settings allow a filter function
to choose desired settings
in menucoresettings you can see an how to do exact text matches
or wilcard matches you can even use luas version of regex
Change-Id: I4c7f7592498ea194e06e9a556b77ffd57f5d4223
Diffstat (limited to 'apps/plugins/lua')
-rw-r--r-- | apps/plugins/lua/include_lua/menucoresettings.lua | 18 | ||||
-rw-r--r-- | apps/plugins/lua/include_lua/rbsettings.lua | 7 |
2 files changed, 17 insertions, 8 deletions
diff --git a/apps/plugins/lua/include_lua/menucoresettings.lua b/apps/plugins/lua/include_lua/menucoresettings.lua index 13f3b8ea69..27d5e86ca1 100644 --- a/apps/plugins/lua/include_lua/menucoresettings.lua +++ b/apps/plugins/lua/include_lua/menucoresettings.lua | |||
@@ -39,21 +39,27 @@ local function get_core_settings() | |||
39 | 39 | ||
40 | tmploader("rbsettings") | 40 | tmploader("rbsettings") |
41 | tmploader("settings") | 41 | tmploader("settings") |
42 | -- these are exact matches color and talk are wildcard matches | ||
43 | local list_settings = "cursor_style|show_icons|statusbar|scrollbar|scrollbar_width|list_separator_height|backdrop_file|" | ||
44 | local function filterfn(struct, k) | ||
45 | k = k or "" | ||
46 | --rbold.splash(100, struct .. " " .. k) | ||
47 | return (k:find("color") or k:find("talk") or list_settings:find(k)) | ||
48 | end | ||
49 | local rb_settings = rb.settings.dump('global_settings', "system", nil, nil, filterfn) | ||
42 | 50 | ||
43 | local rb_settings = rb.settings.dump('global_settings', "system") | ||
44 | local color_table = {} | 51 | local color_table = {} |
45 | local talk_table = {} | 52 | local talk_table = {} |
46 | local list_settings_table = {} | 53 | local list_settings_table = {} |
47 | local list_settings = "cursor_style|show_icons|statusbar|scrollbar|scrollbar_width|list_separator_height|backdrop_file|" | ||
48 | 54 | ||
49 | for key, value in pairs(rb_settings) do | 55 | for key, value in pairs(rb_settings) do |
50 | key = key or "" | 56 | key = key or "" |
51 | if (key:find("color")) then | 57 | if (key:find("color")) then |
52 | color_table[key]=value | 58 | color_table[key]=value |
53 | elseif (key:find("talk")) then | 59 | elseif (key:find("talk")) then |
54 | talk_table[key]=value | 60 | talk_table[key]=value |
55 | elseif (list_settings:find(key)) then | 61 | else --if (list_settings:find(key)) then |
56 | list_settings_table[key]=value | 62 | list_settings_table[key]=value |
57 | end | 63 | end |
58 | end | 64 | end |
59 | 65 | ||
diff --git a/apps/plugins/lua/include_lua/rbsettings.lua b/apps/plugins/lua/include_lua/rbsettings.lua index defdb11b77..995e5023c9 100644 --- a/apps/plugins/lua/include_lua/rbsettings.lua +++ b/apps/plugins/lua/include_lua/rbsettings.lua | |||
@@ -151,12 +151,15 @@ function rb.settings.read(s_settings, s_var, s_groupname) | |||
151 | return data | 151 | return data |
152 | end | 152 | end |
153 | 153 | ||
154 | function rb.settings.dump(s_settings, s_groupname, s_structname, t_output) | 154 | function rb.settings.dump(s_settings, s_groupname, s_structname, t_output, fn_filter) |
155 | t_output = t_output or {} | 155 | t_output = t_output or {} |
156 | fn_filter = fn_filter or function(s,k) return true end | ||
156 | local tgroup = rb[s_groupname] | 157 | local tgroup = rb[s_groupname] |
157 | s_structname = s_structname or s_settings | 158 | s_structname = s_structname or s_settings |
158 | for k, v in pairs(tgroup[s_structname]) do | 159 | for k, v in pairs(tgroup[s_structname]) do |
159 | t_output[k] = rb.settings.read(s_settings, v, s_groupname) | 160 | if fn_filter(s_structname, k) then |
161 | t_output[k] = rb.settings.read(s_settings, v, s_groupname) | ||
162 | end | ||
160 | end | 163 | end |
161 | return t_output | 164 | return t_output |
162 | end | 165 | end |