[Scummvm-cvs-logs] SF.net SVN: scummvm: [28135] scummex/branches/gsoc2007-gameresbrowser

zbychs at users.sourceforge.net zbychs at users.sourceforge.net
Wed Jul 18 13:40:19 CEST 2007


Revision: 28135
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28135&view=rev
Author:   zbychs
Date:     2007-07-18 04:40:15 -0700 (Wed, 18 Jul 2007)

Log Message:
-----------
Added zooming ImagePresenter.
Added hex view control.
Added opening multiple files.
Cleaned up MainForm.
Enlarged browser tree font size.
(To be tested under Linux.)

Modified Paths:
--------------
    scummex/branches/gsoc2007-gameresbrowser/src/browser/CoreInterfaces.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/CoreInterfaces.h
    scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.h
    scummex/branches/gsoc2007-gameresbrowser/src/browser/Makefile.am
    scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.h
    scummex/branches/gsoc2007-gameresbrowser/src/browser/VirtualNode.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/VirtualNode.h
    scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/simplefile.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/stream.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/stream.h
    scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/xorstream.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/xorstream.h
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/BrowserApp.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.h
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainFormCommands.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Makefile.am
    scummex/branches/gsoc2007-gameresbrowser/src/core/BObject.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/core/BObject.h
    scummex/branches/gsoc2007-gameresbrowser/src/core/ObjectChain.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/core/ObjectChain.h
    scummex/branches/gsoc2007-gameresbrowser/src/core/ObjectRegistry.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/AuxInterfaces.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/AuxInterfaces.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BasicParsers.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BasicParsers.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/DirectoryPresenter.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/DirectoryPresenter.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/IconPresenter.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/IconPresenter.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImagePresenter.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImagePresenter.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/Makefile.am
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/TextPresenter.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummBlock.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummBlockPresenter.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummBlockPresenter.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummCommonPresenters.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummCommonPresenters.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummPresenterBase.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummPresenterBase.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummRecognizer.cpp
    scummex/branches/gsoc2007-gameresbrowser/vc8/basic_plugin/basic_plugin.vcproj
    scummex/branches/gsoc2007-gameresbrowser/vc8/browser/browser.vcproj
    scummex/branches/gsoc2007-gameresbrowser/vc8/browserapp/browserapp.vcproj
    scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.dev
    scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout

Added Paths:
-----------
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/DefaultPlugin.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Tests.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.h
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/Directories.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/Directories.h

Removed Paths:
-------------
    scummex/branches/gsoc2007-gameresbrowser/src/browser/Directories.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/Directories.h
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test1.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test2.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BitmapPanel.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BitmapPanel.h

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/CoreInterfaces.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/CoreInterfaces.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/CoreInterfaces.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -79,6 +79,26 @@
 	_isubdirs.push_back(idir);
 }
 
+IFile* IDirectoryImpl::getFile(const coreString& name) {
+	ifile_list_t::const_iterator i;
+	for (i = _ifiles.begin(); i != _ifiles.end(); ++i) {
+		IFile* ifile = *i;
+		if (ifile->getName() == name)
+			return ifile;
+	}
+	return NULL;
+}
+
+IDirectory* IDirectoryImpl::getSubDir(const coreString& name) {
+	idir_list_t::const_iterator j; 
+	for (j = _isubdirs.begin(); j != _isubdirs.end(); ++j) {
+		IDirectory* idirectory = *j;
+		if (idirectory->getName() == name)
+			return idirectory;
+	}
+	return NULL;
+}
+
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/CoreInterfaces.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/CoreInterfaces.h	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/CoreInterfaces.h	2007-07-18 11:40:15 UTC (rev 28135)
@@ -138,11 +138,14 @@
 	//can return NULL
 	virtual IDirectory* getParentDirectory();
 
-	void addFile(IFile* ifile);
+	void addFile(IFile* ifile); 
 	void addSubDir(IDirectory* idir);
 
 	virtual const ifile_list_t& getFiles();
 	virtual const idir_list_t& getSubDirs();
+
+	virtual IFile* getFile(const coreString& name);
+	virtual IDirectory* getSubDir(const coreString& name);
 };
 
 /////////////////////////////////////////////////////////////////////////////

