class Alexandria::UI::IconViewTooltips

Public Class Methods

new(view) click to toggle source
# File lib/alexandria/ui/iconview_tooltips.rb, line 22
def initialize(view)
  set_view(view)
end

Public Instance Methods

label_for_book(title, authors, publisher, year) click to toggle source
# File lib/alexandria/ui/iconview_tooltips.rb, line 42
def label_for_book(title, authors, publisher, year)
  # This is much too complex... but it works for now!
  html = ""
  unless title.empty?
    html += "<b>#{CGI.escapeHTML(title)}</b>"
    html += "\n" unless authors.empty?
  end
  html += "<i>#{CGI.escapeHTML(authors)}</i>" unless authors.empty?
  html += "\n" if !title.empty? || !authors.empty?

  html += "<small>"
  html += CGI.escapeHTML(publisher).to_s if publisher && !publisher.empty?

  if year && !year.empty?
    html += " " if publisher && !publisher.empty?
    html += "(#{year})"
  end

  html + "</small>"
end
set_view(view) click to toggle source
# File lib/alexandria/ui/iconview_tooltips.rb, line 26
def set_view(view)
  view.has_tooltip = true
  view.signal_connect("query-tooltip") do |_widget, x, y, _keyboard_mode, tooltip|
    tree_path = view.get_path_at_pos(x, y)
    if tree_path
      iter = view.model.get_iter(tree_path)

      title = iter[2] # HACK: hardcoded, should use column names...
      authors = iter[4]
      publisher = iter[6]
      year = iter[7]
      tooltip.set_markup label_for_book(title, authors, publisher, year)
    end
  end
end