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

zbychs at users.sourceforge.net zbychs at users.sourceforge.net
Thu Jul 19 03:12:27 CEST 2007


Revision: 28142
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28142&view=rev
Author:   zbychs
Date:     2007-07-18 18:12:27 -0700 (Wed, 18 Jul 2007)

Log Message:
-----------
BinaryPresenter for all.

Modified Paths:
--------------
    scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.h
    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/plugins/basic/BasicParsers.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/wxdev/Browser.layout

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.cpp	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/ExplorationTree.cpp	2007-07-19 01:12:27 UTC (rev 28142)
@@ -203,6 +203,16 @@
 		ObjectChain* kidchain = data->getObjectChain();
 		ASSERT(kidchain);
 
+		ASSERT_STATICS_ALLOWED();
+		static BGUID binaryParserGUID(wxT("CoreObjects"), wxT("BinaryParser"), 1);
+
+		//BinaryParser for all - as requested by Max (it does not have sense for stuff that doesn't expose IFile interface though)
+		if (!kidchain->isContained(binaryParserGUID)) {
+			RCPtr<BObject> obj = ObjectRegistry::get()->getObject(binaryParserGUID);
+			if (obj.get() != NULL)
+				kidchain->addObject(obj);
+		}
+
 		if (updateRealize || !data->getCompleted()) {
 			kidchain->complete();
 			data->setCompleted(true);
@@ -321,7 +331,7 @@
 void ExplorationTree::deleteChildren(const wxTreeItemId& parent) {
 	ASSERT_VALID_TREE_ITEM(parent);
 	//FIXME: does not deactivate panels
-	_explorationTree->DeleteChildren(parent);
+	_explorationTree->DeleteChildren(parent); //CAUTION: after deleting every child updates selection! (on MSW at least)
 }
 
 void ExplorationTree::setItemData(const wxTreeItemId& item, wxTreeItemData* data) {
@@ -542,6 +552,8 @@
 void PanelInfo::activate() {
 	if (_activated)
 		return;
+	if (!_panelProvider->ifDisplay())
+		return;
 
 	_page = new wxPanel(_panelNotebook);
 	_panelNotebook->AddPage(_page, _panelProvider->getPanelTitle());

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.cpp	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.cpp	2007-07-19 01:12:27 UTC (rev 28142)
@@ -52,6 +52,9 @@
 	BObject::doUnrealize(ochain);
 }
 
+bool PanelProvider::ifDisplay() {
+	return _ipanelreciever->ifDisplay();
+}
 coreString PanelProvider::getPanelTitle() {
 	return _ipanelreciever->getPanelTitle();
 }

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.h	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browser/PanelProvider.h	2007-07-19 01:12:27 UTC (rev 28142)
@@ -20,9 +20,12 @@
 
 class BROWSER_API PanelReciever {
 public:
+	virtual bool ifDisplay() {						//false - don't display the panel
+		return true;
+	}
 	virtual coreString getPanelTitle() = 0;
-	virtual void panelActivate(wxPanel* panel) = 0;
-	virtual void panelDeactivate() = 0;
+	virtual void panelActivate(wxPanel* panel) = 0;		//prepare the panel
+	virtual void panelDeactivate() = 0;					//clean up the panel
 	virtual ~PanelReciever() {}
 };
 
@@ -51,6 +54,9 @@
 	//inherit guid - it's a concrete implementation of an abstract interface
 	IPanelRecieverImpl(PanelReciever* that)
 		: _that(that) {}
+	virtual bool ifDisplay() {
+		return _that->ifDisplay();
+	}
 	virtual coreString getPanelTitle() {
 		return _that->getPanelTitle();
 	}
@@ -97,6 +103,7 @@
 	virtual bool doRealize(ObjectChain* ochain);
 	virtual void doUnrealize(ObjectChain* ochain);
 
+	virtual bool ifDisplay();
 	virtual coreString getPanelTitle();
 	virtual void panelActivate(wxPanel* panel);
 	virtual void panelDeactivate();

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp	2007-07-19 01:12:27 UTC (rev 28142)
@@ -33,6 +33,9 @@
 	
 	EVT_CLOSE(MainForm::OnClose)
 	EVT_IDLE(MainForm::MainFormIdle)
+	EVT_MENU(ID_POPUP_ACTIVATE , MainForm::OnPopupActivate)
+	EVT_MENU(ID_POPUP_ATTACHBINARYPRESENTER , MainForm::OnPopupAttachBinaryPresenter)
+	EVT_MENU(ID_POPUP_DUMPOBJECTCHAIN , MainForm::OnPopupDumpObjectChain)
 	EVT_MENU(wxID_OPEN, MainForm::OnOpen)
 	EVT_MENU(ID_OPENDIRECTORY, MainForm::OnOpenDir)
 	EVT_MENU(wxID_EXIT, MainForm::OnExit)
@@ -46,13 +49,11 @@
 	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_SEL_CHANGED(ID_BROWSERTREE,MainForm::browserTreeSelChanged)
 	EVT_TREE_ITEM_MENU(ID_BROWSERTREE,MainForm::browserTreeItemMenu)
 END_EVENT_TABLE()
 ////Event Table End
@@ -106,10 +107,6 @@
 	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(wxID_OPEN, wxT("Open..."), wxT(""), wxITEM_NORMAL);
@@ -142,6 +139,10 @@
 	WxMenuBar1->Append(ID_PRESENTERS_Mnu_Obj, wxT("Presenters"));
 	SetMenuBar(WxMenuBar1);
 
+	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);
+
 	WxSplitterWindow1->SplitVertically(browserTree,mainPanel,185);
 
 	SetTitle(wxT("Game Resource Browser"));
@@ -167,11 +168,3 @@
 	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-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.h	2007-07-19 01:12:27 UTC (rev 28142)
@@ -72,14 +72,15 @@
 		void OnPopupDumpObjectChain(wxCommandEvent& event);
 		void browserTreeItemMenu(wxTreeEvent& event);
 	void OpendirectoryClick(wxCommandEvent& event);
+		void browserTreeSelChanged(wxTreeEvent& event);
 		
 	private:
 		//Do not add custom control declarations between
 		//GUI Control Declaration Start and GUI Control Declaration End.
 		//wxDev-C++ will remove them. Add custom code after the block.
 		////GUI Control Declaration Start
+		wxMenu *browserTreePopupMenu;
 		wxMenuBar *WxMenuBar1;
-		wxMenu *browserTreePopupMenu;
 		wxNotebook *browserNotebook;
 		wxBoxSizer *WxBoxSizer2;
 		wxPanel *mainPanel;
@@ -97,6 +98,10 @@
 		enum
 		{
 			////GUI Enum Control ID Start
+			ID_POPUP_ACTIVATE = 1035,
+			ID_POPUP_ATTACHBINARYPRESENTER = 1036,
+			ID_POPUP_DUMPOBJECTCHAIN = 1037,
+			
 			ID_FILE_MENU = 1004,
 			ID_OPENDIRECTORY = 1038,
 			ID_COMMANDS_MENU = 1025,
@@ -113,10 +118,6 @@
 			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-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform	2007-07-19 01:12:27 UTC (rev 28142)
@@ -83,6 +83,7 @@
         EVT_TREE_ITEM_ACTIVATED = 'browserTreeItemActivated'
         EVT_TREE_ITEM_EXPANDED = 'browserTreeItemExpanded'
         EVT_TREE_ITEM_EXPANDING = 'browserTreeItemExpanding'
+        EVT_TREE_SEL_CHANGED = 'browserTreeSelChanged'
         EVT_TREE_ITEM_MENU = 'browserTreeItemMenu'
         Wx_BGColor = clBlack
         Wx_Class = 'wxTreeCtrl'

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainFormCommands.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainFormCommands.cpp	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainFormCommands.cpp	2007-07-19 01:12:27 UTC (rev 28142)
@@ -183,6 +183,7 @@
  * browserTreeItemActivated
  */
 void MainForm::browserTreeItemActivated(wxTreeEvent& event) {
+	//move to browserTreeSelChanged
 	ExplorationTree::get()->itemActivated(event.GetItem());
 }
 
@@ -201,6 +202,15 @@
 	ExplorationTree::get()->itemExpanded(event.GetItem());
 }
 
+/*
+* browserTreeSelChanged
+*/
+void MainForm::browserTreeSelChanged(wxTreeEvent& event)
+{
+	//if (event.GetItem().IsOk())
+		//ExplorationTree::get()->itemActivated(event.GetItem());
+}
+
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BasicParsers.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BasicParsers.cpp	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BasicParsers.cpp	2007-07-19 01:12:27 UTC (rev 28142)
@@ -84,7 +84,7 @@
 	IFile* ifile = _fileSlot->getInterface();
 	if (!ifile) {
 		errout << wxT("BinaryParser::getBinaryImpl(): could not get IFile interface") << std::endl;
-		return new IBinaryImpl(wxT("ERROR"), NULL, 0, true);
+		return NULL; //new IBinaryImpl(wxT("ERROR"), NULL, 0, true);
 	}
 
 	Common::SeekableReadStream* stream = ifile->getStream();
@@ -92,7 +92,7 @@
 	if (!stream) {
 		_fileSlot->releaseInterface();
 		errout << wxT("BinaryParser::getBinaryImpl(): null stream") << std::endl;
-		return new IBinaryImpl(wxT("ERROR"), NULL, 0, true);
+		return NULL; //new IBinaryImpl(wxT("ERROR"), NULL, 0, true);
 	}
 	
 	uint32 size = stream->size();
@@ -110,7 +110,7 @@
 	if (!res) {
 		delete [] data;
 		errout << wxT("BinaryParser::getBinaryImpl(): stream ioFailed") << std::endl;
-		return new IBinaryImpl(wxT("ERROR"), NULL, 0, true);
+		return NULL; //new IBinaryImpl(wxT("ERROR"), NULL, 0, true);
 	}
 
 	IBinaryImpl* binaryImpl =

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.cpp	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.cpp	2007-07-19 01:12:27 UTC (rev 28142)
@@ -49,6 +49,16 @@
 }
 
 