Deleted: scummex/branches/gsoc2007-gameresbrowser/src/browser/Directories.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/Directories.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/Directories.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -1,218 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Directories.cpp
-
-#include "browser_stdafx.h"
-
-#include "Directories.h"
-#include "CoreFileTypes.h"
-
-#include "streams/simplefile.h"
-
-#include <iostream>
-
-#include <wx/filesys.h>
-#include <wx/filename.h>
-
-#include "tostring.h"
-
-#include "debugmem.h"
-
-namespace Browser {
-
-using namespace Core;
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-//A directory implementation, whose contents are initialized with addFile(), addSubDir(),
-//and which creates *IDiskFileImpl* and *IDiskDirectoryImpl*.
-//So it's a "virtual" directory.
-class IVirtualDirectoryImpl : public IDirectoryImpl {
-protected:
-	str_pair_list _files;
-	str_pair_list _subdirs;
-
-	bool _created;
-public:
-	//inherit guid - it's a concrete implementation of an abstract interface
-	IVirtualDirectoryImpl(IDirectory* parentDir, coreString name);
-	IVirtualDirectoryImpl(IDirectory* parentDir, coreString name, const str_pair_list& files, const str_pair_list& subdirs);
-
-	virtual const ifile_list_t& getFiles();
-	virtual const idir_list_t& getSubDirs();
-
-	void addFile(coreString name, coreString fullpath);
-	void addSubDir(coreString name, coreString fullpath);
-
-	virtual void create();
-};
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-//A directory that loads it's contents from the disk.
-class IDiskDirectoryImpl : public IVirtualDirectoryImpl {
-protected:
-	coreString _directoryPath;
-public:
-	//inherit guid - it's a concrete implementation of an abstract interface
-	IDiskDirectoryImpl(IDirectory* parentDir, coreString name, coreString directoryPath);
-
-	virtual void create();
-};
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-IVirtualDirectoryImpl::IVirtualDirectoryImpl(IDirectory* parentDir, coreString name)
-	: IDirectoryImpl(parentDir, name, true), _created(false) {}
-IVirtualDirectoryImpl::IVirtualDirectoryImpl(IDirectory* parentDir, coreString name, const str_pair_list& files, const str_pair_list& subdirs)
-	: IDirectoryImpl(parentDir, name, true),
-		_files(files), _subdirs(subdirs), _created(false) {}
-
-
-const ifile_list_t& IVirtualDirectoryImpl::getFiles() {
-	//infoout << wxT("IVirtualDirectoryImpl::getFiles()") << std::endl;
-	create();
-	return _ifiles;
-}
-
-const idir_list_t& IVirtualDirectoryImpl::getSubDirs() {
-	//infoout << wxT("IVirtualDirectoryImpl::getSubDirs()") << std::endl;
-	create();
-	return _isubdirs;
-}
-
-void IVirtualDirectoryImpl::addFile(coreString name, coreString fullpath) {
-	_files.push_back( std::make_pair(name, fullpath) );
-}
-
-void IVirtualDirectoryImpl::addSubDir(coreString name, coreString fullpath) {
-	_subdirs.push_back( std::make_pair(name, fullpath) );
-}
-
-void IVirtualDirectoryImpl::create() {
-	if (_created)
-		return;
-	_created = true;
-
-	str_pair_list::const_iterator i;
-
-	for (i = _files.begin(); i != _files.end(); ++i) {
-		const coreString& name = i->first;
-		const coreString& fullpath = i->second;
-
-		_ifiles.push_back( new IDiskFileImpl(this, name, fullpath) );
-	}
-
-	for (i = _subdirs.begin(); i != _subdirs.end(); ++i) {
-		const coreString& name = i->first;
-		const coreString& fullpath = i->second;
-
-		_isubdirs.push_back( new IDiskDirectoryImpl(this, name, fullpath) );
-	}
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-IDiskDirectoryImpl::IDiskDirectoryImpl(IDirectory* parentDir, coreString name, coreString directoryPath)
-	: IVirtualDirectoryImpl(parentDir, name), _directoryPath(directoryPath) {
-		_fileType = CoreFileTypes::diskDirectoryFileType();
-	}
-
-void IDiskDirectoryImpl::create() {
-	if (_created)
-		return;
-
-	wxFileName dir = wxFileName::DirName(_directoryPath);
-	if ( !(dir.IsOk() && dir.DirExists() && dir.IsDirReadable()) ) {
-		errout << wxT("IDiskDirectoryImpl::create(): unreadable dir: ") << dir.GetPath().c_str() << std::endl;
-		return;
-	}
-
-	wxFileSystem fs;
-	fs.ChangePathTo(dir.GetPath(), true);
-
-	wxString found;
-	
-	found = fs.FindFirst(wxT("*"), wxFILE);
-	while (!found.IsEmpty()) {
-		//wxFileName fname(dir.GetPath(), found);
-		wxFileName fname(found);
-		wxString dispName = fname.GetFullName();
-		addFile( toString(dispName), toString(fname.GetFullPath()));
-		found = fs.FindNext();
-	}
-
-	found = fs.FindFirst(wxT("*"), wxDIR);
-	while (!found.IsEmpty()) {
-		//wxFileName fname(dir);
-		//fname.AppendDir(found);
-		wxFileName fname = wxFileName::DirName(found);
-		wxArrayString dirs = fname.GetDirs();
-		wxString dispName = dirs.Last();
-		addSubDir(toString(dispName), toString(fname.GetPath()));
-		found = fs.FindNext();
-	}
-
-	IVirtualDirectoryImpl::create();
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-PIN_DESCS(RootDirectory)
-	PIN_DESC(_directoryPin, PIN_DEFAULT | PIN_MULTICAST, getDirectoryImpl, releaseDirectoryImpl)
-END_DESCS
-
-//TODO: this is not safe for multicast!
-IVirtualDirectoryImpl* RootDirectory::getDirectoryImpl() {
-	if (_idirectory == NULL) {
-		_idirectory = new IVirtualDirectoryImpl(NULL, wxT("Root Directory"), _files, _subdirs);
-		_idirectory->setDirectoryFileType(CoreFileTypes::rootDirectoryFileType());
-	}
-
-	return _idirectory;
-}
-
-void RootDirectory::releaseDirectoryImpl(IVirtualDirectoryImpl* iface) {
-	//infoout << wxT("RootDirectory::releaseDirectoryImpl()") << std::endl;
-	delete iface;
-}
-
-bool RootDirectory::addFile(coreString name, coreString fullpath) {
-	_files.push_back( std::make_pair(name, fullpath) );
-	return true;
-}
-
-bool RootDirectory::addSubDir(coreString name, coreString fullpath) {
-	_subdirs.push_back( std::make_pair(name, fullpath) );
-	return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-PIN_DESCS(DiskDirectory)
-	PIN_DESC(_directoryPin, PIN_DEFAULT | PIN_MULTICAST, getDirectoryImpl, releaseDirectoryImpl)
-END_DESCS
-
-//TODO: this is not safe for multicast!
-IVirtualDirectoryImpl* DiskDirectory::getDirectoryImpl() {
-	if (_idirectory == NULL) {
-		_idirectory = new IDiskDirectoryImpl(_parentDir, _directoryPath, _directoryPath);
-	}
-
-	return _idirectory;
-}
-
-void DiskDirectory::releaseDirectoryImpl(IVirtualDirectoryImpl* iface) {
-	//infoout << wxT("DiskDirectory::releaseDirectoryImpl()") << std::endl;
-	delete iface;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-}

Deleted: scummex/branches/gsoc2007-gameresbrowser/src/browser/Directories.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/Directories.h	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/Directories.h	2007-07-18 11:40:15 UTC (rev 28135)
@@ -1,101 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Directories.h
-
-#ifndef _DIRECTORIES_H_
-#define _DIRECTORIES_H_
-
-#include "VirtualNode.h"
-
-#include <list>
-
-namespace Browser {
-
-using namespace Core;
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-// This header defines a RootDirectory and a DiskDirectory. These are directories
-// that are also VirtualNodes.
-// DiskDirectory is not used at the moment. VirtualFiles and VirtualDirectories are.
-// Directories are displayed in (more or less) this fasion:
-// RootDirectory -> IDirectory -> DirectoryPresenter -> IFile ->
-// -> VirtualFile -> IFile -> SomeParser -> IDirectory -> DirectoryPresenter ->
-// -> VirtualFile/VirtualDirectory -> IFile...
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-class IVirtualDirectoryImpl;
-class IDiskDirectoryImpl;
-typedef std::list< std::pair< coreString, coreString > > str_pair_list;
-
-class BROWSER_API RootDirectory : public VirtualNode {
-	DECLARE_BOBJECT_CLASS(RootDirectory, VirtualNode)
-
-protected:
-	Pin<IDirectory>* _directoryPin;
-
-#ifdef _MSC_VER
-#pragma warning(disable : 4251)
-#endif
-	str_pair_list _files;
-	str_pair_list _subdirs;
-#ifdef _MSC_VER
-#pragma warning(default : 4251)
-#endif
-
-	IVirtualDirectoryImpl* _idirectory;
-
-public:
-	ASSIGN_DESC(0,wxT("CoreObjects"), 1)
-
-	PINS_DECL
-
-	RootDirectory(wxTreeItemId mineTreeItem)
-		: VirtualNode(mineTreeItem), _idirectory(NULL) {}
-
-	bool addFile(coreString name, coreString fullpath);
-	bool addSubDir(coreString name, coreString fullpath);
-
-	IVirtualDirectoryImpl* getDirectoryImpl();
-	void releaseDirectoryImpl(IVirtualDirectoryImpl* iface);
-
-};
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-//not used now - but potentially useable
-
-class BROWSER_API DiskDirectory : public VirtualNode {
-	DECLARE_BOBJECT_CLASS(DiskDirectory, VirtualNode)
-
-protected:
-	Pin<IDirectory>* _directoryPin;
-
-	coreString _directoryPath;
-
-	IDirectory* _parentDir;
-	IVirtualDirectoryImpl* _idirectory;
-
-public:
-	ASSIGN_DESC(0,wxT("CoreObjects"), 1)
-
-	PINS_DECL
-
-	//parentDir can be NULL
-	DiskDirectory(IDirectory* parentDir, wxTreeItemId mineTreeItem, coreString directoryPath)
-		: VirtualNode(mineTreeItem), _directoryPath(directoryPath), _parentDir(parentDir), _idirectory(NULL) {}
-
-	IVirtualDirectoryImpl* getDirectoryImpl();
-	void releaseDirectoryImpl(IVirtualDirectoryImpl* iface);
-
-};
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-}
-
-#endif //_DIRECTORIES_H_

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -8,6 +8,7 @@
 #include "DirectoryController.h"
 
 #include "ObjectChain.h"
+#include "ObjectRegistry.h"
 #include "PluginUtil.h"
 
 #include <iostream>
@@ -190,34 +191,31 @@
 	return data->getRealized();
 }
 
-bool ExplorationTree::realizeNode(const wxTreeItemId& item) {
+// updateRealize == true: complete & realize what's not yet realized
+bool ExplorationTree::realizeNode(const wxTreeItemId& item, bool updateRealize /*= false*/) {
 	ASSERT_VALID_TREE_ITEM(item);
 	VirtualNodeItemData* data = VirtualNodeItemData::getForNode(item);
 	if (!data)
-		return false;
+		return false; 
 
-	if (!data->getRealized()) {
+	if (updateRealize || !data->getRealized()) {
 
 		ObjectChain* kidchain = data->getObjectChain();
 		ASSERT(kidchain);
 
-		if (!data->getCompleted()) {
+		if (updateRealize || !data->getCompleted()) {
 			kidchain->complete();
 			data->setCompleted(true);
 		}
 
-		ASSERT_STATICS_ALLOWED();
-		static BGUID directoryPresenterGUID(wxT("CoreObjects"), wxT("DirectoryPresenter"), 1);
-
-		//FIXME: This won't work for other DirectoryControllers - search for IS_DIRECTORY_CONTROLLER
-		if (!kidchain->isContained(directoryPresenterGUID))
+		if (!kidchain->getObjectWithFlags(IS_DIRECTORY_CONTROLLER))
 			ExplorationTree::get()->deleteChildren(item); //delete the Dummy added by the ExplorationTree
 
 		wxString name = getItemText(item);
 		infoout << wxT("ExplorationTree::realizeNode(): realizing chain for node: ")
 			<< name.c_str() << std::endl;
 
-		bool res = kidchain->realize();
+		bool res = kidchain->realize(!updateRealize);
 
 		if (!res) {
 			errout << wxT("ERROR: ExplorationTree::realizeNode(): can't realize chain for node: ")
@@ -238,6 +236,34 @@
 	return true;
 }
 
+void ExplorationTree::attachBinaryPresenter() {
+	VirtualNode* node = getSelectedNode();
+	if (!node)
+		return;
+
+	wxTreeItemId item = node->getTreeItem();
+	VirtualNodeItemData* data = VirtualNodeItemData::getForNode(item);
+	if (!data)
+		return;
+
+	ObjectChain* kidchain = data->getObjectChain();
+	ASSERT(kidchain);
+
+	ASSERT_STATICS_ALLOWED();
+	//static BGUID binaryPresenterGUID(wxT("CoreObjects"), wxT("BinaryPresenter"), 1);
+	static BGUID binaryParserGUID(wxT("CoreObjects"), wxT("BinaryParser"), 1);
+
+	if (!kidchain->isContained(binaryParserGUID)) {
+		RCPtr<BObject> obj = ObjectRegistry::get()->getObject(binaryParserGUID);
+		if (obj.get() == NULL)
+			return;
+		kidchain->addObject(obj);
+	}
+
+	realizeNode(item, true);
+	nodeActivated(node);
+}
+
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 
@@ -330,6 +356,12 @@
 	return item;
 }
 
+wxTreeItemId ExplorationTree::getRoot() {
+	wxTreeItemId item = _explorationTree->GetRootItem();
+	ASSERT_VALID_TREE_ITEM(item);
+	return item;
+}
+
 void ExplorationTree::deleteAllItems() {
 	_explorationTree->DeleteAllItems();
 }
@@ -530,7 +562,8 @@
 
 	const long style = wxCAPTION | wxRESIZE_BORDER | wxSYSTEM_MENU | wxTHICK_FRAME | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxCLOSE_BOX;
 	wxFrame* frame = new wxFrame(PluginUtil::getMainForm(), wxID_ANY,
-		_panelProvider->getPanelTitle(), wxDefaultPosition, _page->GetSize(), style);
+		_panelProvider->getPanelTitle() + wxT(" [") + _node->getTreeItemName() + wxT("]"),
+		wxDefaultPosition, _page->GetSize(), style);
 
 	wxMenu* fileMenu = new wxMenu(0);
 	fileMenu->Append(ID_ATTACH, wxT("Reattach"));

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.h	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.h	2007-07-18 11:40:15 UTC (rev 28135)
@@ -106,8 +106,8 @@
 
 	static void initialize(wxTreeCtrl* explorationTree, wxNotebook* panelNotebook);
 
-	bool isNodeRealized(const wxTreeItemId& item);
-	bool realizeNode(const wxTreeItemId& item);
+	bool isNodeRealized(const wxTreeItemId& item); 
+	bool realizeNode(const wxTreeItemId& item, bool updateRealize = false);
 	VirtualNode* getNode(const wxTreeItemId& item);
 	VirtualNode* getSelectedNode();
 
@@ -120,6 +120,7 @@
 	wxTreeItemId getItemParent(const wxTreeItemId& item);
 	wxString getItemText(const wxTreeItemId& item);
 	wxTreeItemId addRoot(wxString title);
+	wxTreeItemId getRoot();
 	void deleteAllItems();
 
 	ObjectChain* getRootObjectChain();
@@ -138,6 +139,8 @@
 	void itemExpanding(const wxTreeItemId& item);
 	void itemExpanded(const wxTreeItemId& item);
 
+	void attachBinaryPresenter(); //attach BinaryPresenter to the currently selected node
+
 	void registerPanelProvider(VirtualNode* node, PanelProvider* panelProvider);
 	void unregisterPanelProvider(PanelProvider* panelProvider);
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/Makefile.am
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/Makefile.am	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/Makefile.am	2007-07-18 11:40:15 UTC (rev 28135)
@@ -6,8 +6,6 @@
 	CoreFileTypes.h \
 	CoreInterfaces.cpp \
 	CoreInterfaces.h \
-	Directories.cpp \
-	Directories.h \
 	DirectoryController.h \
 	ExplorationTree.cpp \
 	ExplorationTree.h \

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.h	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.h	2007-07-18 11:40:15 UTC (rev 28135)
@@ -2,7 +2,7 @@
 // PanelProvider.h
 
 #ifndef _PANEL_PROVIDER_H_
-#define _PANEL_PROVIDER_H_
+#define _PANEL_PROVIDER_H_  
 
 #include <wx/wx.h>
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/VirtualNode.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/VirtualNode.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/VirtualNode.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -3,7 +3,7 @@
 
 #include "browser_stdafx.h"
 
-#include "VirtualNode.h"
+#include "VirtualNode.h"  
 
 #include "ExplorationTree.h"
 #include "streams/simplefile.h"

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/VirtualNode.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/VirtualNode.h	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/VirtualNode.h	2007-07-18 11:40:15 UTC (rev 28135)
@@ -8,7 +8,7 @@
 
 #include "BObject.h"
 
-#include "CoreInterfaces.h"
+#include "CoreInterfaces.h"  
 
 #include <wx/treectrl.h> //for wxTreeItemId
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/simplefile.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/simplefile.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/simplefile.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -20,7 +20,7 @@
  *
  */
 
-#include "browser_stdafx.h"
+#include "browser_stdafx.h"  
 #include "streams/streams_stdafx.h"
 
 #include "streams/simplefile.h"

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/stream.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/stream.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/stream.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -21,13 +21,15 @@
  */
 
 #include "browser_stdafx.h"
-#include "streams/streams_stdafx.h"
+#include "streams/streams_stdafx.h"  
 
 //#include "streams/stdafx.h"
 #include "streams/stream.h"
 //#include "streams/str.h"
 //#include "streams/util.h"
 
+#include "debugmem.h"
+
 #ifdef MIN
 #undef MIN
 #endif
@@ -50,7 +52,7 @@
 	void *buf = malloc(dataSize);
 	dataSize = read(buf, dataSize);
 	assert(dataSize > 0);
-	return new MemoryReadStream((byte *)buf, dataSize, true);
+	return new MemoryReadStream((byte *)buf, dataSize, true, rootOffset());
 }
 
 
@@ -171,7 +173,7 @@
 }
 
 SeekableSubReadStream::SeekableSubReadStream(SeekableReadStream *parentStream, uint32 begin, uint32 end, bool disposeParentStream)
-	: SubReadStream(parentStream, end, disposeParentStream),
+: SubReadStream(parentStream, end, disposeParentStream, parentStream->rootOffset() + begin),
 	_parentStream(parentStream),
 	_begin(begin) {
 	assert(_begin <= _end);
@@ -200,4 +202,12 @@
 	_parentStream->seek(_pos);
 }
 
+void SeekableSubReadStream::trunc(uint32 newSize) {
+	ASSERT(newSize <= size());
+	uint32 delta = size() - newSize;
+	_end -= delta;
+	if (_pos > _end)
+		_pos = _end;
+}
+
 }	// End of namespace Common

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/stream.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/stream.h	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/stream.h	2007-07-18 11:40:15 UTC (rev 28135)
@@ -22,7 +22,7 @@
 
 //Modified for the Game Resource Browser
 
-#ifndef COMMON_STREAM_H
+#ifndef COMMON_STREAM_H  
 #define COMMON_STREAM_H
 
 #include "streams/streams_stdafx.h"
@@ -54,6 +54,10 @@
 	 * Reset the I/O error status.
 	 */
 	virtual void clearIOFailed() {}
+
+	virtual uint32 rootOffset() { //if I'm a derived stream, get offset of my root (-1 if not known)
+		return 0;
+	}
 };
 
 /**
@@ -326,18 +330,23 @@
 	uint32 _pos;
 	uint32 _end;
 	bool _disposeParentStream;
+	uint32 _rootOffset;
 public:
-	SubReadStream(ReadStream *parentStream, uint32 end, bool disposeParentStream = false)
+	SubReadStream(ReadStream *parentStream, uint32 end, bool disposeParentStream = false, uint32 rootOffset = -1)
 		: _parentStream(parentStream),
 		  _pos(0),
 		  _end(end),
-		  _disposeParentStream(disposeParentStream) {}
+		  _disposeParentStream(disposeParentStream),
+		  _rootOffset(rootOffset) {}
 	~SubReadStream() {
 		if (_disposeParentStream) delete _parentStream;
 	}
 
 	virtual bool eos() const { return _pos == _end; }
 	virtual uint32 read(void *dataPtr, uint32 dataSize);
+	virtual uint32 rootOffset() {
+		return _rootOffset;
+	}
 };
 
 /*
@@ -356,6 +365,8 @@
 	virtual uint32 size() const { return _end - _begin; }
 
 	virtual void seek(int32 offset, int whence = SEEK_SET);
+
+	virtual void trunc(uint32 newSize);
 };
 
 /**
@@ -370,6 +381,7 @@
 	uint32 _pos;
 	byte _encbyte;
 	bool _disposeMemory;
+	uint32 _rootOffset;
 
 public:
 
@@ -378,13 +390,14 @@
 	 * wraps it. If disposeMemory is true, the MemoryReadStream takes ownership
 	 * of the buffer and hence free's it when destructed.
 	 */
-	MemoryReadStream(const byte *dataPtr, uint32 dataSize, bool disposeMemory = false) :
+	MemoryReadStream(const byte *dataPtr, uint32 dataSize, bool disposeMemory = false, uint32 rootOffset = -1) :
 		_ptrOrig(dataPtr),
 		_ptr(dataPtr),
 		_size(dataSize),
 		_pos(0),
 		_encbyte(0),
-		_disposeMemory(disposeMemory) {}
+		_disposeMemory(disposeMemory),
+		_rootOffset(rootOffset) {}
 
 	~MemoryReadStream() {
 		if (_disposeMemory)
@@ -400,6 +413,9 @@
 	uint32 size() const { return _size; }
 
 	void seek(int32 offs, int whence = SEEK_SET);
+	virtual uint32 rootOffset() {
+		return _rootOffset;
+	}
 };
 
 /**

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/xorstream.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/xorstream.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/xorstream.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -21,7 +21,7 @@
  */
 
 #include "browser_stdafx.h"
-#include "streams/streams_stdafx.h"
+#include "streams/streams_stdafx.h"  
 
 #include "streams/xorstream.h"
 
@@ -34,14 +34,14 @@
 
 namespace Common {
 
-XORStream* XORStream::wrap(byte encbyte, SeekableReadStream* streamImpl, bool ownStream) {
+/*XORStream* XORStream::wrap(byte encbyte, SeekableReadStream* streamImpl, bool ownStream) {
 	if (!streamImpl)
 		return NULL;
 	return new XORStream(encbyte, streamImpl, ownStream);
-}
+}*/
 
-XORStream::XORStream(byte encbyte, SeekableReadStream* streamImpl, bool ownStream)
-	: _encbyte(encbyte), _streamImpl(streamImpl), _ownStream(ownStream) {
+XORStream::XORStream(byte encbyte, SeekableReadStream* streamImpl, bool ownStream, uint32 rootOffset /*= -1*/)
+	: _encbyte(encbyte), _streamImpl(streamImpl), _ownStream(ownStream), _rootOffset(rootOffset) {
 		ASSERT(_streamImpl);
 }
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/xorstream.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/xorstream.h	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/streams/xorstream.h	2007-07-18 11:40:15 UTC (rev 28135)
@@ -20,7 +20,7 @@
  *
  */
 
-#ifndef COMMON_XORSTREAM_H
+#ifndef COMMON_XORSTREAM_H   
 #define COMMON_XORSTREAM_H
 
 #include "streams/stream.h"
@@ -33,6 +33,7 @@
 	byte _encbyte;
 	SeekableReadStream* _streamImpl;
 	bool _ownStream;
+	uint32 _rootOffset;
 
 private:
 	// Disallow copying XORStream objects.
@@ -42,11 +43,11 @@
 
 public:
 
-	XORStream(byte encbyte, SeekableReadStream* streamImpl, bool ownStream);
+	XORStream(byte encbyte, SeekableReadStream* streamImpl, bool ownStream, uint32 rootOffset = -1);
 	virtual ~XORStream();
 
 	//returns NULL when given NULL stream
-	static XORStream* wrap(byte encbyte, SeekableReadStream* streamImpl, bool ownStream);
+	//static XORStream* wrap(byte encbyte, SeekableReadStream* streamImpl, bool ownStream);
 
 	void setencbyte(byte encbyte);
 
@@ -59,6 +60,9 @@
 	uint32 pos() const;
 	uint32 size() const;
 	void seek(int32 offs, int whence = SEEK_SET);
+	virtual uint32 rootOffset() {
+		return _rootOffset;
+	}
 };
 
 } // End of namespace Common

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/BrowserApp.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/BrowserApp.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/BrowserApp.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -10,14 +10,12 @@
 #include "browserapp_stdafx.h"
 
 #include "BrowserApp.h"
-//#include "BrowserDlg.h"
+//#include "BrowserDlg.h"  
 #include "MainForm.h"
 #include "guicon.h"
 
 #include <wx/filename.h>
 
-//#include "MadEdit.h"
-
 IMPLEMENT_APP(BrowserDlgApp)
 
 bool BrowserDlgApp::OnInit() {
@@ -35,19 +33,25 @@
 	/*const long style = wxCAPTION | wxRESIZE_BORDER | wxSYSTEM_MENU | wxTHICK_FRAME | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxCLOSE_BOX;
 	wxFrame* frame = new wxFrame(mainForm, wxID_ANY, wxT("MadEdit"));
 
-	*MadEdit* madEdit = new MadEdit(frame);
+	CHexEditCtrl* hexEdit = new CHexEditCtrl(frame);
 
-	wxFileName fn(wxT("C:\\Zbys\\gsoc\\Browser\\vc8\\dummy.txt"));
-	madEdit->LoadFromFile(fn.GetFullPath());
+	//wxFileName fn(wxT("C:\\Zbys\\gsoc\\Browser\\vc8\\dummy.txt"));
+	//madEdit->LoadFromFile(fn.GetFullPath());
+	hexEdit->SetData( (wxByte*)
+		"This is a test !@##asrgfq345)1"
+		"This is a test !@##%^$23465232"
+		"This is a test !@#q23w4gq %$)3"
+		"This is a test !@##$%^*%^$@()4"
+		"This is a test !@#@#%Y&$%$%$)5", 50);
 
-	*wxBoxSizer *panelsizer = new wxBoxSizer(wxVERTICAL);
+	/*wxBoxSizer *panelsizer = new wxBoxSizer(wxVERTICAL);
 	panelsizer->Add(_page, 1, wxALL|wxEXPAND, 0);
 
 	frame->SetAutoLayout(true);
 	frame->SetSizer(panelsizer);	
-	frame->Layout();*
+	frame->Layout();*/
 
-	frame->Show(true);*/
+	//frame->Show(true);
 
 	return true;
 }

Copied: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/DefaultPlugin.cpp (from rev 28115, scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test2.cpp)
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/DefaultPlugin.cpp	                        (rev 0)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/DefaultPlugin.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -0,0 +1,156 @@
+//---------------------------------------------------------------------------
+//
+// Name:        MainForm.cpp
+// Author:      Zbyl
+// Created:     2007-07-01 11:17:49
+// Description: MainForm class implementation
+//
+//---------------------------------------------------------------------------
+
+#include "browserapp_stdafx.h"
+
+#include "MainForm.h"
+
+#include <wx/filename.h>
+
+#include <iostream>
+#include <fstream>
+
+#include "plugin.h"
+#include "ObjectRegistry.h"
+#include "FileTypeRegistry.h"
+
+#include "PluginUtil.h"
+
+#include "ObjectChain.h"
+
+#include "ExplorationTree.h"
+#include "VirtualNode.h"
+
+#include "FileTypeRecognizer.h"
+#include "PanelProvider.h"
+
+#include "basic/Directories.h"
+#include "basic/DirectoryPresenter.h"
+#include "basic/BasicParsers.h"
+#include "basic/ImagePresenter.h"
+#include "basic/TextPresenter.h"
+#include "basic/BinaryPresenter.h"
+#include "basic/HtmlPresenter.h"
+#include "basic/IconPresenter.h"
+#include "basic/FileInfoPresenter.h"
+
+#include "scumm/ScummRecognizer.h"
+#include "scumm/ScummParser.h"
+#include "scumm/ScummBlockPresenter.h"
+#include "scumm/ScummCommonPresenters.h"
+#include "scumm/ScummSpecificPresenters.h"
+#include "scumm/ScummSpecificPresenters2.h"
+#include "scumm/BlockyBlockPresenter.h"
+
+#include "debugmem.h"
+
+using namespace Browser;
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+#define EMPTY_TOKEN
+PLUGIN_DESC_EX(DefaultPlugin, wxT("MyPlugins"), 1, EMPTY_TOKEN)
+	//PLUGGED_OBJECT(RootDirectory)
+	PLUGGED_OBJECT(PanelProvider)
+
+	PLUGGED_OBJECT(DirectoryPresenter)
+	PLUGGED_OBJECT(ImagePresenter)
+	PLUGGED_OBJECT(TextPresenter)
+	PLUGGED_OBJECT(BinaryPresenter)
+	PLUGGED_OBJECT(HtmlPresenter)
+	//PLUGGED_OBJECT(IconPresenter)
+	PLUGGED_OBJECT(FileInfoPresenter)
+
+	PLUGGED_OBJECT(TextParser)
+	PLUGGED_OBJECT(BinaryParser)
+	PLUGGED_OBJECT(BMPParser)
+
+	PLUGGED_OBJECT(BinaryFileTypeRecognizer)
+	PLUGGED_OBJECT(BinaryFileTypeParserResolver)
+	PLUGGED_OBJECT(BMPFileTypeRecognizer)
+	PLUGGED_OBJECT(BMPFileTypeParserResolver)
+	PLUGGED_OBJECT(TextFileTypeRecognizer)
+	PLUGGED_OBJECT(TextFileTypeParserResolver)
+
+	PLUGGED_OBJECT(ScummFileTypeRecognizer)
+	PLUGGED_OBJECT(ScummFileTypeParserResolver)
+
+	PLUGGED_OBJECT(ScummParser)
+	PLUGGED_OBJECT(ScummBlockPresenter)
+	PLUGGED_OBJECT(ScummBlockInfoPresenter)
+	PLUGGED_OBJECT(BlockyBlockPresenter)
+
+	PLUGGED_OBJECT(ScummLOFFBlockPresenter)	
+	PLUGGED_OBJECT(ScummOFFSBlockPresenter)	
+	PLUGGED_OBJECT(ScummRMHDBlockPresenter)	
+	PLUGGED_OBJECT(ScummTRNSBlockPresenter)	
+	PLUGGED_OBJECT(ScummPALBlockPresenter)	
+	PLUGGED_OBJECT(ScummIMGBlockPresenter)	
+
+	PLUGGED_OBJECT(ScummScriptBlockPresenter)	
+
+	PLUGGED_OBJECT(ScummRNAMBlockPresenter)	
+	PLUGGED_OBJECT(ScummMAXSBlockPresenter)	
+	PLUGGED_OBJECT(ScummDOBJBlockPresenter)	
+	PLUGGED_OBJECT(ScummANAMBlockPresenter)	
+	PLUGGED_OBJECT(ScummDIRBlockPresenter)	
+
+PLUGIN_END
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+//HACK: manual loading of the Scumm plugin
+
+#ifdef _MSC_VER
+	#define DLL_IMPORT __declspec(dllimport)
+#else
+	#define DLL_IMPORT
+#endif
+
+//extern "C" {
+//DLL_IMPORT const Plugin& getPlugin();
+//}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+void MainForm::InitializeRootDirectory() {
+
+	infoout << wxT("Registering Default Plugin.") << std::endl;
+	ObjectRegistry::get()->registerPlugin( &getDefaultPlugin, false );
+	FileTypeRegistry::get()->registerPlugins();
+
+	wxTreeItemId rootItem = ExplorationTree::get()->addRoot(wxT("RootDirectory"));
+
+	RCPtr<DirectoryPresenter> dirPresenter( new DirectoryPresenter() );
+	RCPtr<RootDirectory> rootDir( new RootDirectory(rootItem, dirPresenter.get()) );
+
+	ObjectChain* rootChain = ExplorationTree::get()->getRootObjectChain();
+	VirtualNodeItemData* itemData = new VirtualNodeItemData(rootDir.get(), rootChain);
+	ExplorationTree::get()->setItemData(rootItem, itemData);
+
+	rootChain->addObject(rootDir);
+	rootChain->addObject(dirPresenter);
+}
+
+void MainForm::ExplorationTreeCleanup() {
+	infoout << wxT("Exploration Tree Cleanup.") << std::endl;
+
+	ExplorationTree::get()->cleanup();
+	InitializeRootDirectory();
+}
+
+void MainForm::OnExplorationTreeCleanup(wxCommandEvent& event) {
+	ExplorationTreeCleanup();
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -7,7 +7,7 @@
 //
 //---------------------------------------------------------------------------
 
-#include "browserapp_stdafx.h"
+#include "browserapp_stdafx.h"  
 
 #include "MainForm.h"
 
@@ -33,21 +33,27 @@
 	
 	EVT_CLOSE(MainForm::OnClose)
 	EVT_IDLE(MainForm::MainFormIdle)
-	EVT_MENU(ID_OPEN, MainForm::OnOpen)
+	EVT_MENU(wxID_OPEN, MainForm::OnOpen)
+	EVT_MENU(ID_OPENDIRECTORY, MainForm::OnOpenDir)
 	EVT_MENU(wxID_EXIT, MainForm::OnExit)
 	EVT_MENU(ID_DUMPROOTOBJECTCHAIN, MainForm::OnDumpRootObjectChain)
 	EVT_MENU(ID_DUMPCURRENTOBJECTCHAIN, MainForm::OnDumpCurrentObjectChain)
 	EVT_MENU(ID_ACTIVATENODE, MainForm::OnActivateNode)
 	EVT_MENU(ID_LOADPLUGIN, MainForm::OnLoadPlugin)
+	EVT_MENU(ID_EXPLORATIONTREECLEANUP, MainForm::OnExplorationTreeCleanup)
+	EVT_MENU(ID_TEST0, MainForm::OnTest0)
 	EVT_MENU(ID_TEST1, MainForm::OnTest1)
-	EVT_MENU(ID_TEST1_CLEANUP, MainForm::OnTest1Cleanup)
-	EVT_MENU(ID_TEST0, MainForm::OnTest0)
 	EVT_MENU(ID_TEST2, MainForm::OnTest2)
 	EVT_MENU(ID_DETACH, MainForm::OnDetachPanel)
+	EVT_MENU(ID_ATTACHBINARYPRESENTER, MainForm::OnAttachBinaryPresenter)
+	EVT_MENU(ID_POPUP_ACTIVATE , MainForm::OnPopupActivate)
+	EVT_MENU(ID_POPUP_ATTACHBINARYPRESENTER , MainForm::OnPopupAttachBinaryPresenter)
+	EVT_MENU(ID_POPUP_DUMPOBJECTCHAIN , MainForm::OnPopupDumpObjectChain)
 	
 	EVT_TREE_ITEM_ACTIVATED(ID_BROWSERTREE,MainForm::browserTreeItemActivated)
 	EVT_TREE_ITEM_EXPANDED(ID_BROWSERTREE,MainForm::browserTreeItemExpanded)
 	EVT_TREE_ITEM_EXPANDING(ID_BROWSERTREE,MainForm::browserTreeItemExpanding)
+	EVT_TREE_ITEM_MENU(ID_BROWSERTREE,MainForm::browserTreeItemMenu)
 END_EVENT_TABLE()
 ////Event Table End
 
@@ -68,6 +74,7 @@
 }
 
 MainForm::~MainForm() {
+	delete browserTreePopupMenu; //not done automatically, not done by wxDev-C++
 }
 
 void MainForm::CreateGUIControls() {
@@ -86,7 +93,7 @@
 	WxBoxSizer1->Add(WxSplitterWindow1,1,wxEXPAND | wxALL,0);
 
 	browserTree = new wxTreeCtrl(WxSplitterWindow1, ID_BROWSERTREE, wxPoint(5,5), wxSize(185,382), wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT);
-	browserTree->SetFont(wxFont(8, wxSWISS, wxNORMAL,wxNORMAL, false, wxT("Tahoma")));
+	browserTree->SetFont(wxFont(10, wxSWISS, wxNORMAL,wxNORMAL, false, wxT("Tahoma")));
 
 	mainPanel = new wxPanel(WxSplitterWindow1, ID_MAINPANEL, wxPoint(200,8), wxSize(363,376));
 	mainPanel->SetFont(wxFont(8, wxSWISS, wxNORMAL,wxNORMAL, false, wxT("Tahoma")));
@@ -99,9 +106,14 @@
 	browserNotebook->SetFont(wxFont(8, wxSWISS, wxNORMAL,wxNORMAL, false, wxT("Tahoma")));
 	WxBoxSizer2->Add(browserNotebook,1,wxEXPAND | wxALL,5);
 
+	browserTreePopupMenu = new wxMenu(wxT(""));browserTreePopupMenu->Append(ID_POPUP_ACTIVATE, wxT("Activate"), wxT(""), wxITEM_NORMAL);
+	browserTreePopupMenu->Append(ID_POPUP_ATTACHBINARYPRESENTER, wxT("Attach Binary Presenter"), wxT(""), wxITEM_NORMAL);
+	browserTreePopupMenu->Append(ID_POPUP_DUMPOBJECTCHAIN, wxT("Dump Object Chain"), wxT(""), wxITEM_NORMAL);
+
 	WxMenuBar1 = new wxMenuBar();
 	wxMenu *ID_FILE_MENU_Mnu_Obj = new wxMenu(0);
-	ID_FILE_MENU_Mnu_Obj->Append(ID_OPEN, wxT("Open..."), wxT(""), wxITEM_NORMAL);
+	ID_FILE_MENU_Mnu_Obj->Append(wxID_OPEN, wxT("Open..."), wxT(""), wxITEM_NORMAL);
+	ID_FILE_MENU_Mnu_Obj->Append(ID_OPENDIRECTORY, wxT("Open directory..."), wxT(""), wxITEM_NORMAL);
 	ID_FILE_MENU_Mnu_Obj->AppendSeparator();
 	ID_FILE_MENU_Mnu_Obj->Append(wxID_EXIT, wxT("Exit"), wxT(""), wxITEM_NORMAL);
 	WxMenuBar1->Append(ID_FILE_MENU_Mnu_Obj, wxT("File"));
@@ -115,15 +127,19 @@
 	WxMenuBar1->Append(ID_COMMANDS_MENU_Mnu_Obj, wxT("Commands"));
 	
 	wxMenu *ID_TEST_MENU_Mnu_Obj = new wxMenu(0);
+	ID_TEST_MENU_Mnu_Obj->Append(ID_EXPLORATIONTREECLEANUP, wxT("Cleanup Exploration Tree"), wxT(""), wxITEM_NORMAL);
+	ID_TEST_MENU_Mnu_Obj->Append(ID_TEST0, wxT("Test0 - No Scumm Plugins"), wxT(""), wxITEM_NORMAL);
+	ID_TEST_MENU_Mnu_Obj->Enable(ID_TEST0,false);
 	ID_TEST_MENU_Mnu_Obj->Append(ID_TEST1, wxT("Test1 - No Scumm Plugins"), wxT(""), wxITEM_NORMAL);
-	ID_TEST_MENU_Mnu_Obj->Append(ID_TEST1_CLEANUP, wxT("Test Cleanup"), wxT(""), wxITEM_NORMAL);
-	ID_TEST_MENU_Mnu_Obj->Append(ID_TEST0, wxT("Test0 - No Scumm Plugins"), wxT(""), wxITEM_NORMAL);
+	ID_TEST_MENU_Mnu_Obj->Enable(ID_TEST1,false);
 	ID_TEST_MENU_Mnu_Obj->Append(ID_TEST2, wxT("Test2 - With Scumm Plugins"), wxT(""), wxITEM_NORMAL);
+	ID_TEST_MENU_Mnu_Obj->Enable(ID_TEST2,false);
 	WxMenuBar1->Append(ID_TEST_MENU_Mnu_Obj, wxT("Tests"));
 	
-	wxMenu *ID_DETACHPANEL_Mnu_Obj = new wxMenu(0);
-	ID_DETACHPANEL_Mnu_Obj->Append(ID_DETACH, wxT("Detach"), wxT(""), wxITEM_NORMAL);
-	WxMenuBar1->Append(ID_DETACHPANEL_Mnu_Obj, wxT("Detach panel"));
+	wxMenu *ID_PRESENTERS_Mnu_Obj = new wxMenu(0);
+	ID_PRESENTERS_Mnu_Obj->Append(ID_DETACH, wxT("Detach"), wxT(""), wxITEM_NORMAL);
+	ID_PRESENTERS_Mnu_Obj->Append(ID_ATTACHBINARYPRESENTER, wxT("Attach Binary Presenter"), wxT(""), wxITEM_NORMAL);
+	WxMenuBar1->Append(ID_PRESENTERS_Mnu_Obj, wxT("Presenters"));
 	SetMenuBar(WxMenuBar1);
 
 	WxSplitterWindow1->SplitVertically(browserTree,mainPanel,185);
@@ -151,3 +167,11 @@
 	Close(true);
 }
 
+
+/*
+ * OpendirectoryClick
+ */
+void MainForm::OpendirectoryClick(wxCommandEvent& event)
+{
+	// insert your code here
+}

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.h	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.h	2007-07-18 11:40:15 UTC (rev 28135)
@@ -44,25 +44,34 @@
 		//virtual bool Destroy();
 		void InitializeObjects();
 		void CleanupObjects();
+		void InitializeRootDirectory();
+		void ExplorationTreeCleanup();
+		void OnExplorationTreeCleanup(wxCommandEvent& event);
 
 		void OnTimer(wxTimerEvent& event);
 
 		void dumpObjectChain(Core::ObjectChain* ochain);
 		void ExitClick(wxCommandEvent& event);
-		void OnTest1Cleanup(wxCommandEvent& event);
 		void OnTest1(wxCommandEvent& event);
 		void browserTreeItemActivated(wxTreeEvent& event);
 		void browserTreeItemExpanding(wxTreeEvent& event);
-	void OnTest0(wxCommandEvent& event);
-	void OnDumpRootObjectChain(wxCommandEvent& event);
-	void OnTest2(wxCommandEvent& event);
-	void OnDumpCurrentObjectChain(wxCommandEvent& event);
-	void OnActivateNode(wxCommandEvent& event);
+		void OnTest0(wxCommandEvent& event);
+		void OnDumpRootObjectChain(wxCommandEvent& event);
+		void OnTest2(wxCommandEvent& event);
+		void OnDumpCurrentObjectChain(wxCommandEvent& event);
+		void OnActivateNode(wxCommandEvent& event);
 		void browserTreeItemExpanded(wxTreeEvent& event);
-	void OnOpen(wxCommandEvent& event);
+		void OnOpen(wxCommandEvent& event);
+		void OnOpenDir(wxCommandEvent& event);
 		void MainFormIdle(wxIdleEvent& event);
-	void OnLoadPlugin(wxCommandEvent& event);
-	void OnDetachPanel(wxCommandEvent& event);
+		void OnLoadPlugin(wxCommandEvent& event);
+		void OnDetachPanel(wxCommandEvent& event);
+		void OnAttachBinaryPresenter(wxCommandEvent& event);
+		void OnPopupActivate(wxCommandEvent& event);
+		void OnPopupAttachBinaryPresenter(wxCommandEvent& event);
+		void OnPopupDumpObjectChain(wxCommandEvent& event);
+		void browserTreeItemMenu(wxTreeEvent& event);
+	void OpendirectoryClick(wxCommandEvent& event);
 		
 	private:
 		//Do not add custom control declarations between
@@ -70,6 +79,7 @@
 		//wxDev-C++ will remove them. Add custom code after the block.
 		////GUI Control Declaration Start
 		wxMenuBar *WxMenuBar1;
+		wxMenu *browserTreePopupMenu;
 		wxNotebook *browserNotebook;
 		wxBoxSizer *WxBoxSizer2;
 		wxPanel *mainPanel;
@@ -88,20 +98,25 @@
 		{
 			////GUI Enum Control ID Start
 			ID_FILE_MENU = 1004,
-			ID_OPEN = 1005,
+			ID_OPENDIRECTORY = 1038,
 			ID_COMMANDS_MENU = 1025,
 			ID_DUMPROOTOBJECTCHAIN = 1026,
 			ID_DUMPCURRENTOBJECTCHAIN = 1028,
 			ID_ACTIVATENODE = 1029,
 			ID_LOADPLUGIN = 1030,
 			ID_TEST_MENU = 1010,
+			ID_EXPLORATIONTREECLEANUP = 1012,
+			ID_TEST0 = 1022,
 			ID_TEST1 = 1011,
-			ID_TEST1_CLEANUP = 1012,
-			ID_TEST0 = 1022,
 			ID_TEST2 = 1024,
-			ID_DETACHPANEL = 1031,
+			ID_PRESENTERS = 1031,
 			ID_DETACH = 1032,
+			ID_ATTACHBINARYPRESENTER = 1034,
 			
+			ID_POPUP_ACTIVATE = 1035,
+			ID_POPUP_ATTACHBINARYPRESENTER = 1036,
+			ID_POPUP_DUMPOBJECTCHAIN = 1037,
+			
 			ID_BROWSERNOTEBOOK = 1021,
 			ID_MAINPANEL = 1017,
 			ID_BROWSERTREE = 1016,

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform	2007-07-18 11:40:15 UTC (rev 28135)
@@ -72,11 +72,18 @@
         Top = 5
         Width = 185
         Height = 382
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Tahoma'
+        Font.Style = []
         Indent = 19
+        ParentFont = False
         TabOrder = 0
         EVT_TREE_ITEM_ACTIVATED = 'browserTreeItemActivated'
         EVT_TREE_ITEM_EXPANDED = 'browserTreeItemExpanded'
         EVT_TREE_ITEM_EXPANDING = 'browserTreeItemExpanding'
+        EVT_TREE_ITEM_MENU = 'browserTreeItemMenu'
         Wx_BGColor = clBlack
         Wx_Class = 'wxTreeCtrl'
         Wx_ControlOrientation = wxControlHorizontal
@@ -246,174 +253,325 @@
       060446696C6512436172726965642E57785F436865636B656408164361727269
       65642E57585F4249544D41502E446174610A0C00000007544269746D61700000
       000016436172726965642E57785F46696C65486973746F727908184361727269
-      65642E5778437573746F6D4D656E754974656D0AE20300001100000054577843
+      65642E5778437573746F6D4D656E754974656D0A4D0500001100000054577843
       7573746F6D4D656E754974656D5450463018547778437573746F6D4D656E7549
       74656D577261707065720011436172726965642E49735375624D656E75081043
       6172726965642E4556545F4D656E7506064F6E4F70656E12436172726965642E
       57785F456E61626C65640911436172726965642E57785F48696464656E081143
-      6172726965642E57785F49444E616D65060749445F4F50454E12436172726965
-      642E57785F494456616C756503ED0318436172726965642E57785F4D656E7549
-      74656D5374796C65070F77784D6E7549746D5F4E6F726D616C12436172726965
-      642E57785F43617074696F6E06074F70656E2E2E2E12436172726965642E5778
+      6172726965642E57785F49444E616D650609777849445F4F50454E1243617272
+      6965642E57785F494456616C756503ED0318436172726965642E57785F4D656E
+      754974656D5374796C65070F77784D6E7549746D5F4E6F726D616C1243617272
+      6965642E57785F43617074696F6E06074F70656E2E2E2E12436172726965642E
+      57785F436865636B65640816436172726965642E57585F4249544D41502E4461
+      74610A0C00000007544269746D61700000000016436172726965642E57785F46
+      696C65486973746F727908000011000000545778437573746F6D4D656E754974
+      656D5450463018547778437573746F6D4D656E754974656D5772617070657200
+      11436172726965642E49735375624D656E750810436172726965642E4556545F
+      4D656E7506094F6E4F70656E44697212436172726965642E57785F456E61626C
+      65640911436172726965642E57785F48696464656E0811436172726965642E57
+      785F49444E616D65061049445F4F50454E4449524543544F5259124361727269
+      65642E57785F494456616C7565030E0418436172726965642E57785F4D656E75
+      4974656D5374796C65070F77784D6E7549746D5F4E6F726D616C124361727269
+      65642E57785F43617074696F6E06114F70656E206469726563746F72792E2E2E
+      12436172726965642E57785F436865636B65640816436172726965642E57585F
+      4249544D41502E446174610A0C00000007544269746D61700000000016436172
+      726965642E57785F46696C65486973746F727908000011000000545778437573
+      746F6D4D656E754974656D5450463018547778437573746F6D4D656E75497465
+      6D577261707065720011436172726965642E49735375624D656E750812436172
+      726965642E57785F456E61626C65640911436172726965642E57785F48696464
+      656E0811436172726965642E57785F49444E616D65060B777849445F53544154
+      494312436172726965642E57785F494456616C756503EF031843617272696564
+      2E57785F4D656E754974656D5374796C65071277784D6E7549746D5F53657061
+      7261746F7212436172726965642E57785F43617074696F6E06032D2D2D124361
+      72726965642E57785F436865636B65640816436172726965642E57585F424954
+      4D41502E446174610A0C00000007544269746D61700000000016436172726965
+      642E57785F46696C65486973746F727908000011000000545778437573746F6D
+      4D656E754974656D5450463018547778437573746F6D4D656E754974656D5772
+      61707065720011436172726965642E49735375624D656E750810436172726965
+      642E4556545F4D656E7506064F6E4578697412436172726965642E57785F456E
+      61626C65640911436172726965642E57785F48696464656E0811436172726965
+      642E57785F49444E616D650609777849445F4558495412436172726965642E57
+      785F494456616C756503F10318436172726965642E57785F4D656E754974656D
+      5374796C65070F77784D6E7549746D5F4E6F726D616C12436172726965642E57
+      785F43617074696F6E06044578697412436172726965642E57785F436865636B
+      65640816436172726965642E57585F4249544D41502E446174610A0C00000007
+      544269746D61700000000016436172726965642E57785F46696C65486973746F
+      7279080000000011000000545778437573746F6D4D656E754974656D54504630
+      18547778437573746F6D4D656E754974656D5772617070657200114361727269
+      65642E49735375624D656E750812436172726965642E57785F456E61626C6564
+      0911436172726965642E57785F48696464656E0811436172726965642E57785F
+      49444E616D65061049445F434F4D4D414E44535F4D454E551243617272696564
+      2E57785F494456616C756503010418436172726965642E57785F4D656E754974
+      656D5374796C65070F77784D6E7549746D5F4E6F726D616C1243617272696564
+      2E57785F43617074696F6E0608436F6D6D616E647312436172726965642E5778
       5F436865636B65640816436172726965642E57585F4249544D41502E44617461
       0A0C00000007544269746D61700000000016436172726965642E57785F46696C
-      65486973746F727908000011000000545778437573746F6D4D656E754974656D
-      5450463018547778437573746F6D4D656E754974656D57726170706572001143
-      6172726965642E49735375624D656E750812436172726965642E57785F456E61
-      626C65640911436172726965642E57785F48696464656E081143617272696564
-      2E57785F49444E616D65060B777849445F53544154494312436172726965642E
-      57785F494456616C756503EF0318436172726965642E57785F4D656E75497465
-      6D5374796C65071277784D6E7549746D5F536570617261746F72124361727269
-      65642E57785F43617074696F6E06032D2D2D12436172726965642E57785F4368
-      65636B65640816436172726965642E57585F4249544D41502E446174610A0C00
-      000007544269746D61700000000016436172726965642E57785F46696C654869
-      73746F727908000011000000545778437573746F6D4D656E754974656D545046
-      3018547778437573746F6D4D656E754974656D57726170706572001143617272
-      6965642E49735375624D656E750810436172726965642E4556545F4D656E7506
-      064F6E4578697412436172726965642E57785F456E61626C6564091143617272
-      6965642E57785F48696464656E0811436172726965642E57785F49444E616D65
-      0609777849445F4558495412436172726965642E57785F494456616C756503F1
+      65486973746F72790818436172726965642E5778437573746F6D4D656E754974
+      656D0AD505000011000000545778437573746F6D4D656E754974656D54504630
+      18547778437573746F6D4D656E754974656D5772617070657200114361727269
+      65642E49735375624D656E750810436172726965642E4556545F4D656E750615
+      4F6E44756D70526F6F744F626A656374436861696E12436172726965642E5778
+      5F456E61626C65640811436172726965642E57785F48696464656E0811436172
+      726965642E57785F49444E616D65061649445F44554D50524F4F544F424A4543
+      54434841494E12436172726965642E57785F494456616C756503020418436172
+      726965642E57785F4D656E754974656D5374796C65070F77784D6E7549746D5F
+      4E6F726D616C12436172726965642E57785F43617074696F6E061644756D7020
+      526F6F74204F626A65637420436861696E12436172726965642E57785F436865
+      636B65640816436172726965642E57585F4249544D41502E446174610A0C0000
+      0007544269746D61700000000016436172726965642E57785F46696C65486973
+      746F727908000011000000545778437573746F6D4D656E754974656D54504630
+      18547778437573746F6D4D656E754974656D5772617070657200114361727269
+      65642E49735375624D656E750810436172726965642E4556545F4D656E750618
+      4F6E44756D7043757272656E744F626A656374436861696E1243617272696564
+      2E57785F456E61626C65640911436172726965642E57785F48696464656E0811
+      436172726965642E57785F49444E616D65061949445F44554D5043555252454E
+      544F424A454354434841494E12436172726965642E57785F494456616C756503
+      040418436172726965642E57785F4D656E754974656D5374796C65070F77784D
+      6E7549746D5F4E6F726D616C12436172726965642E57785F43617074696F6E06
+      1944756D702043757272656E74204F626A65637420436861696E124361727269
+      65642E57785F436865636B65640816436172726965642E57585F4249544D4150
+      2E446174610A0C00000007544269746D61700000000016436172726965642E57
+      785F46696C65486973746F727908000011000000545778437573746F6D4D656E
+      754974656D5450463018547778437573746F6D4D656E754974656D5772617070
+      65720011436172726965642E49735375624D656E750810436172726965642E45
+      56545F4D656E75060E4F6E41637469766174654E6F646512436172726965642E
+      57785F456E61626C65640911436172726965642E57785F48696464656E081143
+      6172726965642E57785F49444E616D65060F49445F41435449564154454E4F44
+      4512436172726965642E57785F494456616C756503050418436172726965642E
+      57785F4D656E754974656D5374796C65070F77784D6E7549746D5F4E6F726D61
+      6C12436172726965642E57785F43617074696F6E060D4163746976617465204E
+      6F646512436172726965642E57785F436865636B65640816436172726965642E
+      57585F4249544D41502E446174610A0C00000007544269746D61700000000016
+      436172726965642E57785F46696C65486973746F727908000011000000545778
+      437573746F6D4D656E754974656D5450463018547778437573746F6D4D656E75
+      4974656D577261707065720011436172726965642E49735375624D656E750810
+      436172726965642E4556545F4D656E75060C4F6E4C6F6164506C7567696E1243
+      6172726965642E57785F456E61626C65640911436172726965642E57785F4869
+      6464656E0811436172726965642E57785F49444E616D65060D49445F4C4F4144
+      504C5547494E12436172726965642E57785F494456616C756503060418436172
+      726965642E57785F4D656E754974656D5374796C65070F77784D6E7549746D5F
+      4E6F726D616C12436172726965642E57785F43617074696F6E060B4C6F616420
+      506C7567696E12436172726965642E57785F436865636B656408164361727269
+      65642E57585F4249544D41502E446174610A0C00000007544269746D61700000
+      000016436172726965642E57785F46696C65486973746F727908000000001100
+      0000545778437573746F6D4D656E754974656D5450463018547778437573746F
+      6D4D656E754974656D577261707065720011436172726965642E49735375624D
+      656E750812436172726965642E57785F456E61626C6564091143617272696564
+      2E57785F48696464656E0811436172726965642E57785F49444E616D65060C49
+      445F544553545F4D454E5512436172726965642E57785F494456616C756503F2
       0318436172726965642E57785F4D656E754974656D5374796C65070F77784D6E
-      7549746D5F4E6F726D616C12436172726965642E57785F43617074696F6E0604
-      4578697412436172726965642E57785F436865636B6564081643617272696564
-      2E57585F4249544D41502E446174610A0C00000007544269746D617000000000
-      16436172726965642E57785F46696C65486973746F7279080000000011000000
-      545778437573746F6D4D656E754974656D5450463018547778437573746F6D4D
-      656E754974656D577261707065720011436172726965642E49735375624D656E
-      750812436172726965642E57785F456E61626C65640911436172726965642E57
-      785F48696464656E0811436172726965642E57785F49444E616D65061049445F
-      434F4D4D414E44535F4D454E5512436172726965642E57785F494456616C7565
-      03010418436172726965642E57785F4D656E754974656D5374796C65070F7778
-      4D6E7549746D5F4E6F726D616C12436172726965642E57785F43617074696F6E
-      0608436F6D6D616E647312436172726965642E57785F436865636B6564081643
-      6172726965642E57585F4249544D41502E446174610A0C00000007544269746D
-      61700000000016436172726965642E57785F46696C65486973746F7279081843
-      6172726965642E5778437573746F6D4D656E754974656D0AD505000011000000
-      545778437573746F6D4D656E754974656D5450463018547778437573746F6D4D
-      656E754974656D577261707065720011436172726965642E49735375624D656E
-      750810436172726965642E4556545F4D656E7506154F6E44756D70526F6F744F
-      626A656374436861696E12436172726965642E57785F456E61626C6564081143
-      6172726965642E57785F48696464656E0811436172726965642E57785F49444E
-      616D65061649445F44554D50524F4F544F424A454354434841494E1243617272
-      6965642E57785F494456616C756503020418436172726965642E57785F4D656E
-      754974656D5374796C65070F77784D6E7549746D5F4E6F726D616C1243617272
-      6965642E57785F43617074696F6E061644756D7020526F6F74204F626A656374
-      20436861696E12436172726965642E57785F436865636B656408164361727269
-      65642E57585F4249544D41502E446174610A0C00000007544269746D61700000
-      000016436172726965642E57785F46696C65486973746F727908000011000000
-      545778437573746F6D4D656E754974656D5450463018547778437573746F6D4D
-      656E754974656D577261707065720011436172726965642E49735375624D656E
-      750810436172726965642E4556545F4D656E7506184F6E44756D704375727265
-      6E744F626A656374436861696E12436172726965642E57785F456E61626C6564
-      0911436172726965642E57785F48696464656E0811436172726965642E57785F
-      49444E616D65061949445F44554D5043555252454E544F424A45435443484149
-      4E12436172726965642E57785F494456616C756503040418436172726965642E
-      57785F4D656E754974656D5374796C65070F77784D6E7549746D5F4E6F726D61
-      6C12436172726965642E57785F43617074696F6E061944756D70204375727265
-      6E74204F626A65637420436861696E12436172726965642E57785F436865636B
+      7549746D5F4E6F726D616C12436172726965642E57785F43617074696F6E0605
+      546573747312436172726965642E57785F436865636B65640816436172726965
+      642E57585F4249544D41502E446174610A0C00000007544269746D6170000000
+      0016436172726965642E57785F46696C65486973746F72790818436172726965
+      642E5778437573746F6D4D656E754974656D0ABC050000110000005457784375
+      73746F6D4D656E754974656D5450463018547778437573746F6D4D656E754974
+      656D577261707065720011436172726965642E49735375624D656E7508104361
+      72726965642E4556545F4D656E7506184F6E4578706C6F726174696F6E547265
+      65436C65616E757012436172726965642E57785F456E61626C65640911436172
+      726965642E57785F48696464656E0811436172726965642E57785F49444E616D
+      65061949445F4558504C4F524154494F4E54524545434C45414E555012436172
+      726965642E57785F494456616C756503F40318436172726965642E57785F4D65
+      6E754974656D5374796C65070F77784D6E7549746D5F4E6F726D616C12436172
+      726965642E57785F43617074696F6E0618436C65616E7570204578706C6F7261
+      74696F6E205472656512436172726965642E57785F436865636B656408164361
+      72726965642E57585F4249544D41502E446174610A0C00000007544269746D61
+      700000000016436172726965642E57785F46696C65486973746F727908000011
+      000000545778437573746F6D4D656E754974656D545046301854777843757374
+      6F6D4D656E754974656D577261707065720011436172726965642E4973537562
+      4D656E750810436172726965642E4556545F4D656E7506074F6E546573743012
+      436172726965642E57785F456E61626C65640811436172726965642E57785F48
+      696464656E0811436172726965642E57785F49444E616D65060849445F544553
+      543012436172726965642E57785F494456616C756503FE031843617272696564
+      2E57785F4D656E754974656D5374796C65070F77784D6E7549746D5F4E6F726D
+      616C12436172726965642E57785F43617074696F6E06185465737430202D204E
+      6F205363756D6D20506C7567696E7312436172726965642E57785F436865636B
       65640816436172726965642E57585F4249544D41502E446174610A0C00000007
       544269746D61700000000016436172726965642E57785F46696C65486973746F
       727908000011000000545778437573746F6D4D656E754974656D545046301854
       7778437573746F6D4D656E754974656D57726170706572001143617272696564
-      2E49735375624D656E750810436172726965642E4556545F4D656E75060E4F6E
-      41637469766174654E6F646512436172726965642E57785F456E61626C656409
-      11436172726965642E57785F48696464656E0811436172726965642E57785F49
-      444E616D65060F49445F41435449564154454E4F444512436172726965642E57
-      785F494456616C756503050418436172726965642E57785F4D656E754974656D
-      5374796C65070F77784D6E7549746D5F4E6F726D616C12436172726965642E57
-      785F43617074696F6E060D4163746976617465204E6F64651243617272696564
-      2E57785F436865636B65640816436172726965642E57585F4249544D41502E44
-      6174610A0C00000007544269746D61700000000016436172726965642E57785F
-      46696C65486973746F727908000011000000545778437573746F6D4D656E7549
-      74656D5450463018547778437573746F6D4D656E754974656D57726170706572
-      0011436172726965642E49735375624D656E750810436172726965642E455654
-      5F4D656E75060C4F6E4C6F6164506C7567696E12436172726965642E57785F45
-      6E61626C65640911436172726965642E57785F48696464656E08114361727269
-      65642E57785F49444E616D65060D49445F4C4F4144504C5547494E1243617272
-      6965642E57785F494456616C756503060418436172726965642E57785F4D656E
-      754974656D5374796C65070F77784D6E7549746D5F4E6F726D616C1243617272
-      6965642E57785F43617074696F6E060B4C6F616420506C7567696E1243617272
-      6965642E57785F436865636B65640816436172726965642E57585F4249544D41
-      502E446174610A0C00000007544269746D61700000000016436172726965642E
-      57785F46696C65486973746F7279080000000011000000545778437573746F6D
-      4D656E754974656D5450463018547778437573746F6D4D656E754974656D5772
-      61707065720011436172726965642E49735375624D656E750812436172726965
-      642E57785F456E61626C65640911436172726965642E57785F48696464656E08
-      11436172726965642E57785F49444E616D65060C49445F544553545F4D454E55
-      12436172726965642E57785F494456616C756503F20318436172726965642E57
-      785F4D656E754974656D5374796C65070F77784D6E7549746D5F4E6F726D616C
-      12436172726965642E57785F43617074696F6E06055465737473124361727269
-      65642E57785F436865636B65640816436172726965642E57585F4249544D4150
-      2E446174610A0C00000007544269746D61700000000016436172726965642E57
-      785F46696C65486973746F72790818436172726965642E5778437573746F6D4D
-      656E754974656D0A9D05000011000000545778437573746F6D4D656E75497465
-      6D5450463018547778437573746F6D4D656E754974656D577261707065720011
-      436172726965642E49735375624D656E750810436172726965642E4556545F4D
-      656E7506074F6E546573743112436172726965642E57785F456E61626C656409
-      11436172726965642E57785F48696464656E0811436172726965642E57785F49
-      444E616D65060849445F544553543112436172726965642E57785F494456616C
-      756503F30318436172726965642E57785F4D656E754974656D5374796C65070F
-      77784D6E7549746D5F4E6F726D616C12436172726965642E57785F4361707469
-      6F6E06185465737431202D204E6F205363756D6D20506C7567696E7312436172
-      726965642E57785F436865636B65640816436172726965642E57585F4249544D
-      41502E446174610A0C00000007544269746D6170000000001643617272696564
-      2E57785F46696C65486973746F727908000011000000545778437573746F6D4D
-      656E754974656D5450463018547778437573746F6D4D656E754974656D577261
-      707065720011436172726965642E49735375624D656E75081043617272696564
-      2E4556545F4D656E75060E4F6E5465737431436C65616E757012436172726965
-      642E57785F456E61626C65640911436172726965642E57785F48696464656E08
-      11436172726965642E57785F49444E616D65061049445F54455354315F434C45
-      414E555012436172726965642E57785F494456616C756503F403184361727269
-      65642E57785F4D656E754974656D5374796C65070F77784D6E7549746D5F4E6F
-      726D616C12436172726965642E57785F43617074696F6E060C5465737420436C
-      65616E757012436172726965642E57785F436865636B65640816436172726965
-      642E57585F4249544D41502E446174610A0C00000007544269746D6170000000
-      0016436172726965642E57785F46696C65486973746F72790800001100000054
-      5778437573746F6D4D656E754974656D5450463018547778437573746F6D4D65
-      6E754974656D577261707065720011436172726965642E49735375624D656E75
-      0810436172726965642E4556545F4D656E7506074F6E54657374301243617272
+      2E49735375624D656E750810436172726965642E4556545F4D656E7506074F6E
+      546573743112436172726965642E57785F456E61626C65640811436172726965
+      642E57785F48696464656E0811436172726965642E57785F49444E616D650608
+      49445F544553543112436172726965642E57785F494456616C756503F3031843
+      6172726965642E57785F4D656E754974656D5374796C65070F77784D6E754974
+      6D5F4E6F726D616C12436172726965642E57785F43617074696F6E0618546573
+      7431202D204E6F205363756D6D20506C7567696E7312436172726965642E5778
+      5F436865636B65640816436172726965642E57585F4249544D41502E44617461
+      0A0C00000007544269746D61700000000016436172726965642E57785F46696C
+      65486973746F727908000011000000545778437573746F6D4D656E754974656D
+      5450463018547778437573746F6D4D656E754974656D57726170706572001143
+      6172726965642E49735375624D656E750810436172726965642E4556545F4D65
+      6E7506074F6E546573743212436172726965642E57785F456E61626C65640811
+      436172726965642E57785F48696464656E0811436172726965642E57785F4944
+      4E616D65060849445F544553543212436172726965642E57785F494456616C75
+      6503000418436172726965642E57785F4D656E754974656D5374796C65070F77
+      784D6E7549746D5F4E6F726D616C12436172726965642E57785F43617074696F
+      6E061A5465737432202D2057697468205363756D6D20506C7567696E73124361
+      72726965642E57785F436865636B65640816436172726965642E57585F424954
+      4D41502E446174610A0C00000007544269746D61700000000016436172726965
+      642E57785F46696C65486973746F727908000000001100000054577843757374
+      6F6D4D656E754974656D5450463018547778437573746F6D4D656E754974656D
+      577261707065720011436172726965642E49735375624D656E75081243617272
       6965642E57785F456E61626C65640911436172726965642E57785F4869646465
-      6E0811436172726965642E57785F49444E616D65060849445F54455354301243
-      6172726965642E57785F494456616C756503FE0318436172726965642E57785F
+      6E0811436172726965642E57785F49444E616D65060D49445F50524553454E54
+      45525312436172726965642E57785F494456616C756503070418436172726965
+      642E57785F4D656E754974656D5374796C65070F77784D6E7549746D5F4E6F72
+      6D616C12436172726965642E57785F43617074696F6E060A50726573656E7465
+      727312436172726965642E57785F436865636B65640816436172726965642E57
+      585F4249544D41502E446174610A0C00000007544269746D6170000000001643
+      6172726965642E57785F46696C65486973746F72790818436172726965642E57
+      78437573746F6D4D656E754974656D0AE002000011000000545778437573746F
+      6D4D656E754974656D5450463018547778437573746F6D4D656E754974656D57
+      7261707065720011436172726965642E49735375624D656E7508104361727269
+      65642E4556545F4D656E75060D4F6E44657461636850616E656C124361727269
+      65642E57785F456E61626C65640911436172726965642E57785F48696464656E
+      0811436172726965642E57785F49444E616D65060949445F4445544143481243
+      6172726965642E57785F494456616C756503080418436172726965642E57785F
       4D656E754974656D5374796C65070F77784D6E7549746D5F4E6F726D616C1243
-      6172726965642E57785F43617074696F6E06185465737430202D204E6F205363
-      756D6D20506C7567696E7312436172726965642E57785F436865636B65640816
-      436172726965642E57585F4249544D41502E446174610A0C0000000754426974
-      6D61700000000016436172726965642E57785F46696C65486973746F72790800
-      0011000000545778437573746F6D4D656E754974656D54504630185477784375
-      73746F6D4D656E754974656D577261707065720011436172726965642E497353
-      75624D656E750810436172726965642E4556545F4D656E7506074F6E54657374
-      3212436172726965642E57785F456E61626C65640911436172726965642E5778
-      5F48696464656E0811436172726965642E57785F49444E616D65060849445F54
-      4553543212436172726965642E57785F494456616C7565030004184361727269
-      65642E57785F4D656E754974656D5374796C65070F77784D6E7549746D5F4E6F
-      726D616C12436172726965642E57785F43617074696F6E061A5465737432202D
-      2057697468205363756D6D20506C7567696E7312436172726965642E57785F43
-      6865636B65640816436172726965642E57585F4249544D41502E446174610A0C
-      00000007544269746D61700000000016436172726965642E57785F46696C6548
-      6973746F7279080000000011000000545778437573746F6D4D656E754974656D
-      5450463018547778437573746F6D4D656E754974656D57726170706572001143
-      6172726965642E49735375624D656E750812436172726965642E57785F456E61
-      626C65640911436172726965642E57785F48696464656E081143617272696564
-      2E57785F49444E616D65060E49445F44455441434850414E454C124361727269
-      65642E57785F494456616C756503070418436172726965642E57785F4D656E75
-      4974656D5374796C65070F77784D6E7549746D5F4E6F726D616C124361727269
-      65642E57785F43617074696F6E060C4465746163682070616E656C1243617272
-      6965642E57785F436865636B65640816436172726965642E57585F4249544D41
-      502E446174610A0C00000007544269746D61700000000016436172726965642E
-      57785F46696C65486973746F72790818436172726965642E5778437573746F6D
-      4D656E754974656D0A5B01000011000000545778437573746F6D4D656E754974
-      656D5450463018547778437573746F6D4D656E754974656D5772617070657200
-      11436172726965642E49735375624D656E750810436172726965642E4556545F
-      4D656E75060D4F6E44657461636850616E656C12436172726965642E57785F45
-      6E61626C65640911436172726965642E57785F48696464656E08114361727269
-      65642E57785F49444E616D65060949445F44455441434812436172726965642E
-      57785F494456616C756503080418436172726965642E57785F4D656E75497465
-      6D5374796C65070F77784D6E7549746D5F4E6F726D616C12436172726965642E
-      57785F43617074696F6E060644657461636812436172726965642E57785F4368
-      65636B65640816436172726965642E57585F4249544D41502E446174610A0C00
-      000007544269746D61700000000016436172726965642E57785F46696C654869
-      73746F72790800000000}
+      6172726965642E57785F43617074696F6E060644657461636812436172726965
+      642E57785F436865636B65640816436172726965642E57585F4249544D41502E
+      446174610A0C00000007544269746D61700000000016436172726965642E5778
+      5F46696C65486973746F727908000011000000545778437573746F6D4D656E75
+      4974656D5450463018547778437573746F6D4D656E754974656D577261707065
+      720011436172726965642E49735375624D656E750810436172726965642E4556
+      545F4D656E7506174F6E41747461636842696E61727950726573656E74657212
+      436172726965642E57785F456E61626C65640911436172726965642E57785F48
+      696464656E0811436172726965642E57785F49444E616D65061849445F415454
+      41434842494E41525950524553454E54455212436172726965642E57785F4944
+      56616C7565030A0418436172726965642E57785F4D656E754974656D5374796C
+      65070F77784D6E7549746D5F4E6F726D616C12436172726965642E57785F4361
+      7074696F6E06174174746163682042696E6172792050726573656E7465721243
+      6172726965642E57785F436865636B65640816436172726965642E57585F4249
+      544D41502E446174610A0C00000007544269746D617000000000164361727269
+      65642E57785F46696C65486973746F72790800000000}
     Wx_HasHistory = False
   end
+  object browserTreePopupMenu: TWxPopupMenu
+    Left = 324
+    Top = 202
+    Width = 28
+    Height = 27
+    TabOrder = 2
+    Glyph.Data = {
+      36090000424D3609000000000000360000002800000018000000180000000100
+      2000000000000009000000000000000000000000000000000000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000000000000000
+      0000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000000000FFFFFF00FFFF
+      FF00000000000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000000000000808000008080000080800000000000FFFFFF00FFFF
+      FF00000000000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      80000080800000000000000000000080800000000000FFFFFF00FFFFFF000000
+      0000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      80000080800000000000FFFFFF000000000000000000FFFFFF00FFFFFF000000
+      0000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      80000080800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      80000080800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      80000080800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      80000080800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF0000000000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000FFFFFF008000000080000000800000008000
+      00008000000000000000FFFFFF00FFFFFF000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000800000008000000080000000800000008000
+      00008000000000000000FFFFFF00000000000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      800000808000008080008080800080000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000800000000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000800000008000000080000000800000008000
+      0000800000008000000080000000800000000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000FFFFFF008000000080000000800000008000
+      000080000000FFFFFF00FFFFFF00FFFFFF000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000FFFFFF008000000080000000800000008000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000FFFFFF008000000080000000800000008000
+      000080000000FFFFFF00FFFFFF00FFFFFF000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800080808000808080008080800080808000808080008080
+      8000808080008080800080808000808080008080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000008080000080
+      8000008080000080800000808000008080000080800000808000}
+    Wx_Class = 'wxMenu'
+    Wx_MenuItems.IsSubMenu = False
+    Wx_MenuItems.Wx_Enabled = True
+    Wx_MenuItems.Wx_Hidden = False
+    Wx_MenuItems.Wx_IDValue = 0
+    Wx_MenuItems.Wx_MenuItemStyle = wxMnuItm_Normal
+    Wx_MenuItems.Wx_Checked = False
+    Wx_MenuItems.Wx_FileHistory = False
+    Wx_MenuItems.WxCustomMenuItem = {
+      11000000545778437573746F6D4D656E754974656D5450463018547778437573
+      746F6D4D656E754974656D577261707065720011436172726965642E49735375
+      624D656E750810436172726965642E4556545F4D656E75060F4F6E506F707570
+      416374697661746512436172726965642E57785F456E61626C65640911436172
+      726965642E57785F48696464656E0811436172726965642E57785F49444E616D
+      65061149445F504F5055505F414354495641544512436172726965642E57785F
+      494456616C7565030B0418436172726965642E57785F4D656E754974656D5374
+      796C65070F77784D6E7549746D5F4E6F726D616C12436172726965642E57785F
+      43617074696F6E0608416374697661746512436172726965642E57785F436865
+      636B65640816436172726965642E57585F4249544D41502E446174610A0C0000
+      0007544269746D61700000000016436172726965642E57785F46696C65486973
+      746F727908000011000000545778437573746F6D4D656E754974656D54504630
+      18547778437573746F6D4D656E754974656D5772617070657200114361727269
+      65642E49735375624D656E750810436172726965642E4556545F4D656E75061C
+      4F6E506F70757041747461636842696E61727950726573656E74657212436172
+      726965642E57785F456E61626C65640911436172726965642E57785F48696464
+      656E0811436172726965642E57785F49444E616D65061E49445F504F5055505F
+      41545441434842494E41525950524553454E54455212436172726965642E5778
+      5F494456616C7565030C0418436172726965642E57785F4D656E754974656D53
+      74796C65070F77784D6E7549746D5F4E6F726D616C12436172726965642E5778
+      5F43617074696F6E06174174746163682042696E6172792050726573656E7465
+      7212436172726965642E57785F436865636B65640816436172726965642E5758
+      5F4249544D41502E446174610A0C00000007544269746D617000000000164361
+      72726965642E57785F46696C65486973746F7279080000110000005457784375
+      73746F6D4D656E754974656D5450463018547778437573746F6D4D656E754974
+      656D577261707065720011436172726965642E49735375624D656E7508104361
+      72726965642E4556545F4D656E7506164F6E506F70757044756D704F626A6563
+      74436861696E12436172726965642E57785F456E61626C656409114361727269
+      65642E57785F48696464656E0811436172726965642E57785F49444E616D6506
+      1849445F504F5055505F44554D504F424A454354434841494E12436172726965
+      642E57785F494456616C7565030D0418436172726965642E57785F4D656E7549
+      74656D5374796C65070F77784D6E7549746D5F4E6F726D616C12436172726965
+      642E57785F43617074696F6E061144756D70204F626A65637420436861696E12
+      436172726965642E57785F436865636B65640816436172726965642E57585F42
+      49544D41502E446174610A0C00000007544269746D6170000000001643617272
+      6965642E57785F46696C65486973746F7279080000}
+  end
 end

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainFormCommands.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainFormCommands.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainFormCommands.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -7,7 +7,7 @@
 //
 //---------------------------------------------------------------------------
 
-#include "browserapp_stdafx.h"
+#include "browserapp_stdafx.h"  
 
 #include "MainForm.h"
 #include "ExplorationTree.h"
@@ -15,9 +15,13 @@
 
 #include "ObjectRegistry.h"
 #include "FileTypeRegistry.h"
+#include "ObjectChain.h"
 
 #include "PluginUtil.h"
 
+#include "basic/Directories.h"
+#include "basic/DirectoryPresenter.h"
+
 #include "safe_static.h"
 
 
@@ -32,8 +36,6 @@
 #include <wx/filename.h>
 #include <wx/imaglist.h>
 
-#include "ObjectChain.h"
-
 #include "icons.h"
 
 #include "debugmem.h"
@@ -52,8 +54,10 @@
 
 	FileTypeRegistry::get()->registerPlugins();
 
-	wxCommandEvent event;
-	OnTest2(event);
+	InitializeRootDirectory();
+
+	wxCommandEvent dummy_event;
+	OnTest2(dummy_event);
 }
 
 void MainForm::CleanupObjects() {
@@ -272,6 +276,133 @@
 	ExplorationTree::get()->detachPanel();
 }
 
