- wxMenuItem *mitem = new wxMenuItem();
- mitem->SetId(id);
- mitem->SetText(item);
- mitem->SetHelp(helpStr);
- mitem->SetCheckable(checkable);
- const char *text = mitem->GetText();
- GtkWidget *menuItem = checkable ? gtk_check_menu_item_new_with_label(text)
- : gtk_menu_item_new_with_label(text);
-
- mitem->SetMenuItem(menuItem);
+ wxMenuItem *mitem = new wxMenuItem();
+ mitem->SetId(id);
+ mitem->SetText(item);
+ mitem->SetHelp(helpStr);
+ mitem->SetCheckable(checkable);
+ const char *text = mitem->GetText();
+
+#if (GTK_MINOR_VERSION > 0)
+ char buf[100];
+ strcpy( buf, "/" );
+ strcat( buf, text );
+
+ GtkItemFactoryEntry entry;
+ entry.path = buf;
+ entry.accelerator = (gchar*) NULL;
+ entry.callback = (GtkItemFactoryCallback) gtk_menu_clicked_callback;
+ entry.callback_action = 0;
+ if (checkable)
+ entry.item_type = "<CheckItem>";
+ else
+ entry.item_type = "<Item>";
+
+ gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */
+
+ /* in order to get the pointer to the item we need the item text _without_ underscores */
+ wxString s = "<main>/";
+ for ( const char *pc = text; *pc != '\0'; pc++ )
+ {
+ if (*pc == '_') pc++; /* skip it */
+ s << *pc;
+ }
+
+ GtkWidget *menuItem = gtk_item_factory_get_item( m_factory, s );
+
+#else
+
+ GtkWidget *menuItem = checkable ? gtk_check_menu_item_new_with_label(text)
+ : gtk_menu_item_new_with_label(text);
+
+ 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 );
+
+#endif
+
+ gtk_signal_connect( GTK_OBJECT(menuItem), "select",
+ GTK_SIGNAL_FUNC(gtk_menu_hilight_callback),
+ (gpointer)this );