hooke.git
13 years agoBroke out Hooke.run and Hooke.run_lines into HookeRunner.
W. Trevor King [Sun, 16 May 2010 13:53:53 +0000 (09:53 -0400)]
Broke out Hooke.run and Hooke.run_lines into HookeRunner.

This allows the main process access to the command process' possibly
altered Hooke instance.  For example:
  >>> h = Hooke()
  >>> r = HookeRunner()
  >>> h = r.run_lines(h, ['load_playlist test/data/test'])
  >>> h = r.run_lines(h, ['curve_info --all=True'])
With the old implementation, second run_lines() call would fail
because the playlist was only loaded in the first command process'
Hooke instance, not the Hooke instance that the main (UI) process
held.

13 years agoPull Hooke.run*() multiprocessing setup/teardown into ._setup/_cleanup_run.
W. Trevor King [Sun, 16 May 2010 13:29:51 +0000 (09:29 -0400)]
Pull Hooke.run*() multiprocessing setup/teardown into ._setup/_cleanup_run.

Limits code duplication between .run() and .run_lines().

13 years agoAdd hooke.playlist.NoteIndexList.__str__() method.
W. Trevor King [Sun, 16 May 2010 12:21:20 +0000 (08:21 -0400)]
Add hooke.playlist.NoteIndexList.__str__() method.

Now playlists etc. will flatten themselves to strings with:
  '...%s...' % instance.

13 years agoUnset executible bits in curvetools.py and jumpstat.py permissions.
W. Trevor King [Sun, 16 May 2010 11:49:54 +0000 (07:49 -0400)]
Unset executible bits in curvetools.py and jumpstat.py permissions.

13 years agoRan update_copyright.py, updating all the copyright blurbs and adding AUTHORS.
W. Trevor King [Sun, 16 May 2010 11:26:28 +0000 (07:26 -0400)]
Ran update_copyright.py, updating all the copyright blurbs and adding AUTHORS.

13 years agoUse ALIASES and AUTHOR_HACKS handling in update_copyright.update_authors.
W. Trevor King [Sun, 16 May 2010 11:26:00 +0000 (07:26 -0400)]
Use ALIASES and AUTHOR_HACKS handling in update_copyright.update_authors.

The previously generated AUTHORS file was the raw list of VCS
commiters.

13 years agoUpdated copyright blurbs in all files to '# Copyright'
W. Trevor King [Sun, 16 May 2010 11:18:31 +0000 (07:18 -0400)]
Updated copyright blurbs in all files to '# Copyright'

This tag will be replaced by update_copyright.py with the full
copyright blurb for each file.

13 years agoFurther author/year workarounds in update_copyright.py.
W. Trevor King [Sun, 16 May 2010 11:18:00 +0000 (07:18 -0400)]
Further author/year workarounds in update_copyright.py.

13 years agoAdd AUTHOR_HACKS and YEAR_HACKS to update_copyright.py
W. Trevor King [Sun, 16 May 2010 10:51:39 +0000 (06:51 -0400)]
Add AUTHOR_HACKS and YEAR_HACKS to update_copyright.py

This works around holes in the versioning where files were initially
released before being added to the versioning system, or they were
never committed under the name of one of the authors.

13 years agoUpdate canonical copyright names for 'illysam' and 'pancaldi.paulo'.
W. Trevor King [Sat, 15 May 2010 12:25:23 +0000 (08:25 -0400)]
Update canonical copyright names for 'illysam' and 'pancaldi.paulo'.

Also add the missing '.82' to Fabrizio's alias.

13 years agoFix some doctests in update_copyright.py.
W. Trevor King [Sat, 15 May 2010 11:58:48 +0000 (07:58 -0400)]
Fix some doctests in update_copyright.py.

And make some adjustments so that update_copyright.py can update its
own copyright blurb without changing anything else inside itself.

13 years agoRearrange license text and add update_copyright.py.
W. Trevor King [Fri, 14 May 2010 18:40:14 +0000 (14:40 -0400)]
Rearrange license text and add update_copyright.py.

Following http://www.gnu.org/licenses/gpl-howto.html
  * Moved LGPLv3 text from LICENSE -> COPYING.LESSER
  * Brought in GPLv3 text -> COPYING

update_copyright.py automates the maitenance of boilerplate copyright
information at the head of every file.

13 years agoAdded integration test directory test/ and load_playlist test.
W. Trevor King [Fri, 14 May 2010 15:32:17 +0000 (11:32 -0400)]
Added integration test directory test/ and load_playlist test.

