Discussion:
SignAuPif 1.0.2
(trop ancien pour répondre)
Benoît L.
2022-02-14 14:24:26 UTC
Permalink
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
Joseph-B
2022-02-14 17:48:34 UTC
Permalink
Post by Benoît L.
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
Post by Benoît L.
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.
Benoît L.
2022-02-15 13:58:35 UTC
Permalink
Post by Joseph-B
Post by Benoît L.
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
Post by Benoît L.
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
Post by Joseph-B
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.
Post by Joseph-B
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.
Post by Joseph-B
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 :/
Post by Joseph-B
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.
Post by Joseph-B
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.
Post by Joseph-B
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. ;)
Post by Joseph-B
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
Benoît L.
2022-02-15 16:40:24 UTC
Permalink
Post by Benoît L.
Post by Joseph-B
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.
Post by Benoît L.
Post by Joseph-B
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.
Post by Benoît L.
Post by Joseph-B
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
Joseph-B
2022-02-15 18:35:12 UTC
Permalink
Post by Benoît L.
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.
Post by Benoît L.
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.
Benoît L.
2022-02-15 19:43:18 UTC
Permalink
Post by Joseph-B
Post by Benoît L.
if buttonName is "Quitter" then exit repeat
à 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.
Post by Benoît L.
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
Post by Joseph-B
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…
Post by Joseph-B
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.
Post by Joseph-B
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.
Post by Joseph-B
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
Joseph-B
2022-02-15 23:48:07 UTC
Permalink
Pour moi c'est comme de demander de faire un
keystroke cmd-alt-esc down
delay 0.2
return
Crois ce que tu veux mais tu te trompes et ce n'est pas grave du moment
que ça marche pour toi ;-)
Post by Joseph-B
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.
Bien sûr que non puisque tu as nommément désigné le bouton "Quitter"
comme un "vrai" bouton Cancel dans ton code, que je cite :

## set {theButtons, minWidth} to create buttons {"Quitter", "Nouveau
tirage", "Copier"} default button "Copier" cancel button "Quitter" ##

Mais rien ne t'y oblige ;-)

Entre nous, si tu te mets à Swiftt tu vas être très déçu que ces idiots
de développeurs chez Apple promeuvent l'usage du bouton "Cancel" alors
que selon toi ce serait une abomination. (en fait tu cofonds avec la cmd
killall du Shell)
Que tu ne me crois pas, je m'en fous, mais va bien falloir que tu fasses
confiance aux "vrais programmeurs" de Cupertino (ou même Redmond…)
P.S. Je ne sais pas comment tu as géré une variable avec des retours
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 :)
Je ne vois pas de quoi tu parles ???
Dans la récupération du texte de base des citations, pour en créer la
liste j'utilise llinefeed qui s'écrit aussi "\n" comme TID
(je cite)
## set text item delimiters to "\n\n" ##

le retour chariot c'est "\r" ou return et il n'y en pas une seule fois
dans le code que j'ai envoyé par cjoint.
Mais là aussi je dois me tromper ?

Mon propos n'est pas de polémiquer avec toi, j'ai proposé une piste qui
m'a semblé plus lègère ; tu en prends, tu en laisses, tu accomodes à ta
convenance ou tu rejettes tout en bloc, ça me convient tout pareil,
c'est toi le maître d'œuvre de ton projet.
--
J. B.
Benoît L.
2022-02-16 00:34:13 UTC
Permalink
Post by Joseph-B
Pour moi c'est comme de demander de faire un
keystroke cmd-alt-esc down
delay 0.2
return
Crois ce que tu veux mais tu te trompes et ce n'est pas grave du moment
que ça marche pour toi ;-)
Post by Joseph-B
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.
Bien sûr que non puisque tu as nommément désigné le bouton "Quitter"
## set {theButtons, minWidth} to create buttons {"Quitter", "Nouveau
tirage", "Copier"} default button "Copier" cancel button "Quitter" ##
C’est le code d’origine de Dialog Toolkit plus. Code que j’ai du mal à
comprendre et pour lequel il va me falloir passer quelques grosses
minutes (heures) à lire le « Read me ».
Post by Joseph-B
Mais rien ne t'y oblige ;-)
Entre nous, si tu te mets à Swiftt tu vas être très déçu que ces idiots
de développeurs chez Apple promeuvent l'usage du bouton "Cancel" alors
que selon toi ce serait une abomination. (en fait tu cofonds avec la cmd
killall du Shell)
Un escape dans un repeat cela veut dire que plus rien n’est effectué
après. Pas de sauvegarde, pas de trucs ou bidules pour plus tard : rien,
nada, que dalle.
Post by Joseph-B
Que tu ne me crois pas, je m'en fous, mais va bien falloir que tu fasses
confiance aux "vrais programmeurs" de Cupertino (ou même Redmond…)
Cela n’est pas/plus en eux que j’ai confiance :)

