[comp.emacs] Emacs with menus and buttons

mayer@hplabsz.HPL.HP.COM (Niels Mayer) (06/28/90)

In article <BRENNAN.90Jun26195002@bach.rtp.dg.com> brennan@rtp.dg.com (Dave Brennan) writes:
>Recently the idea came up that menus and a button panel would help new
>users learn Emacs.  Current application place fixed operations like
>find-file, print, help, etc., in menus accessable from a menu bar, leaving
>mode/window specific buttons for placement in a button panel.  Generally,
>changing the menus on a user is a Bad thing to do.  However, changing the
>buttons on the button panel shouldn't cause too much confusion (especially
>if the user can manually change the buttons displayed via an Motif-like
>option menu at the top of the button panel).

Something like this would be doable in my WINTERP environment, available
for free via anonymous ftp from expo.lcs.mit.edu. You might think of
WINTERP as a OSF/Motif-based gnuemacs-like environment in that you can
build applications by using a mini-lisp interpreter to "tie together"
user-interface objects defined by the OSF/Motif widget set. WINTERP
contains a serverized lisp listener, which means that you could have
emacs-lisp and winterp-lisp communicating with each other in order to
exchange information and update state -- in the case of emacs, you'd use a
modified emacsclient that would allow you to send emacs-lisp to gnuemacs'
lisp-listener. In the case of WINTERP, the only outside access to the
lisp-listener is via a TCP-based socket and a simple client 'wl', similar
to 'emacsclient' but allows sending of lisp s-expressions from the
command-line...

Here's my standard blurb on WINTERP, extracted from my Xhibition '90 paper
"Winterp: An object-oriented, rapid prototyping, development and delivery
environment for building extensible applications with the OSF/Motif UI
Toolkit."
			--------------------
WINTERP is a Widget INTERPreter, an application development environment
enabling rapid prototyping of graphical user-interfaces (UI) through the
interactive programmatic manipulation of user interface objects and their
attached actions. The interpreter, based on David Betz's XLISP, provides an
interface to the X11 toolkit Intrinsics (Xtk), the OSF/Motif widget set,
primitives for collecting data from UN*X processes, and facilities for
interacting with other UN*X processes. These features enable WINTERP to
support rapid prototyping of applications using multi-window graphical
user-interfaces by allowing the user to interactively change both the
appearance and functionality.

In addition to prototyping applications and experimenting with UI layout,
WINTERP is also an excellent platform for delivering applications requiring
an embedded customization language. Traditional X applications based on the
Xtoolkit allow users to alter X resources to tailor application UI
parameters such as fonts, colors, window sizes, etc.  Motif's User
Interface Language (UIL) extends that level of customization by allowing
the layout of the application's UI widgets to be tailored. As a language,
UIL has the expressive power to describe the layout of static UI forms, but
has none of the control flow and data handling constructs associated with
real programming languages.  A programming language is needed to support
the full range of requirements needed by User Interface Management Systems
(UIMS); to describe dynamic, data-driven UI forms, and to model
user/application dialog. WINTERP provides such an embedded programming
language allowing tailoring of the UI's static and dynamic layout,
UI-to-application dialogue, and application functionality.

WINTERP is thus an interactive ``language based'' user-interface
development environment (UIDE). WINTERP is not a UIMS -- it provides UI
primitives and a high-level language to support a wide variety of
UI-to-application partitionings\footnote{Examples of such UI-to-application
partitioning that can be implemented in WINTERP include Smalltalk's
Model-View-Controller paradigm, state transition machines, event grammars,
etc.} that is characteristic of the UIMS approach. WINTERP is designed to
allow the programmer to evolve a suitable UIMS model that is appropriate
for extending and customizing a particular application. WINTERP is also
designed to support direct manipulation UI building. The current version
contains a useful primitive for ``direct manipulation programming'' with
widget-objects.

An environment similar to WINTERP's already exists in the GNUEMACS text
editor --- in fact, WINTERP is strongly influenced by GNUEMACS' successful
design. In GNUEMACS, a mini-Lisp interpreter is used to extend the editor
to provide text-browser style interfaces to a number of UN*X applications
(e.g. e-mail user agents, directory browsers, debuggers, etc). Whereas
GNUEMACS enables programmers to create new applications by tying together
C-implemented primitives that operate on first-class types providing
textual interfaces (buffers, windows), WINTERP's ties together operations
on graphical user-interface objects implemented by the Motif widgets. Both
achieve a high degree of customizability that is common for systems
implemented in Lisp, while still attaining the speed of execution and
(relatively) small size associated with C-implemented applications.

WINTERP was initially made public on the MIT X Consortium's X11r4
``contrib'' distribution; up-to-date versions are available via anonymous
ftp from a number of Internet sites including expo.lcs.mit.edu.  WINTERP is
quite robust and bug-free, it is in active use by a number of research
projects at HP Labs, and is also being used by companies and universities
worldwide. WINTERP was designed to be portable -- it runs on most
``standard'' UN*X platforms without porting. A number of improvements have
already been contributed by WINTERP's user group since WINTERP initial
public release; submitted improvements will be included in publicly
available updates of WINTERP.