+/*
+* OnAttachBinaryPresenter
+*/
+void MainForm::OnAttachBinaryPresenter(wxCommandEvent& event)
+{
+	ExplorationTree::get()->attachBinaryPresenter();
+}
+
+
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
+// Popup menu for ExplorationTree
 
+/*
+* OnPopupActivate
+*/
+void MainForm::OnPopupActivate(wxCommandEvent& event)
+{
+	OnActivateNode(event);
+}
+
+/*
+* OnPopupAttachBinaryPresenter
+*/
+void MainForm::OnPopupAttachBinaryPresenter(wxCommandEvent& event)
+{
+	OnAttachBinaryPresenter(event);
+}
+
+/*
+* OnPopupDumpObjectChain
+*/
+void MainForm::OnPopupDumpObjectChain(wxCommandEvent& event)
+{
+	OnDumpCurrentObjectChain(event);
+}
+
+/*
+* browserTreeItemMenu
+*/
+void MainForm::browserTreeItemMenu(wxTreeEvent& event)
+{
+	wxTreeItemId item = event.GetItem();
+	browserTree->SelectItem(item);
+	PopupMenu(browserTreePopupMenu); //let wxWidgets choose the location
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+* OnOpen
+*/
+void MainForm::OnOpen(wxCommandEvent& event)
+{
+	wxString defaultFileName = wxT("");
+	wxFileDialog *openDlg = new wxFileDialog(this, wxT("Please select input files."),
+		defaultFileName, wxT(""),
+		wxT("All Files|*|")
+		wxT("Main Resource Files|*.001;*.la1;*.la2;*.lab;*.lfl;*.lec;*.sm1|")
+		wxT("Directory Files|*.000;*.la0;*.lfl;*.sm0"),
+		wxOPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST);
+
+	int res = openDlg->ShowModal();
+	if (res != wxID_OK) {
+		openDlg->Destroy();
+		return;
+	}
+
+	wxArrayString fileNames;
+	openDlg->GetPaths(fileNames);
+	openDlg->Destroy();
+
+	wxTreeItemId rootItem = ExplorationTree::get()->getRoot();
+	VirtualNode* node = ExplorationTree::get()->getNode(rootItem);
+	RootDirectory* rootDir = dynamic_cast<RootDirectory*>(node);
+	wxASSERT(rootDir);
+
+	for (int i = 0; i < fileNames.size(); ++i) {
+		wxString fileName = fileNames[i];
+		wxFileName file = wxFileName(fileName);
+
+		if (file.IsOk() && file.FileExists() && file.IsFileReadable()) {
+			rootDir->addFile(file.GetFullName(), fileName);
+			ExplorationTree::get()->realizeNode(rootItem, true);
+		} else {
+			wxMessageBox(wxString(wxT("Failed opening file: ")) + fileName,
+				wxT("Open Failed"), wxOK | wxICON_ERROR, this);
+		}
+	}
+}
+
+/*
+* OnOpenDir
+*/
+void MainForm::OnOpenDir(wxCommandEvent& event)
+{
+	wxString dirName = wxT("");
+	wxDirDialog *openDlg = new wxDirDialog(this, wxT("Please select an input directory."),
+		dirName, wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST);
+
+	int res = openDlg->ShowModal();
+	if (res != wxID_OK) {
+		openDlg->Destroy();
+		return;
+	}
+
+	dirName = openDlg->GetPath();
+	openDlg->Destroy();
+
+	wxFileName dir;
+	dir.AssignDir(dirName);
+	wxString lastDir = dir.GetDirCount() > 0 ? dir.GetDirs().Last() : wxString(wxT("<no dir>"));
+
+	wxTreeItemId rootItem = ExplorationTree::get()->getRoot();
+	VirtualNode* node = ExplorationTree::get()->getNode(rootItem);
+	RootDirectory* rootDir = dynamic_cast<RootDirectory*>(node);
+	wxASSERT(rootDir);
+
+	if (dir.IsOk() && dir.DirExists() && dir.IsDirReadable()) {
+		rootDir->addSubDir(lastDir, dirName);
+		ExplorationTree::get()->realizeNode(rootItem, true);
+	} else {
+		wxMessageBox(wxString(wxT("Failed opening directory: ")) + dirName,
+			wxT("Open Failed"), wxOK | wxICON_ERROR, this);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Makefile.am
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Makefile.am	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Makefile.am	2007-07-18 11:40:15 UTC (rev 28135)
@@ -17,7 +17,6 @@
 	\
 	$(builddir)/../browser/CoreFileTypes.o \
 	$(builddir)/../browser/CoreInterfaces.o \
-	$(builddir)/../browser/Directories.o \
 	$(builddir)/../browser/ExplorationTree.o \
 	$(builddir)/../browser/FileTypeRecognizer.o \
 	$(builddir)/../browser/FileTypeRegistry.o \
@@ -34,7 +33,9 @@
 	\
 	$(builddir)/../plugins/basic/AuxInterfaces.o \
 	$(builddir)/../plugins/basic/BasicParsers.o \
-	$(builddir)/../plugins/basic/BitmapPanel.o \
+	$(builddir)/../plugins/basic/BinaryPresenter.o \
+	$(builddir)/../plugins/basic/CHexEditCtrl.o \
+	$(builddir)/../plugins/basic/Directories.o \
 	$(builddir)/../plugins/basic/ImageBox.o \
 	$(builddir)/../plugins/basic/ImageProc.o \
 	$(builddir)/../plugins/basic/DirectoryPresenter.o \
@@ -78,8 +79,8 @@
 	MainForm.cpp \
 	MainForm.h \
 	MainFormCommands.cpp \
-	Test1.cpp \
-	Test2.cpp \
+	Tests.cpp \
+	DefaultPlugin.cpp \
 	browserapp_stdafx.cpp \
 	browserapp_stdafx.h \
 	guicon.cpp \

Deleted: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test1.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test1.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test1.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -1,151 +0,0 @@
-//---------------------------------------------------------------------------
-//
-// Name:        MainForm.cpp
-// Author:      Zbyl
-// Created:     2007-07-01 11:17:49
-// Description: MainForm class implementation
-//
-//---------------------------------------------------------------------------
-
-#include "browserapp_stdafx.h"
-
-#include "MainForm.h"
-
-#include <wx/filename.h>
-#include <wx/stdpaths.h>
-
-#include <iostream>
-#include <fstream>
-
-#include "plugin.h"
-#include "ObjectRegistry.h"
-#include "FileTypeRegistry.h"
-#include "ObjectChain.h"
-
-#include "PluginUtil.h"
-
-#include "ExplorationTree.h"
-#include "VirtualNode.h"
-
-#include "Directories.h"
-//#include "DirectoryPresenter.h"
-//#include "BasicParsers.h"
-//#include "ImagePresenter.h"
-//#include "FileInfoPresenter.h"
-#include "PanelProvider.h"
-#include "FileTypeRecognizer.h"
-//#include "TextPresenter.h"
-
-#include "debugmem.h"
-
-using namespace Browser;
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-#define EMPTY_TOKEN
-PLUGIN_DESC_EX(Test1Plugin, wxT("MyPlugins"), 1, EMPTY_TOKEN)
-	//PLUGGED_OBJECT(RootDirectory)
-	//PLUGGED_OBJECT(DirectoryPresenter)
-	//PLUGGED_OBJECT(BMPParser)
-	//PLUGGED_OBJECT(ImagePresenter)
-	//PLUGGED_OBJECT(TextPresenter)
-	//PLUGGED_OBJECT(FileInfoPresenter)
-	PLUGGED_OBJECT(PanelProvider)
-
-	PLUGGED_OBJECT(BinaryFileTypeRecognizer)
-	PLUGGED_OBJECT(BinaryFileTypeParserResolver)
-	PLUGGED_OBJECT(BMPFileTypeRecognizer)
-	PLUGGED_OBJECT(BMPFileTypeParserResolver)
-PLUGIN_END
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-void MainForm::OnTest0(wxCommandEvent& event) {
-
-	OnTest1Cleanup(event);
-
-	infoout << wxT("Registering Test1 Plugin.") << std::endl;
-	ObjectRegistry::get()->registerPlugin( &getTest1Plugin, false );
-	FileTypeRegistry::get()->registerPlugins();
-
-	wxTreeItemId rootItem = ExplorationTree::get()->addRoot(wxT("RootDirectory"));
-
-	RCPtr<RootDirectory> rootDir( new RootDirectory(rootItem) );
-
-	ObjectChain* rootChain = ExplorationTree::get()->getRootObjectChain();
-	VirtualNodeItemData* itemData = new VirtualNodeItemData(rootDir.get(), rootChain);
-	ExplorationTree::get()->setItemData(rootItem, itemData);
-
-	rootChain->addObject(rootDir);
-
-	wxString dataDir = PluginUtil::getResourcePath(wxT("data"));
-	wxFileName dataFN(dataDir, wxEmptyString);
-
-	wxFileName doll(dataDir, wxT("lalka.bmp"));
-	wxFileName dog(dataDir, wxT("pies.bmp"));
-	wxFileName foxes(dataDir, wxT("lisy.bmp"));
-
-	if (doll.IsOk() && doll.FileExists() && doll.IsFileReadable())
-		rootDir->addFile(wxT("Doll"), toString(doll.GetFullPath()));
-
-	if (dog.IsOk() && dog.FileExists() && dog.IsFileReadable())
-		rootDir->addFile(wxT("Dog"), toString(dog.GetFullPath()));
-
-	if (foxes.IsOk() && foxes.FileExists() && foxes.IsFileReadable())
-		rootDir->addFile(wxT("Foxes"), toString(foxes.GetFullPath()));
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-void MainForm::OnTest1(wxCommandEvent& event) {
-
-	OnTest1Cleanup(event);
-	
-	infoout << wxT("Registering Test1 Plugin.") << std::endl;
-	ObjectRegistry::get()->registerPlugin( &getTest1Plugin, false );
-	FileTypeRegistry::get()->registerPlugins();
-	
-	wxTreeItemId rootItem = ExplorationTree::get()->addRoot(wxT("RootDirectory"));
-
-	RCPtr<RootDirectory> rootDir( new RootDirectory(rootItem) );
-
-	ObjectChain* rootChain = ExplorationTree::get()->getRootObjectChain();
-	VirtualNodeItemData* itemData = new VirtualNodeItemData(rootDir.get(), rootChain);
-	ExplorationTree::get()->setItemData(rootItem, itemData);
-
-	rootChain->addObject(rootDir);
-
-	wxString dataDir = PluginUtil::getResourcePath(wxT("data"));
-	wxFileName dataFN(dataDir, wxEmptyString);
-
-	wxFileName doll(dataDir, wxT("lalka.bmp"));
-	wxFileName dog(dataDir, wxT("pies.bmp"));
-	wxFileName foxes(dataDir, wxT("lisy.bmp"));
-
-	if (dataFN.IsOk() && dataFN.DirExists() && dataFN.IsDirReadable())
-		rootDir->addSubDir(wxT("data"), dataDir);
-
-	if (doll.IsOk() && doll.FileExists() && doll.IsFileReadable())
-		rootDir->addFile(wxT("Doll"), toString(doll.GetFullPath()));
-
-	if (dog.IsOk() && dog.FileExists() && dog.IsFileReadable())
-		rootDir->addFile(wxT("Dog"), toString(dog.GetFullPath()));
-
-	if (foxes.IsOk() && foxes.FileExists() && foxes.IsFileReadable())
-		rootDir->addFile(wxT("Foxes"), toString(foxes.GetFullPath()));
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-void MainForm::OnTest1Cleanup(wxCommandEvent& event) {
-	infoout << wxT("Test1 Cleanup.") << std::endl;
-
-	ExplorationTree::get()->cleanup();
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////

Deleted: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test2.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test2.cpp	2007-07-18 01:16:03 UTC (rev 28134)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test2.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -1,212 +0,0 @@
-//---------------------------------------------------------------------------
-//
-// Name:        MainForm.cpp
-// Author:      Zbyl
-// Created:     2007-07-01 11:17:49
-// Description: MainForm class implementation
-//
-//---------------------------------------------------------------------------
-
-#include "browserapp_stdafx.h"
-
-#include "MainForm.h"
-
-#include <wx/filename.h>
-
-#include <iostream>
-#include <fstream>
-
-#include "plugin.h"
-#include "ObjectRegistry.h"
-#include "FileTypeRegistry.h"
-
-#include "PluginUtil.h"
-
-#include "ObjectChain.h"
-
-#include "ExplorationTree.h"
-#include "VirtualNode.h"
-
-#include "Directories.h"
-#include "FileTypeRecognizer.h"
-#include "PanelProvider.h"
-
-#include "basic/DirectoryPresenter.h"
-#include "basic/BasicParsers.h"
-#include "basic/ImagePresenter.h"
-#include "basic/FileInfoPresenter.h"
-#include "basic/TextPresenter.h"
-#include "basic/HtmlPresenter.h"
-#include "basic/IconPresenter.h"
-
-#include "scumm/ScummRecognizer.h"
-#include "scumm/ScummParser.h"
-#include "scumm/ScummBlockPresenter.h"
-#include "scumm/ScummCommonPresenters.h"
-#include "scumm/ScummSpecificPresenters.h"
-#include "scumm/ScummSpecificPresenters2.h"
-#include "scumm/BlockyBlockPresenter.h"
-
-#include "debugmem.h"
-
-using namespace Browser;
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-#define EMPTY_TOKEN
-PLUGIN_DESC_EX(Test2Plugin, wxT("MyPlugins"), 1, EMPTY_TOKEN)
-	//PLUGGED_OBJECT(RootDirectory)
-	PLUGGED_OBJECT(PanelProvider)
-
-	PLUGGED_OBJECT(DirectoryPresenter)
-	PLUGGED_OBJECT(ImagePresenter)
-	PLUGGED_OBJECT(TextPresenter)
-	PLUGGED_OBJECT(HtmlPresenter)
-	PLUGGED_OBJECT(FileInfoPresenter)
-	//PLUGGED_OBJECT(IconPresenter)
-
-	PLUGGED_OBJECT(TextParser)
-	PLUGGED_OBJECT(BinaryParser)
-	PLUGGED_OBJECT(BMPParser)
-
-	PLUGGED_OBJECT(BinaryFileTypeRecognizer)
-	PLUGGED_OBJECT(BinaryFileTypeParserResolver)
-	PLUGGED_OBJECT(BMPFileTypeRecognizer)
-	PLUGGED_OBJECT(BMPFileTypeParserResolver)
-	PLUGGED_OBJECT(TextFileTypeRecognizer)
-	PLUGGED_OBJECT(TextFileTypeParserResolver)
-
-	PLUGGED_OBJECT(ScummFileTypeRecognizer)
-	PLUGGED_OBJECT(ScummFileTypeParserResolver)
-
-	PLUGGED_OBJECT(ScummParser)
-	PLUGGED_OBJECT(ScummBlockPresenter)
-	PLUGGED_OBJECT(ScummBlockInfoPresenter)
-	PLUGGED_OBJECT(BlockyBlockPresenter)
-
-	PLUGGED_OBJECT(ScummLOFFBlockPresenter)	
-	PLUGGED_OBJECT(ScummOFFSBlockPresenter)	
-	PLUGGED_OBJECT(ScummRMHDBlockPresenter)	
-	PLUGGED_OBJECT(ScummTRNSBlockPresenter)	
-	PLUGGED_OBJECT(ScummPALBlockPresenter)	
-	PLUGGED_OBJECT(ScummIMGBlockPresenter)	
-
-	PLUGGED_OBJECT(ScummScriptBlockPresenter)	
-
-	PLUGGED_OBJECT(ScummRNAMBlockPresenter)	
-	PLUGGED_OBJECT(ScummMAXSBlockPresenter)	
-	PLUGGED_OBJECT(ScummDOBJBlockPresenter)	
-	PLUGGED_OBJECT(ScummANAMBlockPresenter)	
-	PLUGGED_OBJECT(ScummDIRBlockPresenter)	
-
-PLUGIN_END
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-//HACK: manual loading of the Scumm plugin
-
-#ifdef _MSC_VER
-	#define DLL_IMPORT __declspec(dllimport)
-#else
-	#define DLL_IMPORT
-#endif
-
-//extern "C" {
-//DLL_IMPORT const Plugin& getPlugin();
-//}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-void MainForm::OnTest2(wxCommandEvent& event) {
-
-	OnTest1Cleanup(event);
-	
-	infoout << wxT("Registering Test2 Plugin.") << std::endl;
-	ObjectRegistry::get()->registerPlugin( &getTest2Plugin, false );
-	//ObjectRegistry::get()->registerPlugin( &getPlugin, false );
-	FileTypeRegistry::get()->registerPlugins();
-	
-	wxTreeItemId rootItem = ExplorationTree::get()->addRoot(wxT("RootDirectory"));
-
-	RCPtr<RootDirectory> rootDir( new RootDirectory(rootItem) );
-
-	ObjectChain* rootChain = ExplorationTree::get()->getRootObjectChain();
-	VirtualNodeItemData* itemData = new VirtualNodeItemData(rootDir.get(), rootChain);
-	ExplorationTree::get()->setItemData(rootItem, itemData);
-
-	rootChain->addObject(rootDir);
-
-	wxString dataDir = PluginUtil::getResourcePath(wxT("data"));
-	wxFileName dataFN(dataDir, wxEmptyString);
-
-	if (dataFN.IsOk() && dataFN.DirExists() && dataFN.IsDirReadable())
-		rootDir->addSubDir(wxT("data"), dataDir);
-	//rootDir->addFile(wxT("Sam&Max"), wxT("C:\\Zbys\\gsoc\\Browser\\vc8\\data\\SAMNMAX.SM1"));
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-/*
-* OnOpen
-*/
-void MainForm::OnOpen(wxCommandEvent& event)
-{
-	//TODO: Make it better
-
-	wxString filepath;
-	wxFileDialog *openDlg = new wxFileDialog(this, wxT("Please select an input file."), filepath, wxT(""),
-		wxT("All Files|*|")
-		wxT("Main Resource Files|*.001;*.la1;*.la2;*.lab;*.lfl;*.lec;*.sm1|")
-		wxT("Directory Files|*.000;*.la0;*.lfl;*.sm0"),
-		wxOPEN);
-
-	int res = openDlg->ShowModal();
-	if (res != wxID_OK) {
-		openDlg->Destroy();
-		return;
-	}
-
-
-	OnTest1Cleanup(event);
-
-
-	wxString fileName = openDlg->GetPath();
-	openDlg->Destroy();
-
-	wxFileName file = wxFileName(fileName);
-
-	filepath = file.GetPath();
-	//_gui->writeConfigValue("DataPath", filepath);
-
-
-
-	infoout << wxT("Registering Test2 Plugin.") << std::endl;
-	ObjectRegistry::get()->registerPlugin( &getTest2Plugin, false );
-	//ObjectRegistry::get()->registerPlugin( &getPlugin, false );
-	FileTypeRegistry::get()->registerPlugins();
-
-	wxTreeItemId rootItem = ExplorationTree::get()->addRoot(wxT("RootDirectory"));
-
-	RCPtr<RootDirectory> rootDir( new RootDirectory(rootItem) );
-
-	ObjectChain* rootChain = ExplorationTree::get()->getRootObjectChain();
-	VirtualNodeItemData* itemData = new VirtualNodeItemData(rootDir.get(), rootChain);
-	ExplorationTree::get()->setItemData(rootItem, itemData);
-
-	rootChain->addObject(rootDir);
-
-
-	//wxFileName doll(wxT("data"), wxT("lalka.bmp"));
-	//if (doll.IsOk() && doll.FileExists() && doll.IsFileReadable())
-	//	rootDir->addFile(wxT("Doll"), toString(doll.GetFullPath()));
-	//rootDir->addSubDir(wxT("data"), wxT("data"));
-
-	rootDir->addFile(fileName, fileName);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////

Copied: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Tests.cpp (from rev 28115, scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Test1.cpp)
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Tests.cpp	                        (rev 0)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/Tests.cpp	2007-07-18 11:40:15 UTC (rev 28135)
@@ -0,0 +1,227 @@
+//---------------------------------------------------------------------------
+//
+// Name:        MainForm.cpp
+// Author:      Zbyl
+// Created:     2007-07-01 11:17:49
+// Description: MainForm class implementation
+//
+//---------------------------------------------------------------------------
+
+#include "browserapp_stdafx.h"
+
+#include "MainForm.h"
+
+#include <wx/filename.h>
+#include <wx/stdpaths.h>
+
+#include <iostream>
+#include <fstream>
+
+#include "plugin.h"
+#include "ObjectRegistry.h"
+#include "FileTypeRegistry.h"
+#include "ObjectChain.h"
+
+#include "PluginUtil.h"
+
+#include "ExplorationTree.h"
+#include "VirtualNode.h"
+
+#include "basic/Directories.h"
+//#include "DirectoryPresenter.h"
+//#include "BasicParsers.h"
+//#include "ImagePresenter.h"
+//#include "FileInfoPresenter.h"
+#include "PanelProvider.h"
+#include "FileTypeRecognizer.h"
+//#include "TextPresenter.h"
+
+#include "debugmem.h"
+
+using namespace Browser;
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+/*
+#define EMPTY_TOKEN
+PLUGIN_DESC_EX(Test1Plugin, wxT("MyPlugins"), 1, EMPTY_TOKEN)
+	//PLUGGED_OBJECT(RootDirectory)
+	//PLUGGED_OBJECT(DirectoryPresenter)
+	//PLUGGED_OBJECT(BMPParser)
+	//PLUGGED_OBJECT(ImagePresenter)
+	//PLUGGED_OBJECT(TextPresenter)
+	//PLUGGED_OBJECT(FileInfoPresenter)
+	PLUGGED_OBJECT(PanelProvider)
+
+	PLUGGED_OBJECT(BinaryFileTypeRecognizer)
+	PLUGGED_OBJECT(BinaryFileTypeParserResolver)
+	PLUGGED_OBJECT(BMPFileTypeRecognizer)
+	PLUGGED_OBJECT(BMPFileTypeParserResolver)
+PLUGIN_END
+*/
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+void MainForm::OnTest0(wxCommandEvent& event) {
+
+	/*OnTest1Cleanup(event); 
+
+	infoout << wxT("Registering Test1 Plugin.") << std::endl;
+	ObjectRegistry::get()->registerPlugin( &getTest1Plugin, false );
+	FileTypeRegistry::get()->registerPlugins();
+
+	wxTreeItemId rootItem = ExplorationTree::get()->addRoot(wxT("RootDirectory"));
+
+	RCPtr<RootDirectory> rootDir( new RootDirectory(rootItem) );
+
+	ObjectChain* rootChain = ExplorationTree::get()->getRootObjectChain();
+	VirtualNodeItemData* itemData = new VirtualNodeItemData(rootDir.get(), rootChain);
+	ExplorationTree::get()->setItemData(rootItem, itemData);
+
+	rootChain->addObject(rootDir);
+
+	wxString dataDir = PluginUtil::getResourcePath(wxT("data"));
+	wxFileName dataFN(dataDir, wxEmptyString);
+
+	wxFileName doll(dataDir, wxT("lalka.bmp"));
+	wxFileName dog(dataDir, wxT("pies.bmp"));
+	wxFileName foxes(dataDir, wxT("lisy.bmp"));
+
+	if (doll.IsOk() && doll.FileExists() && doll.IsFileReadable())
+		rootDir->addFile(wxT("Doll"), toString(doll.GetFullPath()));
+
+	if (dog.IsOk() && dog.FileExists() && dog.IsFileReadable())
+		rootDir->addFile(wxT("Dog"), toString(dog.GetFullPath()));
+
+	if (foxes.IsOk() && foxes.FileExists() && foxes.IsFileReadable())
+		rootDir->addFile(wxT("Foxes"), toString(foxes.GetFullPath()));*/
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+void MainForm::OnTest1(wxCommandEvent& event) {
+
+	/*OnTest1Cleanup(event);
+	
+	infoout << wxT("Registering Test1 Plugin.") << std::endl;
+	ObjectRegistry::get()->registerPlugin( &getTest1Plugin, false );
+	FileTypeRegistry::get()->registerPlugins();
+	
+	wxTreeItemId rootItem = ExplorationTree::get()->addRoot(wxT("RootDirectory"));
+
+	RCPtr<RootDirectory> rootDir( new RootDirectory(rootItem) );
+
+	ObjectChain* rootChain = ExplorationTree::get()->getRootObjectChain();
+	VirtualNodeItemData* itemData = new VirtualNodeItemData(rootDir.get(), rootChain);
+	ExplorationTree::get()->setItemData(rootItem, itemData);
+
+	rootChain->addObject(rootDir);
+
+	wxString dataDir = PluginUtil::getResourcePath(wxT("data"));
+	wxFileName dataFN(dataDir, wxEmptyString);
+
+	wxFileName doll(dataDir, wxT("lalka.bmp"));
+	wxFileName dog(dataDir, wxT("pies.bmp"));
+	wxFileName foxes(dataDir, wxT("lisy.bmp"));
+
+	if (dataFN.IsOk() && dataFN.DirExists() && dataFN.IsDirReadable())
+		rootDir->addSubDir(wxT("data"), dataDir);
+
+	if (doll.IsOk() && doll.FileExists() && doll.IsFileReadable())
+		rootDir->addFile(wxT("Doll"), toString(doll.GetFullPath()));
+
+	if (dog.IsOk() && dog.FileExists() && dog.IsFileReadable())
+		rootDir->addFile(wxT("Dog"), toString(dog.GetFullPath()));
+
+	if (foxes.IsOk() && foxes.FileExists() && foxes.IsFileReadable())
+		rootDir->addFile(wxT("Foxes"), toString(foxes.GetFullPath()));*/
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+void MainForm::OnTest2(wxCommandEvent& event) {
+
+	wxTreeItemId rootItem = ExplorationTree::get()->getRoot();
+	VirtualNode* node = ExplorationTree::get()->getNode(rootItem);
+	RootDirectory* rootDir = dynamic_cast<RootDirectory*>(node);
+	wxASSERT(rootDir);
+
+	wxString dataDir = PluginUtil::getResourcePath(wxT("data"));
+	wxFileName dataFN;
+	dataFN.AssignDir(dataDir);
+
+	if (dataFN.IsOk() && dataFN.DirExists() && dataFN.IsDirReadable()) {
+		rootDir->addSubDir(wxT("data"), dataDir);
+		ExplorationTree::get()->realizeNode(rootItem, true);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+* OnOpen
+*/
+/*void MainForm::OnOpen(wxCommandEvent& event)
+{
+	//TODO: Make it better
+
+	wxString filepath;

@@ Diff output truncated at 100000 characters. @@

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