Run all integration tests with:
  nosetests --with-doctest --doctest-tests test/

13 years agoUpdated .hgignore to ignore documentation build files.
W. Trevor King [Fri, 14 May 2010 15:19:08 +0000 (11:19 -0400)]
Updated .hgignore to ignore documentation build files.

13 years agoAdded .hgignore masking *.pyc files
W. Trevor King [Fri, 14 May 2010 14:40:53 +0000 (10:40 -0400)]
Added .hgignore masking *.pyc files

13 years agoAdded distutils-based setup.py.
W. Trevor King [Fri, 14 May 2010 14:39:58 +0000 (10:39 -0400)]
Added distutils-based setup.py.

13 years agoFix git->hg and wget -o -> -O in doc/install.txt snapshot command.
W. Trevor King [Fri, 14 May 2010 13:22:52 +0000 (09:22 -0400)]
Fix git->hg and wget -o -> -O in doc/install.txt snapshot command.

Path change because of Git->Mercurial migration.

wget
  -O --output-document    sets the document file.
  -o --output-file        sets the logfile.

13 years agoUpdated fork project info for Rolf and my branches in doc/install.txt.
W. Trevor King [Fri, 14 May 2010 13:17:04 +0000 (09:17 -0400)]
Updated fork project info for Rolf and my branches in doc/install.txt.

I think I found where Rolf's code is (SVN illysam branch), and I
migrated my Git-versioned fork to Mercurial.

13 years agoAdd --script and --command to bin/hooke
W. Trevor King [Thu, 13 May 2010 14:41:09 +0000 (10:41 -0400)]
Add --script and --command to bin/hooke

13 years agoSave playlist digest on loading.
W. Trevor King [Thu, 13 May 2010 14:08:54 +0000 (10:08 -0400)]
Save playlist digest on loading.

The previous implementation felt that playlists were not saved
(.is_saved() -> False) when the playlists had not been altered since
loading.

We *don't* save the digest when we load from a string, because
that string is not necessarily on disk and we *do* want to save
it, even if the playlist hasn't change since loading.

I also removed the return bits, since FilePlaylist._from_xml_doc()
doesn't return anything.

13 years agoActually set self.name in hooke.playlist.FilePlaylist.set_path
W. Trevor King [Thu, 13 May 2010 11:41:46 +0000 (07:41 -0400)]
Actually set self.name in hooke.playlist.FilePlaylist.set_path

13 years agoFix str() bug in hooke.ui.commandline.LocalExitCommand save msg.
W. Trevor King [Thu, 13 May 2010 11:40:00 +0000 (07:40 -0400)]
Fix str() bug in hooke.ui.commandline.LocalExitCommand save msg.

Old implemtation crashed if Playlist.name was None.

13 years agoMove hooke/test/default.000 -> test/data/picoforce.000
W. Trevor King [Thu, 13 May 2010 11:34:41 +0000 (07:34 -0400)]
Move hooke/test/default.000 -> test/data/picoforce.000

+ corresponding update to test/data/test.hkp.

13 years agoActually set self.path in hooke.playlist.FilePlaylist.set_path
W. Trevor King [Thu, 13 May 2010 11:33:08 +0000 (07:33 -0400)]
Actually set self.path in hooke.playlist.FilePlaylist.set_path

13 years agoAdd all_drivers_callback to hooke.plugin.playlist.LoadCommand.
W. Trevor King [Thu, 13 May 2010 11:27:58 +0000 (07:27 -0400)]
Add all_drivers_callback to hooke.plugin.playlist.LoadCommand.

I can't imagine the user not wanting to use all available playlists.
They still can, but specifiying a sublist is now optional.

13 years agoFix typos in hooke.playlist.FilePlaylist.set_path
W. Trevor King [Thu, 13 May 2010 11:24:52 +0000 (07:24 -0400)]
Fix typos in hooke.playlist.FilePlaylist.set_path

13 years agoFix bug in hooke.ui.commandline.DoCommand._check_argument_length() max_arg calculation.
W. Trevor King [Thu, 13 May 2010 10:55:29 +0000 (06:55 -0400)]
Fix bug in hooke.ui.commandline.DoCommand._check_argument_length() max_arg calculation.

13 years agoMoved test and mfp_igor_scripts directories around
W. Trevor King [Thu, 13 May 2010 10:48:13 +0000 (06:48 -0400)]
Moved test and mfp_igor_scripts directories around

13 years agoSplit out "Troubleshooting" into doc/bugs.txt.
W. Trevor King [Thu, 13 May 2010 10:31:56 +0000 (06:31 -0400)]
Split out "Troubleshooting" into doc/bugs.txt.

