[Date Prev][Date Next][Thread Prev][Thread Next][Thread Index]

[XaraXtreme-dev] Some Contributions

I have signed the CA, though I am not sure it has been received. I
emailed it to developers@xxxxxxxxx I got a reply back from Neil Howe
stating that he is out of the office until June 4th. Hopefully you can
accept these changes.

I have split them into separate diffs so that you can accept or reject
them as you desire.

change_foreground.diff is one that I have sent before. It sets the text
color to black for the gallery heading lines where the background color
is set to gray.

btnhighlight.diff is another color change. I noticed when looking at the
wxWidgets code that there were some wxSYS_COLOUR_* enum values that were
not used in the switch statement in the function GetColour. I believe
these are deprecated. btnhighlight.diff contains all of the color
changes that I found to be straight forward. In the cases of 3DSHADOW
and BTNHIGHLIGHT, they were commented out in the code, and one line
above was another value, the one which I selected to replace them.

3dface.diff contains a color change that I am less sure of. the
wxSYS_COLOUR_3DFACE enum is not mentioned in GetColour as a case entry,
nor it is commented out. The default in this situation is white. I chose
to replace it with BTNFACE, but that will not always produce white.

wx2.8.diff is a larger change. This includes all changes I needed to
make in order for Xara to compile against wxWidgets 2.8.4. Additionally
I modified the build process to use the wxWidgets detection code to add
a flag: -D__WX_2_8__ if compiling against wxWidgetst 2.8 or newer. And,
all of my code changes that depend on 2.8 are #ifdef __WX_2_8__
bracketed. This was necessary because there were some naming changes,
like wxFloatingPane changed to wxAuiFloatingFrame.

Also in the wx2.8.diff changes is a new class wxKeyMap. This class only
has static members, and it works like this:

The wxOil/xrc/STANDARD_HOTKEYS.res file's second field was changed from
something like 0x3d to "WX_F1". Under hotkeys.cpp, the function that
reads this file was changed to first expect a string of that format,
then the text description and so on. It takes the token and runs
wxKeyMap::GetKeyVal(TokenBuf) which looks up the value in a std::map.
The map is also a static member of the class, and the first time this
function is called, the GenerateMap member is called to populate the map
with the appropriate values.

Let me know if you have any questions about the changes I have made. I
have compiled and run the application against both wxWidgets 2.6.3 and
Index: wxOil/cartprov.cpp
--- wxOil/cartprov.cpp	(revision 1766)
+++ wxOil/cartprov.cpp	(working copy)
@@ -755,7 +755,7 @@
 void CamArtProvider::Draw(wxDC& dc, const wxRect & rect, ResourceID Resource, CamArtFlags Flags, const wxString &text)
-	dc.SetBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
+	dc.SetBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
 //	dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
Index: wxOil/griddropdown.cpp
--- wxOil/griddropdown.cpp	(revision 1766)
+++ wxOil/griddropdown.cpp	(working copy)
@@ -506,8 +506,8 @@
 void CGridDropDown::DrawItem(wxDC& dc, const wxRect& rect, int iItem, INT32 iFlags)
 	// Erase the background first.
-	static wxPen   penBackground(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
-	static wxBrush brBackground(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
+	static wxPen   penBackground(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
+	static wxBrush brBackground(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
Index: wxOil/ccolbar.cpp
--- wxOil/ccolbar.cpp	(revision 1766)
+++ wxOil/ccolbar.cpp	(working copy)
@@ -1723,7 +1723,7 @@
 static void Paint3dPlinth(wxDC* pDC, wxRect *rect, BOOL PlinthOut)
 	wxPen Black(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW));
-	wxPen White(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT));
+	wxPen White(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT));
 	wxPoint Points[3];
 	pDC->SetPen((PlinthOut) ? White : Black);
Index: wxOil/dlgcol.cpp
--- wxOil/dlgcol.cpp	(revision 1766)
+++ wxOil/dlgcol.cpp	(working copy)
@@ -213,7 +213,7 @@
 	GetOSColour(&mHighlightedTextFore, wxSYS_COLOUR_HIGHLIGHTTEXT);
 	GetOSColour(&mButtonFace, wxSYS_COLOUR_BTNFACE);
-	GetOSColour(&mButtonHighlight, wxSYS_COLOUR_BTNHIGHLIGHT);
+	GetOSColour(&mButtonHighlight, wxSYS_COLOUR_3DHIGHLIGHT);
 	GetOSColour(&mButtonShadow, wxSYS_COLOUR_BTNSHADOW);
Index: wxOil/basebar2.cpp
--- wxOil/basebar2.cpp	(revision 1766)
+++ wxOil/basebar2.cpp	(working copy)
@@ -5851,7 +5851,7 @@
 	dc.DrawRectangle( RightBorderRect);
 	dc.SetBrush( wxNullBrush );
-	wxColour TopLeft		= wxSystemSettings::GetColour( wxSYS_COLOUR_BTNHIGHLIGHT );
+	wxColour TopLeft		= wxSystemSettings::GetColour( wxSYS_COLOUR_3DHIGHLIGHT );
 	wxColour BotRight		= wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWFRAME );
 	wxColour TopLeftInside	= wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE );
 	wxColour BotRightInside	= wxSystemSettings::GetColour( wxSYS_COLOUR_BTNSHADOW );
Index: wxOil/oilruler.cpp
--- wxOil/oilruler.cpp	(revision 1766)
+++ wxOil/oilruler.cpp	(working copy)
@@ -530,7 +530,7 @@
 	// read the necessary colours
 	wxColour BackCol  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
-	wxColour TopLeft  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT);
+	wxColour TopLeft  = wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT);
 	wxColour BotRight = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW);
 	wxColour TextCol  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNTEXT);
@@ -2043,7 +2043,7 @@
 	// read the necessary colours
 	wxColour BackCol  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
-	wxColour TopLeft  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT);
+	wxColour TopLeft  = wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT);
 	wxColour BotRight = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW);
 	wxColour TextCol  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNTEXT);
@@ -2413,7 +2413,7 @@
 	// read the necessary colours
 	wxColour BackCol  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
-	wxColour TopLeft  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT);
+	wxColour TopLeft  = wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT);
 	wxColour BotRight = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW);
 	wxColour TextCol  = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNTEXT);
Index: wxOil/griddropdown.cpp
--- wxOil/griddropdown.cpp	(revision 1766)
+++ wxOil/griddropdown.cpp	(working copy)
@@ -552,7 +552,7 @@
 	wxRect rcRect = rect;
-	static wxPen penDarkGrey(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW));
+	static wxPen penDarkGrey(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW));
 	static wxPen penHighlight(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT));
 	// Depending on whether the 
Index: Kernel/sgtree.cpp
--- Kernel/sgtree.cpp	(revision 1766)
+++ Kernel/sgtree.cpp	(working copy)
@@ -5005,6 +5005,9 @@
 					DocColour Col(192, 192, 192);	//128, 128, 128);
 					Col.SetSeparable(FALSE);		// Do not colour correct or separate this colour!
+          DocColour TextCol(COLOUR_BLACK);
+          Col.SetSeparable(FALSE);
@@ -5056,7 +5059,7 @@
 							RedrawInfo->Renderer->SetFixedSystemTextColours(&RedrawInfo->SelForeground, &RedrawInfo->SelBackground);
-							RedrawInfo->Renderer->SetFixedSystemTextColours(&RedrawInfo->Foreground, &Col);
+							RedrawInfo->Renderer->SetFixedSystemTextColours(&TextCol, &Col);
 						// Space between text and glyph
 						MyRect.lo.x += DevicePixels(MiscInfo, 3);
Index: Kernel/hotkeys.cpp
--- Kernel/hotkeys.cpp	(revision 1766)
+++ Kernel/hotkeys.cpp	(working copy)
@@ -114,6 +114,7 @@
 #include "toollist.h"
 #include "dragmgr.h"
 #include "basebar.h"
