- Make SciDAVis easier to extend and maintain by modularizing it and add generic plug-in support, support for implementing extensions in Python. For example, ideally it should be possible to implement new plot or marker types without modifying existing classes.
- A full-featured multi-level undo/redo framework (based on QUndoCommand). [ undo/redo assigned to thzs; plug-in/Python extension support assigned to knut_f ]
- Revise some internal APIs that use undocumented protocols for the strings that get passed around. Wherever possible, consistency should be checked at compile-time. This would also probably eliminate the need to place restrictions on object/column names.
- Switch file format to a completely XML-based one so we can write a more robust parser based on Qt's XML support. Legacy support for the old format could be a plug-in. Use the new XML reader/write in Qt 4.3 for this since it is very fast.
- Document as much as possible using doxygen and write simple demo plug-ins. Also a collection of demo projects, tutorials etc. would be nice. The latter could be contributed by non-developers.
- Modularize the build process so that Python support could use SIP's build system instead of the current hacks. Support for muParser, liborigin and zlib could also be split out into plug-ins on the basis that you shouldn't have to install libraries you don't use. Also reduces compile times during bugfixing. [ assigned to knut_f ]
- Change some internal APIs that depend on the notion of a selected/current item. This will lead to a cleaner and simpler interface for plug-ins and Python scripts. This will have to wait until the model/view implementation is done since it will extend the handling of selections to non-contiguous selections.
- Replace or fork Qwt by a system based on Qt4's features and optimize it for optimum export quality. Very important: Eliminate the restriction to integer coordinates and implement true plot scaling.
- Add support for custom page sizes once Trolltech fixes this issue: http://trolltech.com/developer/task-tracker/index_html?method=entry&id=99441
Note about modularization: this is mainly about internal reorganizations. Most of the current features should remain part of the main executable, but use interfaces similar or identical to those used by plug-ins. This should ease maintanance and make adding new features to the core application a no-brainer once they're available as plug-ins. Support for Python, liborigin and zlib could be real, external plug-ins since many people probably don't need them, but this can be decided shortly before distribution and ideally by modifying just a few lines in a build script.
Other Planned Features
- Waterfall plots
- Polar charts
- Ternary plots
- Improved data analysis: base-line detection tool, more built-in fit functions...
- Improved import of Origin project files
- More import/export filters including Open Document spreadsheets (plugin)
- See also:
- ApplicationWindow, MultiLayer, Graph, Graph3D, ImageMarker, Legend, MyWidget, SelectionMoveResizer, MyParser, Note, ScriptEdit, Table