本文整理汇总了Python中quodlibet.util.tag函数的典型用法代码示例。如果您正苦于以下问题:Python tag函数的具体用法?Python tag怎么用?Python tag使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了tag函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get
def get(self, key, default="", connector=" - "):
if key[:1] == "~" and '~' in key[1:]:
return connector.join(map(self.get, util.tagsplit(key)))
elif key[:1] == "~" and key[-4:-3] == ":":
func = key[-3:]
key = key[:-4]
return "%s<%s>" % (util.tag(key), func)
elif key in self:
return self[key]
return util.tag(key)
示例2: _people
def _people(self, song, box):
vb = Gtk.VBox()
if "artist" in song:
if len(song.list("artist")) == 1:
title = _("artist")
else:
title = _("artists")
title = util.capitalize(title)
l = Label(song["artist"])
l.set_ellipsize(Pango.EllipsizeMode.END)
vb.pack_start(l, False, True, 0)
else:
title = tag("~people")
for tag_ in ["performer", "lyricist", "arranger", "composer",
"conductor", "author"]:
if tag_ in song:
l = Label(song[tag_])
l.set_ellipsize(Pango.EllipsizeMode.END)
if len(song.list(tag_)) == 1:
name = tag(tag_)
else:
name = readable(tag_, plural=True)
vb.pack_start(Frame(util.capitalize(name), l), False, False, 0)
performers = {}
for tag_ in song:
if "performer:" in tag_:
for person in song[tag_].split('\n'):
try:
performers[str(person)]
except:
performers[str(person)] = []
performers[str(person)].append(
util.title(tag_[tag_.find(":") + 1:]))
if len(performers) > 0:
performerstr = ''
for performer in performers:
performerstr += performer + ' ('
i = 0
for part in performers[performer]:
if i != 0:
performerstr += ', '
performerstr += part
i += 1
performerstr += ')\n'
l = Label(performerstr)
l.set_ellipsize(Pango.EllipsizeMode.END)
if len(performers) == 1:
name = tag("performer")
else:
name = _("performers")
vb.pack_start(Frame(util.capitalize(name), l), False, False, 0)
if not vb.get_children():
vb.destroy()
else:
box.pack_start(Frame(title, vb), False, False, 0)
示例3: _people
def _people(self, songs, box):
tags_ = PEOPLE
people = defaultdict(set)
for song in songs:
for t in tags_:
if t in song:
people[t] |= set(song.list(t))
data = []
# Preserve order of people
for tag_ in tags_:
values = people.get(tag_)
if values:
name = readable(tag_, plural=len(values) > 1)
data.append((name, "\n".join(values)))
table = Table(len(data))
for i, (key, text) in enumerate(data):
key = util.capitalize(util.escape(key) + ":")
table.attach(Label(markup=key), 0, 1, i, i + 1,
xoptions=Gtk.AttachOptions.FILL)
label = Label(text, ellipsize=True)
table.attach(label, 1, 2, i, i + 1)
box.pack_start(Frame(tag("~people"), table), False, False, 0)
示例4: _album
def _album(self, song, box):
if "album" not in song:
return
text = ["<span size='x-large'><i>%s</i></span>"
% util.escape(song.comma("album"))]
secondary = []
if "discnumber" in song:
secondary.append(_("Disc %s") % song["discnumber"])
if "discsubtitle" in song:
secondary.append("<i>%s</i>" %
util.escape(song.comma("discsubtitle")))
if "tracknumber" in song:
secondary.append(_("Track %s") % song["tracknumber"])
if secondary:
text.append(" - ".join(secondary))
if "date" in song:
text.append(util.escape(song.comma("date")))
if "organization" in song or "labelid" in song:
t = util.escape(song.comma("~organization~labelid"))
text.append(t)
if "producer" in song:
text.append(_("Produced by %s") % (
util.escape(song.comma("producer"))))
w = Label(markup="\n".join(text), ellipsize=True)
hb = Gtk.HBox(spacing=12)
hb.pack_start(w, True, True, 0)
box.pack_start(Frame(tag("album"), hb), False, False, 0)
cover = ReactiveCoverImage(song=song)
hb.pack_start(cover, False, True, 0)
示例5: _execute
def _execute(self, options, args):
if len(args) != 0:
raise CommandError(_("Too many arguments"))
headers = [_("Tag"), _("Description")]
nicks = ["tag", "desc"]
if not options.columns:
order = nicks
else:
order = [n.strip() for n in options.columns.split(",")]
tag_names = list(USER_TAGS)
if options.all:
tag_names.extend(MACHINE_TAGS)
tags = []
for key in tag_names:
tags.append((key, util.tag(key)))
tags.sort()
if not options.terse:
print_table(tags, headers, nicks, order)
else:
print_terse_table(tags, nicks, order)
示例6: _album
def _album(self, song, box):
if "album" not in song: return
w = Label("")
text = []
text.append("<i>%s</i>" % util.escape(song.comma("album")))
if "date" in song:
text[-1] += " (%s)" % util.escape(song.comma("date"))
secondary = []
if "discnumber" in song:
secondary.append(_("Disc %s") % song["discnumber"])
if "discsubtitle" in song:
secondary.append("<i>%s</i>" %
util.escape(song.comma("discsubtitle")))
if "tracknumber" in song:
secondary.append(_("Track %s") % song["tracknumber"])
if secondary: text.append(" - ".join(secondary))
if "organization" in song or "labelid" in song:
t = util.escape(song.comma("~organization~labelid"))
text.append(t)
if "producer" in song:
text.append("Produced by %s" %(
util.escape(song.comma("producer"))))
w.set_markup("\n".join(text))
w.set_ellipsize(pango.ELLIPSIZE_END)
hb = gtk.HBox(spacing=12)
cover = CoverImage(song=song)
if cover: hb.pack_start(cover, expand=False)
else: cover.destroy()
hb.pack_start(w)
box.pack_start(Frame(tag("album"), hb), expand=False, fill=False)
示例7: Filter
def Filter(t):
# Translators: The substituted string is the name of the
# selected column (a translated tag name).
b = qltk.MenuItem(
_("_Filter on %s") % util.tag(t, True), Gtk.STOCK_INDEX)
b.connect('activate', self.__filter_on, t, songs, browser)
return b
示例8: __preview_pattern
def __preview_pattern(self, edit, label):
people = "\n".join(
[util.tag("artist"), util.tag("performer"), util.tag("arranger")])
album = FakeAlbum({"date": "2004-10-31",
"~length": util.format_time(6319),
"~long-length": util.format_time_long(6319),
"~tracks": ngettext("%d track", "%d tracks", 5) % 5,
"~discs": ngettext("%d disc", "%d discs", 2) % 2,
"~people": people})
try: text = XMLFromPattern(edit.text) % album
except:
text = _("Invalid pattern")
edit.apply.set_sensitive(False)
try: pango.parse_markup(text, u"\u0000")
except gobject.GError:
text = _("Invalid pattern")
edit.apply.set_sensitive(False)
else: edit.apply.set_sensitive(True)
label.set_markup(text)
示例9: __init__
def __init__(self, t):
self._render = gtk.CellRendererText()
title = util.tag(t)
super(SongList.TextColumn, self).__init__(title, self._render)
self.header_name = t
self.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
self.set_visible(True)
self.set_clickable(True)
self.set_sort_indicator(False)
self.set_cell_data_func(self._render, self._cdf, t)
self._text = set()
self._timeout = None
self._update_layout(title, force=True)
示例10: __init__
def __init__(self):
super(SortCriterionBox, self).__init__(gtk.TreeStore(str, str))
render = gtk.CellRendererText()
self.pack_start(render, True)
self.add_attribute(render, 'text', 1)
model = self.get_model()
for (group, items) in self.__criterions:
group_row = model.append(None, row=[group, group])
for t in items:
model.append(group_row, row=[t, "%s (%s)" % (tag(t), t)])
self.set_active(0)
示例11: __init__
def __init__(self, row_pattern):
parts = re.split(r"(?<!\\):", row_pattern)
parts = list(map(lambda p: p.replace(r"\:", ":"), parts))
is_numeric = lambda s: s[:2] == "~#" and "~" not in s[2:]
is_pattern = lambda s: '<' in s
f_round = lambda s: (isinstance(s, float) and "%.2f" % s) or s
disp = (len(parts) >= 2 and parts[1]) or r"[i](<~#tracks>)[/i]"
cat = parts[0]
if is_pattern(cat):
title = util.pattern(cat, esc=True, markup=True)
try:
pc = XMLFromPattern(cat)
except ValueError:
pc = XMLFromPattern("")
tags = pc.tags
format = pc.format_list
has_markup = True
else:
title = util.tag(cat)
tags = util.tagsplit(cat)
has_markup = False
if is_numeric(cat):
def format(song):
v = text_type(f_round(song(cat)))
return [(v, v)]
else:
format = lambda song: song.list_separate(cat)
if is_pattern(disp):
try:
pd = XMLFromPattern(disp)
except ValueError:
pd = XMLFromPattern("")
format_display = pd.format
else:
if is_numeric(disp):
format_display = lambda coll: text_type(f_round(coll(disp)))
else:
format_display = lambda coll: util.escape(coll.comma(disp))
self.title = title
self.tags = set(tags)
self.format = format
self.format_display = format_display
self.has_markup = has_markup
示例12: get_markup
def get_markup(self, tags, iter_):
obj = self[iter_][0]
if isinstance(obj, Album):
return PAT % obj
if isinstance(obj, basestring):
markup = util.escape(obj)
else:
tag = util.tag(tags[len(self.get_path(iter_)) - 1])
if obj is UnknownNode:
markup = UNKNOWN_PATTERN % util.escape(tag)
else:
markup = MULTI_PATTERN % util.escape(tag)
num = len(StoreUtils.get_albums_for_iter(self, iter_))
return markup + COUNT_PATTERN % num
示例13: get_markup
def get_markup(self, tags, iter_):
obj = self.get_value(iter_, 0)
if isinstance(obj, AlbumNode):
return PAT % obj.album
if isinstance(obj, string_types):
markup = util.escape(obj)
else:
tag = util.tag(tags[len(self.get_path(iter_).get_indices()) - 1])
if obj is UnknownNode:
markup = UNKNOWN_PATTERN % util.escape(tag)
else:
markup = MULTI_PATTERN % util.escape(tag)
num = len(self.get_albums_for_iter(iter_))
return markup + COUNT_PATTERN % num
示例14: _fill_model
def _fill_model(self, can_change):
self.clear()
render = Gtk.CellRendererText()
self.pack_start(render, True)
self.add_attribute(render, 'text', 1)
if can_change is None:
can_change = self.__tags
can_change = sorted(can_change)
model = self.get_model()
for t in can_change:
model.append(row=[t, "%s (%s)" % (tag(t), t)])
self.set_model(model)
if len(model) == 0:
raise ValueError("TagsCombo boxes require at least one tag name")
示例15: _album
def _album(self, song, box):
if "album" not in song:
return
w = Label("")
text = []
text.append("<i>%s</i>" % util.escape(song.comma("album")))
if "date" in song:
text[-1] += " (%s)" % util.escape(song.comma("date"))
secondary = []
if "discnumber" in song:
secondary.append(_("Disc %s") % song["discnumber"])
if "discsubtitle" in song:
secondary.append("<i>%s</i>" %
util.escape(song.comma("discsubtitle")))
if "tracknumber" in song:
secondary.append(_("Track %s") % song["tracknumber"])
if secondary:
text.append(" - ".join(secondary))
if "organization" in song or "labelid" in song:
t = util.escape(song.comma("~organization~labelid"))
text.append(t)
if "producer" in song:
text.append("Produced by %s" % (
util.escape(song.comma("producer"))))
w.set_markup("\n".join(text))
w.set_ellipsize(Pango.EllipsizeMode.END)
hb = Gtk.HBox(spacing=12)
cover = CoverImage()
cover.set_property('no-show-all', True)
hb.pack_start(cover, False, True, 0)
def show_cover(cover, success):
if success:
cover.show()
cover.disconnect(signal_id)
signal_id = cover.connect('cover-visible', show_cover)
cover.set_song(song)
hb.pack_start(w, True, True, 0)
box.pack_start(Frame(tag("album"), hb), False, False, 0)