X-Git-Url: http://git.tremily.us/?p=hooke.git;a=blobdiff_plain;f=hooke%2Fplugin%2Fplaylists.py;h=ccd5020ab09b8698a194d4423aac851730e77525;hp=2be0c9bdef44b78bcd3f0463da1f0015dd49dddd;hb=7c52f54a7fc8654bc6783ff815c93166b917faf5;hpb=565f9d7b69d2e4a9ea447d7a50f8f835c3e08642 diff --git a/hooke/plugin/playlists.py b/hooke/plugin/playlists.py index 2be0c9b..ccd5020 100644 --- a/hooke/plugin/playlists.py +++ b/hooke/plugin/playlists.py @@ -22,7 +22,9 @@ lists of :class:`hooke.playlist.Playlist` classes. """ 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): @@ -30,7 +32,7 @@ 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 @@ -71,7 +73,7 @@ Index of target curve. 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. @@ -84,7 +86,7 @@ class IndexCommand (Command): 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`. @@ -96,3 +98,28 @@ class PlaylistListCommand (Command): 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)