This section will probably grow ;).
+ other textual cleanups.

13 years agoFix doc/index.txt references to auto-generated pages
W. Trevor King [Thu, 13 May 2010 10:16:50 +0000 (06:16 -0400)]
Fix doc/index.txt references to auto-generated pages

:ref:`~...` -> :ref:`...` following
  http://sphinx.pocoo.org/_sources/contents.txt

13 years agoDocumentation cleanups.
W. Trevor King [Thu, 13 May 2010 10:06:22 +0000 (06:06 -0400)]
Documentation cleanups.

Specifically:
  * Escape *nix -> \*nix, because the bare * looks like an emphasis
    start mark.
  * Use :file:`...` to denote files.
  * Fix FHS reference '_ ..' -> '.. _'
  * Add a link to Sphinx's markup extensions.
  * Remove superfluous "Hooke" from section titles.
  * Use correct section linking:
      X.txt -> X
      :doc:`X`
    see
      http://sphinx.pocoo.org/concepts.html#document-names
      http://sphinx.pocoo.org/markup/inline.html#role-doc
  * Use two spaces (not one) at start of sentences.
  * `code` -> ``code`` (the way I had things originally :p).  See
      http://sphinx.pocoo.org/markup/inline.html#role-samp

13 years agoDon't abbreviate multiprocessing.Queue in hacking.txt
W. Trevor King [Wed, 12 May 2010 23:44:21 +0000 (19:44 -0400)]
Don't abbreviate multiprocessing.Queue in hacking.txt

13 years agoRemove ~~ in info attribute reference of doc/hacking.txt
W. Trevor King [Wed, 12 May 2010 22:16:40 +0000 (18:16 -0400)]
Remove ~~ in info attribute reference of doc/hacking.txt

13 years agoFix hooke.utils -> hooke.util typo in doc/hacking.txt
W. Trevor King [Wed, 12 May 2010 22:11:00 +0000 (18:11 -0400)]
Fix hooke.utils -> hooke.util typo in doc/hacking.txt

13 years agoAdd :class: bit to many `...` escapes in hacking.txt and index.txt
W. Trevor King [Wed, 12 May 2010 22:03:39 +0000 (18:03 -0400)]
Add :class: bit to many `...` escapes in hacking.txt and index.txt

13 years agoStandardize example indentation to 4 spaces in doc/tutorial.txt
W. Trevor King [Wed, 12 May 2010 21:48:39 +0000 (17:48 -0400)]
Standardize example indentation to 4 spaces in doc/tutorial.txt

13 years agoSync doc/tutorial.txt splash text with hooke.ui.UserInterface._splash_text.
W. Trevor King [Wed, 12 May 2010 21:39:40 +0000 (17:39 -0400)]
Sync doc/tutorial.txt splash text with hooke.ui.UserInterface._splash_text.

Also:
 * Flesh out doc/architecture.txt
 * Replace a number of '``' escapes with '`'.  My reStructuredText was
   rusty on the first pass through the documentation ;).

13 years agoNothing useful left in hooke_cli, removed.
W. Trevor King [Wed, 12 May 2010 20:04:34 +0000 (16:04 -0400)]
Nothing useful left in hooke_cli, removed.

13 years agoMore commands moved from hooke_cli to hooke.ui.gui.plotcommands stub
W. Trevor King [Wed, 12 May 2010 20:03:11 +0000 (16:03 -0400)]
More commands moved from hooke_cli to hooke.ui.gui.plotcommands stub

13 years agoMoved config handling commands from hooke_cli to hooke.plugin.config.
W. Trevor King [Wed, 12 May 2010 19:57:33 +0000 (15:57 -0400)]
Moved config handling commands from hooke_cli to hooke.plugin.config.

Also:
  * Moved construct_graph and IsSubclass from hooke.plugin to
    hooke.util.pluggable to avoid import cycles and cleanup
    hooke.plugin.
  * Added hooke.interaction.ReloadUserInterfaceConfig to trigger UI
    reconfigure.
  * Added hooke.ui.UserInterface.reload_config (triggered by above).
  * Pass CommandLine instance to HookeCmd, so it can reconfigure
    the UI.

13 years agoMoved printlist command from hooke_cli -> hooke.plugin.playlist.CurveListCommand.
W. Trevor King [Wed, 12 May 2010 19:03:17 +0000 (15:03 -0400)]
Moved printlist command from hooke_cli -> hooke.plugin.playlist.CurveListCommand.

