File: treestore.rb

package info (click to toggle)
ruby-gnome2 3.1.0-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 16,072 kB
  • ctags: 17,433
  • sloc: ansic: 93,621; ruby: 62,273; xml: 335; sh: 246; makefile: 25
file content (63 lines) | stat: -rw-r--r-- 2,044 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env ruby
=begin
  treestore.rb - Gtk::TreeStore sample

  Copyright (c) 2016 Ruby-GNOME2 Project Team
  This program is licenced under the same licence as Ruby-GNOME2.
  Based on  https://developer.gnome.org/gtk3/stable/TreeWidget.html
=end

require "gtk3"

TITLE_COLUMN = 0
AUTHOR_COLUMN = 1
CHECKED_COLUMN = 2

model = Gtk::TreeStore.new(String, String, TrueClass)
iter = model.append(nil)
iter[TITLE_COLUMN] = "The Principle of Reason"
iter[AUTHOR_COLUMN] = "Martin Heidegger"
iter[CHECKED_COLUMN] = false

iter = model.append(nil)
iter.set_values(["The Art of Computer Programming", "Donald E. Knuth", true])

# append child
child_iter = model.append(iter)
child_iter[TITLE_COLUMN] = "Volume 1: Fundamental Algorithms"

# append another child
child_iter = model.append(iter)
child_iter.set_value(TITLE_COLUMN, "Volume 2: Seminumerical Algorithms")
child_iter.set_value(CHECKED_COLUMN, true)

# append another child
child_iter = model.append(iter)
child_iter.set_values(["Volume 3: Sorting and Searching",
                       "Donald E. Knuth",
                       true])

def treeview_widget_of(model)
  treeview = Gtk::TreeView.new(model)
  treeview.append_column(Gtk::TreeViewColumn.new("Title",
                                                 Gtk::CellRendererText.new,
                                                 :text => TITLE_COLUMN))
  treeview.append_column(Gtk::TreeViewColumn.new("Author",
                                                 Gtk::CellRendererText.new,
                                                 :text => AUTHOR_COLUMN))
  treeview.append_column(Gtk::TreeViewColumn.new("Author",
                                                 Gtk::CellRendererToggle.new,
                                                 :active => CHECKED_COLUMN))
  treeview
end

def display_model(model)
  win = Gtk::Window.new(:toplevel)
  win.title = "Simple Gtk::TreeStore"
  win.add(treeview_widget_of(model))
  win.show_all
  win.signal_connect("destroy") { Gtk.main_quit }
  Gtk.main
end

display_model(model)