[Scummvm-cvs-logs] SF.net SVN: scummvm:[50850] scummvm/branches/gsoc2010-testbed/engines/ testbed

sud03r at users.sourceforge.net sud03r at users.sourceforge.net
Tue Jul 13 21:26:47 CEST 2010


Revision: 50850
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50850&view=rev
Author:   sud03r
Date:     2010-07-13 19:26:45 +0000 (Tue, 13 Jul 2010)

Log Message:
-----------
Added code to enable testsuite selection using checkboxes

Modified Paths:
--------------
    scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp
    scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.h
    scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.cpp

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp	2010-07-13 18:15:19 UTC (rev 50849)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.cpp	2010-07-13 19:26:45 UTC (rev 50850)
@@ -27,7 +27,8 @@
 #include "common/system.h"
 
 #include "engines/util.h"
- 
+#include "gui/options.h"
+
 #include "testbed/events.h"
 #include "testbed/fs.h"
 #include "testbed/graphics.h"
@@ -83,13 +84,11 @@
 	}
 }
 
-void TestbedEngine::enableTestsuite(const char *name, bool enable) {
+void TestbedEngine::enableTestsuite(const Common::String &name, bool enable) {
 	Common::Array<Testsuite*>::const_iterator iter;
-	Common::String tsName(name);
 
-
 	for (iter = _testsuiteList.begin(); iter != _testsuiteList.end(); iter++) {
-		if (tsName.equalsIgnoreCase((*iter)->getName())) {
+		if (name.equalsIgnoreCase((*iter)->getName())) {
 			(*iter)->enable(enable);
 			break;
 		}
@@ -108,6 +107,34 @@
 		}
 }
 
+TestbedOptionsDialog::TestbedOptionsDialog() : GUI::OptionsDialog("Select", 120, 120, 360, 200), _hOffset(15), _vOffset(15), _boxWidth(300), _boxHeight(10) {
+	new GUI::StaticTextWidget(this, _hOffset, _vOffset, _boxWidth, _boxHeight, "Select testsuites to Execute", Graphics::kTextAlignCenter);
+	_vOffset += 20;
+	addCheckbox("FS");
+	addCheckbox("GFX");
+	addCheckbox("Savegames");
+	addCheckbox("Misc");
+	addCheckbox("Events");
+	new GUI::ButtonWidget(this, 80 , _vOffset + 10, 80, 25, "Continue", GUI::kOKCmd, 'C');
+	new GUI::ButtonWidget(this, 200, _vOffset + 10, 80, 25, "Exit", GUI::kCloseCmd, 'X');
+}
+
+TestbedOptionsDialog::~TestbedOptionsDialog() {}
+
+void TestbedOptionsDialog::addCheckbox(const Common::String &tsName) {
+	_checkBoxes.push_back(new GUI::CheckboxWidget(this, _hOffset, _vOffset, _boxWidth, _boxHeight, tsName));
+	_vOffset += 20;
+}
+
+bool TestbedOptionsDialog::isEnabled(const Common::String &tsName) {
+	for (uint i = 0; i < _checkBoxes.size(); i++) {
+		if (_checkBoxes[i]->getLabel().equalsIgnoreCase(tsName)) {
+			return _checkBoxes[i]->getState();
+		}
+	}
+	return false;
+}
+
 Common::Error TestbedEngine::run() {
 	// Initialize graphics using following:
 	initGraphics(320, 200, false);
@@ -129,17 +156,26 @@
 		Testsuite::logPrintf("Info! : Interactive tests are also being executed.\n");		
 		Testsuite::displayMessage(prompt, "Proceed?");
 	}
-	
-	// Enable the testsuites you want to execute
-	enableTestsuite("FS", true);
-	enableTestsuite("GFX", true);
-	// enableTestsuite("savegames", true);
-	// enableTestsuite("misc", true);
-	// enableTestsuite("events", true);
-	// invoke them
+
+	// Select testsuites using checkboxes
+	TestbedOptionsDialog tbd;
+	tbd.runModal();
+
+	// check if user wanted to exit.
+	if (shouldQuit()) {
+		return Common::kNoError;
+	}
+
+	// Enable selected testsuites
+	Common::String tsName;
+	for (uint i = 0; i < _testsuiteList.size(); i++) {
+		tsName = _testsuiteList[i]->getName();
+		if (tbd.isEnabled(tsName)) {
+			enableTestsuite(tsName, true);
+		}
+	}
+
 	invokeTestsuites();
-	
-	
 	return Common::kNoError;
 }
  

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.h
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.h	2010-07-13 18:15:19 UTC (rev 50849)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/testbed.h	2010-07-13 19:26:45 UTC (rev 50850)
@@ -27,6 +27,8 @@
  
 #include "engines/engine.h"
 
+#include "gui/options.h"
+
 #include "testbed/testsuite.h"
 
 namespace Testbed {
@@ -47,7 +49,7 @@
 	 * All testsuites are disabled by default
 	 * To enable testsuite X, call enableTestsuite("X", true);
 	 */
-	void enableTestsuite(const char *name, bool enable);
+	void enableTestsuite(const Common::String &name, bool enable);
 	
 	/**
 	 * Invokes configured testsuites.
@@ -57,9 +59,24 @@
 	bool hasFeature(EngineFeature f) const;
 
 private:
-	Common::Array<Testsuite*> _testsuiteList;
+	Common::Array<Testsuite *> _testsuiteList;
 };
 
+class TestbedOptionsDialog : public GUI::OptionsDialog {
+public:
+	TestbedOptionsDialog();
+	~TestbedOptionsDialog();
+	void addCheckbox(const Common::String &tsName);
+	bool isEnabled(const Common::String &tsName);
+
+private:
+	Common::Array<GUI::CheckboxWidget *> _checkBoxes;
+	const int _hOffset; // current offset from left
+	int _vOffset; // current offset from top
+	const int _boxWidth;
+	const int _boxHeight;
+};
+
 } // End of namespace Testbed
  
 #endif

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.cpp	2010-07-13 18:15:19 UTC (rev 50849)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.cpp	2010-07-13 19:26:45 UTC (rev 50850)
@@ -187,7 +187,8 @@
 	byte *buffer = new byte[size];
 	memset(buffer, 0, size);
 	g_system->copyRectToScreen(buffer, numBytesPerLine, 0, 0, g_system->getWidth(), g_system->getHeight());
-	g_system->updateScreen();	
+	g_system->updateScreen();
+	delete[] buffer;
 }
 	
 void Testsuite::clearScreen(bool flag) {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list