Forum: wxRuby TreeCtrl event help

83df8a26a3e82a9cf4144f75236f582d?d=identicon&s=25 andres d. (andres_d)
on 2012-02-20 05:05
hey could someone hel me cus I need to get the label for the selected
item when expanded but when I use the method evt_tree_expaded or
evt_tree_expanding it gives me nil like this:

require 'wx'
include Wx
class MyFrame < Frame
  def initialize
    super(nil,
    :title => "prueba"
    )
    @my_panel = Panel.new(self)
    @my_label = StaticText.new(@my_panel,
    :label => "MY",
    :pos => [150, 25],
    :size => Wx::DEFAULT_SIZE)
    @my_textbox = TextCtrl.new(@my_panel,
    :name => "Default Textbox Value",
    :pos => [20, 20])
    @my_combo = Wx::ComboBox.new(@my_panel,
    :name => "Default Combo Text",
    :pos => [150, 25],
    :choices => ['Item 1', 'Item 2', 'Item 3'])
    @my_button = Button.new(@my_panel, -1, 'My Button Text')
    evt_button @my_button, :my_button_click
    @my_panel_sizer = BoxSizer.new(VERTICAL)
    @my_panel.set_sizer(@my_panel_sizer)
    @my_panel_sizer.add(@my_label, 0, GROW|ALL, 2)
    @my_panel_sizer.add(@my_textbox, 0, GROW|ALL, 2)
    @my_panel_sizer.add(@my_combo, 0, GROW|ALL, 2)
    @my_panel_sizer.add(@my_button, 0, GROW|ALL, 2)
    show()
  end
  def get_name(eve)
    @id = eve.get_item
    @text = @tree.get_item_text(@id)
  end
  def my_button_click(event)
    @dir_dialog = Dialog.new(nil,
    :size => [400, 400])
    @dir_view = GenericDirCtrl.new(@dir_dialog,
    :size => [390, 340],
    :dir => ENV["HOME"] )
    @dir_vsizer = VBoxSizer.new
    @dir_dialog.set_sizer(@dir_vsizer)
    @accept = Button.new(@dir_dialog,
    :label => "Accept",
    :id => ID_OK)
    @tree = @dir_view.get_tree_ctrl
    evt_tree_item_expanded @tree, :get_name
    @dir_vsizer.add(@dir_view, 0, 2)
    @dir_vsizer.add(@accept, 0, GROW|ALL, 2)
    case @dir_dialog.show_modal
    when ID_OK
      @tree_select = @tree.get_selection()
      @tree_text = @tree.get_item_text(@tree_select)
      #poner cheque por si no es carpeta mandarlo de regreso
      #llamarlo usando el metodo dir_button_click
      @my_label.label = @text
      @dir_text.clear
      @error_dialog = Dialog.new(nil,
      :title => "Error",
      :size => [500, 100])
      @error_text = StaticText.new(@error_dialog,
      :label => "You must chose a folder",
      :style => ALIGN_CENTRE)
      @ok_error = Button.new(@error_dialog,
      :id => ID_OK)
      @error_size = VBoxSizer.new
      @error_dialog.set_sizer(@error_size)
      @error_size.add(@error_text, 0, GROW|ALL, 2)
      @error_size.add(@ok_error, 0, GROW|ALL, 2)
      case @error_dialog.show_modal
      when ID_OK
      end
      end
    end
  end
end
class MyApp < App
  def on_init
    MyFrame.new
  end
end
MyApp.new.main_loop()

Is this the way its done or there is a better way please help
This topic is locked and can not be replied to.