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.

#26 Le 20/02/2009, à 19:06

AnsuzPeorth

Re : gtkdialog et combobox(résolu)

ben si, en mettant la balise <input file>$HOME/fichier</input> (si tu as entouré la gui par des " , sinon, faut entourer de ')

Dernière modification par AnsuzPeorth (Le 20/02/2009, à 19:09)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#27 Le 20/02/2009, à 23:44

titi89

Re : gtkdialog et combobox(résolu)

ok merci
@+

Hors ligne

#28 Le 21/02/2009, à 00:23

n3o51

Re : gtkdialog et combobox(résolu)

<input>cat $HOME/MesTravaux/parc.txt</input>

frafra donne ça plus haut donc vissiblement il es reconnu big_smile

EDIT :pas vu le post plus haut desolé

Dernière modification par n3o51 (Le 21/02/2009, à 00:23)


Welcome to the real world
________________________________

Hors ligne

#29 Le 21/02/2009, à 11:02

titi89

Re : gtkdialog et combobox(résolu)

bonjour n3o51,
oui je sais bien mais j'ai quand même un soucis un coup ça marche un coup çà marche po
bon j'ai résolu mon problême en mettant le chemin complet pour l'instant
en fait c'est uniquement avec le "edit" que j'ai ce soucis
je réassaye plus tard.
@+

Hors ligne

#30 Le 21/02/2009, à 13:42

titi89

Re : gtkdialog et combobox(résolu)

a première vue c'était un problême de '
merci à vous
@+

Hors ligne

#31 Le 21/02/2009, à 17:43

titi89

Re : gtkdialog et combobox(résolu)

rebonjour,
peut-on relancer une fonction par un bouton
parceque lorsque je place la commande de ma fonction entre les balises <action> de mon bouton
elle est lancée au démarrage du script alors que je voudrais la lancer lorsque j'en ai besoin
c'est pas pour le combo mais pour effectuer des actions de recherche dans le fichier texte.
je précise que cela fonctionne mais pas à ma demande.
merci
@+

Hors ligne

#32 Le 21/02/2009, à 18:10

frafa

Re : gtkdialog et combobox(résolu)

Salut,
le methode la plus simple est de te faire un fichier fonctions.sh
et de mettre a l'interieur toute les fonctions a appeler via les balises actions.
poste le code actuel de ton script
et je te ferait un exemple...

Hors ligne

#33 Le 21/02/2009, à 18:16

AnsuzPeorth

Re : gtkdialog et combobox(résolu)

salut a vous !

Ou alors mettre une fonction au cul de gtkdialog qui lance les fonctions (exemple dans post gtkdialog widget & co). Ca ne fera qu'un seul fichier comme ça !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#34 Le 21/02/2009, à 19:25

titi89

Re : gtkdialog et combobox(résolu)

je vous fais cela demain soir
ce soir mon fils nous présentent à sa future belle famille
faut pas que je sois en retard big_smile
merci et à demain
bon week-end
@+

Hors ligne

#35 Le 21/02/2009, à 19:30

frafa

Re : gtkdialog et combobox(résolu)

ben et alors..., c'est qui qui garde les Vaches ce soir!
smile
Bonne soirée a vous.

Dernière modification par frafa (Le 21/02/2009, à 19:30)

Hors ligne

#36 Le 23/02/2009, à 10:56

titi89

Re : gtkdialog et combobox(résolu)

bonjour,
j'ai créé un autre script que j'appelle par mon bouton cela a résolu mon problême je voulais faire qu'un seul fichier ce sont les lignes de commande avant la partie window' qui me pose problême
je te poste le code du fichier mais te tracasse pas pas cela fonctionne très bien comme cela.

#!/bin/bash

rm $HOME/MesTravaux/tmp.txt
 sortie=`zenity --title "indiquer la recherche" --entry ` || exit 1
sed -n /"$sortie"/p $HOME/MesTravaux/mestravaux.txt | grep "$sortie" | tee $HOME/MesTravaux/tmp.txt



export EDITER='<window title="recherche personnalisée" default-width="640" default-height="400" window_position="2" icon-name="gtk-edit" decorated="true">
 <vbox>
 
<edit editable="true" cursor-visible="true" accepts-tab="true">
<variable>EDITCONF</variable>
<width>600</width><height>300</height>
<input file>'$HOME/MesTravaux/tmp.txt'</input>
</edit>
<hbox>
 
<button>
<label>Imprimer</label>
<input file icon="gtk-info"></input>
<action>lpr -P MP170 -h '$HOME/MesTravaux/tmp.txt' &</action>
</button>

<button>
<input file icon="gtk-save"></input>
<label>Appliquer vos modifications</label>
<action>echo "$EDITCONF" | $(tee '$HOME/MesTravaux/tmp.txt') &</action>
</button>
</hbox>
<hbox>
<button>
<input file stock="gtk-close"></input>
<label>Fermer la fenêtre</label>
<action type="closewindow">EDITER</action>
</button>
</hbox>
</vbox>
</window>'
gtkdialog --program=EDITER

exit 0

par contre j'ai un plus gros soucis pour l'instant
j'ai par exemple mon fichier texte qui se présente sous la forme
donnée1|donnée2|donnée3|donnée4|donnée5
je voudrais pouvoir lire le fichier ligne/ligne et en fonction de la valeur de donnée3 ajouter un "|" une donnée6 un autre "|" et val(donnée5) * val(donnée6) sous la forme 0.00€ par exemple et sauvagarder le tout dans mon fichier texte
en fait if donnée3 = "dddd" ajout donnée6 "d6" et donnée7 "d7" ou d7 = d6*d5 sous la formme 0.00€
et aussi additionner le total des valeurs donnée7(donnée5*donnée6) pour savoir comment on additionne des valeurs dans un fichier.
peut on faire ce genre d'opération et de calcul en bash?
si c'est possible un exemple ou un lien me permettrait d'adapter tous les genres de calcul que je dois faire.
j'espère que je suis assez clair dans mes explications.
merci d'avance
@+

Hors ligne

#37 Le 23/02/2009, à 15:37

AnsuzPeorth

Re : gtkdialog et combobox(résolu)

titi89 a écrit :
#!/bin/bash

rm $HOME/MesTravaux/tmp.txt
 sortie=`zenity --title "indiquer la recherche" --entry ` || exit 1
sed -n /"$sortie"/p $HOME/MesTravaux/mestravaux.txt | grep "$sortie" | tee $HOME/MesTravaux/tmp.txt

Pourquoi faire un grep, le sed matche deja la ligne, le grep est en trop !(j'aurais ecrit sed -n "/$sortie/p")
Et pourquoi utiliser tee (ca vient de frafa ça...:)), ca fait une commande de plus, une simple redirection ferait l'affaire (à moins qu'il y est une fonction que je ne connais po dans tee qui le rends indispensable)

