New in 3.3
Smile 3.3 is only for Tiger (Mac OS X 10.4.x) and Leopard (Mac OS X 10.5.x).
Click a theme in the table of contents on the left to jump to the corresponding section.
New in 3.3.0
Data visualization
- The /Applications/Smile folder now contains a SmileLab droplets folder that contains some droplets to plot basic ascii files in SmileLab.
- The SmileLab plot interface now has a script button (on the bottom of the left menu) that copy a script in the Console window corresponding to the panel displayed in the interface (enabled only on settings panels).
- In a plot view containing several curves, you can now change the index of a curve. Open the curves settings (choose Edit settings in the contextual menu), then choose the Data > Curves section. The curves definitions are now separated by a thick gray line: click and drop that line to move the curve's definition and change its position in the list.
- You can now use GLObjects (a kind of visualization objects that can be contained by a view3D) to define quad sets, tetrahedra or parallelepipeds. Cf the discussion about GLObjects in Smile's dictionary for more info.
- The kinds triangle and quad of GLObjects have been renamed into triangle strip and quad strip.
Data processing
- If the decimal separator defined in the system preferences is not ".", you may encounter difficulties in coercing text into number. For example, "1.5" as real will throw an error if the decimal separator is set to "," (as in French settings). On Leopard, you can now define the use of "." as decimal separator in Smile without affecting the system preferences. This setting can be set in the General panel of the preference dialog of Smile (choose the Smile > preferences menu to open it.) NB: That feature does not work on Tiger.
Graphic library & manipulating images
- Some CoreImage filters are now available in Smile. The new CIfilter names command lists the available image filters. The new info for CIfilter command returns the descriptions of such filters. The new filter image command applies an image filter to an image file. Here is an example:
CIfilter names
info for CIfilter "CIPointillize"
set f to "http://www.satimage.fr/software/images/graphics/rgb.png" --f can be an alias
set fdest to ("" & (path to desktop) & "test.png")
filter image f to file fdest selected rectangle {0, 0, 200, 200} filter "CIPointillize" dictionary "<dict>
<key>inputCenter</key>
<string>[100 100]</string>
<key>inputRadius</key>
<real>4</real>
</dict>"
open alias fdest
- The new Image filters dialog can help you to test the filter image command. Its script button copies in the Console window the script corresponding to the current settings of the dialog. This dialog can be opened by selecting the User script > More Smile commands > Misc > Image filters menu.
- The new image info for command returns info about an image file.
- The new extract image command creates an image file by extracting a subpart of an image file. It can also create a thumbnail image.
- The new mask imagefile command creates an image file by masking an image file with an image mask or with a range of colors.
- You can now save a movie window as an image: provide a path ending with an image file extension (e.g. "path:name.png") to the save command.
- The choose CGcolor command now accepts "hsv" and "html" as color space parameter.
Interface and interface customization
- The application has now a menu bar visible property to hide the menu bar. Windows have a has title bar to hide their title bar and a autohide scroll bars to hide the scrollbars when no scroll is possible. This makes possible to have a window being displayed fullscreen. There is an example in the SmileLab scripting examples (in the Help > Scripting menu), in the Graphs settings and customization category. Here is a script that display a window in fullscreen mode:
set w to window 2
set toolbar visible of w to false
set my menu bar visible to false
set has title bar of w to false
set autohide scroll bars of w to true
set bounds of w to (get my screen bounds)
The menu bar and the Dock are always accessible with the mouse. This script brings back the menu bar and the window's title bar:
set my menu bar visible to true
set has title bar of w to true
set autohide scroll bars of w to false
set bounds of w to {0, 0, 500, 500}
- The new acquire focus and loose focus events (similar to the click in event, cf Smile's dictionary) are now called in a dialog when the focus is given to or lost by a text control.
- popup menu controls now have a boolean ignore meta property. If set to false (the default value is true), the next time the menu property will be set, a meta suffix can be used: "(" to disable the menu item, "<B" to set it to bold, "<I" to set it to italic, like with contextual menus.
Text and Files
The find text command (from Satimage.osax) now has the same behavior as ufind text (previously defined in Smile, now a synonym of find text) and the change command (from Satimage.osax) now has the same behavior as uchange (previously defined in Smile, now a synonym of change.)
Those commands can now operate on Unicode text. They have a new syntax parameter (see Satimage.osax' dictionary), and have their regexpflag options been modified. By default, their regexp syntax is set to "RUBY", so you can use unicode patterns, named groups, lookaround patterns, lazy and possessive quantifiers when using them with regexp. Please note that some patterns like "\>" (end of word) are not supported by the "RUBY" syntax (use "\b" for begin or end of word, or use "\>" with the "GNU_REGEX" syntax.)
Caution: using the change command on a file now changes the file's content.
- The list files command has new optional parameters: not conforming to (to restrict the file list by specifying some forbidden Universal Type Identifiers), after date and before date (to list only files modified in the specified time range) and names only (to get a list of names instead of a list of file specifications.)
- The new writetext command defined in Smile's dictionary can write text in a file specified by a file reference or an url ("file://..." or "ftp://...".)
- The readtext command can now read script files.
- The new digest command defined in Smile's dictionary can make a digest from a string, a file (raw data) or a string containing any raw data encoded in base64.
- The new hash command returns the hash number of a string.
- Satimage.osax's dictionary now defines two new commands exclude items and keep items to handle list of strings (remove items on some conditions.)
- The subscribe folder command has been modified. Now you have to specify a subroutine to be called when some items of the registered folder are modified.
XML & Plist processing
- XMLLib.osax now uses libxml-2.6.31 and libxslt-1.1.22.
-
The XMLOpen command has a new from string parameter. You must provide to XMLOpen a file reference or an url as direct parameter, or an xml string with the from string parameter (e.g. XMLOpen from string "<a/>".)
Commands that supported file references as parameter (e.g. XMLOpen) did supported hfs paths at the same time: you could run XMLOpen "disk:path:file.ext" instead of XMLOpen ("disk:path:file.ext" as alias). This is not allowed any more, to permit such texts to be urls or unix paths. Note that you can still provide an xml string as the direct parameter of XMLOpen for backward compatibility.
- XMLLib commands that accept a list of XMLRef as parameter can now accept an XPathRef instead. An XPathRef is a record defining a list of XMLRef by providing a node and an xpath string. Cf XMLLib.osax's dictionary for more info.
- The new XMLNewIndex and XMLLookup commands can be used to optimize XPath requests by evaluating once and for all an xpath request and putting the results in an index.
- XMLLib.osax commands should not crash any more when you use obsolete XMLRef that has been suppressed with XMLRemove or other XMLLib commands.
- The XMLValidate command has a new against parameter to validate an XML document against a given DTD (provide an alias or an URL).
- The new XMLSetExtras and XMLGetExtras commands associate some AppleScript content with a xml document. Those commands have no effect on the XML part of the document. Those commands are analog to the volatile extras property of Smile's scriptable objects.
- The XMLDocument and PlistDocument commands now return a list if relevant.
- XMLLib.osax now supports more encodings, such as "macintosh" (not recommended).
- The XMLDisplayXML command has a new xml declaration parameter (true by default) to display the xml declaration "<?xml ..." at the first line of the returned text.
- The XMLDisplayXML command now display the namespaces of the elements, even if those elements were defined in an upper level of the XML. For example:
set x to XMLOpen from string "<a xmlns='http://www.satimage-software.com'><b/></a>"
set b to XMLChild (XMLRoot x) index 1
XMLDisplayXML b
--"<b xmlns=\"http://www.satimage-software.com\"/>" (and not "<b/>")
URLs & web windows
- The absoluteURL command now accepts a list as direct parameter.
- You can customize web windows' contextual menu by defining a WebCustomMenuItems(theObject) handler and a WebDoMenu(acmd, theWind) in the context (for example, in a context addition.) WebCustomMenuItems is called on CustomMenuItems to define the contextual menus, and WebDoMenu is called on do menu to handle the contextual menu.
- The URLRequest command has been modified: the request to send is now specified with the body or raw body parameter.
Usability Improvements
- On Leopard, you can now compile scripts made with unicode (e.g.: set s to "ƒ∂÷…~∞ß")
- Leopard users can now check variables in scripts by pressing ⌘⌅ in a script window or in an AppleScript terminal. Then a summary window opens containing information about undefined and unused variables (NB: the displayed information is not exhaustive - some cases can be checked only at runtime).
- In text windows, it was not possible to cancel (⌘Z) an action preceding a save. This is now possible.
- The Find dialog now display better its folder list (now sorted, and older items are suppressed first). The selected folder is now displayed as posix path.
- The Open dictionary menu has changed: Smile's companion osaxen are now displayed first.
- In the Window menu, the ⌥ key sort the list of the opened windows.
- Text windows and Unicode windows now have similar behaviors.
- Find Previous (⌘⇧G) now works in Unicode windows and in Text windows (NB: this does not work with regexp search.)
Installation and documentation
- The Xcode templates are installed in different places in Tiger (Mac OS 10.4) and in Leopard (Mac OS 10.5) to be available in Xcode in both system.
Bugs fixed in 3.3
Bugs fixed in 3.3.1
- Some bugs about auto tabulation in text windows have been fixed.
- The window preferences settings (like tab width) were not taken into account on opening a text window or a script window. This is fixed.
- In Smile 3.3.0, the [:blank:] regexp character set didn't match the tab character. This is fixed.
- Some bugs have been fixed concerning the use of the paragraph accessor of text windows by script (for example, every paragraph of window 2).
Bugs fixed in 3.3.0
- In some previous versions, ASCII files can't be opened in the SmileLab interface: they were considered as binary files. This is fixed.
- In some circumstances, the keyboard focus was not given to the front window (e.g. the Console window the first time it is displayed.) This is fixed.
- Some crashing graphic commands were fixed.
- Dialog's controls that can display PDF now handle better large PDF file: they store only the first page if relevant.
- {1.0} as list of integer didn't work. This is fixed.
Known features and caveats for 3.3
-
Output in text windows is in time proportional to the length of the text in the window. This is a known bug of the text engine used by Smile. In particular, if you encounter slowing down you should consider to empty your Console window (shortcut: ⌥⌘C).
-
Old files corresponding to AppleScript terminals sometimes open without the Handler menu. To fix this, set the «class wHan» property of the window to true, then save it and reopen it.
-
Windows' default settings (defined in the Preferences dialog) are now stored in the application's preferences. You may have to redefine your own settings after installing this version of Smile.
- The RectPath and CirclePath commands of the graphic library did draw their path clockwisely. To respect Quartz's conventions, they now draw their path counterclockwisely. This can affect superposition effects (e.g. when using the "eofill" option of the DrawPath command).
-
Smile's Xcode sample projects use some extra files located in a folder named Satimage includes. On Mac OS 10.5 (Leopard), this folder is badly referenced. The sample projects search this folder at: /Library/Application Support/Apple/Developer Tools/Project Templates/Satimage Sample Projects/Satimage includes but it is located in the new place for Xcode templates, at: /Library/Application Support/Developer/Shared/Xcode/Project Templates/Satimage Sample Projects/Satimage includes.
-
Smile 3.3 does not work under any Mac OS 10.3.x (Panther.) If you are still running Panther, use Smile 3.0.6.
Release notes for the previous versions of Smile
The release notes for the previous versions of Smile are available in separate pages.
|