* bugs

- There is a pretty strange bug in kig when you use the accel keys.
   Open Kig, type p to start constructing a point.  Click somewhere to
   construct one.  Now click p again, and press escape to cancel the
   construction.  It will not work, and you will have to construct as
   many points as times you pressed escape ( or perhaps the times you
   pressed esc square or sth like that ).  Anyway, this is due to how
   Kig works with some strange Qt event loop stuff to make its modes
   work, along with a strange way in kaccel of working.  I have a
   patch against kdecore/kaccel.cpp that should fix it, but the real
   fix is to get rid of the entire event loop stuff and think of a
   better way to manage all this. pino: seems pressing the stop button
   n times, where n are the times you pressed escape, cancel all the
   constructions, so the problem is the behaviour of escape.
   (note: it seems fixed with kdelibs4)

- The polar coordinate system blocks Kig when zooming. Select the
  polar coordinate system, use the Select shown area tool ( or your
  favorite zooming tool ) and select a specific part of the document.
  Smaller parts of the document cause bigger problems. pino: this is
  due to the polar grid: try to make zoom if there is no grid.

* I/O: filters, exporters, ...

- add other command line options, like:<br />
  -e, --export-to FORMAT file.kig => Kig will export file.kig ( or any
  other supported format ) into file.ext ( even more than one file ).
  The output format depends on the FORMAT string. domi: this is more
  difficult, because the export plugins require extra parameters.
  E.g. the ImageExporter needs an image size etc.

- filters: more input filters; improve the existent ones ( see
  filters/*-filter-status.txt ); add the possibility to ignore errors
  on loading

- "export to *": add stuff like java applets, kmplot documents, etc.

* objects

- When intersection objects that generally have two intersection
  points (in particular: line-conic, circle-circle) let
  kig try to figure out if one of the intersections is already there
  (it must be an intersection "by construction" and not by chance),
  in which case build only the "other" intersection by using information
  from the already present point.  This would have two beneficial effects:
  1. decrease de amount of coincident points
  2. the constructed point will always be "the other" intersection
  also when moving objects around.  This is not the case now, which
  leads to unexpected behavious sometimes (from the user perspective)
  (done: 2006-01-19, post-kde-3.5)

- Two new transformations: projection on a line, orthogonally and
  according to a given direction.  As a mathematician, I'm supposed to
  have a grudge against these, as they don't fit the definition for
  affine transformations ( the matrix has to be regular ) ;), but I
  suppose high-school students may find them useful.  However,they
  would give rather useless results for e.g. lines ( all curves are
  almost always projected on a line, segment or ray that you wouldn't
  see because it's equal to the line we project upon ).  It would be
  useful for points though.

- make DoubleImp a "visible" object with uses like Dr. Geo numeric
  values. (done)

- Provide some nice stuff for differential geometry: velocity vector
  of a curve, curvature vector, osculating parabole. Most of this is
  not too difficult to implement, but very cool :)  (mostly done)

- create a formula label to display math formulas in the document, and
  allow for importing from/exporting to other formula formats such as
  KFormula, OOFormula and MathML.

- other types of fillable shapes, like arc sector, arc segment.

- defined integrals, as a particular case of filled shapes.

- improve *a lot* the transformation support for cubics.

* GUI

- make stuff from RMB menu's accessible from other places as well.

- Add the possibility to select, via new dialog, one or more types of
  object.

- add a magnifying glass/zoom window to magnify "on-the-fly" a part of
  the document.

- improve the KTextEditor interface in the script code wizard.

- make the dialogs not pop up over the main window.

- add QTooltip and QWhatsThis to the widgets in the various dialogs
  (export dialogs, types dialog, ...)

* core

- When selecting an argument of a certain type, maybe we should check
   whether the required arguments are really there, before telling the
   user to select them.  Then we could give an error telling the user
   to first construct the other objects.  An exception should be made
   for points of course.

- add the possibility to transform more than one object at one time,
  using the popup menu. For example, I select two circles, I choose
  Transform->Translate form the RMB menu and then Kig should ask me for
  a vector to use to translate all the selected objects.

- extend ObjectFactory::sensiblePointCalcer to also construct
   intersection points of stuff. (pino: done for lines)

- when moving an object that wants to move its parents, try to check if
   it is itself not an indirect child of one of the parents it is
   trying to move, and forbid the move in that case, as it will lead
   to chaotic behaviour.  I am not sure if this is really well
   possible, but I have to look at it.

- add intersection types: arc-arc; arc-conic; arc-cubic; conic-cubic;
  cubic-cubic; locus-other object.

- rework the ObjectConstructor and GUIAction stuff into something more
   general, and more clean.  See the comment for
   ObjectConstructor::constructMode().

- figure out a way to allow the user to enable and disable certain
  features.  E.g. I have been asked to allow the user to limit himself
  to compass-ruler constructions.

- add another viewmode ( which would be completely orthogonal to the
  KigMode concept ), where you can more clearly see the dependencies
  in a figure.  Something with colours, numberings, and/or a tree-like
  text representation of the dependencies.

* scripting

- Python scripting: export cubics for real, improve existing API.

- make the scripting system work more like the macro system. Make it
  a way to define new object types that can be reused more than once,
  instead of making it just a way to add *one* object.

- support for more scripting languages than just Python.

* other

- document mathematical i18n strings, so that the translators have a
   clue about how to translate them !

- add "Tools": easy tools designed for geometry, like Angle converter etc.

- save a "session", i.e.: record how a document is moved, and save it to
  e.g. a flash file or something like that.

- koffice support ?

* future ?

- there should be a way to link a figure to a (html?) file containing
   exercises.  Teachers would be able to create exercises for Kig.
   I'm thinking of doing this with HTML (& KHTML) + scripting ( but
   this is _distant_ future. )
