diff options
author | Johannes Schickel | 2010-10-13 03:57:44 +0000 |
---|---|---|
committer | Johannes Schickel | 2010-10-13 03:57:44 +0000 |
commit | 75e8452b6e6a2bf4fb2f588aa00b428a60d873b5 (patch) | |
tree | f29541d55309487a94bd1d38e8b53bb3dde9aec6 /engines/testbed/config.h | |
parent | 48ee83b88957dab86bc763e9ef21a70179fa8679 (diff) | |
parent | e9f50882ea5b6beeefa994040be9d3bab6a1f107 (diff) | |
download | scummvm-rg350-75e8452b6e6a2bf4fb2f588aa00b428a60d873b5.tar.gz scummvm-rg350-75e8452b6e6a2bf4fb2f588aa00b428a60d873b5.tar.bz2 scummvm-rg350-75e8452b6e6a2bf4fb2f588aa00b428a60d873b5.zip |
OPENGL: Merged from trunk, from rev 52105 to 53396.
This includes an rather hacky attempt to merge all the recent gp2x backend
changes into the branch. I suppose the gp2x backend and probably all new
backends, i.e. gph, dingux etc., might not compile anymore.
Since I have no way of testing those it would be nice if porters could look
into getting those up to speed in this branch.
svn-id: r53399
Diffstat (limited to 'engines/testbed/config.h')
-rw-r--r-- | engines/testbed/config.h | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/engines/testbed/config.h b/engines/testbed/config.h new file mode 100644 index 0000000000..2ee5b09002 --- /dev/null +++ b/engines/testbed/config.h @@ -0,0 +1,135 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef TESTBED_CONFIG_H +#define TESTBED_CONFIG_H + + +#include "common/array.h" +#include "common/config-file.h" +#include "common/str-array.h" +#include "common/tokenizer.h" + +#include "gui/ListWidget.h" +#include "gui/options.h" +#include "gui/ThemeEngine.h" + +#include "testbed/testsuite.h" + +namespace Testbed { + +enum { + kTestbedQuitCmd = 'Quit', + kTestbedSelectAll = 'sAll', + kTestbedDeselectAll = 'dAll' +}; + + + +class TestbedConfigManager { +public: + TestbedConfigManager(Common::Array<Testsuite *> &tList, const Common::String fName) : _testsuiteList(tList), _configFileName(fName) {} + ~TestbedConfigManager() {} + void selectTestsuites(); + void setConfigFile(const Common::String fName) { _configFileName = fName; } + Common::SeekableReadStream *getConfigReadStream(); + Common::WriteStream *getConfigWriteStream(); + void writeTestbedConfigToStream(Common::WriteStream *ws); + Testsuite *getTestsuiteByName(const Common::String &name); + bool stringToBool(const Common::String str) { return str.equalsIgnoreCase("true") ? true : false; } + Common::String boolToString(bool val) { return val ? "true" : "false"; } + void initDefaultConfiguration(); + int getNumSuitesEnabled(); + +private: + Common::Array<Testsuite *> &_testsuiteList; + Common::String _configFileName; + Common::ConfigFile _configFileInterface; + void parseConfigFile(); +}; + +class TestbedListWidget : public GUI::ListWidget { +public: + TestbedListWidget(GUI::Dialog *boss, const Common::String &name, Common::Array<Testsuite *> tsArray) : GUI::ListWidget(boss, name), _testSuiteArray(tsArray) {} + + void markAsSelected(int i) { + if (!_list[i].contains("selected")) { + _list[i] += " (selected)"; + } + _listColors[i] = GUI::ThemeEngine::kFontColorNormal; + draw(); + } + + void markAsDeselected(int i) { + if (_list[i].contains("selected")) { + _list[i] = _testSuiteArray[i]->getDescription(); + } + _listColors[i] = GUI::ThemeEngine::kFontColorAlternate; + draw(); + } + + void setColor(uint32 indx, GUI::ThemeEngine::FontColor color) { + assert(indx < _listColors.size()); + _listColors[indx] = color; + draw(); + } + +private: + Common::Array<Testsuite *> _testSuiteArray; +}; + +class TestbedOptionsDialog : public GUI::Dialog { +public: + TestbedOptionsDialog(Common::Array<Testsuite *> &tsList, TestbedConfigManager *tsConfMan); + ~TestbedOptionsDialog(); + void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data); + +private: + GUI::ListWidget::ColorList _colors; + GUI::ButtonWidget *_selectButton; + Common::Array<Testsuite *> _testSuiteArray; + Common::StringArray _testSuiteDescArray; + TestbedListWidget *_testListDisplay; + TestbedConfigManager *_testbedConfMan; +}; + +class TestbedInteractionDialog : public GUI::Dialog { +public: + TestbedInteractionDialog(uint x, uint y, uint w, uint h) : GUI::Dialog(x, y, w, h) {} + ~TestbedInteractionDialog() {} + virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data); + void addButton(uint w, uint h, const Common::String name, uint32 cmd, uint xOffset = 0, uint yPadding = 8); + void addButtonXY(uint x, uint y, uint w, uint h, const Common::String name, uint32 cmd); + void addText(uint w, uint h, const Common::String text, Graphics::TextAlign textAlign, uint xOffset, uint yPadding = 8); + void addList(uint x, uint y, uint w, uint h, Common::Array<Common::String> &strArray, GUI::ListWidget::ColorList *colors = 0, uint yPadding = 8); +protected: + Common::Array<GUI::ButtonWidget *> _buttonArray; + uint _xOffset; + uint _yOffset; + +}; + +} // End of namespace Testbed + +#endif // TESTBED_CONFIG_H |