// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "menu.h"
- #pragma implementation "menuitem.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
if (accel_key != GDK_VoidSymbol)
{
gtk_widget_add_accelerator (menu->m_owner,
- "activate_item",
- m_accel,//gtk_menu_ensure_uline_accel_group(GTK_MENU(m_menubar)),
- accel_key,
- GDK_MOD1_MASK,
- GTK_ACCEL_LOCKED);
+ "activate_item",
+ m_accel, //gtk_menu_ensure_uline_accel_group(GTK_MENU(m_menubar)),
+ accel_key,
+ GDK_MOD1_MASK,
+ GTK_ACCEL_LOCKED);
}
#endif
wxMenu* menu = node->GetData();
- wxString str( wxReplaceUnderscore( label ) );
+ const wxString str( wxReplaceUnderscore( label ) );
menu->SetTitle( str );
if (menu->m_owner)
{
- GtkLabel *label = GTK_LABEL( GTK_BIN(menu->m_owner)->child );
+ GtkLabel *glabel = GTK_LABEL( GTK_BIN(menu->m_owner)->child );
/* set new text */
- gtk_label_set( label, wxGTK_CONV( str ) );
+ gtk_label_set( glabel, wxGTK_CONV( str ) );
/* reparse key accel */
- (void)gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV( str ) );
- gtk_accel_label_refetch( GTK_ACCEL_LABEL(label) );
+ (void)gtk_label_parse_uline (GTK_LABEL(glabel), wxGTK_CONV( str ) );
+ gtk_accel_label_refetch( GTK_ACCEL_LABEL(glabel) );
}
}
DoSetText(str);
- if (oldLabel == label1 &&
+ if (oldLabel == label1 &&
oldhotkey == GetHotKey()) // Make sure we can change a hotkey even if the label is unaltered
return;
gtk_accelerator_parse( (const char*) oldbuf, &accel_key, &accel_mods);
if (accel_key != 0)
{
- gtk_widget_remove_accelerator( GTK_WIDGET(m_menuItem),
+ gtk_widget_remove_accelerator( GTK_WIDGET(m_menuItem),
m_parentMenu->m_accel,
accel_key,
accel_mods );
pc++;
m_hotKey = pc;
}
-
+
// wxPrintf( wxT("DoSetText(): str %s m_text %s hotkey %s\n"), str.c_str(), m_text.c_str(), m_hotKey.c_str() );
}
if ( GTK_IS_WIDGET( m_menu ))
{
// see wxMenu::Init
- gtk_widget_unref( m_menu );
+ gtk_widget_unref( m_menu );
// if the menu is inserted in another menu at this time, there was
// one more reference to it:
if ( m_owner )
else
{
GdkPixmap *gdk_pixmap = bitmap->GetPixmap();
- GdkBitmap *gdk_bitmap = bitmap->GetMask() ?
+ GdkBitmap *gdk_bitmap = bitmap->GetMask() ?
bitmap->GetMask()->GetBitmap() :
(GdkBitmap*) NULL;
image = gtk_image_new_from_pixmap( gdk_pixmap, gdk_bitmap );
}
-
+
gtk_widget_show(image);
gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(menuItem), image );
GTK_SIGNAL_FUNC(gtk_menu_nolight_callback),
(gpointer)this );
- if ( mitem->IsSubMenu() && mitem->GetKind() != wxITEM_RADIO && mitem->GetKind() != wxITEM_CHECK )
- {
+ if ( mitem->IsSubMenu() && mitem->GetKind() != wxITEM_RADIO && mitem->GetKind() != wxITEM_CHECK )
+ {
gtk_menu_item_set_submenu( GTK_MENU_ITEM(menuItem), mitem->GetSubMenu()->m_menu );
gtk_widget_show( mitem->GetSubMenu()->m_menu );
// submenu
if ( m_invokingWindow )
wxMenubarSetInvokingWindow(mitem->GetSubMenu(), m_invokingWindow);
- }
- else
- {
+ }
+ else
+ {
gtk_signal_connect( GTK_OBJECT(menuItem), "activate",
- GTK_SIGNAL_FUNC(gtk_menu_clicked_callback),
- (gpointer)this );
- }
+ GTK_SIGNAL_FUNC(gtk_menu_clicked_callback),
+ (gpointer)this );
+ }
+
#ifndef __WXGTK20__
guint accel_key = gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV( text ) );
if (accel_key != GDK_VoidSymbol)
{
gtk_widget_add_accelerator (menuItem,
- "activate_item",
- gtk_menu_ensure_uline_accel_group(GTK_MENU(m_menu)),
- accel_key,
- GDK_MOD1_MASK,
- GTK_ACCEL_LOCKED);
- }
+ "activate_item",
+ gtk_menu_ensure_uline_accel_group(GTK_MENU(m_menu)),
+ accel_key,
+ GDK_MOD1_MASK,
+ GTK_ACCEL_LOCKED);
+ }
#endif
}
{
wxMenuItem *item = node->GetData();
if (item->GetMenuItem() == menuItem)
- return item->GetId();
+ return item->GetId();
node = node->GetNext();
}
case WXK_F10:
case WXK_F11:
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);
break;
// TODO: we should use gdk_keyval_name() (a.k.a.
// XKeysymToString) here as well as hardcoding the keysym
// 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" );
break;
case WXK_DELETE:
case WXK_RETURN:
hotkey << wxT("Return" );
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
// return, we should process them here