+#include "wxkeymap.h"
@@ -167,6 +168,9 @@
 // The size of the text description string object in a HotKey object
 #define TEXT_DESC_SIZE 32
+// The size of the enumeration string representation in a HotKey object
+#define ENUM_STR_DESC_SIZE 20
 > static BOOL HotKey::Init()
@@ -842,6 +846,7 @@
 	// This is FALSE until we have read the text that describes the key combination
 	BOOL TextDescRead = FALSE;
+	BOOL EnumStringRead = FALSE;
 	// We haven't finsihed, but we're OK at the mo
 	BOOL finished = FALSE;
@@ -861,8 +866,27 @@
 				case TOKEN_STRING:
-					if (!TextDescRead)
+					if (!EnumStringRead)
+						// The first string encountered is the "WXK_" string representation of
+						// the enumeration.
+						// Make sure the enum string is not too long.
+						UINT32 TokenLen = camStrlen(TokenBuf);
+						if (TokenLen <= ENUM_STR_DESC_SIZE)
+						{
+							// Is the string not empty (i.e. "") ?
+							if (TokenLen > 0)
+							{
+								VirtKey=wxKeyMap::GetKeyVal(TokenBuf);
+							}
+						}
+						else
+							TRACE( _T("HotKey: Enum string ('%s') is too long - should be <= %d"),TokenBuf,ENUM_STR_DESC_SIZE);
+						EnumStringRead = TRUE;
+					}
+					else if (!TextDescRead)
+					{
 						// We haven't yet read the textual desc of the key definition, so assume
 						// that this is it
@@ -912,9 +936,10 @@
 							case HK_TOKEN_CHECKUNICODE	: *pCheckUnicode = TRUE; break;
 							case HK_TOKEN_NONE:
-								ok = (camSscanf(TokenBuf,_T("%li"),&VirtKey) == 1);
+								//Should no longer get this token.
+								/*ok = (camSscanf(TokenBuf,_T("%li"),&VirtKey) == 1);
 								if (!ok) TRACE( _T("HotKey: Expected a virtual key code but got : '%s'\n"),TokenBuf);
-								break;
+								break;*/
 								ok = FALSE;
Index: configure.in
--- configure.in	(revision 1766)
+++ configure.in	(working copy)
@@ -190,8 +190,13 @@
 # Verify minimus requires
 vers=`echo $wxversion | $AWK 'BEGIN { FS = "."; } { printf "% d", ($1 * 1000 + $2) * 1000 + $3;}'`
 if test -n "$vers" && test "$vers" -ge 2006003; then
-	WX_CPPFLAGS="`$WXCONFIG --static=$StaticEnable --debug=$DebugEnable --unicode=yes --cppflags`"
-	WX_CXXFLAGS="`$WXCONFIG --static=$StaticEnable --debug=$DebugEnable --unicode=yes --cxxflags | sed -e 's/-fno-exceptions//'`"
+	if test "$vers" -ge 2008000; then
+		WX_VERSION="-D__WXVERS_2_8__"
+	else
+	fi
+	WX_CPPFLAGS="`$WXCONFIG --static=$StaticEnable --debug=$DebugEnable --unicode=yes --cppflags` $WX_VERSION"
+	WX_CXXFLAGS="`$WXCONFIG --static=$StaticEnable --debug=$DebugEnable --unicode=yes --cxxflags | sed -e 's/-fno-exceptions//'` $WX_VERSION"
 	WX_LIBS="`$WXCONFIG --static=$StaticEnable --debug=$DebugEnable --unicode=yes --libs std`"
 	WX_LIBS2="`echo $WX_LIBS | sed -e 's/-pthread//g'`"
Index: wxXtra/gridcombo.h
--- wxXtra/gridcombo.h	(revision 1766)
+++ wxXtra/gridcombo.h	(working copy)
@@ -15,6 +15,11 @@
 #include <wx/defs.h>
 //#include <wx/grid.h>
 #include <vector>
+#ifdef __WXVERS_2_8__
+#include <wx/scrolwin.h>
+#include <wx/timer.h>
+#include <wx/settings.h>
 #include <wx/combo.h>
Index: wxOil/fileinfolist.h
--- wxOil/fileinfolist.h	(revision 1766)
+++ wxOil/fileinfolist.h	(working copy)
@@ -98,8 +98,10 @@
+#ifdef __WXVERS_2_8__
+#include <wx/imaglist.h>
 class CFileInfoList
Index: wxOil/wxkeymap.cpp
--- wxOil/wxkeymap.cpp	(revision 0)
+++ wxOil/wxkeymap.cpp	(revision 0)
@@ -0,0 +1,221 @@
+#include "wxkeymap.h"
+#include "vkextra.h"
+#include <wx/defs.h>
+	std::map<String_32, UINT32> wxKeyMap::keymap;
+	Author:		Jason M'Sadoques
+	Created:	5/30/2007
+	Purpose:	Holds the string to enum translations for WXK_* keys.
+std::map<String_32, UINT32> wxKeyMap::keymap;
+	UINT32 wxKeyMap::GetKeyVal(String_32 key_str)
+	Author:		Jason M'Sadoques
+	Created:	5/30/2007
+	Inputs:		The String representation of a WXK_* key, for example "WXK_ADD"
+	Returns:	The enum value.
+	Purpose:	This function ensures that it is unnecessary to hard-code key values into
+				resource or other configuration files. The enumeration name can be kept
+				the same, and the actual enumeration value can change without changing this
+				code.
+				The first time through, the keymap map is populated with the string to enum
+				translations.
+UINT32 wxKeyMap::GetKeyVal(String_32 key_str)
+	if(wxKeyMap::keymap.empty())
+		wxKeyMap::GenerateMap();
+	ENSURE(!wxKeyMap::keymap.empty(), "keymap is still empty");
+	ENSURE(wxKeyMap::keymap[key_str] != 0, "key_str is invalid");
+	return(wxKeyMap::keymap[key_str]);
+	void wxKeyMap::GenerateMap()
+	Author:		Jason M'Sadoques
+	Created:	5/30/2007
+	Purpose:	Generate the string to enum translations in the keymap map.
+void wxKeyMap::GenerateMap()
+	/* Defined in vkextra.h */
+	wxKeyMap::keymap[TEXT("WXK_0")]=WXK_0;
+	wxKeyMap::keymap[TEXT("WXK_1")]=WXK_1;
+	wxKeyMap::keymap[TEXT("WXK_2")]=WXK_2;
+	wxKeyMap::keymap[TEXT("WXK_3")]=WXK_3;
+	wxKeyMap::keymap[TEXT("WXK_4")]=WXK_4;
+	wxKeyMap::keymap[TEXT("WXK_5")]=WXK_5;
+	wxKeyMap::keymap[TEXT("WXK_6")]=WXK_6;
+	wxKeyMap::keymap[TEXT("WXK_7")]=WXK_7;
+	wxKeyMap::keymap[TEXT("WXK_8")]=WXK_8;
+	wxKeyMap::keymap[TEXT("WXK_9")]=WXK_9;
+	wxKeyMap::keymap[TEXT("WXK_A")]=WXK_A;
+	wxKeyMap::keymap[TEXT("WXK_B")]=WXK_B;
+	wxKeyMap::keymap[TEXT("WXK_C")]=WXK_C;
+	wxKeyMap::keymap[TEXT("WXK_D")]=WXK_D;
+	wxKeyMap::keymap[TEXT("WXK_E")]=WXK_E;
+	wxKeyMap::keymap[TEXT("WXK_F")]=WXK_F;
+	wxKeyMap::keymap[TEXT("WXK_G")]=WXK_G;
+	wxKeyMap::keymap[TEXT("WXK_H")]=WXK_H;
+	wxKeyMap::keymap[TEXT("WXK_I")]=WXK_I;
+	wxKeyMap::keymap[TEXT("WXK_J")]=WXK_J;
+	wxKeyMap::keymap[TEXT("WXK_K")]=WXK_K;
+	wxKeyMap::keymap[TEXT("WXK_L")]=WXK_L;
+	wxKeyMap::keymap[TEXT("WXK_M")]=WXK_M;
+	wxKeyMap::keymap[TEXT("WXK_N")]=WXK_N;
+	wxKeyMap::keymap[TEXT("WXK_O")]=WXK_O;
+	wxKeyMap::keymap[TEXT("WXK_P")]=WXK_P;
+	wxKeyMap::keymap[TEXT("WXK_Q")]=WXK_Q;
+	wxKeyMap::keymap[TEXT("WXK_R")]=WXK_R;
+	wxKeyMap::keymap[TEXT("WXK_S")]=WXK_S;
+	wxKeyMap::keymap[TEXT("WXK_T")]=WXK_T;
+	wxKeyMap::keymap[TEXT("WXK_U")]=WXK_U;
+	wxKeyMap::keymap[TEXT("WXK_V")]=WXK_V;
+	wxKeyMap::keymap[TEXT("WXK_W")]=WXK_W;
+	wxKeyMap::keymap[TEXT("WXK_X")]=WXK_X;
+	wxKeyMap::keymap[TEXT("WXK_Y")]=WXK_Y;
+	wxKeyMap::keymap[TEXT("WXK_Z")]=WXK_Z;
+	wxKeyMap::keymap[TEXT("WXK_LESS")]=WXK_LESS;
+	wxKeyMap::keymap[TEXT("WXK_GREATER")]=WXK_GREATER;
+	wxKeyMap::keymap[TEXT("WXK_ADD")]=WXK_ADD;
+	wxKeyMap::keymap[TEXT("WXK_EQUALS")]=WXK_EQUALS;
+	wxKeyMap::keymap[TEXT("WXK_COMMA")]=WXK_COMMA;
+	wxKeyMap::keymap[TEXT("WXK_MINUS")]=WXK_MINUS;
+	wxKeyMap::keymap[TEXT("WXK_PERIOD")]=WXK_PERIOD;
+	wxKeyMap::keymap[TEXT("WXK_HASH")]=WXK_HASH;
+	/* Defined in wx/defs.h */
+	wxKeyMap::keymap[TEXT("WXK_BACK")]=WXK_BACK;
+	wxKeyMap::keymap[TEXT("WXK_TAB")]=WXK_TAB;
+	wxKeyMap::keymap[TEXT("WXK_RETURN")]=WXK_RETURN;
+	wxKeyMap::keymap[TEXT("WXK_ESCAPE")]=WXK_ESCAPE;
+	wxKeyMap::keymap[TEXT("WXK_SPACE")]=WXK_SPACE;
+	wxKeyMap::keymap[TEXT("WXK_DELETE")]=WXK_DELETE;
+	wxKeyMap::keymap[TEXT("WXK_START")]=WXK_START;
+	wxKeyMap::keymap[TEXT("WXK_LBUTTON")]=WXK_LBUTTON;
+	wxKeyMap::keymap[TEXT("WXK_RBUTTON")]=WXK_RBUTTON;
+	wxKeyMap::keymap[TEXT("WXK_CANCEL")]=WXK_CANCEL;
+	wxKeyMap::keymap[TEXT("WXK_MBUTTON")]=WXK_MBUTTON;
+	wxKeyMap::keymap[TEXT("WXK_CLEAR")]=WXK_CLEAR;
+	wxKeyMap::keymap[TEXT("WXK_SHIFT")]=WXK_SHIFT;
+	wxKeyMap::keymap[TEXT("WXK_ALT")]=WXK_ALT;
+	wxKeyMap::keymap[TEXT("WXK_CONTROL")]=WXK_CONTROL;
+	wxKeyMap::keymap[TEXT("WXK_MENU")]=WXK_MENU;
+	wxKeyMap::keymap[TEXT("WXK_PAUSE")]=WXK_PAUSE;
+	wxKeyMap::keymap[TEXT("WXK_CAPITAL")]=WXK_CAPITAL;
+	wxKeyMap::keymap[TEXT("WXK_PRIOR")]=WXK_PRIOR;
+	wxKeyMap::keymap[TEXT("WXK_NEXT")]=WXK_NEXT;
+	wxKeyMap::keymap[TEXT("WXK_END")]=WXK_END;
+	wxKeyMap::keymap[TEXT("WXK_HOME")]=WXK_HOME;
+	wxKeyMap::keymap[TEXT("WXK_LEFT")]=WXK_LEFT;
+	wxKeyMap::keymap[TEXT("WXK_UP")]=WXK_UP;
+	wxKeyMap::keymap[TEXT("WXK_RIGHT")]=WXK_RIGHT;
+	wxKeyMap::keymap[TEXT("WXK_DOWN")]=WXK_DOWN;
+	wxKeyMap::keymap[TEXT("WXK_SELECT")]=WXK_SELECT;
+	wxKeyMap::keymap[TEXT("WXK_PRINT")]=WXK_PRINT;
+	wxKeyMap::keymap[TEXT("WXK_EXECUTE")]=WXK_EXECUTE;
+	wxKeyMap::keymap[TEXT("WXK_INSERT")]=WXK_INSERT;
+	wxKeyMap::keymap[TEXT("WXK_HELP")]=WXK_HELP;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD0")]=WXK_NUMPAD0;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD1")]=WXK_NUMPAD1;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD2")]=WXK_NUMPAD2;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD3")]=WXK_NUMPAD3;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD4")]=WXK_NUMPAD4;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD5")]=WXK_NUMPAD5;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD6")]=WXK_NUMPAD6;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD7")]=WXK_NUMPAD7;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD8")]=WXK_NUMPAD8;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD9")]=WXK_NUMPAD9;
+	wxKeyMap::keymap[TEXT("WXK_DECIMAL")]=WXK_DECIMAL;
+	wxKeyMap::keymap[TEXT("WXK_F1")]=WXK_F1;
+	wxKeyMap::keymap[TEXT("WXK_F2")]=WXK_F2;
+	wxKeyMap::keymap[TEXT("WXK_F3")]=WXK_F3;
+	wxKeyMap::keymap[TEXT("WXK_F4")]=WXK_F4;
+	wxKeyMap::keymap[TEXT("WXK_F5")]=WXK_F5;
+	wxKeyMap::keymap[TEXT("WXK_F6")]=WXK_F6;
+	wxKeyMap::keymap[TEXT("WXK_F7")]=WXK_F7;
+	wxKeyMap::keymap[TEXT("WXK_F8")]=WXK_F8;
+	wxKeyMap::keymap[TEXT("WXK_F9")]=WXK_F9;
+	wxKeyMap::keymap[TEXT("WXK_F10")]=WXK_F10;
+	wxKeyMap::keymap[TEXT("WXK_F11")]=WXK_F11;
+	wxKeyMap::keymap[TEXT("WXK_F12")]=WXK_F12;
+	wxKeyMap::keymap[TEXT("WXK_F13")]=WXK_F13;
+	wxKeyMap::keymap[TEXT("WXK_F14")]=WXK_F14;
+	wxKeyMap::keymap[TEXT("WXK_F15")]=WXK_F15;
+	wxKeyMap::keymap[TEXT("WXK_F16")]=WXK_F16;
+	wxKeyMap::keymap[TEXT("WXK_F17")]=WXK_F17;
+	wxKeyMap::keymap[TEXT("WXK_F18")]=WXK_F18;
+	wxKeyMap::keymap[TEXT("WXK_F19")]=WXK_F19;
+	wxKeyMap::keymap[TEXT("WXK_F20")]=WXK_F20;
+	wxKeyMap::keymap[TEXT("WXK_F21")]=WXK_F21;
+	wxKeyMap::keymap[TEXT("WXK_F22")]=WXK_F22;
+	wxKeyMap::keymap[TEXT("WXK_F23")]=WXK_F23;
+	wxKeyMap::keymap[TEXT("WXK_F24")]=WXK_F24;
+	wxKeyMap::keymap[TEXT("WXK_NUMLOCK")]=WXK_NUMLOCK;
+	wxKeyMap::keymap[TEXT("WXK_SCROLL")]=WXK_SCROLL;
+	wxKeyMap::keymap[TEXT("WXK_PAGEUP")]=WXK_PAGEUP;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD_F1")]=WXK_NUMPAD_F1;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD_F2")]=WXK_NUMPAD_F2;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD_F3")]=WXK_NUMPAD_F3;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD_F4")]=WXK_NUMPAD_F4;
+	wxKeyMap::keymap[TEXT("WXK_NUMPAD_UP")]=WXK_NUMPAD_UP;
+	wxKeyMap::keymap[TEXT("WXK_COMMAND")]=WXK_COMMAND;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL1")]=WXK_SPECIAL1;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL2")]=WXK_SPECIAL2;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL3")]=WXK_SPECIAL3;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL4")]=WXK_SPECIAL4;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL5")]=WXK_SPECIAL5;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL6")]=WXK_SPECIAL6;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL7")]=WXK_SPECIAL7;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL8")]=WXK_SPECIAL8;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL9")]=WXK_SPECIAL9;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL10")]=WXK_SPECIAL10;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL11")]=WXK_SPECIAL11;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL12")]=WXK_SPECIAL12;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL13")]=WXK_SPECIAL13;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL14")]=WXK_SPECIAL14;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL15")]=WXK_SPECIAL15;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL16")]=WXK_SPECIAL16;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL17")]=WXK_SPECIAL17;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL18")]=WXK_SPECIAL18;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL19")]=WXK_SPECIAL19;
+	wxKeyMap::keymap[TEXT("WXK_SPECIAL20")]=WXK_SPECIAL20;
Index: wxOil/Makefile.am
--- wxOil/Makefile.am	(revision 1766)
+++ wxOil/Makefile.am	(working copy)
@@ -41,7 +41,7 @@
 	lddirect.cpp prncamvw.cpp prdlgctl.cpp psdc.cpp grndprnt.cpp printprg.cpp \
 	oilruler.cpp bitmapdropdown.cpp helptabs.cpp tmplmngr.cpp imgmgkft.cpp ppmfiltr.cpp \
 	bitmapgriddropdown.cpp griddropdown.cpp camdoctp.cpp \
