diff --git a/source/project/lib/utils.lua b/source/project/lib/utils.lua index 94a38f4..f9f3c7a 100644 --- a/source/project/lib/utils.lua +++ b/source/project/lib/utils.lua @@ -23,6 +23,7 @@ local function getTextVerticalAlign(h, textAlign) if (textAlign == "bottom") then offset = h end + if(offset<1)then offset=1 end return offset end diff --git a/source/project/mainBottom.lua b/source/project/mainBottom.lua index aff54cd..1c47d5a 100644 --- a/source/project/mainBottom.lua +++ b/source/project/mainBottom.lua @@ -32,11 +32,7 @@ function basalt.autoUpdate(isActive) drawHelper.update() while updaterActive do local event, p1, p2, p3, p4 = os.pullEventRaw() -- change to raw later - local ok, err = pcall(basaltUpdateEvent(event, p1, p2, p3, p4)) - if not(ok)then - parentTerminal.clear() - error(err) - end + basaltUpdateEvent(event, p1, p2, p3, p4) end end @@ -91,13 +87,8 @@ end if (basalt.debugger) then basalt.debugFrame = basalt.createFrame("basaltDebuggingFrame"):showBar():setBackground(colors.lightGray):setBar("Debug", colors.black, colors.gray) basalt.debugList = basalt.debugFrame:addList("debugList"):setSize(basalt.debugFrame.width - 2, basalt.debugFrame.height - 3):setPosition(2, 3):setScrollable(true):show() - basalt.debugFrame:addButton("back"):setAnchor("right"):setSize(1, 1):setText("\22"):onClick(function() - basalt.oldFrame:show() - end) :setBackground(colors.red):show() - basalt.debugLabel = basalt.debugFrame:addLabel("debugLabel"):onClick(function() - basalt.oldFrame = activeFrame - basalt.debugFrame:show() - end) :setBackground(colors.black):setForeground(colors.white):setAnchor("bottom"):setZIndex(20):show() + basalt.debugFrame:addButton("back"):setAnchor("right"):setSize(1, 1):setText("\22"):onClick(function() basalt.oldFrame:show() end):setBackground(colors.red):show() + basalt.debugLabel = basalt.debugFrame:addLabel("debugLabel"):onClick(function() basalt.oldFrame = activeFrame basalt.debugFrame:show() end):setBackground(colors.black):setForeground(colors.white):setAnchor("bottom"):setZIndex(20):show() end if (basalt.debugger) then diff --git a/source/project/objects/Label.lua b/source/project/objects/Label.lua index e85af28..4638064 100644 --- a/source/project/objects/Label.lua +++ b/source/project/objects/Label.lua @@ -8,6 +8,9 @@ local function Label(name) local autoWidth = true base:setValue("") + local textHorizontalAlign = "left" + local textVerticalAlign = "top" + local object = { getType = function(self) return objectType @@ -21,9 +24,17 @@ local function Label(name) return self end; + setTextAlign = function(self, hor, vert) + textHorizontalAlign = hor or textHorizontalAlign + textVerticalAlign = vert or textVerticalAlign + self:setVisualChanged() + return self + end; + setSize = function(self, width, height) - self.width, self.height = width, height + base.setSize(self, width, height) autoWidth = false + self:setVisualChanged() return self end; @@ -31,9 +42,15 @@ local function Label(name) if (base.draw(self)) then if (self.parent ~= nil) then local obx, oby = self:getAnchorPosition() - self.parent:setBackground(obx, oby, self.width, self.height, self.bgColor) - self.parent:setForeground(obx, oby, self.width, self.height, self.fgColor) - self.parent:writeText(obx, oby, self:getValue():sub(1, self.width), self.bgColor, self.fgColor) + local verticalAlign = getTextVerticalAlign(self.height, textVerticalAlign) + self.parent:drawBackgroundBox(obx, oby, self.width, self.height, self.bgColor) + self.parent:drawForegroundBox(obx, oby, self.width, self.height, self.fgColor) + self.parent:drawTextBox(obx, oby, self.width, self.height, " ") + for n = 1, self.height do + if (n == verticalAlign) then + self.parent:writeText(obx, oby + (n - 1), getTextHorizontalAlign(self:getValue(), self.width, textHorizontalAlign), self.bgColor, self.fgColor) + end + end end end end;