20#include "pedigree/kernel/Log.h"
21#include "pedigree/kernel/debugger/DebuggerIO.h"
22#include "pedigree/kernel/debugger/commands/LogViewer.h"
33 pScreen->disableCli();
37 resize(pScreen->
getWidth(), pScreen->getHeight() - 2);
38 horizontalScrollTo(0);
39 setScrollKeys(
'j',
'k');
46 pScreen->
drawString(
"Pedigree debugger - Log viewer", 0, 0, DebuggerIO::White, DebuggerIO::Green);
53 DebuggerIO::White, DebuggerIO::Green);
55 NormalStaticString footer(
"h/l: left/right j/k: up/down backspace/space: page q: quit");
56 footer.truncate(pScreen->
getWidth());
57 pScreen->
drawString(footer, pScreen->getHeight() - 1, 0, DebuggerIO::White, DebuggerIO::Green);
66 while (!(c = pScreen->
getChar()))
79 scroll(
static_cast<ssize_t
>(height()));
81 scroll(-
static_cast<ssize_t
>(height()));
90 pScreen->
drawString(
" ", 1, 0, DebuggerIO::White, DebuggerIO::Black);
105 Line.append(entry.timestamp, 10, 8,
'0');
106 level = entry.severity;
109 Line.append(entry.timestamp, 10, 8,
'0');
110 level = entry.severity;
115 colour = DebuggerIO::White;
118 colour = DebuggerIO::LightBlue;
121 colour = DebuggerIO::Green;
124 colour = DebuggerIO::Yellow;
127 colour = DebuggerIO::Magenta;
130 colour = DebuggerIO::Red;
136const char* LogViewer::getLine2(
size_t index,
size_t& colOffset,
DebuggerIO::Colour& colour,
144 Line.append(entry.str);
147 Line.append(entry.str);
150 colour = DebuggerIO::White;
154size_t LogViewer::getLineCount() {
159size_t LogViewer::getContentWidth() {
164 width = max(width,
static_cast<size_t>(11 + log.
getStaticEntry(i).
str.length()));
virtual void enableCli()=0
virtual void drawString(const char *str, size_t row, size_t col, Colour foreColour, Colour backColour)=0
virtual size_t getWidth()=0
virtual void drawHorizontalLine(char c, size_t row, size_t colStart, size_t colEnd, Colour foreColour, Colour backColour)=0
void autocomplete(const HugeStaticString &input, HugeStaticString &output)
bool execute(const HugeStaticString &input, HugeStaticString &output, InterruptState &state, DebuggerIO *screen)
size_t getStaticEntryCount() const
const StaticLogEntry & getStaticEntry(size_t n) const
size_t getDynamicEntryCount() const
static EXPORTED_PUBLIC Log & instance()
const DynamicLogEntry & getDynamicEntry(size_t n) const
StaticString< LOG_LENGTH > str