--------------------------------------------------------------------------------
  Screenlets v0.0.7 - (c) 2007 by RYX (aka Rico Pfaus) <ryx@ryxperience.com>
--------------------------------------------------------------------------------

This is the unsorted TODO-list for the Screenlets. Once I reach the 0.1.0
version, I will put together a roadmap and a more precise overview of the
existing tasks... 


+ TODO:
  [NOTE: more tasks in the several Screenlet-files ...]
------------------------------------------------------------
- [PermanentItem] code cleanup and bug-hunt
- let the daemon save stand-alone attribute for each entry in session and
  make it possible to restore stand-alone Screenlets (by passing args on 
  register)
- properly delete Screenlets when they get removed (their window is destroyed)
  currently the on_quit-handler needs to perform all cleanup
- icons for Control, Ruler, Windowlist, Applauncher, ...
- TimeOption, DateOption, ListOption
- fix Windowlist and add some options to it (and improve some things)
- Screenlet.redraw_canvas_area(x, y, w, h) to allow only partial redraw of
  the Screenlet's area
- DRAG&DROP support: Screenlets should be generally
  moved by drag/drop operations rather than the current begin_move_drag-call 
  (which sucks because of several reasons). When a Screenlet gets dragged
  it should create an icon with its current state and use that as dragging
  symbol within the window-manager. That way Screenlets could be dropped 
  somewhere and trigger actions like dragging a Note on the Mail-icon and 
  getting a popup asking for an e-mail address to send the note to (or 
  dragging the Clock into a document to add the current time and date). For
  that, the Screenlet should also offer simplified ways to handle "dropping"
  of things on it.
- replace width/height with __width__ and __height__???
- add/finish missing handlers:
  Screenlet.on_key_down(event)
  Screenlet.on_key_up(event)
  Screenlet.on_drag_enter()
  Screenlet.on_drag_leave()
  Screenlet.on_drop()
- Screenlets should throw an exception if they can't find their initial Theme
  so no checks for self.theme in draw/draw_shape is required (maybe it should
  catch the exception and show an info-popup that the Screenlet didn't find
  the requested theme)
- Finish In-Place-Editing for the Sticknotes
- options.ListOption-class
- ... (everything I forgot now)



+ IDEAS:
------------------------------------------------------------
- Create abstract subclasses like TextScreenlet which would then implement
  common attributes for such a screenlet (like text, offset, color, font, 
  __layout)
- The theme should have a possibility to offer an alternative draw-method
  and it should be able to provide its personal settings for that (so it'll
  need its own init-method to add settings). Or maybe just a plugin-like 
  extension-system within the theme, that can be easily used from within 
  the screenlet ... to provide dynamic extensibility of the Screenlets 
  without writing a new Screenlet all the time ... (could be useful for 
  cpu/net/memory-meters since they contain very similar code and only the 
  drawing methods signficantly differ from each other)
- BlackHoleScreenlet that "swallows" everything and looks like a hole in 
  the screen. Should be "collecting" everything that is put into it and offer
  some intelligent way to retrieve stuff from it.
- ColorManagerScreenlet that allows to pick colors from anywhere (and manage
  the colors in a fancy and intuitive way?). Should display in RGB, hex, int.
- TooltipScreenlet that overrides org.freedesktop.Notification and offers
  good looking, flexible and themeable tooltip/notification-windows with 
  semi-transparent bg and shadow

