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

zbychs at users.sourceforge.net zbychs at users.sourceforge.net
Sat Jul 21 18:28:32 CEST 2007


Revision: 28156
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28156&view=rev
Author:   zbychs
Date:     2007-07-21 09:28:32 -0700 (Sat, 21 Jul 2007)

Log Message:
-----------
Improved Hex View. Should be quite useful now.

Modified Paths:
--------------
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/BrowserApp.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform
    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/FileInfoPresenter.cpp
    scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImagePresenter.cpp
    scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/BrowserApp.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/BrowserApp.cpp	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/BrowserApp.cpp	2007-07-21 16:28:32 UTC (rev 28156)
@@ -23,7 +23,8 @@
 	/*BrowserDlg* dialog = new BrowserDlg(NULL);
 	SetTopWindow(dialog);
 	dialog->Show(true);*/
-	MainForm* mainForm = new MainForm(NULL);
+	MainForm* mainForm = new MainForm(NULL, 1, wxT("Game Resource Browser"),
+                            wxDefaultPosition, wxSize(800, 600));
 
 
 	SetTopWindow(mainForm);

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.cpp	2007-07-21 16:28:32 UTC (rev 28156)
@@ -62,6 +62,8 @@
 : wxFrame(parent, id, title, position, size, style) {
 	CreateGUIControls();
 	WxSplitterWindow1->SetSashGravity(0.3);
+	WxSplitterWindow1->SetMinimumPaneSize(0);
+	WxSplitterWindow1->SetSashPosition(300);
 
 	InitializeObjects();
 
@@ -143,14 +145,13 @@
 	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);
+	WxSplitterWindow1->SplitVertically(browserTree,mainPanel,300);
 
 	SetTitle(wxT("Game Resource Browser"));
 	SetIcon(wxNullIcon);
 	
 	GetSizer()->Layout();
-	GetSizer()->Fit(this);
-	GetSizer()->SetSizeHints(this);
+	//GetSizer()->Fit(this);
 	Center();
 	
 	////GUI Items Creation End

Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/MainForm.wxform	2007-07-21 16:28:32 UTC (rev 28156)
@@ -23,7 +23,7 @@
   Wx_Class = 'wxFrame'
   Wx_Center = True
   Wx_Hidden = False
-  Wx_SizeToContents = True
+  Wx_SizeToContents = False
   Wx_GeneralStyle = []
   Wx_DialogStyle = [wxCAPTION, wxRESIZE_BORDER, wxSYSTEM_MENU, wxTHICK_FRAME, wxDIALOG_NO_PARENT, wxMINIMIZE_BOX, wxMAXIMIZE_BOX, wxCLOSE_BOX]
   Wx_DesignerType = dtWxFrame
@@ -154,6 +154,133 @@
       end
     end
   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
   object WxMenuBar1: TWxMenuBar
     Left = 288
     Top = 117
@@ -448,131 +575,4 @@
       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/plugins/basic/BinaryPresenter.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.cpp	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.cpp	2007-07-21 16:28:32 UTC (rev 28156)
@@ -10,6 +10,9 @@
 #include <iostream>
 
 #include "CHexEditCtrl.h"
+#include <wx/wupdlock.h>
+#include <wx/splitter.h>
+#include <wx/listctrl.h>
 
 #include "debugmem.h"
 
@@ -83,167 +86,175 @@
 
 	wxBoxSizer *panelsizer = new wxBoxSizer( wxVERTICAL );
 
-	_hexCtrl = new CHexEditCtrl(panel);
-	panelsizer->Add(_hexCtrl, 1, wxALL|wxEXPAND, 0);
+	wxSplitterWindow* splitterWindow = new wxSplitterWindow(panel);
+	panelsizer->Add(splitterWindow, 1, wxEXPAND | wxALL, 0);
 
-	wxBoxSizer *editsizer = new wxBoxSizer( wxHORIZONTAL );
+	_hexCtrl = new CHexEditCtrl(splitterWindow);
+	_listCtrl = new wxListCtrl(splitterWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT);
+	_listCtrl->InsertColumn(0, wxT("Type"), wxLIST_FORMAT_LEFT, 100);
+	_listCtrl->InsertColumn(1, wxT("Value"), wxLIST_FORMAT_LEFT, 500);
 
