58 lines
1.2 KiB
Plaintext
58 lines
1.2 KiB
Plaintext
--@include element.txt
|
|
|
|
require("element.txt")
|
|
|
|
ECheckbox = class("ECheckbox", Element)
|
|
|
|
function ECheckbox:initialize()
|
|
Element.initialize(self)
|
|
|
|
self._checked = false
|
|
|
|
self:setSize(16, 16)
|
|
self:setColorScheme({
|
|
border = {
|
|
Color(209, 209, 209),
|
|
hover = Color(255, 255, 255),
|
|
disabled = Color(130, 130, 130)
|
|
},
|
|
mark = {
|
|
Color(81, 92, 107),
|
|
disabled = Color(40, 46, 53)
|
|
}
|
|
})
|
|
end
|
|
|
|
function ECheckbox:setChecked(state)
|
|
self._checked = state
|
|
|
|
self:onChange(state)
|
|
end
|
|
|
|
function ECheckbox:isChecked()
|
|
return self._checked
|
|
end
|
|
|
|
function ECheckbox:toggle()
|
|
self:setChecked(!self:isChecked())
|
|
end
|
|
|
|
function ECheckbox:onMousePressed(x, y, key, keyName)
|
|
if keyName == "MOUSE1" then
|
|
self:toggle()
|
|
end
|
|
end
|
|
|
|
function ECheckbox:paint(x, y, w, h)
|
|
render.setColor(self:isChecked() and self:getColorFromScheme("mark") or Color(0, 0, 0, 0))
|
|
render.drawRectFast(x + 4, y + 4, w - 8, h - 8)
|
|
|
|
render.setColor(self:getColorFromScheme("border"))
|
|
render.drawRectOutline(x, y, w, h, 1)
|
|
render.drawRectOutline(x + 1, y + 1, w - 2, h - 2, 1)
|
|
end
|
|
|
|
-- STUB
|
|
|
|
function ECheckbox:onChange(state)
|
|
end |