Oberon12.Scn.Fnt ZParcElemsAlloc Oberon14m.Scn.FntOberon10.Scn.Fnt'R Oberon12m.Scn.FntOberon12i.Scn.Fnt  AK0*LineElemsAlloc  AK' / Z U ZP r Z Oberon12b.Scn.Fnt P $ Z  ~ ZP 8 Z v ZP  Z   ZP 'K Z   ZP ' Z  P  Z 0[ i P ' Z Z ZP  Z  P '  q ZP   Z    tM0* 4v P TableElemsAllocCOberon10.Scn.Fnt?Oberon10i.Scn.FntH/left 0/right 0/nohead "*"/noline "*"/col "LL"/table /columns string GSOberon10.Scn.Fnt ZParcElemsAllocfg/left 0/right 0/nohead "*"/noline "*"/col "LL"/table control column formatting string = {L|C|R|N|-}. , (SOberon10.Scn.FntParcElemsAlloc/left 0/right 0/nohead "*"/noline "*"/col "LL"/table L left flush C centered R right flush N numeric (period adjusted) - default  tMy P COberon10.Scn.Fnt<Oberon10i.Scn.FntE/left 0/right 0/nohead "*"/noline "*"/col "LL"/table /rows string J9SOberon10.Scn.Fnt ZParcElemsAlloccd/left 0/right 0/nohead "*"/noline "*"/col "LL"/table control row formatting string = {B|L|C|T|-}. 69`lSOberon10.Scn.Fnt ZParcElemsAllocwx/left 0/right 0/nohead "*"/noline "*"/col "LL"/table B bottom flush L common baseline C centered T top flush - default  tMw COberon10.Scn.Fnt?Oberon10i.Scn.FntG/left 0/right 0/nohead "*"/noline "*"/col "LL"/table /noheads string Ozo SOberon10.Scn.Fnt ZParcElemsAlloc^_/left 0/right 0/nohead "*"/noline "*"/col "LL"/table turn header lines off string = {H|V |*}. Z SOberon10.Scn.Fnt ZParcElemsAllocST/left 0/right 0/nohead "*"/noline "*"/col "LL"/table H horizontal V vertical * all  tMu  COberon10.Scn.Fnt?Oberon10i.Scn.FntI/left 0/right 0/nohead "*"/noline "*"/col "LL"/table /nolines string B9`ESOberon10.Scn.Fnt ZParcElemsAllockl/left 0/right 0/nohead "*"/noline "*"/col "LL"/table turn separation lines off string = {L|R|B|T|H|V|*}. @SOberon10.Scn.Fnt ZParcElemsAlloc/left 0/right 0/nohead "*"/noline "*"/col "LL"/table L left frame R right frame B bottom frame T top frame H horizontal separation V vertical separation * all  tM $Oberon10.Scn.Fnt ZParcElemsAlloc5Oberon10i.Scn.Fnt  /left 0/right 0/nohead "*"/noline "*"/table /period string /left integer /right integer /bottom integer /top integer /grid integer @w$aOberon10.Scn.Fnt ZParcElemsAlloc/left 0/right 0/nohead "*"/noline "*"/table first char redefines period (e.g. ",") left cell margin right cell margin bottom cell margin top cell margin cell width grid *)  tM0*    P g;ADocumentation of Text Elements Last Update: 1 Oct 93 (M. Hausner, Ed.) Table of Contents Element Class Author Last Update  Clock R. Griesemer 28 Sept 93 Error C. Szyperski 28 Sept 93 Fold H. Mssenbck 28 Sept 93 Graphic C. Szyperski 27 Sept 93 Icon R. Griesemer 1 Oct 93 Line C. Szyperski 28 Sept 93 Menu N. Wirth 16 Sept 93 Picture H. Marais, K. Rege 7 Feb 91 Popup - "Hypertext without Surprises" M. Franz, S. Ludwig 30 Sept 93 Stamp C. Szyperski 28 Sept 93 Style C. Szyperski 28 Sept 93 Table C. Szyperski 28 Sept 93  This documentation is a periodically updated collection of sections describing fully independent text elements. Each section is divided into two subsections: A textual introduction to the functionality of the particular elements, followed by a list of supported commands. For each command, the command name, its explicit and its implicit parameters are given. Potential implicit parameters are the caret, selections, and the marked viewer. Explicit parameters are described using a compact syntax explained in the tutorial Edit.Guide.Text. At the end of each section a list of required files is given. E-mail update requests to the editor. Implementations of useful new text elements are always welcome. Companion documentation: Edit.Guide.Text - Tutorial and Release Notes Clock Elements Analog clocks elements displaying the current time (whenever the machine is idle). command explicit parameters implicit parameters ClockElems.Insert 9 [number] caret Insert a clock (with radius given in mm; default is 8) at the caret position. Error Elements Error elements can be used to translate error lists produced by a compiler into special marking elements within the source text. Since elements move when editing text, it becomes possible to edit a large number of errors at a time. Error elements are temporary elements and hence vanish automatically when storing a text. By clicking on an error element using MM, the element may be toggled between its (initial) compact form and its full form. In the compact form, it displays the error number. In the full form, the element displays the corresponding error message. In order for this function to work properly, the file OberonErrors.Text is required. (This file contains the error code/error message pairs.) command explicit parameters implicit parameters ErrorElems.Mark ("^" | error-list) marked viewer Takes the list of errors produced by a compiler (position, error code pairs) and inserts error marks into the marked text. If error marks were already present in that text, they are removed beforehand. ErrorElems.Unmark marked viewer Remove all error elements from the marked text. ErrorElems.LocateNext marked viewer, caret (in marked viewer) Locate the next error element starting the search at the caret position. If no caret is set in the marked viewer, the first error element is located. Fold Elements Fold Elements can be used to partially and hierarchically fold texts. Folding a text stretch causes its replacement by another, usually shorter or empty text stretch. Unfolding a folded stretch reveils the original text stretch while hiding its replacement. A (partially) folded text may be compiled as if it where fully unfolded using a utility module Folds. Folds also includes the functionality of ErrorElems, as defined elsewhere in this documentation. Options such as the compiler or error message file to be used can be specified in a file Folds.Profile. A demonstration of FoldElems and Folds is available as file FoldDemo.Text. command explicit parameters implicit parameters FoldElems.Insert selection Make selection foldable by inserting an appropriate pair of opening and closing fold elements before and after the selected text stretch, respectively. FoldElems.Expand marked viewer Unfolds (expands) all folds contained in the marked text. FoldElems.Collapse marked viewer Folds (collapses) all folds contained in the marked text. FoldElems.Marks ("^" | "on" | "off") marked viewer Make all fold elements in the marked text visible or invisible. FoldElems.Search selection, marked viewer Searches for the selected pattern in the text of the focus viewer starting at the caret position. Searches also within folded parts and opens folds if necessary to display found text stretches. If no selection is present, the last search pattern is used again. If no caret is present, the search starts at the beginning of the text. Folds.Compile ("^" | "*" [compiler-options] | name [compiler-options]) Compiles the specified text (possibly containing folds). The compiler is started on the fully expanded view of the text. Folds.ShowError ("*") marked viewer Places the caret at the next error after the caret position and display an error message in the Log viewer. If no caret is present, the first error in the marked text is displayed. Folds.SetProfile Sets the options specified in the file Folds.Profile (which compiler and which error message file should be used; should warnings be displayed). SetProfile is done automatically at the beginning. If Folds.Profile is missing, default options are: Compiler.Compile, OberonErrors.Text, warnings displayed. Graphics Elements Graphic elements support incorporation of graphs compatible with the standard Draw package into texts. A single command is provided by module GraphicElems in order to insert a new graphics. Using the middle mouse button, a graphics element can be "opened" for editing. As a result, a graphics viewer is opened displaying the graph. The command GraphicElems.Update in the viewer's menu can be used to propagate changes made to the graph back to the graphics element. Graphic elements support inplace editing: focus the element using the left mouse key and use standard Draw editing techniques within the activated graphics frame. command explicit parameters implicit parameters GraphicElems.Insert ("^" | "*" | name) caret (plus marked viewer, if "*" is used) Inserts a graphics element sized to show the graph stored in graphics file "name". If an open graphics viewer is marked, the command can be used to insert all or part of a displayed graph: if a selection exists in the marked graphics viewer's graph, only the selection is copied into the graphics element. Icon Elements Display a small "walking sysiphus" icon. By clicking on such an icon using MM, a screen saver is started. Using an icon editor, the file IconElems.Icon may be changed or replaced to install a different animated icon. command explicit parameters implicit parameters IconElems.Insert caret Inserts a new Icon Element at the caret position. Line Elements Line elements support horicontal or vertical lines within a text. A single command is provided to insert new line elements. The insertion command takes certain parameters such that line elements can be set to automatically adapt in width and height. command explicit parameters implicit parameters LineElems.Insert ("^" | ( ("auto" | "tab" | W) ("auto" | H) ) ) caret Inserts a line of given or automatically adopted width and height into a text. Width and height may be set in units of 1/10 mm. Otherwise, the width may be set to extend to the end of the current line ("auto") or to the next tabulator position ("tab"). The height may be set to equal the paragraphs line height (determined by the parc's line attribute). Picture Elements Picture elements support incorporation of pictures compatible with the standard Paint package into texts. Using the middle mouse button, a picture element can be "opened" for editing. As a result, a picture viewer is opened displaying the picture. The command PictureElems.Update in the viewer's menu can be used to propagate changes made to the picture back to the picture element. command explicit parameters implicit parameters PictElems.Insert ("^" | "*" | name ["scaled"]) caret Inserts a picture element sized to show the picture stored in picture file "name". If "*" is used, the marked picture is inserted. Popup Elements - "Hypertext without Surprises" Popup elements introduce hypertext features into texts. They have commands associated with them which are executed when the elements are clicked. A popup element that executes a single command is also called a "button". Popup Elements are a generalization of the "button" concept found in many hypertext systems in that they present a user with a menu of choices instead of representing only a single command. A popup element is displayed as a rectangular "button" shape floating in the text. Clicking MM while the mouse points to a button causes the menu of commands associated with the button to appear on the screen. The command that was last chosen from this menu is highlighted and offered as a default. A new command may then be chosen from the menu by moving the mouse over it. The new command becomes highlighted and is executed when the user releases the middle mouse button. At any time, the popup action may be cancelled by releasing MM while the mouse is outside of the menu box or by a click of the left mouse button. Interclicking MR while a menu is displayed opens a menu-edit viewer. The menu may be edited freely in this viewer. Any changes are propagated instantly to the menu in question. Popup elements may be copied freely among texts. Their complete state, including the last command chosen (the next default) are saved to and restored from disk when the associated document is written or opened. When a menu command is called, Oberon.Par.text is set to the text of the menu. It is therefore possible to pass parameters to menu commands simply by including them in the menu text. Oberon.Par.vwr is set to the Viewer displaying the text and Oberon.Par.frame to the corresponding frame. command explicit parameters implicit parameters PopupElems.Insert string caret Inserts a new popup element with an initially empty menu. The menu associated with the element may be edited in a menu-edit viewer which is opened by clicking MM on the element with MR interclick. The width of the menu is automatically adjusted to accomodate the widest command, while its line spacing is adjusted automatically to accomodate the largest font in the menu. Menu Elements Menu elements are a variant of popup elements. They appear as a simple piece of text (their name) on the screen. If clicked at with MM, a command menu pops up. A Middle-Left-Click at the element causes the menu text to be displayed for editing in a separate viewer. The first line of the menu text is interpreted as the menu name. command explicit parameters implicit parameters MenuElems.Insert caret position Inserts a menu element at the caret position. Initially the element is displayed as a blank rectangle. A Middle-Left-Click displays the (empty) menu text for editing. MenuElems.Update text in command viewer This command is usually contained in the menu of the viewer that displays the text of a menu element for editing. It installs the text in the viewer as the new menu text of the element. Stamp Elements Display date of most recent store of the text containing the element. (After insertion, StampElems display the current date.) The insert command takes an optional font name which is used to preset the font of the inserted element. command explicit parameters implicit parameters StampElems.Insert [name] caret Inserts a new stamp element, where the name indicated the font to be used. (If name is omitted, the default font is used.) Style Elements Style Elements extend standard Parcs by adding a name and automatic conformance of equally named parcs within a text. For example, a parc named "heading" may be set to format a section heading. Then, all parcs with that name use and maintain the same format as changes are propagated automatically. When copying a style parc from one text to another the behaviour of the copied parc depends on the target text. If it already contains a style with that name, the copied parc will adopt itself to that style. Otherwise, the copied parc defines a new style. Likewise, a style parc may be renamed. If it is renamed to a style that already exists in the containing text, the parc will adopt to that style, while otherwise it introduces a new style. Some examples for style parcs follow below. Note that the Oberon8.Scn.Fnt file should be available to get nicely labled style parcs. command explicit parameters implicit parameters StyleElems.Insert ("^" | name | string) caret Insert a new style parc with the given name at the caret position. A quoted string may be used to assign names consisting of multiple words. StyleElems.Rename ("^" | name | string) selected parc Renames the selected parc to the given name. Table Elements Table Elements are automatically formatted tables created from raw, unformatted data. A plain text separated by tabulator characters into columns and by carriage returns into rows can be used to define the table. Furthermore, a certain set of options may be used to modify the default formatting of the table. Clicking on a table element using MM opens an viewer such that the table contents can be edited. Tables may contain arbitrary text elements, including tables. However, elements incorporated into a table are frozen as is, i.e. messages broadcasted to all visible elements in a text frame are not passed to elements nested into a table. Hence, only static elements should be inserted into tables. Starting from a defining text containing arbitrary strings separated by tabulator and carriage-return characters, a table is constructed. Tabulators separate columns, carriage-returns separate rows. The separated strings form the contents of table cells. Each such string may in turn contain arbitrary text elements and especially it may contain nested tables. The defining text is bound to a table element and can be edited by clicking on a table with the middle mouse button. In return, a standard text viewer is opened containing an update command in its menu bar. The syntax of the defining text is as follows, table options will be defined later. table = {option} "/table" {line}. line = cell {TAB cell} CR. cell = ["#" | "&"] . A string starting with a digit, a period (.), or a sign (+ or -) is considered numeric, otherwise it is considered nonnumeric. A number sign (#) prefixing a string is suppressed and enforces numerical interpretation; likewise, an ampersand (&) prefixing a string is suppressed and enforces nonnumerical interpretation. The default table formatting causes all cells in the first column to be formatted left flush. In all other columns, the default format for numeric cells is period-aligned and that for nonnumeric cells is centered. All cells in a row are by default aligned to a common base line. Also, the default format causes the table to be framed and separating lines between rows and columns to be drawn. Finally, for a table with more than two rows or two columns the first row or column separatation line is drawn using two parallel lines, respectively. Most of the default formats can be changed using the provided option set. For table elements the printing dilemma discussed in section 1.5 needs to be reconsidered. Following the strategy developed for texts, a table would be recasted when printing. However, one of the primary attributes of a table are its measures, i.e. the space taken for individual cells of the table and the arrangement of the cells with respect to each other. It is not acceptable that a table gets completely redimensioned when printed. Hence, for table elements a different printing strategy has been choosen: the displayed table on the screen follows - down to the character level - the metrics of the printer fonts. The resulting screen image looks a bit distorted, however, the displayed measures correspond as closely as possible to the printed ones. The following table gives an overview over available table formatting options.  option effect (measures in 1/10 mm) argument values                    *) A parc at the beginning of the table defining text introduces a minimal cell height as well as a cell height grid (if the grid option of the parc is set) Overview of TableElems Options command explicit parameters implicit parameters TableElems.Insert ["^" | name] caret Insert a table defined by the given text at the caret position. If no defining file is given, or the table definition is syntactically erroneous, an empty table is inserted. TableElems.Update (to be called from menu frame) Take the viewer's content frame's text as defining text and update the associated table element.