/* an edit menu handler for TextEdit */ short NATEmenup(na_win *winp, WORD menuid, WORD itemno) { MenuHandle mh = NAmenuh(mEdit); TEHandle hTE = teinfo->hTE; TEPtr pte; short status = NA_NOTPROCESSED; switch (menuid) { case 0: pte = *hTE; if (pte->selStart != pte->selEnd) { EnableItem(mh, iCopy); if (!(winp->flags & NATE_READONLY)) { EnableItem(mh, iCut); EnableItem(mh, iClear); } } else { DisableItem(mh, iCopy); if (!(winp->flags & NATE_READONLY)) { DisableItem(mh, iCut); DisableItem(mh, iClear); } } EnableItem(mh, iSelAll); if (!(winp->flags & NATE_READONLY)) { EnableItem(mh, iPaste); } break; case mEdit: switch (itemno) { case iCut: TECut(hTE); goto DOSCRAP; case iCopy: TECopy(hTE); DOSCRAP: ZeroScrap(); TEToScrap(); goto EDITDONE; case iPaste: TEFromScrap(); TEPaste(hTE); goto EDITDONE; case iClear: TEDelete(hTE); goto EDITDONE; case iSelAll: TESetSelect(0, 32767, hTE); TESelView(hTE); EDITDONE: status = NA_PROCESSED; NATEsetscroll(winp, false, (Rect*) NULL, (Rect*) NULL); break; } default: DisableItem(mh, iSelAll); break; } return (status); }
void JXTextMenuData::InsertMenuItems ( const JIndex startIndex, const JCharacter* menuStr, const JCharacter* idNamespace ) { JStringManager* strMgr = JGetStringManager(); JSize currIndex = startIndex; JString str = menuStr; JBoolean done = kJFalse; JString itemText, shortcuts, nmShortcut, id, strID, id1; while (!done) { JIndex sepIndex; const JBoolean found = str.LocateSubstring("|", &sepIndex); if (found) { assert( sepIndex > 1 ); itemText = str.GetSubstring(1, sepIndex-1); str.RemoveSubstring(1, sepIndex); } else { itemText = str; done = kJTrue; } JBoolean isActive, hasSeparator, isCheckbox, isRadio; ParseMenuItemStr(&itemText, &isActive, &hasSeparator, &isCheckbox, &isRadio, &shortcuts, &nmShortcut, &id); if (!JStringEmpty(idNamespace) && !id.IsEmpty()) { strID = id; strID += "::"; strID += idNamespace; JString* itemText1; if (strMgr->GetElement(strID, &itemText1) && itemText1 != NULL) { itemText = *itemText1; JBoolean isActive1, hasSeparator1, isCheckbox1, isRadio1; ParseMenuItemStr(&itemText, &isActive1, &hasSeparator1, &isCheckbox1, &isRadio1, &shortcuts, &nmShortcut, &id1); } } InsertItem(currIndex, itemText, isCheckbox, isRadio, shortcuts, nmShortcut, id); if (!isActive) { DisableItem(currIndex); } if (hasSeparator) { ShowSeparatorAfter(currIndex); } currIndex++; } }