Add conversion to and from menu hotkeys and

their GTK pendants.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2005-05-21 16:05:29 +00:00
parent 21c358b270
commit bbcd40851c
3 changed files with 442 additions and 16 deletions

View File

@@ -199,6 +199,104 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label)
keyCode = WXK_TAB; keyCode = WXK_TAB;
else if ( current == wxT("ESC") || current == wxT("ESCAPE") ) else if ( current == wxT("ESC") || current == wxT("ESCAPE") )
keyCode = WXK_ESCAPE; keyCode = WXK_ESCAPE;
else if ( current == wxT("CANCEL") )
keyCode = WXK_CANCEL;
else if ( current == wxT("CLEAR") )
keyCode = WXK_CLEAR;
else if ( current == wxT("MENU") )
keyCode = WXK_MENU;
else if ( current == wxT("PAUSE") )
keyCode = WXK_PAUSE;
else if ( current == wxT("CAPITAL") )
keyCode = WXK_CAPITAL;
else if ( current == wxT("SELECT") )
keyCode = WXK_SELECT;
else if ( current == wxT("PRINT") )
keyCode = WXK_PRINT;
else if ( current == wxT("EXECUTE") )
keyCode = WXK_EXECUTE;
else if ( current == wxT("SNAPSHOT") )
keyCode = WXK_SNAPSHOT;
else if ( current == wxT("HELP") )
keyCode = WXK_HELP;
else if ( current == wxT("HELP") )
keyCode = WXK_HELP;
else if ( current == wxT("ADD") )
keyCode = WXK_ADD;
else if ( current == wxT("SEPARATOR") )
keyCode = WXK_SEPARATOR;
else if ( current == wxT("SUBTRACT") )
keyCode = WXK_SUBTRACT;
else if ( current == wxT("DECIMAL") )
keyCode = WXK_DECIMAL;
else if ( current == wxT("DIVIDE") )
keyCode = WXK_DIVIDE;
else if ( current == wxT("NUM_LOCK") )
keyCode = WXK_NUMLOCK;
else if ( current == wxT("SCROLL_LOCK") )
keyCode = WXK_SCROLL;
else if ( current == wxT("PAGEUP") )
keyCode = WXK_PAGEUP;
else if ( current == wxT("PAGEDOWN") )
keyCode = WXK_PAGEDOWN;
else if ( current == wxT("KP_SPACE") )
keyCode = WXK_NUMPAD_SPACE;
else if ( current == wxT("KP_TAB") )
keyCode = WXK_NUMPAD_TAB;
else if ( current == wxT("KP_ENTER") )
keyCode = WXK_NUMPAD_ENTER;
else if ( current == wxT("KP_HOME") )
keyCode = WXK_NUMPAD_HOME;
else if ( current == wxT("KP_LEFT") )
keyCode = WXK_NUMPAD_LEFT;
else if ( current == wxT("KP_UP") )
keyCode = WXK_NUMPAD_UP;
else if ( current == wxT("KP_RIGHT") )
keyCode = WXK_NUMPAD_RIGHT;
else if ( current == wxT("KP_DOWN") )
keyCode = WXK_NUMPAD_DOWN;
else if ( current == wxT("KP_PRIOR") )
keyCode = WXK_NUMPAD_PRIOR;
else if ( current == wxT("KP_PAGEUP") )
keyCode = WXK_NUMPAD_PAGEUP;
else if ( current == wxT("KP_NEXT;") )
keyCode = WXK_NUMPAD_NEXT;
else if ( current == wxT("KP_PAGEDOWN") )
keyCode = WXK_NUMPAD_PAGEDOWN;
else if ( current == wxT("KP_END") )
keyCode = WXK_NUMPAD_END;
else if ( current == wxT("KP_BEGIN") )
keyCode = WXK_NUMPAD_BEGIN;
else if ( current == wxT("KP_INSERT") )
keyCode = WXK_NUMPAD_INSERT;
else if ( current == wxT("KP_DELETE") )
keyCode = WXK_NUMPAD_DELETE;
else if ( current == wxT("KP_EQUAL") )
keyCode = WXK_NUMPAD_EQUAL;
else if ( current == wxT("KP_MULTIPLY") )
keyCode = WXK_NUMPAD_MULTIPLY;
else if ( current == wxT("KP_ADD") )
keyCode = WXK_NUMPAD_ADD;
else if ( current == wxT("KP_SEPARATOR") )
keyCode = WXK_NUMPAD_SEPARATOR;
else if ( current == wxT("KP_SUBTRACT") )
keyCode = WXK_NUMPAD_SUBTRACT;
else if ( current == wxT("KP_DECIMAL") )
keyCode = WXK_NUMPAD_DECIMAL;
else if ( current == wxT("KP_DIVIDE") )
keyCode = WXK_NUMPAD_DIVIDE;
else if ( current == wxT("WINDOWS_LEFT") )
keyCode = WXK_WINDOWS_LEFT;
else if ( current == wxT("WINDOWS_RIGHT") )
keyCode = WXK_WINDOWS_RIGHT;
else if ( current == wxT("WINDOWS_MENU") )
keyCode = WXK_WINDOWS_MENU;
else if ( current == wxT("COMMAND") )
keyCode = WXK_COMMAND;
else if ( current.Left(3) == wxT("KP_") && wxIsdigit(current[3U]) ) {
keyCode = WXK_NUMPAD0 + wxAtoi(current.c_str() + 3); }
else if ( current.Left(7) == wxT("SPECIAL") && wxIsdigit(current[7U]) ) {
keyCode = WXK_SPECIAL1 + wxAtoi(current.c_str() + 7) - 1; }
else else
{ {
wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."), wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."),

View File

@@ -1316,18 +1316,24 @@ static wxString GetGtkHotKey( const wxMenuItem& item )
case WXK_F10: case WXK_F10:
case WXK_F11: case WXK_F11:
case WXK_F12: case WXK_F12:
case WXK_F13:
case WXK_F14:
case WXK_F15:
case WXK_F16:
case WXK_F17:
case WXK_F18:
case WXK_F19:
case WXK_F20:
case WXK_F21:
case WXK_F22:
case WXK_F23:
case WXK_F24:
hotkey += wxString::Format(wxT("F%d"), code - WXK_F1 + 1); hotkey += wxString::Format(wxT("F%d"), code - WXK_F1 + 1);
break; break;
// TODO: we should use gdk_keyval_name() (a.k.a. // TODO: we should use gdk_keyval_name() (a.k.a.
// XKeysymToString) here as well as hardcoding the keysym // XKeysymToString) here as well as hardcoding the keysym
// names this might be not portable // names this might be not portable
case WXK_NUMPAD_INSERT:
hotkey << wxT("KP_Insert" );
break;
case WXK_NUMPAD_DELETE:
hotkey << wxT("KP_Delete" );
break;
case WXK_INSERT: case WXK_INSERT:
hotkey << wxT("Insert" ); hotkey << wxT("Insert" );
break; break;
@@ -1363,7 +1369,165 @@ static wxString GetGtkHotKey( const wxMenuItem& item )
case WXK_RETURN: case WXK_RETURN:
hotkey << wxT("Return" ); hotkey << wxT("Return" );
break; break;
case WXK_BACK:
hotkey << wxT("BackSpace" );
break;
case WXK_TAB:
hotkey << wxT("Tab" );
break;
case WXK_ESCAPE:
hotkey << wxT("Esc" );
break;
case WXK_SPACE:
hotkey << wxT("space" );
break;
case WXK_MULTIPLY:
hotkey << wxT("Multiply" );
break;
case WXK_ADD:
hotkey << wxT("Add" );
break;
case WXK_SEPARATOR:
hotkey << wxT("Separator" );
break;
case WXK_SUBTRACT:
hotkey << wxT("Subtract" );
break;
case WXK_DECIMAL:
hotkey << wxT("Decimal" );
break;
case WXK_DIVIDE:
hotkey << wxT("Divide" );
break;
case WXK_CANCEL:
hotkey << wxT("Cancel" );
break;
case WXK_CLEAR:
hotkey << wxT("Clear" );
break;
case WXK_MENU:
hotkey << wxT("Menu" );
break;
case WXK_PAUSE:
hotkey << wxT("Pause" );
break;
case WXK_CAPITAL:
hotkey << wxT("Capital" );
break;
case WXK_SELECT:
hotkey << wxT("Select" );
break;
case WXK_PRINT:
hotkey << wxT("Print" );
break;
case WXK_EXECUTE:
hotkey << wxT("Execute" );
break;
case WXK_SNAPSHOT:
hotkey << wxT("Snapshot" );
break;
case WXK_HELP:
hotkey << wxT("Help" );
break;
case WXK_NUMLOCK:
hotkey << wxT("Num_Lock" );
break;
case WXK_SCROLL:
hotkey << wxT("Scroll_Lock" );
break;
case WXK_NUMPAD_INSERT:
hotkey << wxT("KP_Insert" );
break;
case WXK_NUMPAD_DELETE:
hotkey << wxT("KP_Delete" );
break;
case WXK_NUMPAD_SPACE:
hotkey << wxT("KP_Space" );
break;
case WXK_NUMPAD_TAB:
hotkey << wxT("KP_Tab" );
break;
case WXK_NUMPAD_ENTER:
hotkey << wxT("KP_Enter" );
break;
case WXK_NUMPAD_F1: case WXK_NUMPAD_F2: case WXK_NUMPAD_F3:
case WXK_NUMPAD_F4:
hotkey += wxString::Format(wxT("KP_F%d"), code - WXK_NUMPAD_F1 + 1);
break;
case WXK_NUMPAD_HOME:
hotkey << wxT("KP_Home" );
break;
case WXK_NUMPAD_LEFT:
hotkey << wxT("KP_Left" );
break;
case WXK_NUMPAD_UP:
hotkey << wxT("KP_Up" );
break;
case WXK_NUMPAD_RIGHT:
hotkey << wxT("KP_Right" );
break;
case WXK_NUMPAD_DOWN:
hotkey << wxT("KP_Down" );
break;
case WXK_NUMPAD_PRIOR: case WXK_NUMPAD_PAGEUP:
hotkey << wxT("KP_Prior" );
break;
case WXK_NUMPAD_NEXT: case WXK_NUMPAD_PAGEDOWN:
hotkey << wxT("KP_Next" );
break;
case WXK_NUMPAD_END:
hotkey << wxT("KP_End" );
break;
case WXK_NUMPAD_BEGIN:
hotkey << wxT("KP_Begin" );
break;
case WXK_NUMPAD_EQUAL:
hotkey << wxT("KP_Equal" );
break;
case WXK_NUMPAD_MULTIPLY:
hotkey << wxT("KP_Multiply" );
break;
case WXK_NUMPAD_ADD:
hotkey << wxT("KP_Add" );
break;
case WXK_NUMPAD_SEPARATOR:
hotkey << wxT("KP_Separator" );
break;
case WXK_NUMPAD_SUBTRACT:
hotkey << wxT("KP_Subtract" );
break;
case WXK_NUMPAD_DECIMAL:
hotkey << wxT("KP_Decimal" );
break;
case WXK_NUMPAD_DIVIDE:
hotkey << wxT("KP_Divide" );
break;
case WXK_NUMPAD0: case WXK_NUMPAD1: case WXK_NUMPAD2:
case WXK_NUMPAD3: case WXK_NUMPAD4: case WXK_NUMPAD5:
case WXK_NUMPAD6: case WXK_NUMPAD7: case WXK_NUMPAD8: case WXK_NUMPAD9:
hotkey += wxString::Format(wxT("KP_%d"), code - WXK_NUMPAD0);
break;
case WXK_WINDOWS_LEFT:
hotkey << wxT("Super_L" );
break;
case WXK_WINDOWS_RIGHT:
hotkey << wxT("Super_R" );
break;
case WXK_WINDOWS_MENU:
hotkey << wxT("Menu" );
break;
case WXK_COMMAND:
hotkey << wxT("Command" );
break;
/* These probably wouldn't work as there is no SpecialX in gdk/keynames.txt
case WXK_SPECIAL1: case WXK_SPECIAL2: case WXK_SPECIAL3: case WXK_SPECIAL4:
case WXK_SPECIAL5: case WXK_SPECIAL6: case WXK_SPECIAL7: case WXK_SPECIAL8:
case WXK_SPECIAL9: case WXK_SPECIAL10: case WXK_SPECIAL11: case WXK_SPECIAL12:
case WXK_SPECIAL13: case WXK_SPECIAL14: case WXK_SPECIAL15: case WXK_SPECIAL16:
case WXK_SPECIAL17: case WXK_SPECIAL18: case WXK_SPECIAL19: case WXK_SPECIAL20:
hotkey += wxString::Format(wxT("Special%d"), code - WXK_SPECIAL1 + 1);
break;
*/
// if there are any other keys wxGetAccelFromString() may // if there are any other keys wxGetAccelFromString() may
// return, we should process them here // return, we should process them here

View File

@@ -1316,18 +1316,24 @@ static wxString GetGtkHotKey( const wxMenuItem& item )
case WXK_F10: case WXK_F10:
case WXK_F11: case WXK_F11:
case WXK_F12: case WXK_F12:
case WXK_F13:
case WXK_F14:
case WXK_F15:
case WXK_F16:
case WXK_F17:
case WXK_F18:
case WXK_F19:
case WXK_F20:
case WXK_F21:
case WXK_F22:
case WXK_F23:
case WXK_F24:
hotkey += wxString::Format(wxT("F%d"), code - WXK_F1 + 1); hotkey += wxString::Format(wxT("F%d"), code - WXK_F1 + 1);
break; break;
// TODO: we should use gdk_keyval_name() (a.k.a. // TODO: we should use gdk_keyval_name() (a.k.a.
// XKeysymToString) here as well as hardcoding the keysym // XKeysymToString) here as well as hardcoding the keysym
// names this might be not portable // names this might be not portable
case WXK_NUMPAD_INSERT:
hotkey << wxT("KP_Insert" );
break;
case WXK_NUMPAD_DELETE:
hotkey << wxT("KP_Delete" );
break;
case WXK_INSERT: case WXK_INSERT:
hotkey << wxT("Insert" ); hotkey << wxT("Insert" );
break; break;
@@ -1363,7 +1369,165 @@ static wxString GetGtkHotKey( const wxMenuItem& item )
case WXK_RETURN: case WXK_RETURN:
hotkey << wxT("Return" ); hotkey << wxT("Return" );
break; break;
case WXK_BACK:
hotkey << wxT("BackSpace" );
break;
case WXK_TAB:
hotkey << wxT("Tab" );
break;
case WXK_ESCAPE:
hotkey << wxT("Esc" );
break;
case WXK_SPACE:
hotkey << wxT("space" );
break;
case WXK_MULTIPLY:
hotkey << wxT("Multiply" );
break;
case WXK_ADD:
hotkey << wxT("Add" );
break;
case WXK_SEPARATOR:
hotkey << wxT("Separator" );
break;
case WXK_SUBTRACT:
hotkey << wxT("Subtract" );
break;
case WXK_DECIMAL:
hotkey << wxT("Decimal" );
break;
case WXK_DIVIDE:
hotkey << wxT("Divide" );
break;
case WXK_CANCEL:
hotkey << wxT("Cancel" );
break;
case WXK_CLEAR:
hotkey << wxT("Clear" );
break;
case WXK_MENU:
hotkey << wxT("Menu" );
break;
case WXK_PAUSE:
hotkey << wxT("Pause" );
break;
case WXK_CAPITAL:
hotkey << wxT("Capital" );
break;
case WXK_SELECT:
hotkey << wxT("Select" );
break;
case WXK_PRINT:
hotkey << wxT("Print" );
break;
case WXK_EXECUTE:
hotkey << wxT("Execute" );
break;
case WXK_SNAPSHOT:
hotkey << wxT("Snapshot" );
break;
case WXK_HELP:
hotkey << wxT("Help" );
break;
case WXK_NUMLOCK:
hotkey << wxT("Num_Lock" );
break;
case WXK_SCROLL:
hotkey << wxT("Scroll_Lock" );
break;
case WXK_NUMPAD_INSERT:
hotkey << wxT("KP_Insert" );
break;
case WXK_NUMPAD_DELETE:
hotkey << wxT("KP_Delete" );
break;
case WXK_NUMPAD_SPACE:
hotkey << wxT("KP_Space" );
break;
case WXK_NUMPAD_TAB:
hotkey << wxT("KP_Tab" );
break;
case WXK_NUMPAD_ENTER:
hotkey << wxT("KP_Enter" );
break;
case WXK_NUMPAD_F1: case WXK_NUMPAD_F2: case WXK_NUMPAD_F3:
case WXK_NUMPAD_F4:
hotkey += wxString::Format(wxT("KP_F%d"), code - WXK_NUMPAD_F1 + 1);
break;
case WXK_NUMPAD_HOME:
hotkey << wxT("KP_Home" );
break;
case WXK_NUMPAD_LEFT:
hotkey << wxT("KP_Left" );
break;
case WXK_NUMPAD_UP:
hotkey << wxT("KP_Up" );
break;
case WXK_NUMPAD_RIGHT:
hotkey << wxT("KP_Right" );
break;
case WXK_NUMPAD_DOWN:
hotkey << wxT("KP_Down" );
break;
case WXK_NUMPAD_PRIOR: case WXK_NUMPAD_PAGEUP:
hotkey << wxT("KP_Prior" );
break;
case WXK_NUMPAD_NEXT: case WXK_NUMPAD_PAGEDOWN:
hotkey << wxT("KP_Next" );
break;
case WXK_NUMPAD_END:
hotkey << wxT("KP_End" );
break;
case WXK_NUMPAD_BEGIN:
hotkey << wxT("KP_Begin" );
break;
case WXK_NUMPAD_EQUAL:
hotkey << wxT("KP_Equal" );
break;
case WXK_NUMPAD_MULTIPLY:
hotkey << wxT("KP_Multiply" );
break;
case WXK_NUMPAD_ADD:
hotkey << wxT("KP_Add" );
break;
case WXK_NUMPAD_SEPARATOR:
hotkey << wxT("KP_Separator" );
break;
case WXK_NUMPAD_SUBTRACT:
hotkey << wxT("KP_Subtract" );
break;
case WXK_NUMPAD_DECIMAL:
hotkey << wxT("KP_Decimal" );
break;
case WXK_NUMPAD_DIVIDE:
hotkey << wxT("KP_Divide" );
break;
case WXK_NUMPAD0: case WXK_NUMPAD1: case WXK_NUMPAD2:
case WXK_NUMPAD3: case WXK_NUMPAD4: case WXK_NUMPAD5:
case WXK_NUMPAD6: case WXK_NUMPAD7: case WXK_NUMPAD8: case WXK_NUMPAD9:
hotkey += wxString::Format(wxT("KP_%d"), code - WXK_NUMPAD0);
break;
case WXK_WINDOWS_LEFT:
hotkey << wxT("Super_L" );
break;
case WXK_WINDOWS_RIGHT:
hotkey << wxT("Super_R" );
break;
case WXK_WINDOWS_MENU:
hotkey << wxT("Menu" );
break;
case WXK_COMMAND:
hotkey << wxT("Command" );
break;
/* These probably wouldn't work as there is no SpecialX in gdk/keynames.txt
case WXK_SPECIAL1: case WXK_SPECIAL2: case WXK_SPECIAL3: case WXK_SPECIAL4:
case WXK_SPECIAL5: case WXK_SPECIAL6: case WXK_SPECIAL7: case WXK_SPECIAL8:
case WXK_SPECIAL9: case WXK_SPECIAL10: case WXK_SPECIAL11: case WXK_SPECIAL12:
case WXK_SPECIAL13: case WXK_SPECIAL14: case WXK_SPECIAL15: case WXK_SPECIAL16:
case WXK_SPECIAL17: case WXK_SPECIAL18: case WXK_SPECIAL19: case WXK_SPECIAL20:
hotkey += wxString::Format(wxT("Special%d"), code - WXK_SPECIAL1 + 1);
break;
*/
// if there are any other keys wxGetAccelFromString() may // if there are any other keys wxGetAccelFromString() may
// return, we should process them here // return, we should process them here