-	resources.cpp fileinfolist.cpp
+	resources.cpp fileinfolist.cpp wxkeymap.cpp
 # Keep resources.cpp on a separate line as it is odd
Index: wxOil/vkextra.h
--- wxOil/vkextra.h	(revision 1766)
+++ wxOil/vkextra.h	(working copy)
@@ -141,6 +141,9 @@
 #define WXK_Y 0x59
 #define WXK_Z 0x5A
+#define WXK_LESS 0x3C
+#define WXK_GREATER 0x3E
 #define WXK_ADD 0x6B
 #define WXK_EQUALS 0xBB
 #define WXK_COMMA 0xBC
Index: wxOil/camelot.cpp
--- wxOil/camelot.cpp	(revision 1766)
+++ wxOil/camelot.cpp	(working copy)
@@ -293,7 +293,11 @@
 		TRACEUSER("luke", _T("CCamApp::FilterEvent activate to %s"), pEventObject->GetClassInfo()->GetClassName());
+#ifdef __WXVERS_2_8__
+		if( pEventObject->IsKindOf( CLASSINFO(wxAuiFloatingFrame) ) )
 		if( pEventObject->IsKindOf( CLASSINFO(wxFloatingPane) ) )
 			wxClassInfo* pClassInfo = pEventObject->GetClassInfo();
 			while( NULL != pClassInfo )
