diff options
Diffstat (limited to 'gui/debugger.cpp')
-rw-r--r-- | gui/debugger.cpp | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/gui/debugger.cpp b/gui/debugger.cpp index 466681e89d..c9b435963d 100644 --- a/gui/debugger.cpp +++ b/gui/debugger.cpp @@ -87,6 +87,19 @@ Debugger::~Debugger() { // Initialisation Functions +int Debugger::getCharsPerLine() { +#ifndef USE_TEXT_CONSOLE_FOR_DEBUGGER + const int charsPerLine = _debuggerDialog->getCharsPerLine(); +#elif defined(USE_READLINE) + int charsPerLine, rows; + rl_get_screen_size(&rows, &charsPerLine); +#else + // Can we do better? + const int charsPerLine = 80; +#endif + return charsPerLine; +} + int Debugger::debugPrintf(const char *format, ...) { va_list argptr; @@ -101,6 +114,37 @@ int Debugger::debugPrintf(const char *format, ...) { return count; } +void Debugger::debugPrintColumns(const Common::StringArray &list) { + uint maxLength = 0; + uint i, j; + + for (i = 0; i < list.size(); i++) { + if (list[i].size() > maxLength) + maxLength = list[i].size(); + } + + uint charsPerLine = getCharsPerLine(); + uint columnWidth = maxLength + 2; + uint columns = charsPerLine / columnWidth; + + uint lines = list.size() / columns; + + if (list.size() % columns) + lines++; + + // This won't always use all available columns, but even if it did the + // number of lines should be the same so that's good enough. + for (i = 0; i < lines; i++) { + for (j = 0; j < columns; j++) { + uint pos = i + j * lines; + if (pos < list.size()) { + debugPrintf("%*s", -columnWidth, list[pos].c_str()); + } + } + debugPrintf("\n"); + } +} + void Debugger::preEnter() { g_engine->pauseEngine(true); } @@ -447,15 +491,7 @@ bool Debugger::cmdExit(int argc, const char **argv) { // Print a list of all registered commands (and variables, if any), // nicely word-wrapped. bool Debugger::cmdHelp(int argc, const char **argv) { -#ifndef USE_TEXT_CONSOLE_FOR_DEBUGGER - const int charsPerLine = _debuggerDialog->getCharsPerLine(); -#elif defined(USE_READLINE) - int charsPerLine, rows; - rl_get_screen_size(&rows, &charsPerLine); -#else - // Can we do better? - const int charsPerLine = 80; -#endif + const int charsPerLine = getCharsPerLine(); int width, size; uint i; |