Is it possible to define a -onClick event for a menu instead of creating an
Menu_Click function?

   "&File"              =>   "File",
">&New" => { -name => "New", -onClick => sub {handle_menu(@_, 1)} }, ">&Open..." => { -name => "Open", -onClick => sub {handle_menu(@_, 2)} }, ">&Save" => { -name => "Save", -onClick => sub {handle_menu(@_, 3)} }, ">Save &As ..." => { -name => "SaveAs", -onClick => sub {handle_menu(@_, 4)} },
   ">-"                  =>  0,
   ">Print Set&up ..."   =>  { -name => "PrintSetup", -enabled => 0 },
   ">&Print"             =>  { -name => "Print",      -enabled => 0 },
   ">-"                  =>  0,
">E&xit" => { -name => "Exit", -onClick => sub {-1;} },
   "&Edit"              =>   "Edit",
">&Undo" => { -name => "Undo", -onClick => sub {handle_menu(@_, 6)} },
   ">-"                  =>  0,
">Cu&t" => { -name => "Cut", -onClick => sub {handle_menu(@_, 7)} }, ">&Copy" => { -name => "Copy", -onClick => sub {handle_menu(@_, 8)} }, ">&Paste" => { -name => "Paste", -onClick => sub {handle_menu(@_, 9)} }, ">&Delete" => { -name => "Delete", -onClick => sub {handle_menu(@_, 10)} },
   ">-"                  =>  0,
">&Select All" => { -name => "SelectAll", -onClick => sub {handle_menu(@_, 11)} },
   ">-"                  =>  0,
">Choose &Font..." => { -name => "ChooseFont", -onClick => sub {handle_menu(@_, 12)} },
   "&Search"            =>   "Search",
">&Find..." => { -name => "Find", -onClick => sub {handle_menu(@_, 13)} }, ">Find &Next" => { -name => "FindNext", -onClick => sub {handle_menu(@_, 14)} },
   "&Help"              =>   "Help",
   ">&Contents"          =>  { -name => "Contents",   -enabled => 0  },
   ">On the &Web"        =>  "Web",
">>Home&page" => { -name => "Homepage", -onClick => sub {handle_menu(@_, 15)} }, ">>&Support" => { -name => "Support", -onClick => sub {handle_menu(@_, 16)} },
   ">-"                  =>  0,
">&About" => { -name => "About", -onClick => sub {handle_menu(@_, 17)} },


sub handle_menu
{
 my $self = shift;  # always the main window object
 my $num = shift;   # num, as defined in callback in menu definition

 print "Menu clicked, passed number $num\n";

 return 1;
}



Reply via email to