本文整理汇总了Python中quodlibet.get_user_dir函数的典型用法代码示例。如果您正苦于以下问题:Python get_user_dir函数的具体用法?Python get_user_dir怎么用?Python get_user_dir使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_user_dir函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: init
def init():
global browsers
# ignore double init (for the test suite)
if browsers:
return
this_dir = os.path.dirname(__file__)
load_pyc = os.name == 'nt'
modules = load_dir_modules(this_dir,
package=__package__,
load_compiled=load_pyc)
user_dir = os.path.join(quodlibet.get_user_dir(), "browsers")
if os.path.isdir(user_dir):
modules += load_dir_modules(user_dir,
package="quodlibet.fake.browsers",
load_compiled=load_pyc)
for browser in modules:
try:
browsers.extend(browser.browsers)
except AttributeError:
print_w("%r doesn't contain any browsers." % browser.__name__)
def is_browser(Kind):
return isinstance(Kind, type) and issubclass(Kind, Browser)
browsers = filter(is_browser, browsers)
if not browsers:
raise SystemExit("No browsers found!")
browsers.sort(key=lambda Kind: Kind.priority)
开发者ID:Konzertheld,项目名称:quodlibet,代码行数:33,代码来源:__init__.py
示例2: errorhook
def errorhook(exc_info=None):
"""This is the main entry point
Call in an exception context. Thread safe.
def my_thread():
try:
do_work()
except Exception:
errorhook()
"""
global _error_lock, _errorhook_enabled
if not _errorhook_enabled:
return
if exc_info is None:
exc_info = sys.exc_info()
if exc_info[0] is None:
# called outside of an exception context, just ignore
print_e("no active exception!")
return
# In case something goes wrong during error handling print it first
print_exc(exc_info)
if not _error_lock.acquire(False):
# Make sure only one of these is active at a time
return
# write error and logs to disk
dump_dir = os.path.join(quodlibet.get_user_dir(), "dumps")
dump_to_disk(dump_dir, exc_info)
sentry = get_sentry()
# For crashes the stack trace is not enough to differentiating different
# crash sources. We need to give our own grouping key (fingerprint) based
# on the stack trace provided by faulthandler.
fingerprint = None
if isinstance(exc_info[1], FaultHandlerCrash):
fingerprint = ["{{ default }}", exc_info[1].get_grouping_key()]
try:
sentry_error = sentry.capture(exc_info, fingerprint=fingerprint)
except SentryError:
sentry_error = None
def called_in_main_thread():
try:
run_error_dialogs(exc_info, sentry_error)
finally:
_error_lock.release()
if is_main_thread():
called_in_main_thread()
else:
GLib.idle_add(called_in_main_thread)
开发者ID:elfalem,项目名称:quodlibet,代码行数:60,代码来源:main.py
示例3: parse_body
def parse_body(self, body, query_path_=None):
if body is None:
raise QueryPluginError
body = body.strip().lower()
# Use provided query file for testing
if query_path_:
query_path = query_path_
else:
query_path = os.path.join(get_user_dir(), 'lists', 'queries.saved')
try:
with open(query_path, 'rU') as query_file:
for query_string in query_file:
name = next(query_file).strip().lower()
if name == body:
try:
return Query(query_string.strip())
except QueryError:
raise QueryPluginError
# We've searched the whole file and haven't found a match
raise QueryPluginError
except IOError:
raise QueryPluginError
except StopIteration:
# The file has an odd number of lines. This shouldn't happen unless
# it has been externally modified
raise QueryPluginError
开发者ID:ZDBioHazard,项目名称:quodlibet,代码行数:26,代码来源:savedsearch.py
示例4: __init__
def __init__(self, parent, player, library):
super(TopBar, self).__init__()
# play controls
control_item = Gtk.ToolItem()
self.insert(control_item, 0)
t = PlayControls(player, library.librarian)
self.volume = t.volume
# only restore the volume in case it is managed locally, otherwise
# this could affect the system volume
if not player.has_external_volume:
player.volume = config.getfloat("memory", "volume")
connect_destroy(player, "notify::volume", self._on_volume_changed)
control_item.add(t)
self.insert(Gtk.SeparatorToolItem(), 1)
info_item = Gtk.ToolItem()
self.insert(info_item, 2)
info_item.set_expand(True)
box = Gtk.Box(spacing=6)
info_item.add(box)
qltk.add_css(self, "GtkToolbar {padding: 3px;}")
self._pattern_box = Gtk.VBox()
# song text
info_pattern_path = os.path.join(quodlibet.get_user_dir(), "songinfo")
text = SongInfo(library.librarian, player, info_pattern_path)
self._pattern_box.pack_start(Align(text, border=3), True, True, 0)
box.pack_start(self._pattern_box, True, True, 0)
# cover image
self.image = CoverImage(resize=True)
connect_destroy(player, 'song-started', self.__new_song)
# FIXME: makes testing easier
if app.cover_manager:
connect_destroy(
app.cover_manager, 'cover-changed',
self.__song_art_changed, library)
box.pack_start(Align(self.image, border=2), False, True, 0)
# On older Gtk+ (3.4, at least)
# setting a margin on CoverImage leads to errors and result in the
# QL window not being visible for some reason.
assert self.image.props.margin == 0
for child in self.get_children():
child.show_all()
context = self.get_style_context()
context.add_class("primary-toolbar")
开发者ID:zsau,项目名称:quodlibet,代码行数:57,代码来源:quodlibetwindow.py
示例5: main
def main(argv):
import quodlibet
from quodlibet.qltk import add_signal_watch, icons
add_signal_watch(app.quit)
opts = util.OptionParser("Ex Falso", const.VERSION, _("an audio tag editor"), "[%s]" % _("directory"))
# FIXME: support unicode on Windows, sys.argv isn't good enough
argv.append(os.path.abspath(fsnative(u".")))
opts, args = opts.parse(argv[1:])
args[0] = os.path.realpath(args[0])
config.init(os.path.join(quodlibet.get_user_dir(), "config"))
app.name = "Ex Falso"
app.id = "exfalso"
quodlibet.init(icon=icons.EXFALSO, name=app.name, proc_title=app.id)
import quodlibet.library
import quodlibet.player
app.library = quodlibet.library.init()
app.player = quodlibet.player.init_player("nullbe", app.librarian)
from quodlibet.qltk.songlist import PlaylistModel
app.player.setup(PlaylistModel(), None, 0)
pm = quodlibet.init_plugins()
pm.rescan()
from quodlibet.qltk.exfalsowindow import ExFalsoWindow
dir_ = args[0]
if os.name == "nt":
dir_ = fsdecode(dir_)
app.window = ExFalsoWindow(app.library, dir_)
app.window.init_plugins()
from quodlibet.util.cover import CoverManager
app.cover_manager = CoverManager()
app.cover_manager.init_plugins()
from quodlibet.qltk import session
session.init("exfalso")
quodlibet.enable_periodic_save(save_library=False)
quodlibet.main(app.window)
quodlibet.finish_first_session(app.id)
config.save()
print_d("Finished shutdown.")
开发者ID:SimonLarsen,项目名称:quodlibet,代码行数:55,代码来源:exfalso.py
示例6: 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(config_file=config_file)
from quodlibet.qltk import add_signal_watch
add_signal_watch(app.quit)
opts = util.OptionParser(
"Ex Falso", const.VERSION,
_("an audio tag editor"), "[%s]" % _("directory"))
argv.append(os.path.abspath(fsnative(u".")))
opts, args = opts.parse(argv[1:])
args[0] = os.path.realpath(args[0])
app.name = "Ex Falso"
app.description = _("Audio metadata editor")
app.id = "exfalso"
app.process_name = "exfalso"
quodlibet.set_application_info(app)
import quodlibet.library
import quodlibet.player
app.library = quodlibet.library.init()
app.player = quodlibet.player.init_player("nullbe", app.librarian)
from quodlibet.qltk.songlist import PlaylistModel
app.player.setup(PlaylistModel(), None, 0)
pm = quodlibet.init_plugins()
pm.rescan()
from quodlibet.qltk.exfalsowindow import ExFalsoWindow
dir_ = args[0]
app.window = ExFalsoWindow(app.library, dir_)
app.window.init_plugins()
from quodlibet.util.cover import CoverManager
app.cover_manager = CoverManager()
app.cover_manager.init_plugins()
from quodlibet import session
session_client = session.init(app)
quodlibet.enable_periodic_save(save_library=False)
quodlibet.run(app.window)
quodlibet.finish_first_session("exfalso")
config.save()
session_client.close()
util.print_d("Finished shutdown.")
开发者ID:zsau,项目名称:quodlibet,代码行数:55,代码来源:exfalso.py
示例7: update_feeds
def update_feeds(subscriptions):
feeds = []
with open(os.path.join(quodlibet.get_user_dir(), "feeds"), "rb") as f:
try:
feeds = pickle.load(f)
except:
print_d("Couldn't read feeds.")
subbed = frozenset([f.uri for f in feeds])
newfeeds = list()
for subscription in subscriptions:
try:
r = requests.get(subscription)
except requests.exceptions.ConnectionError as e:
print_d("ConnectionError %s - %s" % (subscription, e));
continue
if not r.status_code == 200:
print_d("Cannot access %s - %i" % (subscription, r.status_code))
continue
feed = Feed(subscription)
if feed.uri in subbed:
print_d("Feed already subscribed: %s" % subscription)
continue
feed.changed = feed.parse()
if feed:
print_d("Appending %s" % subscription)
feeds.append(feed)
newfeeds.append(feed)
else:
print_d("Feed could not be added: %s" % subscription)
print_d("Adding %i feeds." % len(newfeeds))
with open(os.path.join(quodlibet.get_user_dir(), "feeds"), "wb") as f:
pickle.dump(feeds, f)
app.browser.reload(app.library) # adds feeds
开发者ID:pschwede,项目名称:quodlibet-plugins,代码行数:38,代码来源:GPodderSync.py
示例8: __init__
def __init__(self, filename=None, completion=None, accel_group=None,
timeout=DEFAULT_TIMEOUT, validator=Query.validator,
star=None):
super(SearchBarBox, self).__init__(spacing=6)
if filename is None:
filename = os.path.join(
quodlibet.get_user_dir(), "lists", "queries")
combo = ComboBoxEntrySave(filename, count=8,
validator=validator,
title=_("Saved Searches"),
edit_title=_(u"Edit saved searches…"))
self.__deferred_changed = DeferredSignal(
self.__filter_changed, timeout=timeout, owner=self)
self.__combo = combo
entry = combo.get_child()
self.__entry = entry
if completion:
entry.set_completion(completion)
self._star = star
self._query = None
self.__sig = combo.connect('text-changed', self.__text_changed)
entry.connect('clear', self.__filter_changed)
entry.connect('backspace', self.__text_changed)
entry.connect('populate-popup', self.__menu)
entry.connect('activate', self.__filter_changed)
entry.connect('activate', self.__save_search)
entry.connect('focus-out-event', self.__save_search)
entry.connect('key-press-event', self.__key_pressed)
entry.set_placeholder_text(_("Search"))
entry.set_tooltip_text(_("Search your library, "
"using free text or QL queries"))
combo.enable_clear_button()
self.pack_start(combo, True, True, 0)
if accel_group:
key, mod = Gtk.accelerator_parse("<Primary>L")
accel_group.connect(key, mod, 0,
lambda *x: entry.mnemonic_activate(True))
for child in self.get_children():
child.show_all()
开发者ID:LudoBike,项目名称:quodlibet,代码行数:49,代码来源:searchbar.py
示例9: get_thumbnail_folder
def get_thumbnail_folder():
"""Returns a path to the thumbnail folder.
The returned path might not exist.
"""
if os.name == "nt":
thumb_folder = os.path.join(quodlibet.get_user_dir(), "thumbnails")
else:
cache_folder = os.path.join(xdg_get_cache_home(), "thumbnails")
thumb_folder = os.path.expanduser('~/.thumbnails')
if os.path.exists(cache_folder) or not os.path.exists(thumb_folder):
thumb_folder = cache_folder
return thumb_folder
开发者ID:bernd-wechner,项目名称:quodlibet,代码行数:15,代码来源:thumbnails.py
示例10: init
def init():
"""Import all browsers from this package and from the user directory.
After this is called the global `browers` list will contain all
classes sorted by priority.
Can be called multiple times.
"""
global browsers, default
# ignore double init (for the test suite)
if browsers:
return
this_dir = os.path.dirname(__file__)
load_pyc = util.is_windows() or util.is_osx()
modules = load_dir_modules(this_dir,
package=__package__,
load_compiled=load_pyc)
user_dir = os.path.join(quodlibet.get_user_dir(), "browsers")
if os.path.isdir(user_dir):
modules += load_dir_modules(user_dir,
package="quodlibet.fake.browsers",
load_compiled=load_pyc)
for browser in modules:
try:
browsers.extend(browser.browsers)
except AttributeError:
print_w("%r doesn't contain any browsers." % browser.__name__)
def is_browser(Kind):
return isinstance(Kind, type) and issubclass(Kind, Browser)
browsers = filter(is_browser, browsers)
if not browsers:
raise SystemExit("No browsers found!")
browsers.sort(key=lambda Kind: Kind.priority)
try:
default = get("SearchBar")
except ValueError:
raise SystemExit("Default browser not found!")
开发者ID:Tjorriemorrie,项目名称:quodlibet,代码行数:46,代码来源:__init__.py
示例11: IRFile
from quodlibet.qltk.getstring import GetStringDialog
from quodlibet.qltk.songsmenu import SongsMenu
from quodlibet.qltk.notif import Task
from quodlibet.qltk import Icons
from quodlibet.util import copool, connect_destroy, sanitize_tags, connect_obj
from quodlibet.util.string import decode, encode
from quodlibet.util.uri import URI
from quodlibet.qltk.views import AllTreeView
from quodlibet.qltk.searchbar import SearchBarBox
from quodlibet.qltk.completion import LibraryTagCompletion
from quodlibet.qltk.x import MenuItem, Align, ScrolledWindow
from quodlibet.qltk.x import SymbolicIconImage
from quodlibet.qltk.menubutton import MenuButton
STATION_LIST_URL = "http://bitbucket.org/lazka/quodlibet/downloads/radiolist.bz2"
STATIONS_FAV = os.path.join(quodlibet.get_user_dir(), "stations")
STATIONS_ALL = os.path.join(quodlibet.get_user_dir(), "stations_all")
# TODO: - Do the update in a thread
# - Ranking: reduce duplicate stations (max 3 URLs per station)
# prefer stations that match a genre?
# Migration path for pickle
sys.modules["browsers.iradio"] = sys.modules[__name__]
class IRFile(RemoteFile):
multisong = True
can_add = False
format = "Radio Station"
开发者ID:virtuald,项目名称:quodlibet,代码行数:31,代码来源:iradio.py
示例12: SpacesToUnderscores
from quodlibet.plugins import PluginManager
from quodlibet.pattern import FileFromPattern
from quodlibet.qltk._editutils import FilterPluginBox, FilterCheckButton
from quodlibet.qltk._editutils import EditingPluginHandler
from quodlibet.qltk.views import TreeViewColumn
from quodlibet.qltk.cbes import ComboBoxEntrySave
from quodlibet.qltk.models import ObjectStore
from quodlibet.qltk import Icons, Button
from quodlibet.qltk.wlw import WritingWindow
from quodlibet.util import connect_obj, gdecode
from quodlibet.util.path import fsdecode, fsnative
from quodlibet.util.path import strip_win32_incompat_from_path
NBP = os.path.join(quodlibet.get_user_dir(), "lists", "renamepatterns")
NBP_EXAMPLES = """\
<tracknumber>. <title>
<tracknumber|<tracknumber>. ><title>
<tracknumber> - <title>
<tracknumber> - <artist> - <title>
/path/<artist> - <album>/<tracknumber>. <title>
/path/<artist>/<album>/<tracknumber> - <title>"""
class SpacesToUnderscores(FilterCheckButton):
_label = _("Replace spaces with _underscores")
_section = "rename"
_key = "spaces"
_order = 1.0
开发者ID:mistotebe,项目名称:quodlibet,代码行数:29,代码来源:renamefiles.py
示例13: InvalidFeed
from quodlibet import util
from quodlibet import app
from quodlibet.browsers import Browser
from quodlibet.formats import AudioFile
from quodlibet.formats.remote import RemoteFile
from quodlibet.qltk.getstring import GetStringDialog
from quodlibet.qltk.msg import ErrorMessage
from quodlibet.qltk.views import AllTreeView
from quodlibet.qltk import Icons
from quodlibet.util import connect_obj, print_w
from quodlibet.qltk.x import ScrolledWindow, Align, Button, MenuItem
from quodlibet.util.picklehelper import pickle_load, pickle_dump, PickleError
FEEDS = os.path.join(quodlibet.get_user_dir(), "feeds")
DND_URI_LIST, DND_MOZ_URL = range(2)
# Migration path for pickle
sys.modules["browsers.audiofeeds"] = sys.modules[__name__]
class InvalidFeed(ValueError):
pass
class Feed(list):
def __init__(self, uri):
self.name = _("Unknown")
self.uri = uri
self.changed = False
开发者ID:zsau,项目名称:quodlibet,代码行数:31,代码来源:audiofeeds.py
示例14: JEP118
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
import os
import io
import quodlibet
from quodlibet import _
from quodlibet import util
from quodlibet.qltk import Icons
from quodlibet.plugins.events import EventPlugin
outfile = os.path.join(quodlibet.get_user_dir(), "jabber")
format = """\
<tune xmlns='http://jabber.org/protocol/tune'>
<artist>%s</artist>
<title>%s</title>
<source>%s</source>
<track>%d</track>
<length>%d</length>
</tune>"""
class JEP118(EventPlugin):
PLUGIN_ID = "JEP-118"
PLUGIN_NAME = _("JEP-118")
PLUGIN_DESC = _("Outputs a Jabber User Tunes file to ~/.quodlibet/jabber.")
PLUGIN_ICON = Icons.DOCUMENT_SAVE
开发者ID:LudoBike,项目名称:quodlibet,代码行数:31,代码来源:jep118.py
示例15: 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()
#.........这里部分代码省略.........
开发者ID:mistotebe,项目名称:quodlibet,代码行数:101,代码来源:quodlibet.py
示例16: 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
#.........这里部分代码省略.........
开发者ID:Muges,项目名称:quodlibet,代码行数:101,代码来源:main.py
示例17: UnderscoresToSpaces
from quodlibet.formats import AudioFileError
from quodlibet.plugins import PluginManager
from quodlibet.qltk._editutils import FilterPluginBox, FilterCheckButton
from quodlibet.qltk._editutils import EditingPluginHandler, OverwriteWarning
from quodlibet.qltk._editutils import WriteFailedError
from quodlibet.qltk.wlw import WritingWindow
from quodlibet.qltk.views import TreeViewColumn
from quodlibet.qltk.cbes import ComboBoxEntrySave
from quodlibet.qltk.models import ObjectStore
from quodlibet.qltk import Icons
from quodlibet.util.tagsfrompath import TagsFromPattern
from quodlibet.util.string.splitters import split_value
from quodlibet.util import connect_obj, gdecode
TBP = os.path.join(quodlibet.get_user_dir(), "lists", "tagpatterns")
TBP_EXAMPLES = """\
<tracknumber>. <title>
<tracknumber> - <title>
<tracknumber> - <artist> - <title>
<artist> - <album>/<tracknumber>. <title>
<artist>/<album>/<tracknumber> - <title>"""
class UnderscoresToSpaces(FilterCheckButton):
_label = _("Replace _underscores with spaces")
_section = "tagsfrompath"
_key = "underscores"
_order = 1.0
def filter(self, tag, value):
开发者ID:urielz,项目名称:quodlibet,代码行数:31,代码来源:tagsfrompath.py
示例18: import
from glob import glob
from gi.repository import Gtk, GLib, GdkPixbuf
import quodlibet
from quodlibet import util
from quodlibet import app
from quodlibet.devices._base import Device
from quodlibet.library import SongFileLibrary
from quodlibet.pattern import FileFromPattern
from quodlibet.qltk.msg import ConfirmFileReplace
from quodlibet.util.path import (mtime, escape_filename,
strip_win32_incompat_from_path)
CACHE = os.path.join(quodlibet.get_user_dir(), 'cache')
class StorageDevice(Device):
protocol = 'storage'
defaults = {
'pattern': '<artist>/<album>/<title>',
'covers': True,
'unclutter': True,
}
__library = None
__pattern = None
def __init__(self, backend_id, device_id):
开发者ID:Konzertheld,项目名称:quodlibet,代码行数:31,代码来源:storage.py
示例19: print_w
package=__package__,
load_compiled=load_pyc)
for mod in modules:
try:
devices.extend(mod.devices)
except AttributeError:
print_w("%r doesn't contain any devices." % mod.__name__)
devices.sort()
if not util.is_osx() and not util.is_windows():
init_devices()
DEVICES = os.path.join(quodlibet.get_user_dir(), "devices")
config = ConfigParser.RawConfigParser()
config.read(DEVICES)
def write():
f = file(DEVICES, 'w')
config.write(f)
f.close()
# Return a constructor for a device given by a string
def get(name):
try:
return devices[[d.__name__ for d in devices].index(name)]
开发者ID:virtuald,项目名称:quodlibet,代码行数:31,代码来源:__init__.py
示例20: __init__
def __init__(self, library, player, headless=False, restore_cb=None):
super(QuodLibetWindow, self).__init__(dialog=False)
self.last_dir = get_home_dir()
self.__destroyed = False
self.__update_title(player)
self.set_default_size(550, 450)
main_box = Gtk.VBox()
self.add(main_box)
# create main menubar, load/restore accelerator groups
self.__library = library
ui = self.__create_menu(player, library)
accel_group = ui.get_accel_group()
self.add_accel_group(accel_group)
def scroll_and_jump(*args):
self.__jump_to_current(True, True)
keyval, mod = Gtk.accelerator_parse("<control><shift>J")
accel_group.connect(keyval, mod, 0, scroll_and_jump)
# dbus app menu
# Unity puts the app menu next to our menu bar. Since it only contains
# menu items also available in the menu bar itself, don't add it.
if not util.is_unity():
AppMenu(self, ui.get_action_groups()[0])
# custom accel map
accel_fn = os.path.join(quodlibet.get_user_dir(), "accels")
Gtk.AccelMap.load(accel_fn)
# save right away so we fill the file with example comments of all
# accels
Gtk.AccelMap.save(accel_fn)
menubar = ui.get_widget("/Menu")
# Since https://git.gnome.org/browse/gtk+/commit/?id=b44df22895c79
# toplevel menu items show an empty 16x16 image. While we don't
# need image items there UIManager creates them by default.
# Work around by removing the empty GtkImages
for child in menubar.get_children():
if isinstance(child, Gtk.ImageMenuItem):
child.set_image(None)
main_box.pack_start(menubar, False, True, 0)
# get the playlist up before other stuff
self.songlist = MainSongList(library, player)
self.songlist.show_all()
self.songlist.connect("key-press-event", self.__songlist_key_press)
self.songlist.connect_after(
'drag-data-received', self.__songlist_drag_data_recv)
self.song_scroller = SongListScroller(
ui.get_widget("/Menu/View/SongList"))
self.song_scroller.add(self.songlist)
self.qexpander = QueueExpander(
ui.get_widget("/Menu/View/Queue"), library, player)
self.playlist = PlaylistMux(
player, self.qexpander.model, self.songlist.model)
top_bar = TopBar(self, player, library)
main_box.pack_start(top_bar, False, True, 0)
self.top_bar = top_bar
self.__browserbox = Align(bottom=3)
main_box.pack_start(self.__browserbox, True, True, 0)
statusbox = StatusBarBox(self.songlist.model, player)
self.order = statusbox.order
self.repeat = statusbox.repeat
self.statusbar = statusbox.statusbar
main_box.pack_start(
Align(statusbox, border=3, top=-3, right=3),
False, True, 0)
self.songpane = ConfigRVPaned("memory", "queue_position", 0.75)
self.songpane.pack1(self.song_scroller, resize=True, shrink=False)
self.songpane.pack2(self.qexpander, resize=True, shrink=False)
self.__handle_position = self.songpane.get_property("position")
def songpane_button_press_cb(pane, event):
"""If we start to drag the pane handle while the
queue expander is unexpanded, expand it and move the handle
to the bottom, so we can 'drag' the queue out
"""
if event.window != pane.get_handle_window():
return False
if not self.qexpander.get_expanded():
self.qexpander.set_expanded(True)
pane.set_relative(1.0)
return False
self.songpane.connect("button-press-event", songpane_button_press_cb)
self.song_scroller.connect('notify::visible', self.__show_or)
#.........这里部分代码省略.........
开发者ID:Konzertheld,项目名称:quodlibet,代码行数:101,代码来源:quodlibetwindow.py
注:本文中的quodlibet.get_user_dir函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论