本文整理汇总了Python中quodlibet.qltk.cbes.ComboBoxEntrySave.prepend_text方法的典型用法代码示例。如果您正苦于以下问题:Python ComboBoxEntrySave.prepend_text方法的具体用法?Python ComboBoxEntrySave.prepend_text怎么用?Python ComboBoxEntrySave.prepend_text使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类quodlibet.qltk.cbes.ComboBoxEntrySave
的用法示例。
在下文中一共展示了ComboBoxEntrySave.prepend_text方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TComboBoxEntrySave
# 需要导入模块: from quodlibet.qltk.cbes import ComboBoxEntrySave [as 别名]
# 或者: from quodlibet.qltk.cbes.ComboBoxEntrySave import prepend_text [as 别名]
class TComboBoxEntrySave(TestCase):
memory = "pattern 1\npattern 2\n"
saved = "pattern text\npattern name\n"
def setUp(self):
quodlibet.config.init()
self.fname = tempfile.mkstemp()[1]
f = file(self.fname, "w")
f.write(self.memory)
f.close()
f = file(self.fname + ".saved", "w")
f.write(self.saved)
f.close()
self.cbes = ComboBoxEntrySave(self.fname, count=2)
self.cbes2 = ComboBoxEntrySave(self.fname, count=2)
def test_equivalence(self):
model1 = self.cbes.get_model()
model2 = self.cbes2.get_model()
self.failUnlessEqual(model1, model2)
rows1 = list(model1)
rows2 = list(model2)
for row1, row2 in zip(rows1, rows2):
self.failUnlessEqual(row1[0], row2[0])
self.failUnlessEqual(row1[1], row2[1])
self.failUnlessEqual(row1[2], row2[2])
def test_shared_model(self):
self.cbes.append_text("a test")
self.test_equivalence()
def test_initial_size(self):
# 1 saved, Edit, separator, 2 remembered
self.failUnlessEqual(5, len(self.cbes.get_model()))
def test_prepend_text(self):
self.cbes.prepend_text("pattern 3")
self.memory = "pattern 3\npattern 1\n"
self.test_save()
def test_save(self):
self.cbes.write()
self.failUnlessEqual(self.memory, file(self.fname).read())
self.failUnlessEqual(self.saved, file(self.fname + ".saved").read())
def test_set_text_then_prepend(self):
self.cbes.child.set_text("foobar")
self.cbes.prepend_text("foobar")
self.memory = "foobar\npattern 1\n"
self.test_save()
def tearDown(self):
self.cbes.destroy()
self.cbes2.destroy()
os.unlink(self.fname)
os.unlink(self.fname + ".saved")
quodlibet.config.quit()
示例2: RenameFiles
# 需要导入模块: from quodlibet.qltk.cbes import ComboBoxEntrySave [as 别名]
# 或者: from quodlibet.qltk.cbes.ComboBoxEntrySave import prepend_text [as 别名]
#.........这里部分代码省略.........
self.save.set_sensitive(True)
model.path_changed(path)
def __rename(self, library):
model = self.view.get_model()
win = WritingWindow(self, len(model))
win.show()
was_changed = set()
skip_all = False
self.view.freeze_child_notify()
for entry in model.itervalues():
song = entry.song
new_name = entry.new_name
old_name = entry.name
if new_name is None:
continue
try:
library.rename(song, fsnative(new_name), changed=was_changed)
except Exception:
util.print_exc()
if skip_all:
continue
RESPONSE_SKIP_ALL = 1
msg = qltk.Message(
Gtk.MessageType.ERROR, win, _("Unable to rename file"),
_("Renaming <b>%(old-name)s</b> to <b>%(new-name)s</b> "
"failed. Possibly the target file already exists, "
"or you do not have permission to make the "
"new file or remove the old one.") % {
"old-name": util.escape(old_name),
"new-name": util.escape(new_name),
},
buttons=Gtk.ButtonsType.NONE)
msg.add_button(_("Ignore _All Errors"), RESPONSE_SKIP_ALL)
msg.add_icon_button(_("_Stop"), Icons.PROCESS_STOP,
Gtk.ResponseType.CANCEL)
msg.add_button(_("_Continue"), Gtk.ResponseType.OK)
msg.set_default_response(Gtk.ResponseType.OK)
resp = msg.run()
skip_all |= (resp == RESPONSE_SKIP_ALL)
# Preserve old behavior: shift-click is Ignore All
mods = Gdk.Display.get_default().get_pointer()[3]
skip_all |= mods & Gdk.ModifierType.SHIFT_MASK
library.reload(song, changed=was_changed)
if resp != Gtk.ResponseType.OK and resp != RESPONSE_SKIP_ALL:
break
if win.step():
break
self.view.thaw_child_notify()
win.destroy()
library.changed(was_changed)
self.save.set_sensitive(False)
def __preview(self, songs):
model = self.view.get_model()
if songs is None:
songs = [e.song for e in model.itervalues()]
pattern_text = gdecode(self.combo.get_child().get_text())
try:
pattern = FileFromPattern(pattern_text)
except ValueError:
qltk.ErrorMessage(
self, _("Path is not absolute"),
_("The pattern\n\t<b>%s</b>\ncontains / but "
"does not start from root. To avoid misnamed "
"folders, root your pattern by starting "
"it with / or ~/.") % (
util.escape(pattern))).run()
return
else:
if pattern:
self.combo.prepend_text(pattern_text)
self.combo.write(NBP)
# native paths
orignames = [song["~filename"] for song in songs]
newnames = [pattern.format(song) for song in songs]
for f in self.filter_box.filters:
if f.active:
newnames = f.filter_list(orignames, newnames)
model.clear()
for song, newname in zip(songs, newnames):
entry = Entry(song)
entry.new_name = fsdecode(newname)
model.append(row=[entry])
self.preview.set_sensitive(False)
self.save.set_sensitive(bool(pattern_text))
for song in songs:
if not song.is_file:
self.set_sensitive(False)
break
else:
self.set_sensitive(True)
示例3: TComboBoxEntrySave
# 需要导入模块: from quodlibet.qltk.cbes import ComboBoxEntrySave [as 别名]
# 或者: from quodlibet.qltk.cbes.ComboBoxEntrySave import prepend_text [as 别名]
class TComboBoxEntrySave(TestCase):
memory = "pattern 1\npattern 2\n"
saved = "pattern text\npattern name\n"
def setUp(self):
quodlibet.config.init()
h, self.fname = mkstemp()
os.close(h)
with open(self.fname, "w") as f:
f.write(self.memory)
with open(self.fname + ".saved", "w") as f:
f.write(self.saved)
self.cbes = ComboBoxEntrySave(self.fname, count=2)
self.cbes2 = ComboBoxEntrySave(self.fname, count=2)
def test_equivalence(self):
model1 = self.cbes.get_model()
model2 = self.cbes2.get_model()
self.failUnlessEqual(model1, model2)
rows1 = list(model1)
rows2 = list(model2)
for row1, row2 in zip(rows1, rows2):
self.failUnlessEqual(row1[0], row2[0])
self.failUnlessEqual(row1[1], row2[1])
self.failUnlessEqual(row1[2], row2[2])
def test_text_changed_signal(self):
called = [0]
def cb(*args):
called[0] += 1
def get_count():
c = called[0]
called[0] = 0
return c
self.cbes.connect("text-changed", cb)
entry = self.cbes.get_child()
entry.set_text("foo")
self.failUnlessEqual(get_count(), 1)
self.cbes.prepend_text("bar")
# in case the model got changed but the entry is still the same
# the text-changed signal should not be triggered
self.failUnlessEqual(entry.get_text(), "foo")
self.failUnlessEqual(get_count(), 0)
def test_shared_model(self):
self.cbes.prepend_text("a test")
self.test_equivalence()
def test_initial_size(self):
# 1 saved, Edit, separator, 2 remembered
self.failUnlessEqual(5, len(self.cbes.get_model()))
def test_prepend_text(self):
self.cbes.prepend_text("pattern 3")
self.memory = "pattern 3\npattern 1\n"
self.test_save()
def test_save(self):
self.cbes.write()
self.failUnlessEqual(self.memory, open(self.fname).read())
self.failUnlessEqual(self.saved, open(self.fname + ".saved").read())
def test_set_text_then_prepend(self):
self.cbes.get_child().set_text("foobar")
self.cbes.prepend_text("foobar")
self.memory = "foobar\npattern 1\n"
self.test_save()
def tearDown(self):
self.cbes.destroy()
self.cbes2.destroy()
os.unlink(self.fname)
os.unlink(self.fname + ".saved")
quodlibet.config.quit()
示例4: TagsFromPath
# 需要导入模块: from quodlibet.qltk.cbes import ComboBoxEntrySave [as 别名]
# 或者: from quodlibet.qltk.cbes.ComboBoxEntrySave import prepend_text [as 别名]
#.........这里部分代码省略.........
def __filter_preview(self, *args):
Gtk.Button.clicked(self.preview)
def __filter_changed(self, *args):
self._changed(self.combo.get_child())
def _changed(self, entry):
self.save.set_sensitive(False)
self.preview.set_sensitive(bool(entry.get_text()))
def __add_changed(self, combo):
config.set("tagsfrompath", "add", str(bool(combo.get_active())))
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_)
示例5: RenameFiles
# 需要导入模块: from quodlibet.qltk.cbes import ComboBoxEntrySave [as 别名]
# 或者: from quodlibet.qltk.cbes.ComboBoxEntrySave import prepend_text [as 别名]
#.........这里部分代码省略.........
images.extend(glob.glob(os.path.join(path_old_escaped,
"*." + suffix)))
if images:
# set not empty yet, (re)process
filenames = config.getstringlist("albumart", "search_filenames")
moves = []
for fn in filenames:
fn = os.path.join(path_old, fn)
if "<" in fn:
# resolve path
fnres = ArbitraryExtensionFileFromPattern(fn).format(song)
if fnres in images and fnres not in moves:
moves.append(fnres)
elif "*" in fn:
moves.extend(f for f in glob.glob(fn)
if f in images and f not in moves)
elif fn in images and fn not in moves:
moves.append(fn)
if len(moves) > 0:
overwrite = config.getboolean("rename", "move_art_overwrite")
for fnmove in moves:
try:
# existing files safeguarded until move successful,
# then deleted if overwrite set
fnmoveto = os.path.join(path_new,
os.path.split(fnmove)[1])
fnmoveto_orig = ""
if os.path.exists(fnmoveto):
fnmoveto_orig = fnmoveto + ".orig"
if not os.path.exists(fnmoveto_orig):
os.rename(fnmoveto, fnmoveto_orig)
else:
suffix = 1
while os.path.exists(fnmoveto_orig +
"." + str(suffix)):
suffix += 1
fnmoveto_orig = (fnmoveto_orig +
"." + str(suffix))
os.rename(fnmoveto, fnmoveto_orig)
print_d("Renaming image %r to %r" %
(fnmove, fnmoveto), self)
shutil.move(fnmove, fnmoveto)
if overwrite and fnmoveto_orig:
os.remove(fnmoveto_orig)
images.remove(fnmove)
except Exception:
util.print_exc()
def _preview(self, songs):
model = self.view.get_model()
if songs is None:
songs = [e.song for e in itervalues(model)]
pattern_text = self.combo.get_child().get_text()
try:
pattern = FileFromPattern(pattern_text)
except ValueError:
qltk.ErrorMessage(
self, _("Path is not absolute"),
_("The pattern\n\t<b>%s</b>\ncontains / but "
"does not start from root. To avoid misnamed "
"folders, root your pattern by starting "
"it with / or ~/.") % (
util.escape(pattern_text))).run()
return
else:
if pattern:
self.combo.prepend_text(pattern_text)
self.combo.write(NBP)
# native paths
orignames = [song["~filename"] for song in songs]
newnames = [fsn2text(pattern.format(song)) for song in songs]
for f in self.filter_box.filters:
if f.active:
newnames = f.filter_list(orignames, newnames)
model.clear()
for song, newname in zip(songs, newnames):
entry = Entry(song)
entry.new_name = newname
model.append(row=[entry])
self.preview.set_sensitive(False)
self.save.set_sensitive(bool(pattern_text))
for song in songs:
if not song.is_file:
self.set_sensitive(False)
break
else:
self.set_sensitive(True)
@property
def test_mode(self):
return self.__skip_interactive
@test_mode.setter
def test_mode(self, value):
self.__skip_interactive = value