home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / lang / skel_azt.sha / editmenu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1986-07-08  |  1.6 KB  |  82 lines

  1.  
  2. /*
  3.  *    editmenu.c -- handle selection of an item in the edit menu
  4.  */
  5.  
  6. #include <quickdraw.h>
  7. #include <desk.h>
  8. #include <osutil.h>
  9. #include <scrap.h>
  10. #include <textedit.h>
  11. #include <window.h>
  12.  
  13. #include "def.h"
  14.  
  15. void
  16. editmenu(item)
  17. {
  18.     extern    TEHandle    hTE;
  19.     extern    short        lastTE;        /* previous TE command for UNDO */
  20.     extern    long        lastTEstart;
  21.     extern    long        lastTEend;
  22.     short                myscr;
  23.     extern    short        scrap;        /* count of desk top scrap */
  24.     extern void            teadjdest();
  25.     extern    WindowPtr    wp[NWINDOWS];
  26.  
  27.     myscr = scrap;
  28.     if (SystemEdit(item - 1)) {
  29.         if (scrap != myscr)
  30.             lastTE = 0;
  31.         return;
  32.     };
  33.     if (wp[1] == FrontWindow() && hTE) {
  34.         switch(item - 1) {
  35.             case undoCmd:
  36.                 switch(lastTE) {
  37.                     case cutCmd:
  38.                         TESetSelect(lastTEstart, lastTEstart, hTE);
  39.                         TEPaste(hTE);
  40.                         TESetSelect(lastTEstart, lastTEend, hTE);
  41.                         lastTE = pasteCmd;
  42.                         break;
  43.                     case pasteCmd:
  44.                         TESetSelect(lastTEstart, lastTEend, hTE);
  45.                         TECut(hTE);
  46.                         lastTE = cutCmd;
  47.                         break;
  48.                     default:
  49.                         SysBeep(1);
  50.                         break;
  51.                 };
  52.                 break;
  53.             case cutCmd:
  54.                 lastTEstart = (*hTE)->selStart;
  55.                 lastTEend = (*hTE)->selEnd;
  56.                 TECut(hTE);
  57.                 ZeroScrap();
  58.                 TEToScrap();
  59.                 scrap = InfoScrap()->scrapCount;
  60.                 break;
  61.             case copyCmd:
  62.                 TECopy(hTE);
  63.                 ZeroScrap();
  64.                 TEToScrap();
  65.                 scrap = InfoScrap()->scrapCount;
  66.                 break;
  67.             case pasteCmd:
  68.                 lastTEstart = (*hTE)->selStart;
  69.                 lastTEend = lastTEstart + TEGetScrpLen();
  70.                 TEPaste(hTE);
  71.                 break;
  72.             case clearCmd:
  73.                 TEDelete(hTE);
  74.                 break;
  75.         };
  76.         if ((item - 1) != undoCmd)
  77.             lastTE = item - 1;
  78.         if ((item - 1) != copyCmd)
  79.             teadjdest();
  80.     };
  81. } /* end of editmenu */
  82.