[Scummvm-cvs-logs] CVS: scummvm/gui console.cpp,1.12,1.13 console.h,1.9,1.10

Max Horn fingolfin at users.sourceforge.net
Sat Dec 14 16:37:03 CET 2002


Update of /cvsroot/scummvm/scummvm/gui
In directory sc8-pr-cvs1:/tmp/cvs-serv31576

Modified Files:
	console.cpp console.h 
Log Message:
added input callback hook to console

Index: console.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/console.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- console.cpp	14 Dec 2002 22:37:42 -0000	1.12
+++ console.cpp	15 Dec 2002 00:36:34 -0000	1.13
@@ -48,7 +48,7 @@
  * - 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 @@
 	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 @@
 			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

Index: console.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/console.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- console.h	14 Dec 2002 22:25:09 -0000	1.9
+++ console.h	15 Dec 2002 00:36:34 -0000	1.10
@@ -23,8 +23,6 @@
 
 #include "dialog.h"
 #include "newgui.h"
-#include "common/str.h"
-#include "common/list.h"
 
 #include <stdarg.h>
 
@@ -37,7 +35,9 @@
 class ScrollBarWidget;
 
 class ConsoleDialog : public Dialog {
-	typedef ScummVM::String String;
+public:
+	typedef bool (*InputCallbackProc)(ConsoleDialog *console, const char *input, void *refCon);
+
 protected:
 	char	_buffer[kBufferSize];
 	int		_linesInBuffer;
@@ -55,10 +55,16 @@
 	uint32	_caretTime;
 	
 	ScrollBarWidget	*_scrollBar;
+	
+	// The _callbackProc is called whenver a data line is entered
+	// 
+	InputCallbackProc _callbackProc;
+	void	*_callbackRefCon;
 
 public:
 	ConsoleDialog(NewGui *gui);
 
+	void open();
 	void drawDialog();
 
 	void handleTickle();
@@ -70,6 +76,12 @@
 	int vprintf(const char *format, va_list argptr);
 #undef putchar
 	void putchar(int c);
+	
+	void setInputeCallback(InputCallbackProc proc, void *refCon)
+	{
+		_callbackProc = proc;
+		_callbackRefCon = refCon;
+	}
 
 protected:
 	void drawCaret(bool erase);





More information about the Scummvm-git-logs mailing list