class ComboboxDemo

Constants

ICON_NAME_COL
TEXT_COL

Public Class Methods

new(main_window) click to toggle source
# File gtk3/sample/gtk-demo/combobox.rb, line 21
def initialize(main_window)
  @window = Gtk::Window.new(:toplevel)
  @window.screen = main_window.screen
  @window.title = "Combo Boxes"
  vbox = Gtk::Box.new(:vertical, 2)
  vbox.margin = 10
  @window.add(vbox)

  # A combobox demonstrating cell renderers, separators and
  # insensitive rows.

  frame = Gtk::Frame.new("Items with icons")
  vbox.pack_start(frame, :expand => false, :fill => false, :padding => 0)

  box = Gtk::Box.new(:vertical, 0)
  box.margin = 5
  frame.add(box)

  store = create_icon_store
  combo = Gtk::ComboBox.new(:model => store)
  box.add(combo)

  renderer = Gtk::CellRendererPixbuf.new
  combo.pack_start(renderer, false)
  combo.set_attributes(renderer, "icon-name" => ICON_NAME_COL)

  combo.set_cell_data_func(renderer) do |_layout, cell_renderer, model, iter|
    set_sensitive(cell_renderer, model, iter)
  end

  renderer = Gtk::CellRendererText.new
  combo.pack_start(renderer, true)
  combo.set_attributes(renderer, "text" => TEXT_COL)

  combo.set_cell_data_func(renderer) do |_layout, cell_renderer, model, iter|
    set_sensitive(cell_renderer, model, iter)
  end

  combo.set_row_separator_func do |model, iter|
    separator?(model, iter)
  end

  combo.active = 0

  # A combobox demonstrating trees
  frame = Gtk::Frame.new("Where are we?")
  vbox.pack_start(frame, :expand => false, :fill => false, :padding => 0)

  box = Gtk::Box.new(:vertical, 0)
  box.margin = 5
  frame.add(box)

  store = create_capital_store
  combo = Gtk::ComboBox.new(:model => store)
  box.add(combo)

  renderer = Gtk::CellRendererText.new
  combo.pack_start(renderer, true)
  combo.set_attributes(renderer, "text" => 0)
  combo.set_cell_data_func(renderer) do |_layout, cell_renderer, model, iter|
    capital_sensitive?(cell_renderer, model, iter)
  end

  path = Gtk::TreePath.new([0, 8, -1])
  iter = store.get_iter(path)
  combo.set_active_iter(iter)

  # A GtkComboBoxEntry with validation
  frame = Gtk::Frame.new("Editable")
  vbox.pack_start(frame, :expand => true, :fill => true, :padding => 0)
  box = Gtk::Box.new(:vertical, 0)
  box.margin = 5
  frame.add(box)

  combo = Gtk::ComboBoxText.new(:entry => true)
  fill_combo_entry(combo)
  box.add(combo)

  entry = MaskEntry.new
  entry.mask = "^([0-9]*|One|Two|2\302\275|Three)$"

  combo.remove_child(combo.child)
  combo.add_child(entry)

  # A combobox with string IDs
  frame = Gtk::Frame.new("String IDs")
  vbox.pack_start(frame, :expand => false, :fill => false, :padding => 0)

  box = Gtk::Box.new(:vertical, 0)
  box.margin = 5
  frame.add(box)

  combo = Gtk::ComboBoxText.new
  combo.append("never", "Not visible")
  combo.append("when-active", "Visible")
  combo.append("always", "Always visible")
  box.add(combo)

  entry = Gtk::Entry.new
  combo.bind_property("active-id", entry, "text", :bidirectional)
  box.add(entry)
end

Public Instance Methods

run() click to toggle source
# File gtk3/sample/gtk-demo/combobox.rb, line 124
def run
  if !@window.visible?
    @window.show_all
  else
    @window.destroy
  end
  @window
end