-	wxStaticText *offsetText = new wxStaticText(panel, wxID_ANY, wxT("Offset: "), wxDefaultPosition, wxDefaultSize, 0);
-	editsizer->Add(offsetText, 0, wxALL, 0);
-	_offsetValue = new wxTextCtrl(panel, wxID_ANY, wxT("0x00000000"), wxDefaultPosition, wxDefaultSize, wxTE_READONLY | wxTE_RIGHT);
-	editsizer->Add(_offsetValue, 0, wxALL, 0);
+	splitterWindow->SplitHorizontally(_hexCtrl, _listCtrl, -150);
 
-	wxStaticText *dataText = new wxStaticText(panel, wxID_ANY, wxT(" Value: "), wxDefaultPosition, wxDefaultSize, 0);
-	editsizer->Add(dataText, 0, wxALL, 0);
-	_dataValue = new wxTextCtrl(panel, wxID_ANY, wxT("0"), wxDefaultPosition, wxDefaultSize, wxTE_READONLY);
-	editsizer->Add(_dataValue, 0, wxALL, 0);
-
 	wxBoxSizer *buttonsizer = new wxBoxSizer( wxHORIZONTAL );
 
+	wxButton *copyButton = new wxButton(panel, wxID_COPY, wxT("Copy"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
+	buttonsizer->Add(copyButton, 0, wxALL, 0);
+
 	wxCheckBox *absoluteCheckBox = new wxCheckBox(panel, wxID_ANY, wxT("absolute"), wxDefaultPosition, wxDefaultSize, 0);
 	buttonsizer->Add(absoluteCheckBox, 0, wxALL, 0);
 
-	wxRadioButton *bytesRadio = new wxRadioButton(panel, wxID_ANY, wxT("bytes"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
-	buttonsizer->Add(bytesRadio, 0, wxALL, 0);
-	wxRadioButton *wordsRadio = new wxRadioButton(panel, wxID_ANY, wxT("words"), wxDefaultPosition, wxDefaultSize, 0);
-	buttonsizer->Add(wordsRadio, 0, wxALL, 0);
-	wxRadioButton *dwordsRadio = new wxRadioButton(panel, wxID_ANY, wxT("dwords"), wxDefaultPosition, wxDefaultSize, 0);
-	buttonsizer->Add(dwordsRadio, 0, wxALL, 0);
-
-	bytesRadio->SetValue(true);
-
-	wxSlider *columnsSlider = new wxSlider(panel, wxID_ANY, 1, 1, 3, wxDefaultPosition, wxDefaultSize, wxSL_AUTOTICKS);
-	buttonsizer->Add(columnsSlider,	0, wxALL, 0);
-
-	panelsizer->Add(editsizer, 0, wxALL, 0);
 	panelsizer->Add(buttonsizer, 0, wxALL, 0);
 	panel->SetAutoLayout(true);
 	panel->SetSizer(panelsizer);	
 
+	panelsizer->Layout();
+	buttonsizer->Layout();
 	panel->Layout();
 
+	splitterWindow->SetSashPosition(-150);
+
 	_hexCtrl->Connect(_hexCtrl->GetId(), wxEVT_HEXEDIT_CHANGED,
 		wxCommandEventHandler(DumpBinaryEvtHandler::hexeditChanged), NULL, &_evtHelper);
 
 	absoluteCheckBox->Connect(absoluteCheckBox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED,
 		wxCommandEventHandler(DumpBinaryEvtHandler::absoluteCheckBoxClick), NULL, &_evtHelper);
+	copyButton->Connect(copyButton->GetId(), wxEVT_COMMAND_BUTTON_CLICKED,
+		wxCommandEventHandler(DumpBinaryEvtHandler::copyButtonClick), NULL, &_evtHelper);
 
-	bytesRadio->Connect(bytesRadio->GetId(), wxEVT_COMMAND_RADIOBUTTON_SELECTED,
-		wxCommandEventHandler(DumpBinaryEvtHandler::bytesRadioClick), NULL, &_evtHelper);
-	wordsRadio->Connect(wordsRadio->GetId(), wxEVT_COMMAND_RADIOBUTTON_SELECTED,
-		wxCommandEventHandler(DumpBinaryEvtHandler::wordsRadioClick), NULL, &_evtHelper);
-	dwordsRadio->Connect(dwordsRadio->GetId(), wxEVT_COMMAND_RADIOBUTTON_SELECTED,
-		wxCommandEventHandler(DumpBinaryEvtHandler::dwordsRadioClick), NULL, &_evtHelper);
-
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_TOP,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_BOTTOM,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_LINEUP,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_LINEDOWN,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_PAGEUP,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_PAGEDOWN,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_THUMBTRACK,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_THUMBRELEASE,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-	columnsSlider->Connect(columnsSlider->GetId(), wxEVT_SCROLL_CHANGED,
-		wxScrollEventHandler(DumpBinaryEvtHandler::columnsSliderMove), NULL, &_evtHelper);
-
 	_hexCtrl->SetData(data, dataSize);
 	_hexCtrl->SetReadOnly(true);
+
+	//panel->Layout();
+	//panel->Refresh(false);
 }
 
 void BinaryPresenter::panelDeactivate() {
 	//infoout << wxT("BinaryPresenter::panelDeactivate()") << std::endl;
 }
 
+void DumpBinaryEvtHandler::copyButtonClick(wxCommandEvent& event) {
+	_that->_hexCtrl->OnEditCopy(event);
+}
+
 void DumpBinaryEvtHandler::hexeditChanged(wxCommandEvent& event) {
-	long offs = event.GetExtraLong();
-	int val = event.GetInt();
+	CHexEditCtrl* hex = _that->_hexCtrl;
 
-	wxString soffs(wxT("0x"));
-	soffs << toHex((uint32)offs, offs > 0xFFFF ? 8 : 4);
-	_that->_offsetValue->SetValue(soffs);
+	//wxUint32 curOffs = hex->GetOffset();
+	wxUint32 selOffs = hex->GetSelectionOffset();
 
-	wxString sval;
-	sval << val;
-	_that->_dataValue->SetValue(sval);
-}
+	std::vector<wxByte> strbuf = hex->GetDataRange(selOffs, 500, true, true);
+	std::vector<wxByte> tbyte = hex->GetDataRange(selOffs, 8, true, false);
+	wxASSERT(tbyte.size() >= 8);
 
-void DumpBinaryEvtHandler::absoluteCheckBoxClick(wxCommandEvent& event) {
-	if (event.IsChecked()) {
-		_that->_hexCtrl->SetStartAddr(_that->_idata->getStartOffset());
-	} else {
-		_that->_hexCtrl->SetStartAddr(0);
-	}
-}
+	uint32 ui32le = READ_LE_UINT32(&tbyte[0]);
+	uint16 ui16le = READ_LE_UINT16(&tbyte[0]);
+	uint32 ui32be = READ_BE_UINT32(&tbyte[0]);
+	uint16 ui16be = READ_BE_UINT16(&tbyte[0]);
+	uint8 ui8 = (uint8)ui16le;
 
-void DumpBinaryEvtHandler::bytesRadioClick(wxCommandEvent& event) {
-	int nColumns = _that->_hexCtrl->GetColumns();
-	int nDigits = _that->_hexCtrl->GetDigitsInData();
-	int bytes = nColumns * nDigits/2;
-	_that->_hexCtrl->SetColumns(bytes);
-	_that->_hexCtrl->SetDigitsInData(2);
-}
+	wxString strOffs;
+	strOffs << wxT("0x") << toHex(selOffs, selOffs > 0xFFFF ? 8 : 4);
+	wxUint32 absOffset = selOffs + _that->_idata->getStartOffset();
+	strOffs << wxT("  0x") << toHex(absOffset, absOffset > 0xFFFF ? 8 : 4);
 
-void DumpBinaryEvtHandler::wordsRadioClick(wxCommandEvent& event) {
-	int nColumns = _that->_hexCtrl->GetColumns();
-	int nDigits = _that->_hexCtrl->GetDigitsInData();
-	int bytes = nColumns * nDigits/2;
-	_that->_hexCtrl->SetColumns(bytes / 2);
-	_that->_hexCtrl->SetDigitsInData(4);
-}
+	wxListCtrl* list = _that->_listCtrl;
 
-void DumpBinaryEvtHandler::dwordsRadioClick(wxCommandEvent& event) {
-	int nColumns = _that->_hexCtrl->GetColumns();
-	int nDigits = _that->_hexCtrl->GetDigitsInData();
-	int bytes = nColumns * nDigits/2;
-	_that->_hexCtrl->SetColumns(bytes / 4);
-	_that->_hexCtrl->SetDigitsInData(8);
-}
+	wxWindowUpdateLocker lockList(list); 
 
-void DumpBinaryEvtHandler::columnsSliderMove(wxScrollEvent& _event) {
-	int nColumns = _that->_hexCtrl->GetColumns();
-	nColumns *= _that->_hexCtrl->GetDigitsInData()/2;
-	int saveColumns;
-	switch (nColumns) {
-		case 8: saveColumns = nColumns = 1; break;
-		case 16: saveColumns = nColumns = 2; break;
-		case 32: saveColumns = nColumns = 3; break;
-		default: saveColumns = -1; nColumns = 1; break;
-	}
+	list->DeleteAllItems();
 
-	wxEventType ev = _event.GetEventType();
+	long idx;
+	wxListItem item;
+	item.m_mask = wxLIST_MASK_TEXT;
+	item.m_stateMask = 0;
+	item.m_itemId = 0;
+	item.SetTextColour(*wxBLACK);
 
-	if (ev == wxEVT_SCROLL_LINEDOWN)
-		nColumns += 1;
-	else
-	if (ev == wxEVT_SCROLL_LINEUP)
-		nColumns -= 1;
-	else
-	if (ev == wxEVT_SCROLL_PAGEDOWN)
-		nColumns += 1;
-	else
-	if (ev == wxEVT_SCROLL_PAGEUP)
-		nColumns -= 1;
-	else
-	if (ev == wxEVT_SCROLL_THUMBTRACK ||
-	    ev == wxEVT_SCROLL_THUMBRELEASE)
-		nColumns = _event.GetPosition();
+	item.SetBackgroundColour(false ? *wxWHITE : wxColour(237, 243, 254));
+	item.m_col = 0;
+	item.m_text = wxT("offset");
+	idx = list->InsertItem(item);
+	item.m_itemId = idx;
+	item.m_col = 1;
+	item.m_text = strOffs;
+	list->SetItem(item);
 
-	if (nColumns != saveColumns) {
-		switch (nColumns) {
-			case 1: nColumns = 8; break;
-			case 2: nColumns = 16; break;
-			case 3: nColumns = 32; break;
-			default: nColumns = (nColumns < 1) ? 8 : 32; break;
-		}
-		_that->_hexCtrl->SetColumns(nColumns / (_that->_hexCtrl->GetDigitsInData()/2));
+	item.SetBackgroundColour(true ? *wxWHITE : wxColour(237, 243, 254));
+	item.m_col = 0;
+	item.m_text = wxT("string");
+	idx = list->InsertItem(item);
+	item.m_itemId = idx;
+	item.m_col = 1;
+	item.m_text = toString((const char*)&strbuf[0]);
+	list->SetItem(item);
+
+	item.SetBackgroundColour(false ? *wxWHITE : wxColour(237, 243, 254));
+	item.m_col = 0;
+	item.m_text = wxT("int32 LE");
+	idx = list->InsertItem(item);
+	item.m_itemId = idx;
+	item.m_col = 1;
+	item.m_text = wxT("");
+	item.m_text << wxT("0x") << toHex(ui32le, 8);
+	item.m_text << wxT("  ") << ui32le;
+	item.m_text << wxT("  ") << (int32)ui32le;
+	list->SetItem(item);
+
+	item.SetBackgroundColour(true ? *wxWHITE : wxColour(237, 243, 254));
+	item.m_col = 0;
+	item.m_text = wxT("int32 BE");
+	idx = list->InsertItem(item);
+	item.m_itemId = idx;
+	item.m_col = 1;
+	item.m_text = wxT("");
+	item.m_text << wxT("0x") << toHex(ui32be, 8);
+	item.m_text << wxT("  ") << ui32be;
+	item.m_text << wxT("  ") << (int32)ui32be;
+	list->SetItem(item);
+
+	item.SetBackgroundColour(false ? *wxWHITE : wxColour(237, 243, 254));
+	item.m_col = 0;
+	item.m_text = wxT("int16 LE");
+	idx = list->InsertItem(item);
+	item.m_itemId = idx;
+	item.m_col = 1;
+	item.m_text = wxT("");
+	item.m_text << wxT("0x") << toHex(ui16le, 4);
+	item.m_text << wxT("  ") << ui16le;
+	item.m_text << wxT("  ") << (int16)ui16le;
+	list->SetItem(item);
+
+	item.SetBackgroundColour(true ? *wxWHITE : wxColour(237, 243, 254));
+	item.m_col = 0;
+	item.m_text = wxT("int16 BE");
+	idx = list->InsertItem(item);
+	item.m_itemId = idx;
+	item.m_col = 1;
+	item.m_text = wxT("");
+	item.m_text << wxT("0x") << toHex(ui16be, 4);
+	item.m_text << wxT("  ") << ui16be;
+	item.m_text << wxT("  ") << (int16)ui16be;
+	list->SetItem(item);
+
+	item.SetBackgroundColour(false ? *wxWHITE : wxColour(237, 243, 254));
+	item.m_col = 0;
+	item.m_text = wxT("int8");
+	idx = list->InsertItem(item);
+	item.m_itemId = idx;
+	item.m_col = 1;
+	item.m_text = wxT("");
+	item.m_text << wxT("0x") << toHex(ui8, 2);
+	item.m_text << wxT("  ") << ui8;
+	item.m_text << wxT("  ") << (int8)ui8;
+	list->SetItem(item);
+}
+
+void DumpBinaryEvtHandler::absoluteCheckBoxClick(wxCommandEvent& event) {
+	if (event.IsChecked()) {
+		_that->_hexCtrl->SetStartAddr(_that->_idata->getStartOffset());
+	} else {
+		_that->_hexCtrl->SetStartAddr(0);
 	}
 }
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.h	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/BinaryPresenter.h	2007-07-21 16:28:32 UTC (rev 28156)
@@ -11,6 +11,7 @@
 #include "AuxInterfaces.h"
 
 class CHexEditCtrl;
+class wxListCtrl;
 
 namespace Browser {
 
@@ -35,12 +36,9 @@
 	DumpBinaryEvtHandler(BinaryPresenter* that)
 		: _that(that) {}
 
-	void absoluteCheckBoxClick(wxCommandEvent& event);
 	void hexeditChanged(wxCommandEvent& event);
-	void bytesRadioClick(wxCommandEvent& event);
-	void wordsRadioClick(wxCommandEvent& event);
-	void dwordsRadioClick(wxCommandEvent& event);
-	void columnsSliderMove(wxScrollEvent& event);
+	void absoluteCheckBoxClick(wxCommandEvent& event);
+	void copyButtonClick(wxCommandEvent& event);
 };
 
 /////////////////////////////////////////////////////////////////////////////
@@ -55,13 +53,11 @@
 
 	IBinary* _idata;
 	CHexEditCtrl* _hexCtrl;
-	wxTextCtrl* _offsetValue;
-	wxTextCtrl* _dataValue;
+	wxListCtrl* _listCtrl;
 
 	DumpBinaryEvtHandler _evtHelper;
 	friend struct DumpBinaryEvtHandler;
 
-
 public:
 	ASSIGN_DESC(0, wxT("CoreObjects"), 1)
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp	2007-07-21 16:28:32 UTC (rev 28156)
@@ -44,6 +44,7 @@
 	EVT_SET_FOCUS(CHexEditCtrl::OnSetFocus)
 	EVT_KILL_FOCUS(CHexEditCtrl::OnKillFocus)
 	EVT_MOTION(CHexEditCtrl::OnMouseMotion)
+	EVT_MOUSEWHEEL(CHexEditCtrl::OnMouseWheel)
 	EVT_RIGHT_DOWN(CHexEditCtrl::OnContextMenu)
 	EVT_LEFT_DOWN(CHexEditCtrl::OnLeftDown)
 	EVT_LEFT_UP(CHexEditCtrl::OnLeftUP)
@@ -103,7 +104,7 @@
 	m_showAscii = true;
 	m_digitsInData = 2;
 	m_digitsInAddress = 4;
-	m_columns = 8;
+	m_columns = 16;
 	m_fontHeight = 10; //in points
 	m_allowChangeSize = false;
 
@@ -170,6 +171,19 @@
 /////////////////////////////////////////////////////////////////////////////
 // Calculations
 
+wxUint32 CHexEditCtrl::getAddressFromPos(int pos) {
+	return pos * (m_digitsInData/2);
+}
+
+int CHexEditCtrl::getPosFromAddress(wxUint32 address) {
+	return address / (m_digitsInData/2);
+}
+
+// return address aligned to (m_digitsInData/2)
+wxUint32 CHexEditCtrl::getAddressFromRowCol(int row, int col) {
+	return (row * m_columns + col) * (m_digitsInData/2);
+}
+
 // address does not include m_dwStartAddr, doesn't have to be aligned to (m_digitsInData/2)
 int CHexEditCtrl::getRowFromAddress(wxUint32 address) {
 	return address / (m_columns * (m_digitsInData/2));
@@ -180,11 +194,16 @@
 	return (address / (m_digitsInData/2)) % m_columns;
 }
 
-// return address aligned to (m_digitsInData/2)
-wxUint32 CHexEditCtrl::getAddress(int row, int col) {
-	return (row * m_columns + col) * (m_digitsInData/2);
+//is pos safe to read from
+bool CHexEditCtrl::isPosValid(int pos) {
+	wxUint32 offs = getAddressFromPos(pos);
+	return (offs >= 0 && offs + (m_digitsInData/2) <= (wxUint32)m_data.size());
 }
 
+bool CHexEditCtrl::isAddressValid(wxUint32 address, bool onlyOneByte /*= false*/) {
+	return (address >= 0 && address + (onlyOneByte ? 1 : (m_digitsInData/2)) <= (wxUint32)m_data.size());
+}
+
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 // Painting
@@ -265,8 +284,8 @@
 			int dwPos = j + dwRowPos;
 			bool pos_ok = wxUint32(dwPos * (m_digitsInData / 2)) < m_data.size();
 
-			curBackground = (getRowFromAddress(dwPos) & 1) ? m_myBackgroundColourOdd
-															: m_myBackgroundColour;
+			curBackground = (getRowFromAddress(dwPos) & 1) ? m_myBackgroundColour
+															: m_myBackgroundColourOdd;
 
 			//draw a space after hex number
 			if ( dwPos >= m_selStart && dwPos < m_selEnd && j != (m_columns-1)) {
@@ -566,24 +585,72 @@
 	//SetModifiedFlag(); - mark that persistent properties changed
 }
 
-int CHexEditCtrl::GetOffset() {
-	return m_dwStartAddr + m_editPos * (m_digitsInData/2);
+wxUint32 CHexEditCtrl::GetOffset(bool absolute /*= false*/) {
+	return (absolute ? m_dwStartAddr : 0) + getAddressFromPos(m_editPos);
 }
 
-int CHexEditCtrl::GetValue() {
-	int offs = m_editPos * (m_digitsInData/2);
-	if (offs >= (int)m_data.size())
+wxUint32 CHexEditCtrl::GetSelectionOffset() {
+	wxUint32 start = getAddressFromPos(m_selStart);
+	if (m_selStart < 0 || m_selEnd < 0) {
+		if (m_editPos < 0)
+			return 0;
+		start = getAddressFromPos(m_editPos);
+	}
+	return start;
+}
+
+wxUint32 CHexEditCtrl::GetValue() {
+	wxUint32 offs = getAddressFromPos(m_editPos);
+	if (offs >= (wxUint32)m_data.size())
 		return 0;
-	wxASSERT(offs + (m_digitsInData/2) <= (int)m_data.size());
+	wxASSERT(isAddressValid(offs));
 	switch (m_digitsInData) {
 		case 2: return m_data[offs];
-		case 4: return *(wxInt16*)&m_data[offs];
-		case 8: return *(wxInt32*)&m_data[offs];
+		case 4: return *(wxUint16*)&m_data[offs];
+		case 8: return *(wxUint32*)&m_data[offs];
 		default: break;
 	}
 	return 0;
 }
 
+std::vector<wxByte> CHexEditCtrl::GetSelectedData() {
+	wxUint32 start = getAddressFromPos(m_selStart);
+	wxUint32 end = getAddressFromPos(m_selEnd + 1);
+	if (m_selStart < 0 || m_selEnd < 0) {
+		if (m_editPos < 0)
+			return std::vector<wxByte>();
+		start = getAddressFromPos(m_editPos);
+		end = getAddressFromPos(m_editPos + 1);
+	}
+
+	return GetDataRange(start, end - start, true, false);
+}
+
+std::vector<wxByte> CHexEditCtrl::GetDataRange(wxUint32 start, wxUint32 len, bool zeroPad /*= true*/, bool stopOnZero /*= false*/) {
+	std::vector<wxByte> data;
+	if (len > 512)
+		len = 512;
+	wxUint32 end = start + len;
+
+	wxUint32 i;
+	for (i = start; i < end; ++i)
+		if (!isAddressValid(i, true) || i >= m_origDataSize) {
+			if (!stopOnZero && zeroPad)
+				data.push_back(0);
+			else
+				break;
+		} else {
+			if (stopOnZero && m_data[i] == 0)
+				break;
+			data.push_back(m_data[i]);
+		}
+
+	if (stopOnZero && zeroPad && (data.size() == 0 || data.back() != 0) )
+		data.push_back(0);
+
+	return data;
+}
+
 void CHexEditCtrl::SendChangedEvent()
 {
 	wxCommandEvent event(wxEVT_HEXEDIT_CHANGED, GetId());
@@ -1087,6 +1154,26 @@
 	_event.Skip();
 }
 
+void CHexEditCtrl::OnMouseWheel(wxMouseEvent& _event) {
+	int lines = _event.GetWheelRotation() / _event.GetWheelDelta() * _event.GetLinesPerAction();
+
+	int nPrevViewPos = m_viewPos;
+	m_viewPos -= lines * m_columns;
+
+	if ( m_viewPos < 0 )
+		m_viewPos = 0;
+	size_t dwDataLen = m_data.size()/(m_digitsInData/2)/m_columns * m_columns;
+	if ( m_viewPos > (long)dwDataLen - m_columns*(m_charCountWindow.GetHeight()-1) )
+		m_viewPos = (long)dwDataLen - m_columns*(m_charCountWindow.GetHeight()-1);
+
+	if ( m_viewPos != nPrevViewPos )
+	{
+		Refresh(false);
+		SetScrollbar(wxVERTICAL, m_viewPos / m_columns, m_charCountWindow.GetHeight(), m_charCountView.GetHeight());
+		PlaceCaret();
+	}
+}
+
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.h	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.h	2007-07-21 16:28:32 UTC (rev 28156)
@@ -47,6 +47,7 @@
 	void OnLeftDclick(wxMouseEvent& event);
 	void OnLeftUP(wxMouseEvent& event);
 	void OnMouseMotion(wxMouseEvent& event);
+	void OnMouseWheel(wxMouseEvent& event);
 	void OnScroll(wxScrollWinEvent& event);
 	void OnHScroll(wxScrollWinEvent& event);
 	void OnVScroll(wxScrollWinEvent& event);
@@ -229,8 +230,11 @@
 	void SetFontHeight(short nNewValue);
 	void SetData(const wxByte* data, int len, wxUint32 startAddr = 0);
 	const std::vector<wxByte>& GetData();
-	int GetOffset();
-	int GetValue();
+	wxUint32 GetOffset(bool absolute = false);
+	wxUint32 GetSelectionOffset();
+	wxUint32 GetValue();
+	std::vector<wxByte> GetSelectedData();
+	std::vector<wxByte> GetDataRange(wxUint32 start, wxUint32 len, bool zeroPad = true, bool stopOnZero = false);
 
 protected:
 	void SendChangedEvent();
@@ -238,9 +242,13 @@
 	void ShowCaret();
 	void HideCaret();
 
+	wxUint32 getAddressFromPos(int pos);
+	int getPosFromAddress(wxUint32 address);
 	int getRowFromAddress(wxUint32 address);
 	int getColFromAddress(wxUint32 address);
-	wxUint32 getAddress(int row, int col);
+	wxUint32 getAddressFromRowCol(int row, int col);
+	bool isPosValid(int pos);
+	bool isAddressValid(wxUint32 address, bool onlyOneByte = false);
 
 	/*! This function calls pdc->TextOut ( x, y, strText ) function if text overlaps with rcInvalid.*/
 	void TextOutWithCheck(wxDC& dc, const wxRect& rcInvalid, int x, int y, const wxString& strText);

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/FileInfoPresenter.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/FileInfoPresenter.cpp	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/FileInfoPresenter.cpp	2007-07-21 16:28:32 UTC (rev 28156)
@@ -48,9 +48,9 @@
 
 	wxBoxSizer *panelsizer = new wxBoxSizer( wxVERTICAL );
 
-	wxTextCtrl *textCtrl = new wxTextCtrl(panel, wxID_ANY, text, wxPoint(5,5), wxSize(200,200), wxTE_READONLY | wxTE_RICH | wxTE_MULTILINE, wxDefaultValidator, wxT("textCtrl"));
+	wxTextCtrl *textCtrl = new wxTextCtrl(panel, wxID_ANY, text, wxDefaultPosition, wxDefaultSize, wxTE_READONLY | wxTE_RICH | wxTE_MULTILINE, wxDefaultValidator, wxT("textCtrl"));
 	panelsizer->Add(textCtrl,	1, wxALL|wxEXPAND, 0);
-	wxButton *dumpButton = new wxButton(panel, wxID_ANY, wxT("Dump File"), wxPoint(167,450), wxSize(75,25), 0, wxDefaultValidator, wxT("dumpButton"));
+	wxButton *dumpButton = new wxButton(panel, wxID_ANY, wxT("Dump File"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxT("dumpButton"));
 	panelsizer->Add(dumpButton,	0, wxALL, 0);
 
 	panel->SetAutoLayout(true);

Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImagePresenter.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImagePresenter.cpp	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImagePresenter.cpp	2007-07-21 16:28:32 UTC (rev 28156)
@@ -61,19 +61,28 @@
 	_bmpPanel->GetImage() = *_image;
 	panelsizer->Add(_bmpPanel,	1, wxALL|wxEXPAND, 0);
 
+	wxBoxSizer *staticsizer = new wxBoxSizer( wxHORIZONTAL );
+
+	wxString info;
+	info << wxT("Width: ") << _image->GetWidth();
+	info << wxT(" Height: ") << _image->GetHeight();
+	wxStaticText *infoStatic = new wxStaticText(panel, wxID_ANY, info);
+	staticsizer->Add(infoStatic, 0, wxALL, 0);
+
 	wxBoxSizer *buttonsizer = new wxBoxSizer( wxHORIZONTAL );
 
-	wxButton *dumpButton = new wxButton(panel, wxID_ANY, wxT("Dump Image"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxT("dumpButton"));
-	buttonsizer->Add(dumpButton,	0, wxALL, 0);
-	wxButton *autoScaleButton = new wxButton(panel, wxID_ANY, wxT("Autoscale"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxT("dumpButton"));
-	buttonsizer->Add(autoScaleButton,	0, wxALL, 0);
+	wxButton *dumpButton = new wxButton(panel, wxID_ANY, wxT("Dump Image"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxT("dumpButton"));
+	buttonsizer->Add(dumpButton, 0, wxALL, 0);
+	wxButton *autoScaleButton = new wxButton(panel, wxID_ANY, wxT("Autoscale"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxT("dumpButton"));
+	buttonsizer->Add(autoScaleButton, 0, wxALL, 0);
 	wxButton *origScaleButton = new wxButton(panel, wxID_ANY, wxT("100%"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxT("dumpButton"));
-	buttonsizer->Add(origScaleButton,	0, wxALL, 0);
+	buttonsizer->Add(origScaleButton, 0, wxALL, 0);
 	wxButton *scaleUpButton = new wxButton(panel, wxID_ANY, wxT("+"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxT("dumpButton"));
-	buttonsizer->Add(scaleUpButton,	0, wxALL, 0);
+	buttonsizer->Add(scaleUpButton, 0, wxALL, 0);
 	wxButton *scaleDownButton = new wxButton(panel, wxID_ANY, wxT("-"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxT("dumpButton"));
 	buttonsizer->Add(scaleDownButton, 0, wxALL, 0);
 
+	panelsizer->Add(staticsizer, 0, wxALL, 0);
 	panelsizer->Add(buttonsizer, 0, wxALL, 0);
 	panel->SetAutoLayout(true);
 	panel->SetSizer(panelsizer);	

Modified: scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout	2007-07-21 14:39:12 UTC (rev 28155)
+++ scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout	2007-07-21 16:28:32 UTC (rev 28156)
@@ -1,9 +1,9 @@
 [Editor_4]
-CursorCol=3
-CursorRow=68
-TopLine=38
+CursorCol=55
+CursorRow=27
+TopLine=10
 LeftChar=1
-Open=0
+Open=1
 Top=0
 [Editor_5]
 CursorCol=1
@@ -25,7 +25,7 @@
 TopLine=1
 LeftChar=1
 Open=1
-Top=1
+Top=0
 [Editor_1]
 CursorCol=1
 CursorRow=1
@@ -44,12 +44,12 @@
 TopLine=1
 LeftChar=1
 [Editor_7]
-CursorCol=1
-CursorRow=171
-TopLine=141
+CursorCol=64
+CursorRow=148
+TopLine=89
 LeftChar=1
 Open=1
-Top=0
+Top=1
 [Editor_6]
 CursorCol=1
 CursorRow=57
@@ -59,8 +59,8 @@
 Top=0
 [Editor_8]
 CursorCol=1
-CursorRow=114
-TopLine=114
+CursorRow=42
+TopLine=24
 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