Here's a couple of handlers that let you call them by the text of the
menuitem.  They may not be industrial strength but work OK for my
purposes

on EnableMenuItem tMenu tMenuItem
  --enable menu items and submenu items 1 deep (use | as submenu separator)
  if tMenuItem is empty then
     repeat with x = 1 to the number of lines in btn tMenu
        enable menuitem x of btn tMenu
     end repeat
  else
     --preprocess to remove shortcuts ,"&" and "(" data:
     put empty into tlines
     repeat for each line tlinetxt in btn tMenu
        put tlinetxt into tline  --avoid modifying repeat handle
        replace "&" with empty in tline
        replace "(" with empty in tline
        get offset ("/",tline)
        if it <> 0 then delete char it to -1 of tline
        put tline & return after tlines
     end repeat
     delete char -1 of tlines
     set the itemdel to "|"
     set the wholematches to true
     put lineoffset (item 1 of tMenuItem,tlines) into tlineNo
     enable menuitem tlineNo of btn tMenu
     --enable submenu item
     put item 2 of tMenuItem into tMenuItem
     add 1 to tlineNo
     put line tlineNo of btn tMenu into tline
     set the itemdel to tab
     repeat until item 2 of tline is empty
        if item 2 of tline = tMenuItem or tMenuItem is empty then
enable menuitem tlineNo of btn tMenu
        add 1 to tlineNo
        put line tlineNo of btn tMenu into tline
     end repeat
  end if
end EnableMenuItem

on disableMenuItem tMenu tMenuItem
   --disable menuitem and submenu items one deep (separated by |)
   if tMenuItem is empty then
       repeat with x = 1 to the number of lines in btn tMenu
           disable menuitem x of btn tMenu
       end repeat
   else
       --preprocess to remove shortcuts, "&" and "(" data:
       put empty into tlines
       repeat for each line tlinedata in btn tMenu
           put tlinedata into tline  --avoid modifying repeat variable
           get offset("/",tline)
           if it <> 0 then delete char it to -1 of tline  --remove
keyboard shortcut
           replace "&" with empty in tline
           replace "(" with empty in tline
           replace "/" with empty in tline
           put tline & return after tlines
       end repeat
       delete char -1 of tlines
       set the itemdel to "|"
       set the wholematches to true
       put lineoffset (item 1 of tMenuItem,tlines) into tMainlineNo
       put item 2 of tMenuItem into tMenuItem
       put 1 + tMainlineNo into tlineNo
       put line tlineNo of btn tMenu into tline
       set the itemdel to tab
       put true into DisableMainItem
       repeat until item 2 of tline is empty
           if item 2 of tline = tMenuItem or tMenuItem is empty then
disable menuitem tlineNo of btn tMenu else \
                   put false into DisablemainItem
           add 1 to tlineNo
           put line tlineNo of btn tMenu into tline
       end repeat
       if DisableMainItem then disable menuitem tMainlineNo of btn tMenu
   end if
end disableMenuItem

regards
Martin
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to