13 years agoMoved index command from hooke_cli -> hooke.plugin.playlist.IndexCommand.
W. Trevor King [Wed, 12 May 2010 18:59:04 +0000 (14:59 -0400)]
Moved index command from hooke_cli -> hooke.plugin.playlist.IndexCommand.

13 years agoRemoved next/previous commands from hooke_cli
W. Trevor King [Wed, 12 May 2010 18:54:48 +0000 (14:54 -0400)]
Removed next/previous commands from hooke_cli

Superseded by hooke.plugin.playlist commands.

13 years agoMoved plot commands from hooke_cli -> hooke.ui.gui.plotcommands stub.
W. Trevor King [Wed, 12 May 2010 18:53:45 +0000 (14:53 -0400)]
Moved plot commands from hooke_cli -> hooke.ui.gui.plotcommands stub.

13 years agoMoved export command from hooke_cli -> hooke.ui.gui.export stub.
W. Trevor King [Wed, 12 May 2010 18:52:20 +0000 (14:52 -0400)]
Moved export command from hooke_cli -> hooke.ui.gui.export stub.

13 years agoMoved txt command from hooke_cli -> hooke.plugin.curvetools stub.
W. Trevor King [Wed, 12 May 2010 18:51:11 +0000 (14:51 -0400)]
Moved txt command from hooke_cli -> hooke.plugin.curvetools stub.

13 years agoMoved note handling commands to hooke.plugin.note.
W. Trevor King [Wed, 12 May 2010 18:46:35 +0000 (14:46 -0400)]
Moved note handling commands to hooke.plugin.note.

Also:
  * Fixed graph dependency creation in hooke.plugin.construct_graph.
    The previous implemetation had Plugin instances as parents, not
    Node instances.
  * Moved a few builtin modules from hooke.plugin.PLUGIN_MODULES to
    .BUILTIN_MODULES.
  * Fixup unsaved playlist detection in
    hooke.ui.commandline.LocalExitCommand._run

13 years agonotelog has been superseded by hooke.plugin.playlist.SaveCommand
W. Trevor King [Wed, 12 May 2010 18:08:05 +0000 (14:08 -0400)]
notelog has been superseded by hooke.plugin.playlist.SaveCommand

The notes will be stored in Playlist.info['note'], and the info dict
is saved in the playlist file format.

13 years agoRun hooke.command.Argument.callback every time (if defined).
W. Trevor King [Wed, 12 May 2010 18:00:57 +0000 (14:00 -0400)]
Run hooke.command.Argument.callback every time (if defined).

The previous implemtation which only ran the callback if a value was
given was too confusing.

Also:
  * Added hooke.plugin.playlist.NoteFilterCommand.  In general, I
    think running commands this way is pretty awkward.  We should
    probably just use a Python interpreter instead of cmd.Cmd, but
    for now, NoteFilterCommand provides something like the old
    'copylog' functionality.
  * Removed a bunch of superseded code from hooke.hooke_cli.

13 years agoFix hooke.ui.commandline imports following hooke.interaction creation.
W. Trevor King [Wed, 12 May 2010 17:51:17 +0000 (13:51 -0400)]
Fix hooke.ui.commandline imports following hooke.interaction creation.

13 years agoMoved hooke.libpeakspot -> hooke.plugin.peakspot
W. Trevor King [Wed, 12 May 2010 17:41:06 +0000 (13:41 -0400)]
Moved hooke.libpeakspot -> hooke.plugin.peakspot

13 years agoMoved hooke.formatter -> hooke.ui.gui.formatter.
W. Trevor King [Wed, 12 May 2010 17:39:11 +0000 (13:39 -0400)]
Moved hooke.formatter -> hooke.ui.gui.formatter.

The code seemed GUI-specific.

13 years agoMoved Interaction related classes from hooke.command -> hooke.interaction.
W. Trevor King [Wed, 12 May 2010 17:36:27 +0000 (13:36 -0400)]
Moved Interaction related classes from hooke.command -> hooke.interaction.

Breaking them out makes hooke.command clearer for new readers.

Also moved remaining libhooke functionality ->
hooke.ui.gui.point_request, although it will need reworking (like the
rest of the stuff in hooke.ui.gui) once I finish the architecture
transition.

13 years agoRemoved hooke.liboutlet/.libviewer/.plugin.viewer.
W. Trevor King [Wed, 12 May 2010 17:12:41 +0000 (13:12 -0400)]
Removed hooke.liboutlet/.libviewer/.plugin.viewer.

Functionality superseded by hooke.ui.

