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 10/05/2014, à 12:09

Christophe C

[résolu] traitement d'un bug zenity

Bonjour,

j'ai un problème sur un bug pénible. les boites -list de zenity renvoient le nom de la colonne choisit si on clic dessus puis qu'on appuie sur le bouton "valider". Mais si on double clic, elles renvoient 2 fois le nom de la colonne.

Par exemple, ci dessous si je clic sur COL1 + valider, PARAM est égal à "COL1".
Si je double clic, PARAM est égal à "COL1| COL1".

#!/bin/bash
PARAM=$(zenity --list \
  --title="TEST" \
  --column="OPTION" \
    "COL1" \
    "COL2" \
    "COL3")

PARAM=$(echo $PARAM | cut -d'|' -f1)

Pas de pb pour récupérer la bonne valeur : je fais un cut et je ne récupère que la première partie. Jusque là tout va bien.

MAIS, le bouton "annuler" de la boite zenity ne marche alors plus (du moins si je suis dans une boucle sans fin, ce qui est mon cas). En effet, ce bouton renvoie une valeur par défaut $?=1. Et c'est ce "1" que je test pour sortir de la boucle.

Sauf que j'ai mis un retraitement de la variable PARAM, et que la variable $? devient =0 (a fonction a fonctionnée). Quand je clic sur "Annuler" dans la boucle, il repasse la boucle, efface la réponse du bouton, et je suis baisé.

Quelqu'un connait il un autre moyen d'intercepter la réponse du bouton annuler ?
(par convention dans zenity, ok-label (bouton "valider") à un retour $?=0, et cancel-label ("annuler") $?=1)

Dernière modification par Christophe C (Le 15/05/2014, à 12:54)


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 10/05/2014, à 12:16

Compte anonymisé

Re : [résolu] traitement d'un bug zenity

Bonjour,

Je viens de faire le test sous 14.04 et annuler me renvoie $?=1...

#3 Le 10/05/2014, à 14:28

Christophe C

Re : [résolu] traitement d'un bug zenity

Bien sur. Sauf que comme indiqué, ma boucle sans fin repasse sur param, et son retraitement par cut écrase la variable $?. Il faudrait donc que je puisse récupérer le clic sur le bouton annuler d'une autre façon.


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 10/05/2014, à 15:19

Compte anonymisé

Re : [résolu] traitement d'un bug zenity

Christophe C a écrit :

Bien sur. Sauf que comme indiqué...

Désolé de m'intéresser à ton problème et de ne rien y comprendre.

#!/bin/bash
PARAM=$(zenity --list \
  --title="TEST" \
  --column="OPTION" \
    "COL1" \
    "COL2" \
    "COL3")
RET="$?"
PARAM=$(echo $PARAM | cut -d'|' -f1)

if [ "$RET" = "1" ] ; then
  exit 1
fi

Bon continuation.........

#5 Le 10/05/2014, à 15:43

Watael

Re : [résolu] traitement d'un bug zenity

salut,

`cut' n'est pas utile

PARAM="${PARAM%|*}"

et hop ! une commande externe en moins = quelques millisecondes en moins * n boucles


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 10/05/2014, à 18:22

Christophe C

Re : [résolu] traitement d'un bug zenity

Je ne comprends pas bien la syntaxe ?

Sinon la réponse d'alx devrait marcher. J'aurais du y penser, c'est évident. Merci !

Dernière modification par Christophe C (Le 10/05/2014, à 18:24)


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