Hi All,
I'm still not convinced that it is necessary to make Octave thread
safe or similar complicated things to provide a graphical interface to
Octave. I don't really understand the input handling in Octave, so
this
has been developed in a "Hmmm, I wonder what happens if I press this
button..." style.
What I have done is the following:
In 'src/input.cc' I have added:
// TRUE if the GUI is being used
bool using_gui = true;
Then later (same file) I have changed the function 'gnu_readline' so
it
reads
if (!using_gui)
retval = command_editor::readline (s, eof);
else
retval = GUI::readline (s, eof);
This is probably the wrong place to do this, but it seems to work
(haven't tested much, though). The function 'GUI::readline' returns
when
the user pressed Return in the GUI. The GUI is being started in
'octave_main' in 'src/octave.cc' in a separate thread.
Using this approach the GUI supports partial statements. It does not
support tab-completion and history searching, and similar. Such things
will have to be reimplemented in the GUI. I don't think that's much
work
though. Are there any issues with this approach that I'm missing?
Søren