Table of contents

New in Smile 3.2
Bugs fixed in Smile 3.2
Known features and caveats for 3.2
Satimage Previous
Release notes for Smile 3.2
Home page Support Release notes for Smile 3.2  
New in 3.2

Smile 3.2 is only for Tiger (Mac OS X 10.4.x) or higher.

Click a theme in the table of contents on the left to jump to the corresponding section.

Data visualization
  • The plot interface has been totally revamped. You can now define curves and change settings and layout from the same interface. you can extract data from files or generate data, make some computations and visualize your data.

    The new File > New plot menu opens the new plot interface. You can also open this interface from the usual Edit settings menus of any plot view.

  • views now have a legend margins property to replace their former legend frame property. Please consult dictionaries of the plot view and planar view commands for more info.
  • There is a new SmileLab palette, named HueRamp, which corresponds to a periodic table of colors (can be useful to represent periodic data.)
  • You can now access more color settings in the graphic settings (text color, background color of the window...).
  • Error bars in curves can now be defined with the upper errorbar data and lower errorbar data properties of the curves, alternatively to the former errorbar data property.
  • Error bars in curves now display even if there is no pattern style.
  • You can now access directly to ncols and nrows of the data of a SmileLab object: for instance, you can now write get ncols of xdata of scalar map 1 of theView. This is faster than get ncols of (get xdata of scalar map 1 of theView).
Data processing
  • The plot interface has been modified and can now handle some data processing. You can open it from the File > New plot menu. Please consult the help from the interface for more info.
  • XNF 2.0 is now defined in XMLLib.osax. XNF is a file data format for storing binary 1D, 2D, and 3D arrays. An XNF's table of contents is an XML tree where you can issue XPath requests. XNF 1.0 was defined in Numerics.osax. The corresponding DTD is located at <> and you can download the XNF library for C/C++.

    Documentation about XNF 2.0 can be found here.

  • You can now change the maximum size of the allocated memory used by Smile in the advanced settings panel of Smile's preferences.
  • The sortarray command has been renamed sortlist (sortarray is now a synonym of sortlist). The sortlist command accepts arrays of reals, lists of numbers, lists of strings, and now lists of dates. It can be used to sort several lists according to one (using the with respect to parameter). It has a new boolean remove duplicates parameter to remove duplicate entries when sorting.
  • Satimage.osax defines two new commands relative to rational functions: pade approximant and fitrational.
  • The statlist command now has a kurtosis parameter. If this parameter is set to true, statlist computes also skewness, kurtosis and median.
  • You can now have the evalformula command return a matrix instead of an array of real (if relevant): use the as matrix optional parameter.
  • The evalformula command now supports a list instead of a record as its with parameter (cf its dictionary definition.)
  • You can set the data of a scalar map to a matrix. You can now set its data property to a record {class:matrix, contained data:z, scale: {aorx,aory}} specifying the scales with arrays of real.
  • The suppress item command now handles better list of indices as direct parameter. This command can suppress items of a list, a record or an array of real.
  • The read binary and write binary commands now handle 64 bits accesses.
  • You can now use length of xdata of c (without get statement) instead of count (get xdata of c) where c is a reference to a curve. This is faster.
Graphic library
  • The Graphic Library Palette has been removed from the Window menu and has been replaced by a new dictionary named Graphic Library, in the Open dictionary menu. This dictionary contains more explanations, images and sample scripts.
  • The graphic window now refreshes when dragging its scroll bars when scrolling. This can be disabled by setting its update screen property to false.
  • The choose CGColor command opens a color picker. The color space parameter specifies if the color must be returned as RGB or as CMYK.
  • The new ClipToImage command restricts drawing to an area defined from an image (affects the transparency.)
  • The graphic library has a new LoadImageWithColorMask command to mask images using color ranges. Please consult the Graphic Library dictionary for more info.
  • The graphic library has a new LoadImage command that loads an image into memory. This can be useful when an image has to to drawn several times.
  • The new BeginImage command can be used to define an image to be used within the graphic library, for example with the ClipToImage command.
  • You can now define custom patterns relative to a widget with its new custom pattern property.
  • The new move while dragging property of a widget specifies whether if it can be dragged by mouse or not.
