Perl Gtk2 - Problème remplir Combobox
Bonjour tout le monde.
Je ne sais pas si quelqu'un va pouvoir m'aider, car je travaille en Perl, plus précisément j'essaie de développer une application avec interface graphique Gtk2.
Mon problème est le suivant : dans cette partie du code, mon interface dispose d'une fenêtre de type Dialog. A l'intérieur, j'affiche un Label, et deux cadres, chacun contenant une ComboBox.
Je réussis à créer mes widgets, cependant je n'arrive pas à remplir mes ComboBox ! On ne rentre même pas dans les boucles for qui sont censées les remplir alors que ces boucles sont situées en plein milieu du code de la création des widgets, c'est à n'y rien comprendre ....
Voilà le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
sub timeSeriesChooser
{
my($source) = @_;
headersExtract($source);
#fileProgress($source);
$window->iconify(); # réduit la fenêtre principale
# $file_entry->set_sensitive(0); # rend le champ de saisie du fichier source inutilisable
# $buttParcourir->set_sensitive(0); # rend le bouton Parcourir inutilisable
# $buttLancer->set_sensitive(0); # rend le bouton Explorer inutilisable
# création de la boîte de dialogue
# la boîte de dialogue comporte un TITRE, son widget parent est la fenêtre WINDOW,
# elle est modale donc la fenêtre principale WINDOW ne peut être utilisée tant que la fenêtre de dialogue est ouverte
# si on supprime la fenêtre principale, la fenêtre de dialogue est détruite également
$dialogWindow = Gtk2::Dialog->new('TimeSeriesAnalyzer : sélection des données à analyser',
$window,
[qw/ destroy-with-parent/],
'gtk-ok' => 'ok',
'gtk-cancel' => 'cancel');
# on rend le bouton OK inutilisable
$dialogWindow->set_response_sensitive('ok',0);
# fermeture du programme quand on clique sur la croix rouge
$dialogWindow->signal_connect('delete_event', sub{$window->deiconify();$dialogWindow->destroy();});
# centrage de la fenêtre de dialogue à l'écran
$dialogWindow->set_position('center');
# ajout de la fenêtre dans le hash de composants
$W{dialogWindow} = $dialogWindow;
my $vbox = $dialogWindow->vbox;
$vbox->set_border_width(10);
########
my $hbox = Gtk2::HBox->new();
$hbox->set_border_width(10);
$vbox->pack_start($hbox,1,1,0);
my $labIntro = Gtk2::Label->new('Veuillez maintenant sélectionner les données à analyser :');
$labIntro->set_justify('center');
$hbox->add($labIntro);
### creation de la partie contenant les ComboBox
my $hboxDiff = &ret_hbox();
$vbox->pack_start($hboxDiff,1,1,0);
# on montre la fenêtre princpale en dernier
$dialogWindow->show_all();
$dialogWindow->run();
}
##### creation de la HBox qui contient mes ComboBox
sub ret_hbox
{
########
my $hbox2 = Gtk2::HBox->new();
$hbox2->set_border_width(20);
###
my $cadre1 = Gtk2::Frame->new(" Série temporelle (Abscisses) ");
$cadre1->set_border_width(10);
my $hboxCadre1 = Gtk2::HBox->new();
$hboxCadre1->set_border_width(20);
$comboBoxX = Gtk2::ComboBox->new_text;
$comboBoxX->set_border_width(10);
### remplissage de la combobox
for(my $i=0;$i < scalar(@entetes);$i++)
{
print "OK";
$comboBoxX->append_text($entetes[$i]);
}
$comboBoxX->set_active(0);
###
my $cadre2 = Gtk2::Frame->new(" Ordonnées ");
$cadre2->set_border_width(10);
my $hboxCadre2 = Gtk2::HBox->new();
$hboxCadre2->set_border_width(20);
$comboBoxY = Gtk2::ComboBox->new_text;
$comboBoxY->set_border_width(10);
### remplissage de la combobox
for(my $i=0;$i < scalar(@entetes);$i++)
{
print "OKbis";
$comboBoxY->append_text($entetes[$i]);
}
$comboBoxY->set_active(0);
$hboxCadre1->add($comboBoxX);
$hboxCadre2->add($comboBoxY);
$cadre2->add($hboxCadre2);
$cadre1->add($hboxCadre1);
$hbox2->add($cadre1);
$hbox2->add($cadre2);
$hbox2->show_all();
return $hbox2;
} |
Je vous remercie, et souhaite à tout le monde de passer de bonnes fêtes de fin d'année !
Matt.