<https://www.economist.com/business/2022/01/29/what-if-all-workers-wrote-software-not-just-the-geek-elite>

copie ci-dessous
Post by Joseph-B
P.S. Je ne sais pas comment tu as géré une variable avec des retours
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 :)
Je ne vois pas de quoi tu parles ???
Si tu tapes
set set AppleScript's text item delimiters (return & return)
ça ne marche pas mais
set AppleScript's text item delimiters to (linefeed & linefeed)
oui. Pourquoi ? No idea.
Post by Joseph-B
Dans la récupération du texte de base des citations, pour en créer la
liste j'utilise llinefeed qui s'écrit aussi "\n" comme TID
(je cite)
## set text item delimiters to "\n\n" ##
le retour chariot c'est "\r" ou return et il n'y en pas une seule fois
dans le code que j'ai envoyé par cjoint.
Mais là aussi je dois me tromper ?
Je vois des "

"
Dans ton script.

Je ne connaissais le \n ou \r que dans BBEdit. Sinon il faut que je
relise plus calmement tes scripts. Je vois les concepts, mais je rate
beaucoup de détails.
Post by Joseph-B
Mon propos n'est pas de polémiquer avec toi, j'ai proposé une piste qui
m'a semblé plus lègère ; tu en prends, tu en laisses, tu accomodes à ta
convenance ou tu rejettes tout en bloc, ça me convient tout pareil,
c'est toi le maître d'œuvre de ton projet.
Certes, mais tu me donnes des idées, des pistes et surtout des leçons.
Tu es d’ailleurs le seul ici.


Article
-------
What if all workers wrote software, not just the geek elite?

Citizen developers are rapidly becoming the vanguard of corporate
digitisation


In 2018 a field technician working for Telstra, an Australian telecoms
firm, built an app that unified 70 messaging systems for reporting
phone-line problems. The technician did this despite having no coding
experience. The interface may look cluttered: the landing page jams in
150 buttons and a local-news ticker—the app equivalent of an airplane
cockpit, quips Charles Lamanna of Microsoft, who oversees the software
titan’s Power Apps platform that made it possible. But it has been a
hit. Some 1,300 other Telstra technicians employ it, saving the firm an
annual $12m.

Professional developers (pro devs) might poke fun at the technician’s
diy app. But the trend it exemplifies is no joke. Since well before
2017, when Chris Wanstrath, co-founder of GitHub, a coding-collaboration
site, declared that “the future of coding is no coding at all”,
so-called low code/no code (lc/nc) tools have burgeoned. They allow
anyone to write software using drag-and-drop visual interfaces alone (no
code) or with a bit of code creeping in (low code). Under the hood, this
is translated into pre-written or automatically generated code, which
then whirs away.

Such tools are in hot demand. Just 25m people around the world are
fluent in standard programming languages, reckons Evans Data
Corporation, a research firm—one for every 125 people in the global
workforce and 1.4m fewer than needed. That shortfall will rise to 4m by
2025, says idc, a research firm. lc/nc products expand the pool of
coders to “line-of-business” employees who seldom speak c++, Java or
Python. And beyond. Cheryl Feldman went from a junior position in a hair
salon to a technical career at Salesforce, a software firm, thanks to
lc/nc. Samit Saini changed jobs after 13 years as a security guard at
Heathrow to become an “ it solution specialist” at the airport after
making software on Microsoft’s Power Apps.

