Calculette et Franc suisse

Publié : 07.03.2005 - 2h40 par philjfry

Bonjour
Comme j'en avais marre de chercher le franc au fin fond du menu des devises dans la calculette, j'ai fait ce petit script pour mettre notre monnaie en haut de la liste. Comme je ne suis pas grand expert en applescript et en shell, je suis ouvert pour les suggestions d'amélioration dans le code . Merci .

Code : Tout sélectionner

tell application "Calculator"
   activate
end tell
tell application "System Events"
   get properties
   if UI elements enabled then
      tell process "Calculator"
         tell menu bar 1
            tell menu bar item "Convert" --"convertir"
               tell menu "Convert" -- version localisée en anglais , dsl
                  click menu item "Update Currency Exchange Rates" -- "màj des cours des devises"
               end tell
            end tell
         end tell
      end tell
   else
      tell application "System Preferences"
         activate
         set current pane to pane "com.apple.preference.universalaccess"
         display dialog "UI element scripting is not enabled. Check \"Enable access for assistive devices\""
      end tell
   end if
end tell
delay 1
tell application "Calculator"
   quit
end tell
delay 1
set ledossier to "~/Library/Application\\ Support/calculator/"
set rep to "~/Library/Application\\ Support/calculator/" -- le repertoire
set f1 to "FinancialRates.plist" -- le fichier
set f2 to "NewFRates.plist" -- sa copie
set mors0 to "cd " & rep & " ; cp " & f1 & " " & f2 & "; "
set mors1 to "ligne7=`head -n 7 " & f2 & " | tail -n 1` ;" --
set mors2 to "head -n 6 " & f2 & " > " & f1 & "; echo  \"        <string>CHF Swiss Franc</string> \" >>" & f1 & ";" --
set mors3 to "grep -A 2 \"Swiss\" " & f2 & " | tail -n 2  >> " & f1 & ";" -- ?? localisation "Suisse"
set mors4 to "grep -A 300 ${ligne7} " & f2 & " >> " & f1 & return --
set lescript to mors0 & mors1 & mors2 & mors3 & mors4 --
do shell script lescript


Publié : 07.03.2005 - 8h26 par Fabien

Bon j'ai testé.

Tout d'abbord, il faut noter qu'il faut utiliser un système en anglais, ou alors modifier "Convert" par "Convertir" et "Update Currency Exchange Rates" par sa traduction.

Ensuite... ben ça n'a rien donné :(

J'ai lancé le script, aucune erreur n'est apparue, mais rien ne s'est passé.

J'ai loupé quelque chose ?


Publié : 07.03.2005 - 11h26 par philjfry

Merci. J'ai donc francisé l'interface, et je complète mon explication.

C'est un script destiné à être enregistré comme application, sans écran de départ, à exécuter de préférence au login/démarrage, ou lorsque il faut mettre à jour les cours des devises . Le but avoué est de mettre le Franc Suisse en haut du menu des devises pour ne pas avoir à le chercher quelque part entre la Suède et la Thailande lors des conversions. Enlever les (* *) à la fin pour garder la calculette affichée.
J'espère que ce script pourra être utile :)

Code : Tout sélectionner

tell application "Calculator"
   activate
end tell
tell application "System Events"
   get properties
   if UI elements enabled then
      tell process "Calculator"
         tell menu bar 1
            tell menu bar item "Convertir" --
               tell menu "Convertir" --
                  click menu item "Mettre à jour le taux de change des devises" -- "màj des cours des devises"
               end tell
            end tell
         end tell
      end tell
   else
      tell application "System Preferences"
         activate
         set current pane to pane "com.apple.preference.universalaccess"
         display dialog "Il faut cocher <Activer l'accès pour les périphs d'aide> sinon ça marche pô !"
      end tell
   end if
end tell
delay 1
tell application "Calculator"
   quit
end tell
delay 1
set ledossier to "~/Library/Application\\ Support/calculator/"
set rep to "~/Library/Application\\ Support/calculator/" -- le repertoire
set f1 to "FinancialRates.plist" -- le fichier
set f2 to "NewFRates.plist" -- sa copie
set mors0 to "cd " & rep & " ; cp " & f1 & " " & f2 & "; "
set mors1 to "ligne7=`head -n 7 " & f2 & " | tail -n 1` ;" --
set mors2 to "head -n 6 " & f2 & " > " & f1 & "; echo  \"        <string>CHF Swiss Franc</string> \" >>" & f1 & ";" --
set mors3 to "grep -A 2 \"S[uw]iss\" " & f2 & " | tail -n 2  >> " & f1 & ";" -- trouve Suiss et Swiss
set mors4 to "grep -A 300 ${ligne7} " & f2 & " >> " & f1 & "; echo \"EEECHOOOO !\" " & return --
set lescript to mors0 & mors1 & mors2 & mors3 & mors4 --
do shell script lescript
(*delay 1
tell application "Calculator"
   activate
end tell*)
quit


Commentaire sur le code et les choix .
La première partie est adaptée des scripts "UI elements Scripts".
La deuxième partie est pragmatique et le style brutal.
Les cours des devises sont enregistrés dans ce fichier, à partir de la 7è ligne. La devise suisse st renommée, car si le même élément apparait deux fois dans la liste du menu , il "reste en bas". Il y a 8 espaces avant le <string>, ils pourraient être remplacées par deux <TAB>.
Si la maneuvre corromp le fichier, la calculette va chercher les cours dans son contenu ( et une date de mise à jour ancienne devrait apparaitre)


Publié : 07.03.2005 - 11h54 par Fabien

J'avais bien compris le but et j'avais mis mon système en anglais...

...mais ça ne marche toujours pas, le franc suisse est toujours en bas de la liste :(



OK, j'ai trouvé un bug, voici le contenu de mon dossier "Calculator" dans "Application Support":

Code : Tout sélectionner

-rw-r--r--  1 fabien  fabien  4455  7 Mar 11:51 FinancialRates.plist
-rw-r--r--  1 fabien  fabien  4245  7 Mar 08:23 FinancialRates.plist?
-rw-r--r--  1 fabien  fabien  4455  7 Mar 11:51 NewFRates.plist


comme tu peux le voir il y a un "?" en trop !