Update Frame.lua

This commit is contained in:
Robert Jelic
2022-07-24 19:27:41 +02:00
parent 738ad2576e
commit 25baa2fc22

View File

@@ -20,7 +20,9 @@ return function(name, parent, pTerm, basalt)
local variables = {}
local theme = {}
local dynamicValues = {}
local focusedObjectCache
local dynValueId = 0
local calculateDynValues = false
local termObject = pTerm or term.current()
local monSide = ""
@@ -144,6 +146,11 @@ return function(name, parent, pTerm, basalt)
return false
end
local function removeAllObjects()
objects = {}
objZIndex = {}
end
local function stringToNumber(str)
local ok, err = pcall(load("return " .. str))
if not(ok)then error(str.." is not a valid dynamic code") end
@@ -209,16 +216,19 @@ return function(name, parent, pTerm, basalt)
end
local function recalculateDynamicValues()
if(#dynamicValues>0)then
for n=1,dynValueId do
if(dynamicValues[n]~=nil)then
local numberStr
if(#dynamicValues[n][3]<=0)then dynamicValues[n][3] = dynValueGetObjects(dynamicValues[n][4], dynamicValues[n][2]) end
numberStr = dynValueObjectToNumber(dynamicValues[n][2], dynamicValues[n][3])
dynamicValues[n][1] = stringToNumber(numberStr)
local function _recalculateDynamicValues(force)
if(calculateDynValues)or(force)then
if(#dynamicValues>0)then
for n=1,dynValueId do
if(dynamicValues[n]~=nil)then
local numberStr
if(#dynamicValues[n][3]<=0)then dynamicValues[n][3] = dynValueGetObjects(dynamicValues[n][4], dynamicValues[n][2]) end
numberStr = dynValueObjectToNumber(dynamicValues[n][2], dynamicValues[n][3])
dynamicValues[n][1] = stringToNumber(numberStr)
end
end
end
calculateDynValues = false
end
end
@@ -236,7 +246,10 @@ return function(name, parent, pTerm, basalt)
isMoveable = false,
newDynamicValue = newDynamicValue,
recalculateDynamicValues = recalculateDynamicValues,
recalculateDynamicValues = function(self)
calculateDynValues = true
return self
end,
getDynamicValue = getDynamicValue,
getType = function(self)
@@ -244,13 +257,10 @@ return function(name, parent, pTerm, basalt)
end;
setFocusedObject = function(self, obj)
if (basalt.getFocusedObject() ~= nil) then
basalt.getFocusedObject():loseFocusHandler()
basalt.setFocusedObject(nil)
end
if(obj~=nil)then
basalt.setFocusedObject(obj)
obj:getFocusHandler()
if(self.parent~=nil)then
--self:getBaseFrame():setFocusedObject(obj)
else
--focusedObjectCache = obj
end
return self
end;
@@ -315,10 +325,11 @@ return function(name, parent, pTerm, basalt)
end;
removeFocusedObject = function(self)
if (basalt.getFocusedObject() ~= nil) then
basalt.getFocusedObject():loseFocusHandler()
if(self.parent~=nil)then
self.parent:removeFocusedObject()
else
focusedObjectCache = nil
end
basalt.setFocusedObject(nil)
return self
end;
@@ -447,7 +458,7 @@ return function(name, parent, pTerm, basalt)
local objectList = data:children()
for k,v in pairs(objectList)do
if(v.___name~="animation")then
if(v.___name~="animation")and(v.___name~="frame")then
local name = v.___name:gsub("^%l", string.upper)
if(_OBJECTS[name]~=nil)then
addXMLObjectType(v, self["add"..name], self)
@@ -677,10 +688,6 @@ return function(name, parent, pTerm, basalt)
end
end
end
if (basalt.getFocusedObject() ~= nil) then
basalt.getFocusedObject():loseFocusHandler()
basalt.setFocusedObject(nil)
end
return true
end
return false
@@ -768,6 +775,21 @@ return function(name, parent, pTerm, basalt)
if(isMonitor)and not(monitorAttached)then return false end;
if (self:getVisualChanged()) then
if (base.draw(self)) then
--[[if(self.parent==nil)then
local curObj = basalt.getFocusedObject()
basalt.setFocusedObject(focusedObjectCache)
if(focusedObjectCache~=nil)then
focusedObjectCache:getFocusHandler()
end
if(curObj~=focusedObjectCache)then
if(curObj~=nil)then
curObj:loseFocusHandler()
end
end
end]]
if(calculateDynValues)then
_recalculateDynamicValues()
end
local obx, oby = self:getAbsolutePosition(self:getAnchorPosition())
local anchx, anchy = self:getAnchorPosition()
local w,h = self:getSize()
@@ -838,7 +860,9 @@ return function(name, parent, pTerm, basalt)
addObject = function(self, obj)
return addObject(obj)
end;
removeAllObjects = function(self)
return removeAllObjects()
end;
removeObject = function(self, obj)
return removeObject(obj)
end;
@@ -851,7 +875,7 @@ return function(name, parent, pTerm, basalt)
end,
addFrame = function(self, name)
local obj = basalt.newFrame(name, self, nil, basalt)
local obj = basalt.newFrame(name or uuid(), self, nil, basalt)
return addObject(obj)
end;
}