Advice on implementing a zooming interface?
chombee at nerdshack.com
Wed Apr 16 08:54:29 EDT 2008
I thought this list might be a good place to ask for advice.
I have tested a paper + card version of a prototype story writing tool
with children, and now need to implement a computer version of the
prototype. I don't have my interface mockups handy, but it is card-based
story writing. Imagine looking down at a set of 10, 20 or 30 or so
cards" on a table, you write a bit of the story on each card. The
interface needs to be able to provide a zoomed-out overview of all the
cards, and to zoom-in on each individual card, and the cards need to
text entry widgets on them for the user to input their story (they also
need text labels and images).
I initially envisioned the 2D cards existing in a 3D scene with proper,
animated, continuous zooming. This isn't really necessary though, the
is rather used to connect a fixed number of discrete screens, so it
be implemented more like in Sugar, where you don't actually see an
animation of the zoom happening.
Initially I thought to use pygame for the implementation as I knew I
use this on an XO. But I have looked around, and the GUI toolkits I can
find for pygame seem a bit limited. A text input area widget is missing
from pgu, for example. And I'm not sure I would be able to place GUI
widgets onto sprites (the cards) with any of the toolkits I saw, they
seem to allow a 2D interface to be overlayed on the game scene but not
integrated *into* the scene, whereas I have been imagining my story
as sprites in a game scene and the GUI widgets being on the cards
The most promising, in fact the only workable option I've found, seems
be the 3D game engine Panda3D, and its DirectGUI library. I believe it
would allow the cards to be implemented as flat objects in a 3D scene
allow GUI widgets to be placed onto these objects in the scene. But a
3D engine may be overkill.
Does anyone have any advice on how I could implement this, and hopefully
make it OLPC compatible, either using pygame or something else?
More information about the Devel