Welcome to GUISpell-1.0 by Loren J. Rittle (l-rittle@uiuc.edu). [Warning: you must have AmigaOS release 2.04 (with ARexx running) to use GUISpell. This program makes use of many 2.04 features and there will never be a version of GUISpell that works with pre-2.04.] GUISpell is a graphical front end to ISpell-3.1ljr (or later) [with ARexx server mode/port added by yours truly] or to any spelling checker that adheres to the standard ``Spell Checker ARexx Interface'' as first described in ISpell documentation and more recently in a UseNet message posted by myself on `Mon, 23 Mar 92 10:32:37 GMT' to comp.sys.amiga.applications (see file, entitled UseNet_posts, which contains the three messages I posted to UseNet on the subject). [This free version of GUISpell, as distributed, only works with ISpell-3.1ljr (or later). Since this is the only spelling checker that adheres to the standard ``Spell Checker ARexx Interface'' at this time, this is no great restriction. The full release doesn't have this restriction.] Let's get the nasty legal stuff out of the way first (PLEASE READ IT FOR YOUR SAKE, ESP. IF YOU DECIDE TO USE GUISpell): This is the initial public release of GUISpell (known before, during and after beta testing as IGadSpell. Sorry Chris, but the name of the ARexx port changed from 'IGadSpell' to 'GUISpell'). This software package is Copyright © 1991, 1992 Loren J. Rittle (l-rittle@uiuc.edu) and may only be used as licensed by the author and copyright holder, Loren J. Rittle. Please read the license statement carefully, I don't want anyone getting into legal trouble: [Although this package works closely with ISpell (or some other spell checker backend) via ARexx, it is a completely separate product with a different original author and different use license.] This work is Copyright © 1991, 1992 Loren J. Rittle (l-rittle@uiuc.edu) This software may be freely distributed and redistributed, non-commercially for non-commercial purposes, provided this notice is included. You have the right to use the information contained within this document/program in any way that you see fit, as long as you quote this as the source of the information (e.g. you have the right to study the code to GUISpell and see how I do clipboard hooks and copy the method or a small bit of code into your own project, but you must state that ideas/code snip was taken from GUISpell). With this free version of GUISpell, you *don't* have the right to change and/or recompile the program from the included source code. You have the right to run the included binary. All other rights, most notably commercial ones, are reserved by the author. Of main importance, note that the right to modify this package in any way and redistribute is reserved by the author (this will be the only freely redistributable version of GUISpell. I know this version of GUISpell is limited in some ways, but this restriction is in place so I can recoup my development costs by selling enhanced versions, but yet allow the source code to be useful to other people/developers). Contact the author for other licensing agreements, the full non-freely redistributable release as described below and for inclusion into any commercial package (I'm all for the idea :-) at: Internet EMail (preferred for initial contact): l-rittle@uiuc.edu Snail Mail (extra slow because I don't really live here): Loren J. Rittle 1008 Landing Rd. Naperville, IL 60540 DISCLAIMER: This software is provided 'as-is', without warranty of any kind, either expressed or implied. In no event will I, Loren J. Rittle, be liable for direct, indirect, incidental or consequential damages or data loss resulting from the use or application of this software. The entire risk as to the results and performance of this software is assumed by you." This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. There, how's that for legal mush? Just trying to cover my... Special thanks to Mike Schwartz (mykes@amiga0.sf-bay.org) for his PD GadTools Example that was posted to alt.sources.amiga on `11 Nov 91 12:14:43 PST'. Thanks so much Mike, your example inspired me to write this! I also wish to thank Chris A. Wichura (caw@miroc.chi.il.us) for being a beta tester and for writing some TurboText macros that play with ISpell and GUISpell. Thanks to Eddy Carroll for Small.a (I now use cres.o, but thanks). Thanks to Michael Jansson for smallIFFparse (a sub-set of IFFparse that is Freely Redistributable) and sample code. Thanks to Radical Eye Software for MinRexx (which is used almost unchanged in ISpell and with some modification to allow an application to send ARexx commands and receive string responses in GUISpell). Thanks finally to people who worked on the Amiga port of ISpell before I received it and added the ARexx Server Mode: Luis Soltero Tomas Rokicki of Radical Eye Software This is the first and only scheduled public release (but believed to be quite stable). If you like (or at least use) this free version of GUISpell, please send [e]mail to me so I can keep track of the number of people interested in ISpell and GUISpell related software. The [e]mail address you use will be kept and when I announce the full version of the software, I'll mail you at that address with details. Please send information about any programs (or the actual macros) you have made or make to interface with this package: ISpell and GUISpell (if you look at the examples that I provide, you will note that requests to 'IRexxSpell' and 'GUISpell' are intertwined --- it is now assumed that if you have ISpell, you will also have GUISpell). Please give yourself credit in the macros' header comment. Currently I have ISpell/GUISpell interfaces for the following programs: - CED (3 different sets now! * 1 for pre v 2.12 - just ISpell * 1 for v 2.12 - just ISpell * 1 for v 2.12 - GUISpell w/ ISpell), - mg, - TurboText (both * plain ISpell and * GUISpell w/ ISpell), - CLI/WShell, - idea for a VLT interface using the keystroke trapper (not done yet), - rough set for ProVector, - GUISpell by itself. I have heard of a set of macros that play with ProWrite. I would like them, so I can include them in this package. As I updated some of the macros I use with ISpell when I got 2.04 (because they had some filenaming problems), I will include them in this package. Look in rexx/ for GUISpell/ISpell macros. Currently, GUISpell makes no attempt to fire up ISpell, thus you must make sure that it is up and running before GUISpell tries to request ISpell services. If you forget to start ISpell, currently the screen will flash when GUISpell tries to send ISpell a message. You may start up ISpell and retry the GUISpell operation, no harm done... This issue is being looked into and is to be addressed in the full release. This is a rough manual to GUISpell: GUISpell - The GUI: These are brief notes to get you going, play around a bit. [This public release of GUISpell only supports public screens as follows: first try to open on CED's screen if available, else try to open on WorkBench screen. Other releases will support public screens in a general way and allow public screen jumping, etc., but you will have to buy that version.] [This public release of GUISpell only supports the plain ISpell program's ARexx port. The full release supports general spell checking programs that adhere to the `Spell Checker ARexx Interface' and International ISpell ARexx port.] Lookup Style- Spell: uses address 'IRexxSpell' check to generate a list of replacement words in the list view area when a `check' is requested (see below). Reg exp: uses address 'IRexxSpell' lookup ... Exact: uses address 'IRexxSpell' quickcheck ... Auto-Clip- [If turned on] Turns on the clipboard hooks! When another application places text IFF data into the clipboard, GUISpell will take the new data from the clipboard and place it into the user text area. The new data is then checked with the currently selected Lookup Style. There is a discriminator filter that will not latch new data if it looks like more than one word. In cases that are discriminated against, the user must manually invoke the `from clip' operation by hitting the From Clip button. This mode works great with Snap's ability to snap a word into the clipboard. Likewise, when the user selects a replacement word from the list view area, the word is transferred to the clipboard. Add button- Adds the current word in the user text area to the personal dictionary, using the address 'IRexxSpell' add ... command of ISpell. [If no personal dictionary was found at startup time, then one is created by ISpell. Consult ISpell documentation, as I think that there may be some differences based upon version. The version I currently use likes to create and find the personal dictionary in the directory pointed to by env:HOME and then in S: (if env:HOME is not set).] User text area- There are many ways that this field can be set. The most direct way is for the user to click inside the field and type new data. Standard Amiga-Q/Amiga-X handling is performed. Hitting return while the text cursor is anywhere in the field will start a spell check with the currently set Lookup Style. Do button- Alternate way to start a spell check with the currently set Lookup Style. From Clip button- The manual way to get data from the clipboard. The new data is then checked with the current Lookup Style. There is a discriminator filter that will not *check* (note how this is different from the discriminator on the auto-clip action) new data if it looks like more than one word. In cases that are discriminated against, the user must manually invoke the `Do' operation by hitting the Do button. To Clip button- The manual way to put data into the clipboard. The current text in the user text area is transferred to the clipboard. List View area- The user can view available replacement words after a check is completed by using the available scoll bar. If a word is clicked upon, then it is transferred to the user text area (a REXX call back and an auto-clip action may take place also). This area can be hidden from view with the ZOOM gadget. It is restored in the same manner as hiding, another click on the ZOOM gadget. The first entry in the list view is a solo character form the table below (OR "yes" or "no", if in exact mode): [This is a temp kludge. See future issues below. -Loren] [Excerpt taken from man/ispell.1:] If the word was found in the main dictionary, or your personal dictionary, then the line contains only a '*'. If the word was found through suffix removal, then the line contains a '+', a space, and the root word. If the word is not in the dictionary, but there are near misses, then the line contains an '&', a space, and a list of the near misses separated by spaces. Also, each near miss is capitalized the same as the input word if unless such capitalization is illegal; in the latter case each near miss is capitalized correctly according to the dictionary. Finally, if the word neither appears in the dictionary, and there are no near misses, then the line contains only a '#'. This mode is also suitable for interactive use when you want to figure out the spelling of a single word. GUISpell - The ARexx interface: [This public release of GUISpell only supports one ARexx port name. The name of the port is 'GUISpell'.] CHECK Inserts into the user's edit window and initiates an async spell check upon the word. The list view is updated once the request has been satisfied by ISpell. Returns the string, "ok". NOTE: Returns right after initiating the spell request. GUISpell doesn't wait for the return from ISpell. Use the IRexxSpell interface if you want to directly spell check a word. Currently, the lookup style is always `Spell' (even if the user has set some other mode via the GUI). CURRENTTEXT Returns, in string form, the current user selected text (i.e. the text in the user's edit window). CHECKCALLBACKHOOK If a check call back hook is not already present, this ARexx message causes GUISpell to install a call back hook that is activated ONCE AND ONLY ONCE when a user clicks on a replacement word. Returns the string "installed" or "notinstalled" depending upon if a hook could be installed. NOTE: Currently, the rexx call back with parameters should be less than 512 bytes of data. If a request to install a call back with more than 512 bytes of data is found, it will fail with a "notinstalled" return. VERSION A short version string is returned with a list of all supported ARexx commands. EXIT Causes GUISpell to terminate after replying to the request. Returns the string "bye". WARNING: I did find a nasty bug in Snap 1.61 that *will* cause a system crash if the IFF text in the clipboard has an ANNO chunk after the the data chunk! Mail has been sent to Snap's author, but after a month, I still haven't heard a reply. Surprisingly, ASDG's cb2rx has a problem (not a crash inducing error) with ANNO chunks in IFF text also! Needless to say, I don't put ANNO chunks in the IFF files anymore. Features in the full non-freely redistributable release (that isn't quite done yet): Ability to specify which public screen to open on at startup time. Move (jump) between public screens via ARexx and GUI. Support for more than one GUISpell being open (ARexx port stuff fails currently in the free public release) and ability to name the ARexx port GUISpell should use. Ability to specify name of backend spell server's ARexx port to connect to a startup time and dynamically via GUI and ARexx. Ability to start a backend spell server via GUI. Support for user specified window/zoom coordinates. More power exposed to ARexx interface. True `hide window' state (ARexx or commodity HotKey brings back) in addition to `zoom window'. Fix of the List View Solo Character on First Line kludge. That is, the list view is only used to list replacement words and the result of a spell check is displayed in another (cleaner) manner. Support, I won't answer any [e]mail related to GUISpell unless you are registers. Bug fixes will be as fast as I can make them if you are registered. Full source included as in this version. Unlike this free public version, you will have the right to make changes (that may be passed around to other registered users of GUISpell if you like). I believe in full source disclosure (ah, the one thing about GNU software that I really like). If you use ISpell, please give this beast a work out. Feel free to tell me what you like and hate about the implementation (proposed and actual). New feature ideas will be welcomed. FINAL DISCLAIMER: I am under no obligation to provide support or reply [e]mail on anything you [e]mail me related to this free public release of GUISpell OR to provide the above mentioned full non-freely redistributable version of GUISpell. I'm somewhat of a softy and will most likely answer your [e]mail and I have every intention of finishing the full release soon, but one never knows what might come up. Regards and thanks for reading this document, Loren J. Rittle l-rittle@uiuc.edu Wed Mar 25 22:19:59 1992