13 years agoRemoved hooke.libinput
W. Trevor King [Wed, 12 May 2010 16:54:35 +0000 (12:54 -0400)]
Removed hooke.libinput

Functionality superseded by hooke.command.Request/.Response.

13 years agoUse *_SETTING_SECTION in hooke.plugin/.driver/.ui for section name
W. Trevor King [Wed, 12 May 2010 15:49:26 +0000 (11:49 -0400)]
Use *_SETTING_SECTION in hooke.plugin/.driver/.ui for section name

Avoid constant duplication in code (brittle).

13 years agoRemoved hooke.hooke.TestHooke.
W. Trevor King [Wed, 12 May 2010 15:23:03 +0000 (11:23 -0400)]
Removed hooke.hooke.TestHooke.

I couldn't find a flexible enough equality comparison between the two
Hooke instances.  It doesn't seem worth it to add .__eq__ or .__cmp__
methods to all of my classes just to test Queue-proof-ness.  Maybe I'm
just lazy...  Anyhow, the original problem case now works:

  $echo 'debug' | python bin/hooke
  This is Hooke, version 0.9.0.devel (Kenzo)

  COPYRIGHT
  ----
  hooke> <hooke.hooke.Hooke object at 0xb6a0bcac>
  Success
  ...

13 years agoFix problem in Queuing odict/HookeConfigParser.
W. Trevor King [Wed, 12 May 2010 15:03:46 +0000 (11:03 -0400)]
Fix problem in Queuing odict/HookeConfigParser.

I'm not sure why odict.__setstate__() is not being called before
.__setitem__(), but this hack seems to be a valid workaround.

13 years agoAdded hooke.config.TestHookeConfigParser
W. Trevor King [Wed, 12 May 2010 15:02:50 +0000 (11:02 -0400)]
Added hooke.config.TestHookeConfigParser

Used hooke.hooke.TestHooke to isolate Queue issue to
HookeConfigParser:

  ======================================================================
  ERROR: Ensure :class:`HookeConfigParser` is Queue-safe
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/tmp/hooke/hooke/config.py", line 270, in test_queue_safe
      b = q.get(a)
    File "/usr/lib/python2.6/multiprocessing/queues.py", line 91, in get
      res = self._recv()
    File "/tmp/hooke/hooke/compat/odict.py", line 214, in __setitem__
      self._keys.append(key)
  AttributeError: 'odict' object has no attribute '_keys'

13 years agoAdded hooke.hooke.TestHooke
W. Trevor King [Wed, 12 May 2010 13:01:46 +0000 (09:01 -0400)]
Added hooke.hooke.TestHooke

13 years agoDash separators consistent with hooke.ui.UserInterface._splash_text().
W. Trevor King [Wed, 12 May 2010 12:51:19 +0000 (08:51 -0400)]
Dash separators consistent with hooke.ui.UserInterface._splash_text().

'---' -> '----' in hooke.plugin.debug.VersionCommand.
'----' -> '----' in hooke.ui.commandline.HelpCommand.

13 years agoMoved debuging commands from hooke_cli and plugin.system to plugin.debug.
W. Trevor King [Wed, 12 May 2010 12:33:25 +0000 (08:33 -0400)]
Moved debuging commands from hooke_cli and plugin.system to plugin.debug.

13 years agoMoved system commands from hooke_cli to plugin.system.
W. Trevor King [Wed, 12 May 2010 12:29:00 +0000 (08:29 -0400)]
Moved system commands from hooke_cli to plugin.system.

13 years agoAdded Argument.count handling to hooke.ui.commandline.
W. Trevor King [Wed, 12 May 2010 12:05:48 +0000 (08:05 -0400)]
Added Argument.count handling to hooke.ui.commandline.

13 years agoRework hooke.command.Command.handle_arguments (again :p).
W. Trevor King [Wed, 12 May 2010 11:31:34 +0000 (07:31 -0400)]
Rework hooke.command.Command.handle_arguments (again :p).

Previous implementation didn't set params[name] when
  num_provided == 0 and argument.callback != None

13 years agoAdjust hooke.command.UncaughtException to properly handle pickle reconstruction.
W. Trevor King [Wed, 12 May 2010 11:20:48 +0000 (07:20 -0400)]
Adjust hooke.command.UncaughtException to properly handle pickle reconstruction.

multiprocessing.Queue pickles objects to send through its pipe, so our
objects must be capable of surving the pickling process unscathed.

13 years agoAdded interaction to hooke.ui.commandline.LocalCommandExit.
W. Trevor King [Tue, 11 May 2010 10:52:31 +0000 (06:52 -0400)]
Added interaction to hooke.ui.commandline.LocalCommandExit.

