Small fixes
- changed custom event "dynamicValueEvent" into "basalt_dynamicvalue" - fixed disabling autoscroll bug for frames - added custom event handler for custom basalt events (should also fix basalt_resize and basalt_reposition events on children objects) - fixed scrolling - Changed selectItem: wont trigger a onChange event anymore
This commit is contained in:
@@ -240,11 +240,11 @@ return function(name, parent, pTerm, basalt)
|
|||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
local math = math
|
||||||
local function stringToNumber(str)
|
local function stringToNumber(str)
|
||||||
local ok, err = pcall(load("return " .. str))
|
local ok, result = pcall(load("return " .. str, "", nil, {math=math}))
|
||||||
if not(ok)then error(str.." is not a valid dynamic code") end
|
if not(ok)then error(str.." is not a valid dynamic code") end
|
||||||
return load("return " .. str)()
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
local function newDynamicValue(_, obj, str)
|
local function newDynamicValue(_, obj, str)
|
||||||
@@ -328,7 +328,7 @@ return function(name, parent, pTerm, basalt)
|
|||||||
if (objects[index] ~= nil) then
|
if (objects[index] ~= nil) then
|
||||||
for _, value in pairs(objects[index]) do
|
for _, value in pairs(objects[index]) do
|
||||||
if (value.eventHandler ~= nil) then
|
if (value.eventHandler ~= nil) then
|
||||||
value:eventHandler("dynamicValueEvent", self)
|
value:eventHandler("basalt_dynamicvalue", self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -341,12 +341,14 @@ return function(name, parent, pTerm, basalt)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function calculateMaxScroll(self)
|
local function calculateMaxScroll(self)
|
||||||
for _, value in pairs(objects) do
|
if(autoScroll)then
|
||||||
for _, b in pairs(value) do
|
for _, value in pairs(objects) do
|
||||||
if(b.getHeight~=nil)and(b.getY~=nil)then
|
for _, b in pairs(value) do
|
||||||
local h, y = b:getHeight(), b:getY()
|
if(b.getHeight~=nil)and(b.getY~=nil)then
|
||||||
if (h + y - self:getHeight() > scrollAmount) then
|
local h, y = b:getHeight(), b:getY()
|
||||||
scrollAmount = max(h + y - self:getHeight(), 0)
|
if (h + y - self:getHeight() ~= scrollAmount) then
|
||||||
|
scrollAmount = max(h + y - self:getHeight() - 1, 0)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -398,8 +400,8 @@ return function(name, parent, pTerm, basalt)
|
|||||||
for _, index in pairs(objZIndex) do
|
for _, index in pairs(objZIndex) do
|
||||||
if (objects[index] ~= nil) then
|
if (objects[index] ~= nil) then
|
||||||
for _, value in pairs(objects[index]) do
|
for _, value in pairs(objects[index]) do
|
||||||
if (value.eventHandler ~= nil) then
|
if (value.customEventHandler ~= nil) then
|
||||||
value:eventHandler("basalt_resize", value, self)
|
value:customEventHandler("basalt_resize", self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -425,15 +427,6 @@ return function(name, parent, pTerm, basalt)
|
|||||||
|
|
||||||
setPosition = function(self, x, y, rel)
|
setPosition = function(self, x, y, rel)
|
||||||
base.setPosition(self, x, y, rel)
|
base.setPosition(self, x, y, rel)
|
||||||
for _, index in pairs(objZIndex) do
|
|
||||||
if (objects[index] ~= nil) then
|
|
||||||
for _, value in pairs(objects[index]) do
|
|
||||||
if (value.eventHandler ~= nil) then
|
|
||||||
value:eventHandler("basalt_reposition", value, self)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
self:recalculateDynamicValues()
|
self:recalculateDynamicValues()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
@@ -794,9 +787,6 @@ return function(name, parent, pTerm, basalt)
|
|||||||
self:mouseHandler(1, p2, p3, true)
|
self:mouseHandler(1, p2, p3, true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if (event == "terminate")and(self.parent==nil)then
|
|
||||||
basalt.stop()
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
|
|
||||||
mouseHandler = function(self, button, x, y, _, side)
|
mouseHandler = function(self, button, x, y, _, side)
|
||||||
|
|||||||
@@ -195,11 +195,13 @@ return function(name)
|
|||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
|
|
||||||
setValue = function(self, _value)
|
setValue = function(self, _value, valueChangedHandler)
|
||||||
if (value ~= _value) then
|
if (value ~= _value) then
|
||||||
value = _value
|
value = _value
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
self:valueChangedHandler()
|
if(valueChangedHandler~=false)then
|
||||||
|
self:valueChangedHandler()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
@@ -245,7 +247,7 @@ return function(name)
|
|||||||
end
|
end
|
||||||
self.parent:recalculateDynamicValues()
|
self.parent:recalculateDynamicValues()
|
||||||
end
|
end
|
||||||
eventSystem:sendEvent("basalt_reposition", self)
|
self:customEventHandler("basalt_reposition")
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
@@ -288,7 +290,7 @@ return function(name)
|
|||||||
end
|
end
|
||||||
self.parent:recalculateDynamicValues()
|
self.parent:recalculateDynamicValues()
|
||||||
end
|
end
|
||||||
eventSystem:sendEvent("basalt_resize", self)
|
self:customEventHandler("basalt_resize")
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
@@ -676,13 +678,25 @@ return function(name)
|
|||||||
for _,v in pairs(table.pack(...))do
|
for _,v in pairs(table.pack(...))do
|
||||||
if(type(v)=="function")then
|
if(type(v)=="function")then
|
||||||
self:registerEvent("key", v)
|
self:registerEvent("key", v)
|
||||||
self:registerEvent("char", v)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if(self.parent~=nil)then
|
if(self.parent~=nil)then
|
||||||
self.parent:addEvent("key", self)
|
self.parent:addEvent("key", self)
|
||||||
self.parent:addEvent("char", self)
|
|
||||||
activeEvents["key"] = true
|
activeEvents["key"] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return self
|
||||||
|
end;
|
||||||
|
|
||||||
|
onChar = function(self, ...)
|
||||||
|
if(isEnabled)then
|
||||||
|
for _,v in pairs(table.pack(...))do
|
||||||
|
if(type(v)=="function")then
|
||||||
|
self:registerEvent("char", v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if(self.parent~=nil)then
|
||||||
|
self.parent:addEvent("char", self)
|
||||||
activeEvents["char"] = true
|
activeEvents["char"] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -882,7 +896,7 @@ return function(name)
|
|||||||
charHandler = function(self, char)
|
charHandler = function(self, char)
|
||||||
if(isEnabled)and(isVisible)then
|
if(isEnabled)and(isVisible)then
|
||||||
if (self:isFocused()) then
|
if (self:isFocused()) then
|
||||||
local val = eventSystem:sendEvent("char", self, "char", char)
|
local val = eventSystem:sendEvent("char", self, "char", char)
|
||||||
if(val==false)then return false end
|
if(val==false)then return false end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@@ -894,8 +908,14 @@ return function(name)
|
|||||||
eventSystem:sendEvent("value_changed", self, value)
|
eventSystem:sendEvent("value_changed", self, value)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
eventHandler = function(self, event, p1, p2, p3, p4)
|
eventHandler = function(self, event, ...)
|
||||||
local val = eventSystem:sendEvent("other_event", self, event, p1, p2, p3, p4)
|
local val = eventSystem:sendEvent("other_event", self, event, ...)
|
||||||
|
if(val~=nil)then return val end
|
||||||
|
return true
|
||||||
|
end;
|
||||||
|
|
||||||
|
customEventHandler = function(self, event, ...)
|
||||||
|
local val = eventSystem:sendEvent(event, self, event, ...)
|
||||||
if(val~=nil)then return val end
|
if(val~=nil)then return val end
|
||||||
return true
|
return true
|
||||||
end;
|
end;
|
||||||
|
|||||||
@@ -188,6 +188,10 @@ uuid = function()
|
|||||||
return uuid()
|
return uuid()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
array = function(arraysize, hashsize)
|
||||||
|
return load("return {" .. ("nil,"):rep(arraysize) .. ("[0]=nil,"):rep(hashsize) .. "}")()
|
||||||
|
end,
|
||||||
|
|
||||||
shrink = function(image, bgCol)
|
shrink = function(image, bgCol)
|
||||||
local results, width, height, bgCol = {{}, {}, {}}, 0, #image + #image % 3, bgCol or colours.black
|
local results, width, height, bgCol = {{}, {}, {}}, 0, #image + #image % 3, bgCol or colours.black
|
||||||
for i = 1, #image do if #image[i] > width then width = #image[i] end end
|
for i = 1, #image do if #image[i] > width then width = #image[i] end end
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ local function basaltUpdateEvent(event, ...)
|
|||||||
local mouseEvents = {
|
local mouseEvents = {
|
||||||
mouse_click = mainFrame.mouseHandler,
|
mouse_click = mainFrame.mouseHandler,
|
||||||
mouse_up = mainFrame.mouseUpHandler,
|
mouse_up = mainFrame.mouseUpHandler,
|
||||||
mouse_scroll = mainFrame.mouseScrollHandler,
|
mouse_scroll = mainFrame.scrollHandler,
|
||||||
mouse_drag = mouseDragEvent,
|
mouse_drag = mouseDragEvent,
|
||||||
mouse_move = mouseMoveEvent,
|
mouse_move = mouseMoveEvent,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ return function(name)
|
|||||||
|
|
||||||
clear = function(self)
|
clear = function(self)
|
||||||
list = {}
|
list = {}
|
||||||
self:setValue({})
|
self:setValue({}, false)
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
@@ -101,7 +101,7 @@ return function(name)
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
selectItem = function(self, index)
|
selectItem = function(self, index)
|
||||||
self:setValue(list[index] or {})
|
self:setValue(list[index] or {}, false)
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ return function(name)
|
|||||||
|
|
||||||
addItem = function(self, text, bgCol, fgCol, ...)
|
addItem = function(self, text, bgCol, fgCol, ...)
|
||||||
table.insert(list, { text = text, bgCol = bgCol or self.bgColor, fgCol = fgCol or self.fgColor, args = { ... } })
|
table.insert(list, { text = text, bgCol = bgCol or self.bgColor, fgCol = fgCol or self.fgColor, args = { ... } })
|
||||||
if (#list == 1) then
|
if (#list <= 1) then
|
||||||
self:setValue(list[1])
|
self:setValue(list[1], false)
|
||||||
end
|
end
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
@@ -66,7 +66,7 @@ return function(name)
|
|||||||
|
|
||||||
clear = function(self)
|
clear = function(self)
|
||||||
list = {}
|
list = {}
|
||||||
self:setValue({})
|
self:setValue({}, false)
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
@@ -83,7 +83,7 @@ return function(name)
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
selectItem = function(self, index)
|
selectItem = function(self, index)
|
||||||
self:setValue(list[index] or {})
|
self:setValue(list[index] or {}, false)
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ return function(name)
|
|||||||
|
|
||||||
clear = function(self)
|
clear = function(self)
|
||||||
list = {}
|
list = {}
|
||||||
self:setValue({})
|
self:setValue({}, false)
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
@@ -142,7 +142,7 @@ return function(name)
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
selectItem = function(self, index)
|
selectItem = function(self, index)
|
||||||
self:setValue(list[index] or {})
|
self:setValue(list[index] or {}, false)
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ return function(name)
|
|||||||
|
|
||||||
clear = function(self)
|
clear = function(self)
|
||||||
list = {}
|
list = {}
|
||||||
self:setValue({})
|
self:setValue({}, false)
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
@@ -94,7 +94,7 @@ return function(name)
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
selectItem = function(self, index)
|
selectItem = function(self, index)
|
||||||
self:setValue(list[index] or {})
|
self:setValue(list[index] or {}, false)
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
end;
|
end;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ local tHex = require("tHex")
|
|||||||
local log = require("basaltLogs")
|
local log = require("basaltLogs")
|
||||||
local xmlValue = require("utils").getValueFromXML
|
local xmlValue = require("utils").getValueFromXML
|
||||||
|
|
||||||
local rep = string.rep
|
local rep,find,gmatch,sub,len = string.rep,string.find,string.gmatch,string.sub,string.len
|
||||||
|
|
||||||
return function(name)
|
return function(name)
|
||||||
local base = Object(name)
|
local base = Object(name)
|
||||||
@@ -23,13 +23,13 @@ return function(name)
|
|||||||
local function stringGetPositions(str, word)
|
local function stringGetPositions(str, word)
|
||||||
local pos = {}
|
local pos = {}
|
||||||
if(str:len()>0)then
|
if(str:len()>0)then
|
||||||
for w in string.gmatch(str, word)do
|
for w in gmatch(str, word)do
|
||||||
local s, e = string.find(str, w)
|
local s, e = find(str, w)
|
||||||
if(s~=nil)and(e~=nil)then
|
if(s~=nil)and(e~=nil)then
|
||||||
table.insert(pos,s)
|
table.insert(pos,s)
|
||||||
table.insert(pos,e)
|
table.insert(pos,e)
|
||||||
local startL = string.sub(str, 1, (s-1))
|
local startL = sub(str, 1, (s-1))
|
||||||
local endL = string.sub(str, e+1, str:len())
|
local endL = sub(str, e+1, str:len())
|
||||||
str = startL..(":"):rep(w:len())..endL
|
str = startL..(":"):rep(w:len())..endL
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user