Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SignAuPif 1.0.2

31 réponses
Avatar
Benoͮt L.
Bonjour,

Un poil de progrès.
Au premier lancement il vous demandera d’ouvrir un fichier txt qui
contient des signatures.
Il enregistre ça dans un fichier préférence et c’est parti.

https://www.cjoint.com/data/LBoonKEkbUp_SignAuPif-1.0.2.app.zip
https://www.cjoint.com/data/LBoovxt5hnp_SignAuPif-1.0.2.scpt.zip

Prochaine étape ? Gestion des signatures (ajout, suppression,
modification) ?

Aucune idée, je vais dormir dessus et, avant tout, corriger les erreurs
que je n’ai pas trouvées et ajouter des commentaires dans le code.

--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com

10 réponses

1 2 3 4
Avatar
josephb
"Benoͮt L." s'enthousiasma :
Un poil de progrès.
Au premier lancement il vous demandera d'ouvrir un fichier txt qui
contient des signatures.

Ok pour la création du fichier de signatures liées Í  ton appli.
OK pour la création du dialogue avec Dialogue ToolKIt
Il enregistre ça dans un fichier préférence et c'est parti.

Ouais, mais on est pas arrivé…
1) Si l'utilisateur du script n'a pas les Dialog Tool Kit installés, le
script ne marchera pas
2) Tu ne les fournis pas dans les ressources de l'application, donc
comme pour le 1) l'appli ne marchera pas.
3) Tu as oublié de sortir de la boucle repat quand on accepte ce
qu'affiche le dialogue (par le bouton Copier)
4) En réalité ça ne copie pas ce qui est affiché mais la /totalité/ des
signatures contenues dans le fichier
5) C'est toujours la même signature qui est proposée quand on en demande
une autre
6) si le fichier de signature est vide l'utilisateur ne saura pas o͹
aller en chercher des valables, sous quel format, etc.
7) Pour pallier ce souci, ce serait bien qu'au premier lancement, en
l'absence du fichier de signatures que le script va créer, qu'il y
insère par défaut une série de signatures
mes deux cts d'euro
--
J. B.
Avatar
josephb
"Benoͮt L." wrote:
Prochaine étape ? Gestion des signatures (ajout, suppression,
modification) ?

Si tu veux vraiment te simplifier la vie, je te propose de modifier ce
bazar Í  la shadok que tu as monté avec les "¬" qui sont inutiles.
Tu reprends le fichier original
<http://globulle.free.fr/gmp.txt>
que tu colles sans rien y changer (Í  part enlever l'entête) dans le
fichier texte "liste Signatures.txt" créé par ton script.
ensuite, tu charges le script par celui que je te mets ici
<https://www.cjoint.com/c/LBpb4f7j11b>
Tu remarqueras
1) que j'ai intégré la possibilité sans délimiteur par un bouton plutÍ´t
qu'une case Í  cocher
2) que si l'utilisateur annule, le presse-papier est vide
3) que le bouton par "défaut" fonctionne avec la touche entrée ou retour
4) que le code est globalement bien plus simple
Si ça peut t'aider pour la suite…
--
J. B.
Avatar
Benoͮt L.
Avec enthousiasme, le 14 février 2022 Í  18:48, Joseph-B écrivit :
"Benoͮt L." s'enthousiasma :
Un poil de progrès.
Au premier lancement il vous demandera d'ouvrir un fichier txt qui
contient des signatures.

Ok pour la création du fichier de signatures liées Í  ton appli.
OK pour la création du dialogue avec Dialogue ToolKIt
Il enregistre ça dans un fichier préférence et c'est parti.

Ouais, mais on est pas arrivé…
1) Si l'utilisateur du script n'a pas les Dialog Tool Kit installés, le
script ne marchera pas

Merci
2) Tu ne les fournis pas dans les ressources de l'application, donc
comme pour le 1) l'appli ne marchera pas.

