Le post de J.P sur les services m'a donné envie de partager mes
réflexions à propos de TextEdit.
J'ai en permanence une soixantaine d'onglets ouverts dans Safari
répartis dans sept fenêtres par thèmes.
J'ai réalisé un Apple script
<http://s173327841.onlinehome.fr/agora-project_3.1.7/?ctrl=file&targetObjId=fileFolder-10>
qui ouvre une page TextEdit et qui liste tous ces onglets.
Ce script a été réalisé sur l'iMac et il y fonctionne correctement.
Je l'ai copié sur le MBA et là, il ne fonctionne pas.
Après investigation, il se révèle que le comportement de TextEdit est
différent sur les deux machines.
Sur l'iMac, menu Format > Liste, le curseur vient se placer par défaut
dans la case Préfixe et la touche de tabulation le déplace vers
Puces/numéros, Suffixe, etc.
Sur le MBA, menu Format > Liste, la touche tabulation navigue uniquement
entre les cases Préfixe et Suffixe, d'où le nom fonctionnement du
script.
La réinstallation de TextEdit même avec Pacifist à partir du paquet
d'installation d'OS X n'est pas permis.
Sur l'iMac, il y a 16 Go de Ram, mais seulement 4 Go sur le MBA
Ceci pourrait-il expliquer celà ?
Pour info, j'ai réalisé un script similaire qui fait appel à
TextWrangler qui fonctionne sur les deux et qui présente l'avantage
d'appeler l'onglet directement en cliquant sur le http, ce que ne sait
pas faire TextEdit
Cordialement,
--
Gérard FLEUROT [<g4fleurot@free.fr> plus un] vous informe que :
Bizarre, je ne peux pas accélérer le crypto-détonateur parce que le
transistor moléculaire est sur le point de transformer le
capillo-délinéateur alvéolé !
J'ai testé " Lister les onglets Safari - TextEdit" et " Lister les onglets Safari - TextWrangler" Pour TextWarangler, aucun problème. Pour TextEdit, impossible à utiliser, j'ai une fenêtre vide bien qu'apparaisse fugitivement une fenêtre avec des données. J'utilise un iMac avec 10.11.6, et que je mette les raccourcis en Champs et liste ou Tous les contrôles, ce n'est pas mieux.
Chez moi (iMac avec 10.11.6 aussi), le script " Lister les onglets Safari - TextEdit" fonctionne avec "Champs et liste aussi bien qu'avec "Tous les contrôles". En revanche, il y a une chose que je ne comprends pas dans ce script : pourquoi activer TextEdit, le fermer et l'activer à nouveau ? Si on demande à TextEdit de créer un nouveau document avant de lui envoyer le texte, comme ceci : ==== tell application "TextEdit" activate make new document at the front set the text of the front document to docText [...] end tell ==== on n'a besoin de l'activer qu'une seule fois. -- Denis
B. Graignic a écrit ceci :
J'ai testé " Lister les onglets Safari - TextEdit" et " Lister les
onglets Safari - TextWrangler"
Pour TextWarangler, aucun problème.
Pour TextEdit, impossible à utiliser, j'ai une fenêtre vide bien
qu'apparaisse fugitivement une fenêtre avec des données.
J'utilise un iMac avec 10.11.6, et que je mette les raccourcis en Champs
et liste ou Tous les contrôles, ce n'est pas mieux.
Chez moi (iMac avec 10.11.6 aussi), le script " Lister les onglets
Safari - TextEdit" fonctionne avec "Champs et liste aussi bien qu'avec
"Tous les contrôles".
En revanche, il y a une chose que je ne comprends pas dans ce script :
pourquoi activer TextEdit, le fermer et l'activer à nouveau ? Si on
demande à TextEdit de créer un nouveau document avant de lui envoyer le
texte, comme ceci :
==== tell application "TextEdit"
activate
make new document at the front
set the text of the front document to docText
[...]
end tell
====
on n'a besoin de l'activer qu'une seule fois.
J'ai testé " Lister les onglets Safari - TextEdit" et " Lister les onglets Safari - TextWrangler" Pour TextWarangler, aucun problème. Pour TextEdit, impossible à utiliser, j'ai une fenêtre vide bien qu'apparaisse fugitivement une fenêtre avec des données. J'utilise un iMac avec 10.11.6, et que je mette les raccourcis en Champs et liste ou Tous les contrôles, ce n'est pas mieux.
Chez moi (iMac avec 10.11.6 aussi), le script " Lister les onglets Safari - TextEdit" fonctionne avec "Champs et liste aussi bien qu'avec "Tous les contrôles". En revanche, il y a une chose que je ne comprends pas dans ce script : pourquoi activer TextEdit, le fermer et l'activer à nouveau ? Si on demande à TextEdit de créer un nouveau document avant de lui envoyer le texte, comme ceci : ==== tell application "TextEdit" activate make new document at the front set the text of the front document to docText [...] end tell ==== on n'a besoin de l'activer qu'une seule fois. -- Denis
g4fleurot
DV après avoir mûrement réfléchi nous suggère :
En revanche, il y a une chose que je ne comprends pas dans ce script : pourquoi activer TextEdit, le fermer et l'activer à nouveau ? Si on demande à TextEdit de créer un nouveau document avant de lui envoyer le texte, comme ceci : on n'a besoin de l'activer qu'une seule fois.
Et bien, as-tu essayé d'appeler le script tel que tu l'écris plusieurs fois de suite ? -- Gérard FLEUROT plus un
DV après avoir mûrement réfléchi nous suggère :
En revanche, il y a une chose que je ne comprends pas dans ce script :
pourquoi activer TextEdit, le fermer et l'activer à nouveau ? Si on
demande à TextEdit de créer un nouveau document avant de lui envoyer le
texte, comme ceci :
on n'a besoin de l'activer qu'une seule fois.
Et bien, as-tu essayé d'appeler le script tel que tu l'écris plusieurs
fois de suite ?
En revanche, il y a une chose que je ne comprends pas dans ce script : pourquoi activer TextEdit, le fermer et l'activer à nouveau ? Si on demande à TextEdit de créer un nouveau document avant de lui envoyer le texte, comme ceci : on n'a besoin de l'activer qu'une seule fois.
Et bien, as-tu essayé d'appeler le script tel que tu l'écris plusieurs fois de suite ? -- Gérard FLEUROT plus un
g4fleurot
B. Graignic a écrit ceci :
Pour ne pas m'embéter, j'ai repris le script de TextWrangler et je l'ai remplacer par TextEdit et ça roule mais je dois perdre le formatage.
Dans TextWrangler, menu Edit > Text options > Editing, tu coches les cases Line Numbers, Gutters, Navigation bar, Page guide, Tab stops et tu auras un formatage acceptable. L'avantage du script TextWrangler, c'est qu'en faisant un Pomme clic sur http ou https sur une ligne, ça ouvre directement l'onglet correspondant. -- Gérard FLEUROT plus un
B. Graignic a écrit ceci :
Pour ne pas m'embéter, j'ai repris le script de TextWrangler et je l'ai
remplacer par TextEdit et ça roule mais je dois perdre le formatage.
Dans TextWrangler, menu Edit > Text options > Editing, tu coches les
cases Line Numbers, Gutters, Navigation bar, Page guide, Tab stops et tu
auras un formatage acceptable.
L'avantage du script TextWrangler, c'est qu'en faisant un Pomme clic sur
http ou https sur une ligne, ça ouvre directement l'onglet
correspondant.
Pour ne pas m'embéter, j'ai repris le script de TextWrangler et je l'ai remplacer par TextEdit et ça roule mais je dois perdre le formatage.
Dans TextWrangler, menu Edit > Text options > Editing, tu coches les cases Line Numbers, Gutters, Navigation bar, Page guide, Tab stops et tu auras un formatage acceptable. L'avantage du script TextWrangler, c'est qu'en faisant un Pomme clic sur http ou https sur une ligne, ça ouvre directement l'onglet correspondant. -- Gérard FLEUROT plus un
DV
Fleuger a écrit ceci :
Et bien, as-tu essayé d'appeler le script tel que tu l'écris plusieurs fois de suite ?
Ben oui, et chez moi ça marche. À moins que je n'aie pas bien compris ce que tu veux obtenir ? -- Denis
Fleuger a écrit ceci :
Et bien, as-tu essayé d'appeler le script tel que tu l'écris plusieurs
fois de suite ?
Ben oui, et chez moi ça marche. À moins que je n'aie pas bien compris ce
que tu veux obtenir ?
Et bien, as-tu essayé d'appeler le script tel que tu l'écris plusieurs fois de suite ?
Ben oui, et chez moi ça marche. À moins que je n'aie pas bien compris ce que tu veux obtenir ? -- Denis
g4fleurot
DV a tout bonnement rédigé :
Ben oui, et chez moi ça marche. À moins que je n'aie pas bien compris ce que tu veux obtenir ?
Après l'exécutiion du script, le curseur du menu Format > Liste de TextEdit reste à l'endroit sélectionné c'est à dire dans Puces/numéros. En relançant le script, il se déplace vers suffixe et le formatage n'est plus bon. En quittant TextEdit et en le relançant, le curseur repart de Préfixe et le formatage redevient correct. -- Gérard FLEUROT plus un
DV a tout bonnement rédigé :
Ben oui, et chez moi ça marche. À moins que je n'aie pas bien compris ce
que tu veux obtenir ?
Après l'exécutiion du script, le curseur du menu Format > Liste de
TextEdit reste à l'endroit sélectionné c'est à dire dans Puces/numéros.
En relançant le script, il se déplace vers suffixe et le formatage n'est
plus bon.
En quittant TextEdit et en le relançant, le curseur repart de Préfixe et
le formatage redevient correct.
Ben oui, et chez moi ça marche. À moins que je n'aie pas bien compris ce que tu veux obtenir ?
Après l'exécutiion du script, le curseur du menu Format > Liste de TextEdit reste à l'endroit sélectionné c'est à dire dans Puces/numéros. En relançant le script, il se déplace vers suffixe et le formatage n'est plus bon. En quittant TextEdit et en le relançant, le curseur repart de Préfixe et le formatage redevient correct. -- Gérard FLEUROT plus un
DV
Fleuger a écrit ceci :
Après l'exécutiion du script, le curseur du menu Format > Liste de TextEdit reste à l'endroit sélectionné c'est à dire dans Puces/numéros. En relançant le script, il se déplace vers suffixe et le formatage n'est plus bon. En quittant TextEdit et en le relançant, le curseur repart de Préfixe et le formatage redevient correct.
Si je comprends bien, le formatage correct serait une liste numérotée ? Le souci, c'est que même avec le script original, j'obtiens juste une liste basique, sans numéros ni puces. -- Denis
Fleuger a écrit ceci :
Après l'exécutiion du script, le curseur du menu Format > Liste de
TextEdit reste à l'endroit sélectionné c'est à dire dans Puces/numéros.
En relançant le script, il se déplace vers suffixe et le formatage n'est
plus bon.
En quittant TextEdit et en le relançant, le curseur repart de Préfixe et
le formatage redevient correct.
Si je comprends bien, le formatage correct serait une liste numérotée ?
Le souci, c'est que même avec le script original, j'obtiens juste une
liste basique, sans numéros ni puces.
Après l'exécutiion du script, le curseur du menu Format > Liste de TextEdit reste à l'endroit sélectionné c'est à dire dans Puces/numéros. En relançant le script, il se déplace vers suffixe et le formatage n'est plus bon. En quittant TextEdit et en le relançant, le curseur repart de Préfixe et le formatage redevient correct.
Si je comprends bien, le formatage correct serait une liste numérotée ? Le souci, c'est que même avec le script original, j'obtiens juste une liste basique, sans numéros ni puces. -- Denis
g4fleurot
DV aimerait obtenir une réponse à sa question :
Si je comprends bien, le formatage correct serait une liste numérotée ?
Oui. Toute cette séquence de touches sert à obtenir cela. Du fait des comportements bizarres de TextEdit, j'ai recommencé avec TextWrangler qui est plus simple. En premier lieu, j'avais mis : --Write Document Text tell application "TextEdit" activate make new document set the text of the front document to docText tell application "System Events" keystroke "a" using command down click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste... display alert "Sélecter 01 02 03... dans le menu déroulant" end tell set the bounds of the front window to {60, 110, 1520, 770} end tell pas très élégant alors, j'ai essayé d'automatiser (j'ai ajouté l'explication des touches) --Write Document Text tell application "TextEdit" to activate delay 0.2 tell application "TextEdit" to quit delay 0.2 tell application "TextEdit" activate --make new document set the text of the front document to docText tell application "System Events" keystroke "a" using command down click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste... delay 0.2 key code 48 --Tabulation delay 0.2 click delay 0.2 key code 49 --Barre d'espace delay 0.2 repeat 9 times key code 125 --flèche vers le bas->01 02 03 end repeat delay 0.2 key code 49 delay 0.2 key code 76 --enter --display alert "Sélecter 01 02 03... dans le menu déroulant" end tell set the bounds of the front window to {60, 110, 1520, 770} end tell -- Gérard FLEUROT plus un
DV aimerait obtenir une réponse à sa question :
Si je comprends bien, le formatage correct serait une liste numérotée ?
Oui. Toute cette séquence de touches sert à obtenir cela.
Du fait des comportements bizarres de TextEdit, j'ai recommencé avec TextWrangler qui est plus simple.
En premier lieu, j'avais mis :
--Write Document Text
tell application "TextEdit"
activate
make new document
set the text of the front document to docText
tell application "System Events"
keystroke "a" using command down
click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste...
display alert "Sélecter 01 02 03... dans le menu déroulant"
end tell
set the bounds of the front window to {60, 110, 1520, 770}
end tell
pas très élégant alors, j'ai essayé d'automatiser
(j'ai ajouté l'explication des touches)
--Write Document Text
tell application "TextEdit" to activate
delay 0.2
tell application "TextEdit" to quit
delay 0.2
tell application "TextEdit"
activate
--make new document
set the text of the front document to docText
tell application "System Events"
keystroke "a" using command down
click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste...
delay 0.2
key code 48 --Tabulation
delay 0.2
click
delay 0.2
key code 49 --Barre d'espace
delay 0.2
repeat 9 times
key code 125 --flèche vers le bas->01 02 03
end repeat
delay 0.2
key code 49
delay 0.2
key code 76 --enter
--display alert "Sélecter 01 02 03... dans le menu déroulant"
end tell
set the bounds of the front window to {60, 110, 1520, 770}
end tell
Si je comprends bien, le formatage correct serait une liste numérotée ?
Oui. Toute cette séquence de touches sert à obtenir cela. Du fait des comportements bizarres de TextEdit, j'ai recommencé avec TextWrangler qui est plus simple. En premier lieu, j'avais mis : --Write Document Text tell application "TextEdit" activate make new document set the text of the front document to docText tell application "System Events" keystroke "a" using command down click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste... display alert "Sélecter 01 02 03... dans le menu déroulant" end tell set the bounds of the front window to {60, 110, 1520, 770} end tell pas très élégant alors, j'ai essayé d'automatiser (j'ai ajouté l'explication des touches) --Write Document Text tell application "TextEdit" to activate delay 0.2 tell application "TextEdit" to quit delay 0.2 tell application "TextEdit" activate --make new document set the text of the front document to docText tell application "System Events" keystroke "a" using command down click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste... delay 0.2 key code 48 --Tabulation delay 0.2 click delay 0.2 key code 49 --Barre d'espace delay 0.2 repeat 9 times key code 125 --flèche vers le bas->01 02 03 end repeat delay 0.2 key code 49 delay 0.2 key code 76 --enter --display alert "Sélecter 01 02 03... dans le menu déroulant" end tell set the bounds of the front window to {60, 110, 1520, 770} end tell -- Gérard FLEUROT plus un
quark67
Fleuger wrote:
DV aimerait obtenir une réponse à sa question :
Si je comprends bien, le formatage correct serait une liste numérotée ?
Oui. Toute cette séquence de touches sert à obtenir cela. Du fait des comportements bizarres de TextEdit, j'ai recommencé avec TextWrangler qui est plus simple. En premier lieu, j'avais mis : --Write Document Text tell application "TextEdit" activate make new document set the text of the front document to docText tell application "System Events" keystroke "a" using command down click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste... display alert "Sélecter 01 02 03... dans le menu déroulant" end tell set the bounds of the front window to {60, 110, 1520, 770} end tell pas très élégant alors, j'ai essayé d'automatiser (j'ai ajouté l'explication des touches) --Write Document Text tell application "TextEdit" to activate delay 0.2 tell application "TextEdit" to quit delay 0.2 tell application "TextEdit" activate --make new document set the text of the front document to docText tell application "System Events" keystroke "a" using command down click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste... delay 0.2 key code 48 --Tabulation delay 0.2 click delay 0.2 key code 49 --Barre d'espace delay 0.2 repeat 9 times key code 125 --flèche vers le bas->01 02 03 end repeat delay 0.2 key code 49 delay 0.2 key code 76 --enter --display alert "Sélecter 01 02 03... dans le menu déroulant" end tell set the bounds of the front window to {60, 110, 1520, 770} end tell
Bonjour, pour sélectionner "01 02 03…" dans le menu déroulant il y a franchement plus simple et plus direct. Cela devrait vous éviter d'avoir à relancer TextEdit à chaque fois. Je ne place ici que la partie correspondant à cette sélection, à vous d'adapter selon vos besoins (en ajoutant les parties "make new document", "set the bound of front window..." qui ne devraient pas devoir être changées). ------------------------------------------- tell application "TextEdit" activate tell application "System Events" tell process "TextEdit" click menu item "Liste…" of menu 1 of menu bar item 5 of menu bar 1 click pop up button 1 of sheet 1 of window 1 click menu item "01 02 03…" of menu 1 of pop up button 1 of sheet 1 of window 1 click button "OK" of sheet 1 of window 1 end tell end tell end tell ------------------------------------------- Notez bien les points suivants : - les points de suspension dans les menus de l'app TextEdit sont le caractère "…" (alt+; sur un clavier Azerty) et non pas 3 points "..." ; - l'élément de menu "01 02 03…" contient deux espaces entre "01" et "02" et entre "02" et "03". Pour ma part, n'allant que sur les newsgroups plus ou moins techniques, j'affiche les messages dans une police à chasse fixe, ce qui lève les ambiguités soulevées précédemment. Si vous avez ultérieurement à cibler un menu comportant une apostrophe, attention là aussi. Les apps d'Apple emploient généralement correctement l'apostrophe courbe (' obtenu par alt+maj+' sur un clavier Azerty) tandis que d'autres apps moins soignées peuvent utiliser l'apostrophe droite ('). La distinction peut ne pas être très évidente, dans ce cas il faudra essayer les deux possibilités. Ou alors, ce qui peut aussi avoir l'avantage de rendre le script indépendant de la langue, cibler les éléments par leur numéro (mais cela rend le script moins clair). Pour voir qu'il y avait deux espace entre "01" et "02" j'ai utilisé ce bout de code : --------------- get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of window 1 --------------- à l'intérieur des appels "tell app", "tell process" après avoir cliqué sur le pop up button 1 de la feuille 1 de la fenêtre 1 (la fenêtre 1 est celle au premier plan).
Fleuger <g4fleurot@free.fr> wrote:
DV aimerait obtenir une réponse à sa question :
> Si je comprends bien, le formatage correct serait une liste numérotée ?
Oui. Toute cette séquence de touches sert à obtenir cela.
Du fait des comportements bizarres de TextEdit, j'ai recommencé avec
TextWrangler qui est plus simple.
En premier lieu, j'avais mis :
--Write Document Text
tell application "TextEdit"
activate
make new document
set the text of the front document to docText
tell application "System Events"
keystroke "a" using command down
click menu item 10 of menu 5 of menu bar of process
"TextEdit" --menu Format>Liste...
display alert "Sélecter 01 02 03... dans le menu
déroulant"
end tell
set the bounds of the front window to {60, 110, 1520, 770}
end tell
pas très élégant alors, j'ai essayé d'automatiser
(j'ai ajouté l'explication des touches)
--Write Document Text
tell application "TextEdit" to activate
delay 0.2
tell application "TextEdit" to quit
delay 0.2
tell application "TextEdit"
activate
--make new document
set the text of the front document to docText
tell application "System Events"
keystroke "a" using command down
click menu item 10 of menu 5 of menu bar of process
"TextEdit" --menu Format>Liste...
delay 0.2
key code 48 --Tabulation
delay 0.2
click
delay 0.2
key code 49 --Barre d'espace
delay 0.2
repeat 9 times
key code 125 --flèche vers le bas->01 02 03
end repeat
delay 0.2
key code 49
delay 0.2
key code 76 --enter
--display alert "Sélecter 01 02 03... dans le menu
déroulant"
end tell
set the bounds of the front window to {60, 110, 1520, 770}
end tell
Bonjour, pour sélectionner "01 02 03…" dans le menu déroulant il y a
franchement plus simple et plus direct. Cela devrait vous éviter d'avoir
à relancer TextEdit à chaque fois.
Je ne place ici que la partie correspondant à cette sélection, à vous
d'adapter selon vos besoins (en ajoutant les parties "make new
document", "set the bound of front window..." qui ne devraient pas
devoir être changées).
-------------------------------------------
tell application "TextEdit"
activate
tell application "System Events"
tell process "TextEdit"
click menu item "Liste…" of menu 1 of menu bar
item 5 of menu bar 1
click pop up button 1 of sheet 1 of window 1
click menu item "01 02 03…" of menu 1 of pop
up button 1 of sheet 1 of window 1
click button "OK" of sheet 1 of window 1
end tell
end tell
end tell
-------------------------------------------
Notez bien les points suivants :
- les points de suspension dans les menus de l'app TextEdit sont le
caractère "…" (alt+; sur un clavier Azerty) et non pas 3 points "..." ;
- l'élément de menu "01 02 03…" contient deux espaces entre "01" et
"02" et entre "02" et "03".
Pour ma part, n'allant que sur les newsgroups plus ou moins techniques,
j'affiche les messages dans une police à chasse fixe, ce qui lève les
ambiguités soulevées précédemment.
Si vous avez ultérieurement à cibler un menu comportant une apostrophe,
attention là aussi. Les apps d'Apple emploient généralement correctement
l'apostrophe courbe (' obtenu par alt+maj+' sur un clavier Azerty)
tandis que d'autres apps moins soignées peuvent utiliser l'apostrophe
droite ('). La distinction peut ne pas être très évidente, dans ce cas
il faudra essayer les deux possibilités.
Ou alors, ce qui peut aussi avoir l'avantage de rendre le script
indépendant de la langue, cibler les éléments par leur numéro (mais cela
rend le script moins clair).
Pour voir qu'il y avait deux espace entre "01" et "02" j'ai utilisé ce
bout de code :
---------------
get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of
window 1
---------------
à l'intérieur des appels "tell app", "tell process" après avoir cliqué
sur le pop up button 1 de la feuille 1 de la fenêtre 1 (la fenêtre 1 est
celle au premier plan).
Si je comprends bien, le formatage correct serait une liste numérotée ?
Oui. Toute cette séquence de touches sert à obtenir cela. Du fait des comportements bizarres de TextEdit, j'ai recommencé avec TextWrangler qui est plus simple. En premier lieu, j'avais mis : --Write Document Text tell application "TextEdit" activate make new document set the text of the front document to docText tell application "System Events" keystroke "a" using command down click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste... display alert "Sélecter 01 02 03... dans le menu déroulant" end tell set the bounds of the front window to {60, 110, 1520, 770} end tell pas très élégant alors, j'ai essayé d'automatiser (j'ai ajouté l'explication des touches) --Write Document Text tell application "TextEdit" to activate delay 0.2 tell application "TextEdit" to quit delay 0.2 tell application "TextEdit" activate --make new document set the text of the front document to docText tell application "System Events" keystroke "a" using command down click menu item 10 of menu 5 of menu bar of process "TextEdit" --menu Format>Liste... delay 0.2 key code 48 --Tabulation delay 0.2 click delay 0.2 key code 49 --Barre d'espace delay 0.2 repeat 9 times key code 125 --flèche vers le bas->01 02 03 end repeat delay 0.2 key code 49 delay 0.2 key code 76 --enter --display alert "Sélecter 01 02 03... dans le menu déroulant" end tell set the bounds of the front window to {60, 110, 1520, 770} end tell
Bonjour, pour sélectionner "01 02 03…" dans le menu déroulant il y a franchement plus simple et plus direct. Cela devrait vous éviter d'avoir à relancer TextEdit à chaque fois. Je ne place ici que la partie correspondant à cette sélection, à vous d'adapter selon vos besoins (en ajoutant les parties "make new document", "set the bound of front window..." qui ne devraient pas devoir être changées). ------------------------------------------- tell application "TextEdit" activate tell application "System Events" tell process "TextEdit" click menu item "Liste…" of menu 1 of menu bar item 5 of menu bar 1 click pop up button 1 of sheet 1 of window 1 click menu item "01 02 03…" of menu 1 of pop up button 1 of sheet 1 of window 1 click button "OK" of sheet 1 of window 1 end tell end tell end tell ------------------------------------------- Notez bien les points suivants : - les points de suspension dans les menus de l'app TextEdit sont le caractère "…" (alt+; sur un clavier Azerty) et non pas 3 points "..." ; - l'élément de menu "01 02 03…" contient deux espaces entre "01" et "02" et entre "02" et "03". Pour ma part, n'allant que sur les newsgroups plus ou moins techniques, j'affiche les messages dans une police à chasse fixe, ce qui lève les ambiguités soulevées précédemment. Si vous avez ultérieurement à cibler un menu comportant une apostrophe, attention là aussi. Les apps d'Apple emploient généralement correctement l'apostrophe courbe (' obtenu par alt+maj+' sur un clavier Azerty) tandis que d'autres apps moins soignées peuvent utiliser l'apostrophe droite ('). La distinction peut ne pas être très évidente, dans ce cas il faudra essayer les deux possibilités. Ou alors, ce qui peut aussi avoir l'avantage de rendre le script indépendant de la langue, cibler les éléments par leur numéro (mais cela rend le script moins clair). Pour voir qu'il y avait deux espace entre "01" et "02" j'ai utilisé ce bout de code : --------------- get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of window 1 --------------- à l'intérieur des appels "tell app", "tell process" après avoir cliqué sur le pop up button 1 de la feuille 1 de la fenêtre 1 (la fenêtre 1 est celle au premier plan).
g4fleurot
Bonjour, Le sympathique quark67 vient d'écrire :
Ou alors, ce qui peut aussi avoir l'avantage de rendre le script indépendant de la langue, cibler les éléments par leur numéro (mais cela rend le script moins clair).
Merci pour cette longue réponse très détaillée et instructive pour mes modestes connaissances. J'ai transformé le script à la lumière de ces données (ci-dessous)
Pour voir qu'il y avait deux espace entre "01" et "02" j'ai utilisé ce bout de code : --------------- get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of window 1 --------------- à l'intérieur des appels "tell app", "tell process" après avoir cliqué sur le pop up button 1 de la feuille 1 de la fenêtre 1 (la fenêtre 1 est celle au premier plan).
Là, j'ai tout compris ce que tu expliques, mais ça ne veut pas fonctionner. J'ai toujours la réponse : error "Erreur dans System Events : Il est impossible d'obtenir sheet 1 of window 1 of process "TextEdit". Index non valable." number -1719 from sheet 1 of window 1 of process "TextEdit". En fait, la liste étant déroulée, dès que je clique sur la fenêtre Applescript, elle se referme Amicalement, -- Gérard FLEUROT tell application "Safari" --Variables set windowCount to (number of windows) / 3 set docText to "" --Repeat for Every Window repeat with x from 1 to windowCount set tabCount to number of tabs of window x --Repeat for Every Tab in Current Window repeat with y from 1 to tabCount --Get Tab Name & URL set tabName to name of tab y of window x set tabURL to URL of tab y of window x --set docText to docText & "<a href=" & """ & tabURL & "">" & tabName & "</a>" & linefeed as string set docText to docText & tabName & " - " & tabURL & linefeed as string end repeat end repeat end tell --Write Document Text tell application "TextEdit" activate make new document set the text of the front document to docText tell application "System Events" to tell process "TextEdit" keystroke "a" using command down click menu item "Liste…" of menu 1 of menu bar item 5 of menu bar 1 --menu Format>Liste... click pop up button 1 of sheet 1 of window 1 click menu item "01 02 03…" of menu 1 of pop up button 1 of sheet 1 of window 1 click button "OK" of sheet 1 of window 1 end tell set the bounds of the front window to {60, 110, 1520, 770} end tell
Bonjour,
Le sympathique quark67 vient d'écrire :
Ou alors, ce qui peut aussi avoir l'avantage de rendre le script
indépendant de la langue, cibler les éléments par leur numéro (mais cela
rend le script moins clair).
Merci pour cette longue réponse très détaillée et instructive pour mes modestes connaissances.
J'ai transformé le script à la lumière de ces données (ci-dessous)
Pour voir qu'il y avait deux espace entre "01" et "02" j'ai utilisé ce
bout de code :
---------------
get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of
window 1
---------------
à l'intérieur des appels "tell app", "tell process" après avoir cliqué
sur le pop up button 1 de la feuille 1 de la fenêtre 1 (la fenêtre 1 est
celle au premier plan).
Là, j'ai tout compris ce que tu expliques, mais ça ne veut pas fonctionner.
J'ai toujours la réponse :
error "Erreur dans System Events : Il est impossible d'obtenir sheet 1 of window 1 of process "TextEdit". Index non valable." number -1719 from sheet 1 of window 1 of process "TextEdit".
En fait, la liste étant déroulée, dès que je clique sur la fenêtre Applescript, elle se referme
Amicalement,
--
Gérard FLEUROT
tell application "Safari"
--Variables
set windowCount to (number of windows) / 3
set docText to ""
--Repeat for Every Window
repeat with x from 1 to windowCount
set tabCount to number of tabs of window x
--Repeat for Every Tab in Current Window
repeat with y from 1 to tabCount
--Get Tab Name & URL
set tabName to name of tab y of window x
set tabURL to URL of tab y of window x
--set docText to docText & "<a href=" & """ & tabURL & "">" & tabName & "</a>" & linefeed as string
set docText to docText & tabName & " - " & tabURL & linefeed as string
end repeat
end repeat
end tell
--Write Document Text
tell application "TextEdit"
activate
make new document
set the text of the front document to docText
tell application "System Events" to tell process "TextEdit"
keystroke "a" using command down
click menu item "Liste…" of menu 1 of menu bar item 5 of menu bar 1 --menu Format>Liste...
click pop up button 1 of sheet 1 of window 1
click menu item "01 02 03…" of menu 1 of pop up button 1 of sheet 1 of window 1
click button "OK" of sheet 1 of window 1
end tell
set the bounds of the front window to {60, 110, 1520, 770}
end tell
Ou alors, ce qui peut aussi avoir l'avantage de rendre le script indépendant de la langue, cibler les éléments par leur numéro (mais cela rend le script moins clair).
Merci pour cette longue réponse très détaillée et instructive pour mes modestes connaissances. J'ai transformé le script à la lumière de ces données (ci-dessous)
Pour voir qu'il y avait deux espace entre "01" et "02" j'ai utilisé ce bout de code : --------------- get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of window 1 --------------- à l'intérieur des appels "tell app", "tell process" après avoir cliqué sur le pop up button 1 de la feuille 1 de la fenêtre 1 (la fenêtre 1 est celle au premier plan).
Là, j'ai tout compris ce que tu expliques, mais ça ne veut pas fonctionner. J'ai toujours la réponse : error "Erreur dans System Events : Il est impossible d'obtenir sheet 1 of window 1 of process "TextEdit". Index non valable." number -1719 from sheet 1 of window 1 of process "TextEdit". En fait, la liste étant déroulée, dès que je clique sur la fenêtre Applescript, elle se referme Amicalement, -- Gérard FLEUROT tell application "Safari" --Variables set windowCount to (number of windows) / 3 set docText to "" --Repeat for Every Window repeat with x from 1 to windowCount set tabCount to number of tabs of window x --Repeat for Every Tab in Current Window repeat with y from 1 to tabCount --Get Tab Name & URL set tabName to name of tab y of window x set tabURL to URL of tab y of window x --set docText to docText & "<a href=" & """ & tabURL & "">" & tabName & "</a>" & linefeed as string set docText to docText & tabName & " - " & tabURL & linefeed as string end repeat end repeat end tell --Write Document Text tell application "TextEdit" activate make new document set the text of the front document to docText tell application "System Events" to tell process "TextEdit" keystroke "a" using command down click menu item "Liste…" of menu 1 of menu bar item 5 of menu bar 1 --menu Format>Liste... click pop up button 1 of sheet 1 of window 1 click menu item "01 02 03…" of menu 1 of pop up button 1 of sheet 1 of window 1 click button "OK" of sheet 1 of window 1 end tell set the bounds of the front window to {60, 110, 1520, 770} end tell
g4fleurot
J'ai écrit :
J'ai toujours la réponse : error "Erreur dans System Events : Il est impossible d'obtenir sheet 1 of window 1 of process "TextEdit". Index non valable." number -1719 from sheet 1 of window 1 of process "TextEdit".
Bon, ça y est, j'ai fini par comprendre : tell application "System Events" to tell process "TextEdit" click menu item "Liste…" of menu 1 of menu bar item 5 of menu bar 1 click pop up button 1 of sheet 1 of window 1 get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of window 1 end tell Résultat : "01 02 03…" je connaissais get entire contents qui ne m'avait pas permis de trouver, mais pas get name ;-( Bonne journée. -- Gérard FLEUROT
J'ai écrit :
J'ai toujours la réponse : error "Erreur dans System Events : Il est
impossible d'obtenir sheet 1 of window 1 of process "TextEdit". Index
non valable." number -1719 from sheet 1 of window 1 of process "TextEdit".
Bon, ça y est, j'ai fini par comprendre :
tell application "System Events" to tell process "TextEdit"
click menu item "Liste…" of menu 1 of menu bar item 5 of menu bar 1
click pop up button 1 of sheet 1 of window 1
get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of window 1
end tell
Résultat : "01 02 03…"
je connaissais get entire contents qui ne m'avait pas permis de trouver,
mais pas get name ;-(
J'ai toujours la réponse : error "Erreur dans System Events : Il est impossible d'obtenir sheet 1 of window 1 of process "TextEdit". Index non valable." number -1719 from sheet 1 of window 1 of process "TextEdit".
Bon, ça y est, j'ai fini par comprendre : tell application "System Events" to tell process "TextEdit" click menu item "Liste…" of menu 1 of menu bar item 5 of menu bar 1 click pop up button 1 of sheet 1 of window 1 get name of menu item 10 of menu 1 of pop up button 1 of sheet 1 of window 1 end tell Résultat : "01 02 03…" je connaissais get entire contents qui ne m'avait pas permis de trouver, mais pas get name ;-( Bonne journée. -- Gérard FLEUROT