Au lieu d'un zenity, tu pourrais integrer la recherche au GUI (une entry avec un bouton pour envoyer le resultat et un refresh sur l'edit).

Pour les calculs, je suis arrivé a un truc, mais tu n'auras pas le € qui apparaitra à chaque ligne, juste sur le resultat.


J'ai utilisé la commande bc pour calcul decimal.

base.txt (attention, pas de virgule, mais un point)

5|10|15|20|25.5
50|55|60|65|70
5|10|15|20|25
5|10|15|20|25

calcul.sh

#!/bin/bash
rm fichier_resultat.txt
while read ligne
do
if [ "$(cut -d "|" -f3 <<< $ligne)" = "15" ]; then  # si la 3 eme colonne est égal à 15 ( tu peux mettre autre chose )
 val_ajoute=33
 echo "$ligne|$val_ajoute|$(echo "$(cut -d "|" -f5 <<< $ligne)*$val_ajoute" | bc)" >> fichier_resultat.txt
else
echo $ligne >> fichier_resultat.txt
 fi
 done < base.txt
 
  for donnee in $(cut -d "|" -f7 fichier_resultat.txt)
  do
  [ -z "$total" ] && total=0  # si total est vide, erreurs de calcul, donc je lui donne valeur 0 si vide
  var=$donnee
  total=$(echo "$total+$var" | bc)
  done
  echo " | | | | | |$total €" >> fichier_resultat.txt
  
  #si tu veux écraser le fichier base
  #tu fais un cp ou mv fichier_resultat.txt base.txt
exit

résultat:

5|10|15|20|25.5|33|841.5
50|55|60|65|70
5|10|15|20|25|33|825
5|10|15|20|25|33|825
 | | | | | |2491.5 €

La meme chose pour les entier:

while read ligne
do
if [ "$(cut -d "|" -f3 <<< $ligne)" = "15" ]; then
 val_ajoute=33
 echo "$ligne|$val_ajoute|$(($(cut -d "|" -f5 <<< $ligne)*$val_ajoute))" >> fichier_resultat.txt
else
echo $ligne >> fichier_resultat.txt
 fi
 done < base.txt
 
  for donnee in $(cut -d "|" -f7 fichier_resultat.txt)
  do
  var=$donnee
  total=$(($total+$var))
  done
  echo " | | | | | |$total €" >> fichier_resultat.txt

