Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/11/2019, à 20:32

Christophe C

[résolu] bouton sur YAD

J'ai un problème avec les boutons sur yad.

 
list_param=$(ls $HOME/TOTO)	#récupère la liste des fichiers dans le répertoire 'TOTO'
list_param=${list_param//txt?/'txt!'}	#AJOUTE un séparateur '!' après chaque nom de fichier

retour=$(yad --form --center --columns="2" --item-separator='!' --width=700 --image="muon" \
    --field="SUPPRIMER UN fichier EXISTANT":CBE "$list_param" \
    --field="AUTRE CHOIX:fbtn" \
    )

Je crée une liste de fichiers dans $list_param, puis je l'affiche dans une liste déroulante. ca marche
Je choisi un fichier, et je valide, je me retrouve avec une variable $retour qui me donner bien en 1er l'item de la liste déroulante que j'ai choisi.

par contre si je clique sur le bouton (fbtn) : rien. Ma variable $retour reste vide dans son 2e champs. Comment puis-je récupérer que l'action "cliquer sur le bouton" a eu lieu (pour pouvoir la tester) ?

Dernière modification par Christophe C (Le 01/12/2019, à 10:44)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#2 Le 25/11/2019, à 13:56

LukePerp

Re : [résolu] bouton sur YAD

Facile, déplace le dernier guillemet pour le positionner après le X de choix.


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#3 Le 26/11/2019, à 12:51

Christophe C

Re : [résolu] bouton sur YAD

J'avais essayé, mais cela ne marchait pas. Je vais retenter, mais tu est sur ?


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#4 Le 26/11/2019, à 16:55

LukePerp

Re : [résolu] bouton sur YAD

Guillemet mal placé et il manque la commande du bouton Autre choix.
Par exemple, le bouton autre choix ouvrira Firefox :

retour=$(yad --form --center --columns="2" --item-separator='!' --width=700 --image="muon" \
    --field="SUPPRIMER UN fichier EXISTANT":CBE "$list_param" \
    --field="AUTRE CHOIX":fbtn "firefox" \
    )

Dernière modification par LukePerp (Le 26/11/2019, à 16:55)


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#5 Le 26/11/2019, à 16:57

Christophe C

Re : [résolu] bouton sur YAD

Oui, mais ce que je veux faire, c'est récupérer un retour dans un champs, pas lancer une commande.


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#6 Le 26/11/2019, à 17:01

LukePerp

Re : [résolu] bouton sur YAD

Christophe C a écrit :

Oui, mais ce que je veux faire, c'est récupérer un retour dans un champs, pas lancer une commande.

Simplement, on ne peux pas récupérer ce qui est en cours. Ceci ne fonctionne pas :

retour=$(yad --form --center --columns="2" --item-separator='!' --width=700 --image="muon" \
    --field="SUPPRIMER UN fichier EXISTANT":CBE "$list_param" \
    --field="AUTRE CHOIX":fbtn "yad --text=$retour" \
)

Edit : l'affichage de yad...retour donnera le résultat du précédent retour, et non celui en cours.

Dernière modification par LukePerp (Le 26/11/2019, à 17:05)


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#7 Le 27/11/2019, à 08:32

Christophe C

Re : [résolu] bouton sur YAD

--field="AUTRE CHOIX":fbtn "firefox" \

Je n'ai pas encore eu le temps de tester, mais je suppose que si je remplace la commande "firefox" par "TOTO=xx" je récupère une variable TOTO avec xx à l'intérieur ? Ce que je peux tester. Ou à la limite xx > TOTO.txt, ce qui n'est pas très élégant, mais qui reste testable.


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#8 Le 27/11/2019, à 11:11

LukePerp

Re : [résolu] bouton sur YAD

Oui tu pourras récupèrer une valeur ainsi, mais pas une valeur sélectionnée de l'encours. Impossible de récupérer ce qu'affiche yad à ce moment.


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#9 Le 27/11/2019, à 12:06

Christophe C

Re : [résolu] bouton sur YAD

Là j'avoue que je ne comprends pas bien ce que tu veux dire. Ce que je comprends, c'est :
   * si ma commande envoie un texte pré-défini (genre "toto"), ça marche.
   * si ma commande envoie un texte "variable" (genre le contenu de $toto), ça ne marche pas.

C'est ça ?

Dernière modification par Christophe C (Le 27/11/2019, à 12:06)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#10 Le 27/11/2019, à 19:28

Christophe C

Re : [résolu] bouton sur YAD

Bon, je viens de passer un bon moment, mais impossible de passer un paramètre à partir d'un bouton. En tout cas je n'ai pas compris comment.

je suis preneur ...


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#11 Le 28/11/2019, à 00:23

metalux

Re : [résolu] bouton sur YAD

Bonjour Christophe C,
Je n'ai pas vraiment compris ce que tu souhaites faire, peux-tu me mettre un exemple concret avec un dossier TOTO et son contenu ainsi que le résultat attendu que je puisse tester de mon côté?
Est-ce la sélection de la liste déroulante que tu souhaites passer en paramètre au bouton ou est-ce une autre variable? S'il s'agit de la sélection de la liste déroulante, ça ne peux pas se faire tant que tu n'as pas validé sinon comment voudrais-tu récupérer la valeur?

Hors ligne

#12 Le 28/11/2019, à 09:33

Christophe C

Re : [résolu] bouton sur YAD

C'est exactement ce que j'indique dans le post#1 : si je clic sur le bouton "autre choix", je veux récupérer l'info quelque part (sous une forme quelconque), pas déclencher une commande. La liste déroulante n'est là que pour indiquer que je veux faire cela dans un formulaire --form.

J'ai l'impression qu'hier soir j'ai plus ou moins réussi à trouver, mais c'est n'importe quoi. Si je met une ligne

    --field="AUTRE CHOIX":fbtn "echo X|" \

je récupère une variable $retour avec dedans X| fichier sélectionné|. J'ai un caractère inconnu qui ressemble à un espace après l'insertion X| mais n'en est pas un, et que je n'arrive pas à enlever (ou très difficilement, par des enchaînements de cut). Un remplacement de chaîne ne marche pas.
Et si je n'ai sélectionné aucun fichier, j'aurais  X| |.

Maintenant, si je clic 3 fois sur le bouton "autre choix" avant de valider, j'aurais X| X| X| fichier sélectionné| (avec à chaque fois mon caractère spécial).

Je suppose (pas testé) que je peu sabrer les doublons via un sort -u mais entre cela et le caractère bizarre-qui-ressemble-à-un-espace-et-qui-resiste-au-remplacement, c'est spécialement chiant.

L'idéal serait un

    --field="AUTRE CHOIX":fbtn "echo X > toto.tmp" \

De multiple clics s'écraseraient les un les autres. Sauf que cette commande ne marche pas.

En bref, comment puis-je récupérer l'info du clic-bouton de façon simple ? Je pourrais lancer un script bash (ça marche) qui écrit l'info dans un fichier temporaire, mais c'est pas élégant du tout smile

Dernière modification par Christophe C (Le 28/11/2019, à 09:38)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#13 Le 28/11/2019, à 11:37

LukePerp

Re : [résolu] bouton sur YAD

Ok ! Si tu veux réaliser une action à partir du choix sélectionné dans la liste déroulante, alors tu t'y prends mal. Il faut valider le choix avec le bouton OK puis traiter le choix sélectionné qui sera stocké dans la variable retour. Oublies ton bouton autre choix et utilise le bouton Valider.


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#14 Le 28/11/2019, à 12:29

Christophe C

Re : [résolu] bouton sur YAD

Comment cela, oublie le bouton "autre choix" ? J'en ai besoin smile

J'ai bien 2 options : une avec un choix déroulant, et une qui n'a rien à voir, et c'est "autre choix". Ca doit me renvoyer sur une autre fenêtre.

Dernière modification par Christophe C (Le 28/11/2019, à 12:30)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#15 Le 28/11/2019, à 12:44

LukePerp

Re : [résolu] bouton sur YAD

Un bouton exécute l'action, les commandes, qui lui sont associé. Mais dans ton exemple, si tu veux utiliser la sélection choisie, tu dois le faire avec le bouton Valider. Après, tu peux définir une valeur avec ton bouton autre choix puis Valider et cela pointera ton autre fenêtre qui la valeur de ta variable de ton bouton autre choix a été défini.


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#16 Le 28/11/2019, à 13:33

metalux

Re : [résolu] bouton sur YAD

Et comme ceci?

#!/bin/sh
list_param=$(ls -1 $HOME/TOTO| tr '\n' '!')	#récupère la liste des fichiers dans le répertoire 'TOTO' en remplaçant le retour à la ligne par un !
list_param=${list_param%?} #supprime le dernier séparateur ! en fin de ligne
retour=$(yad --form --center --columns="2" --item-separator='!'   --width=700 --image="muon" \
    --field="SUPPRIMER UN fichier EXISTANT":CBE "$list_param" \
    --field="AUTRE CHOIX":fbtn "sh -c 'echo button press > toto.tmp'" \
    )

Edit: Tu peux supprimer la sortie nulle du "clic bouton" avec sed

retour=$(yad --form --center --columns="2"  --item-separator='!'   --width=700 --image="muon" \
    --field="SUPPRIMER UN fichier EXISTANT":CBE "$list_param" \
    --field="AUTRE CHOIX":fbtn "sh -c 'echo button press > toto.tmp'" \
    --field="essai":CBE \
     | sed 's/||/|/')

Dernière modification par metalux (Le 28/11/2019, à 15:19)

Hors ligne

#17 Le 28/11/2019, à 15:24

Arbiel

Re : [résolu] bouton sur YAD

Après avoir enregistré

list_param="a!b!c"
retour=$(yad --form --center --columns="2" --item-separator='!'   --width=700 --image="muon" \
    --field="Sélection dans la liste déroulante":CBE "$list_param" \
    --button=OK --button=Annuler:1 --button="AUTRE CHOIX":2)
echo "${?}"
echo ${retour}

dans /tmp/yad.sh voila ce que j'obtiens

remi@remi-Vostro-3550:~$ source /tmp/yad.sh
2
c|
remi@remi-Vostro-3550:~$ 

après avoir sélectionné «c» et cliqué sur «AUTRE CHOIX»


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#18 Le 28/11/2019, à 16:47

erresse

Re : [résolu] bouton sur YAD

Bonjour,
N'aurait-ce pas été plus simple d'ajouter une ligne "Autre choix" dans le combo (CBE) et de tester simplement cette valeur à la sortie, plutôt qu'un bouton spécial ?
À moins que le retour doive obligatoirement contenir un choix de la liste + la notion de "Autre choix" (logique qui m'échappe un peu, là...), auquel cas, la proposition d'Arbiel semble remplir les conditions de la demande, non ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#19 Le 28/11/2019, à 20:04

LukePerp

Re : [résolu] bouton sur YAD

Si le bouton autre choix doit ouvrir une fenetre avec le choix sélectionné, alors il faut utiliser la solution de Arbiel. Par exemple, pour compléter le code avec une deuxième fenetre texte :

list_param="a!b!c"
retour=$(yad --form --center --columns="2" --item-separator='!'   --width=700 --image="muon" \
    --field="Sélection dans la liste déroulante":CBE "$list_param" \
    --button=OK --button=Annuler:1 --button="AUTRE CHOIX":2)
if [ $? = 2 ]; then
    autrefenetre=$(yad --form --center --text="Choix sélectionné : $retour" --width=100)
fi
echo ${retour}

Au passage, j'en profite pour partager que je trouve YAD puissant et pratique. J'ai modifié ma vingtaines de vieux scripts perso pour leur ajouter une interface avec yad.

Dernière modification par LukePerp (Le 28/11/2019, à 20:08)


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#20 Le 29/11/2019, à 10:32

Christophe C

Re : [résolu] bouton sur YAD

@erresse : non, j'ai besoin de ce bouton.

@arbiel : je ne comprends pas. C'est quoi /tmp/yad.sh ? J'ai l'impression qu'il manque une étape ou une explication. Et comment gérer les clics multiples sur un bouton ?

@metalux : si     --field="AUTRE CHOIX":fbtn "sh -c 'echo button press > toto.tmp'" \ fonctionne (mon "echo xx > toto.tmp" ne marchant pas), cela devrait régler mon problème. Effectivement, les scripts semblent marcher dans un bouton, les lancements de programmes aussi, mais pas les commandes bash directes. J'aurais donc du penser à encapsuler ma commande dans un script sh -c. Merci du truc. Je teste ce soir !

En tout cas merci à tous, je pense que je commence à comprendre le fonctionnement des boutons (pas clair du tout dans la doc, qu'elle soit EN ou FR).

Dernière modification par Christophe C (Le 29/11/2019, à 10:33)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#21 Le 29/11/2019, à 19:34

Christophe C

Re : [résolu] bouton sur YAD

@metalux : ça marche, et ça me va bien. merci !!


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#22 Le 29/11/2019, à 21:11

Arbiel

Re : [résolu] bouton sur YAD

Bonsoir

Puisque la solution proposée par metalux fonctionne, c'est parfait, et il n'y a rien à ajouter.

Je viens uniquement répondre à tes questions

Christophe C a écrit :

C'est quoi /tmp/yad.sh

C'est tout simplement le fichier dans lequel j'ai enregistré les quelques lignes

list_param="a!b!c"
retour=$(yad --form --center --columns="2" --item-separator='!'   --width=700 --image="muon" \
    --field="Sélection dans la liste déroulante":CBE "$list_param" \
    --button=OK --button=Annuler:1 --button="AUTRE CHOIX":2)
echo "${?}"
echo ${retour}

ce que je dis d'ailleurs, me semble-t-il, assez clairement par

Arbiel a écrit :

Après avoir enregistré

Christophe C a écrit :

Et comment gérer les clics multiples sur un bouton ?

Effectivement, le fait de passer par

--button="AUTRE CHOIX":2

ne permet pas de cliquer plusieurs fois de suite sur le bouton puisque cette action ferme le dialogue. Je n'avais pas compris que tu voulais éventuellement effectuer plusieurs fois la commande attachée au bouton.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#23 Le 29/11/2019, à 21:26

LukePerp

Re : [résolu] bouton sur YAD


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#24 Le 30/11/2019, à 16:17

Christophe C

Re : [résolu] bouton sur YAD

Oui, je connaissais smile. Mais cela ne répond pas à tout, loin de là, et en particulier pas ou peu à la récupération des infos générées par un bouton. par contre on a tout sur l'habillage smile


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#25 Le 30/11/2019, à 18:54

metalux

Re : [résolu] bouton sur YAD

Tu pourras également trouver pas mal de ressources sur les forums de puppylinux en étudiant les scripts proposés:
http://murga-linux.com/puppy/viewtopic.php?t=97458

Je m'étais pas mal documenté il y a quelques années et le man est indispensable pour les fonctions avancés de Yad. Malheureusement on se sent parfois bien seul face à celui-ci, surtout lorsqu'on est pas spécialement anglophone. Les ressources sur le net sont parfois trop limitées et il n'y a pas le choix, il faut parfois du temps pour réussir à bien comprendre celui-ci.
N'hésite pas à me solliciter si tu as besoin. J'ai quasiment arrêté de scripter mais j'ai encore quelques restes concernant yad wink ....
Yad est assez puissant et gère les onglets, (cf voyager colors que je t'avais invité à consulter sur une autre discussion pour lequel je pourrai t'éclairer si tu ne comprends pas quelque chose), les notifications (cf trans_tray):
http://murga-linux.com/puppy/viewtopic. … 14#1037014
Pour trans_tray, tu auras une erreur pour décompresser, c'est normal ce n'est pas un gz, il suffit de supprimer l'extension gz, c'est un script bash.

Pas sûr que ça te serve pour ce que tu souhaites faire mais ça te donnera une idée de la puissance de l'outil et tu auras le lien sous la main si un jour tu en as besoin.
N'oublie pas le [Résolu] dans le titre S.T.P.

Hors ligne