Pages

8 nov. 2009

Plug-in Manager

tell SwitchFile to getProperties()
if the result is {"", ""} then tell SwitchFile to setProperties(choose folder with prompt "activated items :", choose folder with prompt "Inactivated items :")
tell SwitchFile to process()

script SwitchFile
property folderA : "" -- chemin d'accès au dossier contenant les items activés
property folderB : "" -- chemin d'accès au dossier contenant les items inactivés
property theMark : "√"
-- retourne le chemin d'accès des dossiers items activés/desactivés
on getProperties()
return {folderA, folderB}
end getProperties
-- enregistre le chemin d'accès des dossiers items activés/desactivés
on setProperties(a, b)
set folderA to a
set folderB to b
end setProperties
-- Boite de dialogue d'activation/desactivation des items
on process()
tell application "Finder"
set fileNameA to my addgizmo2List(theMark, the name of every file of folder folderA)
set fileNameB to the name of every file of folder folderB
set filesToMove to (choose from list (fileNameA & fileNameB) with prompt "Select items to switch :" with multiple selections allowed)
if filesToMove is not false then
repeat with fileName in filesToMove
if fileName starts with theMark then
set fileName to my deletegizmo(theMark, fileName) as string
my moveitem(folderA, folderB, fileName)
else
my moveitem(folderB, folderA, fileName)
end if
end repeat
end if
end tell
end process
-- deplacement d'un item d'un dossier vers un autre 
on moveitem(folderA, folderB, fileName)
tell application "Finder"
move (every file of folderA whose name is fileName) to folderB
end tell
end moveitem
-- coche l'item qui se trouve dans le dossier des items activés
on addgizmo2List(gizmo, theList)
set temp to {}
repeat with theItem in theList
copy ((gizmo & theItem) as string) to the end of temp
end repeat
return temp
end addgizmo2List
-- décoche l'item désactivé qui se trouve dans le dossier des items inactivés
on deletegizmo(gizmo, theText)
if theText starts with gizmo then return (characters 2 thru -1 of theText) as string
return theText
end deletegizmo
end script

Ce gestionnaire rudimentaire de plug-in illustre la réflexion de Gwénaël à propos des objets scripts >>ici

>>Ouvrir le script dans l'éditeur

3 mai 2009

AppleScript 1 - UNIX 0

Compte le nombre d'occurences d'un caractère à l'intérieur d'un texte.

AScountChar("hébété", "é")
UNIXcountChar("hébété", "é")

-- Retourne le nombre d'occurence d'un caractère d'un texte.
on AScountChar(theString, charToSearch)
set text item delimiters of AppleScript to charToSearch
set la_liste to text items of theString
set text item delimiters of AppleScript to ""
return (count la_liste) - 1
end AScountChar

Auteur :  Fred;o

-- la même chose en Shell UNIX
on UNIXcountChar(theString, chartoFind)
return (do shell script "echo" & quote & theString & quote & " | tr -cd " & quote & chartoFind & quote & " | wc -c") as number
end UNIXcountChar

>>Ouvrir le script dans l'éditeur

HyperCard memories

"Il est assez remarquable de constater qu'Hypercard est souvent apprécié comme bonne introduction à la programmation. Personnellement, je le pratique depuis quinze ans...sans jamais penser programmation mais seulement scripting. Un bon programmeur, selon l'air du temps, fait du C, du Pascal ou autre... Scripter HyperCard c'est une affaire de novice... Ce n'est pas discutable, c'est ainsi... J'ai perdu beaucoup de temps à essayer d'expliquer autour de moi que ce n'était là que préjugés, qu'il fallait y regarder de plus près techniquement... grossière erreur de ma part. Il n'y a rien de technique là-dedans... Que l'utilisateur utilise et que le programmeur programme... Chacun à sa place, et les vaches seront bien gardées...voilà bien le non-dit. Et dans ce contexte, passer d'HyperCard au C autorise un changement de statut social (souvent fantasmé) que l'on préfère mettre au compte d'une modification de savoir.

C'est du coté de Bourdieu qu'il faut plutot chercher la compréhension de ces discussions de sourds, et considérer que l'informatique n'est pas soumise aux idéologies est assez naif (d'autant plus qu'ici, dans cet isolat numérique, il n'est pas seulement question de discours sur une pratique mais de pratique comme élément de discours, ce qui peut se révéler assez pervers, puisque l'on peut mettre ces éléments de discours au compte des faits sur lesquels on discute).

(...) Je dis qu'il est notoirement accepté que l'on ne fait rien de vraiment bon avec Hypercard...et pense que cette appréciation d'ordre technique cache en fait un verrouillage social...en gros que c'est du bourrage de crane. Il semble accepté que la différence entre outil de scripting et outil de programmation soit une différence technique...langage interprété, langage compilé, etc... cela me semble la partie résiduelle du problème... du moins pour ce qui concerne Hypercard.

Dans l'esprit de Bill Atkinson, la pratique de la programmation, sous la forme du scripting, devait être étendue à une population considérée jusqu'alors comme uniquement utilisatrice de logiciels. C'est-à-dire qu'un instituteur, un médecin, un bibliothécaire, un comptable pouvait s'approprier cette technique pour être, comme le disait si bien récemment Steve Wozniak, maître et non esclave de son ordinateur.

Chaque métier a ses particularités, et pour ne prendre qu'un seul exemple, le bibliothécaire, celui-ci ne travaille pas du tout de la même manière selon qu'il exerce dans une faculté ou un comité d'entreprise d'usine. Or comme l'outil informatique est son principal outil de travail, celui-ci se trouve enfermé, embrigadé, dans des procédures informatiques qui méconnaissent ses particularités de travail, s'il est entièrement soumis à l'outillage des logiciels standards. Cela peut geler ou assécher même ses capacités d'innovations dans son travail. Hypercard reconnaissait que son métier de base était d'être bibliothécaire et non informaticien, et lui fournissait juste ce qu'il fallait pour enrichir son travail en procédures informatiques... sans qu'il soit contraint de négliger son travail de base (s'il se met à Java...il aura tendance à ne plus en foutre une rame en matière de bibliothèque, l'ubiquité n'étant pas donnée à tout le monde...:-)). Ce "juste ce qu'il fallait" a été interprété, de manière interessée, comme une défaillance technique du produit par ceux qui entendent faire qu'un consommateur reste un consommateur.

En matière d'efficacité globale, hypercard remplissait son contrat...parce que ce qui compte, c'est ce que cela donne ... à la finale. Une comparaison entre logiciels reste incomplète si l'on n'inclut pas ce que cela donne in situ (ce qui signifie ici l'enrichissement par l'utilisateur d'hypercard du logiciel de base).

Je ne parle pas de scripting en général, mais bien d'hypercard, en particulier. Je ne dirais pas cela pour Frontier (ou Radio) par exemple...pour AppleScript, par contre le sujet est posé ;-) En d'autre terme, je ne parlais pas technique. Je disais qu'hypercard traçait le dessin d'un certain type de relation sociale potentielle autour de l'activité informatique. Son abandon correspond à une régression, de ce point de vue. Avec des effets techniques induits, évidemment (une communauté de scripteurs qui s'évapore), et là, Apple a loupé le coche."

Gwénaël Le Dréan le 01/09/2002 sur Palimpseste