93 lines
2.0 KiB
Ruby
93 lines
2.0 KiB
Ruby
|
#!/usr/bin/env ruby
|
||
|
=begin
|
||
|
listview.rb - Ruby/GTK sample script.
|
||
|
|
||
|
Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
|
||
|
This program is licenced under the same licence as Ruby-GNOME2.
|
||
|
|
||
|
$Id: listview.rb,v 1.11 2006/06/17 13:18:12 mutoh Exp $
|
||
|
=end
|
||
|
|
||
|
require 'gtk2'
|
||
|
|
||
|
window = Gtk::Window.new("Gtk::ListStore sample")
|
||
|
window.border_width = 0
|
||
|
|
||
|
box1 = Gtk::VBox.new(false, 0)
|
||
|
window.add(box1)
|
||
|
|
||
|
box2 = Gtk::VBox.new(false, 10)
|
||
|
box2.border_width = 10
|
||
|
box1.pack_start(box2, true, true, 0)
|
||
|
|
||
|
scrolled_win = Gtk::ScrolledWindow.new
|
||
|
scrolled_win.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)
|
||
|
box2.pack_start(scrolled_win, true, true, 0)
|
||
|
|
||
|
data = [
|
||
|
"hello",
|
||
|
"world",
|
||
|
"blah",
|
||
|
"foo",
|
||
|
"bar",
|
||
|
"argh",
|
||
|
"spencer",
|
||
|
"is a",
|
||
|
"wussy",
|
||
|
"programmer"
|
||
|
]
|
||
|
|
||
|
model = Gtk::ListStore.new(String)
|
||
|
column = Gtk::TreeViewColumn.new("Data",
|
||
|
Gtk::CellRendererText.new, {:text => 0})
|
||
|
treeview = Gtk::TreeView.new(model)
|
||
|
treeview.append_column(column)
|
||
|
treeview.selection.set_mode(Gtk::SELECTION_SINGLE)
|
||
|
scrolled_win.add_with_viewport(treeview)
|
||
|
|
||
|
data.each do |v|
|
||
|
iter = model.append
|
||
|
iter[0] = v
|
||
|
end
|
||
|
|
||
|
button = Gtk::Button.new("add")
|
||
|
button.set_flags(Gtk::Widget::CAN_FOCUS)
|
||
|
|
||
|
i = 0
|
||
|
button.signal_connect("clicked") do
|
||
|
iter = model.append
|
||
|
iter[0] = "add item #{i}"
|
||
|
i += 1
|
||
|
end
|
||
|
|
||
|
box2.pack_start(button, false, true, 0)
|
||
|
|
||
|
button = Gtk::Button.new("remove")
|
||
|
button.set_flags(Gtk::Widget::CAN_FOCUS)
|
||
|
button.signal_connect("clicked") do
|
||
|
iter = treeview.selection.selected
|
||
|
model.remove(iter) if iter
|
||
|
end
|
||
|
box2.pack_start(button, false, true, 0)
|
||
|
|
||
|
separator = Gtk::HSeparator.new
|
||
|
box1.pack_start(separator, false, true, 0)
|
||
|
separator.show
|
||
|
|
||
|
box2 = Gtk::VBox.new(false, 10)
|
||
|
box2.border_width = 10
|
||
|
box1.pack_start(box2, false, true, 0)
|
||
|
|
||
|
button = Gtk::Button.new("close")
|
||
|
button.signal_connect("clicked") do
|
||
|
Gtk.main_quit
|
||
|
end
|
||
|
box2.pack_start(button, true, true, 0)
|
||
|
button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
||
|
button.grab_default
|
||
|
|
||
|
window.set_default_size(300, 300)
|
||
|
window.show_all
|
||
|
|
||
|
Gtk.main
|