Nouveautés de Smile 3.3
Smile 3.3 n'est utilisable que sous Tiger (Mac OS X 10.4.x) ou Leopard (Mac OS X 10.5.x).
Smile 3.3 apporte de nombreuses améliorations et nouvelles fonctionnalités. Celles-ci sont présentées ci-dessous par numéro de version et par thèmes. La table des matières en haut à gauche de la page vous permettent d'accéder directement à une section thématique donnée.
Nouveautés de Smile 3.3.0
Visualisation de données
- Le dossier /Applications/Smile contient désormais un dossier SmileLab droplets contenant des droplets permettant d'ouvrir des fichiers ascii avec SmileLab (il suffit de déplacer l'icône d'un fichier ascii sur l'icône d'un des droplets).
- L'interface de SmileLab a désormais un bouton script (en bas à gauche) qui copie dans la fenêtre Console le script correspondant aux réglages affichés (ce bouton n'est activé que sur les réglages d'affichage).
- Dans un plot view contenant plusieurs courbes, il est désormais possible de modifier l'index d'une courbe. Pour cela, ouvre les réglages des courbes (choisir Accéder aux réglages dans le menu contextuel), puis affichez la section Data > Courbes. Les définitions des courbes sont désormais séparées par une ligne grise : déplacez ces lignes à la souris pour déplacer la définition des courbes et modifier leur position dans la liste.
- Il est désormais possible d'utiliser des GLObjects (un type d'objets de visualisation de données pouvant être inclus dans une view3D) pour définir des ensembles de quads, de tétrahèdres ou de parallélépipèdes. Pour plus d'infos, voir la discussion concernant les GLObjects dans le dictionnaire de Smile.
- Les types triangle et quad des GLObjects ont été renommés triangle strip et quad strip.
Traitement de données
- Si le séparateur décimal défini dans les préférences du systèmes n'est pas ".", des difficultés peuvent survenir pour coercer un texte en nombre. Par exemple, "1.5" as real provoquera une erreur si le séparateur décimal est réglé à "," (comme c'est le cas des réglages pour la France). Sur Leopard, il est désormais possible d'utiliser le "." comme séparateur décimal dans Smile sans affecter par ailleurs les préférences du système (ni les autres applications). Ce réglage est conseillé et peu être activé dans l'onglet Général du dialogue des préférences de Smile (accessible depuis le menu Smile > préférences). NB : Cette fonctionnalité ne fonctionne pas sous Tiger.
Bibliothèque de dessin & manipulation d'images
- Des filtres CoreImage sont désormais accessibles dans Smile. La nouvelle commande CIfilter names liste les filtres disponibles. La nouvelle commande info for CIfilter renvoie la description de ces filtres. La nouvelle commande filter image applique ces filtres à une image donnée. Exemple :
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
- Le nouveau dialogue Image filters permet de tester la commande filter image. Son bouton script copie dans la fenêtre Console le script correspondant aux réglages courants du dialogue. Ce dialogue est accessible via le menu User script > More Smile commands > Misc > Image filters.
- La nouvelle commande image info for renvoie des informations concernant un fichier d'image.
- La nouvelle commande extract image permet de créer un fichier d'image en extrayant une sous-partie d'une image. Cette commande permet également de créer des réductions d'images.
- La nouvelle commande mask imagefile permet de créer un fichier d'image en appliquant à une image un masque défini à partir d'une autre image ou d'un intervalle de couleurs.
- Il est possible d'enregistrer une movie window en tant que fichier image : il suffit de fournir un path finissant par une extension d'image (par exemple, "path:name.png") à la commande save.
- La commande choose CGcolor accepte désormais "hsv" et "html" pour son paramètre color space.
Interface et personnalisation de l'interface
- L'application a désormais une propriété menu bar visible permettant de cacher la barre de menu. Les fenêtres ont une propriété has title bar pour cacher leur barre de titre et une propriété autohide scroll bars pour cacher la scrollbar. Tout ceci rend possible l'affichage d'une fenêtre en plein écran. Il y a un exemple de graphique en plein écran dans les exemples de script pour SmileLab (dans le menu Aide > Scripting), dans la catégorie Graphs settings and customization. Voici par ailleurs un script permettant d'afficher une fenêtre donnée en mode plein écran :
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)
La barre de menu et le Dock sont toujours accessible avec la souris. Le script suivant permet de faire revenir la barre de menu et la barre de titre :
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}
- Les nouveaux événements acquire focus et loose focus (similaires à click in, cf le dictionnaire de Smile) sont désormais appelés dans un dialogue lorsqu'un élément de texte acquiert ou perd le focus.
- Les éléments de menu de dialogues ont désormais une propriété booléenne ignore meta. Si cette propriété (valant true par défaut) est mise à false, la prochaine fois que la propriété menu sera modifées, des meta suffixes pourront être utilisés : "(" pour désactiver l'élément de menu, "<B" pour le mettre en gras, "<I" pour le mettre en italique.
Texte et Fichiers
-
La commande find text (définie dans Satimage.osax) a désormais le même comportement que l'ancienne commande ufind text (précédemment définie dans le dictionnaire de Smile, désormais un synonyme de find text) et la commande change (définie dans Satimage.osax) a désormais le même comportement que l'ancienne commande uchange (précédemment définie dans le dictionnaire de Smile, désormais un synonyme de change).
Ces commandes peuvent être utilisées avec du texte Unicode. Elles possèdent un nouveau paramètre syntax (cf le dictionnaire Satimage.osax), et leur paramètre regexpflag a changé. La syntaxe par défaut est "RUBY", ce qui permet en mode with regexp d'utiliser des patterns unicode, des groupes nommés, des "lookaround patterns", des quantifieurs "lazy" et "possessive". Par contre, le pattern "\>" (fin de mot) n'est pas supporté par la syntaxe "RUBY" (utilisez "\b" pour début ou fin de mot, ou bien utilisez "\>" avec la syntaxe "GNU_REGEX").
Attention : La commande change utilisée sur des fichiers change désormais le contenu du fichier.
- La commande list files a de nouveaux paramètres optionnels : not conforming to (pour restreindre la liste de fichiers en spécifiant des Universal Type Identifiers interdits), after date et before date (pour ne lister que des fichiers modifiées dans l'intervalle de temps ainsi défini) et names only (pour obtenir une liste de noms de fichiers au lieu d'une liste de références de fichiers).
- La nouvelle commande writetext définie dans le dictionnaire de Smile peut écrire du texte dans un fichier spécifié par une référence (alias, file, etc) ou par une url ("file://..." ou "ftp://...".)
- La commande readtext peut désormais des fichiers de script.
- La nouvelle commande digest définie dans le dictionnaire de Smile permet de réaliser un digest d'un texte, d'un fichier (données brutes) ou un texte contenant des données brutes encodées en base64.
- La nouvelle commande hash renvoie le nombre correspondant au hashing d'un texte donné.
- Le dictionnaire de Satimage.osax définit deux nouvelles commandes exclude items et keep items pour gérer des listes de textes (i.e. retirer des éléments de listes de texte sous certaines conditions).
- La commande subscribe folder a été modifiée. Vous devez désormais spécifier une routine qui sera appelée lorsque des éléments du dossier spécifié seront modifiés.
XML & Plist
- XMLLib.osax utilise libxml-2.6.31 et libxslt-1.1.22.
-
La commande XMLOpen a un nouveau paramètre from string. Vous devez passer en paramètre direct de XMLOpen une référence à un fichier ou une url. Si vous souhaitez ouvrir un xml défini par du texte, vous devez le passer via le paramètre from string (par exemple, XMLOpen from string "<a/>").
Les commandes qui prenaient des références à des fichiers en paramètre (par exemple, XMLOpen) supportaient également des chemins hfs : par exemple, il était possible de faire XMLOpen "disk:path:file.ext" au lieu de XMLOpen ("disk:path:file.ext" as alias). Ceci n'est plus autorisé, de façon à permettre de passer du texte contenant des urls ou des paths unix. Vous pouvez toujours fournir du texte contenant un xml en paramètre direct de XMLOpen pour des questions de compatibilité.
- Les commandes de XMLLib.osax qui acceptaient une liste de XMLRef en paramètre acceptent désormais également un XPathRef à la place. Un XPathRef est un record définissant une liste de XMLRef en spécifiant un nœud xml et un chemin xpath. Voir le dictionnaire de XMLLib.osax pour plus d'infos.
- Les nouvelles commandes XMLNewIndex et XMLLookup peuvent être utilisées pour optimiser des requêtes XPath en évaluant une fois pour toutes une requête donnée et en stockant les résultats dans un index.
- Les commandes de XMLLib.osax ne devraient plus crasher lors de l'utilisation d'un XMLRef obosolète qui a été préalablement supprimé avec XMLRemove ou en utilisant d'autres commandes de XMLLib.
- La commande XMLValidate a un nouveau paramètre against permettant de valider un document XML para rapport à une DTD donnée en tant qu'alias ou URL.
- Les nouvelles commandes XMLSetExtras et XMLGetExtras permettent d'associer du contenu AppleScript à un document xml. Ces commandes nont aucun effet sur la partie xml du document. Ces commandes sont analogues à l'utilisation de la propriété volatile extras des objets de Smile.
- Les commandes XMLDocument et PlistDocument renvoient désormais une liste lorsque cela fait sens.
- XMLLib.osax supporte d'avantage d'encodages, notamment "macintosh" (non recommandé).
- La commande XMLDisplayXML a un nouveau paramètre xml declaration (true par défaut) permettant d'inclure la déclaration xml "<?xml ..." au début du texte retourné.
- La commande XMLDisplayXML affiche désormais les namespace des éléments même s'ils sont définis à n niveau supérieur dans le XML. Par exemple :
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\"/>" (au lieu de "<b/>")
URLs & fenêtres web
- La commande absoluteURL accepte désormais une liste en paramètre direct.
- Il est désormais possible de personnaliser le menu contextuel des web windows en définissant des fonctions WebCustomMenuItems(theObject) et WebDoMenu(acmd, theWind) dans le contexte de Smile (par exemple, dans une context addition). WebCustomMenuItems est appelée par CustomMenuItems pour définir le menu contextuel, et WebDoMenu est appelé par do menu pour gérer le choix effectué dans le menu contextuel.
- La commande URLRequest a changé : la requête à envoyer est désormais définie par le paramètre body ou par le paramètre raw body.
Confort d'utilisation
- Sous Leopard, il est désormais possible de compiler des scripts contenant des caractères unicode (exemple : set s to "ƒ∂÷…~∞ß")
- Sous Leopard, il est désormais possible de vérifier les variables non définies ou non utilisées en appuyant sur ⌘⌅ dans une fenêtre de script ou dans un terminal AppleScript. Un fenêtre de résultat s'ouvre alors, contenant les informations sur les variables du script défini dans la fenêtre (NB : ces informations ne sont pas exhaustives, certains cas ne pouvant être vérifiés qu'à l'exécution).
- Dans les fenêtres de texte, il n'était pas possible d'annuler (⌘Z) une action précédant un enregistrement. C'est désormais possible.
- Le dialogue Rechercher gère mieux sa liste de dossiers. Le dossier sélectionné s'affiche désormais sous forme de chemin posix.
- Le menu Ouvrir un dictionnaire a été réorganisé : les osax associées à Smile sont affichées séparément.
- Dans le menu Fenêtre, il est possible de trier la liste des fenêtres ouvertes en appuyant sur la touche ⌥.
- Les fenêtres de texte et les fenêtres Unicode ont désormais des comportements identiques (sélection de mots, etc).
- Rechercher le précédent (⌘⇧G) marche dans les fenêtres Unicode et dans les fenêtres de texte (NB : mais cela ne marche pas avec une recherche regexp).
Installation et documentation
- Les templates pour Xcode sont installés dans des endroits différents sur Tiger (Mac OS 10.4) et sur Leopard (Mac OS 10.5).
Bogues réparés dans Smile 3.3
Bogues réparés dans la version 3.3.1
- Des bogues concernant l'auto-tabulation dans les fenêtres de texte ont été réparés.
- Les préférences des fenêtres de texte (par exemple, la largeur des tabulations) n'étaient pas pris en compte à la création d'une fenêtre de texte ou de script. Ce bogue est réparé.
- Dans Smile 3.3.0, l'expression regexp [:blank:] ne trouvait pas les tabulations. Ce bogue est réparé.
- Des bogues concernant l'accès par scripts aux paragraphes des fenêtres de texte (par exemple, every paragraph of window 2) ont été réparés.
Bogues réparés dans la version 3.3.0
- Dans des précédentes versions de Smile, il n'était pas possible d'ouvrir des fichiers ASCII dans l'interface de SmileLab : ces fichiers étaient considérés comme des fichiers binaires. Ce bogue est réparé.
- Dans certaines circonstances, il n'était pas possible d'écrire dans la fenêtre au premier plan (en particulier dans la fenêtre Console la première fois qu'elle apparaît). Ce bogue est réparé.
- Des bogues pouvant impliquer des crashs ont été réparés dans les commandes de dessin.
- L'élément de dialogue pouvant afficher un PDF gère désormais mieux les gros fichiers : il ne stocke que la première page du PDF même si le document originel en a plusieurs.
- {1.0} as list of integer ne marchait pas. Ce bogue est réparé.
Comportements et bogues connus de la version 3.3
-
Le temps d'affichage dans les fenêtres de texte est proportionnel à la longueur du texte contenu dans la fenêtre. Il s'agit d'un bogue connu du moteur de texte. En particulier, si vous rencontrez des ralentissements dans l'exécution de scripts, vider votre fenêtre Console (raccourci : ⌥⌘C) peut être bénéfique.
-
Il se peut que d'anciens fichiers correspondant à des terminaux AppleScript s'ouvrent sans menu Handler. Pour réparer cela, il faut par script mettre la propriété «class wHan» de la fenêtre à true, puis l'enregistrer et la réouvrir.
-
Les réglages par défaut des fenêtres (réglables dans le dialogue des préférences de Smile) sont désormais stockées dans les préférences de l'application. Il se peut que vous ayez besoin de redéfinir vos réglages pour ces préférences après avoir installé la nouvelle version de Smile.
- Les commandes RectPath et CirclePath de la bibliothèque de dessin dessinaient leur path dans le sens des aiguilles d'une montre. Pour respecter les conventions de Quartz, ce sens a été inversé. Cela peut affecter certains effets de superposition (par exemple lorsque la commande DrawPath est utilisée avec l'option "eofill").
-
Les projets Xcode livrés avec Smile (Xcode sample projects) utilisent des fichiers appartenant à un dossier nommé Satimage includes. Sur Mac OS 10.5 (Leopard), ce dossier est mal référencé dans les projets. Les projets Xcode cherchent ce dossier dans : /Library/Application Support/Apple/Developer Tools/Project Templates/Satimage Sample Projects/Satimage includes alors qu'il est installé dans le dossier correspondant aux templates Xcode (qui a changé de place depuis Tiger), dans : /Library/Application Support/Developer/Shared/Xcode/Project Templates/Satimage Sample Projects/Satimage includes.
-
Smile 3.3 ne fonctionne pas sous Panther (Mac OS 10.3).
Liste des nouveautés des précédentes versions de Smile
Les listes des nouveautés des précédentes versions de Smile sont disponibles dans des pages séparées :
|