- Need a resource manager for shared things like common GC's and pixmaps.
  - Implement a resource-based system for keeping track of XPM paths, mapping
    resource names to files, configuration system, etc.. Currently this is
    just a lot of hardcoded ugliness and klunky local parametrization.
  - for runtime efficiency, consider using a compile-time generated .h file
    that compiles resource names into #define's, and use integer-based runtime
    resource ID's instead of strings.
  - we should separate static resource management and dynamic resource
    management. For static management, everything should be resolved at compile
    time and compiled into the program; for dynamic management, we'll need a
    real name-to-resource mapper, runtime loaders, etc..
  - implement common algo's in a base class, and use derived classes to make
    a GC manager, a pixmap manager, etc.. Don't over-generalize already!!
- Need to implement generic font-handling class(es) in xutil (or use a
  separate module - xtext - so that the core X11 utils are independent of
  any font-handling ugliness)
- class xwindow should provide input selection funcs (eg., select_kbd(),
  select_mouse(), etc.) so that we can make sure resizes are always handled,
  e.g., so that we can update window dimensions properly.
  - maybe provide single wrapper around XSelectInput()?
- Need to properly do an XMatchVisualInfo so that we fail correctly on
  color-challenged displays. Don't want users to get identical grey marbles
  on 2-bit displays :-)
+ add facility for event handlers to indicate program quit. Quitting using
  an exception is lame :-)
+ Need to fix xwindow::{width,height}(). Currently, they do not take into
  account the width of the border.
  + probably need two sets of dimensions access funcs; one for internal dim
    and one for external dim ('cos some stuff does need to know exactly how
    big the internal part of the window is).
+ Need to handle keyboard input processing (must put this in xutil, since it
  gets quite ugly with KeySym mappings and whatnot)
  * Let's stick with local KeySym handling until we come up with a better
    framework for handling keystrokes.
+ Integrate with class triboard so that we can have a real underlying
  representation for things (makes it easier for experimenting)
+ Integrate with main game engine. (Yeah, so this will break the ncurses UI,
  but who cares? :-P)
+ Integrate into main binary already!!!
+ Need to properly implement scoreboard panel so that we can see the progress
  of the game! :-)
  + actually keep score
  + show player turns
  + show winner
+ Need to re-do event-handling framework between XAtom4 subwindows. What we
  *really* want is to have the child windows ONLY process background tasks like
  exposures, mouse tracking, etc., events that cause game state changes should
  be handled by class xatom4. The subwindows should have a "slave" interface
  driven by class xatom4, not the other way round.
  X make xscoreboard independent of class atom4
  + move xtriboard button handler into class XAtom4
  * might be hard to make xtriboard completely independent of class atom4,
    'cos there are too many gamestate-specific stuff in there. Unless we
    *totally* move all event handlers (eg. the cursor handling) into class
    XAtom4.
+ BUG: in AI mode, after you win, the autocursor still shows up when you
  mouse over "legal" moves.
  * Was actually bug in atom4ai::is_local_turn().
M Need to generalize xsprite_engine:
  M what we *really* want is a graphics manager which is independent of
    server-side Pixmaps;
  M *and* another per-server, per-screen, -specific engine where server
    dependent GCs, Pixmaps, etc., can be kept.
+ Fix refresh code in xscoreboard: it's very inefficient!!
