
  TODO for criawips
  =================

    criawips  currently  aims  to  become  a  simple  very  stupid  slide  show
  application it might become  something  bigger  in  the  future,  but  please
  understand  that  I'm  currently  just  in  need  of  a  simple  slide   show
  application, so these are the reasons for the interesting stuff being  marked
  as 'enhancement'.
                                                                  Sven Herzberg

  * Name
    * give it a cool name before we're going to deliver usable software
      * take achtung? agnubis?
      * hammerhead? (hammering the clients on the head with a stunning
        presentation)
      * gesture?
      * gnome-presentations?
      * (gnome-)spotlight?

  * As soon as possible
    * Write a coding style guide [minor]
    * Schedule a code audit [minor]
    * Cancel file reading when an error occurs [normal]
    * (during presentation) Hide mouse if not used for 2 seconds [critical]
      * Show it once it's moved

  * Build Framework
    * add some fancy build output
    * add a message of doom if it's a CVS version
    * add three kinds of build types: developer/tester/packager
    * add an automatic test framework to test both for semantical problems
      (unit tests) and to test for source code quality
      * are the cast/type check macros defined?
      * do the ifndef/define header macros match
      * are _get_type methods marked as G_GNUC_CONST?
      * all properties are listed in the get/set_property methods
      * finalize calls parent's finalize
      * check functions getting a GError** to accept NULL too
      * headers use G_BEGIN_DECLS and G_END_DECLS
      * code uses G_DEFINE_TYPE for parent class handling
      * tree model implementations check the tree_stamp on iters
      * varg functions (those containing "...") should be tagged as
        G_GNUC_NULL_TERMINATED or G_GNUC_PRINTF
      * maximum code width 80chars (printer-friendly)
      * header is correct ("a gnome presentation...")
      * check for freeing of local variables
      * check whether locales for all translations are included in configure.in
      * check whether g_free is surrounded by if(ptr); this is not necessary

  * Code quality
    * move to GStrings for internal data as they're more secure
  
  * Compiler Flags
    * include *_DISABLE_DEPRECATED if we're developing [enhancement]
    * remove unneccessary libs [critical]

  * Configuration
    * Make keys configurable [enhancement]
    * Make mouse gestures configurable [enhancement]

  * Different Resolutions
    * implement switching the resolution when presenting
      * switch to presentation resolution on start [minor]
      * switch to original resolution on end [normal]
    * implement switching the resolution on focus change
      * switch to presentation when we get the focus [minor]
      * switch to original resolution if we lose the focus [normal]

  * Debugging
    * disable debugging output in regular builds [enhancement]
    * disable g_asserts in regular builds [enhancement]
    * create a cool debugging library

  * Documentation
    * Move glossary into the manual [enhancement]

  * Editor
    * slide preview [enhancement]
    * slide editing [enhancement]
      * editing file properties [enhancement]
      * selecting components [enhancement]
      * editing properties [enhancement]
      * moving around, editing, copy and pasting... [enhancement]
    * animation preview in sidebar [enhancement]
    * show rulers at the right and the left

  * Features
    * Background
      * Image
        * Tile
	* Center
	* Stretch
	* Scale
      * Color
      * Gradient
    * Text
      * 3D
      * Color
      * Shadow

  * File IO
    * implement loading of files [blocker]
    * rewrite current file loading [enhancement]
      * implement a plugin framework for different file formats [normal]
      * pre implement support for revised own file formats [minor]
    * implement saving of files [enhancement]

  * GNOME integration
    * get author information from evolution [enhancement]
    * import author information into evolution [enhancement]
    * send file via evolution [enhancement]

  * GNOME Office integration
    * add gnumeric spreadsheet rendering [enhancement]
    * add gnumeric graph rendering [enhancement]
    * fix dia to become really cool [enhancement]
    * add dia diagram rendering [enhancement]
    * add printing support [enhancement]

  * Importers
    * create an import-export feature matrix [enhancement]
    * magicpoint [enhancement]
    * PowerPoint [enhancement]
    * OpenImpress [enhancement]

  * Internals
    * Implement ratio for slides [discuss]

  * Main Window
    * side panes
      * steal the sidepane code from a gnome module
      * make it beautiful
    * add a layout browser
    * manage windows with a "Windows" menu
    * check whether we open a file twice

  * Multihead/Remote display Support
    * check whether criawips works via ssh [important]
    * check whether criawips can be used on a different screen [enhancement]

  * Presenting the slides
    * show slides one after the other [blocker]
      * key press/mouse click event based [minor]
      * allow mixtures of both (key/mouse and timer) [enhancement]
    * implement blending [enhancement]
    * remove all occurences of gdk_screen_get_default() and get the screen from
      the presenting widget
    * simultaneous presentations on different screens (machines)
  
  * Refactoring
    * move the content of libglade-support.[ch] into main-window.[ch]

  * Test Framework
    * implement comparison of criawips objects [minor]
      * implement equality checking [minor]
      * implement checking constructors [minor]
    * create a presentation, save it to a file, open that file and compare the
      objects [minor]
    * open a presentation, save it to a file, compare these files for equality
      [minor]
    * implement a small testing framework to check for memory leaks
      (unfortunately these are no true/false tests)

