Alors voila, tout le monde se plaint que pour uploader des fichiers au wiki de culture libre (mediawiki), c'est chiant si on veut uploader tout un lot de photo par exemple. Après avoir fait un tour de l'existant, je décide de faire une petite interface d'upload à mediawiki en utilisant la lib[1] perl qui va bien.
Et comme dans mes livres perl j'ai appris que la paresse est une vertu, j'ouvre directement glade et commence à jeter des libellés par-ci des boîtes de textes par là, en saupoudrant d'autres éléments gtk.
Seulement je n'ai pas trouvé de tutoriel pour utiliser cette interface avec perl. Un petit coups de perldoc me fait pondre :
#!/usr/bin/perl
#
use Gnome2;
use Gtk2::GladeXML;
Gnome2::Program->init("test","1.0");
my $gladexml= Gtk2::GladeXML->new('mmu-gtk.glade');
$gladexml->signal_autoconnect_from_package('window1');
Gtk2->main();
Avec bien sûr mmu-gtk.glade étant mon fichier glade, qui contiens bien une fenêtre nommé window1.
Quand je lance mon petit programme qui n'est pas encore censer faire grand chose, je me vois gratifier du message suivant :
% ./test.pl
Gtk-CRITICAL **: gtk_widget_grab_default: assertion `GTK_WIDGET_CAN_DEFAULT (widget)' failed at ./test.pl line 8.
Voilà, si vous avez des idées ou de la documentation à me conseiller, je suis preneur. :)
[1] http://search.cpan.org/dist/MediaWiki/lib/MediaWiki.pm
# Liens utiles
Posté par JGO . Évalué à 1.
http://live.gnome.org/GTK2-Perl/GladeXML/Tutorial
Un autre outil de téléchargement multiple d'images :
http://commons.wikimedia.org/wiki/Commons:Tools/Commonist
[^] # Re: Liens utiles
Posté par psychoslave__ (site web personnel) . Évalué à 2.
Merci pour ta réponse. En fait j'avais fini par trouver ce tuto (via perldoc tout simplement) et bien que l'ayant fait, je galère encore un peu. Notamment pour la gestion de plusieurs fenêtre. Par exemple en disant que $about_window contiens la référence de ma fenêtre "à propos", lors de la première capture de l'événement "activation du bouton aide>à propos", ma fenêtre appraraît bien sans problème, grace à un $about_window->show. Si je la ferme et que je recommence, seul la barre d'état (je suis pas sûr du nom, la barre du dessus des fenêtres) de la fenêtre apparaît sur un espace très réduit. Une idée ?
J'avais trouvé commonist mais je n'ai pas réussi à le faire fonctionner, mais merci quand même.
[^] # Re: Liens utiles
Posté par JGO . Évalué à 1.
my $window1 = $gui->get_widget ("window1") ; # la fenêtre principale
...
sub A_propos {
my $texte = "Ceci est une boite d'information\nMerci d'utiliser ce logiciel" ;
my $dialog = Gtk2::MessageDialog->new ($window1, [qw/destroy-with-parent/], 'info', 'ok', $texte) ;
$dialog->run ;
$dialog->destroy () ;
}
Si tu veux utiliser glade pour faire une interface plus élaborée, tu peux sans doute sauvegarder tes fenêtres dans des fichiers séparés et les recharger lorsqu'ils sont détruits. ($gui = Gtk2::GladeXML->new ('test.glade') ;)
[^] # Re: Liens utiles
Posté par psychoslave__ (site web personnel) . Évalué à 2.
Merci pour tes conseils en tout cas. :)
[^] # Re: Liens utiles
Posté par JGO . Évalué à 1.
Et juste pour répondre à la question intiale, des fois que ça soit utile à l'avenir à quelqu'un d'autre, la syntaxe est :
$gladexml->signal_autoconnect_from_package(nom de package);
nom de package est le nom de son package à soi où on a rangé les routines appelées par les signaux. Si la fonction est appelée sans argument, les signaux renvoient au programme courant (ce qui est le comportement souhaité pour les petits programmes).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.