Hi I have the following script (copied fairlay verbatim from gtk2-perl
tutorial) and I cant seem to get the value out of the show_chooser
sub-routine. It prints to the shell but doesnt seem to want to go any
where else.

I must be missing something simple. Any help appreciated

#!/usr/bin/perl
use Gtk2 '-init';
use strict;
use warnings;
my $window=Gtk2::Window->new('toplevel');
$window -> signal_connect ('delete_event' => sub { Gtk2->main_quit;});
my $filename;
my $filename1;
sub ret_vbox {
my $vbox=Gtk2::VBox->new(0,5);
my $frm_file_chooser_btn = Gtk2::Frame->new('Gtk2::FileChooserButton');
$frm_file_chooser_btn->set_border_width(5);
my $hbox_frm_file_chooser_btn = Gtk2::HBox->new(0,1);
$hbox_frm_file_chooser_btn->set_border_width(5);
my $fc_btn_file=Gtk2::FileChooserButton->new ('select a file', 'open');
$hbox_frm_file_chooser_btn->pack_start($fc_btn_file,1,1,6);
my $fc_btn_folder=Gtk2::FileChooserButton->new ('select a directory',
'select-folder');
$hbox_frm_file_chooser_btn->pack_start($fc_btn_folder,1,1,6);
$frm_file_chooser_btn->add($hbox_frm_file_chooser_btn);
$vbox->pack_start($frm_file_chooser_btn,0,0,6);
my $frm_file_chooser_dialog = Gtk2::Frame->new('Gtk2 File Chooser
Incarnations');
my $hbox_f1_chooser_dialog = Gtk2::HBox->new(0,5);
$hbox_f1_chooser_dialog->set_border_width(10);
my $btn_open = Gtk2::Button->new('_Open');
$btn_open->signal_connect('clicked' => sub {show_chooser('File Chooser
Type Open','open')});
$hbox_f1_chooser_dialog->pack_start($btn_open,1,1,6);

my $btn_save = Gtk2::Button->new('_Save');
$btn_save->signal_connect('clicked' => sub {show_chooser('File Chooser
Type Save','save')});
$hbox_f1_chooser_dialog->pack_start($btn_save,1,1,6);

my $btn_select_folder = Gtk2::Button->new('S_elect Folder');
$btn_select_folder->signal_connect('clicked' => sub
{show_chooser('File Chooser Type Select Folder','select-folder')});
$hbox_f1_chooser_dialog->pack_start($btn_select_folder,1,1,6);

my $btn_create_folder = Gtk2::Button->new('_Create Folder');
$btn_create_folder->signal_connect('clicked' => sub
{show_chooser('File Chooser Type Create Folder','create-folder')});
$hbox_f1_chooser_dialog->pack_start($btn_create_folder,1,1,6);
my $test=$show_chooser::filename;
$vbox->add($hbox_f1_chooser_dialog);
my $frame = Gtk2::Frame->new();
#my $filename2=$show_chooser::filename1;
#my $label= Gtk2::Label->new ($filename2);
#$frame->add($label);
#$vbox->add($frame);
$vbox -> show_all();
#print $filename1;
return $vbox;
}

sub show_chooser {
my ($heading,$type) = @_;
my $file_chooser =Gtk2::FileChooserDialog->new (
$heading,undef,$type,'gtk-cancel' => 'cancel','gtk-ok' => 'ok'
);
($type eq 'save')&&($file_chooser->set_current_name("tux.kom"));

if ('ok' eq $file_chooser->run){$filename = $file_chooser-> get_filename;
print "filename $filename\n";
my $filename1 = $filename; # this prints
}

#print $filename1;
$file_chooser->destroy;
if (defined $filename) {
if ((-f $filename)&&($type eq 'save')) {

my $overwrite = show_message_dialog ($window,'question','Overwrite
existing file:'."<b>\n$filename</b>",'yes-no');
return if ($overwrite eq 'no');
}
return $filename;
1;
#print $show_chooser::filename1;
}
return $filename;
print $filename; #shell says no value
}

sub show_message_dialog {
my ($parent,$icon,$text,$button_type) = @_;
my $dialog = Gtk2::MessageDialog->new_with_markup ($parent, [qw/modal
destroy-with-parent/],$icon,$button_type,sprintf  "text");
my $retval = $dialog->run;
$dialog->destroy;
return $retval;

}
#my $label=Gtk2->new ($filename);
#$filename1=show_chooser;



$window->add(&ret_vbox);
$window->show();






Gtk2->main();
0;

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to