class Feedcellar::Gtk::TreeView

Constants

RESOURCE_AND_TITLE_COLUMN

Public Class Methods

new(records) click to toggle source
Calls superclass method
# File lib/feedcellar/gtk/tree_view.rb, line 27
def initialize(records)
  super()
  @model = ::Gtk::ListStore.new(String, String, String, String, Time, String, String)
  create_tree(@model, records)
end

Public Instance Methods

next() click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 33
def next
  move_cursor(::Gtk::MovementStep::DISPLAY_LINES, 1)
end
prev() click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 37
def prev
  move_cursor(::Gtk::MovementStep::DISPLAY_LINES, -1)
end
remove_selected_record() click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 41
def remove_selected_record
  return nil unless selected_iter
  @model.remove(selected_iter)
end
selected_date() click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 70
def selected_date
  return nil unless selected_iter
  selected_iter.get_value(DATE_COLUMN)
end
selected_description() click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 65
def selected_description
  return nil unless selected_iter
  selected_iter.get_value(DESCRIPTION_COLUMN)
end
selected_iter() click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 75
def selected_iter
  selection.selected
end
selected_key() click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 50
def selected_key
  return nil unless selected_iter
  selected_iter.get_value(KEY_COLUMN)
end
selected_title() click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 55
def selected_title
  return nil unless selected_iter
  selected_iter.get_value(TITLE_COLUMN)
end
update_model(records) click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 79
def update_model(records)
  model = ::Gtk::ListStore.new(String, String, String, String, Time, String, String)
  records.each do |record|
    load_record(model, record)
  end
  set_model(model)
  @model = model
end

Private Instance Methods

create_column(title, index) click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 111
def create_column(title, index)
  column = ::Gtk::TreeViewColumn.new
  column.title = title
  renderer = ::Gtk::CellRendererText.new
  column.pack_start(renderer, :expand => false)
  column.add_attribute(renderer, :text, index)
  column.set_sort_column_id(index)
  column
end
create_tree(model, records) click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 89
def create_tree(model, records)
  set_model(model)
  self.search_column = TITLE_COLUMN
  self.enable_search = false
  self.rules_hint = true
  self.tooltip_column = DESCRIPTION_COLUMN

  selection.set_mode(:browse)

  records.each do |record|
    load_record(model, record)
  end

  column = create_column("Date", STRFTIME_COLUMN)
  append_column(column)

  column = create_column("Title", RESOURCE_AND_TITLE_COLUMN)
  append_column(column)

  expand_all
end
load_record(model, record) click to toggle source
# File lib/feedcellar/gtk/tree_view.rb, line 121
def load_record(model, record)
  iter = model.append
  iter.set_value(KEY_COLUMN, record._key)
  iter.set_value(TITLE_COLUMN, record.title)
  iter.set_value(LINK_COLUMN, record.link)
  escaped_description = ERB::Util.html_escape(record.description)
  iter.set_value(DESCRIPTION_COLUMN, escaped_description)
  iter.set_value(DATE_COLUMN, record.date)
  iter.set_value(STRFTIME_COLUMN, record.date.strftime("%Y-%m-%d\n%H:%M:%S"))
  text = [record.resource.title, record.title].join("\n")
  iter.set_value(RESOURCE_AND_TITLE_COLUMN, text)
end