114 lines
3.3 KiB
Lua
114 lines
3.3 KiB
Lua
local utils = require("utils")
|
|
local tHex = require("tHex")
|
|
|
|
return function(name, basalt)
|
|
-- Checkbox
|
|
local base = basalt.getObject("ChangeableObject")(name, basalt)
|
|
local objectType = "Checkbox"
|
|
|
|
base:setZIndex(5)
|
|
base:setValue(false)
|
|
base:setSize(1, 1)
|
|
|
|
local symbol,inactiveSymbol,text,textPos = "\42"," ","","right"
|
|
|
|
local object = {
|
|
load = function(self)
|
|
self:listenEvent("mouse_click", self)
|
|
self:listenEvent("mouse_up", self)
|
|
end,
|
|
|
|
getType = function(self)
|
|
return objectType
|
|
end,
|
|
isType = function(self, t)
|
|
return objectType==t or base.isType~=nil and base.isType(t) or false
|
|
end,
|
|
|
|
setSymbol = function(self, sym, inactive)
|
|
symbol = sym or symbol
|
|
inactiveSymbol = inactive or inactiveSymbol
|
|
self:updateDraw()
|
|
return self
|
|
end,
|
|
|
|
setActiveSymbol = function(self, sym)
|
|
return self:setSymbol(sym, nil)
|
|
end,
|
|
|
|
setInactiveSymbol = function(self, inactive)
|
|
return self:setSymbol(nil, inactive)
|
|
end,
|
|
|
|
getSymbol = function(self)
|
|
return symbol, inactiveSymbol
|
|
end,
|
|
|
|
getActiveSymbol = function(self)
|
|
return symbol
|
|
end,
|
|
|
|
getInactiveSymbol = function(self)
|
|
return inactiveSymbol
|
|
end,
|
|
|
|
setText = function(self, _text)
|
|
text = _text
|
|
return self
|
|
end,
|
|
|
|
getText = function(self)
|
|
return text
|
|
end,
|
|
|
|
setTextPosition = function(self, pos)
|
|
textPos = pos or textPos
|
|
return self
|
|
end,
|
|
|
|
getTextPosition = function(self)
|
|
return textPos
|
|
end,
|
|
|
|
setChecked = base.setValue,
|
|
|
|
getChecked = base.getValue,
|
|
|
|
mouseHandler = function(self, button, x, y)
|
|
if (base.mouseHandler(self, button, x, y)) then
|
|
if(button == 1)then
|
|
if (self:getValue() ~= true) and (self:getValue() ~= false) then
|
|
self:setValue(false)
|
|
else
|
|
self:setValue(not self:getValue())
|
|
end
|
|
self:updateDraw()
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end,
|
|
|
|
draw = function(self)
|
|
base.draw(self)
|
|
self:addDraw("checkbox", function()
|
|
local obx, oby = self:getPosition()
|
|
local w,h = self:getSize()
|
|
local verticalAlign = utils.getTextVerticalAlign(h, "center")
|
|
local bg,fg = self:getBackground(), self:getForeground()
|
|
if (self:getValue()) then
|
|
self:addBlit(1, verticalAlign, utils.getTextHorizontalAlign(symbol, w, "center"), tHex[fg], tHex[bg])
|
|
else
|
|
self:addBlit(1, verticalAlign, utils.getTextHorizontalAlign(inactiveSymbol, w, "center"), tHex[fg], tHex[bg])
|
|
end
|
|
if(text~="")then
|
|
local align = textPos=="left" and -text:len() or 3
|
|
self:addText(align, verticalAlign, text)
|
|
end
|
|
end)
|
|
end,
|
|
}
|
|
|
|
object.__index = object
|
|
return setmetatable(object, base)
|
|
end |