Index: wxOil/dlgmgr.h
--- wxOil/dlgmgr.h	(revision 1766)
+++ wxOil/dlgmgr.h	(working copy)
@@ -821,8 +821,13 @@
 	static void EnsurePanePreferenceDeclared(wxString key);
 	static void InitPaneInfoHash();
+#ifdef __WXVERS_2_8__
+	static void LoadPaneInfo(wxString key, wxAuiPaneInfo &paneinfo);
+	static void SavePaneInfo(wxString key, wxAuiPaneInfo &paneinfo);
 	static void LoadPaneInfo(wxString key, wxPaneInfo &paneinfo);
 	static void SavePaneInfo(wxString key, wxPaneInfo &paneinfo);
 	static IdToSerializedPaneInfo * s_pPaneInfoHash;
Index: wxOil/wxkeymap.h
--- wxOil/wxkeymap.h	(revision 0)
+++ wxOil/wxkeymap.h	(revision 0)
@@ -0,0 +1,24 @@
+#include "camtypes.h"
+#include <map>
+#include "fixstr32.h"
+	class: wxKeyMap
+	Author: Jason M'Sadoques
+	Created: 28/05/2007
+	Purpose: Maps the string representation of a wx key (i.e. "WXK_F1"), into it's enum value.
+class wxKeyMap
+	static std::map<String_32, UINT32> keymap;
+	static void GenerateMap();
+	public:
+		static UINT32 GetKeyVal(String_32);
Index: wxOil/xrc/STANDARD_HOTKEYS.res
--- wxOil/xrc/STANDARD_HOTKEYS.res	(revision 1766)
+++ wxOil/xrc/STANDARD_HOTKEYS.res	(working copy)
@@ -1,142 +1,142 @@
-HotKey	0x09		Constrain				"Ctrl+Tab"		"NextDocument"
-HotKey	0x09		Adjust Constrain		"Ctrl+Shift+Tab" "LastDocument"
+HotKey	"WXK_TAB"		Constrain				"Ctrl+Tab"		"NextDocument"
+HotKey	"WXK_TAB"		Adjust Constrain		"Ctrl+Shift+Tab" "LastDocument"
-HotKey	0x41		Constrain				"Ctrl+A"		"SelectAll"
-HotKey	0x41		Adjust Constrain		"Ctrl+Shift+A"	"PasteAttributes"
-HotKey	0x42		Constrain				"Ctrl+B"		"PutToBack"
-HotKey	0x42		Adjust Constrain		"Ctrl+Shift+B"	"MoveBackwards"
-HotKey	0x43		Constrain				"Ctrl+C"		"Copy"
-HotKey	0x43 		Adjust Constrain 		"Ctrl+Shift+C"	"ConvertToBitmap"
-HotKey	0x44		Constrain				"Ctrl+D"		"Duplicate"
-HotKey	0x44		Adjust Constrain		"Ctrl+Shift+D"	"MoveBackwardsALayer"
-HotKey	0x45		Constrain				"Ctrl+E"		"ColourPicker"
-HotKey	0x45		Adjust Constrain		"Ctrl+Shift+E"	"Export"
-HotKey	0x46		Constrain				"Ctrl+F"		"BringToFront"
-HotKey	0x46		Adjust Constrain		"Ctrl+Shift+F"	"MoveForwards"
-HotKey	0x47		Constrain				"Ctrl+G"		"Group"
-HotKey	0x47		Adjust Constrain		"Ctrl+Shift+G"	"Group"
-HotKey	0x57		Constrain				"Ctrl+W"		"FileClose"
-HotKey	0x49		Adjust Constrain		"Ctrl+Shift+I"	"Import"
-HotKey	0x49		Constrain				"Ctrl+I"		"ImageSlice"
-HotKey	0x4A		Adjust Constrain		"Ctrl+Shift+J"	"ZoomDrawing"
-HotKey	0x4B		Constrain				"Ctrl+K"		"EditClone"
-HotKey	0x4C		Constrain				"Ctrl+L"		"ViewRulers"
-HotKey	0x4C		Adjust Constrain		"Ctrl+Shift+L"	"ArrangeAlignment"
-HotKey	0x4E		Constrain				"Ctrl+N"		"FileNewDrawing"
-HotKey	0x4E		Adjust Constrain		"Ctrl+Shift+N"	"FileNewAnimation"
-HotKey	0x4F		Constrain				"Ctrl+O"		"FileOpen"
-HotKey	0x4F		Adjust Constrain		"Ctrl+Shift+O"	"UtilOptions"
-HotKey	0x50		Constrain				"Ctrl+P"		"Print"
-HotKey	0x50		Adjust Constrain		"Ctrl+Shift+P"	"ZoomSpread"
-HotKey  0x52		Constrain				"Ctrl+R"		"ZoomPrev"
-HotKey  0x52		Adjust Constrain		"Ctrl+Shift+R"	"ReverseStoryPath"
-HotKey	0x53		Constrain				"Ctrl+S"		"FileSave"
-HotKey	0x53		Adjust Constrain		"Ctrl+Shift+S"	"ConvertToShapes"
-HotKey  0x54		Adjust Constrain		"Ctrl+Shift+T"	"TimeDraw"
-HotKey	0x55		Constrain				"Ctrl+U"		"Ungroup"
-HotKey	0x55		Adjust Constrain 		"Ctrl+Shift+U"	"MoveForwardsALayer"
-HotKey	0x56		Constrain				"Ctrl+V"		"Paste"
-HotKey	0x56		Adjust Constrain		"Ctrl+Shift+V"	"PasteAtSamePos"
-HotKey	0x57		Adjust Constrain		"Ctrl+Shift+W"	"WebAddressDlg"
-HotKey	0x58		Constrain				"Ctrl+X"		"Cut"
-HotKey	0x59		Constrain				"Ctrl+Y"		"Redo"
-HotKey	0x59		Adjust Constrain		"Ctrl+Shift+Y"	"URLImport"
-HotKey	0x5A		Constrain				"Ctrl+Z"		"Undo"
-HotKey  0x5A		Adjust Constrain		"Ctrl+Shift+Z"	"ZoomSelect"
-HotKey	0xBC							"<"				"Undo"
-HotKey	0xBE							">"				"Redo"
-HotKey	0x1B							"Esc"			"SelectNone"
-HotKey	0x08								"Backspace"		"Cut"
-HotKey	0x7F 	Extended				"Del"			"Delete"
-HotKey	0x7F 							"Del"			"Delete"
-HotKey	0x2D 	Extended				"Ins"			"Paste"
-HotKey	0xDE		CheckUnicode			"#"				"ShowGrid"
-HotKey	0x0D							"Return"		"EditSelection"
-HotKey	0x0D	Extended				"Enter"			"EditSelection"
-HotKey	0x2D	Extended Adjust			"Shift+Insert"	"Paste"
-HotKey	0x2D	Extended Constrain		"Ctrl+Insert"	"Copy"
-HotKey	0x7F	Adjust					"Shift+Delete"	"Cut"
-HotKey	0x7F	Extended Adjust			"Shift+Delete"	"Cut"
-HotKey	0x13D							"NumPad 8"		"ViewFullScreen"
-HotKey	0x156	Extended				"F1"			"HelpIndex"
-HotKey	0x187	WorksInDrag				"NumPad *"		"SnapToObjects"
-HotKey	0x185	WorksInDrag Extended	"NumPad ."		"SnapToGrid"
-HotKey	0x17D	WorksInDrag				"NumPad 2"		"SnapToGuides"
-HotKey	0x182  						"NumPad 1"		"ShowGuides"
-HotKey	0x31	Constrain			"Ctrl+1"			"AddShapes"
-HotKey	0x32	Constrain			"Ctrl+2"			"SubtractShapes"
-HotKey  0x33	Constrain			"Ctrl+3"			"IntersectShapes"
-HotKey  0x34	Constrain			"Ctrl+4"			"SliceShapes"
-HotKey  0x38	Adjust Constrain		"Ctrl+Shift+8"			"CXFTreeDlg"
-HotKey  0x39	Adjust Constrain		"Ctrl+Shift+9"			"ThrottleCache"
-HotKey  0x30	Adjust Constrain		"Ctrl+Shift+0"			"ClearCache"
-HotKey  0x188	Constrain		"Ctrl+NumPad +"		"ZoomIn"
-HotKey  0x18A	Constrain		"Ctrl+NumPad -"		"ZoomOut"
-HotKey	0x31		Alternative		"Alt+1"				"TOOL13"
-HotKey	0x32		Alternative		"Alt+2"				"TOOL17"
-HotKey  0x33		Alternative		"Alt+3"				"TOOL22"
-HotKey  0x34		Alternative		"Alt+4"				"TOOL23"
-HotKey  0x35		Alternative		"Alt+5"				"TOOL24"
-HotKey  0x36		Alternative		"Alt+6"				"TOOL16"
-HotKey  0x37		Alternative		"Alt+7"				"TOOL19"
-HotKey  0x38		Alternative		"Alt+8"				"TOOL25"
-HotKey  0x39		Alternative		"Alt+9"				"TOOL3"
-HotKey  0x30		Alternative		"Alt+0"				"TOOL4"
-HotKey  0x157	Extended			"F2"				"TOOL7"
-HotKey  0x158	Extended			"F3"				"TOOL6"
-HotKey  0x159	Extended			"F4"				"TOOL11"
-HotKey  0x15A	Extended			"F5"				"TOOL13"
-HotKey	0x15B	Extended			"F6"				"TOOL17"
-HotKey	0x15C	Extended			"F7"				"TOOL16"
-HotKey	0x15D	Extended			"F8"				"TOOL21"
-HotKey	0x157	Adjust Extended		"Shift+F2"			"TOOL18"
-HotKey	0x158	Adjust Extended		"Shift+F3"			"TOOL5"
-HotKey	0x159	Adjust Extended		"Shift+F4"			"TOOL12"
-HotKey	0x15A	Adjust Extended		"Shift+F5"			"TOOL14"
-HotKey	0x15B	Adjust Extended		"Shift+F6"			"TOOL19"
-HotKey	0x15C	Adjust Extended		"Shift+F7"			"TOOL4"
-HotKey	0x15D	Adjust Extended		"Shift+F8"			"TOOL3"
-HotKey	0x157	Constrain Extended	"Ctrl+F2"			"TOOL22"
-HotKey  0x158	Constrain Extended	"Ctrl+F3"			"TOOL23"
-HotKey  0x15A	Constrain Extended	"Ctrl+F5"			"TOOL26"
-HotKey	0x15C	Constrain Extended	"Ctrl+F7"			"TOOL24"
-HotKey	0x15D	Constrain Extended	"Ctrl+F8"			"TOOL25"
-HotKey	0x15E	Extended			"F9"				"DisplayColourGallery"
-HotKey	0x15F	Extended			"F10"				"DisplayLayerGallery"
-HotKey	0x160	Extended			"F11"				"DisplayBitmapGallery"
-HotKey	0x161	Extended			"F12"				"DisplayLineGallery"
-HotKey	0x15E	Adjust Extended		"Shift+F9"			"DisplayFontsGallery"
-HotKey	0x15F	Adjust Extended		"Shift+F10"			"DisplayClipartGallery"
-HotKey	0x160	Adjust Extended		"Shift+F11"			"DisplayFillsGallery"
-HotKey	0x161	Adjust Extended		"Shift+F12"			"DisplayFrameGallery"
-HotKey	0x15e	Adjust Constrain Extended		"Ctrl+Shift+F9"		"DisplayNameGallery"
-HotKey	0x13d		Extended									  "CursorUp"					"NudgeUp1"
-HotKey	0x13d		Extended	Constrain						  "Ctrl+CursorUp"				"NudgeUp5"
-HotKey	0x13d		Extended	Adjust							  "Shift+CursorUp"				"NudgeUp10"
-HotKey  0x13d		Extended	Constrain Adjust 				  "Ctrl+Shift+CursorUp"			"NudgeUpFifth"
-HotKey	0x13d		Extended	Alternative						  "Alt+CursorUp"				"NudgeUpPixel1"
-HotKey	0x13d		Extended	Alternative Adjust				  "Alt+Shift+CursorUp"			"NudgeUpPixel10"
-HotKey	0x13f		Extended									  "CursorDown"					"NudgeDown1"
-HotKey	0x13f		Extended	Constrain		   				  "Ctrl+CursorDown"			    "NudgeDown5"
-HotKey	0x13f		Extended	Adjust			 				  "Shift+CursorDown"		    "NudgeDown10"
-HotKey	0x13f		Extended	Constrain Adjust				  "Ctrl+Shift+CursorDown"		"NudgeDownFifth"
-HotKey  0x13f		Extended	Alternative						  "Alt+CursorDown"				"NudgeDownPixel1"
-HotKey	0x13f		Extended	Alternative Adjust				  "Alt+Shift+CursorUp"			"NudgeDownPixel10" 		
-HotKey	0x13c		Extended									  "CursorLeft"					 "NudgeLeft1"
-HotKey	0x13c		Extended	Constrain						  "Ctrl+CursorLeft"				 "NudgeLeft5"
-HotKey	0x13c		Extended	Adjust							  "Shift+CursorLeft"			 "NudgeLeft10"
-HotKey	0x13c		Extended	Constrain Adjust 				  "Ctrl+Shift+CursorLeft"		 "NudgeLeftFifth"
-HotKey	0x13c		Extended	Alternative						  "Alt+CursorLeft"				 "NudgeLeftPixel1"
-HotKey	0x13c		Extended	Alternative Adjust				  "Alt+Shift+CursorLeft"		 "NudgeLeftPixel10" 	
+HotKey	"WXK_A"		Constrain				"Ctrl+A"		"SelectAll"
+HotKey	"WXK_A"		Adjust Constrain		"Ctrl+Shift+A"	"PasteAttributes"
+HotKey	"WXK_B"		Constrain				"Ctrl+B"		"PutToBack"
+HotKey	"WXK_B"		Adjust Constrain		"Ctrl+Shift+B"	"MoveBackwards"
+HotKey	"WXK_C"		Constrain				"Ctrl+C"		"Copy"
+HotKey	"WXK_C" 		Adjust Constrain 		"Ctrl+Shift+C"	"ConvertToBitmap"
+HotKey	"WXK_D"		Constrain				"Ctrl+D"		"Duplicate"
+HotKey	"WXK_D"		Adjust Constrain		"Ctrl+Shift+D"	"MoveBackwardsALayer"
+HotKey	"WXK_E"		Constrain				"Ctrl+E"		"ColourPicker"
+HotKey	"WXK_E"		Adjust Constrain		"Ctrl+Shift+E"	"Export"
+HotKey	"WXK_F"		Constrain				"Ctrl+F"		"BringToFront"
+HotKey	"WXK_F"		Adjust Constrain		"Ctrl+Shift+F"	"MoveForwards"
+HotKey	"WXK_G"		Constrain				"Ctrl+G"		"Group"
+HotKey	"WXK_G"		Adjust Constrain		"Ctrl+Shift+G"	"Group"
+HotKey	"WXK_W"		Constrain				"Ctrl+W"		"FileClose"
+HotKey	"WXK_I"		Adjust Constrain		"Ctrl+Shift+I"	"Import"
+HotKey	"WXK_I"		Constrain				"Ctrl+I"		"ImageSlice"
+HotKey	"WXK_J"		Adjust Constrain		"Ctrl+Shift+J"	"ZoomDrawing"
+HotKey	"WXK_K"		Constrain				"Ctrl+K"		"EditClone"
+HotKey	"WXK_L"		Constrain				"Ctrl+L"		"ViewRulers"
+HotKey	"WXK_L"		Adjust Constrain		"Ctrl+Shift+L"	"ArrangeAlignment"
+HotKey	"WXK_N"		Constrain				"Ctrl+N"		"FileNewDrawing"
+HotKey	"WXK_N"		Adjust Constrain		"Ctrl+Shift+N"	"FileNewAnimation"
+HotKey	"WXK_O"		Constrain				"Ctrl+O"		"FileOpen"
+HotKey	"WXK_O"		Adjust Constrain		"Ctrl+Shift+O"	"UtilOptions"
+HotKey	"WXK_P"		Constrain				"Ctrl+P"		"Print"
+HotKey	"WXK_P"		Adjust Constrain		"Ctrl+Shift+P"	"ZoomSpread"
+HotKey  "WXK_R"		Constrain				"Ctrl+R"		"ZoomPrev"
+HotKey  "WXK_R"		Adjust Constrain		"Ctrl+Shift+R"	"ReverseStoryPath"
+HotKey	"WXK_S"		Constrain				"Ctrl+S"		"FileSave"
+HotKey	"WXK_S"		Adjust Constrain		"Ctrl+Shift+S"	"ConvertToShapes"
+HotKey  "WXK_T"		Adjust Constrain		"Ctrl+Shift+T"	"TimeDraw"
+HotKey	"WXK_U"		Constrain				"Ctrl+U"		"Ungroup"
+HotKey	"WXK_U"		Adjust Constrain 		"Ctrl+Shift+U"	"MoveForwardsALayer"
+HotKey	"WXK_V"		Constrain				"Ctrl+V"		"Paste"
+HotKey	"WXK_V"		Adjust Constrain		"Ctrl+Shift+V"	"PasteAtSamePos"
+HotKey	"WXK_W"		Adjust Constrain		"Ctrl+Shift+W"	"WebAddressDlg"
+HotKey	"WXK_X"		Constrain				"Ctrl+X"		"Cut"
+HotKey	"WXK_Y"		Constrain				"Ctrl+Y"		"Redo"
+HotKey	"WXK_Y"		Adjust Constrain		"Ctrl+Shift+Y"	"URLImport"
+HotKey	"WXK_Z"		Constrain				"Ctrl+Z"		"Undo"
+HotKey  "WXK_Z"		Adjust Constrain		"Ctrl+Shift+Z"	"ZoomSelect"
+HotKey	"WXK_LESS"							"<"				"Undo"
+HotKey	"WXK_GREATER"							">"				"Redo"
+HotKey	"WXK_ESCAPE"							"Esc"			"SelectNone"
+HotKey	"WXK_BACK"								"Backspace"		"Cut"
+HotKey	"WXK_DELETE" 	Extended				"Del"			"Delete"
+HotKey	"WXK_DELETE" 							"Del"			"Delete"
+HotKey	"WXK_INSERT" 	Extended				"Ins"			"Paste"
+HotKey	"WXK_HASH"		CheckUnicode			"#"				"ShowGrid"
+HotKey	"WXK_RETURN"							"Return"		"EditSelection"
+HotKey	"WXK_RETURN"	Extended				"Enter"			"EditSelection"
+HotKey	"WXK_INSERT"	Extended Adjust			"Shift+Insert"	"Paste"
+HotKey	"WXK_INSERT"	Extended Constrain		"Ctrl+Insert"	"Copy"
+HotKey	"WXK_DELETE"	Adjust					"Shift+Delete"	"Cut"
+HotKey	"WXK_DELETE"	Extended Adjust			"Shift+Delete"	"Cut"
+HotKey	"WXK_NUMPAD8"							"NumPad 8"		"ViewFullScreen"
+HotKey	"WXK_F1"	Extended				"F1"			"HelpIndex"
+HotKey	"WXK_NUMPAD_MULTIPLY"	WorksInDrag				"NumPad *"		"SnapToObjects"
+HotKey	"WXK_NUMPAD_DECIMAL"	WorksInDrag Extended	"NumPad ."		"SnapToGrid"
+HotKey	"WXK_NUMPAD2"	WorksInDrag				"NumPad 2"		"SnapToGuides"
+HotKey	"WXK_NUMPAD1"  						"NumPad 1"		"ShowGuides"
+HotKey	"WXK_1"	Constrain			"Ctrl+1"			"AddShapes"
+HotKey	"WXK_2"	Constrain			"Ctrl+2"			"SubtractShapes"
+HotKey  "WXK_3"	Constrain			"Ctrl+3"			"IntersectShapes"
+HotKey  "WXK_4"	Constrain			"Ctrl+4"			"SliceShapes"
+HotKey  "WXK_8"	Adjust Constrain		"Ctrl+Shift+8"			"CXFTreeDlg"
+HotKey  "WXK_9"	Adjust Constrain		"Ctrl+Shift+9"			"ThrottleCache"
+HotKey  "WXK_0"	Adjust Constrain		"Ctrl+Shift+0"			"ClearCache"
+HotKey  "WXK_NUMPAD_ADD"	Constrain		"Ctrl+NumPad +"		"ZoomIn"
+HotKey  "WXK_NUMPAD_SUBTRACT"	Constrain		"Ctrl+NumPad -"		"ZoomOut"
+HotKey	"WXK_1"		Alternative		"Alt+1"				"TOOL13"
+HotKey	"WXK_2"		Alternative		"Alt+2"				"TOOL17"
+HotKey  "WXK_3"		Alternative		"Alt+3"				"TOOL22"
+HotKey  "WXK_4"		Alternative		"Alt+4"				"TOOL23"
+HotKey  "WXK_5"		Alternative		"Alt+5"				"TOOL24"
+HotKey  "WXK_6"		Alternative		"Alt+6"				"TOOL16"
+HotKey  "WXK_7"		Alternative		"Alt+7"				"TOOL19"
+HotKey  "WXK_8"		Alternative		"Alt+8"				"TOOL25"
+HotKey  "WXK_9"		Alternative		"Alt+9"				"TOOL3"
+HotKey  "WXK_0"		Alternative		"Alt+0"				"TOOL4"
+HotKey  "WXK_F2"	Extended			"F2"				"TOOL7"
+HotKey  "WXK_F3"	Extended			"F3"				"TOOL6"
+HotKey  "WXK_F4"	Extended			"F4"				"TOOL11"
+HotKey  "WXK_F5"	Extended			"F5"				"TOOL13"
+HotKey	"WXK_F6"	Extended			"F6"				"TOOL17"
+HotKey	"WXK_F7"	Extended			"F7"				"TOOL16"
+HotKey	"WXK_F8"	Extended			"F8"				"TOOL21"
+HotKey	"WXK_F2"	Adjust Extended		"Shift+F2"			"TOOL18"
+HotKey	"WXK_F3"	Adjust Extended		"Shift+F3"			"TOOL5"
+HotKey	"WXK_F4"	Adjust Extended		"Shift+F4"			"TOOL12"
+HotKey	"WXK_F5"	Adjust Extended		"Shift+F5"			"TOOL14"
+HotKey	"WXK_F6"	Adjust Extended		"Shift+F6"			"TOOL19"
+HotKey	"WXK_F7"	Adjust Extended		"Shift+F7"			"TOOL4"
+HotKey	"WXK_F8"	Adjust Extended		"Shift+F8"			"TOOL3"
+HotKey	"WXK_F2"	Constrain Extended	"Ctrl+F2"			"TOOL22"
+HotKey  "WXK_F3"	Constrain Extended	"Ctrl+F3"			"TOOL23"
+HotKey  "WXK_F5"	Constrain Extended	"Ctrl+F5"			"TOOL26"
+HotKey	"WXK_F7"	Constrain Extended	"Ctrl+F7"			"TOOL24"
+HotKey	"WXK_F8"	Constrain Extended	"Ctrl+F8"			"TOOL25"
+HotKey	"WXK_F9"	Extended			"F9"				"DisplayColourGallery"
+HotKey	"WXK_F10"	Extended			"F10"				"DisplayLayerGallery"
+HotKey	"WXK_F11"	Extended			"F11"				"DisplayBitmapGallery"
+HotKey	"WXK_F12"	Extended			"F12"				"DisplayLineGallery"
+HotKey	"WXK_F9"	Adjust Extended		"Shift+F9"			"DisplayFontsGallery"
+HotKey	"WXK_F10"	Adjust Extended		"Shift+F10"			"DisplayClipartGallery"
+HotKey	"WXK_F11"	Adjust Extended		"Shift+F11"			"DisplayFillsGallery"
+HotKey	"WXK_F12"	Adjust Extended		"Shift+F12"			"DisplayFrameGallery"
+HotKey	"WXK_F9"	Adjust Constrain Extended		"Ctrl+Shift+F9"		"DisplayNameGallery"
+HotKey	"WXK_UP"		Extended									  "CursorUp"					"NudgeUp1"
+HotKey	"WXK_UP"		Extended	Constrain						  "Ctrl+CursorUp"				"NudgeUp5"
+HotKey	"WXK_UP"		Extended	Adjust							  "Shift+CursorUp"				"NudgeUp10"
+HotKey  "WXK_UP"		Extended	Constrain Adjust 				  "Ctrl+Shift+CursorUp"			"NudgeUpFifth"
+HotKey	"WXK_UP"		Extended	Alternative						  "Alt+CursorUp"				"NudgeUpPixel1"
+HotKey	"WXK_UP"		Extended	Alternative Adjust				  "Alt+Shift+CursorUp"			"NudgeUpPixel10"
+HotKey	"WXK_DOWN"		Extended									  "CursorDown"					"NudgeDown1"
+HotKey	"WXK_DOWN"		Extended	Constrain		   				  "Ctrl+CursorDown"			    "NudgeDown5"
+HotKey	"WXK_DOWN"		Extended	Adjust			 				  "Shift+CursorDown"		    "NudgeDown10"
+HotKey	"WXK_DOWN"		Extended	Constrain Adjust				  "Ctrl+Shift+CursorDown"		"NudgeDownFifth"
+HotKey  "WXK_DOWN"		Extended	Alternative						  "Alt+CursorDown"				"NudgeDownPixel1"
+HotKey	"WXK_DOWN"		Extended	Alternative Adjust				  "Alt+Shift+CursorDown"			"NudgeDownPixel10" 		
+HotKey	"WXK_LEFT"		Extended									  "CursorLeft"					 "NudgeLeft1"
+HotKey	"WXK_LEFT"		Extended	Constrain						  "Ctrl+CursorLeft"				 "NudgeLeft5"
+HotKey	"WXK_LEFT"		Extended	Adjust							  "Shift+CursorLeft"			 "NudgeLeft10"
+HotKey	"WXK_LEFT"		Extended	Constrain Adjust 				  "Ctrl+Shift+CursorLeft"		 "NudgeLeftFifth"
+HotKey	"WXK_LEFT"		Extended	Alternative						  "Alt+CursorLeft"				 "NudgeLeftPixel1"
+HotKey	"WXK_LEFT"		Extended	Alternative Adjust				  "Alt+Shift+CursorLeft"		 "NudgeLeftPixel10" 	
-HotKey	0x13e	Extended									  "CursorRight"					 "NudgeRight1"
-HotKey	0x13e	Extended	Constrain						  "Ctrl+CursorRight"			 "NudgeRight5"
-HotKey	0x13e	Extended	Adjust							  "Shift+CursorRight"			 "NudgeRight10"
-HotKey	0x13e	Extended	Constrain Adjust 				  "Ctrl+Shift+CursorRight"		 "NudgeRightFifth"
-HotKey	0x13e	Extended	Alternative						  "Alt+CursorRight"				 "NudgeRightPixel1"
-HotKey  0x13e	Extended	Alternative Adjust				  "Alt+Shift+CursorRight"		 "NudgeRightPixel10"
-ToolSwitch	0x58	Alternative	"" "TOOL3"
-ToolSwitch	0x5A	Alternative	"" "TOOL4"
-ToolSwitch	0x53	Alternative	"" "TOOL7"
-ToolSwitch	0x20			"" "TOOL7"
+HotKey	"WXK_RIGHT"	Extended									  "CursorRight"					 "NudgeRight1"
+HotKey	"WXK_RIGHT"	Extended	Constrain						  "Ctrl+CursorRight"			 "NudgeRight5"
+HotKey	"WXK_RIGHT"	Extended	Adjust							  "Shift+CursorRight"			 "NudgeRight10"
+HotKey	"WXK_RIGHT"	Extended	Constrain Adjust 				  "Ctrl+Shift+CursorRight"		 "NudgeRightFifth"
+HotKey	"WXK_RIGHT"	Extended	Alternative						  "Alt+CursorRight"				 "NudgeRightPixel1"
+HotKey  "WXK_RIGHT"	Extended	Alternative Adjust				  "Alt+Shift+CursorRight"		 "NudgeRightPixel10"
+ToolSwitch	"WXK_X"	Alternative	"" "TOOL3"
+ToolSwitch	"WXK_Z"	Alternative	"" "TOOL4"
+ToolSwitch	"WXK_S"	Alternative	"" "TOOL7"
+ToolSwitch	"WXK_SPACE"			"" "TOOL7"
Index: wxOil/dlgmgr.cpp
--- wxOil/dlgmgr.cpp	(revision 1766)
+++ wxOil/dlgmgr.cpp	(working copy)
@@ -147,6 +147,9 @@
 #include "osrndrgn.h"
 //#include "dlgtypes.h" - in camtypes.h [AUTOMATICALLY REMOVED]
 #include "statline.h"
