Hello,

I tried several ways to disable MacPerl's menus at runtime
which were already discussed in this list.

With the following script I'm partially successful.
File|New and File|Open is disabled. I cannot deactivate
Print and Save.
Edit is disabled completely. The "MacPerl" Window menu item
is enabled. I guess I could look into the MacPerl source but
have no time at the moment.

Any thoughts appreciated,
Axel.


#!perl -w
use strict;

use Mac::Menus;
use Mac::Events;

my $macperl_menus = {
  # Apple
  # 128
  # File
  #  1 - New
  #  2 - Open
  # 12 - Stop Script
  129 => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
  # Edit
  130 => [ 0 ],
  # Window
  131 => [ 0 ],
  # Script
  132 => [ 0 ],
  # Editor
  133 => [ 0 ],
};

print "disabling ...\n";
for my $m ( keys %$macperl_menus ) {
  my $menu = GetMenuHandle $m;
  if( $menu ) { 
    if( $macperl_menus->{$m}->[0] == 0 ) {
      DisableItem $menu; DisableItem $menu, 0;
    }
    else {
      for my $i ( @{$macperl_menus->{$m}} ) {
        DisableItem $menu, $i;
      }
    }
  }
}
DrawMenuBar;

pause( 10 );

print "enabling ...\n";

for my $m ( keys %$macperl_menus ) {
  my $menu = GetMenuHandle $m;
  if( $menu ) { 
    if( $macperl_menus->{$m}->[0] == 0 ) {
      EnableItem $menu; EnableItem $menu, 0
    }
    else {
      for my $i ( @{$macperl_menus->{$m}} ) {
        EnableItem $menu, $i;
      }
    }
  }
}
DrawMenuBar;

print "done.\n";

exit;

sub pause {
  my ($time) = @_;
  my $start = time;
  WaitNextEvent until time > ($start + $time);
}

__END__

Reply via email to