Interface and interface customization
  • About HTML interfaces: the pageloaded event is sent to the script of a web window when its load is complete. This is the first time to call safely a javascript in a new web window (or in a window modified with reloadURL or set contained data or set path name.)
  • Double-clicking in graphic views now calls the pick in handler with a step:4 argument.
  • If you copy a dialog item in a dialog, you can now paste it without emptying the selection.
  • You can now use negative indexes when setting the selection of an editable text item (for example: set selection of di to {-10, -4}.)
  • The List Box controls of dialogs have changed: they can now display multiple lists of strings or checkboxes in several columns. You can change the number of columns of a List Box control by selecting Databrowser format in its contextual menu. You have to provide a list of lists as its contained data to fill a multicolumn List Box control.
    The databrowser edited event is send to the script of the listbox control itself after an item of the list has been modified. Listbox controls have a boolean property «class Edit» to specify if the listbox control can be edited. If this property is true, you can edit a cell in user mode by clicking on the text of the cell (and waiting) or by using the tab key.
    A full example by script:
    set d to make new dialog
    set bounds of d to {100, 100, 500, 500}
    set di to make new dialog item at d with properties {control kind:352, bounds:{10, 10, 380, 380}}
    set formatter of di to {{width:100.0, name:"title1", kind:boolean, tooltip:"tooltip1"}, {width:150.0, name:"title2", kind:string, tooltip:"tooltip2"}, {width:150.0, name:"title3", kind:string, tooltip:"tooltip3"}}
    set contained data of di to {{false, "a", "A"}, {true, "b", "B"}, {false, "c", "C"}, {false, "d", "D"}}
  • You can define by script the style of the columns title of a multicolumn List Box control: the formatter property of a multicolumn List Box control is a list of records that can now contains a font element {font:f, text size:s, justification:j}. The justification (optional) applies to the whole column: -1 means right, 0 means left and 1 means center.
    set formatter of di to {{width:100.0, name:"title1", kind:boolean, tooltip:"tooltip1"}, {width:150.0, name:"title2", kind:string, tooltip:"tooltip2", font:{font:"Monaco", text size:15, justification:-1}}, {width:150.0, name:"title3", kind:string, tooltip:"tooltip3"}}
Text and Files
  • Unicode windows have a CR/LF menu: it shows which line separator is inserted when you press the return key (default is the prevailing line separator when opening the file). Now when you select an item of this menu, you are asked if you want to change all the line separators of the window (if there are some to change).
  • When you edit a .js file in an Unicode window, ⌅ now checks the javascript syntax (show the first error, no warning). ⌥⌅ display warnings and the first error in a JavaScript console.
  • When you edit a .sdef file in an Unicode window, ⌥⌅ now displays the AppleScript dictionary relative to the sdef file.
  • The list files command has now a of extension parameter.
  • The new URL info for command of the Satimage.osax parses an URL and returns an URL information record (cf Satimage.osax dictionnary.)
  • The new absoluteURL command resolves a relative URL using a base URL or coerce an absolute URL.
  • The new relativeURL command translates an URL into the most suitable relative URL with respect to a given base.
  • You can now open a URL in Smile by selecting the Open menu with the shift key pressed.
  • The new splittext command can split a text according to a given separator pattern.
  • The new readtext command reads a text file. It is equivalent to AppleScript's read command, but readtext reads only text and cares for the presence of a BOM. You can specify the encoding and the maximum number of bytes to read.
  • The new breaktext command breaks a string into an array of strings fitting a given line width.
  • The new normalize unicode command performs a canonical composition of a Unicode string.
XML & Plist processing
  • XMLLib.osax now uses libxml-2.6.29 and libxslt-1.1.21. exslt functions in xsl stylesheets are now supported by the XMLTransform command. Note that XML errors handling does not support any more files or texts containing carriage return (CR) as line separator (line number and selection of an error may be irrelevant in such cases).
  • The XMLXpath command conforms to XPath1.0 and adds the XPath2.0 functions compare, upper-case, lower-case, ends-with and base-uri in the namespace "". XMLXpath also adds the function applescript in the namespace "". The first argument of applescript is the name of the AppleScript handler, the following arguments are passed to the handler.
  • XML and Plist commands now support opening URLs (like XMLOpen "file://localhost/folder/name.xml", XMLOpen "" or XMLOpen "".)
  • The XMLSave command has now two more optional parameters: xml declaration (to omit xml declaration when saving), and encoding.
  • The XMLOpen and XMLSave commands now have a html4 flag to handle HTML instead of XML.
  • You can now XMLOpen a refNum obtained as returned by the open access command.
  • Some XMLLib commands now accept lists of arguments as their direct parameter: XMLParent, XMLTagName, XMLSetAttribute, XMLGetAttribute, XMLRemoveAttribute, XMLDisplayXML.
  • The new XMLAbsoluteURL command of XMLLib.osax resolves a relative URL using a base node (or an absolute URL).
  • You can call AppleScript handlers in an XMLXpath request in the namespace "" (see the example provided with the definition of XMLXpath in the XMLLib dictionnary.)
  • The XMLNewChild, XMLNewSibling, and XMLXPath commands now accept lists of XMLRefs for their parameters which accept XMLRefs.
  • The XMLRemoveAttribute command does not fail any more when the attribute does not exist. It can fail if you provide a namespace that does not exist.
  • The XMLNodeInfo command now works also on url and file references (in addition of XMLRef).
  • In XMLLib.osax, there is now two commands XMLGetNameSpaces and XMLGetNameSpace instead of one command which was named XMLGetNameSpace.
  • The new command PlistMatch of XMLLib.osax returns the elements of a plist array which contains a key with a specific value.
  • The new PlistCopy command copies a dictionary or an array of a plist to another one.
  • You can now compare the contents of two plist elements by using the new command PlistEqual of XMLLib.osax.
  • The XMLXPath command now supports two new xpath functions: 'url' (returns the url of the document) and 'parenturl' (returns the parent url of an url).
  • You can now handle bases of XML nodes with the new XMLBase and XMLSetBase commands of XMLLib.osax.
  • You can now append text to a XML node by using the new XMLAppendText command of XMLLib.osax.
  • The new XMLExists command of XMLLib.osax tests if a reference is valid.
  • The new XMLXInclude command of XMLLib.osax performs XInclude processing.
  • The XMLRemove command does not raise an error any more if its parameter is{}.
  • The XMLDisplay command is now a synonym of XMLNodeContent.