+#ifdef __WXVERS_2_8__
+#include <wx/imaglist.h>
@@ -470,7 +473,11 @@
 		// We really should take a wxPaneInfo() as an additional parameter to this function to allow this sort
 		// of stuff to be specified. Or try and retrieve it from the DialogBarOp or similar. Anyway, for now
 		// give it some default parameters
+#ifdef __WXVERS_2_8__
+		wxAuiPaneInfo paneinfo;
 		wxPaneInfo paneinfo;
 		if (!DlgOp->IsABar())
 			// default galleries to 300 deep. Specifying -1 as a width doesn't seem to work
@@ -531,7 +538,11 @@
 		wxWindow * pTLW = pDialogWnd;
 		while (pTLW->GetParent())
+#ifdef __WXVERS_2_8__
+		if (pTLW->IsKindOf(CLASSINFO(wxAuiFloatingFrame)))
 		if (pTLW->IsKindOf(CLASSINFO(wxFloatingPane)))
@@ -862,7 +873,11 @@
+#ifdef __WXVERS_2_8__
+void DialogManager::LoadPaneInfo(wxString key, wxAuiPaneInfo &paneinfo)
 void DialogManager::LoadPaneInfo(wxString key, wxPaneInfo &paneinfo)
 	if (!s_pPaneInfoHash)