Overcoming language barriers
idc reckons the low/no coders numbered 2.6m globally in 2021. It expects
their ranks to swell by an average of 40% a year until 2025, three times
as fast as the total developer population. The number of organisations
using Power Apps more than doubled in 2021. It now has 10m monthly
users. basf, a chemicals firm, uses it to let 122,000 workers write
software. A study last year by Aite-Novarica Group, a consultancy, found
that over half of American insurers have deployed or plan to deploy
lc/nc. Unqork, a no-code startup valued at over $2bn and backed by
Goldman Sachs, is convincing other financial firms to take the plunge.
Mr Lamanna envisages a global population of a billion low/no coders.

The dream of codelessness is not new. Tony Wasserman of Carnegie Mellon
University’s branch in Silicon Valley dates it back to the concept of
“automatic programming” in the 1960s. Since then successive waves of
simplification and abstraction have made life easier for programmers by
distancing coding languages further from the machine code understood by
computer hardware. In the early 1990s Microsoft tried to simplify things
further by launching Visual Basic, an early stab at lc/nc. In the next
decade firms like Appian, Caspio, Mendix and Salesforce began offering
products aimed expressly at line-of-business types.

Recently lc/nc’s potential has been unlocked by the cloud, which lets
people connect to data easily and collaborate in real time, says Ryan
Ellis, who leads lc/nc products at Salesforce. Last year Amazon Web
Services (aws), the online giant’s cloud-computing arm, introduced
Amazon SageMaker Canvas, a set of tools that lets people deploy
machine-learning models without writing code. It also offers Honeycode,
a no-code app builder, in beta version.

lc/nc used to be chiefly about making pro devs more efficient. Now it is
also about pulling more humans into creating applications, says Adam
Seligman of aws. In terms of impact, he says, the latest wave “will race
higher up the beach”. For one thing, firms in a hurry to digitise
appreciate that when line-of-business people design software, it speeds
things up. “A field worker making something for other field workers is
hugely valuable as the feedback loop is faster,” says Adam Barr, a
former Microsoft pro dev and author of “The Problem with Software: Why
Smart Engineers Write Bad Code”. As digital natives enter the workforce
they are also demanding automation of repetitive or manual data-entry
tasks, often on pain of walking out.

In addition, lc/nc is fast becoming the secret sauce in modern software
development, notably in machine learning, says Arnal Dayaratna of idc.
The mastery of Python or Java required for this type of
artificial-intelligence (ai) software is daunting even for pro devs.
Bratin Saha, who oversees aws’s machine-learning services, wants
SageMaker Canvas to empower regular business analysts—from marketing or
finance, say—to deploy machine learning. That could increase the number
of ai specialists available to businesses by an order of magnitude, he
predicts.

Some scepticism is warranted. Just because non-programmers are able to
build an application with lc/nc tools does not mean it will be any good,
says Mr Wasserman, just as bug-ridden spreadsheets yield faulty results.
They could also become a headache for corporate it departments if
citizen developers collect customer data that are worthless or, worse,
that violate privacy. Especially with no code, businesses can find that
the functionality they need does not yet exist. No-code platforms make
the first 90% of delivering a useful application easy, and the last 5%
often impossible, says Tim Bray, a pro dev formerly of aws. And many pro
devs remain resistant. Although they turn to lc/nc to simplify some
tasks, plenty of pros see it as the programming cousin of pin-it-on
neckties, in the words of one commentator. Some worry that specialising
in lc/nc makes them look like dilettantes, reports Mr Barr.

