tSIP softphone: settings for Lua scripts
This is proposed template for storing script settings, that is parameters that are supposed to survive application restart. Settings are stored in json file in application directory. JSON parsing and generating is handling by dkjson module, placed in \scripts\inc subdirectory.
-- settings.lua
local M = {} -- public interface
local json = require("scripts.inc.dkjson")
local filename = "lua_settings.json"
function M.get()
local cfg = {}
local param1, param1IsSet = GetVariable("Param1")
if param1IsSet == 1 then
param1 = tonumber(param1)
else
-- default
param1 = 0
end
cfg.param1 = param1;
return cfg
end
function M.load()
local cfg = M.get()
local f = io.open(filename, "r")
if f == nil then
return cfg
end
local str = f:read("*all")
f.close()
local obj, pos, err = json.decode (str, 1, nil)
if err then
print ("Error:", err)
return cfg
else
cfg = obj
end
if cfg.param1 ~= nil then
SetVariable("Param1", cfg.param1)
end
return cfg
end
function M.store()
local cfg = M.get()
local str = json.encode (cfg, { indent = true })
local f = assert(io.open(filename, "w"))
f:write(str)
f.close()
end
return M
-- end of settings.lua
-- settings_store.lua
SetVariable("Param1", 1234)
local settings = require("scripts.settings")
settings.store()
-- end of settings_store.lua
-- settings_load.lua
local settings = require("scripts.settings")
local cfg = settings.load()
local str = string.format("Found in file: cfg.param1 = %d", cfg.param1)
ShowMessage(str)
-- end of settings_load.lua
Back to howto list