Also broke out commandline's exit and help commands.  They were
getting complicated enough to deserve their own classes.

13 years agoBetter solution to internal/external names via `name_fn`.
W. Trevor King [Mon, 10 May 2010 19:47:08 +0000 (15:47 -0400)]
Better solution to internal/external names via `name_fn`.

13 years agoUse ._cl_name and ._cl_aliases instead of overwriting .name and .aliases.
W. Trevor King [Mon, 10 May 2010 19:27:12 +0000 (15:27 -0400)]
Use ._cl_name and ._cl_aliases instead of overwriting .name and .aliases.

We don't change the keys hardcoded into the Command._run methods, so
we need to keep the original names.  Hmm, I'll have to adjust
Command.help and Argument.help to use the external names...

13 years agoAdd hooke.playlist.NoteIndexList and refactor exception handling in commandline.
W. Trevor King [Mon, 10 May 2010 18:19:59 +0000 (14:19 -0400)]
Add hooke.playlist.NoteIndexList and refactor exception handling in commandline.

Highlights:
  * hooke.playlist classes now subclass the new hooke.playlist.NoteIndexList
  * hooke.plugin.cut.CurveArgument replaces previous _run hacking with
    a callback to initialize the default curve.x
  * hooke.ui.commandline.command_parser -> CommandLineParser.  The new
    class is cleaner, and raises exceptions rather than exiting.  We
    don't want Hooke dying until the user has time to clean up.

13 years agoPass Hooke instance to CommandEngine.run(), not UserInterface.run().
W. Trevor King [Mon, 10 May 2010 16:43:05 +0000 (12:43 -0400)]
Pass Hooke instance to CommandEngine.run(), not UserInterface.run().

User interface just needs its configuration (already setup in
  Hooke.load_ui() -> ui.load_ui(self.config)
) and a read-only list of commands.  Giving the Hooke instance to
CommandEngine allows the commands to work on the Hooke instance
directly.  This makes user interfaces less intelligent (i.e. easier to
write), and more consistent (because they all depend on the same
commands engine.)

13 years agoDon't crash when Command._run() raises an uncaught Exception.
W. Trevor King [Mon, 10 May 2010 15:35:03 +0000 (11:35 -0400)]
Don't crash when Command._run() raises an uncaught Exception.

Just print the traceback and move on.  This gives the user time to
exit gracefully (saving playlists etc.).

13 years agoArgument parser now works for command execution as well (vs. just for help).
W. Trevor King [Mon, 10 May 2010 15:05:34 +0000 (11:05 -0400)]
Argument parser now works for command execution as well (vs. just for help).

13 years agoAdded command parser to hooke.ui.commandline for argument listing.
W. Trevor King [Mon, 10 May 2010 13:43:55 +0000 (09:43 -0400)]
Added command parser to hooke.ui.commandline for argument listing.

13 years agohelp_* working in commandline UI.
W. Trevor King [Sun, 9 May 2010 22:41:55 +0000 (18:41 -0400)]
help_* working in commandline UI.

Still to go:
  * DoCommand._parse_args
  * DoHelp._usage_string
  * CompleteCommand
  * Interactive communication between user and command

13 years agoAdded basic commandline framework to ui.commandline (using cmd.Cmd)
W. Trevor King [Sun, 9 May 2010 20:54:30 +0000 (16:54 -0400)]
Added basic commandline framework to ui.commandline (using cmd.Cmd)

13 years agoFinished off hooke.hooke and fleshed out hooke.ui.
W. Trevor King [Sun, 9 May 2010 19:43:58 +0000 (15:43 -0400)]
Finished off hooke.hooke and fleshed out hooke.ui.

Highlights:
  * New hooke.command for CommandExit (and subclasses), Command, and
    Argument.  For the same reason as hooke.playlist: keep core
    functionality out of hooke.plugin, which is only for the pluggable
    interface to that functionality.
  * New hooke.engine containing CommandEngine.  Not much going on
    here.  Perhaps I will merge it into hooke.command later...
  * New hooke.ui.commandline stub for 'command line' UI.
  * Filled in hooke.ui stub.
  * Added UI and CommandEngine handling to hooke.hooke.Hooke.
  * Added a new super-local '.hooke.cfg' to hooke.config.DEFAULT_PATHS.
    For project-specific hooke configuration?  Mostly to avoid suprising
    the user by clobbering ~/.hooke.cfg.
  * Fix expanduser bug in hooke.config.HookeConfigParser.write.
  * Fix super(AddCommand, self) -> super(AddGlobCommand, self) bug in
    hooke.plugin.playlist.AddGlobCommand.__init__.

