Merge pull request #69 from thesabinelim/script-behaviour
[XML] Update script behaviour, refactors
This commit is contained in:
@@ -144,18 +144,14 @@ function XmlParser:ParseXmlText(xmlText)
|
|||||||
return top
|
return top
|
||||||
end
|
end
|
||||||
|
|
||||||
local function executeScript(scripts)
|
local function maybeExecuteScript(renderContext)
|
||||||
for k,v in pairs(scripts)do
|
if (renderContext.script ~= nil) then
|
||||||
if(k~="env")then
|
load(renderContext.script, nil, "t", renderContext.env)()
|
||||||
for a,b in pairs(v)do
|
|
||||||
load(b, nil, "t", scripts.env)()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function registerFunctionEvent(self, data, event, scripts)
|
local function registerFunctionEvent(self, data, event, renderContext)
|
||||||
local eventEnv = scripts.env
|
local eventEnv = renderContext.env
|
||||||
if(data:sub(1,1)=="$")then
|
if(data:sub(1,1)=="$")then
|
||||||
local data = data:sub(2)
|
local data = data:sub(2)
|
||||||
event(self, self:getBasalt().getVariable(data))
|
event(self, self:getBasalt().getVariable(data))
|
||||||
@@ -175,7 +171,7 @@ return {
|
|||||||
|
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
local x, y = self:getPosition()
|
local x, y = self:getPosition()
|
||||||
local w, h = self:getSize()
|
local w, h = self:getSize()
|
||||||
if (name == "x") then
|
if (name == "x") then
|
||||||
@@ -202,8 +198,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
scripts.env[self:getName()] = self
|
renderContext.env[self:getName()] = self
|
||||||
for k,v in pairs(data:reactiveProperties()) do
|
for k,v in pairs(data:reactiveProperties()) do
|
||||||
local parts, nParts = utils.splitString(v, "%.")
|
local parts, nParts = utils.splitString(v, "%.")
|
||||||
if (nParts ~= 2) then
|
if (nParts ~= 2) then
|
||||||
@@ -212,9 +208,9 @@ return {
|
|||||||
local tableName = parts[1]
|
local tableName = parts[1]
|
||||||
local entryName = parts[2]
|
local entryName = parts[2]
|
||||||
if (tableName == "props") then
|
if (tableName == "props") then
|
||||||
self:updateValue(k, scripts.env.props[entryName])
|
self:updateValue(k, renderContext.env.props[entryName])
|
||||||
elseif (tableName == "shared") then
|
elseif (tableName == "shared") then
|
||||||
local sharedObservers = scripts.env.sharedObservers
|
local sharedObservers = renderContext.sharedObservers
|
||||||
if (sharedObservers[entryName]) == nil then
|
if (sharedObservers[entryName]) == nil then
|
||||||
sharedObservers[entryName] = {}
|
sharedObservers[entryName] = {}
|
||||||
end
|
end
|
||||||
@@ -238,16 +234,13 @@ return {
|
|||||||
|
|
||||||
|
|
||||||
if(xmlValue("script", data)~=nil)then
|
if(xmlValue("script", data)~=nil)then
|
||||||
if(scripts[1]==nil)then
|
renderContext.script = xmlValue("script", data)
|
||||||
scripts[1] = {}
|
|
||||||
end
|
|
||||||
table.insert(scripts[1], xmlValue("script", data))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local events = {"onClick", "onClickUp", "onHover", "onScroll", "onDrag", "onKey", "onKeyUp", "onRelease", "onChar", "onGetFocus", "onLoseFocus", "onResize", "onReposition", "onEvent", "onLeave"}
|
local events = {"onClick", "onClickUp", "onHover", "onScroll", "onDrag", "onKey", "onKeyUp", "onRelease", "onChar", "onGetFocus", "onLoseFocus", "onResize", "onReposition", "onEvent", "onLeave"}
|
||||||
for _,v in pairs(events)do
|
for _,v in pairs(events)do
|
||||||
if(xmlValue(v, data)~=nil)then
|
if(xmlValue(v, data)~=nil)then
|
||||||
registerFunctionEvent(self, xmlValue(v, data), self[v], scripts)
|
registerFunctionEvent(self, xmlValue(v, data), self[v], renderContext)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -260,20 +253,20 @@ return {
|
|||||||
ChangeableObject = function(base, basalt)
|
ChangeableObject = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "value") then
|
if (name == "value") then
|
||||||
self:setValue(value)
|
self:setValue(value)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"value"
|
"value"
|
||||||
})
|
})
|
||||||
if(xmlValue("onChange", data)~=nil)then
|
if(xmlValue("onChange", data)~=nil)then
|
||||||
registerFunctionEvent(self, xmlValue("onChange", data), self.onChange, scripts)
|
registerFunctionEvent(self, xmlValue("onChange", data), self.onChange, renderContext)
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
end,
|
end,
|
||||||
@@ -284,28 +277,28 @@ return {
|
|||||||
BaseFrame = function(base, basalt)
|
BaseFrame = function(base, basalt)
|
||||||
local lastXMLReferences = {}
|
local lastXMLReferences = {}
|
||||||
|
|
||||||
local function xmlDefaultValues(data, obj, scripts)
|
local function xmlDefaultValues(data, obj, renderContext)
|
||||||
if(obj~=nil)then
|
if(obj~=nil)then
|
||||||
obj:setValuesByXMLData(data, scripts)
|
obj:setValuesByXMLData(data, renderContext)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function addXMLObjectType(tab, f, self, scripts)
|
local function addXMLObjectType(tab, f, self, renderContext)
|
||||||
if(tab~=nil)then
|
if(tab~=nil)then
|
||||||
if(tab.properties~=nil)then tab = {tab} end
|
if(tab.properties~=nil)then tab = {tab} end
|
||||||
for k,v in pairs(tab)do
|
for _,v in pairs(tab)do
|
||||||
local obj = f(self, v["@id"] or uuid())
|
local obj = f(self, v["@id"] or uuid())
|
||||||
lastXMLReferences[obj:getName()] = obj
|
lastXMLReferences[obj:getName()] = obj
|
||||||
xmlDefaultValues(v, obj, scripts)
|
xmlDefaultValues(v, obj, renderContext)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local xOffset, yOffset = self:getOffset()
|
local _, yOffset = self:getOffset()
|
||||||
if (name == "layout") then
|
if (name == "layout") then
|
||||||
self:setLayout(value)
|
self:setLayout(value)
|
||||||
elseif (name == "xOffset") then
|
elseif (name == "xOffset") then
|
||||||
@@ -313,9 +306,9 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
lastXMLReferences = {}
|
lastXMLReferences = {}
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"layout",
|
"layout",
|
||||||
"xOffset"
|
"xOffset"
|
||||||
@@ -323,17 +316,17 @@ return {
|
|||||||
|
|
||||||
local objectList = data:children()
|
local objectList = data:children()
|
||||||
local _OBJECTS = basalt.getObjects()
|
local _OBJECTS = basalt.getObjects()
|
||||||
|
|
||||||
for k,v in pairs(objectList)do
|
for _,v in pairs(objectList)do
|
||||||
if(v.___name~="animation")then
|
if(v.___name~="animation")then
|
||||||
local name = v.___name:gsub("^%l", string.upper)
|
local name = v.___name:gsub("^%l", string.upper)
|
||||||
if(_OBJECTS[name]~=nil)then
|
if(_OBJECTS[name]~=nil)then
|
||||||
addXMLObjectType(v, self["add"..name], self, scripts)
|
addXMLObjectType(v, self["add"..name], self, renderContext)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
addXMLObjectType(data["animation"], self.addAnimation, self, scripts)
|
addXMLObjectType(data["animation"], self.addAnimation, self, renderContext)
|
||||||
return self
|
return self
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@@ -343,19 +336,19 @@ return {
|
|||||||
|
|
||||||
loadLayout = function(self, path, props)
|
loadLayout = function(self, path, props)
|
||||||
if(fs.exists(path))then
|
if(fs.exists(path))then
|
||||||
local scripts = {}
|
local renderContext = {}
|
||||||
scripts.env = _ENV
|
renderContext.env = _ENV
|
||||||
scripts.env.basalt = basalt
|
renderContext.env.basalt = basalt
|
||||||
scripts.env.props = props
|
renderContext.env.props = props
|
||||||
scripts.env.shared = {}
|
renderContext.env.shared = {}
|
||||||
scripts.env.sharedObservers = {}
|
renderContext.sharedObservers = {}
|
||||||
local shared = {}
|
local shared = {}
|
||||||
setmetatable(scripts.env.shared, {
|
setmetatable(renderContext.env.shared, {
|
||||||
__index = function(_, k)
|
__index = function(_, k)
|
||||||
return shared[k]
|
return shared[k]
|
||||||
end,
|
end,
|
||||||
__newindex = function(_, k, v)
|
__newindex = function(_, k, v)
|
||||||
local observers = scripts.env.sharedObservers[k]
|
local observers = renderContext.sharedObservers[k]
|
||||||
if observers ~= nil then
|
if observers ~= nil then
|
||||||
for _,observer in pairs(observers) do
|
for _,observer in pairs(observers) do
|
||||||
observer(v)
|
observer(v)
|
||||||
@@ -368,8 +361,8 @@ return {
|
|||||||
local data = XmlParser:ParseXmlText(f.readAll())
|
local data = XmlParser:ParseXmlText(f.readAll())
|
||||||
f.close()
|
f.close()
|
||||||
lastXMLReferences = {}
|
lastXMLReferences = {}
|
||||||
self:setValuesByXMLData(data, scripts)
|
maybeExecuteScript(renderContext)
|
||||||
executeScript(scripts)
|
self:setValuesByXMLData(data, renderContext)
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
end,
|
end,
|
||||||
@@ -381,26 +374,26 @@ return {
|
|||||||
Frame = function(base, basalt)
|
Frame = function(base, basalt)
|
||||||
local lastXMLReferences = {}
|
local lastXMLReferences = {}
|
||||||
|
|
||||||
local function xmlDefaultValues(data, obj, scripts)
|
local function xmlDefaultValues(data, obj, renderContext)
|
||||||
if(obj~=nil)then
|
if(obj~=nil)then
|
||||||
obj:setValuesByXMLData(data, scripts)
|
obj:setValuesByXMLData(data, renderContext)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function addXMLObjectType(tab, f, self, scripts)
|
local function addXMLObjectType(tab, f, self, renderContext)
|
||||||
if(tab~=nil)then
|
if(tab~=nil)then
|
||||||
if(tab.properties~=nil)then tab = {tab} end
|
if(tab.properties~=nil)then tab = {tab} end
|
||||||
for k,v in pairs(tab)do
|
for _,v in pairs(tab)do
|
||||||
local obj = f(self, v["@id"] or uuid())
|
local obj = f(self, v["@id"] or uuid())
|
||||||
lastXMLReferences[obj:getName()] = obj
|
lastXMLReferences[obj:getName()] = obj
|
||||||
xmlDefaultValues(v, obj, scripts)
|
xmlDefaultValues(v, obj, renderContext)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local xOffset, yOffset = self:getOffset()
|
local xOffset, yOffset = self:getOffset()
|
||||||
if (name == "layout") then
|
if (name == "layout") then
|
||||||
@@ -412,8 +405,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"layout",
|
"layout",
|
||||||
"xOffset",
|
"xOffset",
|
||||||
@@ -423,16 +416,16 @@ return {
|
|||||||
local objectList = data:children()
|
local objectList = data:children()
|
||||||
local _OBJECTS = basalt.getObjects()
|
local _OBJECTS = basalt.getObjects()
|
||||||
|
|
||||||
for k,v in pairs(objectList)do
|
for _,v in pairs(objectList)do
|
||||||
if(v.___name~="animation")then
|
if(v.___name~="animation")then
|
||||||
local name = v.___name:gsub("^%l", string.upper)
|
local name = v.___name:gsub("^%l", string.upper)
|
||||||
if(_OBJECTS[name]~=nil)then
|
if(_OBJECTS[name]~=nil)then
|
||||||
addXMLObjectType(v, self["add"..name], self, scripts)
|
addXMLObjectType(v, self["add"..name], self, renderContext)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
addXMLObjectType(data["animation"], self.addAnimation, self, scripts)
|
addXMLObjectType(data["animation"], self.addAnimation, self, renderContext)
|
||||||
return self
|
return self
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@@ -442,20 +435,20 @@ return {
|
|||||||
|
|
||||||
loadLayout = function(self, path, props)
|
loadLayout = function(self, path, props)
|
||||||
if(fs.exists(path))then
|
if(fs.exists(path))then
|
||||||
local scripts = {}
|
local renderContext = {}
|
||||||
scripts.env = _ENV
|
renderContext.env = _ENV
|
||||||
scripts.env.basalt = basalt
|
renderContext.env.basalt = basalt
|
||||||
scripts.env.main = self
|
renderContext.env.main = self
|
||||||
scripts.env.props = props
|
renderContext.env.props = props
|
||||||
scripts.env.shared = {}
|
renderContext.env.shared = {}
|
||||||
scripts.env.sharedObservers = {}
|
renderContext.sharedObservers = {}
|
||||||
local shared = {}
|
local shared = {}
|
||||||
setmetatable(scripts.env.shared, {
|
setmetatable(renderContext.env.shared, {
|
||||||
__index = function(_, k)
|
__index = function(_, k)
|
||||||
return shared[k]
|
return shared[k]
|
||||||
end,
|
end,
|
||||||
__newindex = function(_, k, v)
|
__newindex = function(_, k, v)
|
||||||
local observers = scripts.env.sharedObservers[k]
|
local observers = renderContext.sharedObservers[k]
|
||||||
if observers ~= nil then
|
if observers ~= nil then
|
||||||
for _,observer in pairs(observers) do
|
for _,observer in pairs(observers) do
|
||||||
observer(v)
|
observer(v)
|
||||||
@@ -468,8 +461,8 @@ return {
|
|||||||
local data = XmlParser:ParseXmlText(f.readAll())
|
local data = XmlParser:ParseXmlText(f.readAll())
|
||||||
f.close()
|
f.close()
|
||||||
lastXMLReferences = {}
|
lastXMLReferences = {}
|
||||||
self:setValuesByXMLData(data, scripts)
|
maybeExecuteScript(renderContext)
|
||||||
executeScript(scripts)
|
self:setValuesByXMLData(data, renderContext)
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
end,
|
end,
|
||||||
@@ -480,7 +473,7 @@ return {
|
|||||||
Flexbox = function(base, basalt)
|
Flexbox = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "flexDirection") then
|
if (name == "flexDirection") then
|
||||||
self:setFlexDirection(value)
|
self:setFlexDirection(value)
|
||||||
@@ -493,8 +486,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"flexDirection",
|
"flexDirection",
|
||||||
"justifyContent",
|
"justifyContent",
|
||||||
@@ -510,7 +503,7 @@ return {
|
|||||||
Button = function(base, basalt)
|
Button = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "text") then
|
if (name == "text") then
|
||||||
self:setText(value)
|
self:setText(value)
|
||||||
@@ -521,8 +514,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"text",
|
"text",
|
||||||
"horizontalAlign",
|
"horizontalAlign",
|
||||||
@@ -537,7 +530,7 @@ return {
|
|||||||
Label = function(base, basalt)
|
Label = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "text") then
|
if (name == "text") then
|
||||||
self:setText(value)
|
self:setText(value)
|
||||||
@@ -546,8 +539,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"text",
|
"text",
|
||||||
"align"
|
"align"
|
||||||
@@ -561,7 +554,7 @@ return {
|
|||||||
Input = function(base, basalt)
|
Input = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local defaultText, defaultFG, defaultBG = self:getDefaultText()
|
local defaultText, defaultFG, defaultBG = self:getDefaultText()
|
||||||
if (name == "defaultText") then
|
if (name == "defaultText") then
|
||||||
@@ -581,8 +574,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"defaultText",
|
"defaultText",
|
||||||
"defaultFG",
|
"defaultFG",
|
||||||
@@ -601,7 +594,7 @@ return {
|
|||||||
Image = function(base, basalt)
|
Image = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local xOffset, yOffset = self:getOffset()
|
local xOffset, yOffset = self:getOffset()
|
||||||
if (name == "xOffset") then
|
if (name == "xOffset") then
|
||||||
@@ -617,9 +610,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
local xOffset, yOffset = self:getOffset()
|
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"xOffset",
|
"xOffset",
|
||||||
"yOffset",
|
"yOffset",
|
||||||
@@ -636,7 +628,7 @@ return {
|
|||||||
Checkbox = function(base, basalt)
|
Checkbox = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local activeSymbol, inactiveSymbol = self:getSymbol()
|
local activeSymbol, inactiveSymbol = self:getSymbol()
|
||||||
if (name == "text") then
|
if (name == "text") then
|
||||||
@@ -652,8 +644,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, dat, scriptsa)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"text",
|
"text",
|
||||||
"checked",
|
"checked",
|
||||||
@@ -670,15 +662,15 @@ return {
|
|||||||
Program = function(base, basalt)
|
Program = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "execute") then
|
if (name == "execute") then
|
||||||
self:execute(value)
|
self:execute(value)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"execute"
|
"execute"
|
||||||
})
|
})
|
||||||
@@ -691,7 +683,7 @@ return {
|
|||||||
Progressbar = function(base, basalt)
|
Progressbar = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local activeBarColor, activeBarSymbol, activeBarSymbolCol = self:getProgressBar()
|
local activeBarColor, activeBarSymbol, activeBarSymbolCol = self:getProgressBar()
|
||||||
if (name == "direction") then
|
if (name == "direction") then
|
||||||
@@ -709,8 +701,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"direction",
|
"direction",
|
||||||
"activeBarColor",
|
"activeBarColor",
|
||||||
@@ -728,7 +720,7 @@ return {
|
|||||||
Slider = function(base, basalt)
|
Slider = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "symbol") then
|
if (name == "symbol") then
|
||||||
self:setSymbol(value)
|
self:setSymbol(value)
|
||||||
@@ -743,8 +735,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"symbol",
|
"symbol",
|
||||||
"symbolColor",
|
"symbolColor",
|
||||||
@@ -761,7 +753,7 @@ return {
|
|||||||
Scrollbar = function(base, basalt)
|
Scrollbar = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "symbol") then
|
if (name == "symbol") then
|
||||||
self:setSymbol(value)
|
self:setSymbol(value)
|
||||||
@@ -780,8 +772,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"symbol",
|
"symbol",
|
||||||
"symbolColor",
|
"symbolColor",
|
||||||
@@ -800,15 +792,15 @@ return {
|
|||||||
MonitorFrame = function(base, basalt)
|
MonitorFrame = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "monitor") then
|
if (name == "monitor") then
|
||||||
self:setMonitor(value)
|
self:setMonitor(value)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"monitor"
|
"monitor"
|
||||||
})
|
})
|
||||||
@@ -821,7 +813,7 @@ return {
|
|||||||
Switch = function(base, basalt)
|
Switch = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "symbol") then
|
if (name == "symbol") then
|
||||||
self:setSymbol(value)
|
self:setSymbol(value)
|
||||||
@@ -832,8 +824,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"symbol",
|
"symbol",
|
||||||
"activeBackground",
|
"activeBackground",
|
||||||
@@ -848,7 +840,7 @@ return {
|
|||||||
Textfield = function(base, basalt)
|
Textfield = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local fgSel, bgSel = self:getSelection()
|
local fgSel, bgSel = self:getSelection()
|
||||||
local xOffset, yOffset = self:getOffset()
|
local xOffset, yOffset = self:getOffset()
|
||||||
@@ -863,8 +855,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"bgSelection",
|
"bgSelection",
|
||||||
"fgSelection",
|
"fgSelection",
|
||||||
@@ -876,7 +868,7 @@ return {
|
|||||||
if(data["lines"]~=nil)then
|
if(data["lines"]~=nil)then
|
||||||
local l = data["lines"]["line"]
|
local l = data["lines"]["line"]
|
||||||
if(l.properties~=nil)then l = {l} end
|
if(l.properties~=nil)then l = {l} end
|
||||||
for k,v in pairs(l)do
|
for _,v in pairs(l)do
|
||||||
self:addLine(v:value())
|
self:addLine(v:value())
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -917,9 +909,10 @@ return {
|
|||||||
|
|
||||||
Thread = function(base, basalt)
|
Thread = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
if(xmlValue("start", data)~=nil)then
|
local script = xmlValue("start", data)~=nil
|
||||||
local f = load(xmlValue("start", data), nil, "t", scripts.env)
|
if(script~=nil)then
|
||||||
|
local f = load(script, nil, "t", renderContext.env)
|
||||||
self:start(f)
|
self:start(f)
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
@@ -931,7 +924,7 @@ return {
|
|||||||
Timer = function(base, basalt)
|
Timer = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "start") then
|
if (name == "start") then
|
||||||
self:start(value)
|
self:start(value)
|
||||||
@@ -940,15 +933,15 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"start",
|
"start",
|
||||||
"time"
|
"time"
|
||||||
})
|
})
|
||||||
|
|
||||||
if(xmlValue("onCall", data)~=nil)then
|
if(xmlValue("onCall", data)~=nil)then
|
||||||
registerFunctionEvent(self, xmlValue("onCall", data), self.onCall, scripts)
|
registerFunctionEvent(self, xmlValue("onCall", data), self.onCall, renderContext)
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
end,
|
end,
|
||||||
@@ -959,7 +952,7 @@ return {
|
|||||||
List = function(base, basalt)
|
List = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local selBg, selFg = self:getSelectionColor()
|
local selBg, selFg = self:getSelectionColor()
|
||||||
if (name == "align") then
|
if (name == "align") then
|
||||||
@@ -975,8 +968,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"align",
|
"align",
|
||||||
"offset",
|
"offset",
|
||||||
@@ -988,7 +981,7 @@ return {
|
|||||||
if(data["item"]~=nil)then
|
if(data["item"]~=nil)then
|
||||||
local tab = data["item"]
|
local tab = data["item"]
|
||||||
if(tab.properties~=nil)then tab = {tab} end
|
if(tab.properties~=nil)then tab = {tab} end
|
||||||
for k,v in pairs(tab)do
|
for _,v in pairs(tab)do
|
||||||
if(self:getType()~="Radio")then
|
if(self:getType()~="Radio")then
|
||||||
self:addItem(xmlValue("text", v), colors[xmlValue("bg", v)], colors[xmlValue("fg", v)])
|
self:addItem(xmlValue("text", v), colors[xmlValue("bg", v)], colors[xmlValue("fg", v)])
|
||||||
end
|
end
|
||||||
@@ -1003,7 +996,7 @@ return {
|
|||||||
Dropdown = function(base, basalt)
|
Dropdown = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local w, h = self:getDropdownSize()
|
local w, h = self:getDropdownSize()
|
||||||
if (name == "dropdownWidth") then
|
if (name == "dropdownWidth") then
|
||||||
@@ -1013,8 +1006,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"dropdownWidth",
|
"dropdownWidth",
|
||||||
"dropdownHeight"
|
"dropdownHeight"
|
||||||
@@ -1028,7 +1021,7 @@ return {
|
|||||||
Radio = function(base, basalt)
|
Radio = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local selBg, selFg = self:getBoxSelectionColor()
|
local selBg, selFg = self:getBoxSelectionColor()
|
||||||
local defBg, defFg = self:setBoxDefaultColor()
|
local defBg, defFg = self:setBoxDefaultColor()
|
||||||
@@ -1043,8 +1036,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"selectionBg",
|
"selectionBg",
|
||||||
"selectionFg",
|
"selectionFg",
|
||||||
@@ -1055,7 +1048,7 @@ return {
|
|||||||
if(data["item"]~=nil)then
|
if(data["item"]~=nil)then
|
||||||
local tab = data["item"]
|
local tab = data["item"]
|
||||||
if(tab.properties~=nil)then tab = {tab} end
|
if(tab.properties~=nil)then tab = {tab} end
|
||||||
for k,v in pairs(tab)do
|
for _,v in pairs(tab)do
|
||||||
self:addItem(xmlValue("text", v), xmlValue("x", v), xmlValue("y", v), colors[xmlValue("bg", v)], colors[xmlValue("fg", v)])
|
self:addItem(xmlValue("text", v), xmlValue("x", v), xmlValue("y", v), colors[xmlValue("bg", v)], colors[xmlValue("fg", v)])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1068,7 +1061,7 @@ return {
|
|||||||
Menubar = function(base, basalt)
|
Menubar = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
if (name == "space") then
|
if (name == "space") then
|
||||||
self:setSpace(value)
|
self:setSpace(value)
|
||||||
@@ -1077,8 +1070,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"space",
|
"space",
|
||||||
"scrollable"
|
"scrollable"
|
||||||
@@ -1092,7 +1085,7 @@ return {
|
|||||||
Graph = function(base, basalt)
|
Graph = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local symbol, symbolCol = self:getGraphSymbol()
|
local symbol, symbolCol = self:getGraphSymbol()
|
||||||
if (name == "maxEntries") then
|
if (name == "maxEntries") then
|
||||||
@@ -1110,8 +1103,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"maxEntries",
|
"maxEntries",
|
||||||
"type",
|
"type",
|
||||||
@@ -1123,7 +1116,7 @@ return {
|
|||||||
if(data["item"]~=nil)then
|
if(data["item"]~=nil)then
|
||||||
local tab = data["item"]
|
local tab = data["item"]
|
||||||
if(tab.properties~=nil)then tab = {tab} end
|
if(tab.properties~=nil)then tab = {tab} end
|
||||||
for k,v in pairs(tab)do
|
for _,_ in pairs(tab)do
|
||||||
self:addDataPoint(xmlValue("value"))
|
self:addDataPoint(xmlValue("value"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1136,7 +1129,7 @@ return {
|
|||||||
Treeview = function(base, basalt)
|
Treeview = function(base, basalt)
|
||||||
local object = {
|
local object = {
|
||||||
updateValue = function(self, name, value)
|
updateValue = function(self, name, value)
|
||||||
if (value == null) then return end
|
if (value == nil) then return end
|
||||||
base.updateValue(self, name, value)
|
base.updateValue(self, name, value)
|
||||||
local selBg, selFg = self:getSelectionColor()
|
local selBg, selFg = self:getSelectionColor()
|
||||||
local xOffset, yOffset = self:getOffset()
|
local xOffset, yOffset = self:getOffset()
|
||||||
@@ -1155,10 +1148,8 @@ return {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
setValuesByXMLData = function(self, data, scripts)
|
setValuesByXMLData = function(self, data, renderContext)
|
||||||
base.setValuesByXMLData(self, data, scripts)
|
base.setValuesByXMLData(self, data, renderContext)
|
||||||
local selBg, selFg = self:getSelectionColor()
|
|
||||||
local xOffset, yOffset = self:getOffset()
|
|
||||||
self:updateSpecifiedValuesByXMLData(data, {
|
self:updateSpecifiedValuesByXMLData(data, {
|
||||||
"space",
|
"space",
|
||||||
"scrollable",
|
"scrollable",
|
||||||
@@ -1171,7 +1162,7 @@ return {
|
|||||||
if(data["node"]~=nil)then
|
if(data["node"]~=nil)then
|
||||||
local tab = data["node"]
|
local tab = data["node"]
|
||||||
if(tab.properties~=nil)then tab = {tab} end
|
if(tab.properties~=nil)then tab = {tab} end
|
||||||
for k,v in pairs(tab)do
|
for _,v in pairs(tab)do
|
||||||
local n = node:addNode(xmlValue("text", v), colors[xmlValue("bg", v)], colors[xmlValue("fg", v)])
|
local n = node:addNode(xmlValue("text", v), colors[xmlValue("bg", v)], colors[xmlValue("fg", v)])
|
||||||
addNode(n, v)
|
addNode(n, v)
|
||||||
end
|
end
|
||||||
@@ -1180,7 +1171,7 @@ return {
|
|||||||
if(data["node"]~=nil)then
|
if(data["node"]~=nil)then
|
||||||
local tab = data["node"]
|
local tab = data["node"]
|
||||||
if(tab.properties~=nil)then tab = {tab} end
|
if(tab.properties~=nil)then tab = {tab} end
|
||||||
for k,v in pairs(tab)do
|
for _,v in pairs(tab)do
|
||||||
local n = self:addNode(xmlValue("text", v), colors[xmlValue("bg", v)], colors[xmlValue("fg", v)])
|
local n = self:addNode(xmlValue("text", v), colors[xmlValue("bg", v)], colors[xmlValue("fg", v)])
|
||||||
addNode(n, v)
|
addNode(n, v)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user