You may obtain the current source, documentation, and examples via
anonymous ftp from host expo.lcs.mit.edu: in directory contrib/winterp you
will find the compress(1)'d tar(1) file winterp.tar.Z. If you do not have
Internet access you may request the source code to be mailed to you by
sending a message to winterp-source%hplnpm@hplabs.hp.com or
hplabs!hplnpm!winterp-source.

There is also a mailing list for WINTERP-related announcements and
discussions. To get added to the list, send mail to
winterp-request%hplnpm@hplabs.hp.com or hplabs!hplnpm!winterp-request.

-------------------------------------------------------------------------------
	    Niels Mayer -- hplabs!mayer -- mayer@hplabs.hp.com
		  Human-Computer Interaction Department
		       Hewlett-Packard Laboratories
			      Palo Alto, CA.
				   *

mayer@hplabsz.HPL.HP.COM (Niels Mayer) (06/28/90)

In article <9006270221.AA02832@sugar-bombs.ai.mit.edu> rms@AI.MIT.EDU writes:
>If you are interested in working on x-related features, please plan
>on using only the free X facilities, and not proprietary software such
>as Motif.

While I'm usually the first person to criticize the OSF (on its
shoot-yerself-in-the-foot-licencing policies, technology compromises, and
general wanna-be-AT&T'ness) I would like to put on my HP hat for a moment
and mention that OSF/Motif is (or will be) a standard part of the Un*x OS
supplied by major computer industry players such as Hewlett-Packard,
HP/Apollo, DEC, IBM, MIPS, Data General, etc.  (apologies to ommitted
companies...)

With OSF/Motif becoming a defacto standard does the "proprietariness" of
OSF/Motif matter?? Afterall, gnuemacs runs on a number of proprietary unix
systems, as well DEC's proprietary VMS.  What's the difference between
linking in libXm.a and whatever proprietary unix libraries that gnuemacs
uses? None of those Un*xes and libraries fall under the gnu licencing
policies, and all follow various greed-oriented licencing policies that run
counter to the orientation of FSF.

It seems like the implicit policy in gnuemacs and other FSF software is to
support systems following defacto standards such that FSF software can run
on the widest variety of systems and be supported by the widest number of
people willing to hack/improve/contribute to the software effort.  Unix is
not free (yet) and this makes the "proprietary software" argument rather
fuzzy.

>X is an important piece of free software, so we (the FSF) can feel
>only alarm when attempts are made to supplant parts of it with
>proprietary software.  In effect, there is a danger that parts of X
>will cease to be free.  While the free toolkits and window managers
>would still exist, that would not count for much if they could not
>make actual X applications work.

IMHO, the free toolkits do not have sufficient functionality, lack good
documentation, have an ugly-look and feel, are incompatible with PM, etc.
W/r/t window managers, the only issue should be ICCCM-compliance (a rather
nebulous thing) because that is a standard for compatibility. It would be
silly to write even a motif application that won't work without the motif
window manager.

------------------------------------------------------------------------------
Disclaimer: I am not speaking as an HP representative. I'm not even
speaking for myself. The conspiracy is speaking for me. Yeah, that's it.
-------------------------------------------------------------------------------
	    Niels Mayer -- hplabs!mayer -- mayer@hplabs.hp.com
		  Human-Computer Interaction Department
		       Hewlett-Packard Laboratories
			      Palo Alto, CA.
				   *

paj@mrcu (Paul Johnson) (07/02/90)

>In article <525@argus.mrcu> paj@mrcu (Paul Johnson [Me]) writes:
>
>   1) Application control (mouse based editing commands).  For this we
>   want popup menus [....]

>By menus do you mean popup menus, or menus from a menu bar?  [...]

I had both in mind: if there is a function popup-menu-at-mouse which could
be bound to (say) the right hand mouse button for most of the display
and (with a different argument) to the left hand button for a small
area then a menu bar can be built.

Paul.

-- 
Paul Johnson                               UUCP: <world>!mcvax!ukc!gec-mrc!paj
--------------------------------!-------------------------|-------------------
GEC-Marconi Research is not 	| Telex: 995016 GECRES G  | Tel: +44 245 73331
responsible for my opinions.	| Inet: paj@uk.co.gec-mrc | Fax: +44 245 75244

rick@cstr.ed.ac.uk (Rick Innis) (07/02/90)

It should be possible to implement such a beast using a combination of GWM and
Epoch, though I've no idea how easy it would be. The Epoch manual certainly
suggests that this is the case, though.

	--Rick.

carroll@m.cs.uiuc.edu (07/03/90)

It is possible to build a menu system using Epoch & GWM: We've done it.
And someday, hahaha, we'll have the code in shape to release. But actually,
it's not that hard - two different people have done it, and neither was a
Lisp hacker, or even an experienced Elisp programmer. If someone _really_
wants this, and is willing to take fragile code, I might be able to arrange
something.

Alan M. Carroll                Barbara/Marilyn in '92 :
carroll@cs.uiuc.edu            + This time, why not choose the better halves?
Epoch Development Team         
CS Grad / U of Ill @ Urbana    ...{ucbvax,pur-ee,convex}!cs.uiuc.edu!carroll