"""
from ..command import Command, Argument, Failure
-from ..playlist import FilePlaylist
from ..plugin import Builtin
-from ..plugin.playlist import current_playlist_callback
+from ..plugin.curve import current_curve_callback
class NotePlugin (Builtin):
def __init__(self):
super(NotePlugin, self).__init__(name='note')
self._commands = [
- AddNoteCommand(self), ClearNoteCommand(self), GetNoteCommand(self)]
+ SetNoteCommand(self), GetNoteCommand(self)]
-class AddNoteCommand (Command):
+class SetNoteCommand (Command):
"""Add a note to one of several Hooke objects.
"""
def __init__(self, plugin):
- super(AddNoteCommand, self).__init__(
- name='add note',
+ super(SetNoteCommand, self).__init__(
+ name='set note',
arguments=[
Argument(
name='target', type='object',
- callback=current_playlist_callback,
+ callback=current_curve_callback,
help="""
-Target object for the note. Defaults to the current playlist.
+Target object for the note. Defaults to the current curve.
""".strip()),
Argument(
name='note', type='string', optional=False,
help=self.__doc__, plugin=plugin)
def _run(self, hooke, inqueue, outqueue, params):
- params['target'].info['note'].append(params['note'])
+ params['target'].info['note'] = params['note']
-class ClearNoteCommand (Command):
- """Remove a note or notes from one of several Hooke objects.
- """
- def __init__(self, plugin):
- 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__, plugin=plugin)
-
- 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]
class GetNoteCommand (Command):
"""Retrieve notes from one of several Hooke objects.
arguments=[
Argument(
name='target', type='object',
- callback=current_playlist_callback,
+ callback=current_curve_callback,
help="""
-Target object for the note. Defaults to the current playlist.
+Target object for the note. Defaults to the current curve.
""".strip()),
],
help=self.__doc__, plugin=plugin)
# WANTS_CHARS so the panel doesn't eat the Return key.\r
# size=(160, 200),\r
), 'left'),\r
-# ('note', panel.note.Note(\r
-# parent=self\r
-# style=wx.WANTS_CHARS|wx.NO_BORDER,\r
-# size=(160, 200)), 'left'),\r
+ (panel.PANELS['note'](\r
+ callbacks = {\r
+ '_on_update':self._on_update_note,\r
+ },\r
+ parent=self,\r
+ style=wx.WANTS_CHARS|wx.NO_BORDER,\r
+# size=(160, 200),\r
+ ), 'left'),\r
# ('notebook', Notebook(\r
# parent=self,\r
# pos=wx.Point(client_size.x, client_size.y),\r
self.Bind(aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self._on_notebook_page_close)\r
\r
return # TODO: cleanup\r
- for value in self._c['menu bar']._c['view']._c.values():\r
- self.Bind(wx.EVT_MENU_RANGE, self._on_view, value)\r
-\r
- self.Bind(wx.EVT_MENU, self._on_save_perspective,\r
- self._c['menu bar']._c['perspective']._c['save'])\r
- self.Bind(wx.EVT_MENU, self._on_delete_perspective,\r
- self._c['menu bar']._c['perspective']._c['delete'])\r
-\r
treeCtrl = self._c['folders'].GetTreeCtrl()\r
treeCtrl.Bind(wx.EVT_LEFT_DCLICK, self._on_dir_ctrl_left_double_click)\r
\r
- # TODO: playlist callbacks\r
- return # TODO: cleanup\r
- evtmgr.eventManager.Register(self.OnUpdateNote, wx.EVT_BUTTON, self.panelNote.UpdateButton)\r
#property editor\r
self.panelProperties.pg.Bind(wxpg.EVT_PG_CHANGED, self.OnPropGridChanged)\r
#results panel\r
playlist = results[0]\r
else:\r
raise NotImplementedError()\r
+ if 'note' in self._c:\r
+ print sorted(curve.info.keys())\r
+ self._c['note'].set_text(curve.info['note'])\r
if 'playlist' in self._c:\r
self._c['playlist']._c['tree'].set_selected_curve(\r
playlist, curve)\r
def _on_size(self, event):\r
event.Skip()\r
\r
- def OnUpdateNote(self, event):\r
- '''\r
- Saves the note to the active file.\r
- '''\r
- active_file = self.GetActiveFile()\r
- active_file.note = self.panelNote.Editor.GetValue()\r
-\r
- def UpdateNote(self):\r
- #update the note for the active file\r
- active_file = self.GetActiveFile()\r
- if active_file is not None:\r
- self.panelNote.Editor.SetValue(active_file.note)\r
-\r
def UpdatePlaylistsTreeSelection(self):\r
playlist = self.GetActivePlaylist()\r
if playlist is not None:\r
\r
\r
\r
+ # Note panel interface\r
+\r
+ def _on_update_note(self, _class, method, text):\r
+ """Sets the note for the active curve.\r
+ """\r
+ # TODO: note list interface in NotePanel.\r
+ self.execute_command(\r
+ command=self._command_by_name('set note'),\r
+ args={'note':text})\r
+\r
+\r
+\r
# Playlist panel interface\r
\r
def _on_user_delete_playlist(self, _class, method, playlist):\r
\r
PANEL_MODULES = [\r
'commands',\r
-# 'note',\r
+ 'note',\r
# 'notebook',\r
'output',\r
'playlist',\r
sizer.Fit(self)\r
\r
self.Bind(wx.EVT_BUTTON, self._on_execute_button)\r
- self._callbacks = callbacks\r
\r
def _on_execute_button(self, event):\r
self._c['tree'].execute()\r
\r
import wx\r
\r
+from ....util.callback import callback, in_callback\r
from . import Panel\r
\r
\r
class NotePanel (Panel, wx.Panel):\r
def __init__(self, callbacks=None, **kwargs):\r
- super(Note, self).__init__(name='note', callbacks=callbacks, **kwargs)\r
-\r
- self.Editor = wx.TextCtrl(self, style=wx.TE_MULTILINE)\r
-\r
- self.UpdateButton = wx.Button(self, -1, 'Update note')\r
-\r
+ super(NotePanel, self).__init__(\r
+ name='note', callbacks=callbacks, **kwargs)\r
+\r
+ self._c = {\r
+ 'editor': wx.TextCtrl(\r
+ parent=self,\r
+ style=wx.TE_MULTILINE),\r
+ 'update': wx.Button(\r
+ parent=self,\r
+ label='Update note'),\r
+ }\r
sizer = wx.BoxSizer(wx.VERTICAL)\r
- sizer.Add(self.Editor, 1, wx.EXPAND)\r
- sizer.Add(self.UpdateButton, 0, wx.EXPAND)\r
-\r
+ sizer.Add(self._c['editor'], 1, wx.EXPAND)\r
+ sizer.Add(self._c['update'], 0, wx.EXPAND)\r
self.SetSizer(sizer)\r
self.SetAutoLayout(True)\r
+\r
+ self.Bind(wx.EVT_BUTTON, self._on_update)\r
+\r
+ def set_text(self, text):\r
+ self._c['editor'].SetValue(text)\r
+\r
+ def _on_update(self, event):\r
+ text = self._c['editor'].GetValue()\r
+ in_callback(self, text)\r