Trouvé : «Â You can also distribute it within script applets and script
bundles by creating a folder called Script Libraries in the bundle's
/Contents/Resources folder. »
J’avais compris que c’était automatiquement inclus dans le script
puisqu’il faut le compiler pour pouvoir l’enregistrer après toute
modification.
3) Tu as oublié de sortir de la boucle repat quand on accepte ce
qu'affiche le dialogue (par le bouton Copier)

Je ne vois pas pourquoi il faudrait relancer l’appli Í  chaque fois qu’on
veut s’en servir.
4) En réalité ça ne copie pas ce qui est affiché mais la /totalité/ des
signatures contenues dans le fichier

Ça je ne l’avais pas vu, je passe mon temps sur l’interface et pas le
résultat :/
5) C'est toujours la même signature qui est proposée quand on en demande
une autre

Pas chez moi ! Par contre il ne transcode pas correctement le texte et
les caractères accentués sont un problème s√©rieux. Une histoire de text
vs utf8.
6) si le fichier de signature est vide l'utilisateur ne saura pas o͹
aller en chercher des valables, sous quel format, etc.

Bien vu, s’il est vide on repasse au problème d’absence de fichier, donc
import.
7) Pour pallier ce souci, ce serait bien qu'au premier lancement, en
l'absence du fichier de signatures que le script va créer, qu'il y
insère par défaut une série de signatures

Ok, mais alors un bouton de plus pour l’import. Dommage qu’il ne soit
pas possible d’ajouter des menus. ;)
mes deux cts d'euro

Qui ont beaucoup de valeur ;)
P.S. Plus ça va plus je me dis qu’il faudrait que je passe Í  Swift. Mais
la barre est vraiment haute Í  franchir seul. Je vais essayer de rameuter
mes copains développeurs XCode & Co
--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com
Avatar
Benoͮt L.
Nonobstant quelques doutes, le 15 février 2022 Í  02:57, Joseph-B se
permit de dire :
"Benoͮt L." wrote:
Prochaine étape ? Gestion des signatures (ajout, suppression,
modification) ?

Si tu veux vraiment te simplifier la vie, je te propose de modifier ce
bazar Í  la shadok que tu as monté avec les "¬" qui sont inutiles.
Tu reprends le fichier original
<http://globulle.free.fr/gmp.txt>
que tu colles sans rien y changer (Í  part enlever l'entête) dans le
fichier texte "liste Signatures.txt" créé par ton script.
ensuite, tu charges le script par celui que je te mets ici
<https://www.cjoint.com/c/LBpb4f7j11b>
Tu remarqueras
1) que j'ai intégré la possibilité sans délimiteur par un bouton plutÍ´t
qu'une case Í  cocher

+ 1
Je vais rajouter du code qui supprime les délimiteurs Í  l’import (et la
lecture des prefs au cas o͹ l’utilisateur ai mis les mains dans les
prefs). Je l’ajouterai après coup, suivant le bouton (code plus simple Í 
lire pour corriger si besoin Í mha).
2) que si l'utilisateur annule, le presse-papier est vide

Ce n’est pas propre d’effacer le presse-papier de l’utilisateur,
pourquoi le faire ? Il n’a la signature que s’il la copie et lÍ  le
presse-papier est mis Í  jour.
3) que le bouton par "défaut" fonctionne avec la touche entrée ou retour

Cela veut dire qu’on ne peut plus saisir de texte avec un ou des retour
chariot ? On ne peut d’ailleurs pas saisir de texte dans ton script.
Je souhaite pouvoir modifier la liste (modification ou ajout*,
suppression) sans passer par une deuxième boÍ®te de dialogue. Il faudrait
que la zone de texte ne soit pas sélectionnée/active par défaut (il faut
que je trouve o͹ modifier ça).
4) que le code est globalement bien plus simple

Oui, mais on perd quelques trucs au passage. En tout cas merci
Si ça peut t'aider pour la suite…

