aboutsummaryrefslogtreecommitdiff
path: root/gui/console.cpp
diff options
context:
space:
mode:
authorMax Horn2002-12-15 00:36:34 +0000
committerMax Horn2002-12-15 00:36:34 +0000
commitf7b692dfbbcf73b7a43019f66e66bc7f3bd591d1 (patch)
tree981d4a3e46c6e305105744690a34145cb1dbaed4 /gui/console.cpp
parentd58ec10ea2abf739ee129fef893397a45d8da04c (diff)
downloadscummvm-rg350-f7b692dfbbcf73b7a43019f66e66bc7f3bd591d1.tar.gz
scummvm-rg350-f7b692dfbbcf73b7a43019f66e66bc7f3bd591d1.tar.bz2
scummvm-rg350-f7b692dfbbcf73b7a43019f66e66bc7f3bd591d1.zip
added input callback hook to console
svn-id: r5973
Diffstat (limited to 'gui/console.cpp')
-rw-r--r--gui/console.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/gui/console.cpp b/gui/console.cpp
index a416d57192..9318e73d9a 100644
--- a/gui/console.cpp
+++ b/gui/console.cpp
@@ -48,7 +48,7 @@ This code is not finished, so please don't complain :-)
* - a *lot* of others things, this code is in no way complete and heavily under progress
*/
ConsoleDialog::ConsoleDialog(NewGui *gui)
- : Dialog(gui, 0, 0, 320, 6*kLineHeight+2)
+ : Dialog(gui, 0, 0, 320, 12*kLineHeight+2)
{
_lineWidth = (_w - kScrollBarWidth - 2) / kCharWidth;
_linesPerPage = (_h - 2) / kLineHeight;
@@ -70,8 +70,19 @@ ConsoleDialog::ConsoleDialog(NewGui *gui)
print("ScummVM "SCUMMVM_VERSION" (" SCUMMVM_CVS ")\n");
print("Console is ready\n");
- print(PROMPT);
- _promptStartPos = _promptEndPos = _currentPos;
+ _promptStartPos = _promptEndPos = -1;
+
+ _callbackProc = 0;
+ _callbackRefCon = 0;
+}
+
+void ConsoleDialog::open()
+{
+ Dialog::open();
+ if (_promptStartPos == -1) {
+ print(PROMPT);
+ _promptStartPos = _promptEndPos = _currentPos;
+ }
}
void ConsoleDialog::drawDialog()
@@ -138,12 +149,18 @@ void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers)
for (i = 0; i < len; i++)
str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
str[len] = 0;
- printf("You entered '%s'\n", str);
+
+ bool keepRunning = true;
+ if (_callbackProc)
+ keepRunning = (*_callbackProc)(this, str, _callbackRefCon);
+ //printf("You entered '%s'\n", str);
print(PROMPT);
_promptStartPos = _promptEndPos = _currentPos;
draw();
+ if (!keepRunning)
+ close();
break;
}
case 27: // escape