lc/nc will not displace “full” coding altogether, as its evangelists
insist. Pro devs will continue writing their firms’ core products and
mission-critical enterprise systems. But they will increasingly be
complemented by legions of enterprising line-of-business workers with a
software-development string to their bow. For employers, this means
greater productivity. For employees, it could be life-changing. In 2019
the Telstra technician became senior business specialist for field
digitisation and has since been promoted again. ■
--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com
G.Deville
2022-02-16 09:13:31 UTC
Permalink
Post by Benoît L.
Certes, mais tu me donnes des idées, des pistes et surtout des leçons.
Tu es d'ailleurs le seul ici.
Demandez-vous pourquoi en relisant votre 2ème phrase ci-dessus. Ça me
fait très plaisir.
Vu votre façon de répondre, ça coupe vite l'envie de vouloir vous donner
un coup de main.
Benoît L.
2022-02-16 14:10:18 UTC
Permalink
Nonobstant quelques doutes, le 16 février 2022 à 10:13, G.Deville se
Post by G.Deville
Vu votre façon de répondre, ça coupe vite l'envie de vouloir vous donner
un coup de main.
Tu n’as pas aimé ma remarque sur le nombre de boîtes dialogues. J’ai mis
du code de côté pour plus tard, s’il n’y a pas de raccourcis clavier :

tell application "Finder"
tell application "System Events"
tell menu item "Afficher le presse-papiers" of ¬
menu "Édition" of menu bar item "Édition" of ¬
menu bar 1 of application process "Finder"
click
end tell
end tell
Post by G.Deville
comment voulez-vous que le script sache que vous
êtes ou non satisfait de la signature s'il ne le vous demande pas ?
Si tu peux la lire dans la boîte de dialogue et que tu as un bouton
« Copier », que faut-il de plus ?

Pour le délimiteur « --  »
J’ai eu l’idée d’une case à cocher au départ, mais G.B. propose une
solution beaucoup plus simple : 2 boutons « Copier ».

Voici la liste des boutons prévus à date : Quitter, Supprimer, Ajouter,
Modifier, Copier sans "-- ", Copier avec "-- ".

J’essayerai, un jour, d’ajouter une case à cocher (le fichier
Préférences existe maintenant et je peux donc y stocker ce genre de
choix de l’utilisateur).
Post by G.Deville
Ces 2 boîtes de dialogue sont indispensables pour répondre à vos désirs.
Bin non, une seule suffit. J’ai trouvé comment grâce à G.B. et
l’extension Dialog Toolkit Plus.

La prochaine version de « l’application » aura ce bout de code dans son
dossier Ressources et tu pourras tester.
--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com
M.V.
2022-02-16 17:58:25 UTC
Permalink
Post by Benoît L.
Post by G.Deville
Ces 2 boîtes de dialogue sont indispensables pour répondre à vos désirs.
Bin non, une seule suffit. J’ai trouvé comment grâce à G.B.
Tu n'as donc pas lu ceci :
« À la réflexion, on peut avoir une seule boîte de dialogue qui vous
propose au choix :
- je souhaite une nouvelle signature
- j'accepte la signature (avec délimiteur)
- j'accepte la signature (sans délimiteur)
mais c'est juste pour gagner *une* boîte de dialogue… et pas quantité de
boîtes comme votre précédente réponse le laisse croire. »
Post by Benoît L.
J’ai trouvé comment grâce à G.B.
G.B. ? Non : c'est Joseph-B donc J-B éventuellement.
J'ai regardé le script de Joseph-B et je retrouve exactement ce que
vous a écrit G.Deville ci-dessus !
--
Michel VAUQUOIS - <http://michelvauquois.fr>
Joseph-B
2022-02-16 09:23:04 UTC
Permalink
Post by Benoît L.
Si tu tapes
set set AppleScript's text item delimiters (return & return)
ça ne marche pas mais
set AppleScript's text item delimiters to (linefeed & linefeed)
oui. Pourquoi ? No idea.
Il y a deux raisons à cela