+bool BinaryPresenter::ifDisplay() {
+	_idata = _dataSlot->getInterface();
+	if (!_idata) {
+		errout << wxT("BinaryPresenter::ifDisplay(): could not get IBinary interface") << std::endl;
+		return false;
+	}
+
+	return true;
+}
+
 coreString BinaryPresenter::getPanelTitle() {
 	_idata = _dataSlot->getInterface();
 	if (!_idata) {

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.h	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.h	2007-07-19 01:12:27 UTC (rev 28142)
@@ -74,6 +74,7 @@
 	virtual bool doRealize(ObjectChain* ochain);
 	virtual void doUnrealize(ObjectChain* ochain);
 
+	virtual bool ifDisplay();
 	virtual coreString getPanelTitle();
 	virtual void panelActivate(wxPanel* panel);
 	virtual void panelDeactivate();

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp	2007-07-19 01:12:27 UTC (rev 28142)
@@ -162,8 +162,8 @@
 // Painting
 
 void CHexEditCtrl::TextOutWithCheck(wxDC& dc, const wxRect& rcInvalid, int x, int y, const wxString& strText) {
-	wxRect rcText(x, y, x + (int)strText.Length() * m_cellSize.GetWidth(), y + m_cellSize.GetHeight());
-	//if(!rcText.Intersect(rcInvalid).IsEmpty())
+	wxRect rcText(x, y, (int)strText.Length() * m_cellSize.GetWidth(), m_cellSize.GetHeight());
+	if(rcText.Intersects(rcInvalid))
 		dc.DrawText(strText, x, y);
 }
 
@@ -366,7 +366,7 @@
 	//m_nHorzScroll = 0;
 	//RecalcLayout();
 	ChangeEditPos(0,0); //not really needed, I think
-	Refresh(true);
+	Refresh(false);
 
 	//SetModifiedFlag(); - mark that persistent properties changed
 }
@@ -377,7 +377,7 @@
 
 	m_nHorzScroll = 0;
 	RecalcLayout();
-	Refresh(true);
+	Refresh(false);
 
 	//SetModifiedFlag(); - mark that persistent properties changed
 }