Usability Improvements
  • Smile's menus have changed: the Register submenu is now located in the Smile menu. The File menu has now a submenu New... regrouping New AppleScript terminal, New script, New dialog, New Unicode text. SmileLab interface is accessible from the File > New plot submenu. The Help menu now has a subsection named Documentation about scripting containing most of the previous version Help menu items.
  • You can now find a term's definition by selecting the text and ⌘-click it, or by ⌘-double-click a word in an AppleScript Terminal.
  • AppleScript dictionaries now display in web windows.
  • You can now undo in AppleScript terminals and in Script windows even if you have compiled a script in this window.
  • The Recent files menu now shows the files paths differences when several items have the same name. Each elements of this menu have a tooltip that shows the complete path of the file.
  • When you select the Recent files menu, you can now press the ⌥ key to have the list of files sorted alphabetically.
  • All window settings are now stored in the application's preferences instead of storing them in the global variables of Smile. As a consequence, you will have to redefine your default settings (mostly: the default sizes for each kind of window), but those settings will not disappear any more if you need to reset your globals.scpt file (containing Smile's globals.)
  • You can now set default settings for Unicode windows and web windows in the Preferences dialog (in the 'Windows' tab.)
  • The Open recent menu now handles remote files better.
  • You can now find the previous occurrence of a text selection in Unicode windows (⌘⇧G). (NB: this does not work with regexp.)
  • The web window can now have a custom contextual menu (like other windows, cf Installing a contextual menu.)
  • Some error messages have been ameliorated, particularly when an expected file is missing.
  • strftime and strptime now accept list of arguments.
  • When you open a file that is not a Unicode window but is displayed in a Unicode window, the path name of the window is now the file's path.
Installation and documentation
  • The register dialog now displays info about installed licenses.
  • The local HTML documentation has been revamped, in English and in French.
  • Some examples have been added to the Smile and Satimage dictionaries (in Smile, click on the triangles in the dictionaries to show examples).
  • Smile full version is now shipped with FITS.osax, an osax dedicated to open FITS files (FITS is a file format used by astronomers to store scientific data).
  • The Smile installer now installs some files in /Library/Applications Support/Smile/.
  • The new URLRequest command can send URL requests (POST or GET).
  • The find definition command has changed and now returns the definition as an XML string (a part of a sdef).
  • There is a new Misc submenu in the User Scripts menu, which regroups several tools. Open Huge File has been moved from the Programmers menu (you can use it to visualise the contents of huge files as ASCII text). Formula Plotter use SmileLab to visualize functions defined from formula (curves, surfaces, etc.) JavaScript Terminal is a new tool to develop javascript in a Smile terminal (line-by-line), and perform javascript syntax checking.
Bugs fixed in 3.2
Bugs fixed in 3.2.3
  • On Leopard (Mac OS 10.5), The current processes didn't show up under the 'Scripting/tell...' submenu or the 'File/Open dictionary...' submenu. This is fixed.
Bugs fixed in 3.2.2
  • Smile crashed at startup on Leopard (Mac OS 10.5). This is fixed.
Bugs fixed in 3.2.1
  • Custom contextual menu on web windows were disabled. This is fixed.
  • The Console window didn't save its wrapping property on quit. This is fixed.
  • In some cases when using fitpoly variables in the plot interface, the xfit variable was not computed. This is fixed.
  • The Graphs > Profile sections menu item wasn't correctly deactivated in some cases. This is fixed.
Bugs fixed in 3.2.0
  • In some circumstances, zoom in curves plot could display random vertical lines. This is fixed.
  • The change and uchange commands returned nothing when the direct parameter was {}. Now they return {}.
  • The big endian parameter of the read binary command was not taken into account. This is fixed.
  • When XMLTransform was applied to an XML element (not a whole XML document), the DTD of the document was broken. This is fixed.
  • Some XMLLib.osax's commands that accept a list as direct parameters (for example, XMLGetAttribute, or XMLGetText) returned an item instead of a list of one item if the direct parameter was a list of one item. They now always return a list if the direct parameter is a list.
  • Some duplicate calls crashed the Smile app in some circumstances. This is fixed.
  • set current frame of a movie window didn't work on a Mac Intel. This is fixed.
Known features and caveats for 3.2
  • ASCII files can't be opened in the SmileLab interface. For more info about this, please consult this page.
  • Smile 3.2 does not work under any Mac OS 10.3.x (Panther.) If you are still running Panther (which is excellent) use Smile 3.0.6 (which is excellent.)
Release notes for the previous versions of Smile
The release notes for the previous versions of Smile are available in separate pages.
Copyright ©2008 Paris, Satimage