#!/usr/bin/perl
use warnings;
use strict;
# include my debug-build of Gtk2 and Glib
#use lib '/home/stephan/Work/imTuS/segv/lib/perl/5.8.4/';
use Gtk2 '-init';
use constant FALSE => 0;
use constant TRUE => 1;
### Hauptfenster
my %Top;
$Top{window} = Gtk2::Window->new;
$Top{window}->set_title('Segmentation fault?');
$Top{window}->set_default_size( 400, 400 );
$Top{window}->signal_connect( destroy => sub { Gtk2->main_quit; } );
### Grund-Layout
# VBox
$Top{vbox} = Gtk2::VBox->new( FALSE, 5 );
$Top{window}->add( $Top{vbox} );
### Menu
# Layout
my %Menu;
$Menu{string} = <<"EOS";
EOS
# Actions erzeugen
$Menu{actions} = [
[ 'File', undef, 'File' ],
[ "loadDir", undef, "Open directory", "O", undef, \&loadDir ]
];
$Menu{action_group} = Gtk2::ActionGroup->new('Menu');
$Menu{action_group}->add_actions( $Menu{actions} );
# UIManager erzeugen
$Menu{manager} = Gtk2::UIManager->new();
# Actions dem UIManager uebergeben
$Menu{manager}->insert_action_group( $Menu{action_group}, 0 );
# Mit UIManager Men_ aus Menu{string} erzeugen
$Menu{manager}->add_ui_from_string( $Menu{string} );
# Accelerators (automatisch erzeugt) abfragen und dem Toplevel-Window zuweisen
$Menu{accel_group} = $Menu{manager}->get_accel_group();
$Top{window}->add_accel_group( $Menu{accel_group} );
# Menu der Top-VBox zuweisen
$Top{vbox}->pack_start( $Menu{manager}->get_widget('/Menu'), 0, 0, 0 );
$Top{window}->show_all;
Gtk2->main;
###
sub loadDir {
print "Entering sub loadDir...\n";
my $dlg = Gtk2::FileChooserDialog->new(
'Select directory', undef,
'select-folder',
'gtk-cancel' => 'cancel',
'gtk-open' => 'ok'
);
my $response = $dlg->run();
if ( $response ne 'ok' ) {
print "You aborted.\n";
}
else {
print 'You selected: >' . $dlg->get_filename . "<\n";
}
$dlg->destroy();
print "Leaving sub loadDir...\n";
}