@@ -901,7 +916,11 @@
+#ifdef __WXVERS_2_8__
+void DialogManager::SavePaneInfo(wxString key, wxAuiPaneInfo &paneinfo)
 void DialogManager::SavePaneInfo(wxString key, wxPaneInfo &paneinfo)
 	// work around mysterious wxGTK sizing bug
 	if ((paneinfo.IsOk()) && (paneinfo.IsFloating()))
@@ -1895,7 +1914,11 @@
 	if (pDlgOp->pEvtHandler->wxAUImanaged)
+#ifdef __WXVERS_2_8__
+		wxAuiPaneInfo paneinfo = CCamFrame::GetMainFrame()->GetFrameManager()->GetPane(pCWnd);
 		wxPaneInfo paneinfo = CCamFrame::GetMainFrame()->GetFrameManager()->GetPane(pCWnd);
 		if (paneinfo.IsOk())
 			SavePaneInfo(wxString(CamResource::GetObjectName(pCWnd->GetId())), paneinfo);
 		// Remove the bar from wxAUI
@@ -7173,7 +7196,11 @@
 		pTLW = pTLW->GetParent();
 	if (pTLW)
+#ifdef __WXVERS_2_8__
+		pTLW->SetLabel( (TCHAR *)(*Name) );
 		pTLW->SetTitle( (TCHAR *)(*Name) );
 	return true;
