# File gtk/sample/gtk-demo/stock_browser.rb, line 27
    def initialize
      super('Stock Icons and Items')
      set_default_size(-1, 500)

      self.border_width = 8

      hbox = Gtk::HBox.new(false, 8)
      add(hbox)

      sw = Gtk::ScrolledWindow.new
      sw.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC)
      hbox.pack_start(sw, false, false, 0)

      model = create_model

      treeview = Gtk::TreeView.new(model)
      sw.add(treeview)

      column = Gtk::TreeViewColumn.new
      column.title = 'Const'

      cell_renderer = Gtk::CellRendererPixbuf.new
      column.pack_start(cell_renderer, false)
      column.set_attributes(cell_renderer, "stock_id" => 1)

      cell_renderer = Gtk::CellRendererText.new
      column.pack_start(cell_renderer, true)
      column.set_cell_data_func(cell_renderer) do |column, cell, model, iter|
        cell.text = iter[0].const
      end

      treeview.append_column(column)

      cell_renderer = Gtk::CellRendererText.new
      treeview.insert_column(-1, 'Label', cell_renderer) do |col, cell, model, iter|
        info = iter[0]
        cell.text = info.item.label if info
      end

      cell_renderer = Gtk::CellRendererText.new
      treeview.insert_column(-1, 'Accel', cell_renderer) do |col, cell, model, iter|
        info = iter[0]
        cell.text = info.accel_str if info
      end

      cell_renderer = Gtk::CellRendererText.new
      treeview.insert_column(-1, 'ID', cell_renderer) do |col, cell, model, iter|
        info = iter[0]
        cell.text = info.id if info
      end

      align = Gtk::Alignment.new(0.5, 0.0, 0.0, 0.0)
      hbox.pack_end(align, false, false, 0)

      frame = Gtk::Frame.new('Selected Item')
      align.add(frame)

      vbox = Gtk::VBox.new(false, 8)
      vbox.border_width = 4
      frame.add(vbox)

      display = ItemDisplay.new
      class << treeview
        @display = nil
        attr_accessor :display
      end
      treeview.display = display

      display.type_label = Gtk::Label.new
      display.const_label = Gtk::Label.new
      display.id_label = Gtk::Label.new
      display.label_accel_label = Gtk::Label.new
      display.icon_image = Gtk::Image.new # empty image

      vbox.pack_start(display.type_label, false, false, 0)

      vbox.pack_start(display.icon_image, false, false, 0)

      vbox.pack_start(display.label_accel_label, false, false, 0)
      vbox.pack_start(display.const_label, false, false, 0)
      vbox.pack_start(display.id_label, false, false, 0)

      selection = treeview.selection
      selection.mode = Gtk::SELECTION_SINGLE

      selection.signal_connect('changed') do |s|
        selection_changed(s)
      end
    end