Cut,Copy,Paste menus

Ron rbarber at yhb.att.ne.jp
Sat Feb 1 03:52:01 CST 2003


Hi Jan
Thanks for the suggestion. I've included the handlers as they were in my
stacks. As you can see, the menuitems only get changed when the menubar is
clicked in. I'll look into locating some of the script in the
selectionchanged message. What do you think?

>> Where should scripts that control the
>> enabling/disabling of menuitems be
>> placed? Obviously, the menu's mousedown message is
>> not the place because it
>> is not activated until I click in the menubar.
>> 
>> All I'm trying to do is provide standard text editor
>> behavior to the stack.
>> Things including but not exclusively:
>> 
>> cursor in a fld - enable past
>> selectedtext - enable cut,copy

> 
> You could add openField and selectionChanged handlers
> to your mainStack script to this effect.
> You'll probably also want to trap the rawKeyDown
> message because no selectionChanged is sent when you
> use the arrowkeys.

This is what I had in my openfield handler:
on openfield
  enable menu 2 --the edit menu
  if the clipboard is "text" then enable menuitem 4 of menu 2 --paste
  else disable menuitem 4 of menu 2
  put word 2 of the selectedfield into thefld
  if therefld is not "" then put fld thefld of the topstack into thetext
  if thetext is not "" then  --check if text is in the fld
    enable menuitem 6 of menu 2 --sel all
    enable menuitem 8 of menu 2 --find
    enable menuitem 8 of menu 1 --export text
    enable menuitem 11 of menu 1 --print text
  end if
  enable menu 4 --format menu
  pass openfield
end openfield

In my menu's mousedown handler I had the following:
-----set up menuitems---------
  put word 2 of the selectedfield into thefld
  if thefld is not "" then  -----The cursor is in a fld--------
    if the clipboard is "text" then enable menuitem 4 of menu 2 --paste
    else disable menuitem 4 of menu 2
    put fld thefld of the topstack into thetext
    put the hold of fld thefld of the topstack into thehold
  end if
  if thetext is not "" then   -------There is some text in the fld-------
    enable menuitem 6 of menu 2 --sel all
    enable menuitem 8 of menu 2 --find
    enable menuitem 8 of menu 1 --export text
    enable menuitem 11 of menu 1 --print text
  else
    disable menuitem 6 of menu 2
    disable menuitem 8 of menu 2
    disable menuitem 8 of menu 1
    disable menuitem 11 of menu 1
  end if
  if thehold <> thetext then
    enable menuitem 6 of menu 1
  else
    disable menuitem 6 of menu 1
  end if

  if the selectedtext is not "" then  -----There is some selected
text--------
    enable menuitem 1 of menu 2 --cut
    enable menuitem 2 of menu 2 --copy
  else
    disable menuitem 1 of menu 2
    disable menuitem 2 of menu 2
  end if




More information about the use-livecode mailing list