• Fixed a bug in round that affected a small range of numbers.
• Better key event processing
• Added more internal consistency checks
Version 0.94b2, November 16th, 1995
————————————————————————
• Buttons will display both an image and text if they have them both. To place an image on a button, cut the image from some other application, swtich to Codeworks, put the view containing the button in author mode, paste, drage the image that appears on top of the button.
• The canvas draw-text message now accepts the upto argument that specifies the right hand clipping margin.
• Several new options were added to different view types. These options are invoked by adding various slots to the view objects. (To get the view object: put the window in author mode, clover click on the view to change, and choose ‘open view object’ menu item.) There are no nice user interfaces under view options for thse views yet. The new options are:
— Aligners can now have a background tint: Give the view object a slot named tint and give it value from 0 (black) to 100 (white). 85 (light-gray) works well with the buttons.
— New text view options: If there is a slot named password whose value is true, then the text is show with all asterisks. If there is a slot named justify, with values "left", "center" or "right", the text field will be justified appropriately.
— New text editor view options: If there is a slot named read-only whose value is true, then editor is read-only and can’t be edited.
— Dialog window support: If the top level view has a slot named is-dialog whose value is true, then a dialog window will be used rather than the normal title-bar style.
— Buttons can be operate in different modes: If the button view has a slot named button-style it can have one of the values "momentary", "push", or "toggle". Momentary buttons represent a script that is executed once each time the button is pressed, they are always drawn ‘up’. Previously all buttons were momentary buttons. Toggle and push buttons always display as either ‘up’ or ‘down’, based on if their script evaluates to ‘false’ or ‘true’. Toggle buttons execute their script with a single argument this is the inverse of the button state. Push buttons execute their script with a single argument that is always true.
• Progress bars: A new message to user displays a progress bar during some operation. The calls can be nested with correct behaviour. The calls are:
user show-progress message do [ ... ]
user show-progress message for i to j by k do [ ... ]
user show-progress message for g do [ ... ]
In the second two forms, the iteration is execute while a progress bar is displayed. In the first, just the message is displayed while the block is executed. Message is a string; i, j and k are numbers, and g is a group.
• System sync-all can be used to force all windows on the screen to be correctly updated.
• Fixed width font changed to be Monaco on the Macintosh. It is still listed as Curier in the Font menus, but you will get Monaco.
• Drawing semantics changed to be more consistent and cross platform. Specifically, line-thickness is the width of a pen nib that is dragged perpendicular to and centered on a line’s end-points. This means that diagonal lines appear the same thickness as horizontal or vertical lines. Also, in framed shapes (frame-rectangle, frame-ellipse, etc.) the frame extends half a line-thickness beyond the shape requested. Widths that result in an odd number of pixels always round down and to the right. Note: There is currently an exception to this: 1 pixel line-widths for rectangles will do the wrong thing. This will be fixed in the future.
• Check boxes made a little bigger to look better. Not all layouts have been changed to accomodate this change.
• Typing the tab key will cycle among the text fields in a window. Shift-tab will cycle in reverse. Since tab is a valid character in editor views, command-tab and shift-command-tab are needed to cycle away from an editor view.
• Number now has the atan function. There are two forms:
a atan — arc-tangent of a, in degrees
dx atan dy — arc-tangent of dy/dx, in degrees
Either can take the optional argument graphic, which is faster and returns a result good enough for graphic display, but not as accurate as without it. The second form is useful in given the difference between two points, (dx, dy), it returns the angle of the line between those two points and the x-axis.
• Many internal changes to support multiple platforms.
• Fixed a small memory leak.
• Dragging feedback improved: List views hilite where you will drop things. Drag ‘anchor-point’ independent of initial mouse speed.
Version 0.93b2, July 4th, 1995
————————————————————————
• Click and drag processing has been rewritten. Mouse based selection in text editors, code editors and text fields now responds as expected: Double and triple click select words and lines.
• Cut, copy, paste and clear now work in text fields.
• User pick-file now supports a prompt string. User name-file now supports a default file name.
• New method: display find-display tag $foo finds the ‘nearest’ display who’s view has the given tag (usually the property being displayed). Nearest is defined as depth-first search, starting with display, then display’s parent recursively.
• Aligner dimentions information moved onto aligner layout form. Aligner layout is now available directly from the clover-menu on an aligner in author mode.
• Command-W (Close command in File menu) closes top window, not document. Add Close Document command.
• String has, index and count are now case insensitive.
• Fixed a bug in document updating. (It was too aggressive and didn’t handle documents that were instances of subclasses of document.)
• System Changes now reside in the same directory as the application, not the Glyphic projects.
• Find in System Folders does a more complete search, and will do partial matches if all else fails.
• Dragging items around and into the user-classes folder now makes those items globally known.
• New browser compile-all option: user-classes.
• Method menu fixed in System Folders to now apply to code pane below.
• If a script change application fails, it now tells you which one.
Version 0.93b1, June 21st, 1995
————————————————————————
• Fixed bug in code generator that caused some decimal constants to compile incorrectly on 680x0 machines. The infamous random bug was actually this: choose 1 to 65500 now works.
• String comparison (==, !=, <, <=, >, and >=) is now case insensitive. Use exact-equals for case dependent equality matching. Added the messages translate, uppercase and lowercase for converting strings. Known bug: index, has, and count are still case dependent.
translate "abc" from "ac" to "zy" — results in "zby"
• Object files are now flushed to disk after being written.
• Modulo and Remainder have been reworked: x mod y is now the modulo function (returns in the range [0 , y) ), x rem y is now the remainder function (returns in the range [0 , abs(y)*sign(x)) ). Note change: x % y is now a synonym for mod. x %% y is a modulo operation to the range [1 * sign(y), y + 1) ). Known bug: %% only works for integers.
• floor and ceiling routines fixed for numbers between 0 and ±1.
• Help support. When in author mode, views now have a ‘Edit help text...’ item. This menu lets up edit a piece of help text for the view. When the user turns on balloon help, the text will be displayed when the user moves the cursor over the view. Known bug: doesn’t work for aligners.
• Double clicking in code editors doesn’t include the final period of a expression. For example, if the code is: ‘location.x between hi and lo.’, then double-clicking on location will select ‘location.x’, but double clicking on lo will select only ‘lo’, without the final period.
• Improvements to the standard text field editor: Drag selection is available, and double clicking selects the entire line. Known bug: double clicking should select only a word and triple clicking should select the entire line.
• Now only loads projects that end in .pro during system start up.
• New browser protocols:
brower symbols of-part p — returns all symbols that have p as a part
browser implementors-of-cmd — open method-lists
browser implementors-of-part-cmd — open method-lists
browser references-to-cmd — open method-lists
• Opening System Folders gives you a new copy of the System Folders (may not work).
• Ted’s System Folder enhancements
• System wide system change log:
• Bug fixes to time ==, big-integer new, group sort-insert, byte-array as, string-as, group initialize. Addtions: object save-std-loc, open-std-loc; stream read-fld-itext, read-style; array put; rectangle center, normalize; class line.
• Shift-open works for object-views.
• Features added, but not documented and/or completed: drawable lists, macintosh style scroll bars, closing window notification, user menu-bar menu, run-time flag,
Version 0.92b5, April 15th, 1995
————————————————————————
• Allowed double-buffering to work when called recursivly, for example when in response to pointer-req, a script calls display draw-all.
Version 0.92b4, April 12th, 1995
————————————————————————
• Drawable views can now be double-buffered. This causes all the drawing to happen in an offscreen buffer and then copied to the screen in one operation. The result is far less flicker during updates and animations. Add a slot named ‘draw-buffered’ with a value of true to a drawable view object to get this to happen.
• The way clearing on repaint happens was re-worked. Should cause no noticable changes. Windows no longer automatically repaint to white, and aligners had to become more smart about when they needed to repaint white (if they always painted the margins white they wouldn’t need to do this).
• Added window manipluation messages:
a-top-display win-location x, y.
a-top-diaplay win-size w, h.
These can be invoked without arguments to return the current location and size (as a point object). They, like the canvas messages, can accept a point as the only argument rather than two coordinates.
• The open message has been fixed to always return the top-display, even if it was already open.
• Added the message sync-all to the system object. It updates all the displays on the screen.
• Extended paint model to include color! You specify a color in terms of three numbers: brightness, hue, and saturation:
canvas paint 75, 240, 85. set to a fairly bright, rich blue
The value of the paint property, when accessed is a gray scale estimation of the perceived brighness of the color (which is NOT the same as the brightness!) It is also the gray value that will be used on black and white monitors.
• Internally fixed the ReTargetPoint message and the users of it to have a better notion of coordinate systems.
Version 0.92b3, March 9th, 1995
————————————————————————
• Workspaces were reorganized. Now they live in their own folder, Workspaces, rather than in the Miscellaneous folder. The Utility menu was changed to have an item ‘Workspaces’. This item brings up a pop up list of existing workspaces and and item for creating a new workspace. If you choose the new workspace item, you’ll be asked to name it. If there are no workspaces, then the Utility menu will jump directly to the creation dialog.
• New System Folders object. You can access it from the Utilities menu. It is a full, multi-pane browser ala Smalltalk. Almost all of the objects in the system library are in this browser.
• Trash folder removed, along with the ‘delete-to-trash’ property of folders. And existing items in the trash folder, in older documents, will be moved to the miscellaneous folder.
• Group list dragging. You can now drag-n-drop items in textual list views of groups. Dragging within a group reorders items. Dragging a new item into the group adds it before the item you drop it on (or at the end if you drop it on the bottom whitespace).
• Document version has changed to 5. You will be asked if you want to upgrade older documents when you open them. Remember to save them after upgrading.
• File Security: Now there are four areas of the file system, each with different levels of security:
1) System Folder - Completely unaccessible from Codeworks
2) Glyphic Folder - This is the folder that contains the application. Total access is permitted here.
3) Document Folder - This folder may be selected via the “Select Document Folder...” in the System menu. Total access is permitted here. The select dialog also lets you choose ‘None’ which selects no folder for this level of access.
4) The Rest of the Disk - There are two modes for the remainder of the disk. ‘Deny’ makes the rest of the disk unaccessible. ‘Allow’, makes the rest of the disk readable, and will ask your confirmation for any other type of access (create, write, delete).
Note that despite the above restrictions any file you select via the standard file dialogs, or by double clicking in the Finder, will be fully accessible.
• Fixed delete-global-check in folder. It wasn’t checking to see if there was no current document.
• Added count-matches to groups (and arrays and strings). The message:
g count-matches f
returns the number of elements that are in the same location in both groups. For example:
"abcdef" count-matches "xxcdabcdef"
returns 2.
• Added class big-integer. They do not as of yet support the entire math protocol. Create them with a message like:
big-integer from 42
• Added a new option, expect-break, to context execute. This option, which should be used alone, catches only a user break, and simply returns. It is useful for surrounding infinite loops that you expect the user to stop.
• Fixed reject for groups. Now the passed in block takes a keyword argument, element, rather than a positional argument. You will need to change code that uses reject as shown in this example:
Old: candidates reject by [ $ - e. e.age < 5 ]
New: candidates reject by [ $ element e. e.age < 5 ]
• Fixed containee-data for composite-view. It had a test for unknown tag that shouldn’t be there as far as anyone can tell.
Version 0.92b2, February 28th, 1995
————————————————————————
(Note, this list is incomplete)
• Added find-mis-linked to browser. This script helps in finding objects that have bad home chains and prevent object files from saving.
• Fixed bug in rank-options get-extent. It was returning incorrect symbols.
• Expression editor relayed out to make it distinct from script editor.
• Fixed bug in file delete. It wasn’t checking if the object was a directory.
• Added close-open-files to file. This closes all currently open files and is useful during debugging.