1) la première est que la source, le fichier .text original des GMP, si
tu l'ouvres dans BBEdit, tu verras sur le bandeau en pied ses
caractéristiques
« Text File ; Unicode (UTF-8) ; Unix (LF) » le dernier étant le type de
coupure de ligne, Line Feed et non pas Return comme pour du MacOS Roman
que l'on traine encore comme un boulet que l'on est passé à OS X.

2) Parce que je sais par expérience que progressivement AppleScript
(intégré aux couches basses du Système) devient plus strict (je devrais
dire plus cohérent) sur le type d'encodage (UTF-8) et donc de coupure de
ligne, mais que Yosemite, par exemple, aurait accepté sans broncher les
deux, Linefeed ou Return, comme absolument équivalent,
ce qui n'est plus le cas depuis 10.12 (encore que avec M. V. on a pu
trouver des "exceptions déroutantes" avec l'interpréteur AppleScript des
commandes Shell, toujours pas corrigées depuis 22 ans …)
Post by Benoît L.
Je vois des "
"
Dans ton script.
C'est encore un nouveau "feature" d'Applescript récent qui a transcrit
lors de la compilation en forme texte (caractère invisible) ce qui
aurait dû rester en symbolique de code "\n".
À l'inverse, si sur mon Capitan je tape des retours à la ligne dans le
code, à la compilation il m'écrit des "\r" ce qui est une aberration
héritée de Mac OS pré X !

Bon, j'aurais écrit <linefeed> en toutes lettres au lieu de "\n" le
problème ne se srait pas posé.

Ce sont des manques de rigueur comme cela depuis aussi longtemps
qu'Applescript existe qui le font mépriser par les "vrais "
programmeurs. Et ça fait plus de 20 ans que je le dis, pas attendu
l'article que tu cites.
<https://www.economist.com/business/2022/01/29/what-if-all-workers-wrote-software-not-just-the-geek-elite>
--
J. B.
M.V.
2022-02-16 10:01:28 UTC
Permalink
Post by Joseph-B
M. V. on a pu
trouver des "exceptions déroutantes" avec l'interpréteur AppleScript des
commandes Shell, toujours pas corrigées depuis 22 ans …)
Tu te souviens sans doute de la routine UnixParagraphs(datas) destinée à
remplacer les return par des linefeed que tu avais créée pour pallier
les problèmes récurrents lors de la récupération d'un texte avec la
commande shell cat par exemple.
--
Michel VAUQUOIS - <http://michelvauquois.fr>
Joseph-B
2022-02-16 14:22:50 UTC
Permalink
Post by M.V.
Tu te souviens sans doute de la routine UnixParagraphs(datas) destinée à
remplacer les return par des linefeed que tu avais créée pour pallier
les problèmes récurrents lors de la récupération d'un texte avec la
commande shell cat par exemple.
En effet, je pensais à cela et il y a encore d'autres gamelles que
traine AppleScript et c'est dommage pour sa crédibilité,
on pourrait aussi y ajouter comment l'idée ambitieuse de Automator est
devenue un cul de sac… à cause des mêmes causes structurelles et
politiques de développement autour de ce genre d'outils pourtant
intégrés au Système.
--
J. B.
Benoît L.
2022-02-16 10:36:49 UTC
Permalink
Post by Joseph-B
Ce sont des manques de rigueur comme cela depuis aussi longtemps
qu'Applescript existe qui le font mépriser par les "vrais "
programmeurs. Et ça fait plus de 20 ans que je le dis, pas attendu
l'article que tu cites.
<https://www.economist.com/business/2022/01/29/what-if-all-workers-wrote-software-not-just-the-geek-elite>
Oui, ça fait bientôt 30 ans et il y avait la version française. :)

Et merci pour tes explications.


