Hi, I was trying to delete menu items in a submenu, the code worked fine on Windows, but failed on Mac. I modified the sample bigdemo/wxMenu.rbw, def menu_101(event) @log.write_text("Welcome to Mercury") # New here, change submenu to @submenu in initialize() @submenu.get_menu_items.each do |menu_item| @submenu.delete(menu_item) end end Error: wxMenu.rbw:140:in `delete'': Wrong arguments for overloaded method ''wxMenu.Delete''. (ArgumentError) Possible C/C++ prototypes are: void wxMenu.Delete(int id) void wxMenu.Delete(wxMenuItem *item) wxRuby 1.9.9 Platform: Mac OS X Thanks, Zhimin -- Posted via http://www.ruby-forum.com/.
Alex Fenton
2009-Jan-23 12:27 UTC
[wxruby-users] Menu.delete returned "wrong # of argument" on Mac
Hi Zhimin Zhimin Zhan wrote:> I was trying to delete menu items in a submenu, the code worked fine on > Windows, but failed on Mac. > > I modified the sample bigdemo/wxMenu.rbw, > > def menu_101(event) > @log.write_text("Welcome to Mercury") > # New here, change submenu to @submenu in initialize() > @submenu.get_menu_items.each do |menu_item| > @submenu.delete(menu_item) > end > end > > Error: > wxMenu.rbw:140:in `delete'': Wrong arguments for overloaded method > ''wxMenu.Delete''. (ArgumentError) > Possible C/C++ prototypes are: > void wxMenu.Delete(int id) > void wxMenu.Delete(wxMenuItem *item) >Thanks for the report and sample code. I tried this out with 1.9.9 and I get an error (although a slightly different one). I tried it with SVN HEAD (with ruby 1.8.6 and 1.9.1) and it works correctly, no error is raised. I believe it may have been fixed by a change I applied following this previous thread, so that MenuItems are correctly preserved from GC: http://rubyforge.org/pipermail/wxruby-users/2009-January/004400.html So the problem should already be resolved by the next release. thanks again alex