* bugs

- Related to "polygon by its vertices contruction".  The user right-clicks
  on a point and then selects "start"; among the choices there is also
  the polygon construction, but if selected kig crashes!
  Probably related to the fact that this ObjectType does not inherit
  from ArgsParserObjectType but directly from ObjectType, perhaps
  I (maurizio) forgot to overload some important method.

- 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.

- 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.

- Improve the selection of circles, which now is done correctly if the
  selected rectangle intersects a circle in a ( more or less ) small
  part of it.

* 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 Cabri filter and Dr. Geo filter
  ( see filters/drgeo-filter-status.txt ), add the possibility to ignore
  errors on loading

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

* objects

- 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.

- 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 :)

- 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

- give the user a way to select any object under the cursor.  One way to
  do that is to present a list of objects under the cursor when the
  user presses <ctrl>-left-click, for example.  Also add a "tip of the
  day" to inform the user of such possibility.

- 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 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, ...)

- use KStdGuiItem's wherever is possible.

* 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 attach text label also to angles.

- 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.

- add support for work with other measure units (cm, inches, etc...)
  than just pixels...

- 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.

- allow editing of Python scripts.

- 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 !

- write *-filter-status.txt's for the kseg and cabri filters.

- add "Tools": easy tools designed for geometry, like Angle converter and
  so on...

- 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.. )
