big XPlatform icon

LiveCodeClips scripts version 2.16

La pile LiveCodeClips.rev contient un certain nombre de scripts multi-plateformes permettant de réaliser des piles fonctionnant dans tous les environnements systèmes. Il y a aussi des astuces LiveCode mises en exemple. Libre à vous de vous de fouiner dedans et de vous en inspirer pour vos propres réalisations !

Les « Libimages » de LiveCodeClips

J'ai regroupé un ensemble de scripts traitant d'un même « thème » technique au sein d'images prêtes à copier-coller dans la pile de destination : ce que j'ai pompeusement baptisé « Libimage ». Outre les scripts, les images possèdent les custom properties nécessaires à leur bon fonctionnement.
Elles fonctionnent en "backscripts", c'est à dire qu'elles interprètent les messages après tous les objets de la pile, à l'instar d'une "stack in use".

bouton scripts d'insertion Installer une Libimage dans une pile

Il est conseillé de les coller dans un groupe que l'on rendra invisible et ensuite de mettre à l'endroit approprié le script d'insertion (et de retrait) des backscripts. Ceci se fait au moyen du bouton « scripts d'insertion » :

activation des scripts d'une libimageUn dialogue permet de choisir le message qui activera la Libimage (preOpenStack, preOpenCard...) et celui qui la retirera des backscripts.
Exemple de script généré :

on preOpenBackground
  insert the script of image "XPlatform" into back
end preOpenBackground
on CloseCard
  remove the script of image "XPlatform" from back
end CloseCard

Mise à jour d'une Libimage

Un outil permet de vérifier les Libimages installées dans vos piles et de les remplacer par une version plus récente dans LiveCodeClips sans être obligé de la réinstaller.

Les cartes de LiveCodeClips

Boutons de commande
aide et nouvelle version Ce bouton permet d'accéder à la présente aide en ligne, ainsi que vérifier la disponibilité d'une nouvelle version.
test du handler Cette icone permet de tester le script de la carte.
installation Cette icone permet d'installer les éléments présents sur la carte.

Adresses du texte d'un mailiRevTool

outil d'extraction d'adresses mail du texte d'un messageRécupère les adresses mail et les noms contenus dans le texte d'un message.
Enregistrez votre message au format texte et glissez le fichier obtenu sur la dragzone métallisée.
Vous pouvez également copier une portion du texte du message et cliquer la dragzone.
Les adresses mail sont récupérées sous la forme d'une liste <nom, adresse mail> séparée par des tabulations et des retours ligne.


Aidesaisie noms et ruesiRevTool

Ce script permet de placer en capitale l'initiale de chaque mot en tenant compte « de l'usage orthographique » : dans un patronyme, la particule n'est pas capitalisée et dans les noms de rue, il est plus correct de ne pas capitaliser les articles. Bien utile pour un carnet d'adresses !


Alertprompt 2.0iRevTool

AlertPrompt est une alternative au « Answer » classique : le message est affiché pendant le délai nécessaire à la lecture du message et disparaît sans que l'utilisateur ait besoin de cliquer un bouton "OK".
Modifié pour ajouter une barre d'avancement d'un traitement de lot.

Commande ou fonctionUsage et paramètres
alert [typealerte],message,[dontclose] Affiche un message pendant le temps nécessaire à la lecture et le fait disparaître automatiquement.
Syntaxe :
typealerte peut être vide ou prendre les valeurs : stop, info, warning, note ou le nom d'une image de la pile (taille maxi 27 x 27px).
message: message affiché
dontclose : vide : le groupe se masque automatiquement. "dontclose" : le groupe reste affiché.

alert "info","Message d'information"
groupe alertprompt alert "stop","Message d'erreur"
groupe alertprompt alert "","Pas d'icone"
initProgress nbitems,message,[hideOK],[typealerte] Initialise le traitement d'un lot d'éléments en déclarant le nombre d'éléments à traiter, le message affiché pendant, l'affichage ou non d'un bouton Stop permettant de l'arrêter et l'icone qui l'illustre.
Syntaxe :
nbitems : nombre d'éléments à traiter.
message: message affiché
hideOK : visibilité du bouton stop permettant d'arrêter le traitement : "hideOK" le masque.
typealerte : stop, info… ou nom d'une image.

initProgress 20, "Message traitement",,"info" groupe alertprompt
progressShow [compteur],[message] Affiche l'avancement du traitement pour un élément donné : barre d'avancement.
Syntaxe :
compteur : valeur du compteur dans la boucle. Passer ici rien (incrément automatique de 1) ou valeur de compteur.
message: le changer si nécessaire.

progressShow
groupe alertprompt progressShow 10,"Veuillez patienter."
GetStopRequest() Fonction permettant de tester si l'utilisateur a cliqué le bouton Stop pendant le traitement.
Syntaxe :
à invoquer dans le traitement d'un item pour quitter la boucle repeat.

if GetStopRequest() then exit repeat
CloseAlertPrompt Permet de fermer le message affiché.
Syntaxe :
Aucun paramètre, masquage du groupe.

CloseAlertPrompt

Avant de copier le groupe, déterminez sa largeur au moyen de la barre de réglages :

largeur groupe alertprompt

Copiez le script à placer au niveau des handlers de la pile principale au moyen du bouton Placer le script généré dans le Presse-Papier.. Le script s'appliquera à tous les groupes alertprompt des substacks de la pile.


Analyse d'une erreur Revolutionrevobug

La pile "revErrorDisplay" contient le libellé correspondant aux codes d'erreur décelés par Revolution.
Ces codes ne sont pas directement interprétables et la fonction ErrorLabels() explicite leur sens.
On peut clarifier les choses en mettant ce handler dans une pile :

on errorDialog x
  answer error ErrorLabels(x)
end errorDialog


Barre d'avancementiRevTool

Barre d'avancementUn modèle de pile visualisant l'exécution d'un traitement.
Le bouton « stop » permet d'interrompre le traitement en cours.
Passer par the dialogdata la liste des éléments à traiter et appeler la pile en mode "palette".

on AppelPile
  set the dialogdata to liste_données
  palette stack [nom de la pile barre]
  answer the dialogdata &"lignes traitées" -- en retour, nombre de lignes traitées
end AppelPile

Script de la pile à adapter :

