"""
from ..command import Command, Argument, Failure
-from ..plugin import Builtin
+from ..playlist import FilePlaylist
+from . import Builtin
+from .playlist import PlaylistNameArgument, PlaylistAddingCommand
class PlaylistsPlugin (Builtin):
super(PlaylistsPlugin, self).__init__(name='playlists')
self._commands = [
NextCommand(self), PreviousCommand(self), JumpCommand(self),
- IndexCommand(self), PlaylistListCommand(self)]
+ IndexCommand(self), PlaylistListCommand(self), NewCommand(self)]
# Define commands
help=self.__doc__, plugin=plugin)
def _run(self, hooke, inqueue, outqueue, params):
- hooke.playlists.jump(int(params['index'])) # HACK, int() should be handled by ui
+ hooke.playlists.jump(params['index'])
class IndexCommand (Command):
"""Print the index of the current playlist.
help=self.__doc__, plugin=plugin)
def _run(self, hooke, inqueue, outqueue, params):
- outqueue.put(hooke.playlists._index)
+ outqueue.put(hooke.playlists.index())
class PlaylistListCommand (Command):
"""Get the playlists in `hooke.playlists`.
def _run(self, hooke, inqueue, outqueue, params):
outqueue.put(list(hooke.playlists))
+
+
+class NewCommand (PlaylistAddingCommand):
+ """Create a new playlist.
+ """
+ def __init__(self, plugin):
+ super(NewCommand, self).__init__(
+ name='new playlist',
+ arguments=[
+ Argument(name='file', type='file', optional=True,
+ help="""
+Default filename for future saves.
+""".strip()),
+ ],
+ help=self.__doc__, plugin=plugin)
+
+ def _run(self, hooke, inqueue, outqueue, params):
+ p = FilePlaylist(
+ drivers=hooke.drivers,
+ path=params['file'],
+ )
+ playlist_names = [playlist.name for playlist in hooke.playlists]
+ if p.name in playlist_names or p.name == None:
+ p.name = params['output playlist'] # HACK: override input name. How to tell if it is callback-generated?
+ hooke.playlists.append(p)