-class ClearNoteCommand (Command):
- """Remove a note or notes from one of several Hooke objects.
- """
- def __init__(self):
- super(ClearNoteCommand, self).__init__(
- name='clear note',
- arguments=[
- Argument(
- name='target', type='object',
- callback=current_playlist_callback,
- help="""
-Target object for the note. Defaults to the current playlist.
-""".strip()),
- Argument(name='count', type='int', default=-1,
- help="""
-Number of notes to remove. Defaults to all notes.
-""".strip()),
- Argument(name='force', type='bool', default=False,
- help="""
-Run without prompting the user. Use if you save often or don't make
-typing mistakes ;).
-""".strip()),
- ],
- help=self.__doc__)
-
- def _run(self, hooke, inqueue, outqueue, params):
- num_notes = len(params['target'].info['note'])
- if params['count'] == -1:
- num_notes_removed = num_notes
- else:
- num_notes_removed = min(num_notes, params['count'])
- if params['force'] == False and num_notes_removed > 0:
- msg = 'Remove %d notes?' % num_notes_removed
- default = False
- outqueue.put(BooleanRequest(msg, default))
- result = inqueue.get()
- assert result.type == 'boolean'
- if result.value == False:
- return
- params['target'].info['note'] = \
- params['target'].info['note'][:-num_notes_removed]