Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Interfaces Graphiques
Interfaces Graphiques Forum d'entraide pour les interfaces graphiques en Perl (TK, GTK, Tk-Zinc, 2D et 3D avec OpenGPL, ....). Avant de poster, veuillez consulter la FAQ Perl/Tk , les cours Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/08/2012, 17h07   #1
David B
Invité de passage
 
Inscription : août 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2012
Messages : 3
Points : 0
Points : 0
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 :
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?
David B est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2012, 18h12   #2
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 530
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 530
Points : 31 713
Points : 31 713
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.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2012, 19h16   #3
David B
Invité de passage
 
Inscription : août 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2012
Messages : 3
Points : 0
Points : 0
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.
David B est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2012, 19h39   #4
Lolo78
Membre Expert
 
Homme Laurent R.
Conseil - Consultant en systèmes d'information
Inscription : mai 2012
Messages : 569
Détails du profil
Informations personnelles :
Nom : Homme Laurent R.
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 : 569
Points : 1 119
Points : 1 119
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?
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.
Lolo78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2012, 21h06   #5
David B
Invité de passage
 
Inscription : août 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2012
Messages : 3
Points : 0
Points : 0
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).
David B est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h37.


 
 
 
 
Partenaires

Hébergement Web