use strict;
package MyApp;
use Wx;
use base qw( Wx::App );

sub OnInit {
    my $self = shift;
    
    my $mwin = MyFrame->new();
    $self->SetTopWindow($mwin);
    $mwin->Show(1);
    return 1;
}


package MyFrame;
use Wx qw( :id :misc wxACCEL_CTRL );
use Wx::Event qw( EVT_MENU );
use base qw( Wx::Frame );


sub new {
    my $class = shift;
    my $self = $class->SUPER::new( 
        undef, 
        wxID_ANY, 
        'Test App',
        wxDefaultPosition,
        wxDefaultSize
        );
    
    
    $self->{menu} = Wx::Menu->new();
    my $id1 = $self->{menu}->Append(wxID_ANY, "First &Task\t Strg + T")->GetId();
    my $id2 = $self->{menu}->Append(wxID_ANY, "Some &Other Task\t Strg + O")->GetId();
    my $menubar = Wx::MenuBar->new();
    $menubar->Append($self->{menu}, '&File');
    $self->SetMenuBar($menubar);
    
    
    $self->SetAcceleratorTable(
        Wx::AcceleratorTable->new( 
            [wxACCEL_CTRL, 84, $id1],
            [wxACCEL_CTRL, 79, $id2],
         )
         );
    
    
    EVT_MENU($self, $id1, \&on_event_task);
    EVT_MENU($self, $id2, \&on_event_task);
    
    $self->Centre;
    return $self;
}

sub on_event_task {
    my($self, $event) = @_;
    my $labeltext = $self->{menu}->GetLabelText($event->GetId);
    Wx::LogMessage('Event "%s"', $labeltext);
}


package main;

my $app = MyApp->new();
$app->MainLoop;

1;


    

