[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GUI [was: Re: Possible (summer of code) projects for Octave)
From: |
Søren Hauberg |
Subject: |
Re: GUI [was: Re: Possible (summer of code) projects for Octave) |
Date: |
Thu, 06 Jan 2011 14:51:51 +0100 |
tor, 06 01 2011 kl. 08:06 -0500, skrev John Swensen:
> On Jan 5, 2011, at 11:02 PM, Jordi Gutiérrez Hermoso wrote:
>
> > On 4 January 2011 21:47, Thomas Yengst <address@hidden> wrote:
> >> Not so much a GUI, but what Octave needs is a Workspace (in Matlab's
> >> sense) that shows variables, dimensions, bytes, etc.
> >
> > The current contenders for the GUI throne already do that.
> >
> > I think I agree with Søren's ideas, though. If we are to properly
> > integrate something like OctaveDE or QtOctave into Octave, we first
> > need to implement some C++ functions in core. I've added it to the
> > wishlist:
> >
> > http://wiki.octave.org/wiki.pl?Projects
> >
> > - Jordi G. H.
>
> If you look at the source code repository for OctaveDE, there is
> already an attempt to do that. It is a class called Octave server.
> It is a class that hooks into the idle event loop for readline and
> does transactions with Octave during the idle event loop. This
> *should* be inherently thread safe, as Octave is doing nothing while
> the readline idle event loop is running. I proposed this be included
> in the Octave sources a while back, but I don't think there was much
> interest.
>
> There are some things that an IDE can place a request to the
> octave_server and the data will be retrieved on the next call to the
> idle event loop (e.g. the contents of a specific variable, placing or
> clearing breakpoints, etc), there are some things that get requested
> every time it runs (e.g. any additions to the command history or the
> names, types, and sizes of the variables in scope). The octave_server
> maintains a copy of these items until they have been retrieved by the
> IDE and uses mutexes to ensure thread safety of the IDE and readline
> idle event loop accessing octave_server.
>
> The octave_server has absolutely no dependence on OctaveDE and could
> trivially be pulled into any other project (IDE or no) that wishes to
> request/retrieve this kind of data from Octave in a threadsafe manner.
>From what I understood this class was able to retrieve data (such as
variable information, etc.) from Octave, but it was not used for
evaluating code, i.e. you cannot do
octave_server O;
O.eval ("for k = 1:10, disp (k); endfor");
Is that correct? I was under the impression that you actually need to
embed a terminal widget (VTK, ...) in the GUI in order to provide the
user with some means of interaction.
I would like to see member functions that would allow me to do something
like
octave_server O;
bool A = O.is_complete ("k = 1;"); // returns true
bool B = O.is_complete ("for n = 1:10"); // returns false
O.eval ("k = 1");
Especially the ability to determine of a line of code is complete seems
to be of particular interest to me. Without this, it becomes really hard
to provide a GUI that does not depend on a terminal widget.
Søren