@@ -394,7 +394,7 @@
 		m_nHorzScroll = 0;
 		RecalcLayout();
 		ChangeEditPos(0,0);
-		Refresh(true);
+		Refresh(false);
 
 		//SetModifiedFlag(); - mark that persistent properties changed
 	}
@@ -420,7 +420,7 @@
 
 	m_nHorzScroll = 0;
 	RecalcLayout();
-	Refresh(true);
+	Refresh(false);
 
 	//SetModifiedFlag(); - mark that persistent properties changed
 }
@@ -430,7 +430,7 @@
 	m_dwStartAddr = startAddr;
 
 	RecalcLayout();
-	Refresh(true);
+	Refresh(false);
 
 	SendChangedEvent();
 	//SetModifiedFlag(); - mark that persistent properties changed
@@ -449,7 +449,7 @@
 	m_dataModified = false;
 
 	RecalcLayout();
-	Refresh(true);
+	Refresh(false);
 	SendChangedEvent();
 }
 
@@ -473,7 +473,7 @@
 
 	m_nHorzScroll = 0;
 	RecalcLayout();
-	Refresh(true);
+	Refresh(false);
 
 	//SetModifiedFlag(); - mark that persistent properties changed
 }
@@ -492,7 +492,7 @@
 
 	m_nHorzScroll = 0;
 	RecalcLayout();
