#951 Le 04/03/2011, à 15:03
- Wild_Child_87
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Wild_Child_87 a écrit :Oui c'est bien une question d'esthétisme sur le coup, avec le curseur ça marche, mais c'est pas super joli ni pratique dans mon cas vu que j'insère du texte en même temps dans ma progress. Si un jour tu t'ennuies, ou si tu sais plus quoi faire pour améliorer glade2script
Ce dépends, tu veux koi comme sortie ?
Si tu veux juste x et y, ca devrait pas poser de soucis, ca sera pas compliqué, mais si tu veux que je calcule la pourcentage, pffff, enfin, rien d'impossible.
Car tu peux déjà le faire, faudra jouer avec la commande maléfique ITER@@
Il faut deja mettre la progress dans un eventbox, puis connecter son signal button_press sur on_clicked.
Dans la fonction eventbox de ton scriptGET@_progress.get_cursor()
Et un ITER derriere, mais si tu veux juste l'x,y, je peux faire un callback rapidement, pas de soucis, aller, meme si tu le veux en pourcentage, ca va ajouter du code pour qqle chose de pas vraiment utile, mais bon ...
X,y feront l'affaire, je me débrouillerais après Merci, il ne me manquait plus que ça
Hors ligne
#952 Le 04/03/2011, à 15:06
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
apres essais, je n'y comprends rien : echo 'EXIT@@' a le meme effet que echo 'EXIT@' : le script continue derriere !
Quelle commande permet de quitter complement le script, comme un "exit" dans un script bash normal ?
Lorsque tu fais EXIT@@, c'est glade2script et l'interface qui se ferme (plus de connection au fifo et gtk.main_quit), mais ton script continu lui, il faut que tu mettes un exit pour le quitter. Je peux pas arrêter le script appelant, en cas d'utilisation de plusieurs glade dans le meme script, ca plaira pas
Faut aussi penser, parfois, à lancer la fonction en arrière plan, pour laisser la communication ouverte entre glade2script et ton script.
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#953 Le 04/03/2011, à 15:15
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Aller, le callabck, a jouter avec les autres callbacks (respecter indentation):
#
def get_pointer(self, widget, event=None,arg=None):
name = widget.get_name()
x, y = widget.get_pointer()
self.send_data( '%s pointer@%s,%s' % (name, x, y) )
Il faut donc mettre une eventbox, signal press_event, callback get_pointer
Si tu as une eventbox a plusieurs widgets, tu renseignes en user-data le widget que tu veux. Dans ce cas, c'est la fonction du widget qui sera appelé et non celle de l'eventbox.
EDIT: C'est au moins une fonction générique, plutot que d'envoyer le pourcentage, ce callback servira pour d'autre chose comme ça !
Maintenant, si l'user redimensionne l'interface, faudra que tu récup la taille de la window et faire ton calcul ensuite, à moins que tu mette une interface fixe ...
Pour récup la taille, tu peux par exemple sur le signal 'size-allocate' de la window/widget appeler une fonction ou tu y mettra une commande GET@window.get_size(), comme ça la variable window_get_size sera déjà charger de la bonne taille.
Dernière modification par AnsuzPeorth (Le 04/03/2011, à 15:28)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#954 Le 04/03/2011, à 15:20
- YannUbuntu
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
ok, je comprends un peu mieux mais meme avec un exit dans mon script appelé et un exit dans mon script appelant, le processus du script appelant ne termine pas (comme je le lance via le terminal, je vois qu'il reste actif, il ne revient pas a xx@xx:~$ ).
mon script appelant :
./glade2script.py -d --glade ./uninstaller.glade --tree "@@treeview1@@Nom de l'OS"
exit
(question annexe: je peux supprimer --tree "@@treeview1@@Nom de l'OS" ?)
mon script appelé (simplifie):
PID=$$ ; FIFO=/tmp/FIFO${PID} ;mkfifo ${FIFO} #initialization of glade2script
######################################################################################################
arret_total_du_script_appelant()
{
echo 'EXIT@@'
exit
}
debut_du_script
if [ condition]; then arret_total_du_script_appelant ; fi
suite_du_script
###
Loop de l'interface Glade2script
Dernière modification par YannUbuntu (Le 04/03/2011, à 15:23)
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#955 Le 04/03/2011, à 15:23
- Wild_Child_87
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Aller, le callabck, a jouter avec les autres callbacks (respecter indentation):
# def get_pointer(self, widget, event=None,arg=None): name = widget.get_name() x, y = widget.get_pointer() self.send_data( '%s pointer@%s,%s' % (name, x, y) )
Il faut donc mettre une eventbox, signal press_event, callback get_pointer
Si tu as une eventbox a plusieurs widgets, tu renseignes en user-data le widget que tu veux. Dans ce cas, c'est la fonction du widget qui sera appelé et non celle de l'eventbox.EDIT: C'est au moins une fonction générique, plutot que d'envoyer le pourcentage, ce callback servira pour d'autre chose comme ça !
Maintenant, si l'user redimensionne l'interface, faudra que tu récup la taille de la window et faire ton calcul ensuite, à moins que tu mette une interface fixe ...
Nikel ça fonctionne
Merci.
Hors ligne
#956 Le 04/03/2011, à 15:29
- Wild_Child_87
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
ok, je comprends un peu mieux mais meme avec un exit dans mon script appelé et un exit dans mon script appelant, le processus du script appelant ne termine pas (comme je le lance via le terminal, je vois qu'il reste actif, il ne revient pas a xx@xx:~$ ).
mon script appelant :
./glade2script.py -d --glade ./uninstaller.glade --tree "@@treeview1@@Nom de l'OS" exit
(question annexe: je peux supprimer --tree "@@treeview1@@Nom de l'OS" ?)
mon script appelé (simplifie):
PID=$$ ; FIFO=/tmp/FIFO${PID} ;mkfifo ${FIFO} #initialization of glade2script ###################################################################################################### arret_total_du_script_appelant() { echo 'EXIT@@' exit } debut_du_script f [ condition]; then arret_total_du_script_appelant ; fi suite_du_script ### Loop de l'interface Glade2script
Ça serai pas du à ta structure if then fi qui ne peut pas se terminer vu que tu mets le exit juste après le echo 'EXIT@@' ?
EDIT: En testant rapidement, ça semble être à cause de ça, essaye ça:
arret_total_du_script_appelant()
{
echo 'EXIT@@'
}
debut_du_script
f [ condition]; then arret_total_du_script_appelant ; fi
suite_du_script
###
Loop de l'interface Glade2script
exit
(question annexe: je peux supprimer --tree "@@treeview1@@Nom de l'OS" ?)
Non, sauf si tu n'utilises plus de treeview1
Dernière modification par Wild_Child_87 (Le 04/03/2011, à 15:38)
Hors ligne
#957 Le 04/03/2011, à 15:41
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Nikel ça fonctionne big_smile
Merci.
J'ai éditer mon message, je sais pas si tu as vu ?
@YannUbuntu
Ca devrait fonctionner pourtant, vu que tu appelles directement ta fonction avec un exit dedans ???
Sinon essaie en lancant tes commandes en arrière plan, car sinon tu n'arrivera jamais à Loop de l'interface Glade2script, donc pas de communication possible.
Donc un truc du genre:
PID=$$ ; FIFO=/tmp/FIFO${PID} ;mkfifo ${FIFO} #initialization of glade2script
######################################################################################################
arret_total_du_script_appelant()
{
echo 'EXIT@@'
exit
}
{
debut_du_script
if [ condition]; then arret_total_du_script_appelant ; fi
suite_du_script
} &
###
Loop de l'interface Glade2scriptdebut_du_script
Sinon, passe l'archive qu'on regarde ... c'est pas facile comme ça de voir où ca merde.
Dernière modification par AnsuzPeorth (Le 04/03/2011, à 15:48)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#958 Le 04/03/2011, à 15:48
- Wild_Child_87
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Oui j'ai vu, ça pose pas de problème, je vois comment je vais faire
Bizarrement, avec un exit dans ma fonction pour quitter, le script ne quitte pas, il reste bloquer sur echo 'EXIT@@'
Hors ligne
#959 Le 04/03/2011, à 15:51
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
je viens d'essayer:
sortie()
{
echo 'EXIT@@'
}
if true; then sortie; fi
Et ca fonctionne, je pensais que le fait que la boucle de fin ne soit pas lancée pourrait bloquer, mais non.
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#960 Le 04/03/2011, à 15:53
- Wild_Child_87
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
[[ test == test ]] && quitter
function quitter()
{
echo "EXIT@@"
exit
}
Fonctionne pas, ça bloque sur echo 'EXIT@@'
[[ test == test ]] && quitter
function quitter()
{
echo "EXIT@@"
}
exit # placé à la fin du script
Ça fonctionne
Dernière modification par Wild_Child_87 (Le 04/03/2011, à 15:55)
Hors ligne
#961 Le 04/03/2011, à 15:59
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Bizarrement, avec un exit dans ma fonction pour quitter, le script ne quitte pas, il reste bloquer sur echo 'EXIT@@'
Parce que la boucle de fin n'est pas lancé, sinon il faut:
sortie()
{
echo 'EXIT@@'
exit
}
if true; then sortie; fi &
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#962 Le 04/03/2011, à 16:01
- Wild_Child_87
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Oui, c'est ce que je viens de remarquer avec le retour console, il devrait y arriver avec tous ça
Hors ligne
#963 Le 04/03/2011, à 16:04
- YannUbuntu
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
je vais tenter une autre technique : mettre la boucle glade2script de fin dans une fonction:
PID=$$ ; FIFO=/tmp/FIFO${PID} ;mkfifo ${FIFO} #initialization of glade2script
######################################################################################################
loop()
{
la boucle de fin de glade2script
exit
}
sortie_apres_loop()
{
echo 'EXIT@@'
}
sortie_avant_loop()
{
loop; sortie_apres_loop
}
debut_du_script
if [ condition]; then sortie_avant_loop ; fi
suite_du_script
loop
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#964 Le 04/03/2011, à 16:44
- Wild_Child_87
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Aller, le callabck, a jouter avec les autres callbacks (respecter indentation):
# def get_pointer(self, widget, event=None,arg=None): name = widget.get_name() x, y = widget.get_pointer() self.send_data( '%s pointer@%s,%s' % (name, x, y) )
Il faut donc mettre une eventbox, signal press_event, callback get_pointer
Si tu as une eventbox a plusieurs widgets, tu renseignes en user-data le widget que tu veux. Dans ce cas, c'est la fonction du widget qui sera appelé et non celle de l'eventbox.EDIT: C'est au moins une fonction générique, plutot que d'envoyer le pourcentage, ce callback servira pour d'autre chose comme ça !
Maintenant, si l'user redimensionne l'interface, faudra que tu récup la taille de la window et faire ton calcul ensuite, à moins que tu mette une interface fixe ...
Pour récup la taille, tu peux par exemple sur le signal 'size-allocate' de la window/widget appeler une fonction ou tu y mettra une commande GET@window.get_size(), comme ça la variable window_get_size sera déjà charger de la bonne taille.
J'ai finalement un problème, je n'arrive pas à récupérer la taille de ma progressbar (en cas de redimensionnement de la window) pour faire mon calcul, j'ai essayer GET@_even_progression.get_size() (evenbox), ou GET@_progression.get_size() (progress bar) mais marche pas
EDIT: C'est bon avec GET@_even_progression.get_allocation()
Dernière modification par Wild_Child_87 (Le 04/03/2011, à 17:35)
Hors ligne
#965 Le 04/03/2011, à 17:52
- YannUbuntu
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
ma technique ci-dessus ne fonctionne pas non plus...
Dans vos exemples, vous ne verifiez que le fait que le processus s'arrete ou pas. Vous oubliez un autre parametre: suite_du_script (qui se situe apres le if;sortie;fi) ne doit pas etre lancé.
exemple : ceci ne fonctionne pas
sortie()
{
echo 'EXIT@@'
}
if true; then sortie; fi
suite_du_script
loop
exit
ceci non plus:
sortie()
{
echo 'EXIT@@'
}
{if true; then sortie; fi
suite_du_script} &
loop
exit
je precise au cas ou : ceci ne me convient pas:
sortie()
{
echo 'EXIT@@'
}
if true; then sortie; else suite_du_script; fi
loop
exit
car suite_du_script contient une multitude de conditions imbriquees qui appellent sortie. (si vous voulez jeter un oeil au code, il s'agit de /usr/share/clean/uninstaller.sh dans l'archive que vous trouverez ici : http://forum.ubuntu-fr.org/viewtopic.ph … 0#p4023140 )
Dernière modification par YannUbuntu (Le 04/03/2011, à 17:57)
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#966 Le 04/03/2011, à 19:15
- Hizoka
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Bon, il suffit que je dorme pour que ça poste ici
=> AnsuzPeorth
Ben si tu lancais ta commande avec création de fichier à la suite, et tu boucle tant que ce fichier n'existe pas. Genre:
=> c'est ce que je disais dans mon exemple
J'ai fait une recherche, et ca vient du menu, mais c'est bizarre, ca a rapport avec les gtk.ActionGroup !!! J'ai regardé dans glade, et je vois aucune option de ce genre ! Peut parce que tu utilises des icones et textes de bases avec rappel (genre _about, qui devrait avoir comme raccourci clavier a), enfin, un truc du genre.
=> merci, en effet une erreur s'était glisser dans un raccourci... y aait une lettre...
Ben tu fais un TEXT@@CLEAR puis un TEXT@@LOAD
=> ouais mais ca m'oblige à passer par des fichiers externe or le texte existe deja dans le glade...
=> YannUbuntu
autre point : comment faire pour qu'une zone de texte fasse des retours a la ligne automatiques en fonction de la largeur de la fenetre ?
=> http://forum.ubuntu-fr.org/viewtopic.ph … 7#p4022757
Pour mon script, perso je fais ça :
function menuitem1 { echo 'EXIT@@'; }
ou gtk_widget_destroy dans les callback du bouton quitter (en fonction de ce que j'ai besoin)
et j'ai un exit tout à la fin du script apres la boucle de glade2script.
Dans mon go_*
PIDS=$(pstree -p $$) PIDS=${PIDS//[!0-9]/$'\n'} PIDS=$(sed '/^$/d' <<< "${PIDS}") PIDS=${PIDS#*$'\n'} PIDS=$(sort -nr <<< "${PIDS}") PIDS=${PIDS//$'\n'/ }
for pid in ${pids}; do [[ $(ps h ${pid}) ]] && kill ${pid}; done
apres le lancement du glade, ca kill tous les processus lancés par mon go.
je look ton script
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#967 Le 04/03/2011, à 19:47
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
@YannUbuntu
Les exemples que j'ai donné fonctionne, c'est le principe qui est démontré.
J'ai survolé ton script, mais bien trop touffu pour en sortir qqle chose ...
Sinon, je pense que c'est un problème dans la conception de l'ensemble. Je vois que tu lance plusieurs fois la boucle de fin ! Ca n'est pas prévu comme ça, mais bon, ca pourrait fonctionner qd même. Et tout ces zenity !!! Tu vas les virer ou ca va rester ?
Je vais essayer d'expliquer comment ca doit tourner.
La boucle de fin doit être lancé immédiatement et le script reste bloqué dessus, mais il faut d'abord que toutes les fonctions soient chargées dans l'envireonnement.
La boucle de fin, c'est là qu'on va avoir le retour du glade, on est en attente d'un signal pour lancer une fonction. Avant de lancer la boucle on peut modifier l'interface, charger ses variables ou faire qqles bricoles, mais tant qu'on est pas en attente sur la boucle, on ne recoit rien, même pas la commande qui dit à la boucle de quitter (elle break et sort du script normalement , FIN).
Il faut voir l'interface comme centre du programme, et pas comme popup.
Tu lance ton interface, bien sur avant tu as récupéré les données sur le pc qui t'intéresse, tout ca se passe entre les fonctions et la boucle. Si ce traitement est long, ou que tu veux forcer à quitter pendant ce traitement (bizarre !), il faudra le lancer en arrière plan, pour qu'on aille se connecter sur la boucle.
Ensuite, l'user clic et là tu appelles une fonction, qui fait une tache précise.
un algo rapide, genre je dois demonter une partition choisi par l'user.
#chargement fonctions qui seront appellées par le glade
fonction démontage
fonction quitter
récupère partitions et charge dans le treeview
boucle de fin
Le script est bloqué sur la boucle, fonctions et variables de glade chargées
Donc là, l'user à une interface avec un treeview qui affiche ses partitions. Il choisi une partition et clic, ca lance le démontage. Si problème de démontage, dans la fonction tu gères l'erreur et tu fais remonter à l'user. Là il décide de quitter ou de réessayer.
Si pendant cette période de démontage tu dois faire apparaitre de nouvelles fenêtre, erreur ou autre, il suffira de les appeler => SET@window5.show(), et hide() quand tu en as plus besoin.
Toutes ces fenêtres sont dans le même glade, elles sont réglées sur invisible, sauf la fenêtre principale qui est visible par défaut.
Maintenant, tu peux faire comme zenity, lancer ton script qui lance des fenêtres, à ce moment là:
fonction maitre
fonction1
fonction2
#maitre en arriere plan
maitre &
boucle
Dans tes fonctions sont les appel aux glade (show/hide tes fenêtres), et maitre dirige le tout. Mais on est déjà en attente sur la boucle.
J'espère avoir été clair...:)
Dernière modification par AnsuzPeorth (Le 04/03/2011, à 20:35)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#968 Le 04/03/2011, à 19:56
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
=> ouais mais ca m'oblige à passer par des fichiers externe or le texte existe deja dans le glade...
Ben fou le dans une variable, et envoie le dans le textview à souhait. Qu'il soit dans le glade ou dans ton script, c'est kif kif niveau poids !
J'ai finalement un problème, je n'arrive pas à récupérer la taille de ma progressbar (en cas de redimensionnement de la window) pour faire mon calcul, j'ai essayer GET@_even_progression.get_size() (evenbox), ou GET@_progression.get_size() (progress bar) mais marche pas
EDIT: C'est bon avec GET@_even_progression.get_allocation()
Cette commande etait pour la window, mais j'avais pas pris en compte que la progress pouvait partager son espace horizontal, si redimensionnement partagé, la largeur de la window ne ferait pas. J'avais donc pas regardé plus loin !
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#969 Le 04/03/2011, à 20:27
- Wild_Child_87
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Dans tous les cas ça marche, i'm happy, merci
Hors ligne
#970 Le 05/03/2011, à 04:39
- YannUbuntu
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
@AnsuzPeorth : merci pour tes explications.
"Je vois que tu lance plusieurs fois la boucle de fin" : non non, j'ai plusieurs chemins qui menent a la boucle, mais elle n'est jamais lancee plusieurs fois.
"Et tout ces zenity !!! Tu vas les virer ou ca va rester ?" : quel avantage j'aurais de remplacer par plusieurs lignes (show, set_title, set_label ..), ce que je peux faire en 1ligne avec zenity ?
"La boucle de fin doit être lancé immédiatement" : justement, je viens de m'apercevoir que mon interface glade fonctionne même sans etre passé par la boucle ! (jette un oeil au pulsate du debut de script : il fonctionne bien avant d'etre entré dans la boucle !)
"Ensuite, l'user clic et là tu appelles une fonction, qui fait une tache précise." : mon app ne fonctionne pas toujours comme ca. Selon la config du PC, il y a des cas ou l'utilisateur ne fait aucun choix.
De plus je lance l'interface Glade dans tous les cas avant meme que l'utilisateur puisse cliquer : par exemple le pulsate du debut qui doit apparaitre dans tous les cas.
Donc je veux bien lancer la boucle des le debut, mais apres je ne sais pas quel signal lui envoyer pour lancer mon pulsate ???
Actuellement j'ai en gros ceci :
fonction quitter
{
echo 'EXIT@@'
}
beginning_of_pulsate()
{
echo 'SET@window1.show()'; while true; do echo 'SET@_progressbar1.pulse()'; sleep 0.15; done &
pid_pulse=$!
}
end_of_pulsate()
{
kill ${pid_pulse};
#echo 'SET@_progressbar1.set_fraction(0)';
echo 'SET@window1.hide()'; ## End of pulsate bar
}
#chargement fonctions qui seront appellées par le glade
beginning_of_pulsate (qui_marche bizarrement meme_avant_la_boucle) et recuperation de donnees en parallele
end_of_pulsate
if [cas x]; then quitter;fi ### Meme si on rentre dans cette fonction, bizarrement le script continue apres execution de la fonction quitter
continue de récupèrer des donnees
if [cas y]; then quitter;fi ### Meme si on rentre dans cette fonction, bizarrement le script continue apres execution de la fonction quitter
fait apparaitre l'interface glade (dans laquelle l'user peut envoyer des signaux a la boucle)
boucle de fin
exit
Si tu arrives a me trouver un signal adequat, je pourrais tenter ceci qui correspond plus je pense a ce que tu me recommandes:
fonction quitter
{
echo 'EXIT@@'
}
#chargement fonctions qui seront appellées par le glade
fonction avant_click_user ### appellé via un signal apres etre entré dans la boucle
{
beginning_of_pulsate et recuperation de donnees en parallele
end_of_pulsate
if [cas x]; then quitter;fi
continue de récupèrer des donnees
if [cas y]; then quitter;fi
fait apparaitre l'interface glade (dans laquelle l'user peut envoyer des signaux a la boucle)
}
boucle de fin
exit
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#971 Le 05/03/2011, à 09:38
- Hizoka
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
j'ai des soucis avec des commandes necessitant les droits root, pas de soucis si il ne me demande pas le mdp mais si oui, alors apres, j'ai plantage...
le systeme du fichier fonctionne pas trop mal mais plantage quand je veux quitter le logiciel....
Dernière modification par Hizoka (Le 05/03/2011, à 10:03)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#972 Le 05/03/2011, à 12:18
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
quel avantage j'aurais de remplacer par plusieurs lignes (show, set_title, set_label ..), ce que je peux faire en 1ligne avec zenity ?
Si zenity n'est pas une dépendance supplémentaire, pourquoi pas ! Mais c'était surtout histoire de n'avoir qu'une interface, une seule commande (là tu auras des zenity en plus, mais bon, c'est un détails)
justement, je viens de m'apercevoir que mon interface glade fonctionne même sans etre passé par la boucle ! (jette un oeil au pulsate du debut de script : il fonctionne bien avant d'etre entré dans la boucle !)
Oui, c'est normal, tu peux agir sur l'interface, mais glade2script n'est pas connecté à ton script, il en récupère juste le stdout, donc la commande EXIT@@ n'aura aucun effet sur ton script.
### Meme si on rentre dans cette fonction, bizarrement le script continue apres execution de la fonction quitter
C'est normal, tu envoie le signal quitter a glade2script, il ferme l'interface et quitte, mais ton script lui vie tjrs, il faut mettre un exit juste après le EXIT@@, et lancer tes condition en arrière plan.
Si tu arrives a me trouver un signal adequat, je pourrais tenter ceci qui correspond plus je pense a ce que tu me recommandes:
Regarde l'exemple que j'avais donné.
sortie()
{
echo 'EXIT@@'
exit
}
{
if true; then sortie; fi
sleep 1
echo 'ok' #cela n'apparaitra jamais
} &
boucle de fin
Donc:
fonction quitter
{
echo 'EXIT@@'
exit
}
#chargement fonctions qui seront appellées par le glade
fonction avant_click_user ### appelée en arrière plan pour se trouver dans la boucle de fin en attente
{
beginning_of_pulsate et recuperation de donnees en parallele
end_of_pulsate
if [cas x]; then quitter;fi
continue de récupèrer des donnees
if [cas y]; then quitter;fi
fait apparaitre l'interface glade (dans laquelle l'user peut envoyer des signaux a la boucle)
}
avant_click_user &
boucle de fin
Attention par contre, il faudra prendre en compte l'environnement de travail pour tes fonctions, si elles ont besoin des variables saisies par l'user (dans le glade), il faudra passer par ITER@@, pour que ta fonction travail dans l'environnement chargé des nouvelles variables.
j'ai des soucis avec des commandes necessitant les droits root, pas de soucis si il ne me demande pas le mdp mais si oui, alors apres, j'ai plantage...
Quel genre de plantage ? Je viens d'essayer glade2script en root, et j'ai pas de soucis !
le systeme du fichier fonctionne pas trop mal mais plantage quand je veux quitter le logiciel....
Quel genre de plantage ? Avec tes fichiers, ton script boucle en attendant les fichiers (sous-process), si tu quittes, EXIT@@ ou callback, on sort de la boucle de fin, mais tes boucles d'attente sont tjrs en cours. Essaie de mettre un exit après la boucle de fin ou après EXIT@@, ca devrait sortir des boucles d'attente également (au pire lance les avec exec, pour qu'elles soient dépendantes du père !), ou crée les fichiers nécessaires pour que tes boucles d'attente n'attendent plus et que le script aille jusqu'à la fin.
Ce week-end, je n'aurais pas trop de temps (peut être un peu la nuit), milieu de semaine prochaine, j'aurais à nouveau du temps.
@Hizoka
Je viens d'essayer ça:
{
sleep 1
echo 'ok'
gksudo gnome-terminal
} &
Et pas de soucis
Dernière modification par AnsuzPeorth (Le 05/03/2011, à 12:27)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#973 Le 05/03/2011, à 12:27
- YannUbuntu
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
ok merci, je vais essayer. Par contre, je n'ai pas bien compris ce passage :
il faudra prendre en compte l'environnement de travail pour tes fonctions, si elles ont besoin des variables saisies par l'user (dans le glade), il faudra passer par ITER@@, pour que ta fonction travail dans l'environnement chargé des nouvelles variables.
ou dois-je mettre ITER@@ ?
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#974 Le 05/03/2011, à 12:36
- AnsuzPeorth
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
ok merci, je vais essayer. Par contre, je n'ai pas bien compris ce passage :
il faudra prendre en compte l'environnement de travail pour tes fonctions, si elles ont besoin des variables saisies par l'user (dans le glade), il faudra passer par ITER@@, pour que ta fonction travail dans l'environnement chargé des nouvelles variables.
ou dois-je mettre ITER@@ ?
Arff, la commande ITER@@, surement la plus dur à expliquer à ceux qui n'ont pas pris en compte les environnements de travail ...
J'ai déjà expliquer dans ce thread, mais où ???, la doc a un petit exemple, mais j'ai encore 5 mn pour tenter une explication rapide.
Donc, lorsqu'un fonction est appelée, elle travaille dans son environnement (a=1), si entre temps, l'user clic sur interface et dit que a=2, dans ta fonction, l'environnement n'a pas changé, a=1. Par contre, dans l'environnement du script (la boucle en gros) a=2. Donc dans ta fonction tu n'as pas accès au changement demandé par l'user.
Il faudra donc appelé une fonction qui continue le traitement avec les nouvelles variable dans son environnement, donc il faut repasser par la boucle de fin pour cela. La commande ITER@@ est faite pour ça. ITER@@MaFonction. MaFonction sera elle chargée des nouvelles variables car elle passe par la boucle de fin et se retrouve dans le nouveau environnement.
ITER@@ appelle simplement une fonction, mais en faisant un tour par la boucle..
Comme je l'ai dit, la façon de faire est differente de zenity, c'est de la communication direct entre le glade et le script, ca permet bcp de chose, mais a qqles contraintes naturelles (l'environnement de travail par exemple, on n'est pas en python où on a self qui détermine une instance à laquelle on a accès facilement pour modifier les variables de cette instance)
Maintenant, tu peux faire comme zenity, lancer à chaque fois que tu as besoin glade2script et son script associé et en récupérer la sortie, le script qui peut être le même pour toutes tes boites, suffirait d'appeler ton script avec argument pour savoir quelle boite ouvrir. C'est l'utilisation statique.
Dernière modification par AnsuzPeorth (Le 05/03/2011, à 12:50)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#975 Le 05/03/2011, à 13:39
- YannUbuntu
Re : [glade2script-GTK2] Interface graphique pour script bash ou autre.
Mon soucis est le suivant. Si je fais:
avant_click_user &
boucle de fin
, les variables chargées dans avant_click_user seront-elles vues dans les fonctions appelées par la boucle ?
Si j'ai bien compris, je n'ai pas besoin d'ITER@@ car l'utilisateur ne peut pas envoyer 2 signaux plus vite que le traitement de mes fonctions appelees par Glade (elles sont tres rapides).
J'ai écarté l'utilisation statique car ca serait un boulot monstre de passer toutes les variables&tableaux en arguments.
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne