本文整理汇总了Python中quodlibet.util.dprint.print_e函数的典型用法代码示例。如果您正苦于以下问题:Python print_e函数的具体用法?Python print_e怎么用?Python print_e使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了print_e函数的17个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: __invoke
def __invoke(self, librarian, event, *args):
args = list(args)
if args and args[0]:
if isinstance(args[0], dict):
args[0] = SongWrapper(args[0])
elif isinstance(args[0], (set, list)):
args[0] = ListWrapper(args[0])
for plugin in list(self.__plugins.values()):
method_name = 'plugin_on_' + event.replace('-', '_')
handler = getattr(plugin, method_name, None)
def overridden(obj, name):
return name in type(obj).__dict__
if overridden(plugin, method_name):
try:
handler(*args)
except Exception:
print_e("Error during %s on %s" %
(method_name, type(plugin)))
errorhook()
if event not in ["removed", "changed"] and args:
from quodlibet import app
songs = args[0]
if not isinstance(songs, (set, list)):
songs = [songs]
songs = filter(None, songs)
check_wrapper_changed(librarian, app.window, songs)
开发者ID:zsau,项目名称:quodlibet,代码行数:29,代码来源:events.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: _init_gst
def _init_gst():
"""Call once before importing GStreamer"""
assert "gi.repository.Gst" not in sys.modules
import gi
# We don't want python-gst, it changes API..
assert "gi.overrides.Gst" not in sys.modules
sys.modules["gi.overrides.Gst"] = None
# blacklist some modules, simply loading can cause segfaults
sys.modules["gst"] = None
# We don't depend on Gst overrides, so make sure it's initialized.
try:
gi.require_version("Gst", "1.0")
from gi.repository import Gst
except (ValueError, ImportError):
return
if Gst.is_initialized():
return
from gi.repository import GLib
try:
ok, argv[:] = Gst.init_check(argv)
except GLib.GError:
print_e("Failed to initialize GStreamer")
# Uninited Gst segfaults: make sure no one can use it
sys.modules["gi.repository.Gst"] = None
else:
# monkey patching ahead
_fix_gst_leaks()
开发者ID:Muges,项目名称:quodlibet,代码行数:35,代码来源:_init.py
示例4: validator
def validator(pat):
"""Validates Patterns a bit.
TODO: Extract to somewhere good - see #1983"""
try:
str = Pattern(pat).format(DUMMY_AF)
return bool(str)
except Exception as e:
print_e("Problem with %s" % (pat,), e)
开发者ID:Muges,项目名称:quodlibet,代码行数:8,代码来源:mqtt.py
示例5: __set_mode
def __set_mode(self, player, mode):
selected_mode = next((m for m in self.__modes if m[0] == mode), None)
if selected_mode is None:
print_e("Invalid selected replaygain mode: %r" % mode)
selected_mode = self.__modes[0]
print_e("Falling back to replaygain mode: %r" % selected_mode[0])
player.replaygain_profiles[0] = selected_mode[2]
player.reset_replaygain()
开发者ID:LudoBike,项目名称:quodlibet,代码行数:9,代码来源:controls.py
示例6: plugin_songs
def plugin_songs(self, songs):
# Check this is a launch, not a configure
if self.com_index:
com = self.get_data(self.com_index)
print_d("Running %s" % com)
try:
com.run(songs)
except Exception, err:
print_e("Couldn't run command %s: %s %s at"
% (com.name, type(err), err))
ErrorMessage(
self.plugin_window,
_("Unable to run custom command %s" %
util.escape(self.com_index)),
util.escape(str(err))).run()
开发者ID:Konzertheld,项目名称:quodlibet,代码行数:15,代码来源:custom_commands.py
示例7: parse
def parse(self, args=None):
if args is None:
args = argv[1:]
from getopt import getopt, GetoptError
try:
opts, args = getopt(args, self.__shorts(), self.__longs())
except GetoptError as s:
s = str(s)
text = []
if "not recognized" in s:
text.append(
_("Option %r not recognized.") % s.split()[1])
elif "requires argument" in s:
text.append(
_("Option %r requires an argument.") % s.split()[1])
elif "unique prefix" in s:
text.append(
_("%r is not a unique prefix.") % s.split()[1])
if "help" in self.__args:
text.append(_("Try %s --help.") % argv[0])
print_e("\n".join(text))
raise SystemExit(True)
else:
transopts = {}
for o, a in opts:
if o.startswith("--"):
o = self.__translate_long.get(o[2:], o[2:])
elif o.startswith("-"):
o = self.__translate_short.get(o[1:], o[1:])
if o == "help":
print_(self.help())
raise SystemExit
elif o == "version":
print_(self.version())
raise SystemExit
elif o == "debug":
from quodlibet import const
const.DEBUG = True
if self.__args[o]:
transopts[o] = a
else:
transopts[o] = True
return transopts, args
开发者ID:ZDBioHazard,项目名称:quodlibet,代码行数:45,代码来源:__init__.py
示例8: _gst_init
def _gst_init():
"""Call once before importing GStreamer"""
assert "gi.repository.Gst" not in sys.modules
import gi
# We don't want python-gst, it changes API..
assert "gi.overrides.Gst" not in sys.modules
sys.modules["gi.overrides.Gst"] = None
# blacklist some modules, simply loading can cause segfaults
sys.modules["gst"] = None
# We don't depend on Gst overrides, so make sure it's initialized.
try:
gi.require_version("Gst", "1.0")
from gi.repository import Gst
except (ValueError, ImportError):
return
if Gst.is_initialized():
return
from gi.repository import GLib
try:
ok, argv = Gst.init_check(sys.argv)
except GLib.GError:
print_e("Failed to initialize GStreamer")
# Uninited Gst segfaults: make sure no one can use it
sys.modules["gi.repository.Gst"] = None
else:
sys.argv = argv
# monkey patching ahead
_fix_gst_leaks()
# https://bugzilla.gnome.org/show_bug.cgi?id=710447
import threading
threading.Thread(target=lambda: None).start()
开发者ID:Konzertheld,项目名称:quodlibet,代码行数:41,代码来源:__init__.py
示例9: _handle_songs
def _handle_songs(self, songs, playlist=None):
# Check this is a launch, not a configure
if self.com_index:
com = self.get_data(self.com_index)
if len(songs) > com.warn_threshold:
if not confirm_multi_song_invoke(
self, com.name, len(songs)):
print_d("User decided not to run on %d songs" % len(songs))
return
print_d("Running %s on %d song(s)" % (com, len(songs)))
try:
com.run(songs, playlist and playlist.name)
except Exception as err:
print_e("Couldn't run command %s: %s %s at:"
% (com.name, type(err), err, ))
print_exc()
ErrorMessage(
self.plugin_window,
_("Unable to run custom command %s") %
util.escape(self.com_index),
util.escape(str(err))).run()
开发者ID:LudoBike,项目名称:quodlibet,代码行数:21,代码来源:custom_commands.py
示例10: populate_menu
def populate_menu(self, menu, library, browser, playlists):
"""Appends items onto `menu` for each enabled playlist plugin,
separated as necessary. """
attrs = ['plugin_playlist', 'plugin_playlists']
if len(playlists) == 1:
attrs.append('plugin_single_playlist')
items = []
kinds = self.__plugins
kinds.sort(key=lambda plugin: plugin.PLUGIN_ID)
print_d("Found %d Playlist plugin(s): %s" % (len(kinds), kinds))
for Kind in kinds:
usable = any([callable(getattr(Kind, s)) for s in attrs])
if usable:
try:
items.append(Kind(playlists, library))
except:
print_e("Couldn't initialise playlist plugin %s: " % Kind)
print_exc()
items = [i for i in items if i.initialized]
if items:
menu.append(SeparatorMenuItem())
for item in items:
try:
menu.append(item)
args = (library, browser, playlists)
if item.get_submenu():
for subitem in item.get_submenu().get_children():
subitem.connect(
'activate', self.__on_activate, item, *args)
else:
item.connect(
'activate', self.__on_activate, item, *args)
except:
print_exc()
item.destroy()
开发者ID:ZDBioHazard,项目名称:quodlibet,代码行数:39,代码来源:playlist.py
示例11: _init_gtk
def _init_gtk():
"""Call before using Gtk/Gdk"""
import gi
# pygiaio 3.14rev16 switched to fontconfig for PangoCairo. As this results
# in 100% CPU under win7 revert it. Maybe we need to update the
# cache in the windows installer for it to work... but for now revert.
if is_windows():
environ['PANGOCAIRO_BACKEND'] = 'win32'
environ["GTK_CSD"] = "0"
# disable for consistency and trigger events seem a bit flaky here
if config.getboolean("settings", "scrollbar_always_visible"):
environ["GTK_OVERLAY_SCROLLING"] = "0"
try:
# not sure if this is available under Windows
gi.require_version("GdkX11", "3.0")
from gi.repository import GdkX11
GdkX11
except (ValueError, ImportError):
pass
gi.require_version("Gtk", "3.0")
gi.require_version("Gdk", "3.0")
gi.require_version("Pango", "1.0")
gi.require_version('Soup', '2.4')
from gi.repository import Gtk
from quodlibet.qltk import ThemeOverrider, gtk_version
# PyGObject doesn't fail anymore when init fails, so do it ourself
initialized, argv[:] = Gtk.init_check(argv)
if not initialized:
raise SystemExit("Gtk.init failed")
# include our own icon theme directory
theme = Gtk.IconTheme.get_default()
theme_search_path = get_image_dir()
assert os.path.exists(theme_search_path)
theme.append_search_path(theme_search_path)
# Force menu/button image related settings. We might show too many atm
# but this makes sure we don't miss cases where we forgot to force them
# per widget.
# https://bugzilla.gnome.org/show_bug.cgi?id=708676
warnings.filterwarnings('ignore', '.*g_value_get_int.*', Warning)
# some day... but not now
warnings.filterwarnings(
'ignore', '.*Stock items are deprecated.*', Warning)
warnings.filterwarnings(
'ignore', '.*:use-stock.*', Warning)
warnings.filterwarnings(
'ignore', '.*The property GtkAlignment:[^\s]+ is deprecated.*',
Warning)
settings = Gtk.Settings.get_default()
with warnings.catch_warnings():
warnings.simplefilter("ignore")
settings.set_property("gtk-button-images", True)
settings.set_property("gtk-menu-images", True)
if hasattr(settings.props, "gtk_primary_button_warps_slider"):
# https://bugzilla.gnome.org/show_bug.cgi?id=737843
settings.set_property("gtk-primary-button-warps-slider", True)
# Make sure PyGObject includes support for foreign cairo structs
try:
gi.require_foreign("cairo")
except ImportError:
print_e("PyGObject is missing cairo support")
exit(1)
css_override = ThemeOverrider()
if sys.platform == "darwin":
# fix duplicated shadows for popups with Gtk+3.14
style_provider = Gtk.CssProvider()
style_provider.load_from_data(b"""
GtkWindow {
box-shadow: none;
}
.tooltip {
border-radius: 0;
padding: 0;
}
.tooltip.background {
background-clip: border-box;
}
""")
css_override.register_provider("", style_provider)
if gtk_version[:2] >= (3, 20):
# https://bugzilla.gnome.org/show_bug.cgi?id=761435
style_provider = Gtk.CssProvider()
style_provider.load_from_data(b"""
spinbutton, button {
min-height: 1.8rem;
}
#.........这里部分代码省略.........
开发者ID:Muges,项目名称:quodlibet,代码行数:101,代码来源:_init.py
示例12: _init_gtk
def _init_gtk():
"""Call before using Gtk/Gdk"""
import gi
# pygiaio 3.14rev16 switched to fontconfig for PangoCairo. As this results
# in 100% CPU under win7 revert it. Maybe we need to update the
# cache in the windows installer for it to work... but for now revert.
if is_windows():
environ['PANGOCAIRO_BACKEND'] = 'win32'
environ["GTK_CSD"] = "0"
# disable for consistency and trigger events seem a bit flaky here
if is_osx():
environ["GTK_OVERLAY_SCROLLING"] = "0"
# make sure GdkX11 doesn't get used under Windows
if os.name == "nt":
sys.modules["gi.repository.GdkX11"] = None
try:
# not sure if this is available under Windows
gi.require_version("GdkX11", "3.0")
from gi.repository import GdkX11
GdkX11
except (ValueError, ImportError):
pass
gi.require_version("Gtk", "3.0")
gi.require_version("Gdk", "3.0")
gi.require_version("Pango", "1.0")
gi.require_version('Soup', '2.4')
from gi.repository import Gtk, Soup
from quodlibet.qltk import ThemeOverrider, gtk_version
# Work around missing annotation in older libsoup (Ubuntu 14.04 at least)
message = Soup.Message()
try:
message.set_request(None, Soup.MemoryUse.COPY, b"")
except TypeError:
orig = Soup.Message.set_request
def new_set_request(self, content_type, req_use, req_body):
return orig(self, content_type, req_use, req_body, len(req_body))
Soup.Message.set_request = new_set_request
# PyGObject doesn't fail anymore when init fails, so do it ourself
initialized, argv[:] = Gtk.init_check(argv)
if not initialized:
raise SystemExit("Gtk.init failed")
# include our own icon theme directory
theme = Gtk.IconTheme.get_default()
theme_search_path = get_image_dir()
assert os.path.exists(theme_search_path)
theme.append_search_path(theme_search_path)
# Force menu/button image related settings. We might show too many atm
# but this makes sure we don't miss cases where we forgot to force them
# per widget.
# https://bugzilla.gnome.org/show_bug.cgi?id=708676
warnings.filterwarnings('ignore', '.*g_value_get_int.*', Warning)
# some day... but not now
warnings.filterwarnings(
'ignore', '.*Stock items are deprecated.*', Warning)
warnings.filterwarnings(
'ignore', '.*:use-stock.*', Warning)
warnings.filterwarnings(
'ignore', '.*The property GtkAlignment:[^\s]+ is deprecated.*',
Warning)
settings = Gtk.Settings.get_default()
with warnings.catch_warnings():
warnings.simplefilter("ignore")
settings.set_property("gtk-button-images", True)
settings.set_property("gtk-menu-images", True)
if hasattr(settings.props, "gtk_primary_button_warps_slider"):
# https://bugzilla.gnome.org/show_bug.cgi?id=737843
settings.set_property("gtk-primary-button-warps-slider", True)
# Make sure PyGObject includes support for foreign cairo structs
try:
gi.require_foreign("cairo")
except AttributeError:
# older pygobject
pass
except ImportError:
print_e("PyGObject is missing cairo support")
exit(1)
css_override = ThemeOverrider()
# CSS overrides
if os.name == "nt":
# somehow borders are missing under Windows & Gtk+3.14
style_provider = Gtk.CssProvider()
style_provider.load_from_data(b"""
#.........这里部分代码省略.........
开发者ID:ZDBioHazard,项目名称:quodlibet,代码行数:101,代码来源:_init.py
示例13: _init_gtk
def _init_gtk():
"""Call before using Gtk/Gdk"""
import gi
# pygiaio 3.14rev16 switched to fontconfig for PangoCairo. As this results
# in 100% CPU under win7 revert it. Maybe we need to update the
# cache in the windows installer for it to work... but for now revert.
if is_windows():
os.environ['PANGOCAIRO_BACKEND'] = 'win32'
# disable for consistency and trigger events seem a bit flaky here
if is_osx():
os.environ["GTK_OVERLAY_SCROLLING"] = "0"
# make sure GdkX11 doesn't get used under Windows
if os.name == "nt":
sys.modules["gi.repository.GdkX11"] = None
try:
# not sure if this is available under Windows
gi.require_version("GdkX11", "3.0")
from gi.repository import GdkX11
GdkX11
except (ValueError, ImportError):
pass
gi.require_version("Gtk", "3.0")
gi.require_version("Gdk", "3.0")
gi.require_version("Pango", "1.0")
gi.require_version('Soup', '2.4')
from gi.repository import Gtk, Gdk
# PyGObject doesn't fail anymore when init fails, so do it ourself
initialized, argv = Gtk.init_check(sys.argv)
if not initialized:
raise SystemExit("Gtk.init failed")
sys.argv = list(argv)
# add Gtk.TreePath.__getitem__/__len__ for PyGObject 3.2
try:
Gtk.TreePath()[0]
except TypeError:
Gtk.TreePath.__getitem__ = lambda self, index: list(self)[index]
Gtk.TreePath.__len__ = lambda self: self.get_depth()
# GTK+ 3.4+ constants
if not hasattr(Gdk, "BUTTON_PRIMARY"):
Gdk.BUTTON_PRIMARY = 1
Gdk.BUTTON_MIDDLE = 2
Gdk.BUTTON_SECONDARY = 3
if not hasattr(Gdk, "EVENT_PROPAGATE"):
Gdk.EVENT_PROPAGATE = 0
Gdk.EVENT_STOP = 1
# include our own icon theme directory
theme = Gtk.IconTheme.get_default()
theme_search_path = get_image_dir()
assert os.path.exists(theme_search_path)
theme.append_search_path(theme_search_path)
# Force menu/button image related settings. We might show too many atm
# but this makes sure we don't miss cases where we forgot to force them
# per widget.
# https://bugzilla.gnome.org/show_bug.cgi?id=708676
warnings.filterwarnings('ignore', '.*g_value_get_int.*', Warning)
# some day... but not now
warnings.filterwarnings(
'ignore', '.*Stock items are deprecated.*', Warning)
warnings.filterwarnings(
'ignore', '.*:use-stock.*', Warning)
warnings.filterwarnings(
'ignore', '.*The property GtkAlignment:[^\s]+ is deprecated.*',
Warning)
settings = Gtk.Settings.get_default()
with warnings.catch_warnings():
warnings.simplefilter("ignore")
settings.set_property("gtk-button-images", True)
settings.set_property("gtk-menu-images", True)
if hasattr(settings.props, "gtk_primary_button_warps_slider"):
# https://bugzilla.gnome.org/show_bug.cgi?id=737843
settings.set_property("gtk-primary-button-warps-slider", True)
# Make sure PyGObject includes support for foreign cairo structs
try:
gi.require_foreign("cairo")
except AttributeError:
# older pygobject
pass
except ImportError:
print_e("PyGObject is missing cairo support")
exit(1)
# CSS overrides
if os.name == "nt":
# somehow borders are missing under Windows & Gtk+3.14
#.........这里部分代码省略.........
开发者ID:gbtami,项目名称:quodlibet,代码行数:101,代码来源:__init__.py
示例14: _gtk_init
def _gtk_init():
"""Call before using Gtk/Gdk"""
import gi
# make sure GdkX11 doesn't get used under Windows
if os.name == "nt":
sys.modules["gi.repository.GdkX11"] = None
try:
# not sure if this is available under Windows
gi.require_version("GdkX11", "3.0")
from gi.repository import GdkX11
GdkX11
except (ValueError, ImportError):
pass
gi.require_version("GLib", "2.0")
gi.require_version("Gtk", "3.0")
gi.require_version("Gdk", "3.0")
gi.require_version("GObject", "2.0")
gi.require_version("Pango", "1.0")
gi.require_version("GdkPixbuf", "2.0")
gi.require_version("Gio", "2.0")
from gi.repository import Gtk, GObject, Gdk, GdkPixbuf
# add Gtk.TreePath.__getitem__/__len__ for PyGObject 3.2
try:
Gtk.TreePath()[0]
except TypeError:
Gtk.TreePath.__getitem__ = lambda self, index: list(self)[index]
Gtk.TreePath.__len__ = lambda self: self.get_depth()
# GTK+ 3.4+ constants
if not hasattr(Gdk, "BUTTON_PRIMARY"):
Gdk.BUTTON_PRIMARY = 1
Gdk.BUTTON_MIDDLE = 2
Gdk.BUTTON_SECONDARY = 3
if not hasattr(Gdk, "EVENT_PROPAGATE"):
Gdk.EVENT_PROPAGATE = 0
Gdk.EVENT_STOP = 1
# On windows the default variants only do ANSI paths, so replace them.
# In some typelibs they are replaced by default, in some don't..
if os.name == "nt":
for name in ["new_from_file_at_scale", "new_from_file_at_size",
"new_from_file"]:
cls = GdkPixbuf.Pixbuf
setattr(cls, name, getattr(cls, name + "_utf8", name))
# https://bugzilla.gnome.org/show_bug.cgi?id=670372
if not hasattr(GdkPixbuf.Pixbuf, "savev"):
GdkPixbuf.Pixbuf.savev = GdkPixbuf.Pixbuf.save
# Force menu/button image related settings. We might show too many atm
# but this makes sure we don't miss cases where we forgot to force them
# per widget.
# https://bugzilla.gnome.org/show_bug.cgi?id=708676
warnings.filterwarnings('ignore', '.*g_value_get_int.*', Warning)
# some day... but not now
warnings.filterwarnings(
'ignore', '.*Stock items are deprecated.*', Warning)
warnings.filterwarnings(
'ignore', '.*:use-stock.*', Warning)
warnings.filterwarnings(
'ignore', '.*The property GtkAlignment:[^\s]+ is deprecated.*',
Warning)
settings = Gtk.Settings.get_default()
with warnings.catch_warnings():
warnings.simplefilter("ignore")
settings.set_property("gtk-button-images", True)
settings.set_property("gtk-menu-images", True)
if hasattr(settings.props, "gtk_primary_button_warps_slider"):
settings.set_property("gtk-primary-button-warps-slider", True)
# Make sure PyGObject includes support for foreign cairo structs
try:
gi.require_foreign("cairo")
except AttributeError:
# older pygobject
pass
except ImportError:
print_e("PyGObject is missing cairo support")
exit(1)
# CSS overrides
if os.name == "nt":
# somehow borders are missing under Windows & Gtk+3.14
style_provider = Gtk.CssProvider()
style_provider.load_from_data("""
.menu {
border: 1px solid @borders;
}
""")
Gtk.StyleContext.add_provider_for_screen(
Gdk.Screen.get_default(),
#.........这里部分代码省略.........
开发者ID:Konzertheld,项目名称:quodlibet,代码行数:101,代码来源:__init__.py
示例15: test_any_object
def test_any_object(self):
with capture_output() as (stdout, stderr):
print_e(42)
assert u"42" in stderr.getvalue()
开发者ID:ZDBioHazard,项目名称:quodlibet,代码行数:4,代码来源:test_util_dprint.py
示例16: test_basics
def test_basics(self):
with capture_output() as (stdout, stderr):
print_e(u"foo")
assert u"foo" in stderr.getvalue()
开发者ID:ZDBioHazard,项目名称:quodlibet,代码行数:4,代码来源:test_util_dprint.py
示例17: process_arguments
#.........这里部分代码省略.........
def is_time(str):
if str[0] not in "+-0123456789":
return False
elif str[0] in "+-":
str = str[1:]
parts = str.split(":")
if len(parts) > 3:
return False
else:
return not (False in [p.isdigit() for p in parts])
def is_float(str):
try:
float(str)
except ValueError:
return False
else:
return True
validators = {
"order": ["0", "1", "t", "toggle", "inorder", "shuffle",
"weighted", "onesong"].__contains__,
"repeat": ["0", "1", "t", "on", "off", "toggle"].__contains__,
"volume": is_vol,
"seek": is_time,
"set-rating": is_float,
}
cmds_todo = []
def queue(*args):
cmds_todo.append(args)
# XXX: to make startup work in case the desktop file isn't passed
# a file path/uri
if argv[-1] == "--play-file":
argv = argv[:-1]
opts, args = options.parse(argv[1:])
for command, arg in opts.items():
if command in controls:
queue(command)
elif command in controls_opt:
if command in validators and not validators[command](arg):
print_e(_("Invalid argument for '%s'.") % command)
print_e(_("Try %s --help.") % sys.argv[0])
exit_(True, notify_startup=True)
else:
queue(command, arg)
elif command == "status":
queue("status")
elif command == "print-playlist":
queue("dump-playlist")
elif command == "print-queue":
queue("dump-queue")
elif command == "list-browsers":
queue("dump-browsers")
elif command == "volume-up":
queue("volume +")
elif command == "volume-down":
queue("volume -")
elif command == "enqueue" or command == "unqueue":
try:
filename = URI(arg).filename
except ValueError:
filename = arg
queue(command, filename)
elif command == "enqueue-files":
queue(command, arg)
elif command == "play-file":
try:
filename = URI(arg).filename
except ValueError:
filename = os.path.abspath(util.path.expanduser(arg))
queue("play-file", filename)
elif command == "print-playing":
try:
queue("print-playing", args[0])
except IndexError:
queue("print-playing")
elif command == "print-query":
queue(command, arg)
elif command == "print-query-text":
queue(command)
elif command == "start-playing":
actions.append(command)
elif command == "no-plugins":
actions.append(command)
elif command == "run":
actions.append(command)
if cmds_todo:
for cmd in cmds_todo:
control(*cmd, **{"ignore_error": "run" in actions})
else:
# this will exit if it succeeds
control('focus', ignore_error=True)
return actions, cmds_todo
开发者ID:bossjones,项目名称:quodlibet,代码行数:101,代码来源:cli.py
注:本文中的quodlibet.util.dprint.print_e函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论