-	Refresh(true);
+	Refresh(false);
 
 	//SetModifiedFlag(); - mark that persistent properties changed
 }
@@ -520,7 +520,7 @@
 
 	m_nHorzScroll = 0;
 	RecalcLayout();
-	Refresh(true);
+	Refresh(false);
 
 	//SetModifiedFlag(); - mark that persistent properties changed
 }
@@ -713,7 +713,7 @@
 				ClearSelection();
 		}
 		
-		Refresh(true);
+		Refresh(false);
 	}
 	else
 	{
@@ -792,7 +792,7 @@
 					}
 					else
 						DeleteSelection();
-					Refresh(true);
+					Refresh(false);
 					PlaceCaret();
 				}
 				break;
@@ -812,7 +812,7 @@
 					else
 					{
 						DeleteSelection();
-						Refresh(true);
+						Refresh(false);
 						PlaceCaret();
 					}
 				}
@@ -842,7 +842,7 @@
 			if ( !IsSelectionEmpty() )
 			{
 				ClearSelection();
-				Refresh(true);
+				Refresh(false);
 			}
 		}
 	}
@@ -881,14 +881,14 @@
 
 			m_nEditDigit++;
 			if (NormalizeEditPos())		
-				Refresh(true);			// cursor was outside visible area
+				Refresh(false);			// cursor was outside visible area
 			InvalidateEditRect ( m_editPos );
 			if ( m_nEditDigit == m_digitsInData )
 				ChangeEditPos(1, 0, false);
 			else
 			{
 				//				NormalizeEditPos();
-				//				Refresh(true);
+				//				Refresh(false);
 				UpdateScrollBars();
 				PlaceCaret();
 			}
@@ -911,7 +911,7 @@
 #endif
 
 			if (NormalizeEditPos())
-				Refresh(true);			// cursor was outside visible area
+				Refresh(false);			// cursor was outside visible area
 			else
 				InvalidateEditRect ( m_editPos );
 			ChangeEditPos(1, 0, false);
@@ -1087,7 +1087,7 @@
 
 	if ( m_viewPos != nPrevViewPos )
 	{
-		Refresh(true);
+		Refresh(false);
 		SetScrollbar(wxVERTICAL, m_viewPos / m_columns, m_charCountWindow.GetHeight(), m_charCountView.GetHeight());
 		PlaceCaret();
 	}
@@ -1124,7 +1124,7 @@
 
 	if ( nPrevHorzScroll != m_nHorzScroll )
 	{
-		Refresh(true);
+		Refresh(false);
 		SetScrollbar(wxHORIZONTAL, m_nHorzScroll, m_charCountWindow.GetWidth(), m_charCountView.GetWidth());
 		PlaceCaret();
 	}
@@ -1144,7 +1144,7 @@
 		{
 			OnEditCopy(_dummy_command);
 			DeleteSelection();
-			Refresh(true);
+			Refresh(false);
 		}
 	}
 }
@@ -1185,8 +1185,11 @@
 void CHexEditCtrl::OnEditPaste(wxCommandEvent& _event)
 //void CHexEditCtrl::OnEditPaste()
 {
+	return; //FIXME: because of inconsistent interface of wxMBConv across ANSI and UNICODE
+			//builds the code below needs some workaround. But it's not needed now anyway.
+	/*
 	if (m_readOnly) return;
-
+	
 	if (!wxTheClipboard->Open())
 		return;
 
@@ -1256,10 +1259,11 @@
 		memcpy(ptr, data, cbData);
 
 		m_dataModified = true;
-		Refresh(true);
+		Refresh(false);
 	}
 
 	wxTheClipboard->Close();
+	*/
 }
 
 /////////////////////////////////////////////////////////////////////////////
