docs again

This commit is contained in:
Robert Jelic
2022-07-18 13:58:43 +02:00
parent af34fa1a18
commit 8157c025ea
12 changed files with 535 additions and 260 deletions

View File

@@ -9,7 +9,7 @@ local debugger = true
local projectDirectory = fs.getDir(table.pack(...)[2] or "")
local activeKey, frames, monFrames, variables = {}, {}, {}, {}
local activeKey, frames, monFrames, variables, shedules = {}, {}, {}, {}, {}
local mainFrame, activeFrame, focusedObject, updaterActive
if not term.isColor or not term.isColor() then
@@ -85,6 +85,27 @@ local bInstance = {
end
}
local function handleShedules(event, p1, p2, p3, p4)
if(#shedules>0)then
local finished = {}
for n=1,#shedules do
if(shedules[n]~=nil)then
if (coroutine.status(shedules[n]) == "suspended")then
local ok, result = coroutine.resume(shedules[n], event, p1, p2, p3, p4)
if not(ok)then
table.insert(finished, n)
end
else
table.insert(finished, n)
end
end
end
for n=1,#finished do
table.remove(shedules, finished[n]-(n-1))
end
end
end
local function drawFrames()
if(updaterActive)then
if(mainFrame~=nil)then
@@ -139,6 +160,7 @@ local function basaltUpdateEvent(event, p1, p2, p3, p4)
for _, v in pairs(frames) do
v:eventHandler(event, p1, p2, p3, p4)
end
handleShedules(event, p1, p2, p3, p4)
drawFrames()
end
@@ -207,6 +229,16 @@ basalt = {
end
end
end,
shedule = function(f)
assert(f~="function", "Shedule needs a function in order to work!")
local co = coroutine.create(f)
local ok, result = coroutine.resume(co)
if(ok)then
table.insert(shedules, co)
end
return co
end,
createFrame = function(name)
name = name or uuid()

View File

@@ -473,8 +473,8 @@ return function(name, parent)
end;
execute = function(self, path, ...)
cachedPath = path
curProcess = process:new(path, pWindow, ...)
cachedPath = path or cachedPath
curProcess = process:new(cachedPath, pWindow, ...)
pWindow.setBackgroundColor(colors.black)
pWindow.setTextColor(colors.white)
pWindow.clear()

View File

@@ -36,9 +36,6 @@ return function(name)
if(xmlValue("progressSymbol", data)~=nil)then activeBarSymbol = xmlValue("progressSymbol", data) end
if(xmlValue("backgroundSymbol", data)~=nil)then bgBarSymbol = xmlValue("backgroundSymbol", data) end
if(xmlValue("progressSymbolColor", data)~=nil)then activeBarSymbolCol = colors[xmlValue("progressSymbolColor", data)] end
if(xmlValue("scrollable", data)~=nil)then if(xmlValue("scrollable", data))then self:setScrollable(true) else self:setScrollable(false) end end
if(xmlValue("offset", data)~=nil)then self:setOffset(xmlValue("offset", data)) end
if(xmlValue("space", data)~=nil)then space = xmlValue("space", data) end
if(xmlValue("onDone", data)~=nil)then self:onProgressDone(baseFrame:getVariable(xmlValue("onDone", data))) end
return self
end,

View File

@@ -1,47 +0,0 @@
local Object = require("Object")
return function(name)
local base = Object(name) -- this will load the base object class, it is necessary if you want to make a visual object, otherwise you dont need that.
local objectType = "Example" -- here is the object type, make sure it is the same as the file name - this way you can also make sure its unique
-- here you could set some default values, but its not necessary, it doesn't matter if you call the functions or change the values directly, maybe i should change that
--i guess its better if you call functions base:setBackground, base:setSize and so on.
base.width = 12
base.height = 1
base.bgColor = colors.lightGray
base.fgColor = colors.gray
base:setValue(false)
base:setZIndex(5) -- if you want to change the zIndex always use the function
local object = { -- here you start your unique object class, please always make sure a getType exists!
getType = function(self)
return objectType
end;
mouseClickHandler = function(self, event, button, x, y) -- this is your extended mouseClickHandler, if you want something to happen if the user clicks on that
if (base.mouseClickHandler(self, event, button, x, y)) then -- here you access the base class mouseClickHandler it will return true if the user really clicks on the object
local obx, oby = self:getAbsolutePosition(self:getAnchorPosition()) --getAnchorPosition is obviously for returning the x and y coords changed by the anchor system, absolute position explains itself i guess
if ((event == "mouse_click") or (event == "mouse_drag")) and (button == 1) then
--here you can create your logic
end
return true -- please always return true if base.mouseClickHandler also returns true, otherwise your object wont get focused.
end
end;
draw = function(self) -- if your object is visual, you will need a draw function
if (base.draw(self)) then
if (self.parent ~= nil) then
local obx, oby = self:getAnchorPosition()
--self.parent:drawBackgroundbox(obx, oby, self.width, self.height, self.bgColor) -- changes the background color of that object
--self.parent:drawForegroundbox(obx, oby, self.width, self.height, self.fgColor) -- changes the foreground (textcolor) color of that object
--self.parent:writeText(obx, oby, "Some Text", self.bgColor, self.fgColor) -- writes something on the screen, also able to change its bgcolor and fgcolor
--the draw functions always gets called after something got visually changed. I am always redrawing the entire screen, but only if something has changed.
end
end
end;
}
return setmetatable(object, base) -- required
end