Pour trouver des explication, regarde dans ma signature, abs-traduc, tu y trouveras ce que tu veux sur le bash (presque tout)


EDIT: je pense à ca, tu pourais utiliser un tree, ca presenterait mieux, pour ajouter une ligne, suffit de mettre un entry pour la saisie et un bouton pour ajouter..;enfin je dis ça....!

Dernière modification par AnsuzPeorth (Le 23/02/2009, à 15:59)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#38 Le 23/02/2009, à 17:01

titi89

Re : gtkdialog et combobox(résolu)

merci Ansuzpeorth
je vais tester ce soir ,j'étais justement en train de feuilleter abs.traduc et pour le tree je l'utilise pour afficher mon fichier dans mon script principal le edit c'est juste pour faire des recherche et ne retenir que les lignes qui m'interressent en fonction d'un critère.
encore merci
@+

Hors ligne

#39 Le 23/02/2009, à 17:22

frafa

Re : gtkdialog et combobox(résolu)

Saluti a vous smile
moi je ferait aussi cela dans un tree et surtout pourquoi rajouter une interface
simplement un champ de rechercher qui modifie le tree et un bouton imprimer
genre comme dans lanceur champ Filtrer
Capture-Ajouter%20des%20Lanceurs.png

Hors ligne

#40 Le 24/02/2009, à 01:03

titi89

Re : gtkdialog et combobox(résolu)

juste pour dire encore merci
et donner le code pour ajouter des données  ou bien les remplacer j'ai modifié un petit peu car si je faisais la manip plusieurs fois les lignes devenaient de plus en plus longue tongue
si cela peut servir à quelqu'un.

#!/bin/bash
 
 
export MAIN_DIALOG='<window title="Ajout d un prix" default-width="200" default-height="100" window_position="2" icon-name="gtk-edit" decorated="true">
 
 <vbox>
  <hbox>
    <text>
      <label>entrez le nom du produit</label>
    </text>
    <entry>
      <variable>NOM</variable>
    </entry>
  </hbox>
 
  <hbox>
    <text>
      <label>entrez le prix du produit sous la forme: 00.00</label>
    </text>
    <entry>
      <variable>PRIX</variable>
    </entry>
  </hbox>
  
 
  <hbox>
   <button ok></button>
   <button cancel></button>
  </hbox>
 </vbox>
</window>'

# récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
 
# créer les variables shell
eval $VARIABLES
 
# utilisation des variables

if [ "$EXIT" = "OK" ]; then

  while read ligne
do
if [ "$(cut -d "|" -f4 <<< $ligne)" = "$NOM" ]; then  # si la 3 eme colonne est égal à 15 ( tu peux mettre autre chose )
 val_ajoute="$PRIX"
 echo "$(cut -d "|" -f1 <<< $ligne)|$(cut -d "|" -f2 <<< $ligne)|$(cut -d "|" -f3 <<< $ligne)|$(cut -d "|" -f4 <<< $ligne)|$(cut -d "|" -f5 <<< $ligne)|$(cut -d "|" -f6 <<< $ligne)|$val_ajoute|$(echo "$(cut -d "|" -f5 <<< $ligne)*$val_ajoute" | bc)" >> resultat.txt
else
echo $ligne >> resultat.txt
 fi
 done < mestravaux.txt

cp resultat.txt mestravaux.txt
rm resultat.txt

fi
exit 0

je lance ce script depuis mon script principal puis j'affiche dans un tree le résultat avec un bouton refresh:LISTE j'ai pas réussi à ce que çà se raffraichisse tout seul bon il est minuit vais faire dodo
bon je vais m'attaquer à la manière de présenter les totaux
@+

Hors ligne

#41 Le 24/02/2009, à 01:55

Hizoka

Re : gtkdialog et combobox(résolu)

utilise ca :
<action signal="button-press-event"></action>
       Lorsque l'on clic sur le widget

<action signal="button-release-event"></action>
       Lorsque le clic est relâché (si le clic commencé sur le widget)

<action signal="enter-notify-event"></action>
       Lorsque la souris va sur le widget

<action signal="leave-notify-event"></action>
       Lorsque la souris sort du widget

<action signal="focus-in-event"></action>
       Lorsque le widget revient en 1er plan

<action signal="focus-out-event">echo Label: focus-out-event</action>
       Lorsque le widget quitte le 1er plan

<action signal="key-press-event"></action>
       Lorsqu'un caractère est rentré dans un widget

<action signal="key-release-event"></action>
       Lorsque la touche d'un caractère est relâché dans un widget