13 years agoAdded hooke.plugin.playlist.AddGlobCommand.
W. Trevor King [Sun, 9 May 2010 17:23:02 +0000 (13:23 -0400)]
Added hooke.plugin.playlist.AddGlobCommand.

This completes the rewrite of individual playlist handling.

Also:
  * Added hooke.plugin.playlist.FilePlaylist.set_path() to reduce
    duplicate code.

13 years agoOops, I'd forgotten to version the restored hooke.playlist module.
W. Trevor King [Sun, 9 May 2010 17:04:26 +0000 (13:04 -0400)]
Oops, I'd forgotten to version the restored hooke.playlist module.

13 years agoA number of minor documentation cleanups.
W. Trevor King [Sun, 9 May 2010 16:26:19 +0000 (12:26 -0400)]
A number of minor documentation cleanups.

13 years agoUpdated to doc building framework. Added Sphinx extensions and fixed genrst dependency
W. Trevor King [Sun, 9 May 2010 15:30:14 +0000 (11:30 -0400)]
Updated to doc building framework.  Added Sphinx extensions and fixed genrst dependency

13 years agoMinor fix to hooke.plugin.playlist.__doc__
W. Trevor King [Sun, 9 May 2010 15:29:06 +0000 (11:29 -0400)]
Minor fix to hooke.plugin.playlist.__doc__

13 years agoMoved Playlist and FilePlaylist definitions back to hooke.playlist
W. Trevor King [Sun, 9 May 2010 14:32:27 +0000 (10:32 -0400)]
Moved Playlist and FilePlaylist definitions back to hooke.playlist

We shouldn't define core classes in plugins.  This will make the
plugin clearer, separating the core functionality from the silly
plugin interface to that core functionality.  Such Builtins are useful
for the Hooke command line and GUIs, but not for people using Python
to import hooke directly.

13 years agoCleaned up Builtin handling and reduced driver/plugin duplication.
W. Trevor King [Sun, 9 May 2010 13:57:07 +0000 (09:57 -0400)]
Cleaned up Builtin handling and reduced driver/plugin duplication.

13 years agoMoved hooke.playlist -> hooke.plugin.playlist and added hooke.plugin.Builtin.
W. Trevor King [Sun, 9 May 2010 13:29:39 +0000 (09:29 -0400)]
Moved hooke.playlist -> hooke.plugin.playlist and added hooke.plugin.Builtin.

Highlights:
  * Cleaner Playlist, with more consistent file format.
  * New "Builtin" class for required (core) commands.
  * Moved NotRecognized from hooke.driver -> hooke.curve to avoid
    import-order issues.  Now hooke.curve can be fully loaded before
    hooke.driver.
  * Moved hooke.curve.Data.notes -> hooke.curve.Data.info['note']
    for better consistency with Curve and Playlist.
  * Started cleaning up plugin loading into flexible functions.

13 years agoAdd Hooke.commands, a list of available commands
W. Trevor King [Sat, 8 May 2010 22:54:58 +0000 (18:54 -0400)]
Add Hooke.commands, a list of available commands

13 years agoIroned out kinks in plugin/driver loading and configuring.
W. Trevor King [Sat, 8 May 2010 22:46:11 +0000 (18:46 -0400)]
Ironed out kinks in plugin/driver loading and configuring.

Highlights:

  * Plugin/Driver.setting_section attribute so subclasses don't need
    to construct it on their own (duplicate effort, and so, error
    prone).
  * Fixed self.wrap = True -> self.wrap = wrap bug in
    hooke.config.Setting
  * No longer alter hooke.config.DEFAULT_SETTINGS in
    hooke.hooke.Hooke.__init__()
  * Filled in Hooke.load_plugins()/.load_drivers() stubs.
  * Removed deprecated Hooke.driver_default_settings().
  * Commented out a lot of the old HookeFrame code.  I'll delete
    it as I go through and implement its functionality.

13 years agoRework hooke.driver and hooke.driver.tutorial along the lines of hooke.plugin.
W. Trevor King [Sat, 8 May 2010 21:04:08 +0000 (17:04 -0400)]
Rework hooke.driver and hooke.driver.tutorial along the lines of hooke.plugin.

Many more drivers to refactor, but this is good enough to get me going
again with the core code.

13 years agoAssorted changes so import hooke.plugin works ;).
W. Trevor King [Sat, 8 May 2010 12:48:02 +0000 (08:48 -0400)]
Assorted changes so import hooke.plugin works ;).