P.S. Je suis passé à Monterey pour avoir un Swift à jour par rapport aux
vidéos et documents dispos sur le site.
--
Vie : n. f. Maladie mortelle sexuellement transmissible
benoit chez leraillez.com
Benoît L.
2022-02-15 20:38:52 UTC
Permalink
Post by Joseph-B
Post by Benoît L.
if buttonName is "Quitter" then exit repeat
à 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.
Post by Benoît L.
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
Post by Joseph-B
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…
Post by Joseph-B
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.
Post by Joseph-B
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.
Post by Joseph-B
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
Olivier
2022-02-21 18:34:28 UTC
Permalink
Post by Joseph-B
1) Si l'utilisateur du script n'a pas les Dialog Tool Kit installés, le
script ne marchera pas
On peut le trouver ou ce script "Dialog Toolkit Plus" ? Je n'ai pas
l'impression que c'est dit dans l'enfilade, et Qwant ne me le trouve pas.

Merci de votre aide.

Olivier
M.V.
2022-02-21 19:18:16 UTC
Permalink
On peut le trouver ou ce script "Dialog Toolkit Plus" ? Je n'ai pas
l'impression que c'est dit dans l'enfilade, et Qwant ne me le trouve pas.
Une recherche avec MacCafé ne donne rien ?
Et ici : <news:1pmvjeu.o617torw9fhoN%***@nowhere.invalid> ?
--
Michel VAUQUOIS - <http://michelvauquois.fr>
Olivier
2022-02-22 09:31:57 UTC
Permalink
Post by M.V.
On peut le trouver ou ce script "Dialog Toolkit Plus" ? Je n'ai pas
l'impression que c'est dit dans l'enfilade, et Qwant ne me le trouve pas.
Une recherche avec MacCafé ne donne rien ?
Ben je n'y avait pas pensé :-((
Dans MacCafé je fait "afficher le message" : il me dit "Aucun message
avec cet identifiant trouvé dans la base pour aucun profil". Comme ça
fait un moment que je relève ces groupes, je doute que ce soit parce
qu'il est trop vieux.

J'ai fait la recherche de "Dialog Toolkit" dans MacCafé : je trouve une
dizaine de messages, mais nul par de mention de l'endroit où trouver
cette extension.

Bref, me voila perdu comme le neuneu de service, avec une cinquantaine
de citations sympa qui piaffent d'impatience :-((

Olivier
--
Pour être un membre irréprochable parmi une communauté de moutons, il faut avant
toute chose être soi-même un mouton. Albert Einstein
Joseph-B
2022-02-22 10:19:33 UTC
Permalink
Le Feb 2022 09:31:57 GMT
Post by Olivier
J'ai fait la recherche de "Dialog Toolkit" dans MacCafé : je trouve une
dizaine de messages, mais nul par de mention de l'endroit où trouver
cette extension.
Hum…
MV citait ce message
Post by Olivier
Ici tu vas trouver ton bonheur
<https://latenightsw.com/freeware/>
à l'article
Dialog Toolkit Plus v1.1.2
Bonne journée,
--
Le problème c'est que NEXTSTEP sans le framework objet, c'est comme une
tarte aux pommes sans les pommes.
-+- Ol. in Guide du Macounet Pervers : Y'a pas de la Pomme dedans ?-+-
DV
2022-02-22 10:33:59 UTC
Permalink
Post by Olivier
Dans MacCafé je fait "afficher le message" : il me dit "Aucun message
avec cet identifiant trouvé dans la base pour aucun profil". Comme ça
fait un moment que je relève ces groupes, je doute que ce soit parce
qu'il est trop vieux.
Non non, il date du 5 février. Mais je pense qu'à cette date, le serveur
de news que tu utilises (celui de Free) avait encore de sérieux ratés.
--
Denis
M.V.
2022-02-22 11:37:59 UTC
Permalink
Dans MacCafé je fait "afficher le message" : il me dit "Aucun message
avec cet identifiant trouvé dans la base pour aucun profil".
Mauvais serveur, changer de serveur !
On a dit et redit qu'il fallait avoir au moins deux serveurs quand l'un
des deux est celui de Free qui déraille constamment !
Olivier
2022-02-22 18:44:31 UTC
Permalink
Post by M.V.
Mauvais serveur, changer de serveur !
On a dit et redit qu'il fallait avoir au moins deux serveurs quand l'un
des deux est celui de Free qui déraille constamment !
Ben oui, c'est bien Free :-((
M.V.
2022-02-22 11:41:50 UTC
Permalink
Post by Olivier
Bref, me voila perdu comme le neuneu de service
Tu peux aussi utiliser un archiveur tel que http://al.howardknight.net
qui te trouve le message en question très très vite.

