1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- local core = require "core"
- local common = require "core.common"
- local config = require "core.config"
- local style = require "core.style"
- local View = require "core.view"
- local LogView = View:extend()
- function LogView:new()
- LogView.super.new(self)
- self.last_item = 0
- self.scrollable = true
- self.yoffset = 0
- end
- function LogView:get_name()
- return "Log"
- end
- function LogView:update()
- local item = core.log_items[#core.log_items]
- if self.last_item ~= item then
- self.last_item = item
- self.scroll.to.y = 0
- self.yoffset = -(style.font:get_height() + style.padding.y)
- end
- self.scroll.to.y = math.max(0, self.scroll.to.y)
- self:move_towards("yoffset", 0)
- LogView.super.update(self)
- end
- function LogView:draw()
- self:draw_background(style.background)
- local ox, oy = self:get_content_offset()
- local th = style.font:get_height()
- local y = oy + style.padding.y + self.yoffset
- for i = #core.log_items, 1, -1 do
- local x = ox + style.padding.x
- local item = core.log_items[i]
- local time = os.date(nil, item.time)
- x = renderer.draw_text(style.font, time, x, y, style.dim)
- x = x + style.padding.x
- local subx = x
- x = renderer.draw_text(style.font, item.text, x, y, style.text)
- x = renderer.draw_text(style.font, " in " .. item.view, x, y, style.dim)
- y = y + th
- if item.info then
- for line in item.info:gmatch("[^\n]+") do
- renderer.draw_text(style.font, line, subx, y, style.dim)
- y = y + th
- end
- end
- y = y + style.padding.y
- end
- end
- return LogView
|