Treeview tooltips

The treeview tooltips will show detailed information about the selected
track (including album art!)
This commit is contained in:
Bryan Schumaker 2010-11-07 16:58:01 -05:00
parent b7559e7864
commit 3eda4225a9
1 changed files with 34 additions and 2 deletions

View File

@ -1,8 +1,13 @@
# Bryan Schumaker (8/15/2010)
import ocarina
gtk = ocarina.gtk
gobject = ocarina.gobject
import image
libsaria = ocarina.libsaria
gtk = ocarina.gtk
gobject = ocarina.gobject
from libsaria.collection import library
get_attr = library.get_attr
#UNI = gobject.TYPE_UNICHAR
@ -32,6 +37,7 @@ class List(gtk.TreeView):
self.set_rules_hint(True)
self.set_tooltip_column(len(cols)-1)
self.set_has_tooltip(True)
self.filter_model = self.list.filter_new()
self.filter_model.set_visible_func(actions.refilter)
@ -40,6 +46,7 @@ class List(gtk.TreeView):
self.sel = self.get_selection()
self.sel.set_mode(gtk.SELECTION_MULTIPLE)
self.connect("query-tooltip", self.query_tooltip)
self.connect("row-activated", self.row_activated)
self.connect("button-release-event", self.button_clicked)
@ -72,4 +79,29 @@ class List(gtk.TreeView):
for iter in self.sel.get_selected_rows()[1]:
func(filter[iter][0])
def query_tooltip(self, widget, x, y, keyboard, tip):
row = self.get_dest_row_at_pos(x,y)
if row == None:
return False
iter = self.filter_model.get_iter(row[0])#self.list.get_iter(row[0])
id = self.filter_model[iter][0]
art = image.Image()
art.set_from_file(get_attr(id, "art"))
art.set_height(52)
tip.set_icon(art.get_pixbuf())
title = get_attr(id, "title").replace("&", "&")
artist = "by %s" % get_attr(id, "artist").replace("&", "&amp")
album = "from %s" % get_attr(id, "album").replace("&", "&")
tip.set_markup("<b>%s</b>\n%s\n%s" % (title, artist, album))
year = "Year: %s" % get_attr(id, "year")
length = "Length: %s" % get_attr(id, "lenstr")
count = "Play count: %s" % get_attr(id, "playcount")
extra = gtk.Label()
extra.set_markup(" %s\n %s\n %s" % (year, length, count))
tip.set_custom(extra)
return True