@@ -1322,12 +1326,17 @@
 void CHexEditCtrl::OnUpdateEditCut(wxUpdateUIEvent& _event)
 //void CHexEditCtrl::OnUpdateEditCut(CCmdUI* pCmdUI) 
 {
-	_event.Enable(!IsSelectionEmpty() && ((m_editMode & EDIT_INSERT) || m_allowChangeSize));
+	_event.Enable(!m_readOnly && !IsSelectionEmpty() && ((m_editMode & EDIT_INSERT) || m_allowChangeSize));
 }
 
 void CHexEditCtrl::OnUpdateEditPaste(wxUpdateUIEvent& _event)
 //void CHexEditCtrl::OnUpdateEditPaste(CCmdUI* pCmdUI) 
 {
+	if (m_readOnly) {
+		_event.Enable(false);
+		return;
+	}
+
 	if (!wxTheClipboard->Open())
 		return;
 
@@ -1352,7 +1361,7 @@
 	//COleControl::OnSize(nType, cx, cy);
 
 	RecalcLayout();
-	Refresh(true);
+	Refresh(false);
 }
 
 /////////////////////////////////////////////////////////////////////////////
@@ -1372,7 +1381,7 @@
 	rcInvalid.y = nPos / m_columns * m_cellSize.GetHeight();
 	rcInvalid.width = (m_digitsInData+1)*m_cellSize.GetWidth();
 	rcInvalid.height = m_cellSize.GetHeight();
-	Refresh(true, &rcInvalid);
+	Refresh(false, &rcInvalid);
 
 	//if ( m_bRealShowAscii )
 	{
@@ -1381,8 +1390,8 @@
 		rcInvalid.y = nPos / m_columns * m_cellSize.GetHeight();
 		rcInvalid.width = (m_digitsInData/2)*m_cellSize.GetWidth();
 		rcInvalid.height = m_cellSize.GetHeight();
-		//Refresh(true, &rcInvalid);
-		Refresh(true);
+		Refresh(false, &rcInvalid);
+		//Refresh(false);
 	}
 }
 
@@ -1406,6 +1415,8 @@
 
 	if ( m_data.size()+m_dwStartAddr > 0x10000 )
 		m_digitsInAddress = 8;
+	else
+		m_digitsInAddress = 4;
 
 	int nColumns = m_columns;
 
@@ -1551,7 +1562,7 @@
 		bRepaint = true;
 
 	if ( bRepaint )
-		Refresh(true);
+		Refresh(false);
 	PlaceCaret();
 }
 
@@ -1780,7 +1791,7 @@
 inline void CHexEditCtrl::ClearSelection()
 {
 	m_selStart = m_selEnd = -1;
-	Refresh(true);
+	Refresh(false);
 }
 
 inline bool CHexEditCtrl::IsSelectionEmpty()
@@ -1814,7 +1825,7 @@
 			m_nEditDigit = 0;
 		}
 		if ( nPrevSelStart != m_selStart || nPrevSelEnd != m_selEnd )
-			Refresh(true);
+			Refresh(false);
 	}
 }
 
@@ -1831,7 +1842,7 @@
 			m_editPos = m_selStart;
 			DeleteSelection();
 			InsertData ( m_editPos );
-			Refresh(true);
+			Refresh(false);
 		}
 		else
 		{
@@ -1847,7 +1858,7 @@
 				if ( m_editPos % m_columns != m_columns-1)
 					InvalidateEditRect (m_editPos);
 				else
-					Refresh(true);	// we need to add new line
+					Refresh(false);	// we need to add new line
 			}
 			else
 				return false;
@@ -1856,7 +1867,7 @@
 			// insert 1 number
 		{
 			InsertData ( m_editPos );
-			Refresh(true);
+			Refresh(false);
 		}
 		m_dataModified = true;
 		return true;

Modified: scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout	2007-07-19 00:40:11 UTC (rev 28141)
+++ scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout	2007-07-19 01:12:27 UTC (rev 28142)
@@ -45,8 +45,8 @@
 LeftChar=1
 [Editor_7]
 CursorCol=1
-CursorRow=1
-TopLine=1
+CursorRow=170
+TopLine=140
 LeftChar=1
 Open=1
 Top=0


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