Resources can change at any time. Changes will be announced on the mailing list.
fsalphadoc.html. The Primary Alpha Doc. This is your guided tour, your primary path into the IDE and (especially) the language and current capabilities of FaceSpan 5.
Examples. The example projects, referred to in the Primary Alpha Doc. Please download these and have them on hand for use while reading and referring to the Primary Alpha Doc. These examples have been completely revised and numbered so that they are easy to study in the right order. They are now an important part of the documentation; code explanations have been removed from the Alpha Doc and expressed as code examples.
Movies. The Alpha Doc concentrates mostly on the language; to help guide you into the IDE, we’ve created a series of movies. Please watch them in order.
FS5Alive5.mov. The original “teaser” movie from Mark’s blog. Quick creation of a Hello World project.
The Workspace. Starting up FaceSpan 5, creating a new project. Parts of the display. Selecting objects.
Widgets. Where widgets come from, and how to add them to your project. Where to drag to. The Library inspector: FaceSpanKit, Plug-ins. Exporting and importing project pieces between FaceSpan and the Finder (reusability). How to make your own project pieces appear in the Library inspector.
Code. How to see the code for desired widgets. Ways of rearranging and customizing the workspace display. Entering code: event handlers, the dictionary. Compiling.
Debugging. Breakpoints, and the various debugging windows.
The current alpha version of FaceSpan 5. You are expected to know from messages on the mailing list where to download this. Please don’t reveal its location.
The FaceSpanKit Dictionary inside FaceSpan 5. This is not your grandmother’s dictionary! By rewriting the rules for dictionary presentation, Mark has made it possible for Matt to write a really informative dictionary, with cross-references, some example code, and so on. It’s good reading! In fact, basically this is the reference documentation for FaceSpan, so you’ll refer to it constantly.
The Blog. This is where Mark and I report to the world on what’s up with FaceSpan 5 development. Please check it from time to time. It should inspire you to tuck in and try to get some serious work done with this program!
The FAQ. This is non-existent (so don’t bother clicking that link), but the idea is eventually it might exist as a repository for commonly asked questions not properly covered by the Primary Alpha Doc.
The mailing list. This is the primary venue for announcements, and for questions and answers.
The new build is 5.0d69.
Runtime: FaceSpan properly performs 'my' handler invocations from within tell blocks targeting other applications.
Runtime: Corrected a number of subtle object resolution bugs. For instance, 'tell my container to delete views' would fail while 'tell (get my container) to delete views' would work - this is fixed.
Runtime: Fixed a terminology conflict that clashed with AppleScript's 'contents of' operator.
Runtime: Corrected a crashing bug that happened when a button's 'on action' handler deletes the button.
Runtime: Changed 'button's 'small square button' to 'gradient button' since 'gradient button' is the Leopard name for this button variant.
Runtime: Added all of 'button's missing properties to the scripting interface: 'border style', 'behavior', 'alternate title', 'allows mixed', 'mouse borders', 'continuous', 'image position', 'image scaling', 'key equivalent' and 'key modifiers'.
Runtime: Images can be loaded from URLs by assigning a URL string to any 'image'/'alternate image' property.
Runtime: Images now correctly return their name when you 'get image as string'.
Runtime: Images loaded from files/URLs now return their file/URL when you 'get image as file'.
Runtime: The Simple Table plugin has been expanded: 'selection did change'/FSSelectionDidChange event/broadcast added; 'did begin editing' and 'did end editing' events added; Double-click generates 'on action' event; New properties added :'allows empty selection', 'allows multiple selection', 'alternating row background colors', 'automatically hide scrollers', 'color', 'control size', 'editable', 'font', 'selectable', 'selection' ('selection as string list' returns selected values, 'selection as integer' returns selected row indexes), and 'show headers'.
Runtime: Added 'arrow position' property to 'popup button' class.
Runtime: FaceSpanKit's 'text view' replaces the 'simple text view' plugin. This widget inherits from a new 'scrolling view' base class which will form the bases of other future classes (table view, etc.). Ultimately, 'text view' will support additional events and the 'text suite' for scripts that want to manipulate the text. If you have code that uses the 'simple text view' widget, you'll need to copy that plugin from a previous FaceSpan release.
Runtime: 'split view', 'split container view' and 'split footer view' classes added to scripting interface (these objects will appear in the IDE in due course).
Runtime: Added 'key equivalent' and 'key modifiers' properties to 'menu item' class.
Runtime: Added 'frame size' and 'frame origin' properties to the 'view' class.
Runtime: Added 'content size' property to the 'window' class.
Runtime: Added the 'scrolling container view' class. This class allows you to create a scrolling region that contains other views.
Runtime: Added the 'giving up after' parameter to the 'display alert' command to improve compatibility with AppleScript's 'display alert' command.
Runtime: It is now possible to display a 'container view' within a 'toolbar item'.
Runtime: It is now possible to display a 'container view' within a 'menu item' (Leopard only).
Runtime: 'html view' improvements: it is now possible for JavaScript running within a WebView to call AppleScript handlers in the FaceSpan delegate chain and get/set AppleScript properties in the 'html view's script.
Runtime: The dictionary now shows the 'drawer will resize' event as returning a value (the desired size of the drawer).
Runtime: Fixed several bugs that occured when setting a drawer's frame.
Runtime: Fixed a bug where the 'on initialize' event was not being generated for windows duplicated by a 'display panel' command's 'make copy' parameter.
Runtime: A Cocoa exception generated by the 'choose file name' command has been addressed.
Runtime: application-modal 'display panel' commands now correctly return a result.
Runtime: blocking application-modal 'display panel' commands no longer invoke the 'palen did end' event handler.
Runtime: Resolved some problems with 'display panel's 'blocking' parameter.
Runtime: Addressed a problem where the 'display alert' command fails when 3 or more buttons are specified.
Runtime: The default delegate for the 'display alert', 'choose file', 'choose file name', or 'choose folder' commands is now the object that invokes the command rather than the window over which the panel appears.
Runtime: Disclosure triangle buttons now toggle (like a checkbox) when clicked.
Runtime: Timer instances with their 'auto delete' property set to true are no longer deleted when their interval is changed.
Runtime: 'movie view' improvements: added 'current time', 'current chapter', 'chapter names' and 'duration' properties; added 'selection did change'/FSSelectionDidChange, 'movie view did start'/FSMovieViewDidStart, 'movie view did stop'/FSMovieViewDidStop and 'movie view did change chapter'/FSMovieViewDidChangeChapter events/broadcasts; added FSCopy, FSCut, FSClear, FSPaste, FSSelectAll, FSSelectNone, FSTrim, FSPlay, FSPause, FSGotoBeginning, FSGotoEnd, FSGotoPoster, FSStepForward and FSStepBackward operations.
Runtime: 'PDF view' improvements: added 'pages' and 'current page' properties; added 'pdf view did change page'/FSPDFViewDidChangePage and 'selection did change'/FSSelectionDidChange events/broadcasts; added FSCopy, FSCut, FSClear, FSPaste, FSPastePlainText, FSSelectAll, FSStartSpeaking, FSStopSpeaking, FSGotoBeginning, FSGotoEnd, FSGotoNextPage, FSGotoPreviousPage, FSZoomIn, FSZoomOut, FSGoForward and FSGoBack operations.
Runtime: Addressed a crashing bug that sometimes occurred when accessing file resources referenced by widgets at launch time.
Runtime: The 'properties' property no longer returns the 'view image' property as this property can potentially be huge and time consuming to provide. You must now get the 'view image' property explicitly.
Runtime: The 'unified toolbar' property has been removed as all toolbar windows are unified under Mac OS X 10.4 and later.
IDE: The Fit to Enclosure command now also sets the view's sizing flats to {horizontally elastic, vertically elastic}.
IDE: The 'parent' property is explorable in the Debugger.
IDE: Integration of all Script Debugger 4.5.2 editor, debugger and dictionary changes.
IDE: FaceSpan no longer hangs when you 'copy', 'cut', 'duplicate', 'paste' items in the Dictionary window's search results pane.
IDE: some minor issues with the display of icons in the Scripts and Clippings inspectors have been resolved.
IDE: auto-paring of delimiters now works correctly when the current selection is placed at the beginning of a string literal.
The new build is 5.0d68.
14659 IDE: Addressed a hang when compiling scripts that have a # character within a (* *) comment block.
14656 IDE: Addressed a series of crashing bugs when compiling scripts.
14555 IDE: Addressed a problem where Auto-hilite of opening ([{ would fail when entering a ]}) character right after an existing ]}) character.
14643 IDE: 'unicode text' is no longer converted to 'text' when compiling.
14637 Runtime: The 'display panel' command no longer hangs when the application is hidden and then revealed.
14638 Runtime: The 'FSShowAboutPanel' operation is now properly disabled when the 'choose folder', 'choose file' and 'choose file name' commands are running application-modally.
14415 Runtime: It is now possible to create 'date', 'alias' and 'file' literals outside 'tell AppleScript' blocks. For example, you can now say 'set myDate to date myDateString'.
14661 Runtime: The 'log' command now logs the object invoking the log command along with the logged value. Additionally, a greater range of data types can be logged.
14660 Runtime: A bug that caused Finder 'file' and 'folder' object references to be removed has been corrected. This problem caused 'files of folder "xxx" of ...' to incorrectly return the contents of the Desktop folder.
14441 Runtime: A A problem using the 'read' command to read files with names longer than 32 characters has been addressed.
The new build is 5.0d67.
14247 Added three new event handlers 'choose file should show file', 'choose file name should show file' and 'choose folder should show file'. This events are generated by the 'choose file', 'choose file name', and 'choose folder' commands respectively to validate the files/folders appearing in the panels. If the event handler returns false for a particular file/folder, the the file/folder is disabled in the panel.
14630 The default delegate for the 'display alert', 'choose file', 'choose file name' and 'choose folder' commands has changed. Normally, the default delegate (i.e. when no explicit delegate is specified using the 'delegate' parameter) is 1) the window specified in the 'over' parameter, and (2) if 'over' is not specified, the application. Now, the default delegate is the object that invoked the 'display alert', 'choose file', 'choose file name' or 'choose folder' command. The 'over' parameter now only specifies the window over which the panel will appear. Matt's Alpha Documentation has been revised to explain this change in runtime behavior.
14597 Scripting: On Leopard systems, it is possible to place a view into a menu item. See Matt's updated dictionary documentation for details. Cocoa places many limitations on the views that appear in menus. The IDE does not yet support this, so you have to do it in code.
14597 IDE: the various 'choose file', 'choose file name' and 'choose folder' events are now listed in the IDE's Paste Event Handler menus.
14635 Scripting: the 'did request help' event handler (invoked by the 'display alert' command) no longer fails if no 'user data' was specified.
14162 Scripting: the 'display alert' command now supports 'accessory views' in the same way that the 'choose file', 'choose file name', and 'choose folder' commands do. NOTE: this feature only works on Leopard systems. Its use is ignored on Tiger systems.
14247 Scripting: the 'of type' parameter to the 'choose file' command now functions correctly.
14626 Scripting: added a 'with title' parameter to the 'choose file', 'choose file name' and 'choose folder' commands. This parameter allows you to alter the panel's title (only visible when panels run application-modally).
14532 IDE: Addressed an IDE crash when opening projects after closing a previous project.
14618 IDE: FaceSpan no longer fails silently when there are problems building a project. The errors reported are still cryptic, but at least to know that the build has failed.
14617 IDE: Addressed a problem opening certain projects that prevented the concurrent running of projects from the FaceSpan IDE.
14605 Fixed a problem that prevented to compilation of scripts on Japanese systems when debugging is enabled.
14606 Fixed a Cocoa NSRangeException when pressing Return within an unclosed string literal.
14612 Addressed several stability issues in the Explorer. These fixes *may* also address other stability problems within the application as a whole.
14625 More Explorer stability fixes.
14624 Typing Return at the end of a line like 'one + two' no longer inserts and end statement.
14625 Corrected a regression that could cause a hang when pausing a script.
14632 The 'Paste as String Literal' command no longer attempts to escape newline characters.
14625 Corrected an NSRangeException that occurred if a script ended in a -- or # style comment without a newline.
The new build is 5.0d66.
This build addresses a serious regression in the 5.0d65 build.The new build is 5.0d65.
This build integrates several editor and debugging improvements from the Script Debugger 4.5 GM release.Improvements to the Breakpoints window: clicking on a breakpoint now selects and scrolls to the statement carrying the breakpoint and editing the text ahead of a breakpoint causes the breakpoint's location (line number, etc) information to be updated as you type.
Find in Project no longer strips leading and trailing spaces from the search string.
Addressed some problems that could prevent projects from opening properly. This manifested its self is being unable to run a project.
Addressed a crashing bug when opening projects that had window state information referring to a non-existent object.
Fixed a regression that caused a crashing bug when adding new Expressions.
Resolved a crash expanding Script Editor in the Known Applications inspector.
Recognize QuarkXPress 6.1/6.5 as an application that will be launched by AppleScript.
A series of dictionary explorer crashes have been resolved.
Window zooming problems when the dock is positioned on the left have been resolved. Window zooming on multiple-monitor configurations has also been improved.
Fixed a series of problems where FaceSpan wound incorrectly consider a cached dictionary out-of-date and reload (potentially causing application launches).
'Unicode text' no longer gets changed to 'text' when compiling scripts.
Auto-closing has been improved yet again.
Replace All's handling of wrap around has been improved.
The Uncomment command is better about dealing with whitespace following the -- or #.
The new build is 5.0d64.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b29 release.The balance command now balances #-style line comments.
The balance command now balances multiple line comments that are indented because of an enclosing block structure.
The debugger no longer treats #-style line comments as executable statements.
Auto-paring has been improved a little by not auto paring if you insert a delimiter directly in front of an existing word.
Addressed a bug in auto-closing that happens when a script begins with a block structure, and you edit a second block structure that follows it.
Addressed crashing problem that could occur when opening FaceSpan projects.
Addressed an explorer/browser crashing problem that most frequently caused FaceSpan to crash when stepping or stopping scripts.
The application icon no longer moves when resizing the Crash Reporter panel.
The Dictionary>Open In New Window command now works with Scripting Additions dictionary windows.
The new build is 5.0d63.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b26 release.Integrate UKCrashReporter 0.3 to improve crash reporting, particularly on Leopard systems.
Resolved a problem where % appears in the Table Of Contents menu for handlers within 'using terms' blocks.
The in-memory dictionary cache is now cleared when the on-disk dictionary cache is cleared.
A Cocoa exception when typing 'using' into the end of a script has been resolved.
Paste Tell for Adobe Illustrator CS4/CS3 inserts the correct app name.
A number of crashing bugs related to the Explorer have been resolved.
Improved FaceSpan's ability to determine which applications will be launched by the Look Up Definition inspector (Extensis Portfolio, Timbuktu, Mail).
The 'Default editor for OSA scripts' setting in the General preferences panel now works as intended.
The current line indication (when paused) no longer includes the preceding line when the preceding line ends with a " character.
Corrected a spelling error in the Reload Dictionary Meta-Data confirmation sheet.
Integrated Matt's updated sdefTypes.sdef file which provides improved descriptions of AppleScript's built-in data types for sdef-based dictionaries.
Option-Return once again inserts ¬<Newline>.
The new build is 5.0d62.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b22 release.The "Ignore Case" option in the Find in Project window is now operable.
FaceSpan now parses 'handler({a,b}, x)'-style handler declarations properly, both in the TOC menu and in the debugger.
Fixed a Balance bug that prevented the selection of a block that surrounds a string literal.
'text 1 thru -1 of "Hello"' no longer gets converted to 'texts 1 thru -1 of "Hello"' following a compile. Apple came through with a workaround for this one!.
FaceSpan ignores the SDEF cache when reloading a dictionary after Script Debugger has detected that the application has been altered.
Several more Balance bugs have been resolved.
FaceSpan no longer reports "Cannot Execute" when a breakpoint is set on a statement that immediately follows a property definition.
FaceSpan now correctly indicates that Bare Bones Software's Mailsmith 2.1.5 will launch when opening its dictionary.
The option- modifier no longer causes the Table Of Contents menu to become sorted. Table of contents sorting is no longer case sensitive.
Fixed a bug that should improve FaceSpan's ability to preserve the text selection across a compile - it should be at least as good as FaceSpan was.
Added a hidden preference key (PrefEditorSD40StyleTabStops) to restore the FaceSpan Show Tab Stops appearance.
Corrected a bug where the Tell Context inspector did not properly track text selection changes until FaceSpan had been made inactive and then active again.
Integrate Break On Exceptions, Break On Events and Break On Breakpoints toolbar icons.
The new build is 5.0d61.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b18 release.The SDEF caching preferences have been restored to the Dictionary prefs panel.
The Dictionary> Activate command no longer provides an Option- modifier for Reveal In Finder. This capability is, instead, provided by the File>Reveal In Finder command.
The Shift key no longer modifies the Next button in the Find/Replace panel.
The Key Binding prefs panel properly displays the arrow key glyphs.
The Key Binding prefs panel now properly handles the Command-Delete key combination.
Selecting an item from the Find String history popup no longer auto-invokes the Find Next button.
Corrected a problem that caused Console messages to appear with using the Fonts & Colors prefs panel.
Widened the click-to-select-line area in the margin of the script editor.
Fixed Key Bindings outline display problems on Tiger systems.
Refinements to the Viewer window Action menu.
FaceSpan correctly recognizes that the Opal application will be launched when reading its dictionary.
More balance bug fixes.
Intermittent problems opening 'aete'-based dictionaries have been resolved.
Paste/Cut/Clear/Duplicate enabling problems in browsers have been resolved.
Text replaced by the Find/Replace panel now carries the Uncompiled Text style.
FaceSpanKit now allows you to use 'my application' and 'current application' interchangeably.
The Look Up Definition inspector searches FaceSpanKit when there is no tell block surrounding the current selection.
The new build is 5.0d60.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b17 release.Pressing Option-" now correctly inserts Æ outside of string literals.
The Reset buttons in the Key Bindings preferences panel have been removed.
The Scripts/Clippings menus and inspectors no longer show filename extensions.
The handling of modifier keys in the Clippings and Scripts menus and inspectors have been improved: Shift = Reveal In Finder, Option = Edit.
Option-clicking the split-pane close button closes all splits. There is also a new command in the Edit menu (hold down option- modifier to see it).
Script Debugger now warns you when it is about to launch applications to complete a Look Up Definition search. A panel is presented where you can choose which of the applications are to be launched.
It is no longer possible to edit the *value* of an expression in the debugger.
Removed the Command-~ key binding from Edit> Uncomment to allow cycling windows.
Corrected the default shortcuts for Go To Next/Previous handler.
Browser/Explorer views no longer offer the cut, paste, or Select All menu commands.
Replacements made with the Find/Replace panel are now shown in the uncompiled text style.
Menu key bindings now appear in Contextual Menus.
The Applications inspector is once again called the Known Applications inspector.
Undo/Redo in the Find panel no longer throw exceptions.
The "Go to Current Line" now selects the text of the current statement.
Corrected Activate misspelling in the Dictionary menu.
Improved the Split-pane dividers.
Clicking in the gutter selects the highlighted block. Double-, Triple-, etc. clicking selects the enclosing blocks.
Problems where the TOC menu failed to update following edits have been resolved.
Issues surrounding double-clicking at the end of a line have been resolved.
The Replace All command now starts at the beginning of the current selection.
Issues surrounding expressions and enabling of Dictionary > Reload command have been resolved.
It is once again possible to quit the IDE with an active sheet.
Search > Go To Line dialog validation has been improved.
Problem with the value changed color in result drawer have been resolved.
The Look Up Definition inspector now beeps when it finds nothing.
Inspectors no longer loose their titles.
A series of balance bugs have been resolved which should improve block highlighting as well.
Yet more improvements to the auto-closing of AppleScript blocks.
debugger now clears the result when a script starts executing.
Improvements to Marker detection: '-- text >> text' is no longer recognized as a marker.
Resolved a crashing bug when invoking a clipping that uses the 'xx[[selection]]yy' directive in an empty document.
Auto-close inserted 'end' blocks are now undoable.
I have improved the handling of Open New Dictionary Window: it now cascades the newly created window to make it simpler to understand what has just happened. I've also resolved some bugs in the way dictionary window state info is saved and restored.
The new build is 5.0d59.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b12 release.Moved the Open Dictionary submenu within the File menu to avoid accidental miss hits while trying to use the Open Recent submenu.
Corrected a Cocoa exception that occurs if you press the - button in the Text Correction prefs panel while editing a newly added text correction.
on «event xxxxyyyy» blocks now auto-close as they should do.
FaceSpan now correctly handles clippings files with UTF-8 and UTF-16 BOMs.
The Scripts menu and inspector is finally operational. It supports OSA scripts, shell scripts, Automator workflows and launchable applications. NOTE: like SD3, if you run a script from the Scripts menu/inspector when its document is already open in Script Debugger, the opened document is executed - this is the only way to debug a script run from the Scripts menu/inspector.
Enter key no longer triggers text corrections.
The '--»' is now recognized as a marker.
A number of instances where the auto-close feature incorrectly inserted 'end' statements have been addressed.
Balance command now handles compound statements (tell x to y, if x then y).
Balance command now balances string literals and comments.
'Paste As String Literal' now properly handles the case where you are pasting into an existing string literal (the pasted text is no longer wrapped in quotes in this case).
I hope that I have resolved a long standing crashing bug that sometimes occurred when displaying object specifiers in the Results display.
Scripting Additions browser now shows the location of Scripting Additions via icons in the browser.
The Control- modifier for auto-paring and auto-close now inverts the corresponding preference setting.
Corrected a problem that could sometimes cause FaceSpan to clear the Hide/Show Icons setting in the Applications inspector.
Value viewer now handles application references using the typeApplicationBundleID AEDesc.
Fixed bugs relating to the editing the value of properties that have multiple data types (enumeration and scalar) in the Explorer.
Added a preference that controls the syncing of view settings when using split-panes. Note that holding down the Option key when changing a view setting inverts this preference.
Addressed a problem where indentation highlighting would stop working after split panes were created and then closed.
Addressed a problem that caused the 'path to me' command to fail.
Addressed an NSLock problem that occurs when reporting runtime errors in the IDE.
Addressed a problem that caused other applications to fail when saving changes to project resources after saving a project in the IDE.
SQLite plugin: the SQL file property is now settable.
The new build is 5.0d58.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b8 release.Resolved a parsing error that happened when inserting new lines in the middle of existing lines. The newly created statement would not be correctly recognized as a potential breakpoint.
Resolved a problem where the suppression of auto-paring did not happen when the insertion point was within a string and when inserting at the end of a script.
Fixed a regression in the 5.0d57 release that caused the debugger to pause before try/with/considering statements (scripts must be recompiled to see this fix).
Addressed a problem where DOS line endings (CRLF) within AppleScript block comments caused downstream breakpoints to be drawn in the wrong places relative to the source text.
Addressed problems with the Control- modifier for suppressing auto-paring of " [ { and ( characters.
Reorganized the Find panel. 'Start At Top' has been removed. Find First, Find Last buttons added.
The FaceSpan runtime now invokes the 'on reopen' event handler when a running project is activated by clicking its Dock icon or by double-clicking its Finder icon.
Fixed a regression in the 5.0d57 build that caused breakpoints to stop appearing in the script editor's gutter.
Fixed a bug that prevented the calling of subroutine handlers on the 'application' object by external applications.
'characters of "String"' now works.
Fixed a debugger problem that caused the debugger to fail to recognize some cases where the project had quit executing behind the IDE's back.
'characters n thru m of ...' now compiles.
The new build is 5.0d57.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b7 release.Improved the performance of the code that generates the Open Dictionary submenu. I hope that this improvement reduces the delay in the presentation of this submenu to an acceptable level.
Resolved a problem where the Running Applications list did not update to reflect the presence of running Faceless Background Applications (FBAs).
Resolved a Cocoa Exception that occurred when compiling scripts in debug mode where the selection was at the end of the script, and the last line of a script dod *not* end in a newline character.
Fixed a Key Bindings prefs panel bug that caused the Factory Defaults to fail when resetting bindings in the current session.
Key Bindings prefs panel now displays names for the Scripts and Clippings menus.
Resolved a parsing bug that prevented potential breakpoints from appearing when pasting multi-line code into a window.
Resolved a auto-scroll on pause problem that occurred after split-panes have been closed.
FaceSpan correctly remembers the last choice when dropping text files.
FaceSpan no longer offers to paste the contents of non-text files that don't have an HFS file type. For instance, Script Debugger no longer offers to paste the contents of dropped a movie file.
Fixed a bug that caused the Key Binding override alert to appear multiple times when replacing an existing key binding.
For Leopard users, find hits are now highlighted the "Leopard way".
Added the Control modifier to suppress auto-paring and auto-closing.
Resolved a bug that could cause FaceSpan to hang when typing a closing " at the end of a statement.
***Added TextMate's Command-Return*** which inserts a new line after the current line regardless of where the insertion point is. Note also that Command-Option-Return adds a AppleScript line continuation to the end of the current line before inserting the new line.
Fixed a problem where splitting a text view sometimes caused the editor to loose keyboard focus and as a side-effect of this caused the view menu to incorrectly manage text view menu items.
Fixed a bug that caused a split-pane close box to remain after closing the last split-pane in an editor.
FaceSpan now displays an alert when it detects duplicate plugins during startup.
The 'function key modifier' enumeration has been removed. This addresses a problem where the 'function key modifier' was being reported incorrectly in the event passed to a 'on key down' event handler.
The new build is 5.0d56.
This build integrates several editor and debugging improvements from the Script Debugger 4.5b4 release.Resolved a series of crashing bugs that occurred when compiling scripts with debugging enabled.
Resolved a bug where the Stack would incorrectly display 'Implicit run' instead of the correct handler name when stepping into the first handler in a script.
Resolved a series of crashing bugs that occurred when editing scripts. These crashes generally happened when editing the end of a script.
The auto-paring of " { [ and ( characters now only operates when *not* editing the contents of a string or comment. This avoids the annoying problem where typing a " character within a string inserts 2 quotes.
The Paste Event Handler submenu of the Edit menu once again operates correctly.
The new build is 5.0d55.
Removed the auto-discovery of local variables feature introduced in 5.0d54. This feature is just not ready for prime time.
The new build is 5.0d54.
*** Added an SQLite plugin to the FaceSpan distribution (Only tested on 10.5 (Leopard)).
Resolved a regression in the 5.0d53 build that prevented the FaceSpan IDE from operating correctly on 10.4 (Tiger) systems.
Implemented the AppleScript 'start log' and 'stop log' commands. Added a 'logging enabled' property to the application object.
Fixed the application object's 'key modifiers' property so that it works correctly on 10.5 (Leopard).
Added a Search field to the Library inspector.
Fixed several drag bugs the Library inspector's outline.
The runtime now disallows setting a window's visible
property to false when the window has an active sheet. This works around some strange Cocoa behavior.
The debugger's Break On Exceptions feature now works property with try
/end try
blocks (ie. when there is no on error
statement). NOTE: you must re-compile scripts in order for this new feature to become operable.
The debugger now recognizes implicit local variables and should no longer require you to explicitly declare your variables with the AppleScript local
statement in order to see your variables when debugging. NOTE: you must re-compile scripts in order for this new feature to become operable.
Resolved a crashing bug that occurred when compiling scripts with nested script object definitions.
The new build is 5.0d53.
Resolved a problem where '*** +[NSThread isMainThread]: selector not recognized' messages would appear on the system console when opening projects on 10.4 systems.
It is now possible to specify a negative minimum value for a stepper control.
The FaceSpan runtime now properly respects the tab among text fields/all controls setting in the Keyboard Shortcuts tab of the Keyboard & Mouse panel of System Preferences.
The FaceSpan runtime once again returns the correct value for the application's 'version' property.
A problem that prevented text fields from properly activating in windows without a title bar has been resolved.
A problem where popup button menu tracking caused the underlying window to be dragged has been resolved.
The object outline in the IDE now indicates number of children each object contains.
The new build is 5.0d52.
Resolved a crashing bug that occurred when one presses delete while the cursor is located at the beginning of a script editor.
Resolved a series of race conditions that could arise when using multiple concurrent tasks.
Changed the order of radio buttons in the Library's Radio Button Group widget so that the first button is at the top.
Resolved a crashing bug when compiling unnamed script object declarations.
Resolved a series of bugs that occurred when closing split panes.
Added an 'Open File in AppName' command to the Resources panel's Action and Contextual menus - this command does the same thing as double-clicking a resource: it opens the file in an external editor.
Corrected a Regular Expression error that occurred when performing an unsuccessful Find Previous operation.
Pasting text copied from a script editor into another application now includes AppleScript style information.
Corrected a problem on PowerPC machines that caused AppleScript error locations to be incorrectly reported.
The Move Forward, Move Backward, Move to Front and Move to Back commands when issued while the current selection is in a text editor now work properly.
The debugger now properly detects variable changes when a 'set {v1, v2, v3} to {1, 2, 3}' style assignment is made.
The new build is 5.0d51.
Fixed a problem where whose clauses involving a control's value
property would not evaluate properly.
Fixed a problem where if you drag a menu item into the main menu bar, the resulting application's menu draws incorrectly.
Fixed a problem in the IDE where you were not able to drag menu items onto/into other menu items to create a sub-menu.
Fixed a series of assertions that resulted in alarming diagnostics appearing in the Console log.
Restored Script Debugger 3's command keys for the Comment (Command-`) and Uncomment (Command-Shift-`) commands.
Fixed a problem where the Uncomment command did not properly handle the case where there are whitespace characters preceding the comment(s).
Arrow keys work once again in the Dictionary search results pane.
A crashing bug that occurred when summoning the Find In Project window while a menu/menu item is selected in the project outline has been resolved.
A problem that prevented projects from closing if the user had used the split-pane features of the script editor without actually making the editor take user focus has been resolved.
The new build is 5.0d50.
The Revert to Saved command now operates.
Discarding unsaved changes when Quitting now works properly. In previous builds, FaceSpan would ignore your direction to discard changes and prompt you to save any dirty projects.
The Paste Event Handler menu now wraps the current selection rather than replacing it.
Improved the way display panel
handles windows with the remember frame
property set to true. On slow machines, previous builds would still present the window centered and then move it back to the remembered frame.
Resolved a problem where buttons in accessory views attached to non-sheet panels would fail when clicked.
This build introduces a number of additional IDE stability fixes for Tiger users.
Resolved a crashing bug when calling the invoke
, listeners
, call
and fork
commands on the application object
The new build is 5.0d49.
Fixes the behavior of the dock count style
property, corrects a number of misbehaviors with the display alert
command, and cures some compilation and dictionary-opening crashes.
The new build is 5.0d48.
New feature: Text completion when you’re typing in a code editor. Type something partial and hit the Esc key to see it in action. This is also inherited by Script Debugger 4.5, of course.
The Applet and Droplet templates and behavior have been changed; please see the Alpha Doc for documentation. If you have already written an applet or droplet, you’re going to have to alter it.
Some big crashers have been fixed, and the problem with adjusting the design window height has been fixed at last.
The new build is 5.0d47.
The big improvement here, I think, is the debugging interface. The three crucial options, Break on Breakpoints, Break on Events, and Break on Breakpoints, can now be viewed and toggled in the toolbars that appear above the code in the main window and the debugging windows while debugging. You can also make them appear in the main toolbars at the top of the main window and the debugger window, and elsewhere — I say “make them appear” because for that you will need to customize the toolbar. The icons, of course, are just joke placeholders, but you’ll find that the red/green color toggling makes it extremely clear to your subconscious mind what the current option settings are, and the toolbars are just a much more convenient place than a menu to perform these settings. You should find that the whole debugging experience is now becoming very smooth.
When using do shell script
, you should, as elsewhere (e.g. Script Editor), make no assumptions about the PATH environment variable. We are hard-coding behind the scenes to /usr/bin:/bin:/usr/sbin:/sbin
, but your best approach is to use full paths for shell commands.
Other changes in this build are all actually changes in what you might call the “Script Debugger core” of FaceSpan (meaning that they will also be inherited by SD 4.5):
When you’re editing code, you can now just enter Unicode directly; FaceSpan is no longer restricted by the old AppleScript rules which said that only MacRoman characters can be used, but is a full-fledged Unicode editor, in keeping with the change in Leopard’s AppleScript where strings are Unicode strings.
Also (and, in fact, as a consequence) the age-old restriction on the length of scripts, where a script over a certain size would start to misbehave in various ways, is gone; a script can now be as long as you like.
And the code editor is smarter about what happens when you double-click to select a word, because now it understands Unicode characters as being ordinary characters within a word.
Again, as part of this change, when you type Return in a script, that character will now be an LF (linefeed) character, not an old MacRoman Return character as in the past. This will have many benefits; for example, it will be much easier to include a multi-line shell script (or Perl, or Ruby, or whatever) within your AppleScript code.
There are also various bug fixes to the code editing behavior, such as improvement of the algorithm that automatically inserts “end” for you when you enter the start of a block, and what happens when you select and delete an entire line.
You’ll also notice a change when you summon the Find dialog with Command-F: there’s a new checkbox, “Auto-close Find Window”. This change was suggested by a Script Debugger user. If you check it, then the Find dialog will vanish after finding if the find was successful.
The comment character inserted by the Comment command is now a preference; you might specify, for instance, the old-style comment delimiter (two hyphens), the old-style delimiter plus a space, which looks nicer, or the new Leopard-style #
delimiter; the Uncomment command recognizes either type of delimiter.
Another small but pleasant change is what happens when you change your AppleScript Preferences (Fonts & Colors). It used to be that you could close this pane without pressing the Apply button, and your changes would not be applied. Now, if you try that, you’ll get a warning. It’s a tiny thing, but it improves the user experience.
Finally, the ability to click once in the left margin to select an entire line, which vanished after SD 3, is back.
The new build is 5.0d46.
The big news is that the Script Debugger debugger has now been incorporated into FaceSpan. Please watch this movie to learn how to use it. This is a work in progress but it is very functional and very cool and we wanted to get it into your hands as soon as possible.
There is a known debugger issue on PowerPC machines where if you hit a breakpoint and fall into the project, you can’t get the Debugger window to open. The workaround is to open the Debugger window before you run the project, and just leave it open.
Some other changes:
We’re taking a second cut at implementing object persistence between runs of your application. You no longer have to use the persistent data
of a widget and store and fetch the value in code. Instead, the IDE has two new checkboxes: “persistent script” and “persistent value”. If you check “persistent script”, then the responder’s script will be saved and restored automatically between runs of your application, so its script properties and other globals (not to mention its code) will come back to life when your app starts up exactly as they were when the app last quit. If you check “persistent value”, then if the widget has a value
property, it will be saved and restored (note that other appearance-related properties, such as enabled
or e.g. the min and max of a progress indicator, are not automatically saved).
The new “Signature” field in the application object’s attributes inspector lets you give your app a four-letter creator code (for those who still insist on living in the dark ages — I’m looking at you, John Welch).
A recently introduced bug with combo boxes and secure text fields was fixed.
The notion “transparency” was changed to “opacity” so that 100% means completely opaque, as is logical.
The Barcode Scanner plugin now has a “did start” handler.
The new build is 5.0d45.
Okay, this time FaceSpan really works on Leopard. Really!!! There was a long period during which we thought this would be impossible (Apple royally messed up things for us), but in the end ingenuity triumphed, mostly. A couple of very small issues have not yet been solved:
The “Display XML (CSS)” example doesn’t work on Leopard (or on Tiger 10.4.11), because we haven’t been able to work around an apparent bug introduced in the new version of Apple’s WebKit, and so we can’t get XML to display using CSS.
The example “The Garden of Forking Paths” is not working on Leopard (and might even crash) because, in general, forks are not working on Leopard yet. This is due to a change in how osascript works on Leopard, and again we have no workaround as yet.
Now, before going on, I need to raise some issues introduced by the fact that we now run on two platforms. The ground of being here is that we think of ourselves as Leopard-primary — we run mainly on Leopard and produce mainly Leopard apps. However, we do still run on Tiger and produce Tiger apps as well. Therefore, two kinds of question remain:
How long are we going to be able to keep this up? Answer: Unknown. At some point we are going to have to abandon further support for building on Tiger, but we have not yet reached that point. Our goal as of now is to continue work on both platforms, so that both are eventually completed. But at some point after that, we will then continue development for Leopard and not Tiger.
What happens if you write an app on Leopard and build for Leopard, and then run that app on Tiger? What if there are Leopard-only features in it? Or, what happens if you open a Leopard FaceSpan project on Tiger? Basically the answer is: If you are running FaceSpan on Tiger and you try to use Leopard-only features, we can stop you easily enough. For example, there are no longer any HUD windows in Tiger. So if you run FaceSpan on Tiger, you won’t even see an option to make a window a HUD window any longer. But if you start on Leopard and then move the app or the project to Tiger, it’s more complicated. Some things won’t work at all, and some things will be automatically converted into other things. For example, there are no longer any HUD windows in Tiger. So if you use a HUD window in a Leopard project, it will show up as an ordinary utility window on Tiger. This situation likely to cause strain, and our policy on the matter is not settled. One of us (Matt) has been arguing that we should not even try to aim for backwards-compatibility: i.e., if you build on Leopard, you get a Leopard-only app, because Apple has just made backwards-compatibility too hard (remember, not only the available widgets and their behavior, but the AppleScript language itself, have changed in ways that are not backwards-compatible). However, all of this is still in flux, so right now you can move a Leopard project or app backwards onto Tiger.
The following are new Leopard-only features, because they were introduced by Apple as part of Cocoa on Leopard (on Tiger they are unavailable and do nothing):
The segmented control has a new border style setting.
The text field has a new “etched text” appearance option.
The following are changes to the Leopard/Tiger status of things:
HUD windows no longer exist on Tiger; they are a Leopard-only feature. A HUD window moved from Leopard to Tiger becomes an ordinary utility window.
iLife windows are gone completely as a separate class, because on Leopard they are now the norm (all windows are textured windows).
The following is an improvement in the editor:
The following are new miscellaneous language / dictionary changes:
A drawer now supports three FSOperations to open, close, or toggle the drawer. This will make hooking a toolbar item (for instance) to a drawer to open and close it absolutely trivial.
An alert can now optionally have a suppression checkbox. This is because these are not only common, but in fact in Leopard they are now a standard. If you are putting up a warning of some kind in an alert which occurs repeatedly every time the user does a certain thing, you can add a suppression checkbox so that the user can say, “Okay, I’ve learned about this, don’t show me this alert ever again”. Similarly, you can offer the user an option in an alert, and the user can say, “I don’t want to be offered this option any more, I’ve made my choice.” Implementation of the user’s wishes is completely up to your code; we don’t do anything automatic. You check the suppressed
item in the alert reply record, and if it is true, you are responsible for saving something off as persistent data and for checking that persistent data the next time you’re thinking of showing the alert.
String conversion commands have been added to convert text to and from entityized text suitable for use in HTML and XML strings.
The call
command now has a new when idle
parameter. This allows you to run a handler once automatically when the user has been idle for a certain length of time.
The file
property in the pdf view, movie view, and quartz composition view is now called displayed file
because using the name file
was causing a terminology conflict.
The new build is 5.0d44.
There is effectively no new application-building functionality, but there are some miscellaneous internal runtime changes to cope with Leopard; these should not be noticeable except that without them, FaceSpan apps can’t run on Leopard, so this release is strongly recommended for all users! The main visible changes have to do with the FaceSpan IDE interface.
The biggest news as far as I’m concerned is that the editor is now “smart” as you create script content. When you type the opening line of a block and type Return, the block is closed for you (e.g. repeat
or if
automatically generates end repeat
or end if
); this is a Text Editing pref (auto-close blocks) and can be turned off it you don’t like it (but why on earth wouldn’t you like it????). Similarly, when you type an opening delimiter, the closing delimiter is typed for you (e.g. parentheses, quotes); again, this is a pref (auto-pair characters). This latter behavior may take some getting used to, but those of us who are accustomed to it (from TextMate) are very fond of it, so give it a try before making a judgment.
There is a new Text Corrections feature; see the Text Correction preference pane. It performs text substitution on the fly as you type in a script. Basically this means you can do things like type <>
and get ≠
, but of course you are free to add substitutions of your own.
When creating a new project, the main project window now adopts a reasonable size and position. Similarly when zooming a project window. Basically, the window now knows that you’ve got inspectors and tries to keep mostly out from under them.
The left side of the project window, the “Objects” and “Package” outlines, now has a new look and behavior modeled after the Leopard Finder sidebar. Drag-and-drop into the Package section now works; also, when you add an image to the project’s package, you can now work with it properly in the IDE.
Inspector behavior should now be more rational and less buggy. The inspectors have a new look and some new behavior. Note that the attribute and frame inspectors have been joined to become views of a single inspector; switch between them using the little buttons at the top of the “Object” inspector, or shift-click a little button to see both at once. As with everything, the icons in the little buttons are just placeholders, so pay no attention to how they look!
The at
parameter in a duplicate
command is now optional; the default is to place the new object at the end of the container of the object being duplicated.
The Ed Stockly crash-on-quit bug may be fixed. If not, the official workaround is to leave Ed Stockly running at all times.
The scriptability of FaceSpan itself is improved. This is mostly for internal use at the moment, but of course everyone will benefit eventually.
The latest new plug-in is the “toxic progress indicator”; contrary to the name, it is not toxic. It’s a progress indicator shaped like a pie chart. (This simulates on Tiger a control that is native on Leopard.)
The new build is 5.0d43.
There is no new application-building functionality. The main change here is within the interface of FaceSpan itself:
The Find dialog now works. So, you can find (and replace) stuff just within the script you are currently editing (as well as finding within a dictionary page). You can even find (and replace) using (gasp) regular expressions!
The Find in Project dialog is a whole lot smarter. It no longer requires the project to be compiled and saved in order to be accurate, and it is “live”, so that as you edit a script, the list of matches changes to account for your edits. Plus, there were some bugs in what the Find in Project dialog would select; these are now fixed. For example, the Project button in the toolbar of the Find in Project window now rockets you back into your actual project, with the correct thing selected. This is definitely cool - and useful, since it allows you leap much more nimbly around your project. Just to give an example, if one script calls myHandler() and you don’t know where that is, you can select it, say Find Selection, then open Find in Project and presto, you’re ready to find myHandler wherever it occurs in your project, and then you can jump to it back in your project window.
The act of compiling is now added to the Undo stack. This is important because compiling can change the text, so if you want to undo a series of edits followed by compilation, you need to undo the compilation first so as to bring the text back to the way it was so you can work your way back through the changes. If you see what I mean. Anyway, the point is that Undo now works better.
The new build is 5.0d42.
In a sweeping change that may well cause breakage to your existing code, the structure of the did broadcast
event has been altered. Previously, the first parameter in a did broadcast
event was the broadcaster. Now, the first parameter is the listener to whom the did broadcast
event was originally sent. Thus, if you were capturing the first parameter in the expectation that it represents the broadcaster, your code will now break. If you want to know who the broadcaster is, you need to append a parameter. Henceforward, the format of a did broadcast
event handler will be: on did broadcast theListener message theMessage user data theData broadcaster theBroadcaster
. If you use the “name munged” form of user handler, the format is: onDidBroadcastTheMessage(theListener, theUserData, theBroadcaster)
.
Why was this change made? Every other event handler has the original recipient of the event as its first (default) parameter; the did broadcast
event did not have it at all. This was wrong, partly because of the “one of these things is not like the others” rule (we should be consistent), and partly because this information might actually be needed (and indeed, we made this change when we encountered a situation where this information was absolutely necessary). [For an instance where existing code has had to be revised to compensate for the change, see the SliderPercentageExample project.]
The HTML view widget has some new properties, events, commands, and notifications. You can now talk JavaScript to an HTML view, which is scarily cool. You can also interfere with the loading of a URL when the user clicks on a link, so as to prevent it or turn it into a download; in particular, this means that the user’s clicking on a link in an HTML view is now a means of communicating with your application. Also there’s a new way to set the value base url
property; this is needed because the current way was failing when there were spaces or funny characters in the pathname. (The real problem here is the absence of a reliable way to convert between posix paths and file URLs; eventually, we’ll fix that too.) [The Display XML example has been extended to illustrate some of these features.]
Images in image views and buttons and so forth are now Internet-savvy: if you set an image as a URL, it will be downloaded and displayed.
Tasks have a new blocking
parameter. If true, your code stops dead at the point where you tell the task to start, and resumes in the next line when the task is done. This means you don’t need to use the task did end
event handler; you can create, use, and dispose of a task all in the same handler.
This build introduces forking. Forking is FaceSpan’s version of threading. It is intended for situations where you want the interface to be live while some script is performing a time-consuming activity in the background. The Alpha Doc has a new section discussing this feature.
Pleasant IDE improvements. A forward/backward navigation item has been added so you can toggle easily between the scripts of two different responders. “Size to Fit” has been supplemented with “Fit to Enclosure”. In response to your requests: when the Project Outline has focus, Delete will no longer delete objects (use Command-Delete instead), and Enter will let you rename an object in the project outline (so to compile, use Shift-Enter instead).
There’s a bunch of fun new plug-ins, including the much-requested graphing plug-in.
The new build is 5.0d41.
Radio buttons now exist. A radio button group’s container must be a box. The library contains a group of three radio buttons in a box that you can use to get started. A button is a radio button if its button type is radio button, or if its behavior is on/off; in the latter case, you can force a set of non-standard radio buttons (such as image buttons) to adopt radio-style behavior. The DynamicMenuSwapper example now uses radio buttons.
Ghosting problems in the IDE when editing inside a container view in the canvas have been fixed. This makes it much easier to work with boxes and radio buttons, as well as container views destined to be placed inside a drawer or tab view.
Toolbars can now be created and configured in the IDE. The Toolbar Test example has been rewritten accordingly, eliminating most of the initialization code.
Tab views can now be created and configured in the IDE. You still can’t actually construct the contents of the tabs directly in the IDE (except for the first one), so for now you should continue to construct the contents of each tab separate container view and move the container views into the tabs in code. The TabViews example has been rewritten to show this.
Segmented controls can now be created in the IDE, and individual segments can be configured. A segment can optionally have an image and/or a popup menu. The example has been rewritten to show this.
Drawers now exist. Drag a drawer onto a window in the IDE to give the window a drawer. The drawer’s properties can be fully configured in the IDE. The contents of the drawer cannot be populated in the IDE, but the same technique used in the tab view example project works. See the Toolbar Test example.
HTML views now maintain a history list, just like a real browser. The HTML View example has been changed to illustrate this.
In a small but significant linguistic change, one script can now set a global in another script even if that global does not already exist. (In fact, you can now set a global on an object that doesn’t even have a script, such as a task that you’ve just created with make new
; the script will automatically be created when you do.) The phrase in the alpha doc claiming that this is impossible has been provisionally crossed out, to call attention to the change. This change makes user script properties of objects a much more powerful place to store data.
The FaceSpan app is quite a bit smaller than it was. Never mind how we did that (magic, perhaps?).
The new build is 5.0d39.
The big news (huge, really) is that menus are now working. This includes menus in the menubar, dock menus, and popup buttons. The menu mechanism has required some rather extensive explanation, which you will find in the Alpha Doc. Several new examples illustrate, and all existing examples have been revised so that their menubar menus behave correctly (or at least, as correctly as possible). All the existing examples are now much closer to being viable, well-behaved applications.
Toolbars in windows, along with toolbar items, are also here. To help implement this, there is now an additional enumerator in the enumeration of delegation rules, main view responder
.
As part of the language improvements involved with getting menus and toolbar items to work, there have been some language improvements in how broadcasts work. These are discussed in the Alpha Doc as well as in the dictionary (under did broadcast
), and existing examples that use broadcasts have been revised to take advantage of them.
While we’re waiting for text views and table views, Mark has provided rudimentary plugins so at least you get some functionality along those lines now, if you need it.
There are improvements to your control over the appearance of the Dock icon.
Fonts can now be expressed in code, and so the font of a widget (such as a text field) can now be set in code.
The date picker widget is now up and running.
The combo box widget is now correctly documented.
There is now a TIFF datatype, which is the base format in which to pass image data around wherever image properties are involved.
In text fields, keyboard tabbing and default button pressing should be better behaved.
The claim in the dictionary that “contents” was supposed to be a synonym for “value” has been withdrawn.
The Dock icon is now settable and the display of the progress indicator and the count indicator in the Dock have been separated so that you can have either (or both).
Miscellaneous improvements to the dictionary display. Suffice it to say that the dictionary is now even more informative and easy to use.
The shift is down
and other modifier-down properties of the application object have been abandoned in favor of a single enumerator list.
As before, there is always a chance that a change to the four-letter codes or other terminology changes may cause your existing code to display the occasional chevrons or incorrect terminology.
The new build is 5.0d38.
Mild warning: The dictionary contained some duplication errors, and in correcting these, we have altered the four-letter codes for some terms. This means, as you know, that the next time you view your own FaceSpan code, you may find that the wrong terminology has appeared in some places. This is not likely, as the terms we corrected are fairly obscure, but it is possible. Sorry about that.
This build includes a new combo box widget, but it isn’t officially documented yet (for example, the dictionary entries for it have not been properly edited and tested yet). Use it your own risk, or just ignore it for now.
The IDE now has a third Inspector, the Frame inspector. All settings having to do with widget size and position have been moved from the Attributes inspector into the Frame inspector.
The IDE is more helpful when you try to drop something like a bag onto the application object in the project outline.
The application now has a resources folder
property representing the Resources folder within the built application bundle.
Utility windows are now working (and the “FloatOverApplications” example has been changed to illustrate this); additionally two other window types have been added: HUD utility window, and iLife window. The Library repertory of starting windows has been expanded to reflect this.
Window features are now effectively complete, both in the IDE and in code. Thus, you can now set a window’s initial position, maximum and minimum sizes, aspect ratio, etc., in the IDE. (Several examples have been changed to take advantage of this, where previously we were setting minimum size in code.) Also, window layering has been improved, and the ability to animate changes to a window’s frame has been added. (The “Calendar” example has been changed to illustrate frame animation and use of the HUD window.)
The background view widget now has a full set of properties, making it as flexible through scripting as it is in the IDE.
An HTML view can now have a transparent background.
It is now possible to set the color of a box’s title.
The time draws near for the first alpha release of FaceSpan 5. Welcome, and thank you for being willing to brave these waters. We think you’ll find FaceSpan 5 exciting and promising, even at this early stage.
And it is an early stage. About half of FaceSpan 5 is completely missing. Menus are not working at all, and the repertory of widgets and dictionary entries is probably about half the size it will be at final release time. Still, FaceSpan is clearly becoming useful, as you’ll see.
The hardest part of being an alpha tester is knowing when something is a bug, when something is a completely missing feature, and when something is in the category of “yeah, yeah, we know”. To help you, we’ve tried to stick to a policy where, if something is broken, we’ve temporarily withdrawn it. So most of what you can see is mostly working. Nevertheless, there are things that work in code but not in the IDE, things that work in the IDE but not in code, and things that are just not working.
Now, in the face of all this, if you start to feel doubtful or inhibited, you’re not going to report bugs, make feature suggestions, etc.; and that’s bad. So the best policy is: Comment! Ask! Suggest! Try stuff! Communicate on the mailing list. We’ll field questions. We’ll note bug reports and feature requests. We’ll copy important information to the Alpha Doc or the FAQ. We’ll fix things in the FaceSpanKit Dictionary to make it more accurate and more instructive. Let’s all learn together and help FaceSpan 5 grow.