- added a onSelect event for lists
- added docs for onSelect
- added addPlugin and addObject docs
This commit is contained in:
Robert Jelic
2023-05-10 17:21:17 +02:00
parent d2f4717500
commit e35708902c
6 changed files with 117 additions and 5 deletions

View File

@@ -84,7 +84,16 @@ return function(name, basalt)
end,
removeItem = function(self, index)
table.remove(list, index)
if(type(index)=="number")then
table.remove(list, index)
elseif(type(index)=="table")then
for k,v in pairs(list)do
if(v==index)then
table.remove(list, k)
break
end
end
end
self:updateDraw()
return self
end,
@@ -193,6 +202,7 @@ return function(name, basalt)
if (list[n + yOffset] ~= nil) then
if (obx <= x) and (obx + w > x) and (oby + n - 1 == y) then
self:setValue(list[n + yOffset])
self:selectHandler()
self:updateDraw()
end
end
@@ -211,11 +221,22 @@ return function(name, basalt)
return self:mouseHandler(1, x, y)
end,
onSelect = function(self, ...)
for _,v in pairs(table.pack(...))do
if(type(v)=="function")then
self:registerEvent("select_item", v)
end
end
return self
end,
selectHandler = function(self)
self:sendEvent("select_item", self:getValue())
end,
draw = function(self)
base.draw(self)
self:addDraw("list", function()
local parent = self:getParent()
local obx, oby = self:getPosition()
local w, h = self:getSize()
for n = 1, h do
if list[n + yOffset] then
@@ -224,7 +245,9 @@ return function(name, basalt)
if list[n + yOffset] == self:getValue() and selectionColorActive then
fg, bg = itemSelectedFG, itemSelectedBG
end
self:addBlit(1, n, t, tHex[fg]:rep(#t), tHex[bg]:rep(#t))
self:addText(1, n, t)
self:addBG(1, n, tHex[bg]:rep(w))
self:addFG(1, n, tHex[fg]:rep(w))
end
end
end)