- wxMenuItem *mitem = new wxMenuItem();
- mitem->SetId(id);
- mitem->SetText(text);
-
- GtkWidget *menuItem = gtk_menu_item_new_with_label(mitem->GetText());
- mitem->SetHelp(helpStr);
- mitem->SetMenuItem(menuItem);
- mitem->SetSubMenu(subMenu);
-
- gtk_menu_item_set_submenu( GTK_MENU_ITEM(menuItem), subMenu->m_menu );
- gtk_menu_append( GTK_MENU(m_menu), menuItem );
- gtk_widget_show( menuItem );
- m_items.Append( mitem );
+ wxMenuItem *mitem = new wxMenuItem();
+ mitem->SetId(id);
+ mitem->SetText(text);
+ mitem->SetHelp(helpStr);
+
+ GtkWidget *menuItem = gtk_menu_item_new_with_label(mitem->GetText());
+ mitem->SetMenuItem(menuItem);
+ mitem->SetSubMenu(subMenu);
+
+ gtk_signal_connect( GTK_OBJECT(menuItem), "select",
+ GTK_SIGNAL_FUNC(gtk_menu_hilight_callback),
+ (gpointer*)this );
+
+ gtk_signal_connect( GTK_OBJECT(menuItem), "deselect",
+ GTK_SIGNAL_FUNC(gtk_menu_nolight_callback),
+ (gpointer*)this );
+
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM(menuItem), subMenu->m_menu );
+ gtk_menu_append( GTK_MENU(m_menu), menuItem );
+ gtk_widget_show( menuItem );
+ m_items.Append( mitem );
+}
+
+void wxMenu::Append( wxMenuItem *item )
+{
+ m_items.Append( item );
+
+ GtkWidget *menuItem = (GtkWidget*) NULL;
+
+ if (item->IsSeparator())
+ menuItem = gtk_menu_item_new();
+ else if (item->IsSubMenu())
+ menuItem = gtk_menu_item_new_with_label(item->GetText());
+ else
+ menuItem = item->IsCheckable() ? gtk_check_menu_item_new_with_label(item->GetText())
+ : gtk_menu_item_new_with_label(item->GetText());
+
+ if (!item->IsSeparator())
+ {
+ gtk_signal_connect( GTK_OBJECT(menuItem), "select",
+ GTK_SIGNAL_FUNC(gtk_menu_hilight_callback),
+ (gpointer*)this );
+
+ gtk_signal_connect( GTK_OBJECT(menuItem), "deselect",
+ GTK_SIGNAL_FUNC(gtk_menu_nolight_callback),
+ (gpointer*)this );
+
+ if (!item->IsSubMenu())
+ {
+ gtk_signal_connect( GTK_OBJECT(menuItem), "activate",
+ GTK_SIGNAL_FUNC(gtk_menu_clicked_callback),
+ (gpointer*)this );
+ }
+ }
+
+ gtk_menu_append( GTK_MENU(m_menu), menuItem );
+ gtk_widget_show( menuItem );
+ item->SetMenuItem(menuItem);