Class: Bitcoin::Gui::TreeView

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/bitcoin/gui/tree_view.rb

Direct Known Subclasses

AddrView, ConnView, TxInView, TxView

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#add_wallet_filters, #dialog, #display_tx, #format_address, #format_uptime, #format_value, #format_version, #message, #method_missing, #wallet_preview

Constructor Details

#initialize(gui, view_name, columns) ⇒ TreeView

Returns a new instance of TreeView.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/bitcoin/gui/tree_view.rb', line 10

def initialize gui, view_name, columns
  @gui = gui
  @view = @gui.builder.get_object(view_name.to_s)
  @model = Gtk::TreeStore.new(columns.map{|c| c[0] })
  @view.set_model @model

  columns.each_with_index do |cdef, i|
    type, label, cb = *cdef
    next  unless label
    case type
    when GObject::TYPE_BOOLEAN
      renderer = Gtk::CellRendererToggle.new
      col = tree_view_col(renderer, label, "active", i) do |*args|
        method(cb).call(@model, i, args[1], args[3])  if cb
      end
    when GObject::TYPE_STRING, GObject::TYPE_INT
      renderer = Gtk::CellRendererText.new
      col = tree_view_col(renderer, label, "text", i) do |*args|
        method(cb).call(@model, i, args[1], args[3])  if cb
      end
    end
    @view.append_column(col)
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Bitcoin::Gui::Helpers

Instance Attribute Details

#modelObject

Returns the value of attribute model.



8
9
10
# File 'lib/bitcoin/gui/tree_view.rb', line 8

def model
  @model
end

#viewObject

Returns the value of attribute view.



8
9
10
# File 'lib/bitcoin/gui/tree_view.rb', line 8

def view
  @view
end

Instance Method Details

#embed(name) ⇒ Object



35
36
37
38
39
# File 'lib/bitcoin/gui/tree_view.rb', line 35

def embed name
  parent = @gui.builder.get_object(name.to_s).parent
  parent.remove(parent.get_child)
  parent.add(@view)
end

#format_address_col(model, i, renderer, iter) ⇒ Object



50
51
52
53
54
# File 'lib/bitcoin/gui/tree_view.rb', line 50

def format_address_col model, i, renderer, iter
  address = model.get_value(iter, i).get_string
  label = model.get_value(iter, i+1).get_string
  renderer.text = format_address(address, label)
end

#format_bool_col(model, i, renderer, iter) ⇒ Object



78
79
80
81
# File 'lib/bitcoin/gui/tree_view.rb', line 78

def format_bool_col model, i, renderer, iter
  active = model.get_value(iter, i).get_boolean
  renderer.set_active active
end

#format_uptime_col(model, i, renderer, iter) ⇒ Object



73
74
75
76
# File 'lib/bitcoin/gui/tree_view.rb', line 73

def format_uptime_col model, i, renderer, iter
  started = model.get_value(iter, i).get_int
  renderer.text = format_uptime(started)
end

#format_value_col(model, i, renderer, iter) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
# File 'lib/bitcoin/gui/tree_view.rb', line 56

def format_value_col model, i, renderer, iter
  val = model.get_value(iter, i).get_string.to_i
  renderer.text = format_value(val)
  if val > 0
    renderer.foreground = "darkgreen"
  elsif val < 0
    renderer.foreground = "red"
  else
    renderer.foreground = "black"
  end
end

#format_version_col(model, i, renderer, iter) ⇒ Object



68
69
70
71
# File 'lib/bitcoin/gui/tree_view.rb', line 68

def format_version_col model, i, renderer, iter
  ver = model.get_value(iter, i).get_int.to_s
  renderer.text = format_version(ver)
end

#tree_view_col(renderer, title, key, val, &block) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/bitcoin/gui/tree_view.rb', line 41

def tree_view_col renderer, title, key, val, &block
  col = Gtk::TreeViewColumn.new
  col.pack_start renderer, true
  col.add_attribute renderer, key, val
  col.set_title title
  col.set_cell_data_func(renderer, block, nil, nil)
  col
end