Oui, un grand merci. Toutes aides, conseils, critiques ou suggestions
sont les bienvenues.
Prochaine étape, puisque je passe Í  la taille supérieure :
Créer une liste de to-dos** !
Apprendre Í  créer des routines, plus le code est long plus il faut les
utiliser pour modifier/corriger ultérieurement.
* LÍ  j’ai un problème d’interface, c’est un bouton qui doit être grisé
tant que l’utilisateur n’a pas touché Í  la citation. Il peut la
supprimer, il peut la «Â modifier » même sans modification, par contre je
n’ai pas envie qu’il puisse la dupliquer dans la liste. Quel intérêt ?
** Un sur lequel je bute est de récupérer l’emplacement de la boÍ®te de
dialogue pour qu’elle se retrouve au même endroit au lancement suivant.
Pas sͻr que je puisse avoir cette info, je cherche.
P.S. J’avance fonctionnalité par fonctionnalité, Í  petits, tous petits
pas.
--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com
Avatar
josephb
"Benoͮt L." wrote:
Cela veut dire qu'on ne peut plus saisir de texte avec un ou des retour
chariot ?

Effectivement, si on active le raccourci clavier du bouton par défaut, ça
empêche de rajouter une ligne dans le texte.
Pas possible de concilier les deux, et c'est dommage
On ne peut d'ailleurs pas saisir de texte dans ton script.