Index: wxOil/camframe.h
--- wxOil/camframe.h	(revision 1766)
+++ wxOil/camframe.h	(working copy)
@@ -100,7 +100,11 @@
 // Forward definitions
 class CCamCanvas;
+#ifdef __WXVERS_2_8__
+class wxAuiManager;
 class wxFrameManager;
 class CaptureWnd;
 class CCamFrame :
@@ -114,8 +118,12 @@
 	wxMenu			   *m_editMenu;
 #if defined(USE_WXAUI)
+#ifdef __WXVERS_2_8__
+	wxAuiManager *m_pFrameManager;
 	wxFrameManager *m_pFrameManager;
 	wxStatusBar*		m_pStatusBar;
 	bool				m_ChangingViewMode;
@@ -130,7 +138,11 @@
 	static CCamFrame * GetMainFrame() {return m_pMainFrame;}
+#ifdef __WXVERS_2_8__
+	static wxAuiManager * GetFrameManager() { return m_pMainFrame?m_pMainFrame->m_pFrameManager:NULL;}
 	static wxFrameManager * GetFrameManager() { return m_pMainFrame?m_pMainFrame->m_pFrameManager:NULL;}
 	wxStatusBar* GetStatusBar() const 	{ return m_pStatusBar; }
Index: wxOil/camframe.cpp
--- wxOil/camframe.cpp	(revision 1766)
+++ wxOil/camframe.cpp	(working copy)
@@ -129,14 +129,22 @@
 #if defined(USE_WXAUI)
