From 9b6d273c66ae1e21e230b52d8d7a9899ee10bf0c Mon Sep 17 00:00:00 2001 From: WS64 Date: Wed, 20 Aug 2014 10:47:08 +0200 Subject: [PATCH] Bugfix. Latest version just allowed you to enter the editor once --- .../filemanager/filemanagersetdefaults.lua | 81 ++++++++----------- 1 file changed, 32 insertions(+), 49 deletions(-) diff --git a/frontend/apps/filemanager/filemanagersetdefaults.lua b/frontend/apps/filemanager/filemanagersetdefaults.lua index cfdc12d76..dbb67fe24 100644 --- a/frontend/apps/filemanager/filemanagersetdefaults.lua +++ b/frontend/apps/filemanager/filemanagersetdefaults.lua @@ -26,6 +26,7 @@ local function settype(b,t) end end + local function __genOrderedIndex( t ) -- this function is taken from http://lua-users.org/wiki/SortedIteration local orderedIndex = {} @@ -73,6 +74,21 @@ local function orderedPairs(t) return orderedNext, t, nil end +local function getTableValues(t,dtap) + local dummy = "{" + for n,v in pairs(t) do + if dtap:sub(1,4) == "DTAP" or dtap:sub(1,11) == "DDOUBLE_TAP" then + dummy = dummy .. tostring(n) .. " = " .. tostring(v) .. ", " + elseif tonumber(v) then + dummy = dummy .. tostring(v) .. ", " + else + dummy = dummy .. "\"" .. tostring(v) .. "\", " + end + end + dummy = dummy:sub(1,string.len(dummy) - 2) .. "}" + return dummy +end + function SetDefaults:ConfirmEdit() if not SetDefaults.EditConfirmed then UIManager:show(ConfirmBox:new{ @@ -88,12 +104,24 @@ function SetDefaults:ConfirmEdit() end function SetDefaults:init() - - self.defaults_name = {} - self.defaults_value = {} self.results = {} - self.filldefaults() + if not self.already_read then + local i = 0 + for n,v in orderedPairs(_G) do + if (not string.find(tostring(v), "<")) and (not string.find(tostring(v), ": ")) and string.sub(n,1,1) ~= "_" and string.upper(n) == n and n ~= "GLOBAL_INPUT_VALUE" and n ~= "LIBRARY_PATH" then + i = i + 1 + self.defaults_name[i] = n + self.defaults_value[i] = v + end + if string.find(tostring(v), "table: ") and string.upper(n) == n and n ~= "ARGV" and n ~= "_G" then + i = i + 1 + self.defaults_name[i] = n + self.defaults_value[i] = getTableValues(v,n) + end + end + self.already_read = true + end local menu_container = CenterContainer:new{ dimen = Screen:getSize(), @@ -222,40 +250,6 @@ function SetDefaults:init() UIManager:show(menu_container) end -local function getTableValues(t,dtap) - local dummy = "{" - for n,v in pairs(t) do - if dtap:sub(1,4) == "DTAP" or dtap:sub(1,11) == "DDOUBLE_TAP" then - dummy = dummy .. tostring(n) .. " = " .. tostring(v) .. ", " - elseif tonumber(v) then - dummy = dummy .. tostring(v) .. ", " - else - dummy = dummy .. "\"" .. tostring(v) .. "\", " - end - end - dummy = dummy:sub(1,string.len(dummy) - 2) .. "}" - return dummy -end - -function SetDefaults:filldefaults() - if not SetDefaults.already_read then - local i = 0 - for n,v in orderedPairs(_G) do - if (not string.find(tostring(v), "<")) and (not string.find(tostring(v), ": ")) and string.sub(n,1,1) ~= "_" and string.upper(n) == n and n ~= "GLOBAL_INPUT_VALUE" and n ~= "LIBRARY_PATH" then - i = i + 1 - SetDefaults.defaults_name[i] = n - SetDefaults.defaults_value[i] = v - end - if string.find(tostring(v), "table: ") and string.upper(n) == n and n ~= "ARGV" and n ~= "_G" then - i = i + 1 - SetDefaults.defaults_name[i] = n - SetDefaults.defaults_value[i] = getTableValues(v,n) - end - end - SetDefaults.already_read = true - end -end - function SetDefaults:close() self.set_dialog:onClose() UIManager:close(self.set_dialog) @@ -311,7 +305,6 @@ function SetDefaults:SaveSettings() local dl = {} fileread("defaults.lua",dl) self.results = {} - self.filldefaults() local done = {} for j=1,#SetDefaults.defaults_name do @@ -328,15 +321,6 @@ function SetDefaults:SaveSettings() end end - -- handle case "exists identical in non-persistent", ignore it - for i = 1,#dl do - for j=1,#SetDefaults.defaults_name do - if not done[j] and dl[i]:gsub("1/4","0.25"):gsub("2/4","0.5"):gsub("3/4","0.75"):gsub("4/4","1"):gsub("1/8","0.125"):gsub("2/8","0.25"):gsub("3/8","0.375"):gsub("4/8","0.5"):gsub("5/8","0.625"):gsub("6/8","0.75"):gsub("7/8","0.875"):gsub("8/8","1"):gsub("1/16","0.0625"):gsub("15/16","0.9375"):gsub("1024[*]1024[*]10","10485760"):gsub("1024[*]1024[*]30","31457280"):gsub("[.]0$",""):gsub("([.][0-9]+)0","%1") == self:build_setting(j) then - done[j] = true - end - end - end - -- handle case "not in persistent and different in non-persistent", add to persistent for j=1,#SetDefaults.defaults_name do if not done[j] then @@ -351,6 +335,5 @@ function SetDefaults:SaveSettings() file:close() UIManager:show(InfoMessage:new{text = _("Default settings successfully saved!")}) settings_changed = false - end return SetDefaults