[Scummvm-cvs-logs] SF.net SVN: scummvm:[42687] tools/branches/gsoc2009-gui
Remere at users.sourceforge.net
Remere at users.sourceforge.net
Fri Jul 24 09:53:06 CEST 2009
Revision: 42687
http://scummvm.svn.sourceforge.net/scummvm/?rev=42687&view=rev
Author: Remere
Date: 2009-07-24 07:53:05 +0000 (Fri, 24 Jul 2009)
Log Message:
-----------
*Moved more functionality from ToolGUI to Tool
*ToolsGUI now inherits Tools, so you only need to list all supported tools in one place.
Modified Paths:
--------------
tools/branches/gsoc2009-gui/gui/gui_tools.cpp
tools/branches/gsoc2009-gui/gui/gui_tools.h
tools/branches/gsoc2009-gui/gui/main.cpp
tools/branches/gsoc2009-gui/gui/pages.cpp
tools/branches/gsoc2009-gui/tools.cpp
tools/branches/gsoc2009-gui/tools.h
Modified: tools/branches/gsoc2009-gui/gui/gui_tools.cpp
===================================================================
--- tools/branches/gsoc2009-gui/gui/gui_tools.cpp 2009-07-24 07:51:38 UTC (rev 42686)
+++ tools/branches/gsoc2009-gui/gui/gui_tools.cpp 2009-07-24 07:53:05 UTC (rev 42687)
@@ -32,115 +32,63 @@
#include <algorithm>
+#include "../compress.h"
#include "gui_tools.h"
-// Include all tools
-#include "../compress_agos.h"
-#include "../compress_gob.h"
-#include "../compress_kyra.h"
-#include "../compress_queen.h"
-#include "../compress_saga.h"
-#include "../compress_scumm_bun.h"
-#include "../compress_scumm_san.h"
-#include "../compress_scumm_sou.h"
-#include "../compress_sword1.h"
-#include "../compress_sword2.h"
-#include "../compress_touche.h"
-#include "../compress_tinsel.h"
-#include "../compress_touche.h"
-#include "../compress_tucker.h"
-#include "../encode_dxa.h"
-#include "../extract_agos.h"
-#include "../extract_gob_stk.h"
-#include "../extract_kyra.h"
-#include "../extract_loom_tg16.h"
-#include "../extract_mm_apple.h"
-#include "../extract_mm_c64.h"
-#include "../extract_mm_nes.h"
-#include "../extract_parallaction.h"
-#include "../extract_scumm_mac.h"
-#include "../extract_zak_c64.h"
-
-
// Our global tools object, which holds all tools
-Tools g_tools;
+ToolsGUI g_tools;
-Tools::Tools() {
+ToolsGUI::ToolsGUI() {
}
-void Tools::init() {
-
- // Compress agos also has a --mac parameter, need to add an additional page / option for this
- addTool(new ToolGUI(new CompressAgos()));
- // Compress gob also has a --f parameter, need to add an additional page / option for this
- addTool(new ToolGUI(new CompressGob()));
- addTool(new ToolGUI(new CompressKyra()));
- addTool(new ToolGUI(new CompressQueen()));
- addTool(new ToolGUI(new CompressSaga()));
- addTool(new ToolGUI(new CompressScummBun()));
- addTool(new ToolGUI(new CompressScummSan()));
- addTool(new ToolGUI(new CompressScummSou()));
- addTool(new ToolGUI(new CompressSword1()));
- addTool(new ToolGUI(new CompressSword2()));
- addTool(new ToolGUI(new CompressTinsel()));
- addTool(new ToolGUI(new CompressTouche()));
- addTool(new ToolGUI(new CompressTucker()));
- addTool(new ToolGUI(new EncodeDXA(), TOOLTYPE_COMPRESSION));
-
- addTool(new ToolGUI(new ExtractAgos()));
- addTool(new ToolGUI(new ExtractGobStk()));
- addTool(new ToolGUI(new ExtractKyra()));
- addTool(new ToolGUI(new ExtractLoomTG16()));
- addTool(new ToolGUI(new ExtractMMApple()));
- addTool(new ToolGUI(new ExtractMMC64()));
- addTool(new ToolGUI(new ExtractMMNes()));
- addTool(new ToolGUI(new ExtractParallaction()));
- addTool(new ToolGUI(new ExtractScummMac()));
- addTool(new ToolGUI(new ExtractZakC64()));
+void ToolsGUI::init() {
+ for (ToolList::iterator tool = _tools.begin(); tool != _tools.end(); ++tool)
+ _toolmap[wxString((*tool)->getName().c_str(), wxConvUTF8)] = new ToolGUI(*tool);
}
-Tools::~Tools() {
- for (std::map<wxString, ToolGUI *>::iterator iter = tools.begin(); iter != tools.end(); ++iter)
+ToolsGUI::~ToolsGUI() {
+ for (std::map<wxString, ToolGUI *>::iterator iter = _toolmap.begin(); iter != _toolmap.end(); ++iter)
delete iter->second;
}
-void Tools::addTool(ToolGUI* tool) {
- tools[tool->_name] = tool;
-}
-
-wxArrayString Tools::getToolList(ToolType tt) const {
+wxArrayString ToolsGUI::getToolList(ToolType tt) const {
wxArrayString l;
- for (std::map<wxString, ToolGUI *>::const_iterator iter = tools.begin(); iter != tools.end(); ++iter)
- if (tt == TOOLTYPE_ALL || iter->second->_type == tt)
+ for (std::map<wxString, ToolGUI *>::const_iterator iter = _toolmap.begin(); iter != _toolmap.end(); ++iter)
+ if (tt == TOOLTYPE_ALL || iter->second->getType() == tt)
l.Add(iter->first);
l.Sort();
std::unique(l.begin(), l.end());
return l;
}
-wxArrayString Tools::getToolList(const Filename &filename, ToolType tt) const {
+wxArrayString ToolsGUI::getToolList(const Filename &filename, ToolType tt) const {
wxArrayString l;
- for (std::map<wxString, ToolGUI *>::const_iterator iter = tools.begin(); iter != tools.end(); ++iter)
- if (tt == TOOLTYPE_ALL || iter->second->_type == tt)
- if (iter->second->inspectInput(filename))
- l.Add(iter->second->_name);
+
+ for (std::map<wxString, ToolGUI *>::const_iterator tool = _toolmap.begin(); tool != _toolmap.end(); ++tool) {
+ if (tt == TOOLTYPE_ALL || tool->second->getType() == tt) {
+ if(tool->second->inspectInput(filename)) {
+ l.Add(tool->second->getName());
+ }
+ }
+ }
+
l.Sort();
std::unique(l.begin(), l.end());
return l;
}
-const ToolGUI &Tools::operator[](const wxString& name) const {
- std::map<wxString, ToolGUI *>::const_iterator iter = tools.find(name);
+const ToolGUI &ToolsGUI::operator[](const wxString& name) const {
+ std::map<wxString, ToolGUI *>::const_iterator iter = _toolmap.find(name);
- wxASSERT_MSG(iter != tools.end(), wxT("All tools should be added, never try to access a tool that does not exist."));
+ wxASSERT_MSG(iter != _toolmap.end(), wxT("All tools should be added, never try to access a tool that does not exist."));
return *iter->second;
}
-const ToolGUI *Tools::get(const wxString& name) const {
- std::map<wxString, ToolGUI *>::const_iterator iter = tools.find(name);
+const ToolGUI *ToolsGUI::get(const wxString& name) const {
+ std::map<wxString, ToolGUI *>::const_iterator iter = _toolmap.find(name);
- if (iter == tools.end())
+ if (iter == _toolmap.end())
return NULL;
return iter->second;
@@ -150,25 +98,11 @@
ToolGUI::ToolGUI(Tool *tool, ToolType type) {
_backend = tool;
- _name = wxString(tool->_name.c_str(), wxConvUTF8);
-
- if(type == TOOLTYPE_UNKNOWN) {
- if (_name.Find(wxT("extract")) != wxNOT_FOUND)
- _type = TOOLTYPE_EXTRACTION;
- else if (_name.Find(wxT("compress")) != wxNOT_FOUND)
- _type = TOOLTYPE_COMPRESSION;
- else {
- wxLogError(wxT("Tools with unknown type shouldn't exist."));
- _type = TOOLTYPE_UNKNOWN;
- }
- } else
- _type = type;
-
- _inHelpText = wxT("Please select any additional input files.");
}
ToolGUI::~ToolGUI() {
- delete _backend;
+ //The parent Tools client deletes the backends
+ //delete _backend;
}
bool ToolGUI::inspectInput(const Filename &filename) const {
@@ -179,6 +113,18 @@
return _backend->_inputPaths;
}
+wxString ToolGUI::getName() const {
+ return wxString(_backend->getName().c_str(), wxConvUTF8);
+}
+
+wxString ToolGUI::getHelp() const {
+ return wxString(_backend->getHelp().c_str(), wxConvUTF8);
+}
+
+ToolType ToolGUI::getType() const {
+ return _backend->getType();
+}
+
bool ToolGUI::supportsAudioFormat(AudioFormat format) const {
return (_backend->_supportedFormats & format) == format;
}
@@ -199,6 +145,8 @@
CompressionTool *compression = dynamic_cast<CompressionTool *>(_backend);
if (compression) {
+ compression->_format = conf.selectedAudioFormat;
+
// mp3
compression->_mp3ABRBitrate = (const char *)conf.mp3ABRBitrate.mb_str();
compression->_mp3CompressionType = (const char *)conf.mp3CompressionType.mb_str();
@@ -224,8 +172,8 @@
wxString ToolGUI::getExecutable() const {
#ifdef WIN32
- return _name + wxT(".exe");
+ return getName() + wxT(".exe");
#else
- return _name;
+ return getName();
#endif
}
Modified: tools/branches/gsoc2009-gui/gui/gui_tools.h
===================================================================
--- tools/branches/gsoc2009-gui/gui/gui_tools.h 2009-07-24 07:51:38 UTC (rev 42686)
+++ tools/branches/gsoc2009-gui/gui/gui_tools.h 2009-07-24 07:53:05 UTC (rev 42687)
@@ -20,8 +20,8 @@
*
*/
-#ifndef TOOLS_H
-#define TOOLS_H
+#ifndef GUI_TOOLS_H
+#define GUI_TOOLS_H
#include <wx/string.h>
@@ -29,7 +29,7 @@
#include <vector>
#include "configuration.h"
-#include "../tool.h"
+#include "../tools.h"
/**
@@ -73,10 +73,26 @@
bool inspectInput(const Filename &filename) const;
/**
- *
+ * Returns the list of valid inputs of this tool, along with the
+ * paths already set (if applicable)
*/
ToolInputs getInputList() const;
+ /**
+ * Returns the name of the tool
+ */
+ wxString getName() const;
+
+ /**
+ * Returns the helptext of the tool
+ */
+ wxString getHelp() const;
+
+ /**
+ * Returns the type of the tool
+ */
+ ToolType getType() const;
+
// Helper functions to get info about the tool
/**
@@ -107,22 +123,15 @@
*/
void run(const Configuration &conf) const;
-
- /** Name of the tool */
- wxString _name;
/** The actual tool instance, which runs the compression/extraction */
Tool *_backend;
- /** Type of tool, either extract, compress or unknown */
- ToolType _type;
- /** The help text displayed on the input/output page */
- wxString _inHelpText;
};
// Collection of all tools
-class Tools {
+class ToolsGUI : public Tools {
public:
- Tools();
- ~Tools();
+ ToolsGUI();
+ ~ToolsGUI();
/**
* Must be called before the tools can be used
@@ -166,16 +175,9 @@
wxArrayString getToolList(const Filename &filename, ToolType tt = TOOLTYPE_ALL) const;
protected:
- /**
- * Adds a supported tool. Should not be done after construction, since it might break pointers
- *
- * @param tool the tool to add.
- */
- void addTool(ToolGUI *tool);
-
- std::map<wxString, ToolGUI *> tools;
+ std::map<wxString, ToolGUI *> _toolmap;
};
-extern Tools g_tools;
+extern ToolsGUI g_tools;
#endif
Modified: tools/branches/gsoc2009-gui/gui/main.cpp
===================================================================
--- tools/branches/gsoc2009-gui/gui/main.cpp 2009-07-24 07:51:38 UTC (rev 42686)
+++ tools/branches/gsoc2009-gui/gui/main.cpp 2009-07-24 07:53:05 UTC (rev 42687)
@@ -36,7 +36,7 @@
#include "main.h"
#include "pages.h"
-#include "tools.h"
+#include "gui_tools.h"
class ScummVMToolsApp : public wxApp
{
Modified: tools/branches/gsoc2009-gui/gui/pages.cpp
===================================================================
--- tools/branches/gsoc2009-gui/gui/pages.cpp 2009-07-24 07:51:38 UTC (rev 42686)
+++ tools/branches/gsoc2009-gui/gui/pages.cpp 2009-07-24 07:53:05 UTC (rev 42687)
@@ -198,7 +198,7 @@
// Load configuration
if (_configuration.selectedTool != NULL)
- tool->SetStringSelection(_configuration.selectedTool->_name);
+ tool->SetStringSelection(_configuration.selectedTool->getName());
return panel;
}
@@ -373,7 +373,7 @@
const ToolGUI &tool = *_configuration.selectedTool;
// some help perhaps?
- sizer->Add(new wxStaticText(panel, wxID_ANY, tool._inHelpText));
+ sizer->Add(new wxStaticText(panel, wxID_ANY, tool.getHelp()));
sizer->AddSpacer(10);
@@ -538,7 +538,7 @@
}
void ChooseOutPage::onNext(wxWindow *panel) {
- if (_configuration.selectedTool->_type == TOOLTYPE_COMPRESSION)
+ if (_configuration.selectedTool->getType() == TOOLTYPE_COMPRESSION)
switchPage(new ChooseAudioFormatPage(_topframe));
else
switchPage(new ProcessPage(_topframe));
@@ -1021,7 +1021,7 @@
const ToolGUI *tool = _configuration.selectedTool;
// Write some text that we've started...
- _outwin->WriteText(wxT("Running ") + tool->_name + wxT("\n\n"));
+ _outwin->WriteText(wxT("Running ") + tool->getName() + wxT("\n\n"));
// Child thread to run the tool
_thread = new ProcessToolThread(tool, _configuration, _output);
@@ -1222,7 +1222,7 @@
sizer->AddSpacer(15);
wxString text;
- if (_configuration.selectedTool->_type == TOOLTYPE_COMPRESSION)
+ if (_configuration.selectedTool->getType() == TOOLTYPE_COMPRESSION)
text = wxT("You have finished the wizard! Your files should now be compressed.");
else
text = wxT("You have finished the wizard! Your files should now be extracted.");
Modified: tools/branches/gsoc2009-gui/tools.cpp
===================================================================
--- tools/branches/gsoc2009-gui/tools.cpp 2009-07-24 07:51:38 UTC (rev 42686)
+++ tools/branches/gsoc2009-gui/tools.cpp 2009-07-24 07:53:05 UTC (rev 42687)
@@ -67,7 +67,7 @@
_tools.push_back(new CompressTinsel());
_tools.push_back(new CompressTouche());
_tools.push_back(new CompressTucker());
- //_tools.push_back(new EncodeDXA());
+ _tools.push_back(new EncodeDXA());
_tools.push_back(new ExtractAgos());
_tools.push_back(new ExtractGobStk());
@@ -82,17 +82,16 @@
}
Tools::~Tools() {
- for (ToolList::iterator iter = _tools.begin(); iter != _tools.end(); ++iter) {
+ for (ToolList::iterator iter = _tools.begin(); iter != _tools.end(); ++iter)
delete *iter;
- }
}
-Tools::ToolList Tools::inspectInput(ToolType type, std::deque<char *> arguments) {
+Tools::ToolList Tools::inspectInput(ToolType type, std::deque<char *> files) const {
ToolList choices;
- for (ToolList::iterator tool = _tools.begin(); tool != _tools.end(); ++tool) {
+ for (ToolList::const_iterator tool = _tools.begin(); tool != _tools.end(); ++tool) {
if (type == TOOLTYPE_ALL || (*tool)->getType() == type) {
- if ((*tool)->_inputPaths.size() == arguments.size()) {
- for (std::deque<char *>::const_iterator filename = arguments.begin(); filename != arguments.end(); ++filename) {
+ if ((*tool)->_inputPaths.size() == files.size()) {
+ for (std::deque<char *>::const_iterator filename = files.begin(); filename != files.end(); ++filename) {
if((*tool)->inspectInput(*filename)) {
choices.push_back(*tool);
break;
Modified: tools/branches/gsoc2009-gui/tools.h
===================================================================
--- tools/branches/gsoc2009-gui/tools.h 2009-07-24 07:51:38 UTC (rev 42686)
+++ tools/branches/gsoc2009-gui/tools.h 2009-07-24 07:53:05 UTC (rev 42687)
@@ -27,6 +27,11 @@
#include <deque>
+/**
+ * This class holds a list of all the tools available
+ * Used by both the GUI and CLI as a base class to get ahold
+ * of all the tools.
+ */
class Tools {
public:
Tools();
@@ -34,9 +39,14 @@
typedef std::vector<Tool *> ToolList;
- ToolList inspectInput(ToolType type, std::deque<char *> arguments);
+ /**
+ * Returns a list of the tools that supports opening the input file
+ * specified in the input list.
+ */
+ ToolList inspectInput(ToolType type, std::deque<char *> files) const;
protected:
+ /** List of all tools */
ToolList _tools;
};
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