> Yes. I should consider whether to abstract the View (Qt toolkit) from the
> Controller, as currently they are tightly bound. This obviously adds an
> overhead to future development so I need to weigh it up.
Since widget controllers are more a sort of glue, they are often hidden in the
event system leading to the document-view-model. I would not care too much
about them. In contrast, I would strongly encourage considering the CAS
system as a controller.
> My current thinking is that for a notebook presentation I would use an
> external compositing software such as KWord for example (and I know it has
> its problems), and Kayali would provide the rendered data (equation
> visualisation, plot png etc) for equations, graphs etc embedded in the
> KWord document.
>
> Is it the place of a CAS GUI to do document compositing? This will involve
> a lot of wheel reinvention.
My favourite notebook model would be a composition of:
- XHTML with MathML for the classical document parts
- messages to and from maxima (e.g. input, output, graphic objects)
- some grouping elements for the document structure (analog to the section
grouping of the macsyma notebooks)
There is really no unnecessary wheel reinvention involved, since you can use
existing DOM implementations for the model. Also, you can use existing
browser views for the classical document parts, which can even be used to
aggregate a view for the maxima messages. Other existing views (e.g.
mathplotlib) may be utilized for maxima messages that are plots.
For a first-time implementation in Qt, I would certainly simplify the above
specification by using QTextEdit rich text for the classical document parts
or even plain fix-font text. QDomDocument can still be used for the model. I
would also implement very plain views, e.g. simply displaying the maxima
interface language (1D-output in this case) without further formatting and
using static images for plots. However, I would take care of the custom parts
of the model (e.g., what is the model of a maxima plot?). I would also
provide the possiblity to export the model to a maxima batch file, i.e.
stripping output and putting the classical document parts into comments. This
way, early adaptors won't loose their work regardless of future changes.
One thing that kept me from implementing this is the fact that there is no
(documented) interface to a maxima server with a language that fulfills my
requirements. I hope your development will directly and indirectly contribute
towards such an interface. I wish you all the best!
Michael