<action signal="hide"></action>

<action signal="show"></action>

<action signal="map-event"></action>

<action signal="unmap-event"></action>

<action signal="configure-event"></action>

<action signal="cursor_changed"></action>
       Lorsque la souris sélectionne un choix dans un widget

En utilisant ces signaux sur le widget de la fenetre ou d'une box, ca peut deja mettre a jour ton tableau... meme si ca "oblige" par ex l'utilisateur a bouger la souris ou a manipuler la fenetre...

à toi de voir


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#42 Le 24/02/2009, à 12:13

titi89

Re : gtkdialog et combobox(résolu)

bonjour Hizoka
j'ai mis un refresh avec le passage de souris et cela fonctionne mais cela revient au même que le bouton.
Il faudrait pouvoir lancer le refresh  à la fermeture du 2eme script.
c'est pas trop important
merci à toi
@+

Hors ligne

#43 Le 24/02/2009, à 14:17

AnsuzPeorth

Re : gtkdialog et combobox(résolu)

Logiquement, lorsque tu lances ton script depuis le gui de depart, tu perds le focus du gui, donc il faudrait utiliser

<action signal="focus-in-event" type="refresh">TREE</action>

A mettre entre la derniere balise et la balise window. (dans le peremier script, bien sur...:))


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#44 Le 24/02/2009, à 15:02

titi89

Re : gtkdialog et combobox(résolu)

bonjour AnsuzPeorth,
j'avais déjà essayé mais cela ne marche pas.
mais je dirais que lorsque je click sur "ok" je déclencle la fermeture du gui et le traitement du fichier texte donc peut-être que le gui de départ reprend le focus avant que le fichier soit modifié
je vais essayé de mettre la commande dans un bouton sans exit si c'est cela çà devrait fonctionner
@+

Hors ligne

#45 Le 24/02/2009, à 16:16

AnsuzPeorth

Re : gtkdialog et combobox(résolu)

titi89 a écrit :

bonjour AnsuzPeorth,
j'avais déjà essayé mais cela ne marche pas.
mais je dirais que lorsque je click sur "ok" je déclencle la fermeture du gui et le traitement du fichier texte donc peut-être que le gui de départ reprend le focus avant que le fichier soit modifié
je vais essayé de mettre la commande dans un bouton sans exit si c'est cela çà devrait fonctionner
@+

Vi ca vient de là, tu effectue le traitement une fois le gui fermé, donc le focus sur la premiere s'effectue en meme temps que le traitement.

Pour y palier, 2 solutions (surement d'autres possibles, mais c'est celle qui me viennent là):
Tu passes le traitement en fonction exemple:http://forum.ubuntu-fr.org/viewtopic.ph … 8#p2440268
Ou alors, tu lance un mini_gui qui te signale que le traitement est effectué, ainsi le focus sera prit en compte la deuxieme fois !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#46 Le 24/02/2009, à 16:30

titi89

Re : gtkdialog et combobox(résolu)

oui c'est ce que j'ai fait pour vérifier mon idée j'ai mis avant le exit:
zenity --info / --text="toutes les opérations demandées ont été effectuées avec succès"
et à la fermeture le tree se met à jour reste à voir sur un fichier important si cela laisse le temps
je vais regarder ton autre solution
merci
@+

Hors ligne

#47 Le 24/02/2009, à 16:51

AnsuzPeorth

Re : gtkdialog et combobox(résolu)

titi89 a écrit :

et à la fermeture le tree se met à jour reste à voir sur un fichier important si cela laisse le temps

si tu as mis le zenity juste avant le exit du script, il n'y auras pas de soucis, le zenity apparaittra que lorsque le traitement sera terminé, donc pour les gros fichiers pas de soucis... (utilise plutot un progress de gtkdialog plutot que zenity...)

titi89 a écrit :

je vais regarder ton autre solution

Un peu plus 'tordu', mais plus souple, ca permet de passer des fonctions.
Si tu optes pour cette soluce, il faudra donc envoyer un "echo <item> ; sleep " dans ta premiere balise action,et dans ta deuxieme balise action le exit.
(Voir thread associé )

La premiere solutions sera plus sur si tu traites des gros fichiers (pas de sleep a mettre, juste le 'zenity' de fin qui se lance qd tout fini) D'ailleurs, tu pourrais mettre la routine de traitement dans la progress (utile si gros fichier, pour faire genre...! smile, ca fera enchainement, gui1→gui2→progress_avec_traitement→gui1)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#48 Le 24/02/2009, à 18:32

titi89

