Maxima - new GUI



On Thursday 14 October 2004 10:04, Michael Reimpell wrote:

>
> - No formatting is done on the output. In particular, line breaking is
> business of a view and definitely should be hidden behind a view's
> compositor strategy pattern. From the list above, 4. seems to be the
> closest match, and 3. and 5. are for sure the wrong choices.
>

Yes.


> A CAS GUI is a perfect example where a Model-View-Controller design
> applies. As this involves dedicated responsibilities, I don't understand
> the meaning of "the GUI should be the boss". But there is really no need
> to discuss line-breaking, layout markup or the underlying window toolkit
> in the first place:
>
> Line-breaking algorithm and layout markup are properties of views. You may
> even switch between a MathML-view and a LaTeX-view at runtime, e.g. using
> LaTex for a PrintView and MathML for a ScreenDisplayView.
>
> You can change the underlying window system afterwards by using abstract
> factory and bridge patterns, or simply by using exiting frameworks that do
> so (e.g. wxPython in this case).
>

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.

> What really needs to be discussed is the model! For a notebook style CAS
> GUI this would be the internal representation of a notebook document.
> Since this inevitable includes an internal representation of messages from
> an to the CAS, you can restart reading this email from the beginning.
>

We should distinguish between

a) the Model in the MVC sense, which as I see it is the Maxima internal data,

b) the View, which is a combination of

i) the windowing toolkit (Qt, gtk, wxWindows)
ii)  the metaphor for presenting the data i.e. whether that is a notebook 
view or whatever,

c) the type of data to be presented in the view (MathML visualisations, Latex 
visualisations, graphs, textual elements)

I would be very interested to hear what method of presentation people prefer. 
I haven't seen Mathematica in action but I hear that it uses a notebook 
metaphor. While I understand that this is beneficial for presenting work, is 
it the best thing for day-to-day usage? Currently Kayali is using a very 
simple ordered data list, which can contain any visual element (a formatted 
equation, graph, numerical answers et al.). 

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.

Abdulhaq