Si, si, il suffit de mettre le curseur 'd'insertion Í  l'endroit voulu et l'on
rentre, efface, tout le texte que l'on veut avant de passer au bouton de copie.
En l'état, quoi que fasse l'utilisateur dans le champ, (même en effacer tout
le contenu) ce qui sera collé dans le P-P est le GMP original (hors l'option
du délimiteur par l'autre bouton)
Si tu veux permettre que la modification Í  la volée soit prise en compte
dans le P-P (sans modifier la base de données), il faut adapter la fin de l
a boucle /repeat/ comme suit (attention Í  la coupure de la ligne la plus longue)
**********************************
set {buttonName, controlsResults} to display enhanced window "SignAuPif" acc view width accViewWidth acc view height theTop acc view controls {theField, boldLabel} buttons theButtons initial position
{0, 0} with align cancel button
if buttonName is "Nouveau tirage" then
-- recommencer la boucle de tirage au sort
else if buttonName contains "avec" then -- copier en l'état
set the clipboard to (controlsResults's item 1 as text)
exit repeat --quitter la boucle
else -- supprimer le délimiteur de signature et copier
try -- zapper erreur s'il reste moins de 5 caractères dans le champ
set the clipboard to (text 5 thru -1 of (controlsResults's item 1 as text as text))
end try
exit repeat
end if
end repeat
***********************************
Bien sÍ»r il te suffit de désactiver la ligne de vidage du P-P au début de
la boucle repeat, si tu estimes que ce n'est pas correct ;-)
que le code est globalement bien plus simple

Oui, mais on perd quelques trucs au passage.

Rien qui ne puisse se remettre sans difficulté
Je souhaite pouvoir modifier la liste (modification ou ajout*,
suppression) sans passer par une deuxième boÍ®te de dialogue. Il faudrait
que la zone de texte ne soit pas sélectionnée/active par défaut (il faut
que je trouve o͹ modifier ça).

un quatrième bouton peut faire ça, mais il faut en écrire le code ;-)
Aucune importance que le texte soit présélectionné et de toute façon ce
ne sera pas le bouton par défaut
* LÍ  j'ai un problème d'interface, c'est un bouton qui doit être grisé
tant que l'utilisateur n'a pas touché Í  la citation.

Pas faisable (Í  ma connaissance avec les Dialog Tool Kit), mais d'aucun
intérêt : ce ne sera pas le bouton par défaut
Il peut la supprimer, il peut la « modifier » même sans modification,

Donc appliquer la version de script ci-dessus
n'ai pas envie qu'il puisse la dupliquer dans la liste. Quel intérêt ?

par contre ajout d'une GMP (modifiée ou créé) ou sa supression dans la base
de texte originale, lÍ  ça va devenir bien plus compliqué car il va falloir
scanner toute la base existante Í  comparer avec la citation impliquée soit Í 
modifier, soit ͠ ajouter, soit ͠ supprimer puis raffraͮchir le texte.
C'est faisable, soit en pur AppleCript, soit avec des commandes Shell,
mais dans tous les cas il va y avoir un algorithme pointu Í  écrire et surtout
un gros gros boulot de déboggage !
En plus, expliquer Í  l'utilisateur qu'il doit respecter un minimum de syntaxe
sinon son intervention va mettre la base existante en vrac, je ne vois pas
comment tu vas t'y prendre.
Bon courage pour la suite
--
J. B.
Avatar
josephb
Joseph-B wrote:
#> set the clipboard to (text 5 thru -1 of (controlsResults's item 1 as text as text))
il y a un "as text" redondant, qui ne crée pas de souci d'ailleurs, Í  enlever
set the clipboard to (text 5 thru -1 of (controlsResults's item 1 as text))
--
J. B.
Avatar
Benoͮt L.
Avec enthousiasme, le 15 février 2022 Í  14:58, BenoÍ®t L. écrivit :
3) Tu as oublié de sortir de la boucle repat quand on accepte ce
qu'affiche le dialogue (par le bouton Copier)

Je ne vois pas pourquoi il faudrait relancer l’appli Í  chaque fois qu’on
veut s’en servir.

Par contre j’ai ajouté ça :
if buttonName is "Quitter" then exit repeat
Et lÍ  on quitte proprement, pas avec le cancel proposé par défaut.
4) En réalité ça ne copie pas ce qui est affiché mais la /totalité/ des
signatures contenues dans le fichier

Ça je ne l’avais pas vu, je passe mon temps sur l’interface et pas le
résultat :/

Mon affichage du presse-papier en arrière-plan me dit que tout va bien.
5) C'est toujours la même signature qui est proposée quand on en demande
une autre

Pas chez moi ! Par contre il ne transcode pas correctement le texte et
les caractères accentués sont un problème s√©rieux. Une histoire de text
vs utf8.

Résolu.
Ça avance.
--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com
Avatar
josephb
"Benoͮt L." wrote:
Par contre j'ai ajouté ça :
if buttonName is "Quitter" then exit repeat

Si ça peut te fare plaisir, mais ça ne sert strictement Í rien :
Í  la microseconde o͹ le /Cancel button/ est activé, la suite du script
n'est même pas lu, un message d'interruption est envoyé avec ordre
d'arrêter l'exécution du code qui l'a émis.
Et lÍ  on quitte proprement, pas avec le cancel proposé par défaut.

L'erreur Système -128 (Cancel de l'utilisateur) est gérée très
proprement par le système, ce n'est pas une sortie en force, c'est une
interruption.
Pour preuve, fais le test suivant : au lieu du "exit repeat " mets ceci
if buttonName is "Quitter" then beep
jamais tu n'entendras le Beep d'alerte Système parce que l'ordre
d'interruption sera passé avant que la commande Beep soit envoyée, et
dans tous les cas tu liras dans le débogueur
Résultat :
error "Annulé par l'utilisateur." number -128 from «script "Dialog
Toolkit Plus"» to item
Toutefois il est possible d'intercepter le Cancel et empêcher d'arrêter
pour faire autre chose, mais ce n'est vraiment pas utile ici.
Bien sͻr si on nomme un bouton quelconque "Quitter" qui n'est pas un
vrai /Cancel button/ dans une boucle repeat, ton ajout sera
indispensable.
--
J. B.
Avatar
Benoͮt L.
Après mÍ»re réflexion, le 15 février 2022 Í  16:10, Joseph-B eu l'idée
d'écrire :
Joseph-B wrote:
#> set the clipboard to (text 5 thru -1 of (controlsResults's item 1 as text as text))
il y a un "as text" redondant, qui ne crée pas de souci d'ailleurs, Í  enlever
set the clipboard to (text 5 thru -1 of (controlsResults's item 1 as text))

Le «Â as text » et le «Â as «class utf8»Â » m’énervent comme ce n’est pas
possible. De temps en temps j’ai des caractères >128 qui sont pourris,
mais pas au lancement suivant.
J’aimerai comprendre. En attendant j’appelle deux fois la string et plus
de problème. Donc il est réglé, d’un certain point de vue.
Pour le set clipboard je préfère commencer par un fichier de signatures
sans délimiteurs, genre :
set searchString to "-- " & linefeed
set replaceString to ""
Ou du genre :
repeat with i from 1 to count paragraphs of myText
if paragraph i is "-- " then set paragraph i to ""
set i to i+1
end repeat
Je peux faire de même sur la liste si le premier caractère de la
signature se trouve être un ou des linefeed.
P.S. Je ne sais pas comment tu as géré une variable avec des retours
charriots, quand j’en mets il me dit qu’il y a un problème :
set toto to "Benoͮt
Leraillez
Téléphone
Adresse"
Il y a un problème, d’o͹ mon utilisation des linefeed plutÍ´t que des
return qui ne fonctionnent pas. Avec linefeed je sais que ça marche :)
--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com
Avatar
Benoͮt L.
Le 15 février 2022 Í  19:35, Joseph-B d'un élan de joie s'exprima ainsi :
"Benoͮt L." wrote:
Par contre j'ai ajouté ça :
if buttonName is "Quitter" then exit repeat

Si ça peut te fare plaisir, mais ça ne sert strictement Í rien :
Í  la microseconde o͹ le /Cancel button/ est activé, la suite du script
n'est même pas lu, un message d'interruption est envoyé avec ordre
d'arrêter l'exécution du code qui l'a émis.
Et lÍ  on quitte proprement, pas avec le cancel proposé par défaut.

L'erreur Système -128 (Cancel de l'utilisateur) est gérée très
proprement par le système, ce n'est pas une sortie en force, c'est une
interruption.

Pour moi c’est comme de demander de faire un
keystroke cmd-alt-esc down
delay 0.2
return
Pour preuve, fais le test suivant : au lieu du "exit repeat " mets ceci
if buttonName is "Quitter" then beep
jamais tu n'entendras le Beep d'alerte Système parce que l'ordre
d'interruption sera passé avant que la commande Beep soit envoyée, et
dans tous les cas tu liras dans le débogueur

Moi je l’entends. Tu as gardé un bout de code dans
set {theButtons, minWidth}* to create buttons…
Résultat :
error "Annulé par l'utilisateur." number -128 from «script "Dialog
Toolkit Plus"» to item

Non, parce que tu as conservé «Â cancel button "Quitter" » dans create
buttons. Moi pas.
Toutefois il est possible d'intercepter le Cancel et empêcher d'arrêter
pour faire autre chose, mais ce n'est vraiment pas utile ici.

Je ne sais pas aujourd’hui pourquoi intercepter le Cancel button. Je me
simplifie la vie en le supprimant.
Bien sͻr si on nomme un bouton quelconque "Quitter" qui n'est pas un
vrai /Cancel button/ dans une boucle repeat, ton ajout sera
indispensable.

C’est ce que j’ai fait. Cela permet surtout de faire des choses avant de
quitter l’appli, comme enregistrer la nouvelle version de la liste suite
Í  modification, suppression ou ajout. Ils sont effectués sur la liste en
mémoire et pas dans le fichier dans les préférences. Je n’écris sur le
disque qu’Í  la fin ou alors je mets une variable qui appelle une routine
qui fait le travail. Pour plus tard : K.I.S.S pour le moment.
* J’ai beaucoup de mal avec les «Â set "liste" »Â : je sais que ça marche
tant que ce n’est pas moi qui l’ai écrit.
--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com
1 2 3 4