Structural Outline

11 April 2004, 18:28 UTC

So: what would this editor be made up of, in terms of structural units.

Or put it another way, what do I start implementing first..

1. A simple Canvas widget that supports panes, each with a background (which might have transparency) and randomly placed text with varying fonts and colours (fg and bg?) (and possibly attributes like underline, struck-through...).

2. A data structure for storing documents which allows for lazy pointers to functions which get the rest, 'pointers' to places in the text, and some sort of parallel markup. There must be support for multiple markups and the markups must handle the text changing underneath them.

3. A 'window' which consists of a Canvas, a data structure, and some pointers into that structure, and possible some markup. Each window has a function for updating the Canvas based on a possible new version of the window or pointers.

4. Methods for loading a data structure from file and storing a modified structure to file.

5. KEyboard/mouse input processes including focus management. There particularly needs to be well thought out support for random international text.

6. A set of operations that can be applied to a document, or to a pointer into a document. These operations need to call-back the windows.

7. A mapping from input events and operations.

and probably more.

It might be nice to separate the Canvas and filesystem/process access out into separate processes the communicate with the main editor over sockets.

Then a new window could be started on any display and it could connect back to the editor and provide immediate access to all current editing sessions.

Similarly a file/process proxy could be started on any host and allow processes and files on that host to be managed by the editor.

One awkwardness with have the display in a proxy is that the set of fonts available to the proxy might be different from the set available to the main editor. This could be seen as the same problem of general font matching...

Might leave this aspect for later.




[æ]