Mais, scoop, la recherche sur le web pour un MID non trouvé dans la
base de MacCafé, sera intégrée dans la future version de MacCafé ! ;-)

Qu'est-ce qu'on dit ? Merci Gilbert !…
Olivier
2022-02-22 18:44:30 UTC
Permalink
Post by M.V.
Qu'est-ce qu'on dit ? Merci Gilbert !…
Ben oui, ça c'est sur !!!
Gilbert OLIVIER
2022-02-24 12:58:26 UTC
Permalink
Post by M.V.
Post by Olivier
Bref, me voila perdu comme le neuneu de service
Tu peux aussi utiliser un archiveur tel que http://al.howardknight.net
qui te trouve le message en question très très vite.
Mais, scoop, la recherche sur le web pour un MID non trouvé dans la
base de MacCafé, sera intégrée dans la future version de MacCafé ! ;-)
Qu'est-ce qu'on dit ? Merci Gilbert !…
Mais c'est qu'ils sont enthousiastes mes amis testeurs ;-)

C'est vrai que la fonction est super pratique et il semblerait que ce
soit à ce niveau d'intégration dans un "nouvelleur" une exclusivité
MacCafé selon eux.

Mais c'est quand qu'elle va sortir cette version ??
--
Gilbert
<https://maccafe-osx.pagesperso-orange.fr>
Benoît L.
2022-02-24 21:11:12 UTC
Permalink
Nonobstant quelques doutes, le 24 février 2022 à 13:58, Gilbert OLIVIER
Post by Gilbert OLIVIER
Post by M.V.
Post by Olivier
Bref, me voila perdu comme le neuneu de service
Tu peux aussi utiliser un archiveur tel que http://al.howardknight.net
qui te trouve le message en question très très vite.
Mais, scoop, la recherche sur le web pour un MID non trouvé dans la
base de MacCafé, sera intégrée dans la future version de MacCafé ! ;-)
Qu'est-ce qu'on dit ? Merci Gilbert !…
Mais c'est qu'ils sont enthousiastes mes amis testeurs ;-)
C'est vrai que la fonction est super pratique et il semblerait que ce
soit à ce niveau d'intégration dans un "nouvelleur" une exclusivité
MacCafé selon eux.
Mais c'est quand qu'elle va sortir cette version ??
Avant la suivante. :)
--
Benoît
La douleur des autres est tout à fait supportable, hors les cris.
Joseph-B
2022-02-15 01:57:46 UTC
Permalink
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.
Benoît L.
2022-02-15 13:58:35 UTC
Permalink
Nonobstant quelques doutes, le 15 février 2022 à 02:57, Joseph-B se
Post by Joseph-B
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).
Post by Joseph-B
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.
Post by Joseph-B
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).
Post by Joseph-B
4) que le code est globalement bien plus simple
Oui, mais on perd quelques trucs au passage. En tout cas merci
Post by Joseph-B
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
Joseph-B
2022-02-15 15:04:26 UTC
Permalink
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 ;-)
Post by Joseph-B
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.
Joseph-B
2022-02-15 15:10:44 UTC
Permalink
Joseph-B <***@nowhere.invalid> 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.
Benoît L.
2022-02-15 19:43:17 UTC
Permalink
Après mûre réflexion, le 15 février 2022 à 16:10, Joseph-B eu l'idée
Post by Joseph-B
#> 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
Benoît L.
2022-02-15 20:38:51 UTC
Permalink
Après mûre réflexion, le 15 février 2022 à 16:10, Joseph-B eu l'idée
Post by Joseph-B
#> 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
Continuer la lecture sur narkive:
Loading...