This weekend, I had a chance to sit down and take some serious notes
on how PechaPublisher will be organized: everything from the layout to
first thoughts on the underlying code. This notes are linked on the
project site at this page:
http://code.google.com/p/pecha-pub/wiki/ComponentArchitecture
The current thinking on the mechanics of the application is that users
will create and edit content in pechas via "layers" and groups of
layers, a la Photoshop, PageMaker, etc. (Thanks to Bill O'Brien for
that idea!) The layers in PechaPublisher, however, will function a
little differently, but as needed for our usage.
You can see screenshots of the prototyped layout here:
http://code.google.com/p/pecha-pub/wiki/ScreenShots
Note that there's only one prototype image up right now, and
considerable work has been done on the layout since that image was
posted. However, the basics remain the same, and as you look at the
"layers" part of that prototype, you should get a good sense of where
we're headed.
In a nutshell, the blank "layers" section will contain any number of
the following layer types:
* Group (folder)
* Source Text (rtf files that will get loaded into the text editor
widget)
* Images (that will get loaded into a simpe image viewer widget)
Groups are special in that they can contain any of the above three,
but in and of themselves, have no information or attributes. As such,
the layer area will be a tree view, with potentially nested content.
The source text and image layers will have options for setting things
like line height, lines per page, etc. This design allows us to not
only solve the problem of how to mix different texts in a single
volume (e.g., Tibetan + transliteration), and not only easily allows
for the simplest case (just Tibetan), but it provides users with just
about infinite flexibility in how they want to arrange their pechas.
I've still got a *lot* or GUI prototyping to do (everything from tons
of adjustments to the main window to all the dialog boxes and app
settings/preferences), not to mention hooking the GUI bits up together
and then writing code for all the needed logic. But! This is a
start :-) And it's quite encouraging...
d