octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GUI design


From: John W. Eaton
Subject: Re: GUI design
Date: Tue, 27 Mar 2012 15:59:11 -0400

Octave will have an IDE, so there is no point in arguing about whether
an IDE is good or bad.  In 2012, novice users expect that a program
like Octave will have a GUI/IDE and they are confused when it does
not.  There is no reason I can think of that we should not provide
some kind of IDE.  These days, the tools to build one are sufficiently
mature that it should not be that much effort.

The IDE will also be optional, both as a build-time option and a
run-time option.  It must remain possible to build Octave without an
IDE so that people can continue to build Octave on systems that lack
the necessary dependencies, or so that the size of Octave and the
difficulty of building it may be minimized when using Octave on
systems that do not need the IDE.  Similarly, even if Octave is built
with the IDE enabled, it must be possible to run it with the IDE
disabled.  That way, running Octave in a terminal session will still
be possible, just as it is now.  This means that there must be a clear
separation between the IDE and the core of Octave.  We will not embed
calls to GUI toolkit functions throughout the core of Octave.  We
should also not assume that the GUI toolkit we choose now will be the
one that will be used forever.

The following features are essential:

  * An area for the main command window that presents the Octave
    prompt and displays the output from commands, just as you
    currently see when running Octave in a terminal window.

    The command line in this window must have GNU readline
    command-line editing.  If this can't be accomplished using a
    terminal widget for the GUI toolkit that we choose to use, then
    I've previously shown how we can get the same functionality
    without a terminal widget (though there may be some problems yet
    to be solved regarding what to do about the pager and other
    external programs that expect to run inside a terminal).  See the
    following thread for more information:
    
https://mailman.cae.wisc.edu/pipermail/octave-maintainers/2012-January/026739.html

  * An area to display command history.  It should be possible to
    select and paste previous commands from the history window into
    the command window.

  * An area to display the contents of the current workspace.  It
    should be possible to display the contents of variables from this
    list.

  * Octave's doc command should display a formatted version of the
    manual in a separate window.  It is essential that this window be
    visible simultaneously with the command window.  We should not
    use a tabbed interface for this feature.  It should be possible to
    choose which program is used to browse the documentation.

  * When there is an error running an Octave script, an editor should
    pop up and place the cursor at the line of the error.

  * You should be able to interact with the debugger through the
    editor.

  * It is absolutely essential that the choice of editor is
    configurable.  It must be possible to use Emacs for this purpose.

  * The windows used to display the OpenGL-based graphics must use the
    same GUI toolkit that we use for the rest of the IDE.

  * Functions like uigetfile should use the same GUI toolkit that we
    use for the IDE.

The Octave IDE will be used by novices.  It is NOT the place for UI
innovation.  We should use GUI/IDE features that are proven, familiar,
and easy to work with.  We do not need dockable widgets.  The ability
to change the relative sizes of the command, workspace, and history
windows would be useful, but we do not need to be able to rearrange
their locations within the main window.  Tabbed interfaces will not be
used.  Octave's IDE does not need a built-in IRC client, and will
not include one.

Since people seem to like it, following the design of "GUI Octave"
makes sense to me.  But it is not necessary to include every feature
of that interface in the first version of Octave's IDE.  It would be
far better to have just the features above working reliably than to
have many more features that are only partially implemented or buggy.

Comments?

jwe


reply via email to

[Prev in Thread] Current Thread [Next in Thread]