本文整理汇总了Python中quodlibet.qltk.models.ObjectStore类的典型用法代码示例。如果您正苦于以下问题:Python ObjectStore类的具体用法?Python ObjectStore怎么用?Python ObjectStore使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ObjectStore类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_iter_append_many_empty
def test_iter_append_many_empty(self):
m = ObjectStore()
for x in m.iter_append_many([]):
pass
for x in m.iter_append_many(iter([])):
pass
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:7,代码来源:test_qltk_models.py
示例2: test_plugin_list
def test_plugin_list(self):
model = ObjectStore()
model.append([PLUGIN])
plist = PluginListView()
plist.set_model(model)
with realized(plist):
plist.select_by_plugin_id("foobar")
plist.destroy()
开发者ID:elfalem,项目名称:quodlibet,代码行数:8,代码来源:test_qltk_pluginwin.py
示例3: test_filter
def test_filter(self):
m = ObjectStore()
f = ObjectModelFilter(child_model=m)
m.insert_many(0, range(10))
def filter_func(model, iter_, data):
if model.get_value(iter_) % 2 == 0:
return True
return False
f.set_visible_func(filter_func)
f.refilter()
self.failUnlessEqual(range(0, 10, 2), list(f.itervalues()))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:13,代码来源:test_qltk_models.py
示例4: PluginPreferences
def PluginPreferences(self, *args):
current = config.gettext("settings", "language")
if not current:
current = None
combo = Gtk.ComboBox()
model = ObjectStore()
combo.set_model(model)
for lang_id in ([None] + sorted(get_available_languages("quodlibet"))):
iter_ = model.append(row=[lang_id])
if lang_id == current:
combo.set_active_iter(iter_)
def cell_func(combo, render, model, iter_, *args):
value = model.get_value(iter_)
if value is None:
text = escape(_("System Default"))
else:
if value == u"C":
value = u"en"
text = "%s <span weight='light'>(%s)</span>" % (
escape(value),
escape(iso639.translate(value.split("_", 1)[0])))
render.set_property("markup", text)
render = Gtk.CellRendererText()
render.props.ellipsize = Pango.EllipsizeMode.END
combo.pack_start(render, True)
combo.set_cell_data_func(render, cell_func)
def on_combo_changed(combo):
new_language = model.get_value(combo.get_active_iter())
if new_language is None:
new_language = u""
config.settext("settings", "language", new_language)
combo.connect("changed", on_combo_changed)
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=12)
box.pack_start(combo, False, False, 0)
box.pack_start(
Gtk.Label(
label=_(
"A restart is required for any changes to take effect"),
wrap=True,
xalign=0),
False, False, 0)
return box
开发者ID:ZDBioHazard,项目名称:quodlibet,代码行数:50,代码来源:language.py
示例5: test_sort
def test_sort(self):
m = ObjectStore()
f = ObjectModelSort(model=m)
m.insert_many(0, range(10))
def sort_func(model, iter_a, iter_b, data):
a = model.get_value(iter_a, 0)
b = model.get_value(iter_b, 0)
return -cmp(a, b)
f.set_default_sort_func(sort_func)
self.failUnlessEqual(sorted(range(10), reverse=True),
list(f.itervalues()))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:14,代码来源:test_qltk_models.py
示例6: __init__
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)
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:29,代码来源:widgets.py
示例7: _render_column
def _render_column(self, column, **kwargs):
view = Gtk.TreeView()
model = ObjectStore()
view.set_model(model)
song = AudioFile({"~filename": "/dev/null", "~#rating": 0.6666})
song.update(kwargs)
model.append(row=[song])
view.append_column(column)
if column.get_resizable():
column.set_expand(True)
with visible(view):
view.columns_autosize()
text = column.get_cells()[0].get_property("text")
self.assertIsNot(text, None)
return text
开发者ID:mistotebe,项目名称:quodlibet,代码行数:17,代码来源:test_qltk_songlistcolumns.py
示例8: test_is_empty
def test_is_empty(self):
m = ObjectStore()
self.assertTrue(m.is_empty())
iter_ = m.append(row=[1])
self.assertFalse(m.is_empty())
m.remove(iter_)
self.assertTrue(m.is_empty())
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:7,代码来源:test_qltk_models.py
示例9: test__sort_on_value
def test__sort_on_value(self):
m = ObjectStore()
iterBob = m.append(row=["bob"])
iterAlice = m.append(row=["alice"])
m.append(row=["charlie"])
result = ObjectStore._sort_on_value(m, iterAlice, iterBob, None)
self.assertEqual(result, cmp("alice", "bob"))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:7,代码来源:test_qltk_models.py
示例10: test_insert_many_append
def test_insert_many_append(self):
m = ObjectStore()
m.insert_many(-1, range(10))
self.failUnlessEqual([r[0] for r in m], range(10))
m = ObjectStore()
m.insert_many(99, range(10))
self.failUnlessEqual([r[0] for r in m], range(10))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:8,代码来源:test_qltk_models.py
示例11: test_iter_path_changed
def test_iter_path_changed(self):
m = ObjectStore()
def handler(model, path, iter_, result):
result[0] += 1
result = [0]
m.connect("row-changed", handler, result)
m.append([object()])
iter_ = m.get_iter_first()
m.iter_changed(iter_)
self.assertEqual(result[0], 1)
m.path_changed(m.get_path(iter_))
self.assertEqual(result[0], 2)
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:15,代码来源:test_qltk_models.py
示例12: test_iter_values
def test_iter_values(self):
m = ObjectStore()
f = ObjectModelSort(model=m)
m.insert_many(0, range(10))
self.failUnlessEqual(range(10), list(f.itervalues()))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:5,代码来源:test_qltk_models.py
示例13: __init__
def __init__(self, library, songs, parent=None):
super(SongProperties, self).__init__(dialog=False)
self.set_transient_for(qltk.get_top_parent(parent))
default_width = 600
config_suffix = ""
if len(songs) <= 1:
default_width -= 200
config_suffix += "single"
self.set_default_size(default_width, 400)
self.enable_window_tracking("quodlibet_properties",
size_suffix=config_suffix)
self.auto_save_on_change = config.getboolean(
'editing', 'auto_save_changes', False)
paned = ConfigRPaned("memory", "quodlibet_properties_pos", 0.4)
notebook = qltk.Notebook()
notebook.props.scrollable = True
pages = []
pages.extend([Ctr(self, library) for Ctr in
[EditTags, TagsFromPath, RenameFiles]])
if len(songs) > 1:
pages.append(TrackNumbers(self, library))
for page in pages:
page.show()
notebook.append_page(page)
fbasemodel = ObjectStore()
fmodel = ObjectModelSort(model=fbasemodel)
fview = HintedTreeView(model=fmodel)
fview.connect('button-press-event', self.__pre_selection_changed)
fview.set_rules_hint(True)
selection = fview.get_selection()
selection.set_mode(Gtk.SelectionMode.MULTIPLE)
self.__save = None
render = Gtk.CellRendererText()
c1 = Gtk.TreeViewColumn(_('File'), render)
if fview.supports_hints():
render.set_property('ellipsize', Pango.EllipsizeMode.END)
render.set_property('xpad', 3)
def cell_data(column, cell, model, iter_, data):
entry = model.get_value(iter_)
cell.set_property('text', entry.name)
c1.set_cell_data_func(render, cell_data)
def sort_func(model, a, b, data):
a = model.get_value(a)
b = model.get_value(b)
return cmp(a.name, b.name)
fmodel.set_sort_func(100, sort_func)
c1.set_sort_column_id(100)
fview.append_column(c1)
sw = ScrolledWindow()
sw.add(fview)
sw.set_shadow_type(Gtk.ShadowType.IN)
sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
# only show the list if there are is more than one song
if len(songs) > 1:
sw.show_all()
paned.pack1(sw, shrink=False, resize=True)
for song in songs:
fbasemodel.append(row=[_ListEntry(song)])
self.connect("changed", self.__on_changed)
selection.select_all()
paned.pack2(notebook, shrink=False, resize=True)
csig = selection.connect('changed', self.__selection_changed)
connect_destroy(library,
'changed', self.__on_library_changed, fbasemodel, fview)
connect_destroy(library,
'removed', self.__on_library_removed, fbasemodel, selection, csig)
self.emit('changed', songs)
self.add(paned)
paned.set_position(175)
notebook.show()
paned.show()
开发者ID:urielz,项目名称:quodlibet,代码行数:89,代码来源:properties.py
示例14: test_append_many_set
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)))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:5,代码来源:test_qltk_models.py
示例15: test_append_many
def test_append_many(self):
m = ObjectStore()
m.append_many(range(10))
self.failUnlessEqual([r[0] for r in m], range(10))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:4,代码来源:test_qltk_models.py
示例16: test_iter_append_many
def test_iter_append_many(self):
m = ObjectStore()
iters = list(m.iter_append_many(range(10)))
self.failUnlessEqual([r[0] for r in m], range(10))
values = [m.get_value(i) for i in iters]
self.failUnlessEqual(values, range(10))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:6,代码来源:test_qltk_models.py
示例17: test_signal_count
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))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:23,代码来源:test_qltk_models.py
示例18: test_iter_append_many_iterable_int
def test_iter_append_many_iterable_int(self):
m = ObjectStore()
for x in m.iter_append_many((i for i in xrange(10))):
pass
self.failUnlessEqual([r[0] for r in m], range(10))
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:5,代码来源:test_qltk_models.py
示例19: test_iter_append_many_iterable_object
def test_iter_append_many_iterable_object(self):
objects = [object() for i in xrange(10)]
m = ObjectStore()
for x in m.iter_append_many((i for i in objects)):
pass
self.failUnlessEqual([r[0] for r in m], objects)
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:6,代码来源:test_qltk_models.py
示例20: __preview
def __preview(self, songs):
if songs is None:
songs = [row[0].song for row in (self.view.get_model() or [])]
if songs:
pattern_text = gdecode(self.combo.get_child().get_text())
else:
pattern_text = ""
try:
pattern = TagsFromPattern(pattern_text)
except re.error:
qltk.ErrorMessage(
self, _("Invalid pattern"),
_("The pattern\n\t<b>%s</b>\nis invalid. "
"Possibly it contains the same tag twice or "
"it has unbalanced brackets (< / >).") % (
util.escape(pattern_text))).run()
return
else:
if pattern_text:
self.combo.prepend_text(pattern_text)
self.combo.write(TBP)
invalid = []
for header in pattern.headers:
if not min([song.can_change(header) for song in songs]):
invalid.append(header)
if len(invalid) and songs:
if len(invalid) == 1:
title = _("Invalid tag")
msg = _("Invalid tag <b>%s</b>\n\nThe files currently"
" selected do not support editing this tag.")
else:
title = _("Invalid tags")
msg = _("Invalid tags <b>%s</b>\n\nThe files currently"
" selected do not support editing these tags.")
qltk.ErrorMessage(
self, title, msg % ", ".join(invalid)).run()
pattern = TagsFromPattern("")
self.view.set_model(None)
model = ObjectStore()
for col in self.view.get_columns():
self.view.remove_column(col)
render = Gtk.CellRendererText()
col = TreeViewColumn(title=_('File'))
col.pack_start(render, True)
col.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
def cell_data_file(column, cell, model, iter_, data):
entry = model.get_value(iter_)
cell.set_property("text", entry.name)
col.set_cell_data_func(render, cell_data_file)
def cell_data_header(column, cell, model, iter_, header):
entry = model.get_value(iter_)
cell.set_property("text", entry.get_match(header))
self.view.append_column(col)
for i, header in enumerate(pattern.headers):
render = Gtk.CellRendererText()
render.set_property('editable', True)
render.connect('edited', self.__row_edited, model, header)
escaped_title = header.replace("_", "__")
col = Gtk.TreeViewColumn(escaped_title, render)
col.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
col.set_cell_data_func(render, cell_data_header, header)
self.view.append_column(col)
for song in songs:
entry = ListEntry(song)
match = pattern.match(song)
for h in pattern.headers:
text = match.get(h, '')
for f in self.filter_box.filters:
if f.active:
text = f.filter(h, text)
if not song.can_multiple_values(h):
text = u", ".join(text.split("\n"))
entry.matches[h] = text
model.append([entry])
# save for last to potentially save time
if songs:
self.view.set_model(model)
self.preview.set_sensitive(False)
self.save.set_sensitive(len(pattern.headers) > 0)
开发者ID:urielz,项目名称:quodlibet,代码行数:90,代码来源:tagsfrompath.py
注:本文中的quodlibet.qltk.models.ObjectStore类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论