IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Perl Discussion :

Ordre d'exécution des commandes avec Perl/Gtk


Sujet :

Interfaces Graphiques Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Ordre d'exécution des commandes avec Perl/Gtk
    Bonjour. Même si je suis familier avec bash et plus ou moins avec C (raison pour laquelle je me suis dirigé vers Perl), je suis un grand novice par rapport à ce dernier langage, donc je suis désolé si la question peut paraître stupide.

    Je suis actuellement en train d'écrire une visionneuse (pour résumer beaucoup) en Perl/Gtk3. Simplement, je me cogne la tête contre les murs depuis quelques jours au sujet de l'ordre selon lequel les commandes sont exécutées. Un petit exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sub on_open_archive {
    	my ( $t1, $arkurl ) = @_;
    	print "Ouverture de $arkurl\n";
    	if ( -f $arkurl ) {
    		$read->show();
    		$list->hide();
    		my $ae = Archive::Extract::Libarchive->new( archive => "$arkurl");
    		my $ok = $ae -> extract( to => "$path/tmp") or die $ae -> error;
    	}
    }
    (je n'ai gardé que l'essentiel pour plus de lisibilité).

    En gros, le script est censé cacher la liste des archives à ouvrir et afficher le widget permettant d'afficher les images, puis ensuite extraire l'archive (et éventuellement afficher par la suite les images extraites, même si ce n'est pas dans ce code).

    Simplement, il se passe l'inverse. Le programme freeze pendant l'extraction de l'archive (normal), et n'exécute les fonctions hide et show qu'après son extraction (pas logique du tout selon moi).

    J'ai testé dans d'autres contextes, avec toujours le même résultat. Par exemple, si j'appelle une fonction qui va changer l'image d'un GtkImage suivi d'un sleep (pour le test), le sleep est exécuté avant le $widget->set_from_pixbuf($img).

    Quelqu'un saurait m'expliquer ce phénomène?

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Je ne connais rien en GTK3, mais existe-t-il une fonction de rafraichissement de widget comme en Perl/Tk (update) ? Si oui, vous pourriez faire un $list->update juste après le hide.
    Mais je ne sais pas si la méthode update existe en GTK3.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour cette piste. Je n'ai pas trouvé de commande update en effet, mais je vais continuer à chercher dans ce sens - je vous tiens au courant.

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Pas du tout connaisseur, mais si tu mets en commentaire l'extraction de l'archive (en remplaçant par exemple par un sleep), est-ce que les affichages masquages se font dans le bon ordre?

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Malheureusement, non. Comme dit plus haut, j'avais déjà testé avec une fonction de base de Gtk (changement d'image d'un widget "image"), suivi d'un sleep, et même résultat: sleep d'abord, et changement d'image ensuite.

    Ceci dit, je trouve tout de même tout cela étrange. C'est le genre de chose qui peut rendre difficilement utilisable une interface graphique dans pas mal de cas, donc ça m'étonne que Gtk soit confronté à ce genre de problème... Est-ce que c'est parce que, vu la nature du soft en développement, j'ai privilégié les "hide" aux "destroy", contrairement à ce que font la plupart des gens? Affaire à suivre, même si, comme dit dans le premier post, cela ne fait qu'une semaine que je me suis mis à Perl (donc possibilité d'erreur très c**** e ma part, même si ça me semble peu probable dans ce cas).

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/06/2008, 13h15
  2. Perl Tk éxécuter des commandes avec sudo
    Par BerSerK dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2007, 19h43
  3. Executer/Stopper des applications avec Perl
    Par linkowich dans le forum Langage
    Réponses: 9
    Dernier message: 10/09/2005, 16h48
  4. Réponses: 2
    Dernier message: 02/11/2004, 06h52
  5. faire des graphiques avec Perl
    Par And_the_problem_is dans le forum Modules
    Réponses: 2
    Dernier message: 16/07/2003, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo