Hi all and thanks to everyone working on this project =o) I have a problem, and I suspect it has its origins in WxRuby... In my program I use a GenericDirCtrl and handle its corresponding TreeCtrl item selection event with evt_tree_sel_changed. In the method handling this event, I try to get at the data of the selected item, but I run into this: ./my_xrcise_frames.rb:43: [BUG] Bus Error ruby 1.8.6 (2008-03-03) [universal-darwin9.0] Abort trap The code for the event handling method is as follows, where gdc_browse_tree is the GenericDirCtrl instance: def on_browse_tree_sel_changed(tree_event) item_id = tree_event.get_item raise ''item_id was zero'' if item_id == 0 tc = gdc_browse_tree.get_tree_ctrl item_data = tc.get_item_data(item_id) raise ''item_data was nil'' if item_data == nil end The line number referenced in the crash bus error (43) is the "item_data == nil" comparison. The exception doesn''t get raised - the application just crashes. I tried to reproduce it by catching the same event by modifying the treectrl.rb sample, so I could send you code you were already very familiar with, but the error didn''t appear then. It seems to require a GenericDirCtrl. I''m running: OSX 10.5 ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0] wx_sugar (0.1.20) wxruby (1.9.9) Any help is greatly appreciated! If I have omitted any important information from this mail, tell me and I will do my best to provide it. I have used wxruby with great results on linux, and I hope to be doing the same on OSX in the future. Best regards, Mathias
Mathias Bruce wrote:> In my program I use a GenericDirCtrl and handle its corresponding > TreeCtrl item selection event with evt_tree_sel_changed. > In the method handling this event, I try to get at the data of the > selected item, but I run into this: > > ./my_xrcise_frames.rb:43: [BUG] Bus Error > ruby 1.8.6 (2008-03-03) [universal-darwin9.0] > > Abort trap > > The code for the event handling method is as follows, where > gdc_browse_tree is the GenericDirCtrl instance: > > def on_browse_tree_sel_changed(tree_event) > item_id = tree_event.get_item > raise ''item_id was zero'' if item_id == 0 > tc = gdc_browse_tree.get_tree_ctrl > item_data = tc.get_item_data(item_id) > raise ''item_data was nil'' if item_data == nil > end >Thanks for reporting this. I think it''s a bug. In a normal Wx::TreeCtrl get_item_data works fine, but the item data held by a TreeCtrl associated with a GenericDirCtrl isn''t a valid ruby object. We can fix this, and it would be helpful to understand what you were trying to do here. Could you say what you expected to get from calling get_item_data here please? The GenericDirCtrl already has methods (eg get_path, get_file_path) that will return the value of the currently selected directory. BTW, it''s very much appreciated if you can demonstrate a problem in a minimal, self-contained, runnable sample, rather than just a isolated snippet. That saves those looking into it having to guess how to reproduce the context of the problem. thanks alex
On Tue, Nov 11, 2008 at 1:36 AM, Alex Fenton <alex at pressure.to> wrote:> Mathias Bruce wrote: >> >> In my program I use a GenericDirCtrl and handle its corresponding >> TreeCtrl item selection event with evt_tree_sel_changed. >> In the method handling this event, I try to get at the data of the >> selected item, but I run into this: >> >> ./my_xrcise_frames.rb:43: [BUG] Bus Error >> ruby 1.8.6 (2008-03-03) [universal-darwin9.0] >> >> Abort trap >> >> The code for the event handling method is as follows, where >> gdc_browse_tree is the GenericDirCtrl instance: >> >> def on_browse_tree_sel_changed(tree_event) >> item_id = tree_event.get_item >> raise ''item_id was zero'' if item_id == 0 >> tc = gdc_browse_tree.get_tree_ctrl >> item_data = tc.get_item_data(item_id) >> raise ''item_data was nil'' if item_data == nil >> end >> > > Thanks for reporting this. I think it''s a bug. In a normal Wx::TreeCtrl > get_item_data works fine, but the item data held by a TreeCtrl associated > with a GenericDirCtrl isn''t a valid ruby object. We can fix this, and it > would be helpful to understand what you were trying to do here. > > Could you say what you expected to get from calling get_item_data here > please? The GenericDirCtrl already has methods (eg get_path, get_file_path) > that will return the value of the currently selected directory. > > BTW, it''s very much appreciated if you can demonstrate a problem in a > minimal, self-contained, runnable sample, rather than just a isolated > snippet. That saves those looking into it having to guess how to reproduce > the context of the problem. > > thanks > alex > _______________________________________________ > wxruby-users mailing list > wxruby-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/wxruby-users >Thanks for the quick reply! I apparently misread the docs gravely, and got the impression that I had to pick the selected path from the item itself. GenericDirCtrl.get_path does exactly what I needed... Sorry for wasting your time =o) I read on the website about you preferring self-contained error reproduction code, and I completely understand that. The only reason I didn''t do that was because I''m using XRC and xrcise, so (I think) it would have been 2-3 separate files, in which case it would be easier to file a bug in the tracker and put them there. I just thought I''d find out if the problem was wxruby-related or not, first. If you still want a little package of code reproducing the error, then I''ll absolutely cook it up, but you don''t need to extend the bindings for my sake anymore, since as you correctly suspected I didn''t really need the item data - and maybe no one else will either... =o) Thanks again, Mathias
Mathias Bruce wrote:> On Tue, Nov 11, 2008 at 1:36 AM, Alex Fenton <alex at pressure.to> wrote: > >> Thanks for reporting this. I think it''s a bug. In a normal Wx::TreeCtrl >> get_item_data works fine, but the item data held by a TreeCtrl associated >> with a GenericDirCtrl isn''t a valid ruby object. We can fix this, and it >> would be helpful to understand what you were trying to do here. >> > Thanks for the quick reply! I apparently misread the docs gravely, and > got the impression that I had to pick the selected path from the item > itself. GenericDirCtrl.get_path does exactly what I needed... Sorry > for wasting your time =o) >NP, you haven''t wasted my time at all. It helps the dev team understand where the docs could be clearer. As I said, thanks for reporting the issue; we can look into making wxRuby give more helpful error messages than crashing with a "bus error".> I read on the website about you preferring self-contained error > reproduction code, and I completely understand that. The only reason I > didn''t do that was because I''m using XRC and xrcise, so (I think) it > would have been 2-3 separate files, in which case it would be easier > to file a bug in the tracker and put them there. I just thought I''d > find out if the problem was wxruby-related or not, first. >Simply from experience, taking a problem down to a minimal example is often a good way to figure out where the error is coming from. cheers alex