Uncommenting the cut entry in PLUGIN_MODULES exposed a number of bugs
which I fixed:
  * def Plugin (object): -> class Plugin (object):
  * plugin initialization must occur *after* Command/Argument definition.
    That way the neccessary classes are defined when we go to load the
    plugin modules.
  * Broken default_settings() fixed.

Also did some docstring cleanup.

13 years agoMoved hooke.libhookecurve -> hooke.curve and rewrote HookeCurve -> Curve class.
W. Trevor King [Sat, 8 May 2010 11:20:02 +0000 (07:20 -0400)]
Moved hooke.libhookecurve -> hooke.curve and rewrote HookeCurve -> Curve class.

New class Data subclasses numpy.ndarray for faster data handling.

Changes:
  * hooke.libhookecurve.PlotObject -> hooke.ui.gui.plot.PlotObject
  * hooke.libhookecurve.Driver -> hooke.driver.Driver
  * Raise new exception hooke.driver.NotRecognized if no driver
    matches (vs. old print message and return false).
  * Curve stores data in a list (vs. old dict).  Often data order
    is important.  The names that used to key the data dict can
    now go into Data.info['name'].
  * HookeCurve.fits -> Curve.info['fits']
  * HookeCurve.plots is GUI data, but if the UI needs it, it should be
    stored in Curve.info['plots']
  * Since Curve.data is an array,
    HookeCurve.add_data() -> Curve.data.append(),
    HookeCurve.delete_data() -> Curve.data.remove(), and
    HookeCurve.set_data() -> Curve.data[i] = data

13 years agoConverted hooke.plugin.cut to new Plugin architecture.
W. Trevor King [Sat, 8 May 2010 10:39:24 +0000 (06:39 -0400)]
Converted hooke.plugin.cut to new Plugin architecture.

13 years agoUse .type.upper() (vs. old .name.upper()) for Argument.metavar.
W. Trevor King [Sat, 8 May 2010 10:37:08 +0000 (06:37 -0400)]
Use .type.upper() (vs. old .name.upper()) for Argument.metavar.

This conveys more information to the user
     output FILE
compared to the same word twice:
     output OUTPUT

Also rearranged some options.

13 years agoMoved Argument and other class definitions after Command
W. Trevor King [Sat, 8 May 2010 04:07:11 +0000 (00:07 -0400)]
Moved Argument and other class definitions after Command

13 years agoAdded Command and related classes to hooke.plugin
W. Trevor King [Sat, 8 May 2010 04:03:39 +0000 (00:03 -0400)]
Added Command and related classes to hooke.plugin

Based on my libbe.commands.base work for Bugs Everywhere.

13 years agoAdded hooke.plugin.Plugin.name attribute.
W. Trevor King [Sat, 8 May 2010 02:26:56 +0000 (22:26 -0400)]
Added hooke.plugin.Plugin.name attribute.

Also:
  * Reordered Plugin methods from first called -> last called.
  * Removed old Commands class.

13 years agoAdded tip-to-root/root-to-tip flexibility to hooke.util.graph
W. Trevor King [Fri, 7 May 2010 16:13:39 +0000 (12:13 -0400)]
Added tip-to-root/root-to-tip flexibility to hooke.util.graph

The old implementation only did tip-to-root.  The new default is
root-to-tip.

13 years agoAdded inclusion logic to hooke.plugin
W. Trevor King [Thu, 6 May 2010 12:37:52 +0000 (08:37 -0400)]
Added inclusion logic to hooke.plugin

13 years agoAdded the graph module I'd developed for Bugs-Everywhere
W. Trevor King [Thu, 6 May 2010 12:37:17 +0000 (08:37 -0400)]
Added the graph module I'd developed for Bugs-Everywhere

13 years agoBeginning to rewrite Hooke to decouple from GUI.
W. Trevor King [Thu, 6 May 2010 11:27:59 +0000 (07:27 -0400)]
Beginning to rewrite Hooke to decouple from GUI.

This commit:
  * Started documenting with reStructuredText (for later use by Sphinx)
  * Added hooke.config module to handle configure files (via ConfigParser)
  * Added hooke.compat module to hold compatibility code
    (e.g. workarounds to allow Hooke to work on older Python versions).
  * Added config input/output to hooke.hooke.Hooke.
  * Stubbed out driver/plugin initialization in Hooke

13 years agoAdded Sphinx documentation framework
W. Trevor King [Thu, 6 May 2010 11:25:12 +0000 (07:25 -0400)]
Added Sphinx documentation framework