本文整理汇总了Python中quodlibet.util.library.background_filter函数的典型用法代码示例。如果您正苦于以下问题:Python background_filter函数的具体用法?Python background_filter怎么用?Python background_filter使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了background_filter函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __update_filter
def __update_filter(self, entry, text):
self.__filter = None
if not Query.match_all(text):
tags = self.__model.tags + ["album"]
self.__filter = Query(text, star=tags).search
self.__bg_filter = background_filter()
self.view.get_model().refilter()
示例2: __update_filter
def __update_filter(self, entry, text):
self.__filter = None
star = self.__model.tags + ["album"]
query = self.__search.get_query(star)
if not query.matches_all:
self.__filter = query.search
self.__bg_filter = background_filter()
self.view.get_model().refilter()
示例3: list
def list(self, tag):
"""Return a list of unique values for the given tag. This needs to be
here since not all browsers pull from the default library.
"""
library = app.library
bg = background_filter()
if bg:
songs = filter(bg, itervalues(library))
return list({value for song in songs for value in song.list(tag)})
return list(library.tag_values(tag))
示例4: list
def list(self, tag):
library = quodlibet.library.library
bg = background_filter()
if bg:
songs = filter(bg, library.itervalues())
tags = set()
for song in songs:
tags.update(song.list(tag))
return list(tags)
return library.tag_values(tag)
示例5: activate
def activate(self):
if self._text is not None and Query.is_parsable(self._text):
star = dict.fromkeys(SongList.star)
star.update(self.__star)
self._filter = Query(self._text, star.keys()).search
songs = filter(self._filter, self._library)
bg = background_filter()
if bg:
songs = filter(bg, songs)
self.__panes[0].fill(songs)
示例6: activate
def activate(self):
star = dict.fromkeys(SongList.star)
star.update(self.__star)
query = self._sb_box.get_query(star.keys())
if query.is_parsable:
self._filter = query.search
songs = list(filter(self._filter, self._library))
bg = background_filter()
if bg:
songs = list(filter(bg, songs))
self._panes[0].fill(songs)
示例7: list
def list(self, tag):
"""Return a list of unique values for the given tag. This needs to be
here since not all browsers pull from the default library.
"""
library = app.library
bg = background_filter()
if bg:
songs = filter(bg, library.itervalues())
tags = set()
for song in songs:
tags.update(song.list(tag))
return list(tags)
return library.tag_values(tag)
示例8: __filter_menu_actions
def __filter_menu_actions(self, menuitem):
name = menuitem.get_name()
if name == "PlayedRecently":
self.__make_query("#(lastplayed < 7 days ago)")
elif name == "AddedRecently":
self.__make_query("#(added < 7 days ago)")
elif name == "TopRated":
bg = background_filter()
songs = (bg and filter(bg, self.__library)) or self.__library
songs = [song.get("~#playcount", 0) for song in songs]
if len(songs) == 0:
return
songs.sort()
if len(songs) < 40:
self.__make_query("#(playcount > %d)" % (songs[0] - 1))
else:
self.__make_query("#(playcount > %d)" % (songs[-40] - 1))
示例9: __browser_cb
def __browser_cb(self, browser, songs, sorted, library, player):
if browser.background:
bg = background_filter()
if bg:
songs = filter(bg, songs)
self.songlist.set_songs(songs, sorted)
# After the first time the browser activates, which should always
# happen if we start up and restore, restore the playing song.
# Because the browser has send us songs we can be sure it has
# registered all its libraries.
if self.__first_browser_set:
self.__first_browser_set = False
song = library.librarian.get(config.get("memory", "song"))
seek_pos = config.getint("memory", "seek", 0)
config.set("memory", "seek", 0)
if song is not None:
player.setup(self.playlist, song, seek_pos)
示例10: __update_filter
def __update_filter(self, entry, text, scroll_up=True, restore=False):
model = self.view.get_model()
self.__filter = None
if not Query.match_all(text):
self.__filter = Query(text, star=["~people", "album"]).search
self.__bg_filter = background_filter()
self.__inhibit()
# If we're hiding "All Albums", then there will always
# be something to filter — probably there's a better
# way to implement this
if (not restore or self.__filter or self.__bg_filter) or (not
config.getboolean("browsers", "covergrid_all", False)):
model.refilter()
self.__uninhibit()
示例11: __update_filter
def __update_filter(self, entry, text, scroll_up=True, restore=False):
model = self.view.get_model()
self.__filter = None
if not Query.match_all(text):
self.__filter = Query(text, star=["~people", "album"]).search
self.__bg_filter = background_filter()
self.__inhibit()
# We could be smart and try to scroll to a selected album
# but that introduces lots of wild scrolling. Feel free to change it.
# Without scrolling the TV tries to stay at the same position
# (40% down) which makes no sense, so always go to the top.
if scroll_up:
self.view.scroll_to_point(0, 0)
# Don't filter on restore if there is nothing to filter
if not restore or self.__filter or self.__bg_filter:
model.refilter()
self.__uninhibit()
示例12: __init__
def __init__(self, library):
super(CollectionBrowser, self).__init__(spacing=6)
self.set_orientation(Gtk.Orientation.VERTICAL)
self._register_instance()
if self.__model is None:
self._init_model(library)
sw = ScrolledWindow()
sw.set_shadow_type(Gtk.ShadowType.IN)
self.view = view = CollectionView()
view.set_headers_visible(False)
model_sort = CollectionSortModel(model=self.__model)
model_filter = CollectionFilterModel(child_model=model_sort)
self.__filter = None
self.__bg_filter = background_filter()
model_filter.set_visible_func(self.__parse_query)
view.set_model(model_filter)
def sort(model, i1, i2, data):
t1, t2 = model[i1][0], model[i2][0]
if t1 is None or t2 is None:
# FIXME: why?
return 0
# FIXME: order this deterministically
if t1 is MultiNode or t1 is UnknownNode or \
t2 is MultiNode or t2 is UnknownNode:
return -cmp(t1, t2)
if not isinstance(t1, Album):
return cmp(util.human_sort_key(t1), util.human_sort_key(t2))
a1, a2 = t1, t2
return (cmp(a1.peoplesort and a1.peoplesort[0],
a2.peoplesort and a2.peoplesort[0]) or
cmp(a1.date or "ZZZZ", a2.date or "ZZZZ") or
cmp((a1.sort, a1.key), (a2.sort, a2.key)))
model_sort.set_sort_func(0, sort)
model_sort.set_sort_column_id(0, Gtk.SortType.ASCENDING)
column = Gtk.TreeViewColumn("albums")
def cell_data(column, cell, model, iter_, data):
markup = model.get_markup(self.__model.tags, iter_)
cell.markup = markup
cell.set_property('markup', markup)
def get_scaled_cover(album):
# XXX: Cache this somewhere else
cover = None
if not hasattr(album, "_scaled_cover"):
scale_factor = self.get_scale_factor()
album.scan_cover(scale_factor=scale_factor)
if album.cover:
s = 25 * scale_factor
cover = scale(album.cover, (s, s))
album._scaled_cover = cover
else:
cover = album._scaled_cover
return cover
def cell_data_pb(column, cell, model, iter_, data):
album = model.get_album(iter_)
if album is None:
cell.set_property('icon-name', Icons.FOLDER)
else:
cover = get_scaled_cover(album)
if cover:
cover = add_border_widget(cover, view)
surface = get_surface_for_pixbuf(self, cover)
cell.set_property("surface", surface)
else:
cell.set_property('icon-name', Icons.MEDIA_OPTICAL)
imgrender = Gtk.CellRendererPixbuf()
render = Gtk.CellRendererText()
if view.supports_hints():
render.set_property('ellipsize', Pango.EllipsizeMode.END)
column.pack_start(imgrender, False)
column.pack_start(render, True)
column.set_cell_data_func(render, cell_data)
column.set_cell_data_func(imgrender, cell_data_pb)
view.append_column(column)
sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
sw.add(view)
hbox = Gtk.HBox(spacing=6)
prefs = Gtk.Button()
prefs.add(SymbolicIconImage(Icons.EMBLEM_SYSTEM, Gtk.IconSize.MENU))
prefs.connect('clicked', lambda *x: Preferences(self))
search = SearchBarBox(completion=AlbumTagCompletion(),
accel_group=self.accelerators)
search.connect('query-changed', self.__update_filter)
self.__search = search
#.........这里部分代码省略.........
示例13: __init__
def __init__(self, library):
super(AlbumList, self).__init__(spacing=6)
self.set_orientation(Gtk.Orientation.VERTICAL)
self._register_instance()
if self.__model is None:
self._init_model(library)
self._cover_cancel = Gio.Cancellable.new()
sw = ScrolledWindow()
sw.set_shadow_type(Gtk.ShadowType.IN)
self.view = view = AllTreeView()
view.set_headers_visible(False)
model_sort = AlbumSortModel(model=self.__model)
model_filter = AlbumFilterModel(child_model=model_sort)
self.__bg_filter = background_filter()
self.__filter = None
model_filter.set_visible_func(self.__parse_query)
render = Gtk.CellRendererPixbuf()
self.__cover_column = column = Gtk.TreeViewColumn("covers", render)
column.set_visible(config.getboolean("browsers", "album_covers"))
column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
column.set_fixed_width(Album.COVER_SIZE + 12)
render.set_property('height', Album.COVER_SIZE + 8)
render.set_property('width', Album.COVER_SIZE + 8)
def cell_data_pb(column, cell, model, iter_, no_cover):
album = model.get_album(iter_)
if album is None:
pixbuf = None
elif album.cover:
pixbuf = album.cover
round_ = config.getboolean("albumart", "round")
pixbuf = add_border_widget(pixbuf, self.view, round_)
pixbuf = get_pbosf_for_pixbuf(self, pixbuf)
# don't cache, too much state has an effect on the result
self.__last_render_pb = None
else:
pixbuf = no_cover
if self.__last_render_pb == pixbuf:
return
self.__last_render_pb = pixbuf
set_renderer_from_pbosf(cell, pixbuf)
column.set_cell_data_func(render, cell_data_pb, self._no_cover)
view.append_column(column)
render = Gtk.CellRendererText()
column = Gtk.TreeViewColumn("albums", render)
column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
if view.supports_hints():
render.set_property('ellipsize', Pango.EllipsizeMode.END)
def cell_data(column, cell, model, iter_, data):
album = model.get_album(iter_)
if album is None:
text = "<b>%s</b>" % _("All Albums")
text += "\n" + ngettext("%d album", "%d albums",
len(model) - 1) % (len(model) - 1)
markup = text
else:
markup = self.display_pattern % album
if self.__last_render == markup:
return
self.__last_render = markup
cell.markup = markup
cell.set_property('markup', markup)
column.set_cell_data_func(render, cell_data)
view.append_column(column)
view.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
view.set_rules_hint(True)
view.set_search_equal_func(self.__search_func, None)
view.set_search_column(0)
view.set_model(model_filter)
sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
sw.add(view)
view.connect('row-activated', self.__play_selection)
self.__sig = view.connect('selection-changed',
util.DeferredSignal(self.__update_songs, owner=view))
targets = [("text/x-quodlibet-songs", Gtk.TargetFlags.SAME_APP, 1),
("text/uri-list", 0, 2)]
targets = [Gtk.TargetEntry.new(*t) for t in targets]
view.drag_source_set(
Gdk.ModifierType.BUTTON1_MASK, targets, Gdk.DragAction.COPY)
view.connect("drag-data-get", self.__drag_data_get)
connect_obj(view, 'popup-menu', self.__popup, view, library)
self.accelerators = Gtk.AccelGroup()
#.........这里部分代码省略.........
示例14: __init__
def __init__(self, library, main):
super(CollectionBrowser, self).__init__(spacing=6)
self._register_instance()
if self.__model is None:
self._init_model(library)
sw = ScrolledWindow()
sw.set_shadow_type(gtk.SHADOW_IN)
self.view = view = CollectionView()
view.set_headers_visible(False)
model_sort = gtk.TreeModelSort(self.__model)
model_filter = model_sort.filter_new()
self.__filter = None
self.__bg_filter = background_filter()
model_filter.set_visible_func(self.__parse_query)
view.set_model(model_filter)
def sort(model, i1, i2):
t1, t2 = model[i1][0], model[i2][0]
if t1 is None or t2 is None:
# FIXME: why?
return 0
# FIXME: order this deterministically
if t1 is MultiNode or t1 is UnknownNode or \
t2 is MultiNode or t2 is UnknownNode:
return -cmp(t1, t2)
if not isinstance(t1, Album):
return cmp(util.human_sort_key(t1), util.human_sort_key(t2))
a1, a2 = t1, t2
return (cmp(a1.peoplesort and a1.peoplesort[0],
a2.peoplesort and a2.peoplesort[0]) or
cmp(a1.date or "ZZZZ", a2.date or "ZZZZ") or
cmp((a1.sort, a1.key), (a2.sort, a2.key)))
model_sort.set_sort_func(0, sort)
model_sort.set_sort_column_id(0, gtk.SORT_ASCENDING)
column = gtk.TreeViewColumn("albums")
def cell_data(column, cell, model, iter_):
markup = StoreUtils.get_markup(model, self.__model.tags, iter_)
cell.markup = markup
cell.set_property('markup', markup)
def cell_data_pb(column, cell, model, iter_):
album = StoreUtils.get_album(model, iter_)
if album is None:
cell.set_property('stock_id', gtk.STOCK_DIRECTORY)
else:
album.scan_cover()
if album.cover:
cell.set_property('pixbuf', scale(album.cover, (25, 25)))
else:
cell.set_property('stock_id', gtk.STOCK_CDROM)
imgrender = gtk.CellRendererPixbuf()
render = gtk.CellRendererText()
render.set_property('ellipsize', pango.ELLIPSIZE_END)
column.pack_start(imgrender, False)
column.pack_start(render, True)
column.set_cell_data_func(render, cell_data)
column.set_cell_data_func(imgrender, cell_data_pb)
view.append_column(column)
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
sw.add(view)
hbox = gtk.HBox(spacing=6)
prefs = gtk.Button()
prefs.add(gtk.image_new_from_stock(
gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU))
prefs.connect('clicked', Preferences)
search = SearchBarBox(button=False, completion=AlbumTagCompletion(),
accel_group=self.accelerators)
search.connect('query-changed', self.__update_filter)
hbox.pack_start(search)
hbox.pack_start(prefs, expand=False)
if main:
self.pack_start(Alignment(hbox, left=3, top=3), expand=False)
else:
self.pack_start(hbox, expand=False)
self.pack_start(sw, expand=True)
view.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
self.__sig = view.get_selection().connect('changed',
self.__selection_changed)
view.connect('row-activated', self.__play, main)
view.connect_object('popup-menu', self.__popup, view, library)
targets = [("text/x-quodlibet-songs", gtk.TARGET_SAME_APP, 1),
("text/uri-list", 0, 2)]
#.........这里部分代码省略.........
示例15: __browser_cb
def __browser_cb(self, browser, songs, sorted):
if browser.background:
bg = background_filter()
if bg: songs = filter(bg, songs)
self.__set_time(songs=songs)
self.songlist.set_songs(songs, sorted)