.\" This file generated automatically by mtex2man(1) .nh .TH "Juno" "1" .SH "Name" .PP Juno \- A double\-view constraint\-based drawing editor .SH "Syntax" .PP \fBJuno\fR [ \fIoptions\fR ] [ \fIfilename\fR ] .SH "Table of Contents" .PP .PD 0 .RS 0 .TP 6 * Introduction .TP 6 * Command\-line Options .TP 6 * The Current Command .TP 6 * Editing Through the Drawing View .TP 6 * Using Point, Text, Template and Set Tools .TP 6 * User\-Interface Declarations .TP 6 * Using the Special Tools .TP 6 * The Drawing View .TP 6 * Using the \*(lqRun\*(rq Button .TP 6 * Working with Long\-Running Commands .TP 6 * Folding .TP 6 * Folding Animations .TP 6 * Pushing and Popping the Current Command .TP 6 * The Current Module .TP 6 * Loading/Saving the Current Module .TP 6 * The Built\-In Modules .TP 6 * Printing, Previewing, and Producing PostScript .TP 6 * Producing Pixmaps in GIF Format .TP 6 * Crash Recovery .TP 6 * Correcting Mistakes .TP 6 * Setting Configuration Values .TP 6 * Interfacing with Zeus .TP 6 * Compilation and Run\-Time Errors .TP 6 * Environment Variables .TP 6 * Files .TP 6 * Bugs .TP 6 * Shortcomings .TP 6 * Reporting Bugs .TP 6 * See Also .RE .PD .PP .SH "Introduction" .PP Juno is a double\-view constraint\-based drawing editor. It displays a program and a drawing; the drawing is produced by running the program. You can modify either the drawing or the program, and Juno will modify the other to keep them in synch. .PP Juno is both a program and a programming language. The language has provisions for solving constraints. Juno makes it easy to specify constraints on your drawing. .PP When you run Juno, the main top\-level Juno window appears. To exit the program, select the \fIQuit\fR command under the \fIJuno\-2\fR menu. The main Juno window has three important sub\-windows: .PP .PD 0 .RS 0 .TP 6 * the \fIdrawing\fR view on the left, .TP 6 * the \fIcurrent module\fR editor in the upper\-right, and .TP 6 * the \fIcurrent command\fR editor in the lower\-right. .RE .PD .PP The source code in the current module editor and the current command editor \-\- together with the code defined in the built\-in modules \-\- comprise your program. Juno renders your drawing by running the current command. The current command may refer to predicates, functions, and procedures defined in the current module, or in one of the built\-in modules. .PP There are two sliding bars separating the three main sub\-windows that you can drag to change their relative sizes. There is also a menu bar along the top of the window, and a \fItool palette\fR along the left side. Initially, the tool palette contains the built\-in tools and tools and a sub\-palette for the built\-in PS module. .PP Juno uses the PostScript drawing model. To paint graphics or text in the drawing, you call procedures defined in the PS module. To paint graphics, you construct a \fIpath\fR composed of straight and curved segments, and then you \fIstroke\fR or \fIfill\fR the path. To paint text, you call the procedure PS.Type. See the public view of the PS module for details. .SH "Command\-line Options" .PP By default, Juno displays its main window on the display determined by the DISPLAY environment variable, opens the file named "Untitled.juno" in the current directory at start\-up, and is configured to print your drawing in portrait orientation. You can alter this behavior using one of the following command\-line switches: .PP .PD 0 .RS 0 .TP 6 \fB\-display\fR \fIXdisplay\fR Controls the display on which the main Juno window appears. See the X(1) man page for a description of the interpretation of the \fIXdisplay\fR argument. .IP .TP 6 \fB\-geometry\fR \fIXgeometry\fR Controls the initial size and location of the main Juno window. See the X(1) man page for a description of the interpretation of the \fIXgeometry\fR argument. .IP .TP 6 \fB\-config\fR \fIconfig\-file\fR Juno maintains certain user\-configurable values, such as the fonts used in the user interface and the number of digits to which real numbers are pretty\-printed in the program view. Juno first sets each of these values to a built\-in default. You can specify new values for these variables in a configuration file. .PD .IP .PD 0 By default, Juno looks for a file named ".juno\-config.sx", first in the current directory, then in your home directory (as named by the HOME environment variable). If such a file is found, configuration settings are read from it, overwriting the defaults. You can specify a different configuration file using the \fB\-config\fR switch. See the section on setting configuration values below for descriptions of the configuration values and the configuration file format. .IP .TP 6 \fB\-portrait\fR When it renders PostScript for your drawing, Juno will render the drawing in portrait orientation. This is the default. .IP .TP 6 \fB\-landscape\fR When it renders PostScript for your drawing, Juno will rotate your drawing by 90 degrees so as to render it in landscape orientation. This is convenient for producing slides for a talk. .IP .TP 6 \fB\-zeus\fR Runs Juno as a server for a single view of the Zeus animation system. For details, see Interfacing with Zeus below. .RE .PD .PP .SH "The Current Command" .PP The current command must be a Juno command. If this command is a projection, then it will have the following form: .PP VAR IN [ \-> ] END .BR .PP In this case, we will find it convenient to refer to the , , and sections of the current command. The section in this form is optional. If the current command is not a projection, then it has no or sections. Initially, the current command is SKIP, so the drawing is blank. .PP Changes made through the drawing view change the current command automatically. For example, when you create a new point in the drawing, a new variable is added to the section of the current command. The new variable's initial value is the location of its corresponding point. .SH "Editing Through the Drawing View" .PP To edit through the drawing, you select a tool, and then apply the tool by clicking, dragging, or typing in the drawing. How you use a tool depends on the particular tool. .PP To select a tool, you click on a tool name in any visible tool palette. The name of the selected tool is highlighted. Only one tool can be selected at a time; if some tool was already selected when you select a new tool, the old tool is automatically unselected. .PP There are four kinds of tools: .PP .PD 0 .RS 0 .TP 6 * A \fIpoint\fR tool is a tool associated with a Juno predicate, function, or procedure, all of whose arguments are points. .IP .TP 6 * A \fItext\fR tool is a tool associated with a Juno procedure all of whose arguments are points, except its last argument, which is a text string. .IP .TP 6 * A \fItemplate\fR tool is a tool associated with a Juno procedure that has no arguments. .IP .TP 6 * A \fIset\fR tool is a tool associated with a Juno procedure with a single argument. These tools get their name from the fact that they are usually used to set some aspect of the current state, such as the current fill color or line width. Set tools cannot be selected. Instead, when you press on a set tool, a menu of possible arguments appears. .IP .TP 6 * The built\-in tools \fICreate\fR, \fIFreeze\fR, \fIDrag\fR, \fIAdjust\fR, \fIGrid On\fR / \fIGrid Off\fR, \fIRel\fR, \fIRel1\fR, \fIHor\fR, \fIVer\fR, \fICong\fR, and \fIPara\fR are \fIspecial\fR. Each of these tools has its own user interface, and each has its own particular effect on the current command. See the section \fIUsing the Special Tools\fR below for details. .RE .PD .PP Juno creates point, text, template, and set tools according to UI (user\-interface) declarations. See the \fIUser\-Interface Declarations\fR section below for more information. .SH "Using Point Tools" .PP To use a point tool, you simply click in the drawing view. Each time you click, the point \fIclosest\fR to your cursor is selected as the next point parameter. When you have selected as many points as the total number of parameters corresponding to the predicate, function, or procedure associated with the selected point tool, the tool is \fIapplied\fR. .PP You can also use the bar to select points. If you have selected \fIi\fR points with the current tool, selects the \fIi\fRth point argument (counting from 0) to the most recently applied tool. This shortcut is useful for applying the same tool several times in a row. For example, to express the hints for the points c, d, and e all REL the points a and b, you would: .PP .PD 0 .RS 0 .TP 6 1. Click c, click a, click b .TP 6 2. Click d, type , type .TP 6 3. Click e, type , type .RE .PD .PP How the current command is updated when a point tool is applied depends on the tool. If the point tool is associated with a predicate or function, then a call to that predicate or function using the point arguments you specified is conjoined onto the end of the section of the current command. If the point tool is associated with a procedure, then a call to that procedure using the point arguments you specified is appended to the section of the current command, separated from the previous by a semicolon. .PP Using the key, you can combine the actions of creating and selecting a point. If you hold down the key while clicking with a point tool, then instead of selecting the existing point nearest your cursor, Juno \fIcreates\fR a new point at the cursor location and selects it. .PP By default, newly created points are unfrozen. If you hold down the