Short: T1Manager New Design Mock-Up Author: sisk637 cyberonic com (Robert A. Sisk) Uploader: sisk637 cyberonic com Type: util/libs Version: 1.3 Replaces: util/libs/T1ManagerM.lha Requires: util/libs/mui38usr.lha util/rexx/rxmui.lha util/rexx/royalbridge11.lha Architecture: generic T1ManagerM is a mock-up of a new GUI design for T1Manager from util/libs/Type1Engine. It is a MUI application written in ARexx, developed on an A4000/040 with AmigaOS 3.9, MUI 3.8, RxMUI 42.2, and RoyalBridge 1.1. I have some criticisms of T1Manager, and although the source code is available, my programming experience is more with ARexx than with C. As this package apparently has been out of development for many years, I appeal to the Amiga community for an interested developer to consider my input. I offer this mock-up and the accompanying suggestions in the spirit of improving software on the Amiga. My mock-up script illustrates many of my suggestions. It reads the installed font files but doesn't change them, so you can play with it all you want. To open the modify window you must have installed at least one Type 1 font using the real T1Manager. GUI Errors An input listview should have an input (raised) frame rather than a read-only (recessed) frame, e.g. the Fonts listview. An action button that opens a window or requester should have a label that ends with an ellipsis, e.g. "Install...". Boolean yes/no, with/without values should be shown as checkboxes instead of cycle gadgets, e.g. Serifs. GUI Improvements My mock-up sets the SingleTask attribute: A tool that manages fonts, which are global resources, probably shouldn't run as multiple copies. In my judgment the main window looks better with the Drawer gadget under the listview and the buttons at the bottom. Loading and multiple changes to lists should use quiet mode for better speed and less visual activity. Input listviews should have a control character and indicate it in a label. An empty input listview should be disabled. The multiple-selection listviews Fonts and Sizes should have pop-up selection menus containing All, Toggle, and None items. Of course, each item should be disabled when it has nothing to do. The Fonts listview should be the main window's default object. For the Modify window it should be the Sizes listview. (My script tries two ways but fails to set the Sizes listview; apparently a RxMUI/MUI bug.) Load the Fonts list initially before opening the main window. The Install file requester's OK button label should be "Install" and the title should include that word. Installing fonts shouldn't show the totals requester; instead, because the process can be slow, show a progress window with a gauge. (To see my example, simulate installing multiple files - and stopping - with the mock-up.) Either insert the font entries individually as they are installed, or if they are inserted together or the list is fully reloaded, use quiet mode. When installing a font that already exists in the drawer, it seems rude to refuse to install it. It would be more helpful to present a string requester for entering a new name and provide the options Rename, Replace, Replace All, Skip, Skip All, and Cancel. When installing a font that already exists in another drawer, it seems presumptuous to arbitrarily rename the font. Present a string requester with the options Rename, Skip, Skip All, and Cancel. If you implement my request to support drawers not in the Fonts: path (see below under Feature Requests), this situation wouldn't apply - unless you decide to determine whether the drawer is in the path and if it is, to test for cross-drawer duplicates. The font installation error requesters I've seen are cryptic and unhelpful. One says "Error 4, Can't build SpaceWidth & YSizeFactor for type1 file:" followed by the file name. Why can't T1Manager install the font? Is there a programming error in T1Manager? Is the font file broken? The user needs to know. Removing fonts shouldn't show a total requester; removing the entries from the list is enough confirmation. As for install use quiet mode if necessary. I reorganized the Modify window using register pages to facilitate adding new values to modify and to alleviate the shortage of control characters. The window is resizable in both directions. In my redesign I prevent the cycles and numeric strings from uselessly expanding horizontally. I relabeled some gadgets with more user-friendly names, e.g. "YSizeFactor" to "Height Factor", and with more specific and accurate names, e.g. "Delete Size" to "Remove Sizes". In my view "remove" is more appropriate for taking entries and values off a list; "delete" is normally used for erasing an object from existence. The gadgets for maintaining font sizes behave strangely: for example, activating a listview entry loads the string; it shouldn't. When I enter a new font size, press Add Size, and activate the size I just added, Delete Size disables; it shouldn't. The string accepts values as small as 2; this doesn't seem useful. I changed the lower limit to 4, as this appears to be the value used by the ASL font requester. When sizes without bitmaps are selected, setting the string to a non-existing value disables Add Bitmaps; it shouldn't. Entering a new size greater than 124 disables Add Size. Unless there are reasons I don't know about to reject large sizes, T1Manager should be able to create large (e.g. 400-pixel-high) bitmaps. Adding and removing bitmaps changes the select states of the list entries; it shouldn't. Creating bitmaps can take time. It should show a progress window similar to that for installing fonts, but saying "Creating bitmap" and e.g. "30". (This is done during the saving of changes, which my script doesn't implement or simulate.) Processing Error I've found that renaming a font that has no sizes drawer unnecessarily creates one. Feature Requests The history log has a 3/27/94 note about a desire to save the install source drawer. My mock-up does this by adding a text gadget at the bottom of the window's root group with a ShowMe value of false. I update the requester's drawer when I drop an icon and at quit time set the text and save it. Support maintaining fonts in any drawer, not just in drawers already in the assigned Fonts: path. TTFLib does this. Include Full Name in the modify window for display and updating. My script gets it from the PFA/PFB file at modify time, but T1Manager would add it to the .otag file at install time. As shown on the Styles page, the Family name should be modifiable to fix bad names and to reorganize families. Also, please support the use of style variants in preference to algorithmic styles. I assume the variants would come from the same drawer as the font being modified. The pop-ups show the family's member fonts that were read when loading the Fonts listview. Renaming a font, and installing and removing fonts would update the family lists. Changing the font's family would remove the font from the current family and add it to the new. Canceling the modify would remove the font from the new family and restore it to family it had when it was loaded. My mock-up doesn't implement the renaming of fonts, and my simulation of installing them doesn't update the family lists, but removing fonts, changing the family, and canceling modify demonstrate the processing I describe. Finally, I'd like to specify algorithmically generated styles to be inhibited. These values would apply when a variant wasn't specified or found. History 1.3 Fixed bug: Last fix was broken. 1.2 Fixed bug: Mishandled 32-bit memory address values. 1.1 Fixed bug: Style variant pop-up list used family string contents when value hadn't been finalized by pressing return. Fixed bug: Font list didn't respond to cursor keys in font string. 1.0 First Aminet release. If you find errors or problems in this mock-up, please let me know, but preferably I hope you'll improve T1Manager by incorporating corrections in your new release of this important tool for the Amiga.