+#ifdef __WXVERS_2_8__
+class CamFrameManager : public wxAuiManager
 class CamFrameManager : public wxFrameManager
 	DECLARE_CLASS( CamFrameManager )
 	CamFrameManager(wxFrame* frame = NULL, unsigned int /*TYPENOTE: Correct*/ flags = wxAUI_MGR_DEFAULT)
+#ifdef __WXVERS_2_8__
+		   : wxAuiManager(frame, flags)
 		   : wxFrameManager(frame, flags)
@@ -154,7 +162,11 @@
+#ifdef __WXVERS_2_8__
+	void OnPaneClose(wxAuiManagerEvent& event)
 	void OnPaneClose(wxFrameManagerEvent& event)
 		// For now just pretend cancel was clicked. This is sufficient to fool
 		// dialogmanager into closing the window it would seem
@@ -174,11 +186,20 @@
+#ifdef __WXVERS_2_8__
+IMPLEMENT_CLASS( CamFrameManager, wxAuiManager )
+BEGIN_EVENT_TABLE( CamFrameManager, wxAuiManager )
 IMPLEMENT_CLASS( CamFrameManager, wxFrameManager )
 BEGIN_EVENT_TABLE( CamFrameManager, wxFrameManager )
+#ifdef __WXVERS_2_8__
+	EVT_AUI_PANE_CLOSE(CamFrameManager::OnPaneClose)
@@ -386,7 +407,11 @@
 		pColourBar->Create(this, 12345);
+#ifdef __WXVERS_2_8__
+		wxAuiPaneInfo paneinfo;
 		wxPaneInfo paneinfo;
 		m_pFrameManager->AddPane(pColourBar, paneinfo);