本文整理汇总了Python中quodlibet.qltk.models.ObjectStore.append_many方法的典型用法代码示例。如果您正苦于以下问题:Python ObjectStore.append_many方法的具体用法?Python ObjectStore.append_many怎么用?Python ObjectStore.append_many使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类quodlibet.qltk.models.ObjectStore
的用法示例。
在下文中一共展示了ObjectStore.append_many方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_signal_count
# 需要导入模块: from quodlibet.qltk.models import ObjectStore [as 别名]
# 或者: from quodlibet.qltk.models.ObjectStore import append_many [as 别名]
def test_signal_count(self):
m = ObjectStore()
def handler(model, path, iter_, result):
result[0] += 1
inserted = [0]
m.connect("row-inserted", handler, inserted)
changed = [0]
m.connect("row-changed", handler, changed)
m.append([1])
m.prepend([8])
m.insert(0, [1])
m.insert_before(None, [1])
m.insert_after(None, [1])
m.insert_many(0, [1, 2, 3])
m.append_many([1, 2, 3])
list(m.iter_append_many([1, 2, 3]))
list(m.iter_append_many(xrange(3)))
self.assertEqual(changed[0], 0)
self.assertEqual(inserted[0], len(m))
示例2: SearchWindow
# 需要导入模块: from quodlibet.qltk.models import ObjectStore [as 别名]
# 或者: from quodlibet.qltk.models.ObjectStore import append_many [as 别名]
#.........这里部分代码省略.........
self.get_content_area().pack_start(vb, True, True, 0)
self.connect('response', self._on_response)
self.connect("destroy", self._on_destroy)
stb.emit('clicked')
self.get_child().show_all()
def _on_destroy(self, *args):
self._qthread.stop()
def _on_response(self, widget, response):
if response != Gtk.ResponseType.ACCEPT:
self.destroy()
return
self._save()
def _save(self):
"""Writes values to Song objects."""
year_only = pconfig.getboolean("year_only")
albumartist = pconfig.getboolean("albumartist")
artistsort = pconfig.getboolean("artist_sort")
musicbrainz = pconfig.getboolean("standard")
labelid = pconfig.getboolean("labelid2")
for release, track, song in self.result_treeview.iter_tracks():
meta = build_song_data(release, track)
apply_options(
meta, year_only, albumartist, artistsort, musicbrainz, labelid)
apply_to_song(meta, song)
self.destroy()
def _do_query(self, *args):
"""Search for album using the query text."""
query = util.gdecode(self.search_query.get_text())
if not query:
self.result_label.set_markup(
"<b>%s</b>" % _("Please enter a query."))
self.search_button.set_sensitive(True)
return
self.result_label.set_markup("<i>%s</i>" % _(u"Searching…"))
self._qthread.add(self._process_results, search_releases, query)
def _process_results(self, results):
"""Called when a query result is returned.
`results` is None if an error occurred.
"""
self._resultlist.clear()
self.search_button.set_sensitive(True)
if results is None:
self.result_label.set_text(_("Error encountered. Please retry."))
self.search_button.set_sensitive(True)
return
self._resultlist.append_many(results)
if len(results) > 0:
self.result_label.set_markup("<i>%s</i>" % _(u"Loading result…"))
self.result_combo.set_active(0)
else:
self.result_label.set_markup(_("No results found."))
def _result_changed(self, combo):
"""Called when a release is chosen from the result combo."""
idx = combo.get_active()
if idx == -1:
return
release = self._resultlist[idx][0]
if release.id in self._releasecache:
self._update_result(self._releasecache[release.id])
else:
self.result_label.set_markup("<i>%s</i>" % _(u"Loading result…"))
self.result_treeview.update_release(None)
self._qthread.add(self._update_result, release.fetch_full)
def _update_result(self, full_release):
"""Callback for release detail download from result combo."""
if full_release is None:
self.result_label.set_text(_("Error encountered. Please retry."))
return
self.result_label.set_text(u"")
self._releasecache.setdefault(full_release.id, full_release)
self.result_treeview.update_release(full_release)
self.current_release = full_release
save_button = self.get_widget_for_response(Gtk.ResponseType.ACCEPT)
save_button.set_sensitive(True)
示例3: ResultTreeView
# 需要导入模块: from quodlibet.qltk.models import ObjectStore [as 别名]
# 或者: from quodlibet.qltk.models.ObjectStore import append_many [as 别名]
class ResultTreeView(HintedTreeView, MultiDragTreeView):
"""The result treeview"""
def __init__(self, album):
self.album = album
self._release = None
self.model = ObjectStore()
self.model.append_many(album)
super(ResultTreeView, self).__init__(self.model)
self.set_headers_clickable(True)
self.set_rules_hint(True)
self.set_reorderable(True)
self.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
mode = Pango.EllipsizeMode
cols = [
(_('Filename'), self.__name_datafunc, True, mode.MIDDLE),
(_('Disc'), self.__disc_datafunc, False, mode.END),
(_('Track'), self.__track_datafunc, False, mode.END),
(_('Title'), self.__title_datafunc, True, mode.END),
(_('Artist'), self.__artist_datafunc, True, mode.END),
]
for title, func, resize, mode in cols:
render = Gtk.CellRendererText()
render.set_property('ellipsize', mode)
col = Gtk.TreeViewColumn(title, render)
col.set_cell_data_func(render, func)
col.set_resizable(resize)
col.set_expand(resize)
self.append_column(col)
def iter_tracks(self):
"""Yields tuples of (release, track, song) combinations as they
are shown in the list.
"""
tracks = self._tracks
for idx, (song, ) in enumerate(self.model):
if song is None:
continue
if idx >= len(tracks):
continue
track = tracks[idx]
yield (self._release, track, song)
def update_release(self, full_release):
"""Updates the TreeView, handling results with a different number of
tracks than the album being tagged.
Passing in None will reset the list.
"""
if full_release is not None:
tracks = full_release.tracks
else:
tracks = []
for i in range(len(self.model), len(tracks)):
self.model.append((None, ))
for i in range(len(self.model), len(tracks), -1):
if self.model[-1][0] is not None:
break
itr = self.model.get_iter_from_string(str(len(self.model) - 1))
self.model.remove(itr)
self._release = full_release
for row in self.model:
self.model.row_changed(row.path, row.iter)
# Only show artists if we have any
has_artists = bool(filter(lambda t: t.artists, tracks))
col = self.get_column(4)
col.set_visible(has_artists)
# Only show discs column if we have more than one disc
col = self.get_column(1)
col.set_visible(
bool(full_release) and bool(full_release.disc_count > 1))
self.columns_autosize()
@property
def _tracks(self):
if self._release is None:
return []
return self._release.tracks
def __name_datafunc(self, col, cell, model, itr, data):
song = model[itr][0]
if song:
cell.set_property('text', path.fsdecode(song("~basename")))
else:
cell.set_property('text', '')
def __track_datafunc(self, col, cell, model, itr, data):
idx = model.get_path(itr)[0]
if idx >= len(self._tracks):
#.........这里部分代码省略.........
示例4: test_append_many_set
# 需要导入模块: from quodlibet.qltk.models import ObjectStore [as 别名]
# 或者: from quodlibet.qltk.models.ObjectStore import append_many [as 别名]
def test_append_many_set(self):
m = ObjectStore()
m.append_many(set())
m.append_many(set(range(10)))
self.failUnlessEqual({r[0] for r in m}, set(range(10)))
示例5: test_append_many
# 需要导入模块: from quodlibet.qltk.models import ObjectStore [as 别名]
# 或者: from quodlibet.qltk.models.ObjectStore import append_many [as 别名]
def test_append_many(self):
m = ObjectStore()
m.append_many(range(10))
self.failUnlessEqual([r[0] for r in m], range(10))