Freedom v1.15e 5th November 1995 =========================================================================== Freedom 'to choose...' (c) 1995 by Christian Krger and Kolja Koischwitz EnhancedGEM 2.25 (c) 1995 by Christian Grunenberg XIMG decoder (c) by Dirk Haun English translation by Joe Connor RTF layout and additional revisions by Tom Thomason Overview ======== Multitasking is the future for Atari software. To survive into this era software has to adapt. Most experienced programmers have already implemented dialogs, the time for flying dialogues has flown! Only two relics remain from this bygone age, the file selector and alert boxes. There's no way to bypass these system blocking relics, at least there wasn't until Freedom arrived and set your applications free! The unbelievable feature list ----------------------------- - At least 8 non-modal file selectors at the same time! - Parallel processing capability! - Freedom alert boxes can optionally be displayed in windows - Any program which supports the VA_START protocol or has a menu bar is no longer blocked! - Long filename support - User definable font and size - Drag&drop font protocol support - Keyboard layout 99% Selectric compatible - Multiple file selection (naturally Selectric compatible) - Up to 40 user definable filenames, paths and extensions - History Popup to select from last 200 selected files - The ultimate in intuitive interface design using Enhanced GEM featuring Short paths, minimal clicks, shortcuts and popups - Left handed mode! - Unix masks (*,?,[]) and extension lists (*.TOS,*.PRG) - Icons representing files/folders - Drag&drop support (paths and files and be dragged to the file selector (AV, MultiTOS, Drag&drop) and vice versa) - Messages concerning directory changes evaluated using SH_WDRAW, AV_PATH_UPDATE, SC_CHANGED - Fuzzy file location! Freedom tries everything possible to ascertain a reasonable application name even under single TOS. Freedom looks for XAcc, AV and even Menutitle0 if the string looks promising (not the Atari symbol or Desk). - File delete, new file/folder creation and file/folder info - Search using mask to select or deselect files - Export paths or selected files as ASCII listing to the Clipboard - Full communication with available AV Server (e.g. Thing/Gemini/no!Desk) - File delete/copy/move via Drag&drop or the Clipboard. Kobold is automatically used if loaded in memory or available via the environmental variable KOBOLD_PATH under a multitasking OS. Reasons to use Freedom - A checklist - You use a multitasking OS - You like using superb software which pushes GEM to the limit - You can't resist the feature list! - You have a Flydial, file selector or alert open and: ... Your comms application rings ... Your comms application reports an up/download error ... You want to run your GEM ray tracer ... You want to use your GEM packer ... Your window clock stops ... You press F1 and your beloved Kobold doesn't appear ... Your MagiC popups are no longer accessible ... You can't access the menu bar ... Your screenshot program can't take any more pictures ... etc, etc. Add the problems caused by system modal dialogs ('Flydials') together with programs which don't offer long filename support and it's time to ditch them and see what Freedom has to offer! Installation ============ - Add FFSEL.PRG to your Auto folder - Or optionally use FFSELR.PRG instead - Or skip this step - Rename FREEDOM.APP to FREEDOM.ACC to install Freedom as an accessory under single TOS - Or use a Chameleon to un/load Freedom as desired - Under MagiC/MiNT FREEDOM.APP can be started as desired. (Under MagiC from the APPS folder or under MiNT in GEM.CNF) If you're short of memory there's another option as long as your computer and hard disk are fast enough. Create a file called FFSEL.INF which contains the path to FREEDOM.APP (including the filename) and add it to your AUTO folder alongside FFSEL.PRG for example: C:\FREEDOM\FREEDOM.APP Using this method the main program FREEDOM.APP is not memory resident but loaded into memory as required. After a period of inactivity (defined in FREEDOM.CNF using the #SHUTDOWN parameter) FREEDOM.APP can also be automatically unloaded from memory. Loading Freedom in and out of memory isn't a problem under a multitasking OS. Under single TOS we recommend you install Freedom memory resident BUT it is possible to use Chameleon, the accessory loader programmed by Karsten Isakovic. For those determined to ignore our advice a patched version of Chameleon is included (with Karsten's permission)) in this distribution. This has been patched so that: 1) On reloading an accessory an AC_OPEN isn't automatically sent. 2) The comprehensive crash using appl_find('?AGI') is rectified. For some strange reason there are a few users who wish to eradicate all their free memory by running Freedom AND Selectric! This is now possible using the program KILLFSEL which deletes the Selectric cookie jar entry. If, during installation, FFSEL finds a FSEL Cookie less than v2.0 it replaces this with a pointer to it's own structure. If your luck holds, Freedom appears with all clean programs leaving Selectric to clean up the rest (including the 'Start program...' entry in the MagiC popup. FFSELR.PRG is offered as an alternative to FFSEL.PRG and handles redraw messages by filling the application windows with the Freedom logo. When the application regains control it can restore its windows. This method is less compatible than the new version but on slower computers saves a few superfluous redraws, it's also a few Kilobytes larger. If you'd don't like the fill pattern you can change it using a program written by Andrew Mayer. The choice is yours! How Freedom works ================== Freedom consists of two parts: - A file selector/alert box 'server' (FREEDOM.APP) which runs as a parallel application or accessory and waits to be activated by calls via the defined interface (usually AES messages). The number of file selectors and alert boxes which can be opened is only limited by available memory and window handles. The server reports itself on starting using the XAcc Protocol and installs the extended XAcc Names 'XFileSelect\0XFontAck'. - A resident part FFSEL.PRG. Applications which call the file selector or an alert box send an appropriate request to the server which (if necessary) starts itself in parallel and waits in an event loop for a reply from the server. Inside the event loop various other messages are handled simultaneously (Window redraw, move, size, top, send to back etc) as long as the alerts/file selectors are active and the menu bar of the calling program is dis/re-enabled. By cunning programming this part is up to 8 times re-entrant which means up to 8 different applications, alerts or file selectors may be open before the trap handler ignores any further calls and passes an alert to the system. This part also handles conversion of the reply from Freedom using one of the three Selectric protocols. This does however present a problem. Because only a single Selectric cookie is passed, it's possible another application(s) could try to communicate simultaneously. To minimise this risk the resident FFSEL sits on messages for applications and passes them on later. The following are specifically 'swallowed': (AC_CLOSE) ; Sadly, due to problems with Chameleon. AC_OPEN MN_SELECTED WM_CLOSED WM_FULLED WM_ARROWED WM_HSLID WM_VSLID WM_SIZED WM_UNTOPPED WM_TOPPED WM_ONTOP WM_NEWTOP WM_ICONIFY WM_UNICONIFY WM_BOTTOMED VA_START VA_STARTED VA_DRAGACCWIND AV_SENDKEY ; AV server should be the Freedom Protocol AV_STARTPROG ; supported, if it's a file selector AV_OPENWIND ; call AV_OPENCONSOLE AP_DRAGDROP ; answered with DD_NAK WM_REDRAW ; passed once (maximum) for each window sent by WM_MOVED ; an application. Operation ========= Although the Freedom interface is primarily designed to take advantage of the latest enhanced GEM tools to offer the ultimate in point and click simplicity we haven't forgotten users who prefer to navigate menus using keyboard shortcuts. Changing drives - using the mouse Keyboard shortcut ----------------------------------------------------------------------- Click on the drive letter section of the path [Control]+L and a popup containing the available drives Displays the popup is displayed. Alternative: [Alternate]+Drive letter Changes to drive Changing the file extender - using the mouse Keyboard shortcut ----------------------------------------------------------------------- Click on the file extender section of the path using: .. Left click: Directory specific masks [Control]+Y +[Shift] if files selected .. Right click: User defined masks [Control]+X +[Shift] if files selected .. Left double click: Dialog to enter mask [Control]+E .. Right double click: Pseudo File type masks Alternative: [Control]+Number pad 1-0 Selects from the first 10 defined masks. [Shift]+[Control]+ Number pad 1-0 selects masks 11-20. [Control]+Number pad . selects the default mask [Control]+Number pad * sets mask to *.* Change directory level - using the mouse Keyboard shortcut ----------------------------------------------------------------------- Left click on the directory section of the path using: .. Directory: popup with alternative folders is displayed. .. Slash '\': The path is 'truncated' at [Control]+1-0 steps the level selected. This 1-10 levels up feature is similar to the 'Mac-Path' concept. .. last '\': All directories at this level are displayed in a popup. Left click on the Closer (icon to left of [Control]+[Backspace] or path) to move up a directory level. [Control]+[Undo] Right or double click to return to the root [Shift]+[Control]+ directory [Backspace] or Direct single or double click on a folder Move to folder using the in the directory window changes to the scroll arrows then press folder. either the [Return] or Default: Double click needed to open folder [Enter] key Double left click or single right click on [Control]+P the path on or before the last backslash Alternative: to display the user defined path popup. [Alternate]+1-0 selects from the first 10 user defined paths. [Alternate]+[Esc] selects the default path. [Shift]+[Alternate]+1-0 selects user defined paths between 11-20. Save current status in Clipboard. [Control]+C Set current status from Clipboard. [Shift]+[Control]+V De/select files - using the mouse Keyboard shortcut ----------------------------------------------------------------------- To select any file use a single left click. Left click and hold the button down then drag to select consecutive files. The directory window automatically scrolls in the appropriate direction as the upper or lower edge of the window is reached. Note! If you don't start the drag action quickly enough the pointer changes to the hand Drag&Drop icon. The time delay before the cursor changes is user definable. To select two or more files which are not adjacent to each other, hold down either [Shift] key and select them in turn. To deselect a selected file select it again whilst holding down either [Shift] key. To de/select all files left click on the [Control]+A fuller icon to the right of the path in the directory window title bar. To invert the selected files right click on [Shift]+[Control]+A the fuller icon. To select files using a mask double click on [Control]+S the fuller icon and a 'Select files' dialog appears ready to enter your desired mask. On exiting the dialog using the 'OK' button all matching files are selected. To deselect files using a mask double right [Shift]+[Control]+S mouse click on the fullericon to display the 'Deselect files' dialog. A popup containing the pre-defined files is [Control]+M or called by right clicking on 'File:' text to the left of the editable field. A left click displays the 'History' popup [Control]+< which contains the last 200 files selected. Selecting file/s with either of these two Popups automatically closes the Freedom and passes the file/s to the calling application. This behaviour can be inhibited by holding the [Shift] key down during selection. Using the arrow keys the selected file can be changed using the selection bar like a cursor. To scroll the directory window a page at a time hold down the [Shift] key. To select the first/last entry press [ClrHome] /[Shift]+[ClrHome] or [Control]+Cursor up/ [Control]+Cursor down. Freedom can also be configured so a right click in the directory window is interpreted as a [Shift]+left click action. Copy complete path (with mask) to Clipboard [Control]+C Collect path (with mask) from Clipboard [Control]+V File scrolling - using the mouse Keyboard shortcut ----------------------------------------------------------------------- The simplest method is a left click and hold See above action to scroll through the files. The [Control]+Cursor up slider works just like a standard GEM slider [Control]+Cursor down only better because of 'real time' scrolling. If the #RSCROLL option in the configuration file is active a single right mouse click anywhere inside the directory window activates 'Dynamic scrolling' (As used in the 'Thing' alternative desktop') Changing the Sort method - using the mouse Keyboard shortcut ----------------------------------------------------------------------- Right or double click on the slider button [Control]+J to open the sort popup (locating the sort Alternatives: popup on the slider button means it's always [Control]+H: By name handy when you need it). [Control]+Z: By date [Control]+G: By size [Control]+T: By ending [Control]+K: No sort [Control]+R: Reverse File type sorting can additionally be applied by activating the 'Type' option and can only be activated using this popup. Drag & drop - using the mouse Keyboard shortcut ----------------------------------------------------------------------- A left mouse click and hold over a selected [Alternate]+Arrow keys file (or combination of selected to manoeuvre the mouse files/folders) changes the mouse pointer to pointer over the the hand icon and surrounds the selected selected objects, then objects with a ghosted frame. [Alternate]+[Insert] to These objects can now be dragged to other 'grab' the objects. applications, eg a desktop, depending on your Now the objects can be system. The Info line along the bottom of the dragged using the directory window reports the likely result of [Alternate]+Arrow keys. releasing the left mouse button. (These shortcuts are built into the OS and nothing to do with Freedom)! If the files are dragged onto a badly programmed application Freedom cannot foresee the outcome. Often nothing at all happens because the window of an AV-Server (Gemini/Thing/Ease or other program) has already requested the destination. Freedom can copy/move objects by Drag&Dropping objects between windows of an AV-Server or other Freedom file selectors. Further (application independent) Freedom [Control]+[Help] or file selectors can be opened by double or [Shift]+[Help] right mouse clicking on the Freedom logo. Freedom functions - using the mouse Keyboard shortcut ----------------------------------------------------------------------- Delete: Select the object/s to be deleted [Control]+D then click on the Wastebaket icon or drag the selected objects to the icon. New object: Click on the folder icon to [Control]+N display the 'New object' dialog. Enter the desired folder/file name to be created and select the desired button to create an empty (zero length) file or folder. Object Information: Select the object/s you would like Information about followed by the desired action. Alternatively you can drag the selected object/s to the icon. .. Left mouse click on the Info icon: [Control]+I (or [Tab]) Displays the 'Object-Information' dialog for each object in turn. For files the dialog displays the file creation date and time, filename, size and status flags (Locked, Hidden, System and Archive). The status flags and filename are editable. For folders the dialog along with the editable folder name. .. General information ('Count files'): [Shift]+[Control]+I After selecting one or more objects right mouse click on the Info icon to display an 'Information' dialog which begins a recursive count then displays the total number of files, folder and bytes. If the count is started in error or takes too long press the [Esc] key to abort the count. .. Drive info ('Count files'): [Shift]+[Control]+I Left or right mouse click on the Info icon without any objects selected to begin a recursive count of all the files on the current drive. A dialog displays the total number of files, folder and bytes. If the count is started in error or takes too long press the [Esc] key to abort the count. .. Touch: [Control]+B The 'Touch' button updates (recursively) the file creation date and time for each selected file. Select the desired object/s then drag them to the New object icon to display the Touch dialog. Export to Clipboard: Select the desired [Control]+C for copy object/s then drag them to, or click on, the [Control]+X for move Clipboard icon. For move operations hold down the [Control] key during the drag action. A file SCRAP.TXT will be created listing the selected paths and filenames, tagged to distinguish between copy and move operations. Import (Copy/move) from Clipboard: [Control]+V The contents of the file SCRAP.TXT is acted upon. Select the destination directory then click on the Clipboard icon or drag the Clipboard icon to the desired location. For move operations hold down the [Control] key during the drag action. Right mouse click on the clipboard to [Shift]+[Control]+V import the path from SCRAP.TXT. Freedom jumps to select any specified object/s. Naturally if SCRAP.TXT contains garbage anything can happen! It's also possible to 'exchange' object/s with a window in the Gemini desktop. Highlight the desired object's in a Gemini window then press [Control]+C to export it to the Clipboard and use [Control]+V to import the paths in Freedom. Unfortunately this currently doesn't work in the other direction due to a faulty Gemini function. Find file: Click on the magnifying glass to [Control]+F display the Object search dialog. Enter a search mask and select whether the current folder, drive or all drives will be searched. If the environmental variable DRIVEMAP is set this is used when search all drives is selected. Click 'OK' to start the search and any keypress [Esc] to abort at any time. If a matching file is found the search is paused and its name is displayed in the wide button beneath the Search line. Four options are available: .. Wide button: The file is passed to the underlying file selector which passes the file to the application and automatically closes Freedom. .. OK: Single left click passes the file to the underlying selector with the matching file selected and entered in the 'File' editable field. A double or right mouse click has the same effect as clicking on the wide button. .. Again: Searches for another matching file. .. Cancel: Close the dialog without action. Freedom normally puts an 'invisible' link between the search dialog which means it's only possible to open one search dialog per file selector. This option offers the possibility of [Shift]+[Control]+F opening multiple search dialogs which can all run even under Single TOS! Don't blame us if your hard disk explodes! Open object: Primarily for multitasking OS Select file/s then press users. A double/right mouse click, whilst [Control]+O holding down either the [Alternate] or [Control] key, on an object/s opens the object/s. i.e. if a viewer is configured to handle a Alternatively a single certain filetype a message is sent with the file can be opened using selected file/s. Freedom also starts the [Control]+[Return] viewer in parallel if it's not already memory resident. Since this isn't very flexible Freedom lets the AV-Server (where possible) handle this because it can also take into account installed applications etc. The One-step auto-locator - an overview --------------------------------------- A certain other file selector offers an Auto-locator but ours is different and we're proud of its functionality! Our 'One-step auto-locator' is similar in operation to the 'Completion' command anyone familiar with command shells should recognise. If the locator is switched off it can be activated by pressing the [Tab] key. There is an apparent conflict with the 'Object info' function which is also assigned to the [Tab] key. To avoid this conflict 'Object info' is also assigned to [Control]+I and the 'One-step auto-locator' is also assigned to [Control]+[Tab]. By default (set in the CNF file) the Freedom locator searches for both files and folders. Holding down the [Shift] key during a search restricts the search to files only. The 'One-step' feature steps through each matching file in turn before looping back to the first match for another cycle, the ultimate in convenience! The Clipboard ------------- The Clipboard, via the file SCRAP.TXT, is used to store the object names and paths for subsequent use. The standard copy, [Control]+C, and move, [Control]+X, keyboard shortcuts are available for exchanging files with the Clipboard . Alternatively, object(s) can be Drag&Dropped onto the Clipboard icon. A single left click on the Clipboard icon changes the pointer to display a hand with the ghosted image of the object/s ready to Drag&Drop onto other applications, editable fields, path fields or the Freedom Trashcan/Info icons or any Freedom file list window (to copy). Copy/move operations can also be completed using the keyboard combination [Control]+V which checks the status of the move/copy flag. Holding down the [Shift] key in addition to [Control]+V causes Freedom to jump to the directory containing the objects listed in SCRAP.TXT and highlight them ready for selection. This makes it easy to return to the original path after a copy/move operation (similar to Selectric). Another useful feature is the ability to 'capture' a formatted file list. Highlight the desired files then double click on the Clipboard icon or press [Shift]+[Control]+V to save the list in SCRAP.TXT. Here's a simple example #NICEFORMAT string in FREEDOM.CNF: #NICEFORMAT Filename: %-F.%-E Size: %11P Bytes And here's the resulting output: Filename: evrst34e.zip Size: 96.472 Bytes Filename: frdm114d.lzh Size: 365.720 Bytes Filename: html093 .lzh Size: 107.119 Bytes Notes! Remember, object(s) are only physically copied/moved when they're Drag&Dropped to another location or pasted using [Control]+V. Warning: DON'T copy files to the Clipboard then delete the originals because all you'll have left is a file list in SCRAP.TXT!!!! SCRAP.TXT itself is vulnerable and is often written to by other applications so it's safest (and sensible) to perform copy/move/paste operations following on from each other then you're unlikely to encounter unexpected data in SCRAP.TXT. For anyone who's interested, Freedom (cheekily :-) sets the file archive bit for SCRAP.TXT when using [Control]+X or [Control]+V. Using [Control]+X the (normally set) archive bit is cleared. It's also possible to drag object(s) even if Freedom is display as a modal dialog. Seven little helpers - the popup menus -------------------------------------- Have you ever noticed how often you're working on the same files? Sometimes days or even weeks at a time! And each time you have to select them using the file selector. With Freedom it doesn't have to be this way! If you're used to using other file selectors which offer user definable paths and extensions you'll know just how useful they are. No doubt you'll also have noticed how quickly you run out of slots! Freedom offers up to 40 full paths and extensions which should be enough for most people! File Popup ---------- A single right mouse click on the word 'File:' preceding the editable file selection field displays the 'File' popup. Simply select the desired file and Freedom automatically closes itself and passes the specified file to the calling application. Up to 40 files can be defined under the #FILES section in FREEDOM.CNF. History Popup ------------- A left mouse click on the word 'File:' preceding the editable file selection field displays the 'History' popup. Simply select the desired file and Freedom automatically closes itself and passes the specified file to the calling application. This popup contains the last 200 (maximum) selected files which makes it really easy to find files quickly. If the #HISTFILE is set in FREEDOM.CNF, the contents of the history Popup are saved and restored next time you power on your machine and run Freedom. A single click on the History popup displays files matching the currently active mask and a double click displays all files up to the maximum which can be fitted on screen. To display all available files select the '*.*' mask. Path Popup ---------- A double or right click anywhere before the last '\' on the path line displays the 'Path' popup. Simply select the desired path in the Popup and Freedom jumps to the specified directory, all that remains is to select the desired file followed by the 'OK' button. Entries can be changed by opening the Popup with the desired directory and mask active then selecting an existing slot with a double click or a single click whilst holding down the [Shift] key. Up to 40 files can be defined under the #PATHS section in FREEDOM.CNF. Please note that new slots can only be created by direct entry into FREEDOM.CNF. Extension Popup --------------- A right mouse click to the right of the last '\' on the path line displays the 'Extension' popup. Simply select the desired extension mask to display files of the desired type in the directory window. The first entry in this popup is always '*.*'. Entries can be changed by right clicking to the right of the last '\' on the path line then selecting an existing slot with a double click or [Shift]+ a single click. A double click to the right of the last '\' on the path line displays the 'New mask' dialog. Enter the desired mask and select 'OK' to activate it. Currently edited settings (in the 'Path' and 'Extension' popups) are NOT stored in the .CNF file and are consequently lost when you reboot your machine. You'll have to edit the CNF file manually until we make changes to Freedom. File type Popup --------------- A double right mouse click to the right of the last '\' on the path line displays the File type popup, select the desired 'pseudo' file type mask which appears inside brackets, e.g. , at the end of the path line instead of the usual extender. Only folders and matching file types are displayed in the directory window. The first entry in this popup is always 'Folder'. Hold down the [Shift] key while right double clicking on the extension to append further file types to the path line. Drive Popup ----------- A left mouse click before the first '\' on the path line displays the available drives. Folder Popup ------------ A left mouse click on or before the last '\' on the path line displays a Popup containing the folders at the selected directory level. General points -------------- - The small icon at the bottom right can be used to resize the number of lines and columns used by Freedom. - Freedom always allows multiple file selection. However, the number of files actually loaded on selecting 'OK' depends on the calling application. In most cases this is only a single file. - The way Freedom is designed often means there are two alternative ways of doing things. Some people prefer holding the mouse button down the whole time during an action, others prefer to click once to start and once briefly again to finish. In the following cases, Freedom offers both methods: - In all Popups, using the Slider, as a flying dialog (with Freedom running in modal mode), using the size icon and, finally, even using Drag&drop (Grab using [Control] or [Alternate] keys). - The (Selectric compatible) function keys can be turned off (using the #NOFKTKEYS option in CNF) so they can passed to an AV Server. - The 'Next' button in the Search dialog offers a 'pseudo skip' feature because you can hold the mouse button down to skip over files you're not interested in. Alternatively (in some situations) the keyboard shortcut [Alternate]+W can be used to surpress keyboard events. - Optionally Freedom can display all its alert boxes completely in the background in which case they can be controlled without holding the right mouse button down. If, despite this option, you wish to top a Freedom alert, you can either click on the window title or briefly click any non-selectable background area! If you've read enough about features we suggest you have a play. After a few days (at most!) you'll have forgotten your old file selector and appreciate just how intuitive and powerful the Freedom interface really is! Overview of Freedom keyboard shortcuts ======================================= [Alternate]+A-Z Select drive [Control]+[Backspace] Step one directory level up [Control]+[Undo] Step one directory level up [Control]+A Select all [Control]+[Shift]+A Invert selection [Control]+D Delete selected folder(s)/file(s) [Control]+N New object [Control]+I Object info [Control]+[Shift]+I File count, drive info [Control]+B Touch file/s [Tab] Object info OR auto-locator (Depends on #SHELLTAB option in CNF file) [Control]+[Tab] One-step auto-locator; cyclic folder and files [Control]+[Shift]+[Tab] One-step auto-locator; cyclic files only [Control]+F Search for object, linked to current file selector (F for find) [Control]+[Shift]+F Search for object, independent of selector [Control]+C Copy current status to Clipboard [Control]+[Shift]+C Export directory listing according to the #NICEFORMAT format string to Clipboard [Control]+V Copy/move files using data in file list [Control]+[Shift]+V Import status from Clipboard [Control]+H Sort by Name; H like Selectric [Control]+Z Sort by Date; Z for Zeit (German for Time) [Control]+G Sort by Size; G for Gre (German for Size) [Control]+T Sort by Type [Control]+K Unsorted; K for Keine (German for none) [Control]+R Sort in Reverse [Control]+[Shift]+S Deselect files using mask [Control]+S Select files using mask [Control]+E Enter mask (E for extension) [Control]+Y Open application specific Extension popup [Control]+P Open user defined Path popup [Control]+J Open Sort popup [Control]+X File list to Clipboard (SCRAP.TXT) tagged move [Control]+[Shift]+X Open user defined extension popup (eXtension) [Control]+M Open filtered user defined File popup [Control]+[Shift]+M Open unfiltered user defined File popup [Control]+< Open filtered History popup (< for backwards) [Control]+[Shift]+< Open unfiltered History popup [Control]+L Open Drive popup [Control]+W Cycle windows forwards [Control]+[Shift]+W Cycle windows backwards [Alternate]+[Control]+W Global window change (only via AV-Server) [Control]+[Return] or Open selected object (under a multitasking OS [Control]+O or AV-Server eg Gemini/Thing etc) [Control]+1-0 Select directory level from 1 to 10 [Alternate]+[Esc] Select the default (home) path [Alternate]+1-0 Select user defined paths from 0 to 10 [Alternate]+[Shift]+1-0 Select user defined paths from 11 to 20 [Control]+Num.Pad . Select default extension [Control]+Num.Pad 1-0 Select user defined extensions from 1 to 10 [Control]+[Shift]+ Select user defined extensions from 11 to 20 Num.Pad 1-0 [Control]+Num.Pad * Select *.* as mask [Control]+Num.Pad / Same as Freedom window fuller icon [Control]+Num.Pad + Same as [Cursor down]+click on 'OK' button [Control]+Num.Pad - Same as [Cursor up]+click on 'OK' button [Shift]+[Esc] or Re-read directory [Control]+[Esc] [Esc] Clear 'File' editable field [Return] or [Enter] Same as 'OK'. Any selected files/folders will be passed to the calling application as file/s [Shift]+[Return] or Same as 'OK'. Any selected files/folders are [Shift]+[Enter] ignored and solely the text in the 'File' editable field is passed as a file to the calling applications [Control]+Q, [Undo] Same as 'Cancel' or [Control]+U [Help] Freedom info [Shift]+[Help] or Open another application independent [Control]+[Help] file selector [Alternate]+[Control]+ Space bar De/Iconify Freedom selector or alert [Control]+Cursor up Same as Freedom up scroll arrow [Control]+Cursor down Same as Freedom down scroll arrow Cursor up Move selected file 'Cursor' up Cursor down Move selected file 'Cursor' down [Shift]+Cursor up Move selected file 'Cursor' up a page [Shift]+Cursor down Move selected file 'Cursor' down a page [ClrHome] Select first entry in directory window [Shift]+[ClrHome] Select last entry in directory window The function keys F1-F10, [Shift]+F1-F10 (=F11-F20) are user definable. Parallel processing capability ============================== Freedom works like a co-operative operating system, allocating available processor time between all the currently running tasks. This means that, under normal (co-operative) TOS versions, Freedom can work on a file search whilst reading a large directory or performing a file count for a drive. Even better, each action started in Freedom (Search, delete, file counts, directory reading, copy, move, etc.) are managed as extra tasks by Freedom and can all run in the background even if individual task(s) opens a popup, window or dialog! Unfortunately, thanks to the slow speed of GEMDOS, running parallel copy/move operations will cause Freedom to grind to a halt all on but the fastest machines with fast storage media... Normally only one search dialog per file selector may be open concurrently but you can launch multiple search operations from a single file selector if you open a search dialog using [Control]+[Shift]+F (instead of clicking on the search icon or pressing [Control]+F). Set several off to find different files, close Freedom, sit back and watch your hard disk explode! Other operations, including file counts, drive info, delete, touch and file info operations, can run simultaneously, the hard part is keeping on top of all the activities! The 'Select/Deselect files' and 'Enter new mask' dialogs can only be started once and are bound to the file selector from which they were called. Drag and drop ------------- Freedom can pass and receive files using Drag&Drop with applications using MultiTOS and AV Drag&drop. Generally, this means: - You can Drag&Drop files, holding the [Shift] key down, to a destination Freedom file selector which will automatically close and pass the dragged files to the calling application. (If you'd rather not hold the [Shift] key down you must Drag&Drop the files onto the the 'File:' editable field. - A Drag&Drop without modifier keys copies (if possible). - A Drag&Drop holding down the [Control] key moves (if possible). - In addition, holding the [Alternate] key down during copy/move operations enables objects to first be renamed. - Drag&Drop onto icons: Drag objects from Freedom to other applications, for example, to alternative desktops such as Thing and Gemini or to the icons (Delete/Info etc) in other Freedom selectors) The way it works (Methodology) ------------------------------ Where possible, Drag&Drop copy/move actions will be left to the AV Server (Thing/Gemini). If no AV Server is available Freedom tries to copy/move the files itself. Freedom cannot do this without the help of Kobold which must be configured for use with Freedom either in memory (Single TOS) or available on your disk. Drag your files to another unblocked application and Freedom asks the AV Server whether it recognises the destination application then passes the files, if necessary via an intermediate AV Server. If no AV Server is available or the application is unknown then (as a last attempt) a VA_START is sent to the owner of the window (unless this can be determined using Appl. 0). Freedom can also communicate with applications (e.g. Gemview) using the MultiTOS Drag&Drop (via pipes) although with most applications this involves a delay of several seconds. Applications which support MultiTOS Drag&Drop can have their filenames, without extensions, added under the #PIPEDD section of FREEDOM.CNF. Dragging objects onto the Freedom path line selects the object(s) in the same way dragging object(s) to the 'File' line does except that Freedom remains open. The file type concept ===================== Each file type can be assigned: - Name: A text description - Sort: A sort priority - Image: Number of the image in the image file - Colours: Foreground colour for text, selected and unselected Background colour for text, selected and unselected - Mask: A preceding '\ 'denotes a folder rule Here's one example line from the #FILETYPES section from FREEDOM.CNF: Program 19 1 0 1 1 0 *.PRG,*.TOS,*.ACC,*.TTP,*.GTP,*.APP | | | | | | | | | | | | | | | +--Mask for list of file types | | | | | | +-------Text colour (selected) | | | | | +---------Background (selected) | | | | +-----------Text colour (Deselected) | | | +-------------Background (Deselected) | | +----------------Number of the corresponding image (icon) | +----------------------Sort priority +-----------------------------Type name (preferably brief descriptions) (Refer to the Thing Desktop) File type descriptions can, optionally, be displayed in the directory window by adding '%X' to the format string. A 'Type' option has also been added to the 'Sort' popup and may be used in addition to the other sort methods. If selected the file type becomes the primary sort attribute and files are first grouped into types, according to their priority in FREEDOM.CNF, then sorted using the current secondary attribute (Name, Date, Size, Extender, No sort). Because two sorts are performed this option is slower. Be careful to place general masks after specific ones. For example, if '*.*' is used as the first entry all subsequent entries will be ignored. Configuration ============= Freedom is highly configurable. The options include: - Font, size, colours and line spacing in the selector directory window - Scroll bar position to left/right of directory window - Various delay actions - Separate format string for 8.3 and long format filenames - Whether case sensitivity is observed - Whether the auto locator is active and matches files and folders - Whether the alert box buttons are all the same width - Where Kobold is located (Environmental variable is checked) - Name of file viewer (1st View, ST-Guide, etc.) - Name of search utility (Parafin, FSearch, etc.) - Function key layout - Which files are interpreted as executables - Whether folders are opened using a single or double click - Whether a right click in the directory window scrolls (like Thing) or (like everywhere else) a double click is used - Whether background operation of window dialogs is active - Whether the file selector opens under the mouse - Number of lines/columns for the directory window - Up to 40 user defined files - Up to 40 user defined paths - Up to 40 user defined extensions - The path to search for the Freedom file icons (FREEDMxx.IMG) - Rules which control file icon/colour, priority, etc. - List of applications Freedom should run in modal mode - List of up to 16 applications which don't co-exist with Freedom - List of up to 64 applications which Freedom can call using the VA_START or Menu bar trick - Whether Freedom displays it's alert boxes in windows These parameters can, at the present time, only by changed by editing the .CNF file in a text editor (Everest etc.) but don't panic! The .CNF file is heavily commented. Some changes only take effect on re-launching Freedom. On startup, Freedom searches for its configuration file under a name which corresponds to the current screen resolution (using the same method employed by Gemini). For example at 640x400 resolution 06400400.CNF, at 1280x960 resolution 12800960.CNF etc. If Freedom can't find a file specifically for the current resolution it searches for FREEDOM.CNF and, if this also fails, uses default values instead. Freedom searches for it's configuration file using the shel_find() call which means the search is left to the AES. The AES searches the current directory and all directories listed in the $PATH environmental variable. Using the Image path (#IMAGEPATH) variable in the CNF file it's possible to set a different image file for each colour depth and resolution and similarly, using the Font setting (#FONTID) different fonts for each resolution can be set up. Example ------- Actual folder containing Freedom: 03200200.CNF - Could have an entry: #IMAGEPATH ./FDIMG/SMALL/ 06400400.CNF - Could have an entry: #IMAGEPATH ./FDIMG/NORMAL/ The icon image file at 320x200 resolution would be searched for in: /FDIMG/SMALL/. At 640x400 resolution /FDIMG/NORMAL/ would be searched instead. The Image filenames denote the colour depth, for example: FREEDM04.IMG is 4 bit or 16 colours deep, FREEDM08.IMG is 8 bit or 256 colours deep Configuration file notes ------------------------ Freedom reads the file line by line. Any line preceded with a semi-colon (';') is ignored. All other lines are searched for recognised keywords, for example #AUTOLOCATE. Keywords all begin with a hash '#' character. If no keyword is found the line is assumed to belong to the previously recognised keyword. Some options are followed by a list, for example #PATHS where up to 40 lines containing paths may follow. Exact information about each individual option can be found in the example configuration file included with this distribution and can be viewed and edited using your favourite text editor (Everest etc). Be sure to keep a back-up copy before making changes! The Imagemasks and corresponding masks ====================================== Freedom reads FREEDOM.CNF and searches the path specified by #IMAGEPATH for the XIMG format files FREEDMxx.IMG where 'xx' represents the number of bitplanes, for example: Monochrome resolutions have 1 bitplane and load: FREEDM01.IMG 16 colour resolutions have 4 bitplanes and load: FREEDM04.IMG 256 colour resolutions have 8 bitplanes and load: FREEDM08.IMG After loading the appropriate image (if available) it's divided into individual icons, one for each masks defined under the #IMAGEMASKS section of FREEDOM.CNF. For example if the loaded image is 16x64 pixels high/wide and 4 masks are defined the image is divided into 4 separate 16x16 pixel icons. Note! If you add a new mask line or change the height of the font you'll need to edit the appropriate image to ensure sensible icon display. Always work on a back-up! The Format string ----------------- Freedom makes it easy to format the entries in the directory window to suit your needs. In addition to the standard 8.3 format (8 character filename followed by a period and 3 character extender) other file systems which use long filenames or other formats can be accessed. The display format is handled using a single format string in which the percent character '%' plays a special role. Let's set up a string which formats the directory window listing to display filename, size, date and time as follows: : EVEREST PRG 154.510 29.10.94 09:41 EVEREST INF 840 09.01.95 11:36 : First the filename is listed in standard 8.3 format followed by the size up to a maximum 9 digits followed by the date and time without seconds. Here's the format string: #FORMAT %-F %-E%9K %T%2D.%2M.%2Y %T%h:%m The format string uses the '%' character as a place marker for each attribute. The following attributes are available: F Filename up to the last period (if period used) E Filename from the last point (if extension used) N Full (unformatted) filename D Day M Month Y Year (without century 00-99) h Hour m Minutes s Seconds S Size in Bytes of file in '13456789' format, folders excluded P Size in Bytes of file in '1.345.678' format, folders excluded K Size in Bytes of file in '13456789' format, folders '' T Use the clock symbol for today's files, otherwise nothing A[xx] Attribute bit of the files [-a] Default character W[xx] Write protected file status [-r] Default character H[xx] Hidden bit file status [-h] Default character Z[xx] System bit file status [-s] Default character X File type a Any ASCII character (e.g, %13a for CR or %10a for LF) % The percent character used to denote attributes Tabs (Pseudo attributes): L Left justified tab (character by character) C Centred tab (character by character) R Right justified tab (character by character) l Left justified tab (pixel by pixel) c Centred tab (pixel by pixel) r Right justified tab (pixel by pixel) (Suggestions for other attributes welcomed!) Each attribute displayed by Freedom has a default width. To increase or decrease the width, you can set the new width directly between the '%' character and the attribute (e.g. %9P). Freedom right-justifies all attributes narrower than the field width. If you'd prefer to left-justify attributes insert a hyphen '-' immediately after the '%' part of the attribute, the '%-20N' start of the following example does this. On a system supporting long filenames it's not so important to use separate attributes for the filename and extender, here's an example: #LONGFORMAT %-20N%9P %2D.%2M.%2Y The directory window output leaves more room for the long filenames: : EVEREST.PRG 154.510 29.10.94 EVEREST.INF 840 09.01.95 : Proportional fonts ------------------ With the introduction of tab handling (%L,%C,%R,%l,%c,%r) Freedom can now make practical use of proportional fonts. The format string is used as the horizontal 'cursor' which, together with the tab attributes, provide good control over the directory window display. %l or %L displays left justified output to the right of the cursor position, %c and %C display centred output around the cursor postion and %r and %R display right justified output to the left of the cursor. All the tab attributes are strung together into a Format string. Offset values are always relative to the previous tab position. Negative tabs are allowed and text could overlay other text although this is likely to result in an untidy display (!) If no tabs are active, each attribute has a default width, which is padded with space characters to the left and right as needed to fit the default width. This is not desirable when using proportional fonts, so it's important that the first attribute in the format string is a tab. Here's an (ugly) example: %12R%N%6C%P%6L%2D.%2M.%2Y %T%h:%m '%N' displays the full filename right justified to 12 character spaces. At this point the cursor is positioned 12 character spaces from the left border. Next follows a centred tab which moves the cursor a further 6 places to the right and '%P' displays the size of the file centred around this position. The cursor is now 18 character spaces from the left border. Finally the cursor is moved another 6 characters to the right to display the rest of the format string left justified 24 character spaces from the left border. The VA START trick ------------------ Using the VA_START message (Gemini/Thing/Ease/no!Desk), many programs can be 'tricked' into loading file(s) without loading another copy of itself into memory. Calling Freedom from an application which understands the VA_START message (and is configured in the CNF file) causes Freedom to send a simulated message back to the application that the 'Cancel' button has been pressed. This causes the application to call fsel_input and continue working while leaving the Freedom window open! After selecting a file(s) and exiting Freedom using the 'OK' button, Freedom sends a VA_START message to the calling application which opens the file(s). It's similar to dragging file(s) onto an icon installed on the desktop (Gemini/Thing/Ease/no!Desk). Some example programs which understand the VA_START message are included in the example CNF file. There are plenty of programs which don't like this arrangement, one glorious exception being the Everest text editor which handles everything VA_START throws at it! A disadvantage of the VA_START method is that the directory path cannot be passed so the next time the file selector is opened the old path is displayed. One workaround, if the program understands VA_START and you have enough free screen available, is to simply leave the Freedom file selector open. This allows you to drag files to the window of any application which understands VA_START at any time. Example #VASTART entry in FREEDOM.CNF: PAULA Load MODFILE | ^^^ | | | +-- Title in the file selector which Freedom looks for | +----- Empty space characters to make up 8 characters +----------- AES program name The Menu bar trick ------------------ And another trick: applications in which file selector calls are directly linked to a menu entry can be added to the #MENUBAR section in FREEDOM.CNF. This allows absolutely non modal multiple file selections to be made. In contrast to the VA_START trick, this method has the advantage of passing both the directory path as well as the extension. The ID numbers for a menu entry can be determined using the supplied program MENU_ID, which runs as either an application or accessory (.APP/.ACC). Like the VA_START method the file selector returns 'Cancel' and then supplies the file(s) afterwards. An MN_SELECTED message is sent to the relevant application (which simulates the menu item) and the program then calls fsel_[ex]input. Instead of opening a new file selector one of the selected files is returned with, if neccessary, a restore MN_SELECTED message. Finally, multiple file selection. This doesn't work with programs without menu bars or those which call the file selector from a dialog. You should not try to use the Menu bar trick for menu items such as 'Save as...' because this method can't remember which application window was topped at the moment the original call was made and, normally, the selection of such menu items refer to the currently topped window. For this reason this list should only be used for absolutely context independent file selector calls! Example #MENUBAR entry in FREEDOM.CNF: PC 8 76 Select Project... | | | | | | | +--Title in the file selector which Freedom looks for | | +--------Object number of the corresponding menu entry (item) | +----------Object number of the corresponding menu title (title) +-------------AES Program name (Pure C in this case) The title and item values can be determined using MENU_ID, which runs as an application or accessory (APP/.ACC), and displays the numbers at the top right of the menu bar. The program is crude and should be removed after use because, in contrast to Freedom itself, MENU_ID does not run under protected MiNT! Also, bear in mind that a new release of any application may have different 'item'or even 'title' values so you'll have to re-establish the correct IDs and update FREEDOM.CNF. We've already tried this trick successfully with a number of programs. The weakest point upon which Freedom depends is that the MN_SELECTED message really is evaluated by the program and answered with a fsel_[ex]input call so that the next file can be sent. It's possible that a program will not allow the selection of a particular menu item at some given moment, for example it may still be loading the previous file, in which case the MN_SELECTED message will, unfortunately, be rejected. With Everest a waiting time of around half a second is enough, with Pure C it always works (to our pleasure :-) and with other programs it doesn't. After sending a MN_SELECTED message, Freedom waits up to ten seconds before releasing 'uncollected' files. If the application has dumped the MN_SELECTED message and you manually call the file selector before ten seconds have elapsed, the file selector doesn't appear but the next file in the queue should be delivered. After ten seconds have elapsed the file selector appears when the menu title is called. You cannot use this trick in the following cases: - The application has no menu line - The application uses fsel_input instead of fsel_exinput, which results in the default 'Select file...' title line which makes it impossible to distinguish between file selector calls within the same application. It's OK to use this as long as the program only calls the file selector once. - The application uses fsel_exinput but passes the same menu title from several different points in the program which makes it impossible to distinguish between file selector calls within the same application. It's OK to use this as long as the program only calls the file selector once. - The application opens by calling the relevant menu item the first time but after loading a file a dialog or some other user input is displayed. If you click fast enough these work...sometimes! There is still room for some improvement in this trick. The delay between sending MN_SELECTED messages could be made application dependent/adjustable, maybe using fuzzy logic :-) Function key definitions ------------------------ The function keys can be freely defined using the #FKTKEYS options in FREEDOM.CNF. A character string is used to represent each option. The string is read from left to right and assigned in turn to the function keys F1 to F20 (F11 = [Shift]+F1). Example: A-JKDEFGIH Assigns F1 with function A (see list below) Leaves F2 unassigned Assigns F3 with function J All unassigned function keys are still passed to the AV Server where each key could peform an action. For example F2 could launch a program. Using the #NOSENDKEY option in FREEDOM.CNF keypresses are not sent to the AV Server, this is particularly useful for applications which cannot tolerate this behaviour (for example Gemini 1.A). Here are the possible functions: A = Drive Popup B = File Popup C = Extension Popup D = Sort Popup E = User defined path Popup F = Available extensions Popup G = Selection mask dialog H = Deselection mask dialog I = New mask dialog J = Find object dialog K = Create new object dialog L = Selected files to list in Clipboard M = Open file O = History Popup P = Recursively touch selected file(s) Q = Restore path from the clipboard R = Individual file info dialog S = File count on current drive T = Find object dialog (independent of selector) U = file list exported to clipboard using using #NICEFORMAT string V = File popup (unfiltered) W = History popup (unfiltered) X = File type popup - = Unassigned (Available to AV Server) Note! By default, Freedom doesn't distinguish between upper and lower case (dependent on the parameter #LOWERCASE) when reading paths and masks. FREEDOM.CNF is formatted using upper and lower case to make it easier to distinguish between commands, comments, paths and masks. If you're using a case sensitive file system you can add a preceding '!' before any path or mask, forcing Freedom to observe case sensitivity. Programmer's notes ================== Freedom can be directly supported. Please refer to the FDMPROTO.H, SLECTRIC.H and EXAMPLE.C files in the SOURCE folder in this distribution which cover programming options in more detail... We'd like to stress that we're hoping programmers will include direct support for Freedom in their applications. This is beneficial both for your applications and every Freedom user. The general guidelines for handling the file selector are: If the FSEL Cookie >= v2.0 the fsel_[ex]input call BEG/END_MCTRL should NOT be bracketed. If the FSEL Cookie < v2.0 the fsel_[ex]input call BEG/END_UPDATE should ALWAYS be bracketed. Under development ================= - Conversion to eCPX to run under 'Space' - A 'Set' feature to handle the VA_START/Menu bar tricks. - Conflicting filenames dialog to make it possible to rename files during copy/move operations. - MTOS path Drag&Drop (for NEWDESK) - Improved Menu bar trick. - English hypertext help. Yeah it's late and there's already a German version :-( - A setup program to ease Freedom configuration. - Signal and AP_TERM evaluation under MultiTOS Known limitations ================= - Freedom can't be called from TOS programs. In principle, this also applies to programs running in a VT52/TOSWIN window, which would need to talk to the AES (using appl_init) so that the AES file selector server could exchange data with Freedom. - Using virtual RAM the program flags 'lalt' and 'malt' must be cleared! - There are a programs which don't work 100% with Freedom (although these are becoming a rare breed). If you find one please report it to us AND the author of the program so we can solve incompatibilities. - The Server uses over 160Kb memory. Without abandoning Enhanced GEM and it's wonderful features we can't see any alternative... - In MagiC single mode the Freedom Server is frozen which means the resident FFSEL.PRG can't be reached nor a second selector be launched in parallel if a path needs to be passed to FFSEL.INF. Until MagiC documentation is available we can't solve this... - Messages under MiNT from FFSEL.PRG (the resident part) are not evaluated => after closing each selector/alert (KILL/TERM) one of the eight trap handler slots is lost. Known problems with other software ================================== - CD-Tools. Old versions which worked fine with Freedom now fall through the Dxreaddir call! Solution: Get the latest version. Freedom is not the only program which uses Dxreaddir so if you experience any problems with MetaDOS drivers don't settle for a version which cannot cope with Dxreaddir! - Falcon TOS's have an 'extended' Dsetdrv() that causes some problems with Metados <=2.5 and programs (Freedom, Gemini etc.) using the Dsetdrv(Dgetdrv()) construction. Under some circumstances drives can suddenly vanish using Metados versions =<2.5. This 'feature' should be corrected in Metados v2.6. - Zeig's mir. For some reason Freedom and Zeig's mir don't get along. It appears to depend on a faulty XACC protocol implementation in either or both our programs but in any event communciation via the XAcc cause both programs to crash under Single TOS... We're working on it. - MultiDialog. Good Idea, terrible implementation. Avoid! - STZip (2.6). No redraws occur if the window lies in the background. - Some programs don't remember which of their windows can change positions during file selection/alert display. For example, Paula, XControl, Maxidat and NotePad ignoring rectangle lists and/or sending WM_MOVED messages. Remedy: Don't move the window and inform the author! - Kandinsky and Triple_D bomb when run with Freedom installed. This should be fixed in the next Kandinsky release. Until then, add the filenames, without extension, under the #EXCLUDE section of FREEDOM.CNF. - The Let 'em Fly 'Niceline' option used with some programs can result in menu entries being moved (evil!). Neither Freedom (or Let 'em fly) is to blame. Sufferers: Pixart v1.2 and 'Rastaman'. Remedy: Turn Nicelines off or use alternative programs... - If you must use Let'em Fly, install it after FFSEL.PRG in the AUTO folder otherwise they'll both try to handle alerts. Obvious, really! Frequently asked questions ========================== Q: Why is Freedom so large (and getting bigger with each release)?! A: Many people have asked us to implement built-in copy/move operations, we've improved the error/conflict handling, added the menu bar trick and file type concept. Consider this, Freedom has most of the functionality of a desktop, MagiC is probably the most compact but, without window dialogs and Kobold support, it's about the same size! And name another program which allows you to continue working during copy/move operations? Q: Why, after a certain amount of time, does Freedom appear modally from all programs until I select the ACC entry. A: This is usually caused by a program placing a form_dial and not removing it, which causes the Freedom trapper to (incorrectly) assume a dialog is still open on screen. As a workaround, when the accessory version is called it clears the form_dial field. It's also possible to switch off the form_dial query in the trapper using the #NOFORMDIAL option in FREEDOM.CNF. This runs the risk with some programs that a window will open over a dialog and cause screen garbage. Happily only a few programs still display their dialogs on screen using form_dial/form_do and, of these, only Gemview springs to mind as a program which then calls the file selector. Getting on my soapbox, it appears ludicrous to me that programmers don't rate the multitasking capability of their programs above the saving of a few Kb of application size. It's especially crazy when the routines for Windowed dialogs are available as Freeware! Re: Papyrus: V4.0 includes a reworked dialog library which should relieve it of its status as the main culprit in this area :-) Q: Yuck! Why have Freedom's radio buttons become octagonal in monochrome! A: Chrisker attempted to install AES font independent round radio buttons but, after several hours fighting with the VDI circle routines, admitted defeat, concluding that whoever programmed the offending routine knew nothing about circle algorithms but instead used the Random() command :-) The real result of Chrisker's struggle is only visible when running in sixteen colours or more using a 3D-AES (those nice new radio buttons!). When using small AES-Fonts, the octagonals look like circles/ellipses! Q: Why do I get the system selector using CPXs? A: It's a deliberate safety measure. In theory Freedom could function by delving deeper into the system, Prior to the advent of the NVDI3 Font CPX there weren't many useful CPX's which called the file selector. CPX's are normally too small, unmanageable and Multitasking unfriendly. And that's before we even start looking at XControl, which itself is uncleanly proggramed.... (I think that's enough! :-) Q: Why is the system file selector displayed, for no apparent reason, with certain programs? A: 1) The program makes AES calls before appl_init or doesn't make a appl_init call at all! (Refer to 'Known problems with other software' for more details) 2) Some programs make dirty AES calls (Some calls do not pass the same global field to the AES parameter block that appl_init initialised). The blame often lies in outdated GEM libraries which don't include bindings for some of the 'newer' AES Functions (for example fsel_exinput) and the programmer has to create them manually. If you're using a different global field than the library, even out of necessity, try to get hold of the GEMPARBLK library as it's written in Pascal, Basic or similar. The GEM libary in Pure Pascal even includes flawed global fields. Using Pure C it's very simple to use the GEMPARBLK bindings instead of the ones in the library. Under MiNT passing an invalid global field causes the AES itself problems: In this case the MiNT-ID of the application must always be handled first by Appl-ID. As soon as Andreas makes the internal AES information for MagiC available we'll be able to address this problem, at least for MagiC. Why programmers should use always the same GEMPARBLK for AES calls GEMPARBLK is a structure which can pass parameters to GEM when calling a GEM function. This structure also contains the (famous) global field, which is initialised by the AES on the first GEM call (appl_init) of an Application. The information put into that field by the AES is needed by Freedom to determine which application has made the call. Because the AES itself doesn't need this information (it always knows which Application is running because, normally, the AES is the one switching the tasks!) no one is urged to consistenly use the same GEMPARBLK structure when calling the AES. For example, since CPX's don't call appl_init (they're not applications), the global field of the GEMPARBLK structure they use usually contains only zero values. However, if there's no correct global field neither is there any information which Freedom can access to determine the calling Application, thus forcing Freedom to relinquish contol to the system file selector. In MagiC 3, Freedom can access the internal AES information which, in turn, should make it possible for Freedom to appear when calling the file selector from CPX's as well as from some dirty applications. Q: Freedom displays a modal dialog without apparent reason?! A: Freedom uses the MCTRL flags and the AES to recognise 'flying' dialogs. Dialogs can't receive redraw messages so Freedom also has to appear as a modal dialog. A few programs didn't call the file selector from flying dials but also set MCTRL (for example Gemini, GemView) -> Freedom must accept this and display itself as a flying dialog. You can set these programs free by adding the name displayed in the Freedom title bar in the #IGNOREMCTRL section of FREEDOM.CNF. Programs which also call the selector from dials (for example CAT and Maxidat) should NOT be listed! The guidelines for programmers are: ----------------------------------- If FSEL Cookie >= v2.0, then use the fsel_[ex]input call, NOT MCTRL. If FSEL Cookie < v2.0, then always use MCTRL and UPDATE should always be set. If FSEL Cookie >=2.0 is installed, the fsel_[ex]input call should NOT be nested with MCTRL, otherwise ALWAYS! UPDATE should always be set. Q: If I move Freedom suddenly, the windows of the calling application vanish. However, on closing Freedom, they all reappear, whats going on? A: This is a problem fundamentally linked to the way Freedom works. Because the calling application simply waits at the file selector it doesn't notice that it's windows need redrawing. In order to avoid screen garbage, previous Freedom versions have intercepted any redraw messages and filled the offending window with the Freedom logo. This method met with wide dissapproval and caused various problems. We've had a rethink and come up with a new approach which, although not perfect, circumvents all the earlier problems and is more elegant, more compatible and needs less overhead from Freedom's point of view. Guidelines for programmers -------------------------- The old process suffered from another stubborn problem. After intercepting window redraws, Freedom has to restore the windows using a WM_MOVED, followed by a WM_REDRAW message but: 1) A considerable number of applications don't send any message after file selection. 2) Sometimes a further message arrived from the AES sending WM_REDRAW between them so that the WM_MOVED arrived after the first message from the application, causing the window to be redrawn at the wrong position. There's also a problem with XAcc messages which can, under certain circumstances, get lost when a certain upper limit is exceeded. This occurs with all known AES versions. The (mildest) effect is application windows which, having been moved during file selection, don't receive any Redraw/Moved message although (according to Sysmon) they were sent. Under MagiC, with lots of open windows, one possible workaround is to send an SMC_TIDY_UP message instead of loads of redraws... Q: Why do the window/s of an application which called Freedom suddenly become filled with the Freedom logo pattern? Can't this be turned off? A: If a redraw message comes from the AES the application cannot redraw its own window and will wait for the return of the file selector call. There is no alternative except for Freedom to implement the redraw so after the first redraw message the entire window is filled with the pattern. Any further redraw messages will fill any areas requested by the AES. When the application is back in charge it can send a redraw to all affected windows. If you'd don't like the fill pattern you can change it using a program written by Andrew Mayer... Q: When Freedom is active windows cannot be topped, why? A: The application window isn't being handled correctly by its application which should be sending a window-topped-message to the server so that the pertinent file selector/alert can be topped. Where an application has an open file selector/alert and supports backdropping it's not Freedom's fault if this support has been implemented incorrectly. Q: If Kobold or Parafin are called from Freedom under MagiC, their windows are not handled correctly. What's going on? A: MagiC sends false window top messages! MagiC tries to inhibit top windows and menu lines belonging to different programs. As a consequence (and to the chagrin of many users) closing the last window of an application takes the window stack out of consideration. Normally, this effect would appear every time Freedom closes its last window (which it naturally does quite often!). Happily, a trick has fallen into our laps: If MagiC is available, Freedom bottoms the corresponding window before closing it. If the last window closed is not the top window, MagiC behaves completely 'normally'. Hopefully, either MagiC will change its behaviour or this loophole will remain available! -Although we can't expect all programmers to implement the 'bottom' trick... Q: Can Freedom really survive a resolution change? A: Yes! But, as a precaution, it's a good idea to close any Freedom selectors/alerts! Q: Why does MiNT display the System alert and file selector using 'Load...'? A: This alert/file selector is called directly from the AESSYS. Freedom cannot control this process... Q: Why does the MagiC 'Start program...' display the system file selector when Selectric works OK? A: MagiC accesses the file selector differently for this operation. This is not accessible to Freedom and, therefore, the system file selector appears. (You can make Selectric appear instead by running Selectric before FFSEL in the Auto folder). Q: If I use Freedom to copy files using Kobold 2 with Gemini <=1.a installed then the Freedom window is updated before instead of after the copy operation. A: An error in Gemini (The corresponding message is sent before Gemini receives a reply from Kobold, and in general if something is copied). Q: Gemini sometimes crashes when I press unassigned keys in Freedom. A: Freedom passes unassigned keys to the AV Server. Gemini 1.a can't live with this behaviour and crashes. Activate the #NOSENDKEY in FREEDOM.CNF to cure the problem. Q: Freedom locked up/crashed my system... A: We and our beta testers have thoroughly tested Freedom with all the applications we can get our hands on but there are bound to be problems with a few rogue applications! If you do encounter a problem, first check whether problem occurs on a completely clean system with NO Auto folder programs or accessories loaded. If the problem persists please report it using one of the contact addresses. Include your hardware details along with the program name (send it to us if possible), version number and a clear, concise description of the problem and we'll do our best to fix it. Q: Do I have to load Freedom as an ACC under Single TOS? A: Yes. Freedom is designed to run as a parallel application under a multitasking OS and under Single TOS the only way to do this is as a desktop accessory. Q: Why are #VASTART, #MENUBAR and #NOALERTS included in the Freedom configuration file? A: These are needed when running Freedom as an application in order to overcome some fundamental limitations in this mode of operation. They will not be needed in the forthcoming Freedom eCPX. Q: Why are the three images (FREDOMxx.IMG) so nice? A: Because Chrisker designed them. Q: Why are the Freedom function icons so nice? A: Because Kolja designed them! Legal stuff =========== Freedom is Shareware which allows an evaluation period after which you must pay the Shareware fee or delete your copy. The Freedom documentation is protected under international copyright law. Distribution ------------ The complete unregistered archive may be distributed in non-commercial channels. Commercial PD/Shareware libraries and magazines may NOT distribute this software except by prior agreement. Warranty and liability ---------------------- While we will make our best efforts to resolve any problems you may experience using Freedom neither the authors or any agent we may appoint accept any liability or responsibility for any direct or indirect damage that may arise, either financial, material or any other kind from either the use or misuse of this software and associated documentation. All trademarks used are recognised and acknowledged. About this documentation ------------------------ - Original German manual (c) 1995 by Christian Krger and Kolja Koischwitz - English translation, adaptation and maintainence by Joe Connor - RTF layout and additional revisions by Tom Thomason Registration ============ Option 1 -------- UK users can register locally via Joe Connor's Supported Shareware scheme. Refer to the file SUPPORT.TXT included with this archive. Option 2 -------- Svenska anvndare kan registrera sig genom Bornemark Musik's Shareware Registrering. Se textfilen som fljer med denna arkiv p svenska BBS:er. Alternatively you may register directly: Option 3 -------- Send DM 30 and self addressed envelope and international reply coupon to: Kolja Koischwitz Sandhauser Strae 21 13505 Berlin Germany Option 4 -------- Transfer DM 30 to the following bank account: PGiroamt Berlin Kolja Koischwitz BLZ (Sort Code): 10010010 Konto-Nr (Account No): 705 92-100 Be sure to clearly state the transfer is to register Freedom along with with your contact details!! Please also send an Email/letter to confirm your transfer. To generate your key we need the following details: Name: .................................... Street: .................................... Town, County Postcode: .................................... We'll rush you both a key and the latest registered version which you can only unpack using your personal key! Contact by Email ---------------- Authors: Kolja: joust@cs.tu-berlin.de Chrisker: chrisker@cs.tu-berlin.de Agents: Criss: Christian_Grunenberg@lb.maus.de Joe: jconnor@cix.compulink.co.uk Sven: sven@dada.ct.se That's it! Kolja and Chrisker