UI inspector
This commit is contained in:
54
sys/modules/opus/ui/components/CheckboxGrid.lua
Normal file
54
sys/modules/opus/ui/components/CheckboxGrid.lua
Normal file
@@ -0,0 +1,54 @@
|
||||
local class = require('opus.class')
|
||||
local UI = require('opus.ui')
|
||||
|
||||
local function safeValue(v)
|
||||
local t = type(v)
|
||||
if t == 'string' or t == 'number' then
|
||||
return v
|
||||
end
|
||||
return tostring(v)
|
||||
end
|
||||
|
||||
UI.CheckboxGrid = class(UI.Grid)
|
||||
UI.CheckboxGrid.defaults = {
|
||||
UIElement = 'CheckboxGrid',
|
||||
checkedKey = 'checked',
|
||||
accelerators = {
|
||||
space = 'grid_toggle',
|
||||
},
|
||||
}
|
||||
function UI.CheckboxGrid:drawRow(sb, row, focused, bg, fg)
|
||||
local ind = focused and self.focusIndicator or ' '
|
||||
|
||||
for _,col in pairs(self.columns) do
|
||||
sb:write(ind .. safeValue(row[col.key] or ''),
|
||||
col.cw + 1,
|
||||
col.align,
|
||||
col.backgroundColor or bg,
|
||||
col.textColor or fg)
|
||||
ind = ' '
|
||||
end
|
||||
end
|
||||
|
||||
function UI.CheckboxGrid:eventHandler(event)
|
||||
if event.type == 'key_enter' and self.selected then
|
||||
self.selected.checked = not self.selected.checked
|
||||
self:draw()
|
||||
self:emit({ type = 'grid_check', checked = self.selected, element = self })
|
||||
else
|
||||
return UI.Grid.eventHandler(self, event)
|
||||
end
|
||||
end
|
||||
|
||||
function UI.CheckboxGrid.example()
|
||||
return UI.CheckboxGrid {
|
||||
values = {
|
||||
{ checked = false, name = 'unchecked' },
|
||||
{ checked = true, name = 'checked' },
|
||||
},
|
||||
columns = {
|
||||
{ heading = 'Checked', key = 'checked' },
|
||||
{ heading = 'Data', key = 'name', }
|
||||
},
|
||||
}
|
||||
end
|
||||
Reference in New Issue
Block a user