on DoProcess
  (…)
    -- partie à personnaliser
    put "Traitement "&J &"/" &maxi into fld "avance"
    [traitement d'une ligne de données]
    --
  (…)
end DoProcess


CalendariconiRevTool

icones calendrierGroupes formant une icone de calendrier à la date donnée en paramètre.

La date en paramètre doit être au format « short system date » (format correspondant à l'affichage régional).

get "25/12/1995"
call "SetCalendarDate "&it to grp "[nom du groupe calendrier]"

A défaut de date, le calendrier affiche la date du jour :

call "SetCalendarDate" to grp "[nom du groupe calendrier]"

Choisissez le modèle de calendrier et cliquez sur le bouton bouton d'installation « Installer… » pour copier le groupe.


CalendrieriRevTool

Groupe calendrier

Groupe permettant la saisie d'une date dans un calendrier.
Basé sur FLC calendar.rev de The Flexible Learning Company. Utilise la libimage XPLatForm pour déterminer le premier jour de la semaine afin de mettre en forme le calendrier selon l'usage dans le pays de l'utilisateur.
A l'ouverture de la carte faire :

send "SetCalendar" to grp "calendar"

La date par défaut est celle du jour. On peut également passer une date initiale en secondes :

send "SetCalendar " &quote &myDate &quote to grp "calendar"

Le résultat est retourné dans la globale gCalResult.Le bouton OK retourne la date choisie en secondes et le bouton Annuler retourne "cancel".

Cliquez le bouton « Installer …» pour copier le groupe dans une carte. Si le groupe doit être installé seul dans une pile, cliquer le bouton « modèle de script de pile » pour copier un template de script de pile.


CancelPending suppression message en attenteiRevTool

Script permettant de purger un message de la file d'attente. « the pendingmessages » contient tous les messages planifiés par une instruction du genre :

send message to object in 20

Ce script permet de les détruire si besoin.
Syntaxe :
CancelPending pMsg
pMsg
 : nom du message à éliminer ou "all" pour vider toute la file d'attente.


Chronomètrerevochrono

Chronomètre pour mesurer la performance (temps d'exécution) d'un script.
Installer le script dans votre pile.
Faire un premier appel à Chrono en début du traitement à chronométrer
Deuxième appel à Chrono[message facultatif] en fin de traitement : affiche le temps écoulé depuis le premier appel en secondes et millièmes.

on exemple
  Chrono -- premier appel
  sortcds
  Chrono "Tri des cartes et construction index" -- deuxième appel en fin de traitement
end exemple


Clonage répertoiresclonefolder

Recrée à un autre endroit l'arborescence des répertoires du répertoire choisi, sans les fichiers qu'ils contiennent.


Colornamesrevocolornames

Noms des couleurs de Revolution

Noms des couleurs de Revolution : outil affichant la valeur correspondante RGB et hexa. Cliquer sur la valeur RGB ou hexa équivalente la copie.


Contenu Clipboarddatarevoclip

Permet de visualiser l'aspect du Presse-Papier : clipboarddata (text, html, rtf et Unicode.).


Conversion texteditiRevTool

Conversion textedit

Utilise TextEdit pour procéder aux conversions de documents d'un type vers un autre : par exemple, word vers html.


Convertir au format LegacyconvertLegacy

dragzone

Glissez sur la Dragzone les piles que vous souhaitez convertir au format Legacy de Revolution (2.6).
Les piles converties sont créées sur le Bureau dans un dossier « Legacy stacks ».
Ne fonctionne qu'en environnement « Developpement ».


Cursor AnimationiRevTool

Groupe d'images formant un curseur animé; l'animation se lance et se stoppe avec les instructions suivantes :

  call "startanimation" to grp "cursoranimation" -- lance l'animation
  call "stopanimation" to grp "cursoranimation" -- arrête l'animation


Dates

Exemples de divers formats de la date.
Dérouler le menu local et choisir un format de date pour visualiser le résultat.


fonctions stacks


Dragdata

les différents mode de DragDataOutil de démonstration des données obtenues lors d'un drag selon le paramètre donné à dragdata.
Choisissez le type de drag et glissez sur la dragzone un fichier ou une portion de texte.


Droplet MetacardiAScript

script AppleScript affectant le type et le creator de MetaCard à une Legacy stack (Mac OS9).

Ouvrir le script dans l'Éditeur AppleScript

on open fName

-- a enregistrer comme droplet

tell application "Finder"

set folderName to fName as string

if exists folder folderName then

set fList to every file in folder folderName where name contains ".mc"

else

set fList to fName

end if

repeat with x in fList

set the creator type of x to "MCRD"

set the file type of x to "MSTK"

end repeat

end tell

end open


Décoder un fichieriXPlatForm

outil de décodageTente de déterminer le charset d'un fichier; s'il n'est pas trouvé, affiche une pile permettant de prévisualiser le fichier et de choisir un charset, puis propose de le convertir.
Glissez sur la Dragzone le fichier à analyser ou cliquez le bouton « Test ».
Utilise la fonction xpConvertTextfile() appartenant la Libimage XPlatForm pour déterminer l'encodage d'un fichier contenu dans la globale gdocCharset (3 items : charset,type de saut de ligne,type de fichier).

modèle pile PreviewA défaut de pouvoir déterminer l'encodage, le handler affiche un modèle de pile « preview » pour demander à l'utilisateur de choisir le charset le plus proche. Une prévisualisation du fichier permet de se rendre compte si le charset choisi convient.

Propose ensuite la conversion du fichier avec les éléments trouvés ou choisis.

Cliquez le bouton bouton d'installation « Installer… » pour installer au choix la pile Preview ou le handler de conversion du fichier.


Exemples AppleScript avec LiveCodeiAScript

Exemples de scripts de la Librairie-image AScriptLib

Exemples de scripts de la Librairie-image AScriptLib

Fichier tri par item

tri fichier par item

Script permettant de trier un fichier texte sur un item donné.

Cliquez le bouton bouton d'installation « Installer… » pour copier le le script de tri généré.


Fichiers

liste de fichiers sous RevolutionExemple de script listant les fichiers d'un répertoire au moyen de « the detailed files ».
La fonction XPFileList() de XPlatForm joue le même rôle de manière plus puissante.
Le script explore les répertoires inclus dans le répertoire sélectionné, peut filtrer par type de fichier, etc.


Groupe Plus-MoinsGroupe-Plus-Moins_btns

Groupe Plus-MoinsGroupe de 2 boutons destinés, par exemple, à créer une nouvelle carte ou en supprimer une.
Chaque bouton possède 3 icones : normal, désactivé et contrasté.
L'outil affiche un modèle pour chaque bouton : vous pouvez modifier le nom, le label, le tooltip, ainsi que le script.
Apportez les modifications nécessaires au modèle et copiez votre groupe personnalisé avec le bouton bouton d'installation « Installer… ». Collez-le à l'endroit désiré.


HypercardiRevTool

HyperCard est mort, quel génie ce Bill AtkinsonOn peut importer une pile HyperCard dans LiveCode. La pile convertie possède une propriété "HCAddressing" qui vaut "true" et qui permet à LiveCode d'interpréter automatiquement les scripts faisant référence à des champs ou boutons de fond ou de carte.
Le script de cette carte permet de remettre la propriété à "false" (à condition d'adapter auparavant les scripts en conséquence : supprimer la référence au fond).


Icones des boîtes de dialogueiRevTool

Sous Mac OSX, LiveCode gère deux icones dans les dialogues Answer, Ask et Ask password:

On peut personnaliser ces icones en alimentant 2 variables globales :
grevAppIcon -- id de l'icone application
gREVSmallAppIcon -- id de la "small icon" de l'application qui se place en bas à droite de la grande icone :"information", "question", "error" ou "warning".
Le bouton bouton d'installation « Installer… » fournit un modèle de script installant les icones spécifiques et restaurant les valeurs standards.


Jet de dé

jet de déUn dé à lancer : animation sur un bouton qui se déplace en changeant d'icone.
Juste pour l'exemple…


Keydown sur un champs listeiRevTool

Keydown sur un champs liste

Script de prépositionnement sur la ligne commençant par les caractères tapés.
Le script positionne une puce sur la ligne choisie.
Peut être adapté pour positionner un ou plusieurs boutons de traitement de la ligne sélectionnée.


Langue de l'utilisateuruserlangage

La libimage Xplatform comporte un handler LookPlatform qui initialise les variables de l'environnement utilisateur, notamment la globale gUserlangage correspondant à la langue du compte.


Launchlaunch

Lancer un fichier avec une applicationLancer une appli ou un fichier avec une appli (ne marche pas avec un document html).


Lecture Colors Stylesrevocolrstyles

Lecture des attributs de couleurs d'une feuille CSS

Script lisant les couleurs d'une feuille de styles css pour colorier les champs avec la couleur de fond.

La feuille de style possède des sélecteurs dont le nom correspond à celui d'un champs de l'exemple. En cliquant le champs, on peut changer la couleur de fond et celle du texte.
Le bouton « Restaurer couleurs » rétablit les couleurs d'origine.
Le bouton « générer CSS » applique les changements à feuille de style et produit sur le Bureau une page HTML que l'on peut visualiser.
Exemple à transposer.


Lecture de ResourcesrevoResedit

Lecture du resource fork de fichiers Macintosh

Les fichiers Macintosh possèdent 2 branches : un datas-fork (partie données) identique à un fichier classique ASCII et un resource-fork, ou fichier de ressources, structuré en entités diverses représentant des données système : icônes, menus, strings, etc.
Cet exemple permet de lire le resource fork et de vider « en clair » certaines ressources : TEXT, STR, STR# …
Le nom court du fichier ne doit pas dépasser 31 caractères pour pouvoir être lu (contrainte du Resource Manager qui provient de l'architecture Classic, antérieure à OSX). Sous OS X, LiveCode restitue le nom des ressources sous une forme inversée (GOLD au lieu de DLOG, par exemple) : le script les restitue d'une manière correcte.


Libimage AScriptLib version 1.94image library AScriptLib à coller dans votre pile

Cette librairie-image contient des fonctions pilotées par AppleScript sous MacOSX. Requiert l'installation de la Libimage XPlatform. Seul « ChangeFileDate » fonctionne aussi sous Windows et Linux.

Commande ou fonctionUsage et paramètres
AppleScriptPath(theItem)rend le chemin AppleScript de theItem.
theItem=path d'un fichier ou dossier.
VolNamefrompath(theItem)rend le nom du volume sur lequel se trouve la directory theItem.
theItem=path d'un dossier.
SetFinderComment theItem, Commentairemet le commentaire Finder à l'élément theItem.
theItem=path d'un fichier ou dossier.
SetFinderLabel theItem, thelabelmet l'étiquette Finder thelabel (0 à 7) à l'élément theItem.
GetFinderLabel(theItem)rend l'étiquette Finder de l'élément theItem
GetFinderComment(theItem)rend le commentaire Finder de l'élément theItem.
exemple :

if the platform = "macos" then put getFinderComment(theFilePath) into theComment
...

GetkMDItemDescription(theItem)rend la description de l'élément.
GetFromWhere(theItem)rend l'URL de téléchargement de l'élément.
ChangeFileDate theItem, adatechange la date de l'élément (fonctionne sous MacOSX, Windows, Linux).
La date en entrée est exprimée en secondes.
exemple :

case "decalage"
  -- décalage dates de modification
  add decal to dmodif
  ChangeFileDate theFilePath,dmodif
  break

getFileCreator(theItem)rend le créateur de l'élément.
GetFolderSize(theItem)rend la taille totale des fichiers contenus par l'élément theItem en octets.
SendAppleMail pagecontent, maildestinataire, nomdestinataire, sujet, mailsender, PJpathCrée un message dans AppleMail.
  1. pagecontent : texte du message. Peut être du texte ou du html ou l'URL d'un fichier ou d'une page.
  2. maildestinataire : adresse mail du destinataire.
  3. nomdestinataire : nom du destinataire.
  4. sujet : sujet du message.
  5. mailsender : nom et adresse mail du compte expéditeur (facultatif).
  6. PJpath : chemin d'accès à une pièce jointe.
Le message créé est automatiquement enregistré en brouillons. La fonction détecte automatiquement si le contenu du message est stylé. Exemple sur la carte SendAppleMail.
getDefAppfromFileOSX(theItem)rend l'application par défaut pour ouvrir l'élément.
Volspecs(volName)Restitue les caractéristiques d'un volume dans un array : monté ou non, verrouillé ou non, format, protocole d'accès, etc.
En mettant "?" en paramètre, retourne le nom des propriétés lues. "Mounted,Writeable,Type,Protocol,Ejectable,Owners,Internal,Total Size,Volume Free Space"
DiskWriteable(folderpath)indique si le volume sur lequel se trouve le folder folderpath est verrouillé en écriture.
macosSUD()nom du disque de démarrage.
diskprotocol(folderpath)indique si le volume portant le dossier folderpath spécifié est en USB, Firewire…
ejectDisk(volname)Démonte le volume spécifié.
AfficheFinderWindow titreMet au premier plan la fenêtre Finder désignée par le titre.
desktopIconsize()Rend la taille des icones du Bureau en pixels.
DesktopPosition(theItem)Rend la position de l'icone de l'élément theItem sur le Bureau.
FinderOpenWindows()Liste le nom et la position de chaque fenêtre ouverte dans le Finder.
ReadDeskTopBG()Rend la couleur du bureau, l'image qui le décore et le délai de changement de cette image.
GUIScriptingWasEnabled()Rend l'état (true ou false) d'activation de l’accès pour les périphériques d’aide.
openAccessPanelOuvre le panel « Accès universel » des Préférences Système.
isFinderbusy()Indique si le Finder exécute une tâche de copie de fichiers.
HideItem [type]Masque un élément fichier ou dossier.
type facultatif; si "folder", permet de sélectionner un dossier, sinon un fichier.
the result retourne "cancel" si aucun élément n'a été sélectionné, sinon le path de l'élément choisi.
ShowItem [type]Rend visible un élément masqué.
type facultatif; si "folder", permet de sélectionner un dossier, sinon un fichier.
the result retourne "cancel" si aucun élément n'a été sélectionné, sinon le path de l'élément choisi.
Move2Trash theItemMet l'élément theItem dans la Corbeille.
exemple :

Move2Trash theFilePath
...

BatteryState()Indique si l'ordinateur est branché sur le secteur.
exportFolderIcon(theItem)Crée sur le Bureau une image foldericon.png à partir de l'icone du dossier spécifié.
debugAppleScriptCrée un script AppleScript (ou un fichier texte) sur le bureau à partir du dernier appel effectué (dump du script généré).

Libimage Backupstack version 1.65image library Backupstack à coller dans votre pile

Libimage de sauvegarde d'une pile, qui exporte dans un fichier les données de chaque carte et permet de les réimporter dans une nouvelle version de la pile. Le fichier généré est en fait un script qui regénère chaque le carte en alimentant son contenu.
Backupstack permet d'ajouter à la pile un mot de passe :

Scripts très complets, mais à tester ! : vérifiez l'exhaustivité de la sauvegarde dans le contexte propre à votre pile. Sauvegardez votre pile avant d'installer la gestion du mot de passe utilisateur : ce mot de passe cryptant la pile, vous pourriez ne plus pouvoir l'ouvrir en cas de fausse manip dans la programmation ou d'oubli du mot de passe.

Appel initial de Backupstack

Les scripts sont incorporés à l'image qu'il suffit de copier puis de coller dans la pile désirée.
A l'ouverture de votre pile, il faut appeler les scripts contenus dans la Libimage au moyen des instructions suivantes (par exemple).

on preopenstack
  insert the script of image "Backupstack" into back (…)
end preopenstack
on closestack
  remove the script of image "Backupstack" from back
end closestack

CommandeUtilisation
ExportBackUpDatasExporte les données de la pile sous forme d'un script. Ce script recrée les cartes une par une en alimentant le contenu (ou l'état) des différents objets : champs, cases à cocher, customs properties, boutons et images. Les players ne sont pas sauvegardés.
ajout de la global gExportBackUpDatasNames pour utiliser le short name des contrôles sauvegardés au lieu de l'ID; doit être mise à «true» dans ce cas.
importBackUpDatasPermet de choisir un fichier de sauvegarde et de le réimporter dans la pile pour recréer les cartes dans l'état de la sauvegarde.
ExportGeometryScript d'export de la géométrie de la carte courante (rect des contrôles).
MakeSaveItemsListCrée dans la pile une custom property contenant l'ID des objets de fond à sauver : champs, cases à cocher et groupes de boutons radio.
ClipSaveItemsNamesRetourne le nom des objets de fond à sauver.
DeleteCards [booléen]Sans paramètre, détruit la carte courante; avec la valeur "true", réinitialise la pile sans aucune donnée : à faire avant un importBackUpDatas.
ChangeAdminPwdCrée un mot de passe Administrateur dans la pile qui sera demandé avant de faire un ExportBackUpDatas ou un importBackUpDatas; protège la confidentialité du contenu de la pile.
CheckAdminPWDExige le mot de passe Administrateur préalablement à une action. A placer dans un script si besoin.
initPwdEnvtDemande un mot de passe Utilisateur. S'il est absent, le crée dans la pile. Si le mot de passe est erroné, ferme la pile.
setPwdCrée ou modifie le mot de passe Utilisateur dans la pile.
GetGroupIconScriptCrée pour un ensemble de boutons un script de réallocation des icones par leur nom.
Message à envoyer à l'objet (groupe, carte, etc.) et script dans le Presse-Papier.

Libimage Customslib version 1.1image library Customslib à coller dans votre pile

Libimage de gestion des custom properties de tous les objets : piles, cartes, contrôles.
Tous les messages doivent être envoyés à l'objet dont on veut manipuler les custom properties :

Send "exportcustoms2file" to this card

MessageUsage sur target
exportcustoms2fileExporte chaque custom de la target sous la forme d'un fichier texte.
setCustomProp [propName,filePath]aucun paramètre : demande un fichier texte ".txt", alimente la custom par le contenu du fichier et donne à la custom le nom du fichier sans l'extension.
"filePath" path d'un fichier : alimente la custom par le contenu du fichier. Si "propName" est fourni donne ce nom à la custom, sinon donne à la custom le nom du fichier sans l'extension.
importCustomsfromFolderDemande un dossier contenant les fichiers texte à importer en customs. Chaque custom property a comme nom le nom du fichier sans l'extension : un fichier "myProperty.txt" créera une custom "myProperty" dans la target.
DeleteAllCustomsDétruit le customset (toutes les custom properties) de la target.
deleteCustom propNameDétruit la custom property "propName" de la target.
RenameProp propName,NewNameRenomme "NewName" la property "propName".

En exemple, un inspecteur permettant de visualiser les customs, de les importer et exporter à partir de fichiers. Les boutons ont une bulle d'info permettant se savoir ce qu'ils font.

Inspecteur de custom properties

Libimage ImagesTools version 1.39image library ImagesTools à coller dans votre pile

Libimage de manipulation d'images et d'extraction des données EXIF. Réalisée à partir de getExif1.4(<filePath>) -- http://homepage.mac.com/udi/
Intègre les routines de manipulation d'images antérieurement implémentées dans XPlatform (SetthumbSize,SetThumb ,ExportThumbImage et ResizeObject) et AppleScriptLib (getImageLegende).
Requiert l'installation de XPlatform et AppleScriptLib.
Nouveautés v 1.3: support de la librairie Perl ExifTool de Phil Harvey si elle est installée dans le système. Voir ici pour l'installation d'exiftool.
Correction d'un bug sous Yosemite et El Capitan pour lesquels Exiftool n'est plus installé au même endroit qu'auparavant.

CommandeUtilisation
ReadExifDatas(imagepath)Alimente un array dans la globale exifdatas :

put ReadExifDatas(path_image) into exifdatas

Clé de l'arrayValeur retournée, si elle existe :
"angle"angle de l'image en degrés.
"caption"légende exif de l'image : (en général, série de blancs). Voir getImageLegende pour lire une légende IPTC ou une description SpotLight.
"dateexif"date exif de l'image en secondes.
"dateolder"date la plus ancienne en secondes de l'image.
"dateori"date de prise de vue en secondes de l'image.
"XResolution"résolution en largeur.
"YResolution"résolution en hauteur.
"Software"logiciel de l'appareil.
"ExposureTime"temps d'exposition.
"ExifVersion"version d'exif.
"ApertureValue"diaphragme utilisé.
"FocalLength"longueur focale.
"ExifImageWidth"largeur image en pixels.
"ExifImageHeight"hauteur image en pixels.
getImageLegende(imagepath)Rend la légende IPTC de l'image imagepath (chemin d'accès à l'image); si la légende IPTC n'existe pas, tente de lire la légende kMDItemDescription (Metadatas SpotLight Mac OS X).
Nouveauté v 1.2 :considère comme vide une légende qui ne contient que des espaces.
exemple :

 put getImageLegende(imagepath) into iptcLegend

SetthumbSize largeur, [hauteur]Définit la largeur et la hauteur d'un thumb. A faire préalablement à l'appel aux commandes : SetThumb, ExportThumbImage et ResizeObject. Les dimensions du thumb étant stockées dans une locale, on ne fait appel à la commande que pour changer les dimensions du thumb.

  SetthumbSize 250

SetThumb (paramètres)Importe un fichier (et redimensionne) dans une image ou un player. Les dimensions de l'image originale sont mémorisée dans la globale gImageOriginalSize. A traiter par l'envoi d'un "send" à l'objet dans lequel le fichier est importé. Paramètres séparés par des commas :
  • "new image" ou "new player" : crée un nouvel objet
  • filepath : chemin du fichier contenant les données (image ou vidéo)
  • name : donne à l'objet le nom du fichier
  • tooltip : met le tooltip de l'objet le nom du fichier
  • imageData : après avoir redimensionné l'image aux dimensions du thumb, compresse les données de l'image.
  • angle [valeur en degrés] : tourne l'image.

on exemple1 listImages
  -- création de miniatures d'images ayant pour nom et tooltip le nom du fichier
  SetthumbSize 300
  repeat for each line filepath in listImages
    put "new image" &cr & filepath &cr &"imagedata" &cr &"name" &cr &"tooltip" into commande
    send "SetThumb" && commande to this card
  end repeat
end exemple1

on exemple2 filepath
  -- import des données d'une image ou d'une vidéo dans une image ou un player existant
  SetthumbSize 500
  send "SetThumb " &" & filepath &" to image id 1028
  send "SetThumb " &" & filepath &" to player id 1029
end exemple2

ExportThumbImage (paramètres)Exporte l'objet sous forme de fichier image, de variable ou vers une autre image. A traiter par l'envoi d'un "send" à l'objet à traiter. Paramètres séparés par des lignes :
  • ligne 1 : mode d'export de l'objet :
    1. "file (filepath)" : chemin de l'image exportée.
    2. "var" : the result retourne le text de l'image exportée.
    3. "(name d'une image)" : exporte vers l'image donnée en paramètre.
  • autres lignes :
    • CompressFormat : JPEG,GIF ou PNG. Facultatif dans le cas d'un file car déduit de l'extension du fichier de destination.
    • "rect (snapshotRect)" facultatif. Par défaut, le rectangle de l'objet source.

on makeThumb
  put "file" && Thumbfolder &ThumbName into filepath
  if option_vers_image then
    send "ExportThumbImage " &filepath to image "thumbviewImage"
  else send "ExportThumbImage " &filepath to player "thumbviewPlayer"
end makeThumb

ResizeObjectRedimensionne aux dimensions du thumb une image ou un player. A traiter par l'envoi d'un "send" à l'objet à traiter.

send "ResizeObject" to image "imagethumb"

CheckExiftoolVérifie que la librairie ExifTool est installée sur votre plateforme. Retourne le numéro de version d'Exiftool, alimente la globale global gExiftoolOK (true ou false) et détermine à quel emplacement se trouve la library.
Les fonction et handler suivants requièrent Exiftool pour fonctionner (gExiftoolOK=true).
ReadIPTCDatas(imagepath)lit l'orientation de l'image et les dates DateTimeOriginal, CreateDate et ModifyDate.
GetCaptionAbstract(imagepath)lit la légende IPTC de l'image.
GetXMPDescription(imagepath)lit la description XMP de l'image.
GetAuthor(imagepath)lit l'auteur de l'image.
GetKeywords(imagepath)lit les mots-clés de l'image.
GetTitle(imagepath)lit le titre de l'image.
getOrientation(imagepath)rend l'angle de rotation de l'image en degrés.
SetImageLegende imagepathalimente la légende IPTC de l'image, sa description XMP et sa légende TIF.
SetAuthor imagepathalimente le creator et l'artist de l'image.
SetKeywords imagepathalimente les mots-clés de l'image (IPTC:Keywords et XMP-dc:Subject).
SetTitle imagepathalimente le titre (ObjectName) de l'image.
RotateImageOrientation imagepath,deltaAnglechange l'orientation de l'image en fonction de la rotation deltaAngle (multiple de 90°).
getimagestrings(folderpath)retourne le caption-abstract, title, keywords, creator, date de prise de vue et angle de chaque image de la directory folderpath séparés par des tabulations ; utile pour des ensembles volumineux d'images.
AlignDates imagepathMet la date du fichier à celle de la prise de vue.
ShiftDate imagepath,decalage (nombre de secondes)décale toutes les dates de l'image imagepath de n secondes.
getmoviestrings(folderpath)retourne la description, title, keywords, Author et CreateDate de chaque film de la directory folderpath séparés par des tabulations.
SetMovieAuthor videopathalimente l'Author de la vidéo.
SetMovieDescription videopathalimente la description de la vidéo.
SetMovieKeywords videopathalimente les keywords de la vidéo.
exiftoolVersion()rend le n° de version d'exiftool installé.
debugImageTExporte sous forme de fichier la dernière commande ExifTool exécutée.

Libimage LCDownloadlib version 1.2image library LCDownloadlib à coller dans votre pile

Une libimage pour télécharger une URL.

test de libimage LCDownloadlib

Libimage Revo2HTML version 1.41image library Revo2HTML à coller dans votre pile

Demande la sélection d'une pile et l'exporte les scripts de tous les objets sous forme d'une page HTML créée sur le Bureau.
Les customs properties de chaque objet sont listées avant son script.

Syntaxe :
exportRevo2html [garderformat]
garderformat
: paramètre facultatif;

Les scripts d'une pile cryptée par mot de passe ne sont pas extraits.


Libimage XPlatform version 2.18image library XPlatform à coller dans votre pile

Permet de réaliser des scripts avec des dialogues marchant sur toutes les plateformes et de réaliser des équivalences d'emplacements de dossiers, par exemple : « Documents » sur Mac et « Mes documents » sur Windows.

Appel initial de la Library XPlatform

Les scripts sont incorporés à l'image qu'il suffit de copier puis de coller dans la pile désirée.
Ces scripts chargent les paramètres d'environnement (locales) de la plateforme : version du système, langue de l'utilisateur et organisation du Bureau.
A l'ouverture de votre pile, il faut appeler les scripts contenus dans l'image au moyen des instructions suivantes (par exemple).

on preopenstack (ou preopencard…)
  insert the script of image "XPlatform" into back
  LookPlatform -- initialisation des globales d'environnement
  …
end preopenstack
on closestack
  remove the script of image "XPlatform" from back
end closestack

L'appel initial renseigne les globales suivantes :

globaleutilisation
gSystemVerséquivaut à la propriété "the platform", mais distingue OSX et Classic. Valeur gérées : MacOS9, MacOSX, Windows, Linux.
gHasUnicodebooléen indiquant qu'Unicode est utilisé (Linux).
gUserlangagelangage de l'utilisateur.
gDistributiondistribution Linux ou version du système.
gHasXDGSupportsupport (ou non) du bureau XDG Linux.
gDecimalSepséparateur décimal.
gThousandSepséparateur de milliers.
gCharsetcodage de caractères par défaut.
gLongUserNameNom développé de l'utilisateur.
gXPFolderpathResultéquivaut à « the result » consécutif à l'appel de XPFolderpath() : contient "folder not found" lorsque le dossier n'existe pas.

Commandes et fonctions disponibles :

commande ou fonctionusage et exemples
LookPlatformAppel d'initialisation des globales d'environnement, à faire à la première utilisation.

on InitEnvt
  insert the script of image "XPlatform" of cd 1 of me into back
  LookPlatform
end InitEnvt

XPSyslibvers()Libellé long de la distribution de la plateforme : système, version et langage. Valeurs créées par LookPlatform.
XPwarningMessage d'alerte lorsque la structure du Bureau ne peut être déterminée sous Linux (pas d'architecture XDG).
XPDirKeys()Rend les noms de sélecteurs de répertoire du Bureau utilisateur propres à la plateforme. Valeurs créées par LookPlatform.
XPFolderpath(selector)Retourne un dossier défini par un sélecteur "commun" : desktop, applications, documents… Plus de détails sur Xpfolderpath().

get XPFolderpath("Images")&"/"

XPaskfileType(myPrompt,[defFileName,theTypes])ask file "titre" with CheminParDéfaut with type. Plus de détails sur XPaskfileType

put XPFolderpath("documents") & "/Page sans titre.html" into defName
get XPaskfileType("Enregistrer la page sous :",defName,"page internet|html|TEXT")
if it is "" then break
put it into Fnom

XPAnswerFile(myPrompt,[defaultpath],[myTypes])
XPAnswerFiles pour sélectionner plusieurs fichiers.
answer file "titre" with CheminParDéfaut with type. Plus de détails sur XPAnswerFile.

get XPAnswerFile("Ouvrir l'image :",xpfolderpath("desktop"),"image|jpg|JPEG")

XPAnswerFolder(myPrompt,[defaultpath])answer folder "titre" with folderParDéfaut.

get XPAnswerFolder("Choisissez ou créez le dossier contenant l'environnement de travail",XPFolderPath("documents"))

XPanswerPGM(myPrompt,[defaultpath])answer program "titre",répertoire par défaut.

get XPanswerPGM(myPrompt,defaultpath)

XPusableFolders()filtre les dossiers correspondant à un paquet (Mac OS X).

  get XPusableFolders(the folders)

leafname(élément)nom court de l'élément (fichier ou dossier).

put leafname(cdFolder) into titre

HFSname(élément)path du dossier parent de l'élément.

put hfsname(myFolder) into Lparentdir

stsLongFilePath()d'après Ken Ray Sons - Thunder Software:  corrige le problème des noms de fichiers longs dans un dragdata["files"]
XPStackPrefs()path d'un fichier de préférences associé à la pile.

on preOpenCard
  LookPlatform
  set the cantmodify of this stack to false
  …
  put url ("file:"&XPStackPrefs()) into checkOptions
  put checkOptions(line 1 of zz) into gSetupOptions
  …
end preOpenCard

XPDefaultBrowser([protocol])Chemin d'accès au programme gérant par défaut le protocole spécifié (http, ftp, mailto). A défaut de protocole, le navigateur internet par défaut.
Sur les Linux « anciens », le protocole n'est pas toujours trouvé dans les mimetypes et la fonction retourne "".

  put xpdefaultBrowser() into fld id 1002

XPDefaultTextEditor()Chemin d'accès à l'Éditeur de texte par défaut.

put XPDefaultTextEditor() into fld id 1002

XPLaunchWithBrowser theBrowser,theUrlOuvre une URL theUrl avec le navigateur theBrowser.

on OpenSite x
  get the browser of this cd
  if it = "" then
    revGoUrl x
  else XPLaunchWithBrowser it,x
end OpenSite

reveal <répertoire>ouvre dans le navigateur de fichier le répertoire précisé.

global gFotofolder
on mouseup
  reveal gFotofolder
end mouseup

xpConvertTextfile(filepath,[charset])Convertit en ascii le fichier filepath si le charset de ce dernier est trouvé (ou fourni en paramètre).
Si le charset n'est pas fourni, tente de le déterminer au moyen de xpFileEncoding(path).
Voir Décoder un fichier, exemple utilisant cette fonction pour déterminer le charset d'un fichier, s'il n'est pas trouvé affichant une pile permettant de prévisualiser le fichier et de choisir le charset, puis enfin de le convertir.
xpFileEncoding(path)Retourne 3 items :
  1. le charset d'un fichier : repère d'abord une éventuelle marque indiquant qu'il s'agit d'un fichier Unicode ; en l'absence de celle-ci, extrait le charset s'il s'agit d'un fichier html ou vCard, à défaut restitue "n/a".
  2. le type de retour-ligne : Mac, Unix, Windows ou "n/a". Permet de présumer de quel type d'encodage il s'agit.
  3. l'extension du fichier.

put xpFileEncoding(x) into gdocCharset

pathForRevo(path)sous Linux convertit un path machine au format LiveCode (ascii).

on mouseenter
  get listFolders(Lparentdir) -- paths au format interne de la machine (UTF-8)
  get pathForRevo(it)
  filter it without "Desktop folder"
  put it into me
end mouseenter

pathOfMachine(path)Convertit un path en ascii en path machine UTF-8.

return prefsfolder & pathOfMachine(x &" prefs.data")

UTF2ascii(string)Convertit la chaine de caractères de UTF-8 en ASCII.
ascii2UTF8(string)Convertit la chaine de caractères ASCII en UTF-8.
ascii2UTF16(string,pTextEncoding)Convertit la chaine de caractères ASCII en UTF-16LE ou BE selon plateforme.
UTF16toAscii(string[,pTextEncoding])Convertit la chaine de caractères UTF-16LE (ou UTF-16BE selon valeur fournie dans pTextEncoding) en ASCII.
CoerceExtension(theFile,theTypes)fonction contraignant la création d'un fichier avec l'extension donnée en paramètre.
getAppFromMimeLux(mimetype)fonction rendant sous Linux l'application par défaut pour ouvrir un fichier du mime type donné en paramètre.

return getAppFromMimeLux("text/html")

Readwebaddress(path)fonction de lecture d'un raccourci internet : webloc, url ou desktop.

get Readwebaddress(it)

XPFile2URL theContent,theURL,[codage]Remplace un «put theContent into url filepath». theURL peut commencer par "file:", "binfile:" ou "ftp"; par défaut, "file:" est pris.
codage est facultatif : "B64" convertit le contenu en Base64, "C" compresse le contenu, "C64"convertit le contenu en Base64 et le compresse.
Corrige un problème Linux dans lequel le fichier créé est considéré à tort comme un exécutable.

on WriteFichier datas
  XPFile2URL datas,xpFolderPath("desktop")&"/mes_datas.txt"
end WriteFichier

XPFileList(theFolder,extensionsList,attributs)fonction listant les fichiers (ou les dossiers) contenus par theFolder, avec une ligne pour chaque élément. Les items sont séparées par des tabulations, le premier item étant le nom (ou le fullpath) du fichier, suivi des attributs demandés.

get XPFileList(myFolder,"jpg","visible,fullpath,creation,size")

Plus de détails sur XPFileList parambuilder

XPGetFolderSize(folderpath)fonction donnant la taille des éléments contenus par le dossier folderpath en octets.

get XPGetFolderSize(folderpath)

XPFontnames()Retourne la liste des polices installées sur le système, y compris pour Linux (équivalent de : the fontNames).
XPRemoveDiacritics(string)Retire les voyelles accentuées d'une chaîne de caractères en les remplaçant par de simples voyelles.
XPformatNumber(nombre,[décimales,unit])Formatte un nombre en utilisant les réglages locaux : séparateur décimal et séparateur de milliers.
paramètres :
nombre: donnée numérique à traiter. Si ce n'est pas un nombre, retourne la donnée non formattée.
décimales: nombre de décimales souhaitée.
unit: unité ajoutée à fin.

Exemple : get XPformatNumber(1235.678,2,"€") retourne 1 235,68 € pour un système français.

XPChangeCase(string,[casse]) Met en majuscules ou minuscules une chaîne de caractères en tenant compte des voyelles accentuées.
string: chaîne à traiter.
casse: casse de caractères (par défaut minuscules,"upper" pour majuscules).

get XPChangeCase("évènement","upper")

XPTitle2URL(titre)Crée le nom d'une page HTML d'après son titre en éliminant les articles et les caractères accentués.
Exemple : "Langue de veau aux câpres" donne "langue_veau_capres.html"
XPCleanDupItems(itemslist,[itemdelimiter],[sortType]) Élimine les doublons et les items vides d'une liste d'items séparées par mydelimiter.
itemslist: liste à traiter.
itemdelimiter: séparateur d'items (par défaut : comma).
sortType: text,international,numeric,datetime,important,orderkeep. Spécifie un tri de la liste en sortie.
  • text,international,numeric,datetime : applique le tri correspondant ;
  • important : place en premier les items les plus fréquemment rencontrés dans la liste ;
  • orderkeep : élimine les doubles en conservant l'ordre initial des items.

get XPCleanDupItems(itemslist,cr,"numeric")

XPCheckConnection()Teste la connection à l'internet.
Rend les valeurs suivantes :
  1. = Connecté
  2. = Non connecté à Internet
  3. = Connexion Internet défectueuse
  4. = Non connecté au réseau
XPGetMetas(contenu d'une page HTML)Alimente un array stocké dans la globale gExtMetas restituant les valeurs des metas trouvés dans le contenu de la page.
XPbuildKeywords(Text,[WordSeparator],[MotsExclus])Crée une liste de mots-clés à partir d'un texte.
  • Text : le texte dont on désire extraire des mots-clés ;
  • WordSeparator : caractère de séparation des mots dans le texte, par défaut espace ;
  • MotsExclus : liste de mots à exclure de la sélection. XPlatForm possède une liste par défaut.
Élimine tous les mots de moins de 4 caractères et les nombres et retourne jusqu'à 50 mots-clés en minuscules par ordre de fréquence décroissante dans le texte.
HTMLtext2CSS(htmltext)Convertit le htmltext d'un champs en un bloc stylé sans saut de ligne. Remplacer cr par "<br>" pour obtenir les sauts de ligne.
CleanSpaces(string)Retourne le contenu d'une chaîne en éliminant les espaces de début et de fin.
XReplace(string, chaîne à chercher,valeur de remplacement)Remplace toutes le occurrences de la chaîne à chercher par la valeur de remplacement dans un conteneur.

get XReplace(string," "," ")

XPLaunch filepath,[appPath]Remplace la commande Launch qui ne marche pas toujours.
filepath est le chemin d'accès au fichier, appPath est celui de l'application pour l'ouvrir; s'il n'est pas précisé, le fichier est ouvert avec l'appli par défaut.
xpMimeType(filepath)Retourne le mime type du fichier spécifié.
XPCodeImage(filepath)Encode en base64 une image et donne une data url de la forme :data:image/png (ou jpeg, gif, etc.);base64,iVBORw0KGgo… (codage de l'image).
XPdecodeImage(data url,filepath)Décode la data url d'une image et crée un fichier à l'emplacement spécifié.
ConvertOOClipConvertit en texte tabulé le Presse-Papier de Open Office.
XPlibsize(size)Convertit la taille d'un fichier en Ko et multiples (Mo, Go...).
XPCopyFolder folderToCopy, destinationFolderRemplace revCopyFolder en corrigeant le bug de ce dernier lorsque le path d'un des paramètres contient des caractères spéciaux.
makeExcel(thecontent,header,exportmode)Convertit un contenu tabulé en feuille de calcul utilisable par un tableur.
Plus de détails sur makeExcel().

Limiter les lignes saisies dans un champsiRevTool

limiter nombre de lignes saisissables Outil générant un script permettant de limiter le nombre de lignes saisissables dans un champs.
Choisissez le nombre de lignes maxi désiré, la longueur souhaitée pour le champs et un style d'arrondi.
L'outil génère un groupe « légende » comportant une icone d'effacement du contenu.
Cliquez le bouton bouton d'installation « Installer… » pour copier le groupe généré ou le script approprié seulement.


Lineoffset en sérieiRevTool

Utilise LineOffset() de manière itérative pour retrouver toutes les occurrences d'une même chaîne.
Peut être transposé à itemOffset(), WordOffset()

Function SearchLines stringToSearch,Content
  -- utilise LineOffset de manière itérative
  -- rend le numéro des lignes où le motif recherché est trouvé
  put "" into myResult
  put 0 into line2skip -- nombre de lignes à ignorer
  repeat
    get lineOffset(stringToSearch,Content,line2skip)
    if it = 0 then exit repeat
    add it to line2skip -- ajouter it, car c'est un nombre relatif !
    put line2skip &comma after myResult
  end repeat
  delete char -1 of myResult
  return myResult
end SearchLines


Lire plist MacintoshiRevTool

Un script pour lire le contenu d'une plist Macintosh; exemple avec un simulateur de votre Bureau.


MailiXPlatForm

Une façon simple de générer un message mail par « mailto: » en traitant le problème des caractères accentués.


makeExceliXPlatForm

Cette fonction provient de l'ancienne Libimage MakeExcel qui a été intégrée à XPlatform 2.17.

makeExcel(theText,header,exportmode)

theText: texte à convertir (format Iso ou Mac); chaque cellule est séparée des autres par une tabulation
header : descripteurs du type de chaque colonne du tableau, séparés par une virgule; valeurs supportées :

descripteur
colonne
typeformat Excel
Ttexte 
Mmontant avec centimes0.00
MLmontant long#,##0.00
MFmontant monnaie#,##0.00" eur"
Ientier 0
Ddated-mm-yyyy
%pourcentage0.00%
Hheureh:mm:ss
DHdate et heured-mm-yyyy\ h:mm:ss
Escientifique##0.0E+00
Ffraction#" "??-??
=Ignorer la colonne 

exportmode : mode d'export des données.

Le fichier généré est de l'UTF-8.

Exemple d'appel à la Libimage XPlatform

on makeExcelfile
  get fld "tableau"
  put "T,%,ML,ML" into header --- descripteurs de formats de cellules
  put "slk" into exportmode --- slk ou csv ou text
  ask file "extraire :" with "extrait."&exportmode
  if it = "" then exit to top
  put makeExcel(it,header,exportmode) into myOut
  put myOut into url ("file:" &it)
end makeExcelfile

Paramétrage du header pour makeExcel

Ouvrez d'abord un fichier tabulé avec le bouton importer :import du fichier tabulé dans MakeExcel
Choisissez ensuite pour chaque colonne le format qui vous convient le mieux en cliquant l'en-tête de la colonne. Un menu local permet de choisir le format approprié.

choix du format de cellule SYLK

Exportez ensuite le fichier au format désiré et voyez si le résultat vous convient. export de texte tabulé au format SYLK, CSV ou TSV

Générez ensuite un script modèle avec le bouton Placer le script généré dans le Presse-Papier. qui le place dans le Presse-Papier.

N'oubliez pas de copier la library dans votre pile…

Utilisation de makeExcel comme convertisseur

suppression de lignes

Une fois le fichier tabulé importé, vous pouvez vous servir de makeExcel comme convertisseur : le bouton suppression de lignes permet d'éliminer les lignes superflues.


Mini-éditeur de scriptsiRevTool

mini-éditeur de scriptsRemplace la boîte de messages sous StackRunner.
Utilisation :
Entrez dans le champs déroulant votre script. Vous pouvez utiliser les icones copier, coller, couper et gomme pour alimenter le champs.

La longueur maximale d'un script est de 10 lignes exécutables en environnement « Standalone », illimitée en environnement « Development ».

Le bouton bouton d'installation « Installer… » copie le groupe vers une autre pile.


Mise à jour LibimagesiRevTool

outil de mise à jour des Libimages

Un outil permettant de vérifier la version des Libimages installées dans vos piles et de les remplacer par une version plus récente dans LiveCodeClips.
Le bouton «Enregistrer» exporte le tableau au format CSV.


Pile ChooseListChooseList

exemple avec chooselistModèle de pile affichant une liste ou tableau et retournant la valeur ou le n° des lignes sélectionnées.

Exemple de sélection disjointe sur un tableau :

Alimenter la variable the dialogdata avec la liste à présenter en séparant chaque ligne par un "CR". Si la liste est tabulée, elle est présentée comme une tableau (colonnes).
Alimenter la variable global gChooselist, qui gère la présentation, comme suit :
Ligne 1 : [prompt] message affiché au dessus de la liste.
Ligne 2 : (4 items facultatifs) [selection_mode],[modeResultat],[listeWidth],[colSeparator],[cadrage] :

  1. selection_mode :
    1 = une seule ligne à la fois (valeur par défaut),
    2 = multi-lignes,
    3 = sélection disjointe.
  2. modeResultat : true pour obtenir la liste des numéros de lignes choisies séparée par des virgules, false (valeur par défaut) pour obtenir le texte sélectionné.
  3. listeWidth : largeur en pixels d'affichage de la liste ou auto (valeur par défaut) : affichage sur toute sa largeur dans la limite de la taille de l'écran.
  4. colSeparator : tab par défaut, chaîne de caractères séparant les items dans la liste; les constantes : backslash, colon, comma, empty, null, quote, slash et space sont acceptées.
    Les constantes : cr, crlf, lf, linefeed et return sont interdites.
  5. cadrage : la valeur target place la fenêtre au plus près du point cliqué pour appeler la liste.

Ligne 3 : valeur ou rang de la ligne préselectionnée (facultatif).

Résultat : Texte sélectionné ou numéros d'ordre des lignes choisies dans la liste, "Cancel" sinon.

L'outil placé sur la carte permet de paramétrer les éléments de présentation de la liste et de les copier au moyen de l'icone copier.

dialogue paramétrage ChooseList

Pile pour importer une imageplaceimage

Pile pour importer une imageUn modèle de pile permettant d'importer une portion d'une image dans une carte. La pile se met automatiquement aux dimensions de l'écran et utilise la Libimage ImagesTools. Elle permet de faire des rotations de l'image, de zoomer sur l'original et de le déplacer à l'intérieur du rectangle de sélection.

Cliquez le bouton bouton d'installation « Installer… » pour installer la pile dans une autre pile.

Appeler la pile en mode "modal" après avoir alimenté the dialogdata de la façon suivante :
Ligne 1 : path d'une image ;
Ligne 2 : longueur et largeur en pixels (ex : "250,200") de la portion à extraire.

En retour, the dialogdata vaut "cancel" si l'utilisateur à annulé le traitement, sinon il contient le "texte" de la portion d'image sélectionnée.
Exemple de script :

on placerExtrait imagepath
  set the dialogdata to imagepath & cr & "250,200"
  modal stack "template_captureimage"
  put the dialogdata into theimgDatas
  if theimgDatas = "cancel" then exit to top
  -- alimentation du "text" d'une image de la carte par les dialogdata
  set the text of image "thumb" to theimgDatas
end placerExtrait


Pile pour transfertstransfert

pile de transferts FTP

Cette pile comporte 3 onglets :

Le script d'installation permet de choisir le nom de la substack installée dans la pile principale.

Paramètres

dialogdata en entréedialogdata en sortie
ligne 1, 2 items :
Onglet préaffiché [Transfert,Disque,FTP ou all],
[booléen « disabler les autres »] : permet d'interdire l'accès aux autres onglets, par exemple : "transfert,true" ne permet que d'accéder à cet onglet.
Valeur par défaut : "all".
pour tous les onglets : "Cancel" si l'on clique le bouton "Annuler"
  • pour l'onglet Transfert : deux items : (sélection des cartes : "all" ou "selection") et (destination : "ordinateur" ou "serveur")
  • pour l'onglet FTP : "FTP" si l'url est OK, crée une custom ftpurl dans la pile principale.
  • pour l'onglet Disque : "Disque" crée une custom basicUrl dans la pile principale.
Exploitez les customs basicUrl et ftpurl pour transférer les données à l'emplacement désiré.
ligne 2, 2 items déterminant l'option proposée à l'utilisateur pour le transfert : transférer toutes les cartes ou une sélection [all ou selection],
destination par défaut [ordinateur ou serveur].
Valeurs par défaut : "all,ordinateur".

Un outil permet de préparer les paramètres à passer en dialogdata à la pile transferts.

outil de saisie des paramètres dialogdata de la pile transferts.

Copiez les paramètres au moyen de l'icone copier.


Préférences d'une pileiXPlatForm

La fonction XPStackPrefs() appartient à la Libimage XPlatForm et restitue le path d'un fichier dans lequel vous pourrez enregistrer des options.

Paramètre

Un nom quelconque. Par défaut, XPStackPrefs() prend le "short name" de la pile courante.

Résultat

<chemin d'accès aux préférences>/<nom donné en paramètre> <nom de la plateforme>".data", par exemple :

sous MacOSX :   /Users/NomUser/Library/Preferences/MaPileMacOSX prefs.data
sous Windows :   C:/Documents and Settings/NomUser/Application Data/MaPileWindows prefs.data

Astuce : le fichier de préférences peut être un script initialisant les variables nécessaires. A l'ouverture de la pile, on le lit et on l'exécute :

on readprefs
  get url ("file:"&XPStackPrefs())
  if it <> "" then
    put it into myScript
    repeat for each line LNN in myScript
      do LNN
    end repeat
  end if
end readprefs


RawkeyupiRevTool

Affiche le keycode de la clé pressée.

Affiche le keycode de la clé pressée.
Contient le modèle d'un script "on rawkeyUp" avec un trigger sur les valeurs courantes.
transposable à RawKeyDown.


Recherche SpotlightiRevTool

champs de recherche SpotLightCe groupe comporte un champs de recherche permettant de filtrer un index au moyen du message "placeindex".
Un bouton permet d'effacer la recherche entrée.

outil SpotLightL'outil présent sur la carte permet de paramétrer la largeur du champs.
Copiez votre groupe avec le bouton bouton d'installation « Installer… ».
Collez-le à l'endroit désiré et mettez en place votre script de filtrage des données.

Exemple de filtrage d'une globale "myIndex" :

on placeindex
  put line 1 of fld "filter" into mySelector
  if mySelector <> "" then filter myIndex with "*" &mySelector &"*"
  put myIndex into fld "index"
end placeindex


Redimensionner les colonnes d'un champsiRevTool

Un script pour redimensionner la largeur des colonnes d'un champs tableau selon la largeur effective du contenu.
Faire un send "resetchamps" au champs concerné.


SendAppleMailiAScript

Exemple de mail HTML avec AppleScript (Mac OSX seulement).

Le script génère un message stylé ou pas avec AppleMail.
Utilise le handler "SendAppleMail" de la Libimage AScriptlib.
Un jeu de paramètres permet de tester différents scénarios.

paramètres

StackRipperburnstack

Revolution Stack Ripper est une transposition à LiveCode de mcRipper, un ripper MetaCard, et a surtout été un exercice destiné à étudier comment recréer des objets par script.
Que fait-il ?

Revolution Stack Ripper

Avertissement
Sauvegardez soigneusement l'original de votre pile avant de procéder : la pile a été soigneusement testée et elle n'affecte normalement pas une pile rippée ; mais on ne peut garantir un tel fonctionnement dans tous les cas de figure.
Lors d'un Burn, la pile est recréée avec le même nom que la pile originale : pour éviter les conflits, l'original doit être fermé.
Utilisation
Ouvrez «Revolution Stack Ripper».
Cliquer le bouton «Rip».
Cliquer le bouton «Save» pour enregistrer le texte produit au format xml.
Cliquer le bouton «load» pour charger un rippage xml.
Cliquer le bouton «Burn» pour générer une pile.
Limitations


Séparateur de champsiRevTool

exemple de séparateur verticalExemple de poignées permettant de déplacer la limite de 2 champs juxtaposés.

Choisissez le modèle (horizontal ou vertical) au moyen des boutons radios.
Cliquez le bouton bouton d'installation « Installer… » pour copier le bouton poignée.
Groupez ensembles vos deux champs juxtaposés (auxquels vous attribuez le short name que vous voulez) et éditez le groupe.
Collez-le bouton poignée entre les deux champs à séparer, puis éditez le script pour modifier les 3 constantes :

constant CfldGauche="A",CfldDroit="B",Cscrlimite=80

Redimensionnez le bouton poignée à la largeur et longueur désirée : les champs s'ajusteront.
Le script fait apparaître automatiquement les scrollbars des champs lorsque le nombre de lignes qu'ils contiennent excède leur hauteur.


Tableau triéChooseList

feuille de calcul avec tri des colonnesGroupe formant un tableau dont on peut trier les lignes.
Les colonnes peuvent être re-dimensionnées au moyen de la souris et les lignes peuvent être triées en cliquant le titre des colonnes.
Les boutons permettent de copier, coller et effacer le contenu du tableau.

Cliquez sur le bouton bouton d'installation « Installer… » pour copier le groupe dans une autre pile.


TitleWidth d'un boutoniRevTool

largeur title boutonCette propriété n'est pas accessible dans l'inspecteur standard : un inspecteur pour le faire.
titleWidth et labelWidth sont synonymes;
positionner la propriété ne sert à mon avis que dans le cas des "option menu" : pour les autres styles de bouton, je ne vois pas l'intérêt.


Tri des boutons d'un groupeiRevTool

Réarrange un groupe de boutons en fonction de la largeur et de la hauteur du groupe.
Cliquer le bouton bouton d'installation « Installer… » pour copier le script ; Il peut être adapté à d'autres objets.
Envoyer un send send "Placebuttons" au groupe après avoir installé le script au niveau du groupe.

Les boutons « avant » :

boutons non classés

Les boutons « après » :

boutons non classés

Visual EffectiRevTool

Composez l'effet visuel désiré au moyen des menus ;
copiez les instructions générées au moyen du bouton bouton d'installation « Installer… »;

Visual effect

N'oubliez pas qu'un effet visuel ne marche qu'après un « go cd… ».


Vérifier connection à InternetiXPlatForm

Appelle la fonction XPCheckConnection() de XPlatForm pour faire un test de connection à internet.

Rend les valeurs suivantes :

  1. = Connecté
  2. = Non connecté à Internet
  3. = Connexion Internet défectueuse
  4. = Non connecté au réseau

Whatclicked

Variables LiveCode alimentées par un click dans un champsUn script permettant de visualiser les différentes variables LiveCode utilisables dans le clic et la sélection d'un champ de texte.


Xpask/ Xpanswerfile (with type)iXPlatForm

scripts x-platform ouvrir / enregistrerUn générateur de script pour ouvrir ou créer un fichier d'une façon portable dans tous les environnements avec la libimage XPlatForm.

Les scripts peuvent être générés selon trois modes :

Copiez le script généré au moyen de l'icone copier.

Les fonctions remplaçantes de ask et answer file
function XPaskfileType myPrompt,[theFile,theTypes]

function XPAnswerFile myPrompt,[theFolder,theTypes]

function XPAnswerFolder myPrompt,[theFolder]
myPrompt est le message affiché dans le dialogue
theTypes est la liste des types de fichiers désirés. par exemple :
  • "document word|doc|W8BN"
  • "images web|jpg,gif,png,bmp|JPEG,GIFf,PNGf,BMPf"
  • "Pages web|html,htm,php,txt,css|TEXT"
Dans un type, le caractère «|» sépare 3 items : un libellé générique, une liste d'extensions de fichiers et une liste de filetypes OS X.
theFile et theFolder représentent la destination désirée.

XPdefaultbrowseriXPlatForm

Rend le navigateur, le mail et le client FTP par défaut au moyen de la fonction XPDefaultBrowser([protocol] de la libimage XPlatForm.
Protocole spécifié : http (valeur par défaut), ftp, mailto.

applications par défaut

Le bouton "Mime Type" donne le type Mime d'un fichier.

Le bouton "Encoder image..." donne une data url de l'image en base 64.


XPFileList parambuilderiXPlatForm

XPFileList parambuilderOutil de création des paramètres nécessaires à la fonction XPFileList()

XPFileList() appartient à la Libimage XPlatForm et donne une liste des fichiers (ou des dossiers) avec une ligne pour chaque élément. Les items sont séparées par des tabulations, le premier item étant le nom (ou le fullpath) du fichier, suivi des attributs demandés :
XPFileList(theFolder,extensionsList,attributs)

Saisissez les extensions de fichiers souhaitées et les attributs de filtrage (visibilité, sous dossiers, fullpath) puis cliquez dans l'ordre souhaité les attributs désirés. Le script est généré automatiquement et peut être testé.
Copiez le script généré au moyen de l'icone copier.

Paramètres de XPFileList
theFolderChemin complet du dossier à explorer.
extensionsListListe d'extensions de fichiers : "jpg,png,gif" par exemple ou "folders" pour obtenir une liste des dossiers. Si le paramètre est vide, tous les fichiers. Le mode "folders" est exclusif du mode « liste d'extensions ». Pour obtenir tous les dossiers et tous les fichiers, faire un premier appel avec "folders" et un second avec "", fusionner les deux résultats.
attributs partie 1Partie présentation et filtrage : (ordre quelconque).
"subfolders"explorer le dossier de départ et tous les dossiers qu'il contient.
"fullpath"retourner le chemin d'accès complet de chaque élément. Implicite si "subfolders" est spécifié.
Filtrage:Tous les éléments, éléments visibles seulement ou éléments invisibles seulement.
attributs partie 2Propriétés retournées pour chaque élément :
l'ordre des attributs détermine l'ordre des items retournées dans le résultat.
  • item 1 : toujours le nom ou le full path de l'élément
  • item 2 : la propriété n°1
  • etc.
"size"taille du fichier en octets (Mac OS, taille du data fork)
"rfsize"taille du resource fork en octets (Mac OS)
"sum"taille totale (data + resource fork) en octets
"creatortype"creator et type (Mac OS)
"creation"date de création en secondes (Mac OS et Windows)
"modification"date de modification en secondes
"last-access"date dernier accès en secondes (Unix et Windows)
"last-backup"date dernier backup en secondes (Mac OS)
"owner"propriétaire du fichier (Unix)
"group"groupe propriétaire (Unix)
"permissions"permissions

La fonction donne une erreur si un attribut n'existe pas.

Xpfolderpath()iXPlatForm

XPfolderpath() appartient à la Libimage XPlatForm et remplace la fonction specialFolderPath() qui rend le chemin d'un dossier du Bureau Utilisateur en fonction d'un sélecteur.
Dans LiveCode, les sélecteurs de dossier utilisables par specialFolderPath dépendent de la plateforme.
XPfolderpath permet d'utiliser les valeurs de sélecteur propres à chaque plateforme système, mais aussi un jeu de « valeurs communes » d'une plateforme à une autre :

ValeurDossier correspondant selon plateforme
ApplicationsApplications, Program Files, /usr/bin
DesktopBureau, DeskTop
DocumentsDocuments, "Mes Documents", etc.
DownloadsDossier de téléchargements; sous Mac OS et Windows, répertoire choisi par l'utilisateur pour les téléchargements.
FavoritesFavorites, Favoris
FontsFonts
HomeDossier ou Profil de l'utilisateur.
ImagesImages, "Images de User"
KeyChainsDossier contenant les fichiers Trousseau d'accès de l'utilisateur (OS X et Windows seulement).
MoviesVidéos, "Vidéos de User"
MusicMusique, "Musique de User"
Preferencesréglages de l'utilisateur (Préférences, Application Data)
Systemrépertoire du système : System, WINDOWS, /lib
System32(Windows seulement).
Shared folderDossier partagé entre les comptes (OS X seulement).
Temporaryfichiers temporaires : TEMP
TrashCorbeille.
userAppleScriptsDossier de scripts AppleScript de l'utilisateur (OS X).
userApplicationSupportDonnées utilisateur de Support aux applications (OS X).
userLibraryBibliothèque de l'utilisateur (OS X seulement).

Le nom restitué tient compte de la langue du compte utilisateur.
La variable globale gXPFolderpathResult rend "Folder not found" lorsqu'il n'existe pas de dossier correspondant au sélecteur fourni, elle est vide sinon.

Un outil permet de tester Xpfolderpath() :

outil Xpfolderpath()

XPGetMetas lecture metas d'une pageiXPlatForm

Fonction de lecture des metas d'une page HTML appartenant à la libimage XPlatForm : alimente un array dans la global gExtMetas avec les clés suivantes si elles sont trouvées dans le contenu d'une page HTML.

Valeur des metas
Clé gExtMetasValeur de meta
charsetcharset de la page.
isHTML5booléen indiquant que la page est en HTML5.
langagelangue de la page.
titletitle.
descriptiondescription.
robotsmeta robots.
datecreadate création(*)
(dcterms.created ou Date-Creation-yyyymmdd).
datemodifdate de modification(*)
(dcterms.modified ou Date-Revision-yyyymmdd).
smaporderordre de la page dans un plan de site.
smaptitletitre abrégé de la page dans un plan de site.
dateindexdate d'index(*)
(dcterms.issued ou Date-index-yyyymmdd).

(*) meta dépendant du doctype de la page : html4 ou html5.


Zipper sans Resource Forklivecodezip

Routine pour Mac OS X compressant un répertoire et les fichiers qu'il contient au format ZIP compatible Windows et Linux (la partie resource-fork des fichiers Mac est ignorée).
Syntaxe :
CompressFormatPC theSource,theDestination
  theSource
: path du répertoire /Users/UserName/Documents)
  theDestination : path de l'archive (/Users/UserName/Desktop/archive.zip


Historique des versions de LiveCodeClips
dateversionévolutions
30/06/20172.16 XPlatForm 2.18 : routine de conversion d'un montant en chiffres et incorporation des scripts makeExcel; fonction osxversion rendant le systemversion de OS X.
backupstack 1.64 : nouveau script d'export des objets de carte.
nouvelle carte Conversion Textedit.
17/05/20162.15 XPlatForm 2.15 : ajout des fonction XPMimeType() type mime fichier, XPCodeImage() encodage d'une image en data url, XPdecodeImage() conversion data url base64 en fichier image, XPCopyFolder copie d'un répertoire et XPlibsize() taille d'un fichier en Ko et multiples.
prise en compte bug LaunchServices avec Yosemite et El Capitan.
AScriptlib 1.94 : exportFolderIcon, nouvelle version de SendAppleMail pour El Capitan
20/11/20152.14 XPlatForm 2.14 : correction bug XPusableFolders() et sur systemversion() mal gérée à partir de Yosemite.
AScriptLib 1.92 : Batterystate()et Move2Trash.
ImagesTools 1.38 : global gImageOriginalSize enregistrant les dimensions d'une image redimensionnée par un SetThumb. Ajout du path complet vers exiftool pour Mac OS X Yosemite et El Capitan.
Pile ChooseList : gestion de la touche entrée.
1/7/20152.13 XPlatForm 2.13 : commande XPLaunch pour remplacer Launch qui ne marche pas toujours. ConvertOOClip conversion Presse-Papier OpenOffice Calc (données tabulées).
AScriptLib 1.9 : ajout de showItem et hideItem pour afficher/cacher un élément fichier. openAccessPanel adapté à Yosemite. Script SendAppleMail (texte stylé ou pas) adapté pour Yosemite, fonctionne sous Snow Leopard.
ImagesTools 1.37 : correction d'un bug sur les rotations d'images.
3/12/20142.12 AlertPrompt 2.0 : ajout à l'alerte d'une barre d'avancement de traitement d'un lot.
Libimages AScriptLib 1.8 pour la fonction isFinderBusy(), Backupstack 1.6 pour corriger un bug sur les groupes de boutons radio, ImagesTools 1.36 pour la gestion des données IPTC des films et XPlatForm 2.12 pour les fonctions XReplace(), CleanSpaces().
28/06/20142.11 ImagesTools 1.35 pour le handler AlignDates et correction bugs sur "creator" et de problèmes sur keywords accentués
18/03/20142.10AScriptLib 1.7 pour les fonctions volspecs(), VolNamefrompath(), GetFolderSize() et DesktopPosition().
XPlatForm 2.09 pour les fonctions XPChangeCase(), XPCleanDupItems(), HTMLtext2CSS(), XPBuildKeywords(), XPTitle2URL() et XPGetFolderSize().
ImagesTools 1.34 pour le handler RotateImageOrientation et les fonctions getimagestrings()et ShiftDates().
31/07/20132.09XPlatForm 2.07 pour les encodages et ajout pile CharSetPreview permettant de choisir par prévisualisation le charset d'un fichier. Revue de la documentation en ligne de la pile.
2/07/20132.08Libimages XPlatform 2.06 (amélioration de xpFileEncoding()), ImagesTools 1.32 (correction bug sur affichage gifs animés) et BackupStack 1.53 (globale gExportBackUpDatasNames="true" pour utiliser le short name au lieu de l'ID des contrôles sauvegardés; Export de la géométrie d'une carte).
9/05/20132.07Mise à niveau de la documentation.
26/03/20132.06XPlatform 2.05 : XPGetMetas() lecture des metas d'une page HTML, XPCheckConnexion() vérification de la connexion internet.
ImagesTools 1.31 correction d'un bug en export image.
AppleScript 1.62 ajout de nouvelles fonctions.
2/11/20122.05Libimage ImagesTools v 1.3 : support de la library ExifTool si elle est installée dans le système.
AScriptLib 1.61 pour corriger un problème lorsqu'il y a plusieurs lignes dans le commentaire Finder d'un fichier.
XPlatform 2.03 : alimente la globale gLongUserName : nom développé du compte utilisateur.
1/10/20122.04Libimage ImagesTools v 1.2: certains appareils ou programmes initialisent la légende d'une image avec des espaces; considère qu'elle est absente dans ce cas.
28/09/20122.03Libimage XPlatform v 2.02 avec fonction XPusableFolders() de filtrage des dossiers correspondant à un paquet (Mac OS X).
Libimage Backupstack v 1.5 gérant les champs dont le texte est dans une police Unicode.
25/08/20122.02Libimage ImagesTools v 1.1 ne rendant que les données exif renseignées.
Revue script positionnement boutons et documentation en ligne.
2/07/20122.01Nouvelle Libimage « ImagesTools » regroupant les scripts de EXIFlib, les scripts « images » de XPlatform et les scripts IPTC de AScriptLib.
26/06/20122.0Nouveaux noms de sélecteurs de dossier pour la Libimage XPLatForm.
Ajout d'un paramètre à XPdefaultBrowser() pour mailto et ftp.
Optimisation du modèle de pile ChooseList (size auto, trame grisée, géométrie, scrollbar auto).
7/06/20121.5Correction bug XPFileList avec des fichiers ou dossiers dont le nom contient une tabulation ou une virgule.
28/03/20121.40fonction XPFileList() cataloguant les fichiers ou dossiers contenus dans un répertoire avec les attributs désirés.
8/03/20121.3Libimage XPlatForm : scripts d'import/export d'images dans une pile.
9/01/20121.2Libimage LCDownloadlib.
19/12/20111.1Outil de gestion des versions de Libimages. Amélioration du navigateur de customs StackBrowser.
1/12/20111.0Première version intégrant la pile XPlatFormScripts et les Libimages AScriptlib, BackupStack et Custom_lib.