本文整理汇总了Python中quodlibet.qltk.songlist.SongList类的典型用法代码示例。如果您正苦于以下问题:Python SongList类的具体用法?Python SongList怎么用?Python SongList使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SongList类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __apply
def __apply(self, button, buttons, tiv, aip, fip, aio):
new_headers = set()
# Get the checked headers
for key, name in self.PREDEFINED_TAGS:
if buttons[key].get_active():
new_headers.add(key)
# And the customs
new_headers.update(set(self.other_cols))
on_to_off = dict((on, off) for (w, off, on) in self._toggle_data)
result = []
cur_cols = get_columns()
for h in cur_cols:
if h in new_headers:
result.append(h)
else:
try:
alternative = on_to_off[h]
if alternative in new_headers:
result.append(alternative)
except KeyError:
pass
# Add new ones on the end
result.extend(new_headers - set(result))
# After this, do the substitutions
for (check, off, on) in self._toggle_data:
if check.get_active():
try:
result[result.index(off)] = on
except ValueError:
pass
SongList.set_all_column_headers(result)
示例2: setUp
def setUp(self):
config.init()
self.songlist = SongList(SongLibrary())
self.orders_changed = 0
def orders_changed_cb(*args):
self.orders_changed += 1
self.songlist.connect("orders-changed", orders_changed_cb)
示例3: __apply
def __apply(self, button, buttons, tiv, aip, fip, others):
headers = []
for key in ["~#disc", "~#track", "title", "album", "artist",
"date", "~basename", "~#rating", "~#length"]:
if buttons[key].get_active(): headers.append(key)
if tiv.get_active():
try: headers[headers.index("title")] = "~title~version"
except ValueError: pass
if aip.get_active():
try: headers[headers.index("album")] = "~album~discsubtitle"
except ValueError: pass
if fip.get_active():
try: headers[headers.index("~basename")] = "~filename"
except ValueError: pass
headers.extend(others.get_text().split())
if "~current" in headers: headers.remove("~current")
headers = [header.lower() for header in headers]
SongList.set_all_column_headers(headers)
示例4: setUp
def setUp(self):
self.tempdir = mkdtemp()
self.pm = PluginManager(folders=[self.tempdir])
self.lib = SongLibrarian()
lib = SongLibrary()
lib.librarian = self.lib
self.songlist = SongList(library=lib)
self.player = player.init_player("nullbe", self.lib)
self.handler = EventPluginHandler(
librarian=self.lib, player=self.player, songlist=self.songlist)
self.pm.register_handler(self.handler)
self.pm.rescan()
self.assertEquals(self.pm.plugins, [])
示例5: __apply
def __apply(self, button, buttons):
result = self.__get_current_columns(buttons)
SongList.set_all_column_headers(result)
示例6: test_set_all_column_headers
def test_set_all_column_headers(self):
SongList.set_all_column_headers(self.HEADERS)
headers = [col.header_name for col in self.songlist.get_columns()]
self.failUnlessEqual(headers, self.HEADERS)
示例7: TSongList
class TSongList(TestCase):
HEADERS = ["acolumn", "~#lastplayed", "~foo~bar", "~#rating",
"~#length", "~dirname", "~#track"]
def setUp(self):
config.init()
self.songlist = SongList(SongLibrary())
self.orders_changed = 0
def orders_changed_cb(*args):
self.orders_changed += 1
self.songlist.connect("orders-changed", orders_changed_cb)
def test_set_all_column_headers(self):
SongList.set_all_column_headers(self.HEADERS)
headers = [col.header_name for col in self.songlist.get_columns()]
self.failUnlessEqual(headers, self.HEADERS)
def test_set_column_headers(self):
self.songlist.set_column_headers(self.HEADERS)
headers = [col.header_name for col in self.songlist.get_columns()]
self.failUnlessEqual(headers, self.HEADERS)
def test_drop(self):
self.songlist.enable_drop()
self.songlist.disable_drop()
def test_sort_by(self):
self.songlist.set_column_headers(["one", "two", "three"])
for key, order in [("one", True),
("two", False),
("three", False)]:
self.songlist.set_sort_orders([(key, order)])
self.failUnlessEqual(
self.songlist.get_sort_orders(), [(key, order)])
self.songlist.toggle_column_sort(self.songlist.get_columns()[-1])
self.failUnlessEqual(
self.songlist.get_sort_orders(), [("three", True)])
def test_sort_orders(self):
s = self.songlist
s.set_column_headers(["foo", "quux", "bar"])
values = [("foo", True), ("bar", False)]
s.set_sort_orders(values)
self.assertEqual(s.get_sort_orders(), values)
s.toggle_column_sort(s.get_columns()[1], replace=False)
self.assertEqual(s.get_sort_orders(), values + [("quux", False)])
s.toggle_column_sort(s.get_columns()[1], replace=True)
self.assertEqual(s.get_sort_orders(), [("quux", False)])
def test_toggle_sort(self):
s = self.songlist
s.set_column_headers(["foo"])
self.assertEqual(self.orders_changed, 1)
s.toggle_column_sort(s.get_columns()[0], replace=True)
self.assertEqual(self.orders_changed, 2)
self.assertEqual(s.get_sort_orders(), [("foo", False)])
s.toggle_column_sort(s.get_columns()[0], replace=True)
self.assertEqual(self.orders_changed, 3)
self.assertEqual(s.get_sort_orders(), [("foo", True)])
def test_clear_sort(self):
s = self.songlist
s.set_column_headers(["foo"])
s.toggle_column_sort(s.get_columns()[0], replace=True)
self.assertTrue(s.get_sort_orders())
s.clear_sort()
self.assertFalse(s.get_sort_orders())
def test_not_sortable(self):
s = self.songlist
s.sortable = False
s.set_column_headers(["foo"])
s.toggle_column_sort(s.get_columns()[0])
self.assertEqual(self.orders_changed, 0)
self.assertFalse(s.get_sort_orders())
def test_find_default_sort_column(self):
s = self.songlist
self.assertTrue(s.find_default_sort_column() is None)
s.set_column_headers(["~#track"])
self.assertTrue(s.find_default_sort_column())
def test_inline_search_state(self):
self.assertEqual(self.songlist.get_search_column(), 0)
self.assertTrue(self.songlist.get_enable_search())
def test_set_songs(self):
self.songlist.set_songs([], sorted=True)
self.songlist.set_songs([], sorted=False)
self.songlist.set_songs([], scroll_select=True)
self.songlist.set_songs([], scroll_select=False)
self.songlist.set_songs([], scroll=True)
#.........这里部分代码省略.........
示例8: except
try: ratings = config.getint("settings", "ratings")
except (ValueError, TypeError): pass
else: util.RATING_PRECISION = 1.0/ratings
try: default_rating = config.getfloat("settings", "default_rating")
except (ValueError, TypeError): pass
else: const.DEFAULT_RATING = default_rating
try: symbol = config.get("settings", "rating_symbol").decode("utf-8")
except UnicodeDecodeError: pass
else: util.RATING_SYMBOL = symbol
if config.get("settings", "headers").split() == []:
config.set("settings", "headers", "title")
headers = config.get("settings", "headers").split()
SongList.set_all_column_headers(headers)
for opt in config.options("header_maps"):
val = config.get("header_maps", opt)
util.tags.add(opt, val)
in_all =("~filename ~uri ~#lastplayed ~#rating ~#playcount ~#skipcount "
"~#added ~#bitrate ~current ~#laststarted ~basename "
"~dirname").split()
for Kind in browsers.browsers:
if Kind.headers is not None: Kind.headers.extend(in_all)
Kind.init(library)
pm = quodlibet.init_plugins(no_plugins)
if hasattr(player, "init_plugins"):
示例9: __init__
def __init__(self, Kind, library, player):
super(LibraryBrowser, self).__init__(dialog=False)
self._register_instance()
self.name = Kind.__name__
self.set_default_size(600, 400)
self.enable_window_tracking("browser_" + self.name)
self.set_title(Kind.name + " - Quod Libet")
self.add(Gtk.VBox())
view = SongList(library, update=True)
view.info.connect("changed", self.__set_time)
self.songlist = view
sw = ScrolledWindow()
sw.set_shadow_type(Gtk.ShadowType.IN)
sw.add(view)
sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
self.browser = browser = Kind(library)
if browser.can_reorder:
view.enable_drop()
elif browser.dropped:
view.enable_drop(False)
if browser.accelerators:
self.add_accel_group(browser.accelerators)
self.__container = browser.pack(sw)
self.get_child().pack_start(self.__container, True, True, 0)
main = self.get_child()
bottom = Gtk.HBox()
main.pack_end(bottom, False, True, 0)
self._filter_menu = filter_menu = FilterMenu(library, player)
filter_menu.set_browser(self.browser)
self.add_accel_group(filter_menu.get_accel_group())
bottom.pack_start(filter_menu.get_widget(), False, True, 0)
filter_menu.get_widget().show()
self.__statusbar = Gtk.Label()
self.__statusbar.set_text(_("No time information"))
self.__statusbar.set_alignment(1.0, 0.5)
self.__statusbar.set_padding(6, 3)
self.__statusbar.set_ellipsize(Pango.EllipsizeMode.START)
bottom.pack_end(self.__statusbar, True, True, 0)
self.__statusbar.show()
bottom.show()
browser.connect('songs-selected', self.__browser_cb)
browser.finalize(False)
view.connect('popup-menu', self.__menu, library)
view.connect('drag-data-received', self.__drag_data_recv)
view.connect('row-activated', self.__enqueue, player)
if browser.headers is not None:
view.connect('columns-changed', self.__cols_changed, browser)
self.__cols_changed(view, browser)
sw.show_all()
for c in self.get_child().get_children():
c.show()
self.get_child().show()
self.connect("destroy", self._on_destroy)
示例10: main
def main(argv):
import quodlibet
quodlibet.init_cli()
try:
# we want basic commands not to import gtk (doubles process time)
assert "gi.repository.Gtk" not in sys.modules
sys.modules["gi.repository.Gtk"] = None
startup_actions, cmds_todo = process_arguments(argv)
finally:
sys.modules.pop("gi.repository.Gtk", None)
quodlibet.init()
from quodlibet import app
from quodlibet.qltk import add_signal_watch, Icons
add_signal_watch(app.quit)
import quodlibet.player
import quodlibet.library
from quodlibet import config
from quodlibet import browsers
from quodlibet import util
from quodlibet.util.string import decode
app.name = "Quod Libet"
app.id = "quodlibet"
quodlibet.set_application_info(Icons.QUODLIBET, app.id, app.name)
config.init(os.path.join(quodlibet.get_user_dir(), "config"))
library_path = os.path.join(quodlibet.get_user_dir(), "songs")
print_d("Initializing main library (%s)" % (
quodlibet.util.path.unexpand(library_path)))
library = quodlibet.library.init(library_path)
app.library = library
# this assumes that nullbe will always succeed
from quodlibet.player import PlayerError
wanted_backend = os.environ.get(
"QUODLIBET_BACKEND", config.get("player", "backend"))
backend_traceback = None
for backend in [wanted_backend, "nullbe"]:
try:
player = quodlibet.player.init_player(backend, app.librarian)
except PlayerError:
backend_traceback = decode(traceback.format_exc())
else:
break
app.player = player
os.environ["PULSE_PROP_media.role"] = "music"
os.environ["PULSE_PROP_application.icon_name"] = "quodlibet"
browsers.init()
from quodlibet.qltk.songlist import SongList, get_columns
from quodlibet.util.collection import Album
try:
cover_size = config.getint("browsers", "cover_size")
except config.Error:
pass
else:
if cover_size > 0:
Album.COVER_SIZE = cover_size
headers = get_columns()
SongList.set_all_column_headers(headers)
for opt in config.options("header_maps"):
val = config.get("header_maps", opt)
util.tags.add(opt, val)
in_all = ("~filename ~uri ~#lastplayed ~#rating ~#playcount ~#skipcount "
"~#added ~#bitrate ~current ~#laststarted ~basename "
"~dirname").split()
for Kind in browsers.browsers:
if Kind.headers is not None:
Kind.headers.extend(in_all)
Kind.init(library)
pm = quodlibet.init_plugins("no-plugins" in startup_actions)
if hasattr(player, "init_plugins"):
player.init_plugins()
from quodlibet.qltk import unity
unity.init("quodlibet.desktop", player)
from quodlibet.qltk.songsmenu import SongsMenu
SongsMenu.init_plugins()
from quodlibet.util.cover import CoverManager
app.cover_manager = CoverManager()
app.cover_manager.init_plugins()
#.........这里部分代码省略.........
示例11: __init__
def __init__(self, Kind, library):
super(LibraryBrowser, self).__init__(dialog=False)
self.set_default_size(600, 400)
self.enable_window_tracking("browser_" + Kind.__name__)
self.set_border_width(6)
self.set_title(Kind.name + " - Quod Libet")
self.add(gtk.VBox(spacing=6))
view = SongList(library, update=True)
self.add_accel_group(view.accelerators)
self.songlist = view
sw = gtk.ScrolledWindow()
sw.set_shadow_type(gtk.SHADOW_IN)
sw.add(view)
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
self.browser = browser = Kind(library, False)
if browser.reordered:
view.enable_drop()
elif browser.dropped:
view.enable_drop(False)
if browser.accelerators:
self.add_accel_group(browser.accelerators)
self.__container = browser.pack(sw)
self.child.pack_start(self.__container)
self.__statusbar = gtk.Label()
self.__statusbar.set_text(_("No time information"))
self.__statusbar.set_alignment(1.0, 0.5)
self.__statusbar.set_ellipsize(pango.ELLIPSIZE_START)
self.child.pack_end(self.__statusbar, expand=False)
browser.connect('songs-selected', self.__browser_cb)
browser.finalize(False)
view.connect('popup-menu', self.__menu, library)
view.connect('drag-data-received', self.__drag_data_recv)
view.connect('row-activated', self.__enqueue)
view.get_selection().connect('changed', self.__set_time)
if browser.headers is not None:
view.connect('columns-changed', self.__cols_changed, browser)
self.__cols_changed(view, browser)
sw.show_all()
for c in self.child.get_children():
c.show()
self.child.show()
self.show()
self.__set_pane_size()
示例12: main
def main():
try:
# we want basic commands not to import gtk (doubles process time)
assert "gi.repository.Gtk" not in sys.modules
sys.modules["gi.repository.Gtk"] = None
startup_actions = process_arguments()
# this will exit if it succeeds
control('focus', ignore_error=True)
finally:
sys.modules.pop("gi.repository.Gtk", None)
import quodlibet
from quodlibet import app
from quodlibet.qltk import add_signal_watch, icons
add_signal_watch(app.quit)
import quodlibet.player
import quodlibet.library
from quodlibet import config
from quodlibet import browsers
from quodlibet import const
from quodlibet import util
config.init(const.CONFIG)
app.name = "Quod Libet"
app.id = "quodlibet"
quodlibet.init(icon=icons.QUODLIBET, name=app.name, proc_title=app.id)
print_d("Initializing main library (%s)" % (
quodlibet.util.path.unexpand(const.LIBRARY)))
library = quodlibet.library.init(const.LIBRARY)
app.library = library
from quodlibet.player import PlayerError
# this assumes that nullbe will always succeed
for backend in [config.get("player", "backend"), "nullbe"]:
try:
player = quodlibet.init_backend(backend, app.librarian)
except PlayerError as error:
print_e("%s. %s" % (error.short_desc, error.long_desc))
else:
break
app.player = player
os.environ["PULSE_PROP_media.role"] = "music"
os.environ["PULSE_PROP_application.icon_name"] = "quodlibet"
browsers.init()
from quodlibet.qltk.songlist import SongList, get_columns
from quodlibet.util.collection import Album
try:
cover_size = config.getint("browsers", "cover_size")
except config.Error:
pass
else:
if cover_size > 0:
Album.COVER_SIZE = cover_size
headers = get_columns()
SongList.set_all_column_headers(headers)
for opt in config.options("header_maps"):
val = config.get("header_maps", opt)
util.tags.add(opt, val)
in_all = ("~filename ~uri ~#lastplayed ~#rating ~#playcount ~#skipcount "
"~#added ~#bitrate ~current ~#laststarted ~basename "
"~dirname").split()
for Kind in browsers.browsers:
if Kind.headers is not None:
Kind.headers.extend(in_all)
Kind.init(library)
pm = quodlibet.init_plugins("no-plugins" in startup_actions)
if hasattr(player, "init_plugins"):
player.init_plugins()
from quodlibet.qltk import unity
unity.init("quodlibet.desktop", player)
from quodlibet.qltk.songsmenu import SongsMenu
SongsMenu.init_plugins()
from quodlibet.util.cover import CoverManager
app.cover_manager = CoverManager()
app.cover_manager.init_plugins()
from quodlibet.plugins.playlist import PLAYLIST_HANDLER
PLAYLIST_HANDLER.init_plugins()
from quodlibet.qltk.quodlibetwindow import QuodLibetWindow
app.window = window = QuodLibetWindow(library, player)
#.........这里部分代码省略.........
示例13: main
def main(argv=None):
if argv is None:
argv = sys_argv
import quodlibet
config_file = os.path.join(quodlibet.get_user_dir(), "config")
quodlibet.init_cli(config_file=config_file)
try:
# we want basic commands not to import gtk (doubles process time)
assert "gi.repository.Gtk" not in sys.modules
sys.modules["gi.repository.Gtk"] = None
startup_actions, cmds_todo = process_arguments(argv)
finally:
sys.modules.pop("gi.repository.Gtk", None)
quodlibet.init()
from quodlibet import app
from quodlibet.qltk import add_signal_watch, Icons
add_signal_watch(app.quit)
import quodlibet.player
import quodlibet.library
from quodlibet import config
from quodlibet import browsers
from quodlibet import util
app.name = "Quod Libet"
app.description = _("Music player and music library manager")
app.id = "quodlibet"
quodlibet.set_application_info(Icons.QUODLIBET, app.id, app.name)
library_path = os.path.join(quodlibet.get_user_dir(), "songs")
print_d("Initializing main library (%s)" % (
quodlibet.util.path.unexpand(library_path)))
library = quodlibet.library.init(library_path)
app.library = library
# this assumes that nullbe will always succeed
from quodlibet.player import PlayerError
wanted_backend = environ.get(
"QUODLIBET_BACKEND", config.get("player", "backend"))
try:
player = quodlibet.player.init_player(wanted_backend, app.librarian)
except PlayerError:
print_exc()
player = quodlibet.player.init_player("nullbe", app.librarian)
app.player = player
environ["PULSE_PROP_media.role"] = "music"
environ["PULSE_PROP_application.icon_name"] = "quodlibet"
browsers.init()
from quodlibet.qltk.songlist import SongList, get_columns
headers = get_columns()
SongList.set_all_column_headers(headers)
for opt in config.options("header_maps"):
val = config.get("header_maps", opt)
util.tags.add(opt, val)
in_all = ("~filename ~uri ~#lastplayed ~#rating ~#playcount ~#skipcount "
"~#added ~#bitrate ~current ~#laststarted ~basename "
"~dirname").split()
for Kind in browsers.browsers:
if Kind.headers is not None:
Kind.headers.extend(in_all)
Kind.init(library)
pm = quodlibet.init_plugins("no-plugins" in startup_actions)
if hasattr(player, "init_plugins"):
player.init_plugins()
from quodlibet.qltk import unity
unity.init("quodlibet.desktop", player)
from quodlibet.qltk.songsmenu import SongsMenu
SongsMenu.init_plugins()
from quodlibet.util.cover import CoverManager
app.cover_manager = CoverManager()
app.cover_manager.init_plugins()
from quodlibet.plugins.playlist import PLAYLIST_HANDLER
PLAYLIST_HANDLER.init_plugins()
from quodlibet.plugins.query import QUERY_HANDLER
QUERY_HANDLER.init_plugins()
from gi.repository import GLib
#.........这里部分代码省略.........
示例14: TEventPlugins
class TEventPlugins(TestCase):
def setUp(self):
self.tempdir = mkdtemp()
self.pm = PluginManager(folders=[self.tempdir])
self.lib = SongLibrarian()
lib = SongLibrary()
lib.librarian = self.lib
self.songlist = SongList(library=lib)
self.player = player.init_player("nullbe", self.lib)
self.handler = EventPluginHandler(
librarian=self.lib, player=self.player, songlist=self.songlist)
self.pm.register_handler(self.handler)
self.pm.rescan()
self.assertEquals(self.pm.plugins, [])
def tearDown(self):
self.pm.quit()
shutil.rmtree(self.tempdir)
def create_plugin(self, name='', funcs=None):
fd, fn = mkstemp(suffix='.py', text=True, dir=self.tempdir)
file = os.fdopen(fd, 'w')
file.write("from quodlibet.plugins.events import EventPlugin\n")
file.write("log = []\n")
file.write("class %s(EventPlugin):\n" % name)
indent = ' '
file.write("%spass\n" % indent)
if name:
file.write("%sPLUGIN_ID = %r\n" % (indent, name))
file.write("%sPLUGIN_NAME = %r\n" % (indent, name))
for f in (funcs or []):
file.write("%sdef %s(s, *args): log.append((%r, args))\n" %
(indent, f, f))
file.flush()
file.close()
def _get_calls(self, plugin):
mod = sys.modules[plugin.cls.__module__]
return mod.log
def test_found(self):
self.create_plugin(name='Name')
self.pm.rescan()
self.assertEquals(len(self.pm.plugins), 1)
def test_player_paused(self):
self.create_plugin(name='Name', funcs=["plugin_on_paused"])
self.pm.rescan()
self.assertEquals(len(self.pm.plugins), 1)
plugin = self.pm.plugins[0]
self.pm.enable(plugin, True)
self.player.emit("paused")
self.failUnlessEqual([("plugin_on_paused", tuple())],
self._get_calls(plugin))
def test_lib_changed(self):
self.create_plugin(name='Name', funcs=["plugin_on_changed"])
self.pm.rescan()
self.assertEquals(len(self.pm.plugins), 1)
plugin = self.pm.plugins[0]
self.pm.enable(plugin, True)
self.lib.emit("changed", [None])
self.failUnlessEqual([("plugin_on_changed", ([None],))],
self._get_calls(plugin))
def test_songs_selected(self):
self.create_plugin(name='Name', funcs=["plugin_on_songs_selected"])
self.pm.rescan()
self.assertEquals(len(self.pm.plugins), 1)
plugin = self.pm.plugins[0]
self.pm.enable(plugin, True)
self.songlist.emit("selection-changed", self.songlist.get_selection())
self.failUnlessEqual(self._get_calls(plugin),
[("plugin_on_songs_selected", ([], ))])
示例15: TSongList
class TSongList(TestCase):
HEADERS = ["acolumn", "~#lastplayed", "~foo~bar", "~#rating",
"~#length", "~dirname", "~#track"]
def setUp(self):
quodlibet.config.init()
self.songlist = SongList(SongLibrary())
def test_set_all_column_headers(self):
SongList.set_all_column_headers(self.HEADERS)
headers = [col.header_name for col in self.songlist.get_columns()]
self.failUnlessEqual(headers, self.HEADERS)
def test_set_column_headers(self):
self.songlist.set_column_headers(self.HEADERS)
headers = [col.header_name for col in self.songlist.get_columns()]
self.failUnlessEqual(headers, self.HEADERS)
def test_drop(self):
self.songlist.enable_drop()
self.songlist.disable_drop()
def test_sort_by(self):
self.songlist.set_column_headers(["one", "two", "three"])
for key, order in [("one", True),
("two", False),
("three", False)]:
self.songlist.set_sort_by(None, tag=key, order=order)
self.failUnlessEqual(self.songlist.get_sort_by(), (key, order))
self.songlist.set_sort_by(self.songlist.get_columns()[-1], tag="three")
self.failUnlessEqual(self.songlist.get_sort_by(), ("three", True))
def tearDown(self):
self.songlist.destroy()
quodlibet.config.quit()