

The external loader/saver stuff doesn't really work;:

LaTeX plugin: wrap a single line in this:
	\documentclass{article}
	\pagestyle{empty}
	\thispagestyle{empty}
	\begin{document}
	the line the user typed
	\end{document}
Call LaTeX on the result, then dvips to get an eps image which can be
displayed in a Ghostscript widget. The whole thing will be very similar
to the clipart plugin. One use will be as a formula editor, where
mathematical formulas can be written like this example:
	$$ a(k,l) = (\sum_{i=k}^l X_i) \bmod M $$
This isn't necessarily the most WYSIWYG formula editor ever designed,
but it will no doubt produce good results. Mathematicians are expected
to grok symbolic language anyway.
This functionality can be added to the existing clipart plugin, simply
by letting it handle files with the extensions tex and dvi differently.
The new behaviour is:
1. If extension is tex, call "latex filename.tex" and proceed with 2.
2. If extension is dvi, call "dvips -E filename.dvi" and proceed with 3.
3. Load file as postscript.
The clipart plugin needs a few enhancements. It isn't currently very
good at figuring out its own geometry. To do this we should look for
a BoundingBox line:
	%%BoundingBox: x1 y1 x2 y2
I *think* that this information is already picked up somehow, otherwise
it wouldn't display the right part of the image. But I don't know
if it is the clipart code or the widget that does it.
Finally, a way to edit the TeX code would be useful: click on the
window to pop up a text widget or even a text editor such as XedPlus.

Plugins should go into $prefix/lib rather than $prefix/libexec
in order to be FHS compliant.

Zoom plugins, or at least images.


Update fileio_html to deal with the features in xlHtml:
 - Convert HTML entities like &nbsp; (should be done anyway)
 - Recognize expressions as such
 - Adjust line widths automatically
 - Grok some of the formatting:
	<BODY TEXT="#nnnnnn BGCOLOR="#nnnnnn">
	<CENTER></CENTER>
	<FONT FACE="Arial"></FONT>
	<TR ALIGN="center/left/right" VALIGN="ignore">
Look for this line: <meta name="GENERATOR" content="xlHtml">
But just converting &nbsp; would actually make a whole lot of difference.



The font/format handling code has an api that is much too wide:
too many fuctions and too many datastructures. It should be possible
to keep encode_format and decode_format and remove everything else.
Remove all datastructures from public view. font_list and color_list
are necessary for the user interface. font_ascent and font_descent are
needed too, as are font_height and font_width.
As an example, let's say we are developing a widget which will display
scaled multifont text. We would like to do something like:
for (i = 0; text[i].c; i++) {
	adjust_gc(gc, text[i].f, zoom);
	print_char(x, y, gc, text[i].c);
	x += char_width(text[i], zoom);
}
Note: this does not take into account line wrapping, white space,
adjustment, line height and so on. We'll graft that on later.


PW: transfer control over the data from the application to the
Richtext widget. This so that Richtext can be used on its own.
Changes required: enormous. The sheet datastructure must be encapsulated
in the widget rather than the application. Actions must be rewritten
to not require SIOD. Yuk.
The text must have a reasonable representation in the widget. I would
prefer to have a single string of richtext characters with lines separated
by newlines, but then we lose the styles. PW stores each line as
height, style, adjustment, bop and richtext. The widget would need to
do the same for each line. It would also need to store all this info:
point row and column, mark row and column, top, block boundaries,
number of allocated and used lines, the lines as specified above,
and finally the plugins. Whew.

PW: give one ruler, grid, hscroll and vscroll to
each sheet. Move all the position tracking from pw to xcommon,
i.e. remove point_pos, mark_pos, top, blku and blkl from
struct sheet.

OTOH, use one Richtext widget for each sheet. It looks like I'm
about to wreck the "device independence".

PW: Bootstrap in this order:
1. Initialize the window system. This creates the main application
   window, but no document window. It will work fine thanks to the
   Rudegrid.
2. Create a single application window, with no buffer associated.
   There will never be more than one such window. I'm scrapping
   that functionality.
2a. Load pw.scm and any other Scheme code that needs X. Must rewrite
   siodi.c so it can run without the presence of buffers.
3. If there are command line arguments, use them to load files.
   For each document, create a buffer. For each sheet, create a Richtext.
   The parent of the widget must be the single application window.
4. If no files were loaded, create a dummy "Noname" document using
   a single sheet in a single buffer.
I'll be better off rewriting the whole thing from scratch, starting
with a dummy application. Scrap the nspw directory, get rid of legacy
code and write a word processor that does not attempt to be "device
independent" or use widgets that are so general purpose that nothing
else can use them.



Change plugin coordinates to use pixels rather than cells.

There is something strange going on with the styles in PW.



Old bugs from before 3.2.0 follow.

--------


Fix Chimera, i.e. make a Really Neato version.

Plotting appears to be broken and Gnuplot has many new
features in 3.7.

Integrate libMagick and libxmagick.

Xedplus: Menu entry to send mail. Display row/column on status
line.

Xedplus: Open a file. Save it. The filename should already be
present in the file selector.

Siag: Add missing functions in scheme.html. They are:
print-format, make-backups, change-margins, change-paper-size,
change-headfoot, cut-block-to-string, copy-block-to-string,
paste-block-from-string, edit-python, define *standard-interpreter*,
change-interpreter, interpreter-test, add-property,
smart-fill-block, sort-block, change-first-page, set-standard-width,
set-standard-height, set-standard-format, siag-net, enter-date,
enter-time, what-cursor-position, recalc-matrix, add-sheet,
remove-sheet, rename-sheet, move-sheet-up, move-sheet-down,
move-sheet-top, move-sheet-bottom, beginning-of-buffer,
end-of-buffer, top-of-buffer, bottom-of-buffer, go-to,
a1-refs-set, save-preferences, plot-plugin, exec-python,
spawn, set-environment, edit-applications, form-test, form-test2,
form-test3, plugin-import, plugin-export, plugin-link,
plugin-delete, plugin-move, plugin-resize, do-link, aboutbox,
aboutsiag. And most of the stuff in keys.html.

PW: Add missing functions in scheme.html.

Egon: Add missing functions in scheme.html.

Siag: there are probably colour-related bugs in the format code,
similar to the border-related ones fixed earlier.
