'Liner Version 2.00 --------------------------------------------------------------------------- 'Liner V2.00 is copyright ©1988, 1989, 1990 by Dave Schreiber. All rights reserved. YAFR V1.21 is also copyright ©1989 by Dave Schreiber. All rights reserved. 'Liner may be freely distributed as long as the following terms are observed: 1. 'Liner is distributed without cost, except for the cost of media, copying, shipping, labels, and any applicable taxes. 2. All copyright messages in 'Liner, its source code, and its documentation are not changed. 3. If you use code from 'Liner in other programs, please note this along with 'Liner's copyright message in the documentation and/or source code. After long deliberation, I've decided to make 'Liner shareware. If you use 'Liner, I donation of $10 would be greatly appreciated, as well as acting as a motivator for me to enhance the program (see the end of this file for ideas I have for future improvements). My address is below, and I encourage you to send in suggestions, bug reports, etc. even if you don't send in an donation. Thanks. I also request that if you distribuate 'Liner, you keep the source code with the executable program. I'd like to give special thanks to Chad Netzer, who has tolerated being a beta-tester for 'Liner V2.00 for a long time. His thoroughness has insured that almost all of 'Liner bugs have been exterminated. I appreciate his work very much. Once upon a time I tried writing a long outline with a word processor. It was also the last time. I wrote 'Liner so I could leave the mundane parts of writing an outline to the computer. In essence, what 'Liner does is to let you type into an outline form, allowing you rearrange blocks of text without having to renumber everything. It has most of the features of commercial outliners, although it is missing a few, like the ability to 'collapse' an outline. It also has a few features that I haven't seen on commercial outliners, such as an ARexx port. Before starting 'Liner, you should assign liner: to the directory that you have placed 'Liner into. The preferences for 'Liner will also be stored in that directory. Once that's done, the program can be started from either Workbench or the CLI. From Workbench, double click on the icon, or double click on the icon of an outline that you wish to work on. From the CLI, type either: 1> RUN 'LINER or just: 1> 'LINER Once you get in 'Liner, and assuming you haven't double clicked on an outline's icon, you are presented with a I.: this is the first line of a new outline. You can either load an old outline (see below) or start typing a new one. I've included a sample outline for you to practice on, called Sample_Outline. If you double clicked on an outline's icon, you can go straight to editing, as the old outline will have already been loaded. Editing a document once you typed it in is fairly straightforward. The arrows keys work normally when used by themselves, and you can also position the cursor by pointing with the pointer and pressing the left mouse button. Shift-left-arrow and shift-right-arrow move the cursor a word at a time, instead of a letter at a time. Shift-up-arrow moves up one screenful of text, while shift-down-arrow moves down the same amount. Control-left-arrow and control-right-arrow move the cursor to the beginning and end of a line, respectively. Control-up-arrow moves to the top of the documents, and control-down-arrow moves to the end. The TAB key controls what level the current line of text is in. For example, type a line and press TAB. The line moves in and the number or letter in front of it changes. For example: I. This is a test would turn into: A. This is a test Shift-TAB has the opposite effect. Performing operations on blocks of text requires that you highlight the text you want to manipulate. There are two forms of highlighting in 'Liner: character and line. Character highlighting involves highlighting individual characters on one line only. To do it left to right, double click on the first character you want to highlight, then double click on the character after the last character you want to highlight. To do it the other way, just double click on the first and last character. Once you have highlighted your text, you can replace it with other text (just start typing), cut, copy, and delete it (see the Edit menu description below, or press backspace or DEL). Line highlighting is similar to character highlighting: for both directions double click on the first and last lines. There are several things you can do with a highlighted block of lines: you can shift the entire block of text in and out with TAB and the SHIFT-TAB combination, you can delete a block of lines by pressing the backspace key, and you can cut and paste (again, see the Edit menu instructions below). Version 2.00 of 'Liner now supports something version 1.32 didn't: multiple lines per number. If you are typing in some text and you reach the end of the line, press SHIFT-RETURN to get another line, known as a "continuation." A continuation is the same as a regular line, except that it has no number before it, and is "attached" to the regular line above it; in effect, a parent and its continuations act as a single unit. If you TAB a parent line in or out, to change its level, its continuation lines will also be TAB'd in or out. You cannot break apart a block of continuation lines with a regular line (you can have as many continuations attached to a regular line, as you wish). If you highlight a block of continuation lines and CUT them, the lines highlighted are deleted, but all the continuation lines in that block are put into the clipboard (this is to prevent being able to paste continuation lines without a parent to control their attributes). Trying to delete a parent without deleting its children at the same time isn't allowed. COPYing continuation lines will also include the entire block. 'Liner uses five menus. The first, 'Project', holds what you'd expect it to: 'New', 'Open', 'Save', 'Save As', 'Print', 'About', and 'Quit'. Functions that could result in a loss of data ('New', 'Open', and 'Quit') ask for confirmation before performing their function (they will not ask, however, if the outline hasn't been changed since it was last saved. Note that you can tell if an outline has been changed by looking at the title bar: an asterisk will appear if the file has been changed, and will dissappear when the outline is saved). (Now is a good time to note that the file format of 2.00 is different than that of 1.32. The addition of continuations made it a necessity; I also took the opportunity to make the format more compact. In any case, 'Liner 2.00 can read both 1.32 and 2.00 files, but writes in the 2.00 format only (so someone with 1.32 couldn't read a file saved with 2.00)). Of all of the 'Project' menu's items, the 'Print' item is the only one that could be ambiguous. It has two sub-items that let you chose where you want the printout to go. 'To Printer' sends it, naturally, to the printer (the number of lines per page is equal to the value in the 'Length' variable in Preferences, minus one. 'To Disk' saves it as an ASCII file (please note, however, that 'Liner cannot read in ASCII files and convert them into outlines). The next menu is Edit, which is again fairly standard. 'Cut', 'Copy', 'Paste', and 'Erase' do exactly what their names imply. However, their operation depends slightly on what is being manipulated. With text on just one line, when it's cut, it's put in the Clipboard (pause, while the whole Amiga community gasps in shock and surprise...yes, that's right, the Clipboard). What this means is that 'Liner can share text with any other application that supports the Clipboard, such as NotePad. Of course, hardly any programs support the Clipboard, but the text had to go somewhere and the Clipboard seemed the best place to put it. (however the clipboard is not used when a number of lines is pasted (although an ASCII copy of the CUT or COPYed lines is stored in the clipboard)). When 'Paste' is selected, what is pasted is whatever was last cut, i.e. if a number of lines were cut, they'll be pasted back in again, but if text on one line is cut or copied, whatever is in the Clipboard will be pasted into the outline ('Liner defaults to text and not line pastes on startup). The next menu is the 'Search' menu. The first item, 'Search/Replace', controls the searching and replacing capabilities of 'Liner. When selected, a requestor pops up that let you enter the search string and the string to replace it with. It also lets you select whether the search will be case sensitive, whether the search string can be embedded in another word, and whether or not a replace is performed. Once finished, clicking on OK does the search. Clicking on Cancel cancels the search and replaces what was entered in the requestor with what was there before the requestor was brought up (the close gadget has the same effect as Cancel). Wait cancels the search as well, but keeps the new information entered in the requestor. There are two other items in the 'Search' menu. 'Next' searches for (and replaces if that was selected) the next instance of the search string. 'Replace All' does a global search/replace, either with verification before doing the replace (where you can chose to go ahead, skip that occurance, or cancel altogether), or without verification. The Prefs menu contains a number of items that let you control various aspects of 'Liner and your document. 'Double spacing' switches between, surprise, single and double spacing (a check appears next to this item when double spacing is selected). 'Interlace" lets you choose between an interlaced and non-interlaced display. 'Icons', when selected, tells 'Liner to create an associated icon whenever it saves an outline and when it saves the preferences. When not selected, no icons are created. 'Starting Level' determines which symbols are used on what level. For example, on the default setting of "I.", the first level uses Roman numerals, then capital letters, etc. all the way down to small letters with parenthesis. If you were to choose "1.", it would go 1. a. 1) a) I. A. instead of I. A. 1. a. 1) a). This is to let you do things like lists or top-down designs where the information should be numbered with Arabic numerals or start with some other symbol. The next two items control the remaining aspects of the display. 'Screen colors' lets you adjust the colors of the screen (a gadget marked 'Reset' will undo any color changes you make before you close the color selection window). 'Screen size' is used to determine whether or not the screen will be overscanned: if 'Standard' is selected, the screen display will be 640x200 or 640x400 (depending on the 'Interlace' menu item). If 'Workbench' is selected, the screen will be as tall as your Workbench screen, so those of you with overscanned Workbenches can have an overscanned 'Liner display as well. 'Define Macros' I will skip for the time being and move on to the last two items. 'Load prefs' loads the preferences for 'Liner off the disk; its useful for when you've made a bunch of preferences changes to 'Liner and want to undo them all. 'Save Prefs' saves the current 'Liner settings (which includes the directories used when you last SAVEed or OPENed a document, and when you last printed a document to disk) to the file liner:liner.prefs, which is read upon startup in order to set the default 'Liner preferences. The final 2.00 feature I've included is a two-way ARexx port. A list of the 'Liner ARexx commands, along with descriptions and usage guidelines, can be found in the file ARexx_Commands. There are also example scripts that can help you get a feel for using ARexx with 'Liner. Not only can 'Liner ARexx macros be run from the CLI; they can be run from within 'Liner itself. Up to four macros can be assigned to the items under the menu 'ARexx'; they and the names they go under in the ARexx menu are defined using the 'Define Macros' item under the 'Prefs' menu. Finally, as a last note, I should explain the file requestor that is used by 'Liner. It's called YAFR (for Yet Another File Requestor) and was written by me partially as an excercise, partially because I wanted a Charlie Heath style file requestor (i.e. one that didn't make you wait until it had read all of the directory before letting you make a selection) but couldn't figure out how to put the ARP one or any of the others into 'Liner. It has a list of 11 buttons that list the first ten AmigaDOS volume devices plus the PIPE: device that came with 1.3 (although it knows not to try and get a directory from that). The list displays only what you have; buttons for floppy drives disappear when the floppy is removed from that drive and reappear when a floppy is inserted. There is a button that lets you choose whether or not to display .info files (I'll let you guess which one). The default is not to show them. Finally, If you want to display only files that conform to a specific file pattern, there is a box for that. Now that I've explained the operation of the program, it's time for a little more technical stuff. 'Liner was compiled with Lattice C V5.04; most of the source is included. The source that isn't included is: minrexx.o (part of Tomas Rockiki's minrexx distribution), minrexx.h (also part of the minrexx package), rexxglue.o (on the commercial ARexx disk itself), and YAFR.c (part of a separate distribution called YAFR 1.21, which is already out there and should be appearing on Fred Fish and elsewhere in the near future). Everything else is present. To compile, assign linersrc: to the directory 'Liner is in, CD to that directory, and run lmk; the Makefile will take care of everything. If you want to do it the hard way, compile all the .c files and blink them using liner.lnk. Finally, I'd like to outline (!) my future plans for 'Liner. I'm expecting to release a version 2.10 by the end of the year that will have bug fixes and support for Workbench/Kickstart 2.0 features (such as the WB 2.0 file requestor, color requestor and productivity mode). It will probably _require_ WB/KS 2.0. In the far future, I'm hoping to add support for multiple simultaneous outlines, better highlighting, a less kludgy method of multiple-line support, and a scroll bar. Do you have any suggestions? My address is below. That's it! If you have any questions, comments, bug reports especially, I can be reached at: Usenet: davids@slugmail.ucsc.edu US Mail: Dave Schreiber 1234 Collins Lane San Jose, CA 95129-4208 (during the summer, but mail that comes to that address will be forwarded to me if I'm at school).