local winhlp = require "winhlp" local function drawLine(termlike, pair) termlike.setBackgroundColor(colors.black) termlike.setTextColor(colors.yellow) termlike.write(tostring(pair.key)) termlike.setTextColor(colors.white) local value = tostring(pair.value) local padding = winhlp.alignRightPadding(termlike, #value + 1) termlike.write(string.format("%" .. padding+1 .. "s", " ")) termlike.write(value) end local listview = (require "listview"):new{drawEntry=drawLine} local keys = {[1]="a", [2]="c"} local obj = {a="b", c="d"} local function setTerm(termlike) listview.frame = termlike end local function setObject(other) obj = other keys = {} for key, _ in other do keys.insert(key) end table.sort(keys) end local function fetch(wait_for) local currentIdx = 1 for i, key in pairs(keys) do listview:updateItemAt(currentIdx, {key=key, value=obj[key]}) currentIdx = currentIdx + 1 end listview:clearFrom(currentIdx) end local function displayTab(self) listview:updatePage(self.scrollPos) end local function estimatedHeight() return #keys end return { name="inspect", setTerm=setTerm, setObject=setObject, fetch=fetch, displayTab=displayTab, estimatedHeight=estimatedHeight, }