Re : gtkdialog et combobox(résolu)

merci pour tes explications
mais j'apprend doucement donc pour l'instant je vais me contenter de la 1ere solution tongue
faut pas que ce soit trop compliqué encore  lol
mais grace à toi j'ai fortement avancé aujourd'hui

@+

Hors ligne

#49 Le 25/02/2009, à 18:31

titi89

Re : gtkdialog et combobox(résolu)

bonjour,
juste une question je voudrais afficher un résultat avec 2 décimal soit total4
j'ai fait :

total4=$(echo "scale=2; $total3-$total1" | bc)

mais le résultat s'obstine avec 3 chiffres après la virgule
j'ai du louper quelque chose
je poste le code en entier si cela vient d'ailleurs je précise que tout fonctionne juste 3 decimal au lieu de 2 desirées

#!/bin/bash
 
rm $HOME/MesTravaux/charge.txt
rm $HOME/MesTravaux/produit.txt

 sortie=`zenity --title "indiquer la recherche" --entry ` || exit 1
sed -n /"$sortie"/p $HOME/MesTravaux/mestravaux.txt | grep "$sortie" | tee $HOME/MesTravaux/charge.txt
sed -n /"$sortie"/p $HOME/MesTravaux/recolte.txt | grep "$sortie" | tee $HOME/MesTravaux/produit.txt

surface=0
ilot=0

  while read ligne
do
if [ "$(cut -d "|" -f1 <<< $ligne)" = "$sortie" ]; then  # si la 1 eme colonne est égal à "sortie" ( tu peux mettre autre chose )
 surface="$(cut -d "|" -f3 <<< $ligne)"
 ilot="$(cut -d "|" -f2 <<< $ligne)"
 else
surface=$surface
ilot=$ilot
fi
 done < $HOME/MesTravaux/infoparc.txt




total1=0     #si  il n'y a pas de donnée sinon le script plante
total2=0

for donnee in $(cut -d "|" -f8 charge.txt)
  do
  [ -z "$total1" ] && total1=0  # si total est vide, erreurs de calcul, donc je lui donne valeur 0 si vide
  var=$donnee
  total1=$(echo "scale=2; $total1+$var" | bc)
 
  done
 
 for donnee in $(cut -d "|" -f9 produit.txt)
  do
  [ -z "$total2" ] && total2=0  # si total est vide, erreurs de calcul, donc je lui donne valeur 0 si vide
  var=$donnee
  total2=$(echo "scale=2; $total2+$var" | bc)
  done
total3=$(echo "scale=2; $total2/$surface" | bc)
 total4=$(echo "scale=2; $total3-$total1" | bc)

export MAIN_DIALOG="<window title=\"Calcul de la marge brut par parcelle par ha\" default-width=\"1000\" default-height=\"700\" window_position=\"1\">

<vbox>
<text>
<label> $sortie  $ilot surface: $surface ha</label>
</text>
 
<hbox>
<frame récapitulatif des charges pour la parcelle: $sortie>
<tree>
<label>Parcelle|Date|Intervention|Produit|Dose|Unité|prix unitaire|coût ha</label>
<input>cat $HOME/MesTravaux/charge.txt</input>
<height>300</height><width>600</width>
<variable>CHARGE</variable>
</tree>
</frame>
<text>
<label>total des charges: $total1 €</label>
</text>
 
</hbox>
<hbox>
<frame récapitulatif des produits pour la parcelle: $sortie>
<tree>
<label>Parcelle|Date|culture|quantité récoltée|humidite|proteine|n bon|prix u|total</label>
<input>cat $HOME/MesTravaux/produit.txt</input>
<height>300</height><width>600</width>
<variable>LISTES</variable>
</tree>
</frame>
<vbox>
<pixmap>
<input file>$HOME/Images/images.jpeg</input>
</pixmap>
<text>
<label>total des produits: $total2 €</label>
</text>
 </vbox>
</hbox>

 <hbox>
<text>
<label>Marge brute  de la parcelle $sortie : $total4 €</label>
</text>
    <button ok></button>
   <button cancel></button>
  </hbox>
</vbox>
</window>"

gtkdialog --program MAIN_DIALOG


exit 0

c'est pas trop grave mais si quelqu'un a une idée je suis preneur.
merci d'avance
@+

Hors ligne

#50 Le 25/02/2009, à 18:44

titi89

Re : gtkdialog et combobox(résolu)

j'ai aussi une autre question:
ou puis-je trouver les attribus disponible pour le texte changer la taille de police, mettre en gras,la couleur etc....? enfin si cela est possible
merci
@+

Hors ligne