aboutsummaryrefslogtreecommitdiff
path: root/gui/console.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/console.cpp')
-rw-r--r--gui/console.cpp285
1 files changed, 141 insertions, 144 deletions
diff --git a/gui/console.cpp b/gui/console.cpp
index a35903a189..815f6f5c1c 100644
--- a/gui/console.cpp
+++ b/gui/console.cpp
@@ -141,146 +141,143 @@ void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
int i;
switch (keycode) {
- case '\n': // enter/return
- case '\r': {
- if (_caretVisible)
- drawCaret(true);
+ case '\n': // enter/return
+ case '\r': {
+ if (_caretVisible)
+ drawCaret(true);
- nextLine();
+ nextLine();
- int len = _promptEndPos - _promptStartPos;
- bool keepRunning = true;
+ int len = _promptEndPos - _promptStartPos;
+ bool keepRunning = true;
- // FIXME - len should NEVER be negative. If anything makes it negative,
- // then the code doing that is buggy and needs to be fixed.
- assert(len >= 0);
+ // FIXME - len should NEVER be negative. If anything makes it negative,
+ // then the code doing that is buggy and needs to be fixed.
+ assert(len >= 0);
- if (len > 0) {
+ if (len > 0) {
- // We have to allocate the string buffer with new, since VC++ sadly does not
- // comply to the C++ standard, so we can't use a dynamic sized stack array.
- char *str = new char[len + 1];
+ // We have to allocate the string buffer with new, since VC++ sadly does not
+ // comply to the C++ standard, so we can't use a dynamic sized stack array.
+ char *str = new char[len + 1];
- // Copy the user input to str
- for (i = 0; i < len; i++)
- str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
- str[len] = '\0';
+ // Copy the user input to str
+ for (i = 0; i < len; i++)
+ str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
+ str[len] = '\0';
- // Add the input to the history
- addToHistory(str);
+ // Add the input to the history
+ addToHistory(str);
- // Pass it to the input callback, if any
- if (_callbackProc)
- keepRunning = (*_callbackProc)(this, str, _callbackRefCon);
+ // Pass it to the input callback, if any
+ if (_callbackProc)
+ keepRunning = (*_callbackProc)(this, str, _callbackRefCon);
- // Get rid of the string buffer
- delete [] str;
- }
+ // Get rid of the string buffer
+ delete [] str;
+ }
- print(PROMPT);
- _promptStartPos = _promptEndPos = _currentPos;
+ print(PROMPT);
+ _promptStartPos = _promptEndPos = _currentPos;
- draw();
- if (!keepRunning)
- close();
- break;
- }
- case 27: // escape
+ draw();
+ if (!keepRunning)
close();
- break;
- case 8: // backspace
- if (_caretVisible)
- drawCaret(true);
-
- if (_currentPos > _promptStartPos) {
- _currentPos--;
- killChar();
- }
- scrollToCurrent();
- draw(); // FIXME - not nice to redraw the full console just for one char!
- break;
- case 9: // tab
- {
- if (_completionCallbackProc) {
- int len = _currentPos - _promptStartPos;
- assert(len >= 0);
- char *str = new char[len + 1];
+ break;
+ }
+ case 27: // escape
+ close();
+ break;
+ case 8: // backspace
+ if (_caretVisible)
+ drawCaret(true);
+
+ if (_currentPos > _promptStartPos) {
+ _currentPos--;
+ killChar();
+ }
+ scrollToCurrent();
+ draw(); // FIXME - not nice to redraw the full console just for one char!
+ break;
+ case 9: // tab
+ {
+ if (_completionCallbackProc) {
+ int len = _currentPos - _promptStartPos;
+ assert(len >= 0);
+ char *str = new char[len + 1];
- // Copy the user input to str
- for (i = 0; i < len; i++)
- str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
- str[len] = '\0';
-
- char *completion = 0;
- if ((*_completionCallbackProc)(this, str, completion,
- _callbackRefCon))
- {
- if (_caretVisible)
- drawCaret(true);
- insertIntoPrompt(completion);
- scrollToCurrent();
- draw();
- delete[] completion;
- }
- delete[] str;
+ // Copy the user input to str
+ for (i = 0; i < len; i++)
+ str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
+ str[len] = '\0';
+
+ char *completion = 0;
+ if ((*_completionCallbackProc)(this, str, completion, _callbackRefCon)) {
+ if (_caretVisible)
+ drawCaret(true);
+ insertIntoPrompt(completion);
+ scrollToCurrent();
+ draw();
+ delete[] completion;
}
- break;
+ delete[] str;
}
- case 127:
- killChar();
- draw();
- break;
+ break;
+ }
+ case 127:
+ killChar();
+ draw();
+ break;
/*
- case 256 + 24: // pageup
- _selectedItem -= _entriesPerPage - 1;
- if (_selectedItem < 0)
- _selectedItem = 0;
- break;
- case 256 + 25: // pagedown
- _selectedItem += _entriesPerPage - 1;
- if (_selectedItem >= _list.size() )
- _selectedItem = _list.size() - 1;
- break;
+ case 256 + 24: // pageup
+ _selectedItem -= _entriesPerPage - 1;
+ if (_selectedItem < 0)
+ _selectedItem = 0;
+ break;
+ case 256 + 25: // pagedown
+ _selectedItem += _entriesPerPage - 1;
+ if (_selectedItem >= _list.size() )
+ _selectedItem = _list.size() - 1;
+ break;
*/
- case 256 + 22: // home
- _scrollLine = _linesPerPage - 1; // FIXME - this is not correct after a wrap around
- updateScrollBar();
- draw();
- break;
- case 256 + 23: // end
- _scrollLine = _currentPos / _lineWidth;
- updateScrollBar();
- draw();
- break;
- case 273: // cursor up
- historyScroll(+1);
- break;
- case 274: // cursor down
- historyScroll(-1);
- break;
- case 275: // cursor right
- if (_currentPos < _promptEndPos)
- _currentPos++;
- draw();
- break;
- case 276: // cursor left
- if (_currentPos > _promptStartPos)
- _currentPos--;
- draw();
- break;
-
- default:
- if (ascii == '~' || ascii == '#') {
- close();
- } else if (modifiers == OSystem::KBD_CTRL) {
- specialKeys(keycode);
- } else if (isprint((char)ascii)) {
- for (i = _promptEndPos-1; i >= _currentPos; i--)
- _buffer[(i + 1) % kBufferSize] = _buffer[i % kBufferSize];
- _promptEndPos++;
- putchar((char)ascii);
- scrollToCurrent();
- }
+ case 256 + 22: // home
+ _scrollLine = _linesPerPage - 1; // FIXME - this is not correct after a wrap around
+ updateScrollBar();
+ draw();
+ break;
+ case 256 + 23: // end
+ _scrollLine = _currentPos / _lineWidth;
+ updateScrollBar();
+ draw();
+ break;
+ case 273: // cursor up
+ historyScroll(+1);
+ break;
+ case 274: // cursor down
+ historyScroll(-1);
+ break;
+ case 275: // cursor right
+ if (_currentPos < _promptEndPos)
+ _currentPos++;
+ draw();
+ break;
+ case 276: // cursor left
+ if (_currentPos > _promptStartPos)
+ _currentPos--;
+ draw();
+ break;
+ default:
+ if (ascii == '~' || ascii == '#') {
+ close();
+ } else if (modifiers == OSystem::KBD_CTRL) {
+ specialKeys(keycode);
+ } else if (isprint((char)ascii)) {
+ for (i = _promptEndPos-1; i >= _currentPos; i--)
+ _buffer[(i + 1) % kBufferSize] = _buffer[i % kBufferSize];
+ _promptEndPos++;
+ putchar((char)ascii);
+ scrollToCurrent();
+ }
}
}
@@ -310,28 +307,28 @@ void ConsoleDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
void ConsoleDialog::specialKeys(int keycode) {
switch (keycode) {
- case 'a':
- _currentPos = _promptStartPos;
- draw();
- break;
- case 'd':
- if (_currentPos < _promptEndPos) {
- killChar();
- draw();
- }
- break;
- case 'e':
- _currentPos = _promptEndPos;
- draw();
- break;
- case 'k':
- killLine();
- draw();
- break;
- case 'w':
- killLastWord();
+ case 'a':
+ _currentPos = _promptStartPos;
+ draw();
+ break;
+ case 'd':
+ if (_currentPos < _promptEndPos) {
+ killChar();
draw();
- break;
+ }
+ break;
+ case 'e':
+ _currentPos = _promptEndPos;
+ draw();
+ break;
+ case 'k':
+ killLine();
+ draw();
+ break;
+ case 'w':
+ killLastWord();
+ draw();
+ break;
}
}