Class: IconViewTooltips

Inherits:
Object
  • Object
show all
Includes:
Alexandria::Logging
Defined in:
lib/alexandria/ui/iconview_tooltips.rb

Instance Method Summary collapse

Methods included from Alexandria::Logging

included, #log

Constructor Details

#initialize(view) ⇒ IconViewTooltips

Returns a new instance of IconViewTooltips.



37
38
39
# File 'lib/alexandria/ui/iconview_tooltips.rb', line 37

def initialize(view)
  set_view(view)
end

Instance Method Details

#label_for_book(title, authors, publisher, year) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/alexandria/ui/iconview_tooltips.rb', line 57

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) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/alexandria/ui/iconview_tooltips.rb', line 41

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