From 5ce867837bf1d563c63fd047df92be10f7c758aa Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Fri, 30 Jul 2010 15:57:11 -0400 Subject: [PATCH] Added 'get playlist' and hooke.plugin.playlists --- hooke/plugin/__init__.py | 1 + hooke/plugin/playlist.py | 20 ++++++-- hooke/plugin/playlists.py | 98 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+), 5 deletions(-) create mode 100644 hooke/plugin/playlists.py diff --git a/hooke/plugin/__init__.py b/hooke/plugin/__init__.py index 4ce9020..80c2b52 100644 --- a/hooke/plugin/__init__.py +++ b/hooke/plugin/__init__.py @@ -61,6 +61,7 @@ BUILTIN_MODULES = [ 'license', 'note', 'playlist', + 'playlists', 'system', ] """List of builtin modules. TODO: autodiscovery diff --git a/hooke/plugin/playlist.py b/hooke/plugin/playlist.py index 62137d0..b9d5240 100644 --- a/hooke/plugin/playlist.py +++ b/hooke/plugin/playlist.py @@ -34,7 +34,7 @@ class PlaylistPlugin (Builtin): super(PlaylistPlugin, self).__init__(name='playlist') self._commands = [ NextCommand(self), PreviousCommand(self), JumpCommand(self), - IndexCommand(self), CurveListCommand(self), + GetCommand(self), IndexCommand(self), CurveListCommand(self), SaveCommand(self), LoadCommand(self), AddCommand(self), AddGlobCommand(self), RemoveCommand(self), FilterCommand(self), NoteFilterCommand(self)] @@ -135,19 +135,29 @@ class IndexCommand (Command): def _run(self, hooke, inqueue, outqueue, params): outqueue.put(params['playlist']._index) +class GetCommand (Command): + """Return a :class:`hooke.playlist.Playlist`. + """ + def __init__(self, plugin): + super(GetCommand, self).__init__( + name='get playlist', + arguments=[PlaylistArgument], + help=self.__doc__, plugin=plugin) + + def _run(self, hooke, inqueue, outqueue, params): + outqueue.put(params['playlist']) + class CurveListCommand (Command): """Get the curves in a playlist. """ def __init__(self, plugin): super(CurveListCommand, self).__init__( name='playlist curves', - arguments=[ - PlaylistArgument, - ], + arguments=[PlaylistArgument], help=self.__doc__, plugin=plugin) def _run(self, hooke, inqueue, outqueue, params): - outqueue.put([c for c in params['playlist']]) + outqueue.put(list(params['playlist'])) class SaveCommand (Command): """Save a playlist. diff --git a/hooke/plugin/playlists.py b/hooke/plugin/playlists.py new file mode 100644 index 0000000..485904f --- /dev/null +++ b/hooke/plugin/playlists.py @@ -0,0 +1,98 @@ +# Copyright (C) 2010 W. Trevor King +# +# This file is part of Hooke. +# +# Hooke is free software: you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation, either +# version 3 of the License, or (at your option) any later version. +# +# Hooke is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with Hooke. If not, see +# . + +"""The ``playlists`` module provides :class:`PlaylistsPlugin` and +several associated :class:`hooke.command.Command`\s for handling +lists of :class:`hooke.playlist.Playlist` classes. +""" + +from ..command import Command, Argument, Failure +from ..plugin import Builtin + + +class PlaylistsPlugin (Builtin): + def __init__(self): + super(PlaylistsPlugin, self).__init__(name='playlists') + self._commands = [ + NextCommand(self), PreviousCommand(self), JumpCommand(self), + IndexCommand(self), PlaylistListCommand(self)] + + +# Define commands + +class NextCommand (Command): + """Move `hooke.playlists` to the next playlist. + """ + def __init__(self, plugin): + super(NextCommand, self).__init__( + name='next playlist', + help=self.__doc__, plugin=plugin) + + def _run(self, hooke, inqueue, outqueue, params): + hooke.playlists.next() + +class PreviousCommand (Command): + """Move `hooke.playlists` to the previous playlist. + """ + def __init__(self, plugin): + super(PreviousCommand, self).__init__( + name='previous playlist', + help=self.__doc__, plugin=plugin) + + def _run(self, hooke, inqueue, outqueue, params): + hooke.playlists.previous() + +class JumpCommand (Command): + """Move `hooke.playlists` to a given playlist. + """ + def __init__(self, plugin): + super(JumpCommand, self).__init__( + name='jump to playlist', + arguments=[ + Argument(name='index', type='int', optional=False, help=""" +Index of target curve. +""".strip()), + ], + 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 + +class IndexCommand (Command): + """Print the index of the current playlist. + + The first playlist has index 0. + """ + def __init__(self, plugin): + super(IndexCommand, self).__init__( + name='playlist index', + help=self.__doc__, plugin=plugin) + + def _run(self, hooke, inqueue, outqueue, params): + outqueue.put(hooke.playlists._index) + +class PlaylistListCommand (Command): + """Get the playlists in `hooke.playlists`. + """ + def __init__(self, plugin): + super(PlaylistListCommand, self).__init__( + name='playlists', + help=self.__doc__, plugin=plugin) + + def _run(self, hooke, inqueue, outqueue, params): + outqueue.put(list(hooke.playlists)) -- 2.26.2