-----------------------------------------------------------------------------
This file contains a log of significant changes made to the package
especially API changes.  The log refers to changesets in the trac format
[#revno], for example to view the changeset [18702] use the following
URL: 
    https://svn.enthought.com/enthought/changeset/18702
-----------------------------------------------------------------------------

3.1.0 Release
--------------

3 December, 2008 (PR)
    - BUG: Fixing bugs with persistence of VTKDataSource objects
      wrapping a structured grid in VTK-5.2.  This resulted in hard to
      debug test errors.  [22624]

1 December, 2008 (GV):
    - API: Promote the TestEngine to a first-class citizen NullEngine and 
	   make mlab use it when a source has a keyword argument
	   "figure=False". [22594]

30 November, 2008 (PR)
    - NEW: New sources called BuiltinSurface and BuiltinImage that let
      users create simple polygonal data and images using basic VTK
      sources.  Thanks to Suyog Jain for this code. [22586], [22597].

27 November, 2008 (GV):
    - ENH: Add control of the seed size and resolution to
	   mlab.pipeline_basene.streamline [22573].
    - DOC: Documentation work, especially in the scripting parts of the
           docs. [22572], [22561], [22560], [22546], [22545]

26 November, 2008 (GV):
    - ENH: Add keyword arguments to the cutplanes in mlab.pipeline. [22567]
	   Also add masking to glyph-based mlab.pipeline factories [22568]

19 November, 2008 (GV):
    - UI: Rename 'Modules' to 'Colors and legends' [22512]
    - API: Change defaults [22513]: 
	- CellToPointData and PointToCellData filters to pass the existing
	  dataset.
	- The ouline of the implicite plane is no longer draggable by
	  default.

15-16 November, 2008 (PR)
    - ENH/API: Exposing the glyph source choices via a dictionary rather
      than having the user remember the index in a list. [22497]
    - ENH: Adding a button to the LUT UI so the LUT editor can be
      launched from the UI. [22498]
    - DOC: Updating advanced scripting chapter. [22495].

13 November, 2008 (GV)
    - ENH: [mlab]  Add keyword arguments to colobars to control label
      number and format, as well as colors number. [22489]

10 November, 2008 (PR)
    - TEST: Adding 43 new mayavi tests.  These are based on the
      integration tests but don't pop up a user interface.   Thanks to
      Suyog Jain for doing bulk of the work. [22465]

27 October, 2008 (GV)
    - ENH: [mlab] If a module or filter is added to the pipeline using
      the mlab.pipeline functions, the source on which it is added
      onto is automatically added to the scene if not alread present. It 
      is also automatically converted from a tvtk dataset to a mayavi
      source, if needed. [22375], [22377]
    - ENH: [mlab] Make mlab.axes and mlab.outline use the extents of the 
      current object when none specified explicitely. [22372]

24-27 October, 2008 (PR)
    - NEW: Adding an ImageChangeInformation filter to let users change
      the origin, spacing and extents of input image data, [22351].
    - API: Adding a `set_viewer` function to
      `enthought.tvtk.tools.visual` so one may specify a viewer to
      render into.  This lets us use visual with a mayavi scene. [22363]
    - BUG: Fix a major bug with TVTK when VTK is built with 64 bit ids
      (VTK_USE_64BIT_IDS is on).  The examples and tests should all run
      in this case now. [22365]
    - ENH: [mlab] Added an `mlab.view` method that actually works
      [22366].

19 October, 2008 (GV)
    - ENH: mlab.text can now take 3D positioning [22331].

17-20 October, 2008 (PR)
    - ENH: Modified TVTK and Mayavi UI editors so that text entry boxes
      are only set when the user hits <enter> or <tab> rather than on
      each keystroke.  [22321], [22323]
    - ENH/BUG/WARN: Fixed warnings at TVTK build time, fixed bugs with
      ImageData's scalar_type trait. [22320], [22321], [22325].
    - NEW/API: Adding preference option to ease task of loading contrib
      packages (via a pkg/user_mayavi.py) in mayavi.  Also added a
      contrib finder that trawls sys.path to find contributions.  This
      can be set from the preferences UI. [22324], [22326], [22327].
    - BUG: Fixing problems with the gradient_editor and newer VTK
      versions.  This is required for the Volume module to work
      correctly. [22329], [22341]

13 October, 2008 (GV):
    - ENH: Bind the 'explore' function in the python shell [22307]
    - ENH: mlab: axes and outline now find the extents from the objects
           they are given, if any. [22305]

12 October, 2008 (GV):
    - API: mlab: Add a barchart function, with the corresponding pipeline 
      source function. [22286]

11 October, 2008 (PR):
    - ENH/API: Improving texture map support, you can now generate the
      texture coords on an arbitrary actor.  This adds to the API of the
      actor component.  [22283]
    - API: Adding a `enthought.mayavi.preferences.bindings` module that
      abstracts out setting of preferences for common objects.
      Currently it exposes a `set_scene_preferences` so the
      non-envisage and off screen scenes have the right preferences.
      See [22280] and [22295].
    - REFACTOR/API: The script recording code is now in
      `enthought.scripting`,  the `enthought.mayavi.core.recorder` was
      only a temporary solution. See [22277] and [22279].

10 October, 2008 (GV):
    - API: mlab: Expose pipeline.set_extent (former private function
      tools._set_extent) [22251]

9 October, 2008 (GV):
    - ENH: Use the IPython shell plugin only if the ipython, envisage and
      pyface versions are recent-enough. 
      Mayavi now uses an ipython widget instead of the pyshell one if you
      have the right components installed, but should fall back to
      pyshell gracefully. [21678], [22245]

4 October, 2008 (PR):
    - TEST: Added a 'test' backend to mlab so you can run mlab tests
      without a display. Fixing core code so that all the unittests run
      when the ETS_TOOLKIT env var is set to 'null'. [22198]

30 September, 2008 (GV):
    - API: mlab: Expose pipeline.add_dataset (former private function 
      tools._data) [22162].
    - API: The mlab source functions can now optionaly work without creating
      a figure (using figure=None) [22161].
    - API: The mlab source functions are more  robust to various 
      input-argument shape (they accept lists, and 1D or 2D arrays when
      possible) [22161].

29 September, 2008 (GV):
    - NEW: Add a mlab.triangular_mesh function to create meshes with
      arbitrary triangular connectivity. Also add a corresponding
      triangular_mesh_source mlab source. [22155]
    - ENH: Make mlab.points3d and other mlab functions accept scalars as
      coordinnates, in addition to arrays. [22156]

12 September, 2008 (PR)
    - NEW: Create a separate OffScreenEngine for use to reduce code
      duplication.  This is also available as part of
      enthought.mayavi.api. [21880]
    - TEST: Creating a common.py that contains a TestEngine mayavi
      engine subclass for easily testing mayavi. [21881]

8-12 September, 2008 (PR)
    - NEW: Adding full support for script recording.  With this you can
      pretty much record all UI actions performed on the Mayavi UI (both
      standalone and application) to human-readable and runnable Python
      scripts.  It also serves as a nice learning tool since it shows
      the lines of code as the UI actions are performed.  Note that
      interacting with the camera is also recorded which is very
      convenient.  This has been implemented in a pretty general fashion
      (using TDD) so is reusable in other traits based applications
      also.   Major checkins [21722], [21728], [21776], [21812], [21865]
      [21878].

3.0.3 Release
--------------

7 September, 2008 (PR):
    - ENH: The mayavi2 application now ([21713], [21714]) supports
      command line args like the following::
     
        mayavi2 -d ParametricSurface -s "function='dini'" -m Surface \
        -s "module_manager.scalar_lut_manager.show_scalar_bar = True" \
        -s "scene.isometric_view()" -s "scene.save('snapshot.png')"

6 September, 2008 (PR):
    - ENH/API: Cleaned up the enthought.mayavi.core.traits to remove
      buggy, and unused DRange and SimpleDRange traits. [21705]
    - BUG/TEST: Added tests for some of the MlabSource subclasses and
      fixed many bugs in the code. [21708]
    - TEST: Modified pipeline_base.py so mayavi objects may be started
      without creating a scene (and therefore a UI).  This allows us to
      create completely non-interactive tests.  [21709]
    - ENH: Adding X3D and POVRAY export options. [21711]

23 August, 2008 (PR):
    - ENH: Adding an offscreen option for mlab.  Now you can set
      mlab.options.offscreen = True. [21510]
    - ENH: Setting the window size to (1,1) if the window is offscreen,
      this prevents the window from showing up prominently -- it still
      does show up though. [21519]

21 August, 2008 (PR):
    - ENH: Adding the logger plugin to the mayavi2 app. [21487]

3.0.1 and 3.0.2 Releases
-------------------------

16 August, 2008 (PR):
    - BUG: fixed various miscellaneous bugs including a testing
      error[21304], a long standing Mac bug with picking [21310], a
      segfault [21453] and a bug in tvtk when wrapping certain methods
      [21475].

3.0.0 Release
--------------

15 August, 2008 (PR):
    - NEW: Adding a fully tested data set manager that lets users
      add/remove/modify attribute arrays to a tvtk dataset. This is
      fully tested and also does not influence any other code. [21300]

10 August, 2008 (PR):
    - ENH/API: [mlab] Added a `MlabSource` class to abstract out the
      data creation and modification into one object that may be
      modified.  This source object is injected in the form of a
      `mlab_source` trait on objects returned by any of the helper
      functions (`surf`, `plot3d` etc.) or the sources.  The user can
      use this to modify the data visualized without recreating the
      pipeline each time, making animations very easy and smooth.  There
      are several examples of the form `test_blah_anim` showing how this
      is done.  [21098], [21103].

27 July, 2008 (GV):
    - ENH: Add an option (on by default) to open the docs in a chromeless
      window when using firefox. [20451] [20450]
    - ENH: Add toolbar to the engine view [20447]
    - ENH: Selected item on the tree jumps to newly created objects
      [20454]
    - ENH: Add a button on the viewer using by mayavi in standalone to
      open up the engine view [20456] [20462]
    - ENH: Clean UI for adding sources/filters/modules (Adder nodes)
      [20461] [20460] [20458] [20452]
    - ENH: [mlab] add a resolution argument to glyphs [20465]
    - API: [mlab] API Breakage!
	Make mlab source names compatible with ETS standards:
        grid_source rather than gridsource [20466]
    - NEW: Add image_plane_widget to mlab.pipeline, with helpful keyword
        arguments.

23 July, 2008 (GV):
    - ENH: The mlab API can now take either engine or figure keyword
      arguments. This allows to avoid the use of the global sate set
      in the mlab engine. Mlab also now exposes a set_engine function. 
      [20245]

23 July, 2008 (PR)
    - ENH/NEW: The mlab.pipeline sources, modules and filters now
      feature automatic source/filter/module generation functions from
      registry information.  This means mlab fully supports creating
      objects on the mayavi pipeline with easy one-liners. [20239]
    - API: The API has broken!  Sources, filters and modules that mirror
      an existing mayavi class now are named with underscores.  For
      example, isosurface has become iso_surface, extractedges becomes
      extract_edges etc.
    - NEW: Exposing the engine's open method to mlab so it is easy to
      open data files from mlab also.
    - ENH: Implemented an mlab.show decorator so one can write out a
      normal function for visualization which will work from ipython,
      standalone and mayavi completely seamlessly.

18, 19 July, 2008 (PR)
    - TEST/API: The mayavi tests are now split into integration and unit
      tests.  Unit tests go into enthought/mayavi/tests.  Integration
      tests are in integrationtests/mayavi. Major changes: 
        - Removed most of the image based tests except one
          (test_streamline.py) for reference.
        - Modified the testing code so the standalone mode is the
          default.
        - Modified so nose picks up the integrationtests.  However,
          there are problems running the test via nosetests on Linux
          that need investigating.
    - ENH: Creating a new object on the pipeline via envisage or right
      click now sets the active selection to the created object so it is
      easy to edit.
    - API: Moving enthought/mayavi/view/engine_view.py to
      enthought/mayavi/core/ui. [20098]
    - API: Added method to engine (get_viewer) so it gets the viewer
      associated with a particular scene. [20101]

12 July, 2008 (PR):
    - ENH/API: Adding support for global (system wide) and local
      customizations via a site_mayavi.py and user_mayavi.py (in
      ~/.mayavi2/). This allows users to register new modules/filters
      and sources and also add any envisage plugins to the mayavi2 app
      easily. [19920]

9 July, 2008 (Judah, PR)
    - ENH: Adding the core code for an AdderNode that shows up on the
      engine view and lets a user easily create new
      scenes/sources/filters and modules.

8 July, 2008 (PR)
    - BUG: Ported various bug fixes from branches for ETS-2.8.0 release.
    - ENH/API: Added datatype, attribute type and attribute information
      to all pipeline objects (both at the object and metadata levels).
      This lets one query if an object will support a given input and
      what outputs it will provide (this can be changed dynamically
      too).  This allows us to create context sensitive menus. The
      traits UI menus for the right click is now modified to use this
      information. We therefore have context sensitive right click menus
      depending on the nature of the object we right click on. At this
      point we don't yet check for the attribute_type and attributes
      metadata information to enable/disable menus, this may be
      implemented later -- the framework makes this quite easy to do.
      [19512].
    - ENH: Envisage menus are now context sensitive [19520].

5 July, 2008 (PR):
    - ENH: One can create objects on the pipeline using right-clicks
      [19469].
    - ENH: All the envisage menus and actions for sources, filters and
      modules now are autogenerated from the metadata for these. 
    - NEW/API: [19458] adds the following features:
        - A Registry (enthought.mayavi.core.registry.Registry) to
          register engines, sources, filters and modules. Source, filter
          and module metadata is registered and this can be used to do
          various things like generate menus, register data file
          extension handlers and whatnot. The metadata related classes
          are in enthought.mayavi.core.metadata.
        - This registry and metadata information is used to generate the
          envisage menus and actions.
        - The registry can be used by users to register new sources,
          readers, filters and modules.
        - A method to Engine and Script to easily open any supported
          data file.
        - Simplify the open file interface so it is just one menu item
          that supports different file extensions.
        - Changed the command line options for the mayavi2 application
          so you can open *any* supported data file format with the -d
          option.  This breaks backwards compatibility but makes it very
          easy to open supported data files -- even if the new ones are
          added by users.
        - Fixed the PLOT3DReader so it opens the q file using the xyz
          filenames basename. 

29 June, 2008 (GV): 
    - ENH: Updated Sphinx docs [19318]. 
    - ENH: New splash screen [19319].
    - ENH: mlab now works with envisage, including in "mayavi2 -x"
      [19321] [19323]


27 June, 2008 (Vibha):
    - API: Remove SimpleScene class [19285].
    - API: Moved tvtk-related examples from TraitsGUI to Mayavi [19191]
      [19197] [19231] [19280]

27 June, 2008 (GV):
    - BUG: tvtk: proper handling of non-float numpy arrays. Added test
      case [19297]

25 June, 2008 (GV):
   - ENH: Add autoscale to mlab.surf (scalez keyword argument) [19131]
   - ENH: mlab.usrf and mlab.mesh can now take x and y arguments with a
     more flexible shape [19114].

12 June, 2008 (PR):
    - ENH: Adding an offscreen option to the mayavi2 application.  This
      lets you run a normal mayavi Python script in offscreen mode
      without the full UI.  This is very convenient when you want to
      render a huge number of images from a visualization and don't want
      the UI to bother you or create a special script for the purpose.
      See [18951], [18955].

07, 08 June, 2008 (PR):
    - API: TVTK: Added two methods `setup_observers` and
      `teardown_observers` that let one turn on/off the observer for the
      ModifiedEvent fired on each VTK object that a TVTK object wraps to
      keep the traits updated.  Thus, if you call `teardown_observers`
      the traits will not be automatically updated if the wrapped VTK
      object is changed.  This can be manually updated by calling the
      `update_traits` method.  It is OK to call the
      setup/teardown_observers method as often as needed.  This is also
      tested.  See [18885].
    - API: TVTK: Removed the `__del__` method on all TVTK objects.  This
      should make it much nicer for proper garbage collection.  See
      [18886], [18887].

06 June, 2008 (PR):
    - TEST: Added a standalone mode to the tests so you can test without
      starting up the envisage app.  Envisage imports may be required
      however.  To use this run any test with the -s option. [18880]
    - TEST: Added a way to run the tests on one application launch
      instead of starting mayavi each time.  To use this execute run.py
      with the --one-shot command line option.  [18880] [18881].
    - TEST: The standalone offscreen mode now should work without a
      single Traits UI showing up with just a dummy blank window being
      used.  This demonstrates how mayavi scripts can work in completely
      different contexts.  [18881].
      

31 May, 2008 (PR):
    - PORT: Backported important additions to the 2.2.0 branch.
    - BUG: Added a test case for the hide/show functionality and fixed
      known bugs.
    - API: Adding elementary support for texturing an actor (if it has
      texture coords).  This was thanks to a patch from Chandrashekhar
      Kaushik. [18827]

30 May, 2008 (PR):
    - API: Adding closing, closed lifecycle events to the scene [18806].

27 May, 2008 (PR):
    - NEW: Adding a Labels module to label input data.  This is like
      MayaVi1's module and with this checkin all important mayavi1
      modules and filters are supported in mayavi2.  The only missing
      one is Locator which hardly anyone uses I think.  See [18801].

27 May, 2008 (PR):
    - NEW: Adding an ImageDataProbe filter which does the same thing
      that MayaVi-1.5's StructuredPointsProbe does. [18792]

25 May, 2008 (PR):
    - NEW: Adding CellDerivatives and Vorticity filters. [18785]

24 May, 2008 (PR):
    - NEW: Adding a tvtk_doc.py module that doubles as a
      TVTK Class/Filter/Source/Sink chooser and also as a documentation
      browser (with search!) like Mayavi1.x's vtk_doc.py.  tvtk_doc is
      also installed as a console script now. [18776]
    - NEW: Adding a UserDefined filter where the user can wrap around
      any TVTK filter. [18780]

23 May, 2008 (PR):
    - NEW: SetActiveAttribute filter that lets you select the active
      attribute.  This makes it very easy to find the contours of one
      scalar on the iso-contour of another.  The example
      contour_contour.py shows how this is done.  See [18774], [18775].

22 May, 2008 (PR):
    - NEW: Adding Contour and CutPlane filters that use the Wrapper
      filter and respective components.  This is very convenient.
    - Checked in modified patch from Chandrashekhar Kaushik (CSE IITB),
      which reimplements hide/show using a visible trait.


21 May, 2008 (PR):
    - TEST: Adding an @test decorator to make it easy to create a mayavi
      test case from a mayavi script.  While this is convenient, I still
      prefer to explicitly use the TestCase class since this makes the
      code compatible with the 2.2.0 branch.
    - The GenericModule is now tested.

20 May, 2008 (PR):
    - NEW: Adding a GenericModule to easily put together a bunch of
      Filters and Components.  Using this code it takes 30 simple
      lines of code for a ScalarCutPlane compared to the 300 complex
      ones we need for the current implementation!  This is because the
      module takes care of all the dirty work.
    - NEW: Adding Wrapper, Optional and Collection filters that make it
      easy to wrap around existing Components and Filters, make them
      optional and create collections of them very easily.  This gives
      us a great deal of reuse and makes it very easy to create new
      filters.

18 May, 2008 (PR):
    - ENH: Improved the PLOT3D reader and added a test for it.
    - Added a menu item to allow a user to run a Python script from the
      UI.
    - API: Added a close method to
      `enthought.pyface.tvtk.tvtk_scene.TVTKScene`.  This class is
      inherited by all Scenes (DecoratedScene and Scene).  The close
      method shuts down the scene properly.  This should hopefully
      prevent async errors when closing editors/windows containing
      scenes.  See [18708].
    - Updated the scene plugin, scene_editor (TraitsBackend*),
      actor_editor and the ivtk code to use the close method.
    - TEST: All the tests run on the trunk and pass when the offscreen
      option is used (which was also added).

17 May, 2008 (PR):
    - NEW: Adding an SelectOutput filter that should address bug number
      478359 in the Debian BTS.  See [18700].
    - API: enthought.mayavi.plugins.app.Mayavi now defines a
      setup_logger method so this can be overridden by subclasses, see
      [18703].
    
13 May, 2008 (PR):
    - NEW: Adding an ExtractVectorComponents filter contributed by Varun
      Hiremath.

11,12 May 2008 (PR):
    - ENH/API: The plugins now start the engine themselves and also do
      the binding to the shell. Earlier this was done by the
      application.  This makes the plugins reusable. Also added a
      running trait to the engine to check on its status. [18672],
      [18678]. 
    - At this point all examples in trunk work save the mayavi_custom_ui
      plugin stuff.

10 May 2008 (PR):
    - API: Moving enthought/mayavi/engine.py ->
      enthought/mayavi/core/engine.py where it really belongs; see
      [18667].

7,8 May 2008 (PR):
    - API: The plugins_e3 package is now moved into plugins.  This
      breaks the enthought.tvtk.plugins API and also the
      enthought.mayavi.mayavi_*_definition modules.  The older envisage2
      plugin code is all removed. See: [18649], [18650], [18651],
      [18652], [18655], [18657], [18662].

6 May 2008 (PR):
    - API: The enthought.mayavi.core.Base.confirm_delete class attribute
      is gone since it is no longer needed [18635].
    - API: Removed config directory, integrated all mlab preferences
      into the the mayavi preferences framework, see [18632].
      To get the preferences just do:
        from enthought.mayavi.preferences.api import preference_manager
      This is the preference manager that manages all prefs.  To see the
      code look in enthought.mayavi.preferences.preference_manager.  It
      is also a good idea to read the enthought.preferences
      documentation.
    - BUG: [18627] Fixed bug number 478844 on the Debian BTS here:
      http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478844 

4 May 2008 (PR):
    - API: Added to api.  Added a new preferences framework for mayavi2.
      This uses enthought.preferences and works well both standalone and
      with envisage3. It makes it easy to create/define/change
      preferences at the application and library level. 

2 May, 2008 (PR):
    - API: Ported the mayavi2 application and plugin to work with Envisage3.
      See changesets [18595] and [18598].  *This obviously breaks the
      plugin API completely!*
    - Got the mlab envisage_engine_manager working with new changes
      [18599].

Before this changeset, the code was that of the 2.x series.
