|
|
7fc6c88 |
--- xgcl-2/dwdoc.tex.orig 2010-01-22 17:49:06.000000000 -0700
|
|
|
7fc6c88 |
+++ xgcl-2/dwdoc.tex 2010-12-29 11:36:19.808014216 -0700
|
|
|
e6a2505 |
@@ -1,19 +1,16 @@
|
|
|
e6a2505 |
% dwdoc.tex Gordon S. Novak Jr.
|
|
|
6e2b50c |
% 08 Oct 92; 08 Oct 93; 16 Nov 94; 05 Jan 95; 25 Jan 06; 26 Jan 06; 08 Dec 08
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-\documentstyle[12pt]{article}
|
|
|
e6a2505 |
-\setlength{\oddsidemargin}{0 in}
|
|
|
e6a2505 |
-\setlength{\textwidth}{6.5 in}
|
|
|
e6a2505 |
-\setlength{\textheight}{9.0 in}
|
|
|
e6a2505 |
+\documentclass[12pt]{article}
|
|
|
e6a2505 |
+\usepackage[margin=1in]{geometry}
|
|
|
e6a2505 |
\setlength{\parskip}{0.1 in}
|
|
|
e6a2505 |
\setlength{\parindent}{0.0 in}
|
|
|
e6a2505 |
-\setlength{\topmargin}{-0.4in}
|
|
|
e6a2505 |
\hyphenpenalty=9990
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\begin{document}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\Large
|
|
|
e6a2505 |
-\begin{center} {\bf Interface from GCL to X Windows} \\ \end{center}
|
|
|
e6a2505 |
+\begin{center} \textbf{Interface from GCL to X Windows} \\ \end{center}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\normalsize
|
|
|
e6a2505 |
|
|
|
7fc6c88 |
@@ -42,508 +39,512 @@ consists of several parts:
|
|
|
e6a2505 |
\item Hiep Huu Nguyen has written (and adapted from X Consortium software)
|
|
|
e6a2505 |
an interface between GCL and Xlib, the X library in C.
|
|
|
e6a2505 |
Xlib functions can be called directly if desired, but most users will find
|
|
|
e6a2505 |
-the {\tt dwindow} functions easier to use. There is little documentation
|
|
|
e6a2505 |
+the \texttt{dwindow} functions easier to use. There is little documentation
|
|
|
e6a2505 |
of these functions, but the Xlib documentation can be consulted, and
|
|
|
e6a2505 |
-the {\tt dwindow} functions can be examined as examples.
|
|
|
e6a2505 |
+the \texttt{dwindow} functions can be examined as examples.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-\item The {\tt dwindow} functions described in this document, which call
|
|
|
e6a2505 |
+\item The \texttt{dwindow} functions described in this document, which call
|
|
|
e6a2505 |
the Xlib functions and provide an easier interface for Lisp programs.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\item It is possible to make an interactive graphical interface
|
|
|
e6a2505 |
within a web page; this is described in a section below.
|
|
|
e6a2505 |
\end{enumerate}
|
|
|
e6a2505 |
The source file for the interface (written in GLISP) is
|
|
|
e6a2505 |
-{\tt dwindow.lsp}; this file is compiled into a file in plain Lisp,
|
|
|
e6a2505 |
-{\tt dwtrans.lsp}. {\tt dwtrans.lsp} is compiled as part of XGCL.
|
|
|
e6a2505 |
+\texttt{dwindow.lsp}; this file is compiled into a file in plain Lisp,
|
|
|
e6a2505 |
+\texttt{dwtrans.lsp}. \texttt{dwtrans.lsp} is compiled as part of XGCL.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The functions in this package use the convention that the coordinate
|
|
|
e6a2505 |
-{\tt (0 0)} is the lower-left corner of a window, with positive {\tt y}
|
|
|
e6a2505 |
+\texttt{(0 0)} is the lower-left corner of a window, with positive \texttt{y}
|
|
|
e6a2505 |
being upward. This is different from the convention used by
|
|
|
e6a2505 |
-X, which assumes that {\tt (0 0)} is the upper left corner and
|
|
|
e6a2505 |
-that positive {\tt y} is downward.
|
|
|
e6a2505 |
+X, which assumes that \texttt{(0 0)} is the upper left corner and
|
|
|
e6a2505 |
+that positive \texttt{y} is downward.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
In the descriptions below, some function arguments are shown with a type,
|
|
|
e6a2505 |
-e.g. {\tt arg:type}, to indicate the expected type of the argument.
|
|
|
e6a2505 |
-The type {\tt vector} is a list {\tt (x y)} of integers. The argument
|
|
|
e6a2505 |
-{\tt w} that is used with many functions is of type {\tt window}
|
|
|
e6a2505 |
-({\tt window} is a Lisp data structure used by the {\tt dwindow} functions).
|
|
|
e6a2505 |
+e.g. \texttt{arg:type}, to indicate the expected type of the argument.
|
|
|
e6a2505 |
+The type \texttt{vector} is a list \texttt{(x y)} of integers. The argument
|
|
|
e6a2505 |
+\texttt{w} that is used with many functions is of type \texttt{window}
|
|
|
e6a2505 |
+(\texttt{window} is a Lisp data structure used by the \texttt{dwindow}
|
|
|
e6a2505 |
+functions).
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-Both the Xlib and {\tt dwindow} functions are in the package {\tt xlib:}.
|
|
|
e6a2505 |
-In order to use these functions, the Lisp command {\tt (use-package 'xlib)}
|
|
|
e6a2505 |
-should be used to import the {\tt dwindow} symbols.
|
|
|
e6a2505 |
+Both the Xlib and \texttt{dwindow} functions are in the package \texttt{xlib:}.
|
|
|
e6a2505 |
+In order to use these functions, the Lisp command \texttt{(use-package 'xlib)}
|
|
|
e6a2505 |
+should be used to import the \texttt{dwindow} symbols.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\section{Examples and Utilities}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-\subsection{{\tt dwtest}}
|
|
|
e6a2505 |
+\subsection{\texttt{dwtest}}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The file {\tt dwtest.lsp} contains example functions that illustrate
|
|
|
e6a2505 |
-the use of the {\tt dwindow} package. The function call {\tt (wtesta)}
|
|
|
e6a2505 |
-creates a small window for testing. {\tt (wtestb)} through
|
|
|
e6a2505 |
-{\tt (wtestk)} perform drawing and mouse interaction tests using the
|
|
|
e6a2505 |
+The file \texttt{dwtest.lsp} contains example functions that illustrate
|
|
|
e6a2505 |
+the use of the \texttt{dwindow} package. The function call \texttt{(wtesta)}
|
|
|
e6a2505 |
+creates a small window for testing. \texttt{(wtestb)} through
|
|
|
e6a2505 |
+\texttt{(wtestk)} perform drawing and mouse interaction tests using the
|
|
|
e6a2505 |
window. These functions may be consulted as examples of the use of
|
|
|
e6a2505 |
-commonly used {\tt dwindow} functions.
|
|
|
e6a2505 |
+commonly used \texttt{dwindow} functions.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-\subsection{{\tt pcalc}}
|
|
|
e6a2505 |
+\subsection{\texttt{pcalc}}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The file {\tt pcalc.lsp} implements
|
|
|
e6a2505 |
-a pocket calculator as a {\tt picmenu}; its entry is {\tt (pcalc)}.
|
|
|
e6a2505 |
+The file \texttt{pcalc.lsp} implements
|
|
|
e6a2505 |
+a pocket calculator as a \texttt{picmenu}; its entry is \texttt{(pcalc)}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-\subsection{{\tt draw}}
|
|
|
e6a2505 |
+\subsection{\texttt{draw}}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The file {\tt drawtrans.lsp} contains an interactive drawing program;
|
|
|
e6a2505 |
-its entry is {\tt (draw 'foo)} where {\tt foo} is the name of the drawing.
|
|
|
e6a2505 |
-The file {\tt ice-cream.lsp} can be loaded, followed by
|
|
|
e6a2505 |
-{\tt (draw 'ice-cream)} to examine an example drawing.
|
|
|
e6a2505 |
-{\tt draw} can produce a Lisp program or a set of \LaTeX \ commands to
|
|
|
e6a2505 |
-recreate the drawing; use {\tt origin to zero} before making a program.
|
|
|
e6a2505 |
-{\tt (draw-out file names)} will write definitions of drawings in the
|
|
|
e6a2505 |
-list {\tt names} to the file {\tt file}.
|
|
|
e6a2505 |
+The file \texttt{drawtrans.lsp} contains an interactive drawing program; its
|
|
|
e6a2505 |
+entry is \texttt{(draw 'foo)} where \texttt{foo} is the name of the drawing.
|
|
|
e6a2505 |
+The file \texttt{ice-cream.lsp} can be loaded, followed by
|
|
|
e6a2505 |
+\texttt{(draw 'ice-cream)} to examine an example drawing.
|
|
|
e6a2505 |
+\texttt{draw} can produce a Lisp program or a set of \LaTeX \ commands to
|
|
|
e6a2505 |
+recreate the drawing; use \texttt{origin to zero} before making a program.
|
|
|
e6a2505 |
+\texttt{(draw-out file names)} will write definitions of drawings in the
|
|
|
e6a2505 |
+list \texttt{names} to the file \texttt{file}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-\subsection{{\tt editors}}
|
|
|
e6a2505 |
+\subsection{\texttt{editors}}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The file {\tt editorstrans.lsp} contains some interactive editing programs;
|
|
|
e6a2505 |
-it is a translation of the file {\tt editors.lsp} .
|
|
|
e6a2505 |
-One useful editor is the color editor; after entering {\tt (wtesta)}
|
|
|
e6a2505 |
-(in file {\tt dwtest.lsp}), enter {\tt (edit-color myw)} to edit a
|
|
|
e6a2505 |
-color. The result is an {\tt rgb} list as used in {\tt window-set-color}.
|
|
|
e6a2505 |
+The file \texttt{editorstrans.lsp} contains some interactive editing programs;
|
|
|
e6a2505 |
+it is a translation of the file \texttt{editors.lsp}.
|
|
|
e6a2505 |
+One useful editor is the color editor; after entering \texttt{(wtesta)}
|
|
|
e6a2505 |
+(in file \texttt{dwtest.lsp}), enter \texttt{(edit-color myw)} to edit a
|
|
|
e6a2505 |
+color. The result is an \texttt{rgb} list as used in
|
|
|
e6a2505 |
+\texttt{window-set-color}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
A simple line editor and an Emacs-like text editor are described in sections
|
|
|
e6a2505 |
\ref{texted} and \ref{emacsed} below.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\section{Menus}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The function {\tt menu} provides an easy interface to make a pop-up menu,
|
|
|
e6a2505 |
+The function \texttt{menu} provides an easy interface to make a pop-up menu,
|
|
|
e6a2505 |
get a selection from it, and destroy it: \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.2in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu items \&optional title)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu items \&optional title)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-Example: {\tt (menu '(red white blue))}
|
|
|
e6a2505 |
+Example: \texttt{(menu '(red white blue))}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
This simple call is all that is needed in most cases.
|
|
|
e6a2505 |
More sophisticated menu features are described below.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The {\tt items} in a menu is a list; each item may be a symbol, a {\tt cons}
|
|
|
e6a2505 |
-of a symbol or string and the corresponding value, or a {\tt cons} of a
|
|
|
e6a2505 |
-function name and the corresponding value. In the latter case, the function
|
|
|
e6a2505 |
-is expected to draw the corresponding menu item.
|
|
|
e6a2505 |
+The \texttt{items} in a menu is a list; each item may be a symbol, a
|
|
|
e6a2505 |
+\texttt{cons} of a symbol or string and the corresponding value, or a
|
|
|
e6a2505 |
+\texttt{cons} of a function name and the corresponding value. In the latter
|
|
|
e6a2505 |
+case, the function is expected to draw the corresponding menu item.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
If a function name is specified as the first element of a menu item, the
|
|
|
e6a2505 |
-drawing function should have arguments {\tt (fn w x y)}, where {\tt w}
|
|
|
e6a2505 |
-is the window and {\tt x} and {\tt y} are the lower-left corner of the
|
|
|
e6a2505 |
+drawing function should have arguments \texttt{(fn w x y)}, where \texttt{w}
|
|
|
e6a2505 |
+is the window and \texttt{x} and \texttt{y} are the lower-left corner of the
|
|
|
e6a2505 |
drawing area. The property list of the function name should have the
|
|
|
e6a2505 |
-property {\tt display-size}, which should be a list {\tt (width height)}
|
|
|
e6a2505 |
+property \texttt{display-size}, which should be a list \texttt{(width height)}
|
|
|
e6a2505 |
in pixels of the displayed symbol.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
Menus can be associated with a particular window; if no window is specified,
|
|
|
e6a2505 |
the menu is associated with the window where the mouse cursor is located
|
|
|
e6a2505 |
when the menu is initialized (which might not be a Lisp user's window). If a
|
|
|
e6a2505 |
-menu is associated with a user window, it may be {\em permanent} (left
|
|
|
e6a2505 |
-displayed after a selection is made) and may be {\em flat} (drawn directly
|
|
|
e6a2505 |
+menu is associated with a user window, it may be \emph{permanent} (left
|
|
|
e6a2505 |
+displayed after a selection is made) and may be \emph{flat} (drawn directly
|
|
|
e6a2505 |
on the containing window, rather than having its own window).
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-A menu can be created by {\tt menu-create} : \\
|
|
|
e6a2505 |
+A menu can be created by \texttt{menu-create} : \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in}
|
|
|
e6a2505 |
(menu-create items \&optional title w:window x y perm flat font)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt title}, if specified, is displayed over the menu.
|
|
|
e6a2505 |
-{\tt w} is an existing {\tt window}; if specified, the menu is put
|
|
|
e6a2505 |
-within this window at the {\tt x y} offsets specified (adjusted if necessary
|
|
|
e6a2505 |
-to keep the menu inside the window). If no {\tt w}
|
|
|
e6a2505 |
-is specified, or if {\tt x} is {\tt nil}, the menu is put where the cursor
|
|
|
e6a2505 |
+\texttt{title}, if specified, is displayed over the menu.
|
|
|
e6a2505 |
+\texttt{w} is an existing \texttt{window}; if specified, the menu is put
|
|
|
e6a2505 |
+within this window at the \texttt{x y} offsets specified (adjusted if necessary
|
|
|
e6a2505 |
+to keep the menu inside the window). If no \texttt{w} is
|
|
|
e6a2505 |
+specified, or if \texttt{x} is \texttt{nil}, the menu is put where the cursor
|
|
|
e6a2505 |
is the first time the menu is displayed.
|
|
|
e6a2505 |
-{\tt perm} is non-{\tt nil} if the menu is to be permanent, {\em i.e.}, is to
|
|
|
e6a2505 |
-be left displayed after a selection has been made.
|
|
|
e6a2505 |
-{\tt flat} is non-{\tt nil} if the menu is to be drawn directly on the
|
|
|
e6a2505 |
+\texttt{perm} is non-\texttt{nil} if the menu is to be permanent, \emph{i.e.},
|
|
|
e6a2505 |
+is to be left displayed after a selection has been made.
|
|
|
e6a2505 |
+\texttt{flat} is non-\texttt{nil} if the menu is to be drawn directly on the
|
|
|
e6a2505 |
containing window.
|
|
|
e6a2505 |
-{\tt font} is a symbol or string that names the font to be used; the
|
|
|
e6a2505 |
-default is a {\tt 9x15} typewriter font.
|
|
|
e6a2505 |
+\texttt{font} is a symbol or string that names the font to be used; the
|
|
|
e6a2505 |
+default is a \texttt{9x15} typewriter font.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The menu is returned as the value of {\tt menu-create}. Such a menu can
|
|
|
e6a2505 |
-be saved; selections can be made from a menu {\tt m} as follows: \\
|
|
|
e6a2505 |
+The menu is returned as the value of \texttt{menu-create}. Such a menu can
|
|
|
e6a2505 |
+be saved; selections can be made from a menu \texttt{m} as follows: \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-select m \&optional inside)} \ \ \ \ \ or
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-select! m)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-select m \&optional inside)} \ \ \ \ \ or
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-select! m)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt menu-select} will return {\tt nil} if the mouse is clicked outside the
|
|
|
e6a2505 |
-menu, or is moved outside after it has been inside (or if {\tt inside} is
|
|
|
e6a2505 |
-not {\tt nil}), provided that the menu is contained within a user-created
|
|
|
e6a2505 |
+\texttt{menu-select} will return \texttt{nil} if the mouse is clicked outside
|
|
|
e6a2505 |
+the menu, or is moved outside after it has been inside (or if \texttt{inside}
|
|
|
e6a2505 |
+is not \texttt{nil}), provided that the menu is contained within a user-created
|
|
|
e6a2505 |
window.
|
|
|
e6a2505 |
-{\tt menu-select!} requires that a choice be made.
|
|
|
e6a2505 |
+\texttt{menu-select!} requires that a choice be made.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
In order to avoid wasting storage, unused menus should be destroyed:
|
|
|
e6a2505 |
-{\tt (menu-destroy m)}. The simple {\tt menu} function destroys its
|
|
|
e6a2505 |
+\texttt{(menu-destroy m)}. The simple \texttt{menu} function destroys its
|
|
|
e6a2505 |
menu after it is used.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-size m)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-moveto-xy m x y)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-reposition m)} \
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-size m)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-moveto-xy m x y)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-reposition m)} \
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt menu-reposition} will reposition a {\tt flat} menu within its parent
|
|
|
e6a2505 |
+\texttt{menu-reposition} will reposition a \texttt{flat} menu within its parent
|
|
|
e6a2505 |
window by allowing the user to position a ghost box using the mouse.
|
|
|
e6a2505 |
-{\tt menu-size} returns the size of the menu as a vector, {\tt (x y)}.
|
|
|
e6a2505 |
-{\tt menu-moveto-xy} adjusts the offsets to move a {\tt flat} menu to
|
|
|
e6a2505 |
+\texttt{menu-size} returns the size of the menu as a vector, \texttt{(x y)}.
|
|
|
e6a2505 |
+\texttt{menu-moveto-xy} adjusts the offsets to move a \texttt{flat} menu to
|
|
|
e6a2505 |
the specified position within its parent window. These functions and
|
|
|
e6a2505 |
-{\tt menu-destroy} work for picmenus and barmenus as well.
|
|
|
e6a2505 |
+\texttt{menu-destroy} work for picmenus and barmenus as well.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-item-position m name \&optional location)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-item-position m name \&optional location)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt menu-item-position} returns a vector {\tt (x y)} that gives the
|
|
|
e6a2505 |
-coordinates of the menu item whose name is {\tt name}. {\tt location}
|
|
|
e6a2505 |
-may be {\tt center}, {\tt left}, {\tt right}, {\tt top}, or {\tt bottom};
|
|
|
e6a2505 |
-the default is the lower-left corner of the menu item. {\tt center}
|
|
|
e6a2505 |
-specifies the center of the box containing the menu item; the other
|
|
|
e6a2505 |
-{\tt location} values are at the center of the specified edge of the box.
|
|
|
e6a2505 |
+\texttt{menu-item-position} returns a vector \texttt{(x y)} that gives the
|
|
|
e6a2505 |
+coordinates of the menu item whose name is \texttt{name}. \texttt{location}
|
|
|
e6a2505 |
+may be \texttt{center}, \texttt{left}, \texttt{right}, \texttt{top}, or
|
|
|
e6a2505 |
+\texttt{bottom}; the default is the lower-left corner of the menu item.
|
|
|
e6a2505 |
+\texttt{center} specifies the center of the box containing the menu item; the
|
|
|
e6a2505 |
+other \texttt{location} values are at the center of the specified edge of the
|
|
|
e6a2505 |
+box.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\subsection{Picmenus}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-A {\tt picmenu} (picture menu) is analogous to a menu, but involves a
|
|
|
e6a2505 |
+A \texttt{picmenu} (picture menu) is analogous to a menu, but involves a
|
|
|
e6a2505 |
user-defined picture containing sensitive spots or ``buttons''.
|
|
|
e6a2505 |
-The test function {\tt (wteste)} shows an example of a {\tt picmenu}.
|
|
|
e6a2505 |
-A {\tt picmenu} is created by: \\
|
|
|
e6a2505 |
+The test function \texttt{(wteste)} shows an example of a \texttt{picmenu}.
|
|
|
e6a2505 |
+A \texttt{picmenu} is created by: \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (picmenu-create buttons width height drawfn \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (picmenu-create buttons width height drawfn \\
|
|
|
e6a2505 |
\hspace*{1.5in} \&optional title dotflg w:window x y perm flat font boxflg)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
If a picmenu is to be used more than once, the common parts can be made
|
|
|
e6a2505 |
-into a {\tt picmenu-spec} and reused:
|
|
|
e6a2505 |
+into a \texttt{picmenu-spec} and reused:
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (picmenu-create-spec buttons width height drawfn \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (picmenu-create-spec buttons width height drawfn \\
|
|
|
e6a2505 |
\hspace*{1.5in} \&optional dotflg font)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (picmenu-create-from-spec spec:picmenu-spec \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (picmenu-create-from-spec spec:picmenu-spec \\
|
|
|
e6a2505 |
\hspace*{1.5in} \&optional title w:window x y perm flat boxflg)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt width} and {\tt height} are the size of the area occupied by the
|
|
|
e6a2505 |
-picture. {\tt (drawfn w x y)} should draw the picture at the offset
|
|
|
e6a2505 |
-{\tt x y}. Note that the {\tt draw} utility can be used to
|
|
|
e6a2505 |
-make the drawing function, including {\tt picmenu} buttons.
|
|
|
e6a2505 |
-{\tt dotflg} is non-{\tt nil} if it is desired that small boxes be
|
|
|
e6a2505 |
+\texttt{width} and \texttt{height} are the size of the area occupied by the
|
|
|
e6a2505 |
+picture. \texttt{(drawfn w x y)} should draw the picture at the offset
|
|
|
e6a2505 |
+\texttt{x y}. Note that the \texttt{draw} utility can be used to
|
|
|
e6a2505 |
+make the drawing function, including \texttt{picmenu} buttons.
|
|
|
e6a2505 |
+\texttt{dotflg} is non-\texttt{nil} if it is desired that small boxes be
|
|
|
e6a2505 |
automatically added to the sensitive points when the picture is drawn.
|
|
|
e6a2505 |
-{\tt boxflg} is non-{\tt nil} if a box is to be drawn around the picmenu
|
|
|
e6a2505 |
+\texttt{boxflg} is non-\texttt{nil} if a box is to be drawn around the picmenu
|
|
|
e6a2505 |
when the picture is drawn (this is only needed for flat
|
|
|
e6a2505 |
-picmenus). If {\tt perm} is non-nil, the drawing program is not called when
|
|
|
e6a2505 |
+picmenus). If \texttt{perm} is non-nil, the drawing program is not called when
|
|
|
e6a2505 |
a selection is to be made, so that an external program must draw the
|
|
|
e6a2505 |
-{\tt picmenu}; this avoids the need to redraw a complex picture.
|
|
|
e6a2505 |
+\texttt{picmenu}; this avoids the need to redraw a complex picture.
|
|
|
e6a2505 |
The remaining arguments are as described for menus.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-Each of the {\tt buttons} in a picmenu is a list: \\
|
|
|
e6a2505 |
+Each of the \texttt{buttons} in a picmenu is a list: \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (buttonname offset size highlightfn unhighlightfn)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (buttonname offset size highlightfn unhighlightfn)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt buttonname} is the name of the button; it is the value returned when that
|
|
|
e6a2505 |
-button is selected.
|
|
|
e6a2505 |
-{\tt offset} is a vector {\tt (x y)} that gives the offset of the center
|
|
|
e6a2505 |
+\texttt{buttonname} is the name of the button; it is the value returned when
|
|
|
e6a2505 |
+that button is selected.
|
|
|
e6a2505 |
+\texttt{offset} is a vector \texttt{(x y)} that gives the offset of the center
|
|
|
e6a2505 |
of the button from the lower-left corner of the picture.
|
|
|
e6a2505 |
The remainder of the button list may be omitted.
|
|
|
e6a2505 |
-{\tt size} is an optional list {\tt (width height)} that gives the size of the
|
|
|
e6a2505 |
-sensitive area of the button; the default size is {\tt (12\ 12)}.
|
|
|
e6a2505 |
-{\tt (highlightfn w x y)} and {\tt (unhighlightfn w x y)} (where {\tt (x y)}
|
|
|
e6a2505 |
-is the center of the button in the coordinates of {\tt w}) are optional
|
|
|
e6a2505 |
-functions to highlight the button area when the cursor is moved into it and
|
|
|
e6a2505 |
-unhighlight the button when the cursor is moved out; the default is to
|
|
|
e6a2505 |
-display a box of the specified {\tt size}.
|
|
|
e6a2505 |
+\texttt{size} is an optional list \texttt{(width height)} that gives the size
|
|
|
e6a2505 |
+of the sensitive area of the button; the default size is \texttt{(12\ 12)}.
|
|
|
e6a2505 |
+\texttt{(highlightfn w x y)} and \texttt{(unhighlightfn w x y)} (where
|
|
|
e6a2505 |
+\texttt{(x y)} is the center of the button in the coordinates of \texttt{w})
|
|
|
e6a2505 |
+are optional functions to highlight the button area when the cursor is moved
|
|
|
e6a2505 |
+into it and unhighlight the button when the cursor is moved out; the default
|
|
|
e6a2505 |
+is to display a box of the specified \texttt{size}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (picmenu-select m \&optional inside)} \\
|
|
|
e6a2505 |
-If the {\tt picmenu} is not {\tt flat}, its window should be destroyed
|
|
|
e6a2505 |
-following the selection using {\tt menu-destroy}.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (picmenu-select m \&optional inside)} \\
|
|
|
e6a2505 |
+If the \texttt{picmenu} is not \texttt{flat}, its window should be destroyed
|
|
|
e6a2505 |
+following the selection using \texttt{menu-destroy}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (picmenu-item-position m name \&optional location)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (picmenu-item-position m name \&optional location)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (picmenu-delete-named-button m name:symbol)} \\
|
|
|
e6a2505 |
-This deletes a button from a displayed {\tt picmenu}. The set of
|
|
|
e6a2505 |
-deleted buttons is reset to {\tt nil} when the picmenu is drawn.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (picmenu-delete-named-button m name:symbol)} \\
|
|
|
e6a2505 |
+This deletes a button from a displayed \texttt{picmenu}. The set of
|
|
|
e6a2505 |
+deleted buttons is reset to \texttt{nil} when the picmenu is drawn.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\subsection{Barmenus}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-A {\tt barmenu} displays a bar graph whose size can be adjusted using
|
|
|
e6a2505 |
+A \texttt{barmenu} displays a bar graph whose size can be adjusted using
|
|
|
e6a2505 |
the mouse.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in}
|
|
|
e6a2505 |
(barmenu-create maxval initval barwidth \\
|
|
|
e6a2505 |
\hspace*{1.5in} \&optional title horizontal subtrackfn subtrackparms \\
|
|
|
e6a2505 |
\hspace*{1.5in} parentw x y perm flat color)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-A value is selected by: {\tt (barmenu-select m:barmenu \&optional inside)} \\
|
|
|
e6a2505 |
-If the {\tt barmenu} is not {\tt flat}, its window should be destroyed
|
|
|
e6a2505 |
-following the selection using {\tt menu-destroy}.
|
|
|
e6a2505 |
+A value is selected by: \texttt{(barmenu-select m:barmenu \&optional inside)} \\
|
|
|
e6a2505 |
+If the \texttt{barmenu} is not \texttt{flat}, its window should be destroyed
|
|
|
e6a2505 |
+following the selection using \texttt{menu-destroy}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The user must first click the mouse in the bar area; then
|
|
|
e6a2505 |
the size of the displayed bar is adjusted as the user moves the mouse
|
|
|
e6a2505 |
-pointer. In addition, the {\tt subtrackfn} is called with arguments
|
|
|
e6a2505 |
-of the size of the bar followed by the {\tt subtrackparms}; this can
|
|
|
e6a2505 |
+pointer. In addition, the \texttt{subtrackfn} is called with arguments
|
|
|
e6a2505 |
+of the size of the bar followed by the \texttt{subtrackparms}; this can
|
|
|
e6a2505 |
be used, for example, to display a numeric value in addition to the
|
|
|
e6a2505 |
bar size.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\subsection{Menu Sets and Menu Conns}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-A {\tt menu-set} is a set of multiple menus, picmenus, or barmenus
|
|
|
e6a2505 |
+A \texttt{menu-set} is a set of multiple menus, picmenus, or barmenus
|
|
|
e6a2505 |
that are simultaneously active within the same window. Menu-sets
|
|
|
e6a2505 |
-can be used to implement graphical user interfaces. A {\tt menu-conns}
|
|
|
e6a2505 |
+can be used to implement graphical user interfaces. A \texttt{menu-conns}
|
|
|
e6a2505 |
is a menu-set that includes connections between menus; this can be
|
|
|
e6a2505 |
used to implement interfaces that allow the user to construct a network
|
|
|
e6a2505 |
from components.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The source file for menu-sets is the GLISP file {\tt menu-set.lsp};
|
|
|
e6a2505 |
-this file is translated as part of the file {\tt drawtrans.lsp} in
|
|
|
e6a2505 |
+The source file for menu-sets is the GLISP file \texttt{menu-set.lsp};
|
|
|
e6a2505 |
+this file is translated as part of the file \texttt{drawtrans.lsp} in
|
|
|
e6a2505 |
plain Lisp. Examples of the use of menu sets are given at the top
|
|
|
e6a2505 |
-of the file {\tt menu-set.lsp}. In the following descriptions,
|
|
|
e6a2505 |
-{\tt ms} is a {\tt menu-set} and {\tt mc} is a {\tt menu-conns}.
|
|
|
e6a2505 |
+of the file \texttt{menu-set.lsp}. In the following descriptions,
|
|
|
e6a2505 |
+\texttt{ms} is a \texttt{menu-set} and \texttt{mc} is a \texttt{menu-conns}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-set-create w)} creates a menu set to be displayed
|
|
|
e6a2505 |
-in the window {\tt w}.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-set-create w)} creates a menu set to be displayed
|
|
|
e6a2505 |
+in the window \texttt{w}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-set-name symbol)} makes a {\tt gensym} name that
|
|
|
e6a2505 |
-begins with {\tt symbol}.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-set-name symbol)} makes a \texttt{gensym} name
|
|
|
e6a2505 |
+that begins with \texttt{symbol}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-set-add-menu ms name:symbol sym title items} \\
|
|
|
e6a2505 |
-\hspace*{1.5in} {\tt \&optional offset:vector)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-set-add-menu ms name:symbol sym title items} \\
|
|
|
e6a2505 |
+\hspace*{1.5in} \texttt{\&optional offset:vector)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-This function adds a menu to a menu-set. {\tt sym} is arbitrary
|
|
|
e6a2505 |
+This function adds a menu to a menu-set. \texttt{sym} is arbitrary
|
|
|
e6a2505 |
information that is saved with the menu.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-set-add-picmenu ms name sym title spec:picmenu-spec} \\
|
|
|
e6a2505 |
-\hspace*{1.5in} {\tt \&optional offset:vector nobox)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-set-add-picmenu ms name sym title spec:picmenu-spec} \\
|
|
|
e6a2505 |
+\hspace*{1.5in} \texttt{\&optional offset:vector nobox)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-set-add-component ms name \&optional offset:vector)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-set-add-component ms name \&optional offset:vector)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-This adds a component that has a {\tt picmenu-spec} defined on the
|
|
|
e6a2505 |
-property list of {\tt name}.
|
|
|
e6a2505 |
+This adds a component that has a \texttt{picmenu-spec} defined on the
|
|
|
e6a2505 |
+property list of \texttt{name}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-set-add-barmenu ms name sym barmenu title} \\
|
|
|
e6a2505 |
-\hspace*{1.5in} {\tt \&optional offset:vector)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-set-add-barmenu ms name sym barmenu title} \\
|
|
|
e6a2505 |
+\hspace*{1.5in} \texttt{\&optional offset:vector)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-set-draw ms)} draws all the menus.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-set-draw ms)} draws all the menus.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-set-select ms \&optional redraw enabled)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-set-select ms \&optional redraw enabled)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt menu-set-select} gets a selection from a menu-set. If {\tt redraw}
|
|
|
e6a2505 |
-is non-{\tt nil}, the menu-set is drawn. {\tt enabled} may be a list
|
|
|
e6a2505 |
+\texttt{menu-set-select} gets a selection from a menu-set. If \texttt{redraw}
|
|
|
e6a2505 |
+is non-\texttt{nil}, the menu-set is drawn. \texttt{enabled} may be a list
|
|
|
e6a2505 |
of names of menus that are enabled for selection. The result is
|
|
|
e6a2505 |
-{\tt (selection menu-name)}, or {\tt ((x y) BACKGROUND button)}
|
|
|
e6a2505 |
+\texttt{(selection menu-name)}, or \texttt{((x y) BACKGROUND button)}
|
|
|
e6a2505 |
for a click outside any menu.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-conns-create ms)} creates a {\tt menu-conns}
|
|
|
e6a2505 |
-from a {\tt menu-set}.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-conns-create ms)} creates a \texttt{menu-conns}
|
|
|
e6a2505 |
+from a \texttt{menu-set}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-conns-add-conn mc)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-conns-add-conn mc)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
This function allows the user to select two ports from menus of the
|
|
|
e6a2505 |
-{\tt menu-conns}. It then draws a line between the ports and adds the
|
|
|
e6a2505 |
-connection to the {\tt connections} of the {\tt menu-conns}.
|
|
|
e6a2505 |
+\texttt{menu-conns}. It then draws a line between the ports and adds the
|
|
|
e6a2505 |
+connection to the \texttt{connections} of the \texttt{menu-conns}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-conns-move mc)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-conns-move mc)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
This function allows the user to select a menu and move it.
|
|
|
e6a2505 |
-The {\tt menu-set} and connections are redrawn afterwards.
|
|
|
e6a2505 |
+The \texttt{menu-set} and connections are redrawn afterwards.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-conns-find-conn mc pt:vector)} \\
|
|
|
e6a2505 |
-This finds the connection selected by the point {\tt pt}, if any.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-conns-find-conn mc pt:vector)} \\
|
|
|
e6a2505 |
+This finds the connection selected by the point \texttt{pt}, if any.
|
|
|
e6a2505 |
This is useful to allow the user to delete a connection:
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-conns-delete-conn mc conn)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-conns-delete-conn mc conn)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (menu-conns-find-conns mc menuname port)} \\
|
|
|
e6a2505 |
-This returns all the connections from the specified {\tt port} (selection)
|
|
|
e6a2505 |
-of the menu whose name is {\tt menuname}.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (menu-conns-find-conns mc menuname port)} \\
|
|
|
e6a2505 |
+This returns all the connections from the specified \texttt{port} (selection)
|
|
|
e6a2505 |
+of the menu whose name is \texttt{menuname}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\section{Windows}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-create width height \&optional title parentw
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-create width height \&optional title parentw
|
|
|
e6a2505 |
x y font)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt window-create} makes a new window of the specified {\tt width} and
|
|
|
e6a2505 |
-{\tt height}. {\tt title}, if specified, becomes the displayed title
|
|
|
e6a2505 |
-of the window. If {\tt parentw} is specified, it should be the
|
|
|
e6a2505 |
-{\tt window-parent} property of an existing window, which becomes the parent
|
|
|
e6a2505 |
-window of the new window. {\tt x} and {\tt y} are the offset of the
|
|
|
e6a2505 |
-new window from the parent window. {\tt font} is the font to be used
|
|
|
e6a2505 |
+\texttt{window-create} makes a new window of the specified \texttt{width} and
|
|
|
e6a2505 |
+\texttt{height}. \texttt{title}, if specified, becomes the displayed title
|
|
|
e6a2505 |
+of the window. If \texttt{parentw} is specified, it should be the
|
|
|
e6a2505 |
+\texttt{window-parent} property of an existing window, which becomes the parent
|
|
|
e6a2505 |
+window of the new window. \texttt{x} and \texttt{y} are the offset of the
|
|
|
e6a2505 |
+new window from the parent window. \texttt{font} is the font to be used
|
|
|
e6a2505 |
for printing in the window; the default is given by
|
|
|
e6a2505 |
-{\tt *window-default-font-name*}, initially {\tt courier-bold-12}.
|
|
|
e6a2505 |
+\texttt{*window-default-font-name*}, initially \texttt{courier-bold-12}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-open w)} causes a window to be displayed
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-open w)} causes a window to be displayed
|
|
|
e6a2505 |
on the screen.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-close w)} removes the window from the display;
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-close w)} removes the window from the display;
|
|
|
e6a2505 |
it can be re-opened.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-destroy w)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-destroy w)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-moveto-xy w x y)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-moveto-xy w x y)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-geometry w)} queries X for the window geometry.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-geometry w)} queries X for the window geometry.
|
|
|
e6a2505 |
The result is a list, \linebreak
|
|
|
e6a2505 |
-{\tt (x y width height border-width)} .
|
|
|
e6a2505 |
+\texttt{(x y width height border-width)} .
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-size w)} returns a list {\tt (width height)} .
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-size w)} returns a list
|
|
|
e6a2505 |
+\texttt{(width height)} .
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
Note that the width and height are cached within the structure so that no call
|
|
|
e6a2505 |
to X is needed to examine them. However, if the window is resized, it is
|
|
|
e6a2505 |
-necessary to call {\tt (window-reset-geometry\ w)} to reset the local
|
|
|
e6a2505 |
+necessary to call \texttt{(window-reset-geometry\ w)} to reset the local
|
|
|
e6a2505 |
parameters to their correct values.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
% ; Paint in window with mouse \\ % these are not really working...
|
|
|
e6a2505 |
-% {\tt \hspace*{0.5in} (window-paint w)} \\
|
|
|
e6a2505 |
+% \texttt{\hspace*{0.5in} (window-paint w)} \\
|
|
|
e6a2505 |
%
|
|
|
e6a2505 |
-% {\tt \hspace*{0.5in} (window-move w)} \\
|
|
|
e6a2505 |
+% \texttt{\hspace*{0.5in} (window-move w)} \\
|
|
|
e6a2505 |
%
|
|
|
e6a2505 |
-% {\tt \hspace*{0.5in} (dowindowcom w)} \\
|
|
|
e6a2505 |
+% \texttt{\hspace*{0.5in} (dowindowcom w)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The following functions provide access to the parts of the {\tt window} data
|
|
|
e6a2505 |
+The following functions provide access to the parts of the \texttt{window} data
|
|
|
e6a2505 |
structure; most applications will not need to use them. \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-gcontext w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-parent w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-drawable-height w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-drawable-width w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-label w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-font w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-screen-height)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-gcontext w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-parent w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-drawable-height w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-drawable-width w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-label w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-font w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-screen-height)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\section{Drawing Functions}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-clear w)} clears the window to the background
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-clear w)} clears the window to the background
|
|
|
e6a2505 |
color.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-force-output \&optional w)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-force-output \&optional w)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
Communication between the running program and X windows is done through a
|
|
|
e6a2505 |
stream; actual drawing on the display is done asynchronously.
|
|
|
e6a2505 |
-{\tt window-force-output} causes the current drawing commands, if any,
|
|
|
e6a2505 |
+\texttt{window-force-output} causes the current drawing commands, if any,
|
|
|
e6a2505 |
to be sent to X. Without this, commands may be left in the stream buffer and
|
|
|
e6a2505 |
-may appear not to have been executed. The argument {\tt w} is not used.
|
|
|
e6a2505 |
+may appear not to have been executed. The argument \texttt{w} is not used.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-In all of the drawing functions, the {\tt linewidth} argument is optional
|
|
|
e6a2505 |
-and defaults to {\tt 1}.
|
|
|
e6a2505 |
+In all of the drawing functions, the \texttt{linewidth} argument is optional
|
|
|
e6a2505 |
+and defaults to \texttt{1}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-line w from:vector to:vector linewidth)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-line w from:vector to:vector linewidth)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in}
|
|
|
e6a2505 |
(window-draw-line-xy w x1 y1 x2 y2 \&optional linewidth op)} \\
|
|
|
e6a2505 |
- \hspace*{1.0in} {\tt op} may be {\tt xor} or {\tt erase}.
|
|
|
e6a2505 |
+ \hspace*{1.0in} \texttt{op} may be \texttt{xor} or \texttt{erase}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in}
|
|
|
e6a2505 |
(window-draw-arrow-xy w x1 y1 x2 y2 \&optional linewidth size)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in}
|
|
|
e6a2505 |
(window-draw-arrow2-xy w x1 y1 x2 y2 \&optional linewidth size)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in}
|
|
|
e6a2505 |
(window-draw-arrowhead-xy w x1 y1 x2 y2 \&optional linewidth size)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
These draw a line with an arrowhead at the second point, a line with an
|
|
|
e6a2505 |
arrowhead at both points, or an arrowhead alone at the second point,
|
|
|
e6a2505 |
-respectively. {\tt size} is the arrowhead size; the default is
|
|
|
e6a2505 |
-{\tt (+ 20 (* linewidth 5))}.
|
|
|
e6a2505 |
+respectively. \texttt{size} is the arrowhead size; the default is
|
|
|
e6a2505 |
+\texttt{(+ 20 (* linewidth 5))}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-box-xy w x y width height linewidth)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-xor-box-xy w x y width height linewidth)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-box w offset:vector size:vector linewidth)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-box-corners w x1 y1 x2 y2 linewidth)} \\
|
|
|
e6a2505 |
- \hspace*{1.0in} where {\tt (x1 y1)} and {\tt (x2 y2)} are opposite corners. \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-rcbox-xy w x y width height radius linewidth)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-box-xy w x y width height linewidth)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-xor-box-xy w x y width height linewidth)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-box w offset:vector size:vector linewidth)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-box-corners w x1 y1 x2 y2 linewidth)} \\
|
|
|
e6a2505 |
+ \hspace*{1.0in} where \texttt{(x1 y1)} and \texttt{(x2 y2)} are opposite corners. \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-rcbox-xy w x y width height radius linewidth)} \\
|
|
|
e6a2505 |
\hspace*{1.0in} draws a box with rounded corners.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-arc-xy w x y radiusx radiusy anglea angleb linewidth)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-arc-xy w x y radiusx radiusy anglea angleb linewidth)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt anglea} is the angle, in degrees, at which the arc is started.
|
|
|
e6a2505 |
-{\tt angleb} is the angle, in degrees, that specifies the amount of arc
|
|
|
e6a2505 |
+\texttt{anglea} is the angle, in degrees, at which the arc is started.
|
|
|
e6a2505 |
+\texttt{angleb} is the angle, in degrees, that specifies the amount of arc
|
|
|
e6a2505 |
to be drawn, counterclockwise from the starting position.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-circle-xy w x y radius linewidth)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-circle w center:vector radius linewidth)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-ellipse-xy w x y radiusx radiusy linewidth)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-dot-xy w x y)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-circle-xy w x y radius linewidth)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-circle w center:vector radius linewidth)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-ellipse-xy w x y radiusx radiusy linewidth)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-dot-xy w x y)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-erase-area-xy w left bottom width height)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-erase-area w offset:vector size:vector)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-copy-area-xy w fromx fromy tox toy width height)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-invert-area w offset:vector size:vector)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-invert-area-xy w left bottom width height)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-erase-area-xy w left bottom width height)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-erase-area w offset:vector size:vector)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-copy-area-xy w fromx fromy tox toy width height)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-invert-area w offset:vector size:vector)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-invert-area-xy w left bottom width height)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-printat-xy w s x y)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-printat w s at:vector)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-prettyprintat-xy w s x y)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-prettyprintat w s at:vector)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-printat-xy w s x y)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-printat w s at:vector)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-prettyprintat-xy w s x y)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-prettyprintat w s at:vector)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-The argument {\tt s} is printed at the specified position.
|
|
|
e6a2505 |
-{\tt s} is stringified if necessary.
|
|
|
e6a2505 |
+The argument \texttt{s} is printed at the specified position.
|
|
|
e6a2505 |
+\texttt{s} is stringified if necessary.
|
|
|
e6a2505 |
Currently, the pretty-print versions are the same as the plain versions.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-draw-border w)} draws a border just
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-draw-border w)} draws a border just
|
|
|
e6a2505 |
inside a window.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\section{Fonts, Operations, Colors}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-font w font)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-font w font)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-The font symbols that are currently defined are {\tt courier-bold-12},
|
|
|
e6a2505 |
-{\tt 8x10}, and {\tt 9x15} . The global variable {\tt *window-fonts*}
|
|
|
e6a2505 |
+The font symbols that are currently defined are \texttt{courier-bold-12},
|
|
|
e6a2505 |
+\texttt{8x10}, and \texttt{9x15} . The global variable \texttt{*window-fonts*}
|
|
|
e6a2505 |
contains correspondences between font symbols and font strings.
|
|
|
e6a2505 |
A font string may also be specified instead of a font symbol.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-string-width w s)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-string-extents w s)} \\
|
|
|
e6a2505 |
-These give the width and the vertical size {\tt (ascent descent)} in pixels
|
|
|
e6a2505 |
-of the specified string {\tt s} using the font of the specified window.
|
|
|
e6a2505 |
-{\tt s} is stringified if necessary.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-string-width w s)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-string-extents w s)} \\
|
|
|
e6a2505 |
+These give the width and the vertical size \texttt{(ascent descent)} in pixels
|
|
|
e6a2505 |
+of the specified string \texttt{s} using the font of the specified window.
|
|
|
e6a2505 |
+\texttt{s} is stringified if necessary.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
Operations on a window other than direct drawing are performed by
|
|
|
e6a2505 |
setting a condition for the window, performing the operation, and then
|
|
|
e6a2505 |
-unsetting the condition with {\tt window-unset}. {\tt window-reset}
|
|
|
e6a2505 |
+unsetting the condition with \texttt{window-unset}. \texttt{window-reset}
|
|
|
e6a2505 |
will reset a window to its ``standard'' setting; it is useful primarily
|
|
|
e6a2505 |
for cases in which a program bug causes window settings to be in an
|
|
|
e6a2505 |
undesired state.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.1in}
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-xor w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-erase w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-copy w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-invert w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-unset w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-reset w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-xor w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-erase w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-copy w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-invert w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-unset w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-reset w)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-line-width w width)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-line-attr w width \&optional line-style cap-style join-style)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-std-line-attr w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-line-width w width)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-line-attr w width \&optional line-style cap-style join-style)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-std-line-attr w)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-foreground w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-foreground w fg-color)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-background w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-background w bg-color)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-foreground w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-foreground w fg-color)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-background w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-background w bg-color)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\subsection{Color}
|
|
|
7fc6c88 |
@@ -551,62 +552,62 @@ undesired state.
|
|
|
e6a2505 |
The color of the foreground (things that are drawn, such as lines or
|
|
|
e6a2505 |
characters) is set by:
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-set-color w rgb \&optional background)} \\
|
|
|
6e2b50c |
-{\tt \hspace*{0.5in} (window-set-color-rgb w r g b \&optional background)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-set-color w rgb \&optional background)} \\
|
|
|
6e2b50c |
+\texttt{\hspace*{0.5in} (window-set-color-rgb w r g b \&optional background)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt rgb} is a list {\tt (red green blue)} of 16-bit unsigned integers in
|
|
|
e6a2505 |
-the range {\tt 0} to {\tt 65535}. {\tt background} is non-{\tt nil}
|
|
|
e6a2505 |
+\texttt{rgb} is a list \texttt{(red green blue)} of 16-bit unsigned integers in
|
|
|
6e2b50c |
+the range \texttt{0} to \texttt{65535}. \texttt{background} is non-\texttt{nil}
|
|
|
6e2b50c |
to set the background color rather than the foreground color.
|
|
|
6e2b50c |
|
|
|
6e2b50c |
-{\tt \hspace*{0.5in} (window-reset-color w)} \\
|
|
|
6e2b50c |
-{\tt window-reset-color} resets a window's colors to the default values.
|
|
|
6e2b50c |
+\texttt{\hspace*{0.5in} (window-reset-color w)} \\
|
|
|
6e2b50c |
+\texttt{window-reset-color} resets a window's colors to the default values.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
Colors are a scarce resource; there is only a finite number of
|
|
|
e6a2505 |
available colors, such as 256 colors. If you only use a small, fixed set
|
|
|
e6a2505 |
of colors, the finite set of colors will not be a problem. However,
|
|
|
e6a2505 |
if you create a lot of colors that are used only briefly, it will be
|
|
|
e6a2505 |
necessary to release them after they are no longer needed.
|
|
|
e6a2505 |
-{\tt window-set-color} will leave the global variable {\tt *window-xcolor*}
|
|
|
6e2b50c |
+\texttt{window-set-color} will leave the global variable \texttt{*window-xcolor*}
|
|
|
6e2b50c |
set to an integer value that denotes an X color; this value should be
|
|
|
e6a2505 |
-saved and used as the argument to {\tt window-free-color} to release
|
|
|
6e2b50c |
+saved and used as the argument to \texttt{window-free-color} to release
|
|
|
6e2b50c |
the color after it is no longer needed.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-free-color w \&optional xcolor)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-free-color w \&optional xcolor)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt window-free-color} frees either the last color used, as given by
|
|
|
e6a2505 |
-{\tt *window-xcolor*}, or the specified color.
|
|
|
e6a2505 |
+\texttt{window-free-color} frees either the last color used, as given by
|
|
|
e6a2505 |
+\texttt{*window-xcolor*}, or the specified color.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\subsection{Character Input} \label{texted}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
Characters can be input within a window by the call:
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-input-string w str x y \&optional size)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-input-string w str x y \&optional size)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt window-input-string} will print the initial string {\tt str},
|
|
|
e6a2505 |
-if non-{\tt nil},
|
|
|
e6a2505 |
-at the specified position in the window; {\tt str}, if not modified
|
|
|
e6a2505 |
+\texttt{window-input-string} will print the initial string \texttt{str},
|
|
|
e6a2505 |
+if non-\texttt{nil},
|
|
|
e6a2505 |
+at the specified position in the window; \texttt{str}, if not modified
|
|
|
e6a2505 |
by the user, will also be the initial part of the result. A caret
|
|
|
e6a2505 |
is displayed showing the location of the next input character.
|
|
|
e6a2505 |
Characters are echoed as they are typed; backspacing erases characters,
|
|
|
e6a2505 |
-including those from the initial string {\tt str}. An area of width
|
|
|
e6a2505 |
-{\tt size} (default 100) is erased to the right of the initial caret.
|
|
|
e6a2505 |
+including those from the initial string \texttt{str}. An area of width
|
|
|
e6a2505 |
+\texttt{size} (default 100) is erased to the right of the initial caret.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\subsection{Emacs-like Editing} \label{emacsed}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt window-edit} allows editing of text using an Emacs-subset editor.
|
|
|
e6a2505 |
+\texttt{window-edit} allows editing of text using an Emacs-subset editor.
|
|
|
e6a2505 |
Only a few simple Emacs commands are implemented.
|
|
|
e6a2505 |
\begin{verbatim}
|
|
|
e6a2505 |
(window-edit w x y width height &optional strings boxflg scroll endp)
|
|
|
e6a2505 |
\end{verbatim}
|
|
|
e6a2505 |
-{\tt x y width height} specify the offset and size of the editing
|
|
|
e6a2505 |
+\texttt{x y width height} specify the offset and size of the editing
|
|
|
e6a2505 |
area; it is a good idea to draw a box around this area first.
|
|
|
e6a2505 |
-{\tt strings} is an initial list of strings; the return value is a list
|
|
|
e6a2505 |
+\texttt{strings} is an initial list of strings; the return value is a list
|
|
|
e6a2505 |
of strings.
|
|
|
e6a2505 |
-{\tt scroll} is number of lines to scroll down before displaying text,
|
|
|
e6a2505 |
- or {\tt T} to have one line only and terminate on return.
|
|
|
e6a2505 |
-{\tt endp} is {\tt T} to begin editing at the end of the first line.
|
|
|
e6a2505 |
+\texttt{scroll} is number of lines to scroll down before displaying text,
|
|
|
e6a2505 |
+ or \texttt{T} to have one line only and terminate on return.
|
|
|
e6a2505 |
+\texttt{endp} is \texttt{T} to begin editing at the end of the first line.
|
|
|
e6a2505 |
Example:
|
|
|
e6a2505 |
\begin{verbatim}
|
|
|
e6a2505 |
(window-draw-box-xy myw 48 48 204 204)
|
|
|
7fc6c88 |
@@ -616,130 +617,132 @@ Example:
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\section{Mouse Interaction}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-point w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-crosshairs w)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-cross w)} \\
|
|
|
e6a2505 |
-These functions get a point position by mouse click; they return {\tt (x y)} .
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-point w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-crosshairs w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-cross w)} \\
|
|
|
e6a2505 |
+These functions get a point position by mouse click; they return
|
|
|
e6a2505 |
+\texttt{(x y)}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The following function gets a point position by mouse click. It returns
|
|
|
e6a2505 |
-{\tt (button (x y))} where {\tt button} is {\tt 1} for the left button,
|
|
|
e6a2505 |
-{\tt 2} for middle, {\tt 3} for right.
|
|
|
e6a2505 |
+\texttt{(button (x y))} where \texttt{button} is \texttt{1} for the left
|
|
|
e6a2505 |
+button, \texttt{2} for middle, \texttt{3} for right.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-click w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-click w)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The following function gets a point position by mouse click within a specified
|
|
|
e6a2505 |
-region. It returns {\tt (button (x y))} or {\tt NIL} if the mouse leaves
|
|
|
e6a2505 |
-the region. If {\tt boxflg} is {\tt t}, a box will be drawn outside the
|
|
|
e6a2505 |
+region. It returns \texttt{(button (x y))} or \texttt{NIL} if the mouse leaves
|
|
|
e6a2505 |
+the region. If \texttt{boxflg} is \texttt{t}, a box will be drawn outside the
|
|
|
e6a2505 |
region while the mouse is being tracked.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-track-mouse-in-region w x y sizex sizey \&optional boxflg)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-track-mouse-in-region w x y sizex sizey \&optional boxflg)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The following functions get a point position indicated by drawing a line
|
|
|
e6a2505 |
from a specified origin position to the cursor position; they return
|
|
|
e6a2505 |
-{\tt (x y)} at the cursor position when a mouse button is clicked.
|
|
|
e6a2505 |
-The {\tt latex} version restricts the slope of the line to be a slope that
|
|
|
e6a2505 |
-\LaTeX \ can draw; if {\tt flg} is non-{\tt nil}, the slope is restricted
|
|
|
e6a2505 |
-to be a \LaTeX \ {\tt vector} slope.
|
|
|
e6a2505 |
+\texttt{(x y)} at the cursor position when a mouse button is clicked.
|
|
|
e6a2505 |
+The \texttt{latex} version restricts the slope of the line to be a slope that
|
|
|
e6a2505 |
+\LaTeX \ can draw; if \texttt{flg} is non-\texttt{nil}, the slope is restricted
|
|
|
e6a2505 |
+to be a \LaTeX \ \texttt{vector} slope.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-line-position w orgx orgy)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-latex-position w orgx orgy flg)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-line-position w orgx orgy)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-latex-position w orgx orgy flg)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-The following function gets a position by moving a ``ghost'' icon,
|
|
|
e6a2505 |
-defined by the icon drawing function {\tt fn}. This allows exact positioning
|
|
|
e6a2505 |
+The following function gets a position by moving a ``ghost'' icon, defined
|
|
|
e6a2505 |
+by the icon drawing function \texttt{fn}. This allows exact positioning
|
|
|
e6a2505 |
of an object by the user.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-icon-position w fn args \&optional (dx 0)
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-icon-position w fn args \&optional (dx 0)
|
|
|
e6a2505 |
(dy 0))} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.15in}
|
|
|
e6a2505 |
-The function {\tt fn} has arguments {\tt (fn w x y . args)} , where {\tt x}
|
|
|
e6a2505 |
-and {\tt y} are the offset within the window {\tt w} at which the icon is
|
|
|
e6a2505 |
-to be drawn, and {\tt args} is a list of arbitrary arguments, e.g., the size
|
|
|
e6a2505 |
-of the icon, that are passed through to the drawing function.
|
|
|
e6a2505 |
-The icon is drawn in {\tt xor} mode, so it must be drawn using
|
|
|
e6a2505 |
+The function \texttt{fn} has arguments \texttt{(fn w x y . args)} , where
|
|
|
e6a2505 |
+\texttt{x} and \texttt{y} are the offset within the window \texttt{w} at which
|
|
|
e6a2505 |
+the icon is to be drawn, and \texttt{args} is a list of arbitrary arguments,
|
|
|
e6a2505 |
+e.g., the size of the icon, that are passed through to the drawing function.
|
|
|
e6a2505 |
+The icon is drawn in \texttt{xor} mode, so it must be drawn using
|
|
|
e6a2505 |
only ``plain'' drawing functions, without resetting window attributes.
|
|
|
e6a2505 |
-The returned value is {\tt (x y)} at the cursor position when a button
|
|
|
e6a2505 |
-is clicked. {\tt dx} and {\tt dy}, if specified, are offsets of {\tt x}
|
|
|
e6a2505 |
-and {\tt y} from the cursor position.
|
|
|
e6a2505 |
+The returned value is \texttt{(x y)} at the cursor position when a button
|
|
|
e6a2505 |
+is clicked. \texttt{dx} and \texttt{dy}, if specified, are offsets of
|
|
|
e6a2505 |
+\texttt{x} and \texttt{y} from the cursor position.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The following function gets a position by moving a ``ghost'' box icon.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-box-position w width height \&optional (dx 0) (dy 0))} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-box-position w width height \&optional (dx 0) (dy 0))} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.15in}
|
|
|
e6a2505 |
By default, the lower-left corner of the box is placed at the cursor position;
|
|
|
e6a2505 |
-{\tt dx} and {\tt dy} may be used to offset the box from the cursor, e.g.,
|
|
|
e6a2505 |
-to move the box by a different corner. The returned value is {\tt (x y)}
|
|
|
e6a2505 |
-at the cursor position when a button is clicked.
|
|
|
e6a2505 |
+\texttt{dx} and \texttt{dy} may be used to offset the box from the cursor,
|
|
|
e6a2505 |
+e.g., to move the box by a different corner. The returned value is
|
|
|
e6a2505 |
+\texttt{(x y)} at the cursor position when a button is clicked.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The following function gets coordinates of a box of arbitrary size and
|
|
|
e6a2505 |
position.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-region w)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-region w)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.15in}
|
|
|
e6a2505 |
The user first clicks for one corner of the box, moves the
|
|
|
e6a2505 |
mouse and clicks again for the opposite corner, then moves the box into
|
|
|
e6a2505 |
the desired position. The returned value is \linebreak
|
|
|
e6a2505 |
-{\tt ((x y) (width height))},
|
|
|
e6a2505 |
-where {\tt (x y)} is the lower-left corner of the box.
|
|
|
e6a2505 |
+\texttt{((x y) (width height))},
|
|
|
e6a2505 |
+where \texttt{(x y)} is the lower-left corner of the box.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The following function gets the size of a box by mouse selection,
|
|
|
e6a2505 |
-echoing the size in pixels below the box. {\tt offsety}
|
|
|
e6a2505 |
-should be at least {\tt 30} to leave room to display the size of the box.
|
|
|
e6a2505 |
+echoing the size in pixels below the box. \texttt{offsety}
|
|
|
e6a2505 |
+should be at least \texttt{30} to leave room to display the size of the box.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-box-size w offsetx offsety)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-box-size w offsetx offsety)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
The following function adjusts one side of a box.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-adjust-box-side w x y width height side)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-adjust-box-side w x y width height side)} \\
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.15in}
|
|
|
e6a2505 |
-{\tt side} specifies the side of the box to be adjusted: {\tt left},
|
|
|
e6a2505 |
-{\tt right}, {\tt top}, or {\tt bottom}. The result is
|
|
|
e6a2505 |
-{\tt ((x y) (width height))} for the resulting box.
|
|
|
e6a2505 |
+\texttt{side} specifies the side of the box to be adjusted: \texttt{left},
|
|
|
e6a2505 |
+\texttt{right}, \texttt{top}, or \texttt{bottom}. The result is
|
|
|
e6a2505 |
+\texttt{((x y) (width height))} for the resulting box.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-circle w \&optional center:vector)} \\
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-get-ellipse w \&optional center:vector)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-circle w \&optional center:vector)} \\
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-get-ellipse w \&optional center:vector)} \\
|
|
|
e6a2505 |
These functions interactively get a circle or ellipse. For an ellipse,
|
|
|
e6a2505 |
a circle is gotten first for the horizontal size; then the vertical
|
|
|
e6a2505 |
size of the ellipse is adjusted.
|
|
|
e6a2505 |
-{\tt window-get-circle} returns {\tt ((x y) radius)}.
|
|
|
e6a2505 |
-{\tt window-get-ellipse} returns {\tt ((x y) (xradius yradius))}.
|
|
|
e6a2505 |
+\texttt{window-get-circle} returns \texttt{((x y) radius)}.
|
|
|
e6a2505 |
+\texttt{window-get-ellipse} returns \texttt{((x y) (xradius yradius))}.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-% {\tt \hspace*{0.5in} (window-sync w)} will clear the event queue of any
|
|
|
e6a2505 |
+% \texttt{\hspace*{0.5in} (window-sync w)} will clear the event queue of any
|
|
|
e6a2505 |
% previous motion events.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt window-track-mouse} is the basic function for following the mouse
|
|
|
e6a2505 |
+\texttt{window-track-mouse} is the basic function for following the mouse
|
|
|
e6a2505 |
and performing some action as it moves. This function is used in
|
|
|
e6a2505 |
the implementation of menus and the mouse-interaction functions described in
|
|
|
e6a2505 |
this section.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-track-mouse w fn \&optional outflg)}
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-track-mouse w fn \&optional outflg)}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\vspace{-0.05in}
|
|
|
e6a2505 |
Each time the mouse position changes or a mouse button is pressed,
|
|
|
e6a2505 |
-the function {\tt fn} is called with
|
|
|
e6a2505 |
-arguments {\tt (x y code)} where {\tt x} and {\tt y} are the cursor
|
|
|
e6a2505 |
-position, {\tt code} is a button code ({\tt 0} if no button, {\tt 1} for
|
|
|
e6a2505 |
-the left button, {\tt 2} for the middle button, or {\tt 3} for the right
|
|
|
e6a2505 |
-button). {\tt window-track-mouse} continues to track the mouse until {\tt fn}
|
|
|
e6a2505 |
-returns a value other than {\tt nil}, at which time {\tt window-track-mouse}
|
|
|
e6a2505 |
-returns that value. Usually, it is a good idea for {\tt fn} to return a
|
|
|
e6a2505 |
-value other than {\tt nil} upon a mouse click. If the argument {\tt outflg}
|
|
|
e6a2505 |
-is non-{\tt nil}, the function {\tt fn} will be called for button clicks
|
|
|
e6a2505 |
-outside the window {\tt w}; note, however, that such clicks will not be
|
|
|
e6a2505 |
-seen if the containing window intercepts them, so that this feature will
|
|
|
e6a2505 |
-work only if the window {\tt w} is inside another Lisp user window.
|
|
|
e6a2505 |
+the function \texttt{fn} is called with arguments
|
|
|
e6a2505 |
+\texttt{(x y code)} where \texttt{x} and \texttt{y} are the cursor position,
|
|
|
e6a2505 |
+\texttt{code} is a button code (\texttt{0} if no button, \texttt{1} for
|
|
|
e6a2505 |
+the left button, \texttt{2} for the middle button, or \texttt{3} for the right
|
|
|
e6a2505 |
+button). \texttt{window-track-mouse} continues to track the mouse until
|
|
|
e6a2505 |
+\texttt{fn} returns a value other than \texttt{nil}, at which time
|
|
|
e6a2505 |
+\texttt{window-track-mouse} returns that value. Usually, it is a good idea
|
|
|
e6a2505 |
+for \texttt{fn} to return a value other than \texttt{nil} upon a mouse click.
|
|
|
e6a2505 |
+If the argument \texttt{outflg} is non-\texttt{nil}, the function \texttt{fn}
|
|
|
e6a2505 |
+will be called for button clicks outside the window \texttt{w}; note, however,
|
|
|
e6a2505 |
+that such clicks will not be seen if the containing window intercepts them, so
|
|
|
e6a2505 |
+that this feature will work only if the window \texttt{w} is inside another
|
|
|
e6a2505 |
+Lisp user window.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\section{Miscellaneous Functions}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (stringify x)} makes its argument into a string.
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (stringify x)} makes its argument into a string.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
-{\tt \hspace*{0.5in} (window-destroy-selected-window)} waits 3 seconds,
|
|
|
e6a2505 |
+\texttt{\hspace*{0.5in} (window-destroy-selected-window)} waits 3 seconds,
|
|
|
e6a2505 |
then destroys the window containing the mouse cursor. This function
|
|
|
e6a2505 |
should be used with care; it can destroy a non-user window, causing
|
|
|
e6a2505 |
processes associated with the window to be destroyed. It is useful
|
|
|
7fc6c88 |
@@ -750,7 +753,7 @@ due to an error.
|
|
|
e6a2505 |
\section{Examples}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
Several interactive programs using this software for their graphical
|
|
|
e6a2505 |
-interface can be found at {\tt http://www.cs.utexas.edu/users/novak/}
|
|
|
e6a2505 |
+interface can be found at \texttt{http://www.cs.utexas.edu/users/novak/}
|
|
|
e6a2505 |
under the heading Software Demos.
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
7fc6c88 |
@@ -760,31 +763,31 @@ This software allows a Lisp program to b
|
|
|
e6a2505 |
a web page. There are two approaches, either using an X server on
|
|
|
e6a2505 |
the computer of the person viewing the web page, or using WeirdX, a
|
|
|
e6a2505 |
Java program that emulates an X server. Details can be found at:
|
|
|
e6a2505 |
-{\tt http://www.cs.utexas.edu/users/novak/dwindow.html}
|
|
|
e6a2505 |
+\texttt{http://www.cs.utexas.edu/users/novak/dwindow.html}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\section{Files}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
\begin{tabular}{ll}
|
|
|
e6a2505 |
-{\tt dec.copyright} & Copyright and license for DEC/MIT files \\
|
|
|
e6a2505 |
-{\tt draw.lsp} & GLISP source code for interactive drawing utility \\
|
|
|
e6a2505 |
-{\tt drawtrans.lsp} & {\tt draw.lsp} translated into plain Lisp \\
|
|
|
e6a2505 |
-{\tt draw-gates.lsp} & Code to draw {\tt nand} gates etc. \\
|
|
|
e6a2505 |
-{\tt dwdoc.tex} & \LaTeX \ source for this document \\
|
|
|
e6a2505 |
-{\tt dwexports.lsp} & exported symbols \\
|
|
|
e6a2505 |
-{\tt dwimportsb.lsp} & imported symbols \\
|
|
|
e6a2505 |
-{\tt dwindow.lsp} & GLISP source code for {\tt dwindow} functions \\
|
|
|
e6a2505 |
-{\tt dwtest.lsp} & Examples of use of {\tt dwindow} functions \\
|
|
|
e6a2505 |
-{\tt dwtrans.lsp} & {\tt dwindow.lsp} translated into plain Lisp \\
|
|
|
e6a2505 |
-{\tt editors.lsp} & Editors for colors etc. \\
|
|
|
e6a2505 |
-{\tt editorstrans.lsp} & translation of {\tt editors.lsp} \\
|
|
|
e6a2505 |
-{\tt gnu.license} & GNU General Public License \\
|
|
|
e6a2505 |
-{\tt ice-cream.lsp} & Drawing of an ice cream cone made with {\tt draw} \\
|
|
|
e6a2505 |
-{\tt lispserver.lsp} & Example web demo: a Lisp server \\
|
|
|
e6a2505 |
-{\tt lispservertrans.lsp} & translation of {\tt lispserver.lsp} \\
|
|
|
e6a2505 |
-{\tt menu-set.lsp} & GLISP source code for menu-set functions \\
|
|
|
e6a2505 |
-{\tt menu-settrans.lsp} & translation of {\tt menu-set.lsp} \\
|
|
|
e6a2505 |
-{\tt pcalc.lsp} & Pocket calculator implemented as a {\tt picmenu} \\
|
|
|
e6a2505 |
+\texttt{dec.copyright} & Copyright and license for DEC/MIT files \\
|
|
|
e6a2505 |
+\texttt{draw.lsp} & GLISP source code for interactive drawing utility \\
|
|
|
e6a2505 |
+\texttt{drawtrans.lsp} & \texttt{draw.lsp} translated into plain Lisp \\
|
|
|
e6a2505 |
+\texttt{draw-gates.lsp} & Code to draw \texttt{nand} gates etc. \\
|
|
|
e6a2505 |
+\texttt{dwdoc.tex} & \LaTeX \ source for this document \\
|
|
|
e6a2505 |
+\texttt{dwexports.lsp} & exported symbols \\
|
|
|
e6a2505 |
+\texttt{dwimportsb.lsp} & imported symbols \\
|
|
|
e6a2505 |
+\texttt{dwindow.lsp} & GLISP source code for \texttt{dwindow} functions \\
|
|
|
e6a2505 |
+\texttt{dwtest.lsp} & Examples of use of \texttt{dwindow} functions \\
|
|
|
e6a2505 |
+\texttt{dwtrans.lsp} & \texttt{dwindow.lsp} translated into plain Lisp \\
|
|
|
e6a2505 |
+\texttt{editors.lsp} & Editors for colors etc. \\
|
|
|
e6a2505 |
+\texttt{editorstrans.lsp} & translation of \texttt{editors.lsp} \\
|
|
|
e6a2505 |
+\texttt{gnu.license} & GNU General Public License \\
|
|
|
e6a2505 |
+\texttt{ice-cream.lsp} & Drawing of an ice cream cone made with \texttt{draw} \\
|
|
|
e6a2505 |
+\texttt{lispserver.lsp} & Example web demo: a Lisp server \\
|
|
|
e6a2505 |
+\texttt{lispservertrans.lsp} & translation of \texttt{lispserver.lsp} \\
|
|
|
e6a2505 |
+\texttt{menu-set.lsp} & GLISP source code for menu-set functions \\
|
|
|
e6a2505 |
+\texttt{menu-settrans.lsp} & translation of \texttt{menu-set.lsp} \\
|
|
|
e6a2505 |
+\texttt{pcalc.lsp} & Pocket calculator implemented as a \texttt{picmenu} \\
|
|
|
e6a2505 |
\end{tabular}
|
|
|
e6a2505 |
|
|
|
e6a2505 |
|