                                TODO
                               ------

           Last modified by: Lukas Lipka <lukas@pmad.net>
                                 on
                          04-03-2003 12:52:28



 + Application containing all widgets
     Write an application which contains all widgets. This will be used
     for skin and widget testing.

 + Combobox drop cancel
     Combobox should close the opened view if its clicked again.

 + GTK-like File Selector
     Finish work on the GTK-like file selector. Write code for the
     Add/Remove shortcuts buttons. The links should be stored in the
     registry (KEY: /USER/IODLG/LINKS/). And finally cleanup iodlg.c.

 + Tooltips

 + Finish the Mines game
     Will probabbly need to recode some parts because the are unusable.

 + Font server

 + Convert image to grayscale function
     Will be used for inactive widget icons.

 + Make a standard way for recieving messages from widgets

 + Menuview buttons should use the menu skin down while open
     Also parent menus should use the menu skin down while their
     child menu is open.

 + Rewrite part of ini.c, particullary INIGetText()
     This function could be optimized much better and we would
     gain speed.

 + Add INI writing support to ini.c
     Self-explanatory.

 + Simplify menu drawing
     Menu drawing currently uses many if statements which slows down
     the drawing. Most of them decide if skin or non-skin mode items
     should be used. Instead two different functions could be created
     and set for the menu during create time. An even better approach
     would be to make a function prototype which will be the default for menu
     drawing. Example here:
          void DefaultMenuDraw (PWidget o, p_bitmap buffer, PRect w);

     In LibMain ():
          if (UseSkins)
               DefaultMenuDraw = &SkinMenuDraw;
          else
               DefaultMenuDraw = &NonSkinMenuDraw;

     Now in NewMenuView ():
          ...
          WIDGET(v)->Draw = &DefaultMenuDraw;
          ...

 + Dektop icons
     Simple implementation of icons for desktop. Listview could be used
     as a parent structure. See listview.c for more information. For a
     working example see the Dirview widget in iodlg.c.

 + Clean mess with nuid, id, AppVersion, AppName and others in DynLD
     The dynamic linking system should not rely on on these. Currently if you
     dont specify them the system crashes. Instead theses variables should be
     optional.

 + BIG CHANLLANGE: Labels should be transparent

 + Label alignment support
     Add support for text alignment flags:
          LF_ALIGNCENTER
          LF_ALIGNLEFT
          LF_ALIGNRIGHT
     
 + Listbox memory leaks
     Listbox doesnt clean up memory after it self. Big memory leaks.

 + New Fileinfo dialog
     See docs/fileinfo-mockup.png

 + Slider widget pull-offs
     The slider widget isnt finished. The tasks are to implement slider
     dragging and also to redraw only the area thats needed to
     prevent flickering.

 + DynLD linker
     I dont quite remember what I wanted to do here, but I think the interface
     should be cleaned up. The file inforamtions at the end of the linking should
     show only relevant information. For eg. if no resources were linked the line
     saying how many resources were linked with the file weould not be shown.

 + XML support - port libxml2
     This shouldnt be too hard. libxml2 contains many options that arent needed.
     The only required parts to port are for XML read/write support. I think thats
     about 15 C files.

 + Registry should use only lowercase or uppercase letters for ker
     Self explanatory, isnt it?

 + Laby
     Add level support (levels loaded from files) and draw pixmaps instead of using
     rectfill and other.
     Also one eye-candy: the character could be made from two different pixmaps
     both in different state so the in the end it would look like the character is
     walking.

# KERNEL
=============
 + Document kernel source files
 + Try to make windows port on a GCC compiler to prevent incompatbility bugs (see bugs.txt)

# WIDGETS
=============

SKIN (We want a totaly customizable UI)
 + Make all widgets with a non skin mode
 + Progressbar skinning
 + Treeview skinning
 + Tabbook skinning

WINDOW
 + Minimize
 + Implement all flags
 + Clean up code
 + Proper window keyboard focus for ALT+F4 MSG

