home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / mac / source / luschsrc.sit / edit.c < prev    next >
Text File  |  1990-05-23  |  2KB  |  108 lines

  1. /********************************************************************************
  2.  *    edit.c
  3.  *
  4.  *    Edit Command Package
  5.  *
  6.  *    Written by Paco Xander Nathan
  7.  *    ⌐1990, Motorola Inc.  Public domain source code.
  8.  ********************************************************************************/
  9.  
  10. #include "applic.h"
  11. #include "window.h"
  12. #include "text.h"
  13. #include "edit.h"
  14.  
  15. #include "test.h"
  16.  
  17.  
  18. /* Handle a key press in a window
  19.  */
  20. void
  21. EditKeyStroke (theWindow, theChar)
  22.     register WindowPtr theWindow;
  23.     register char theChar;
  24. {
  25.     register InfoPtr infoPtr = (InfoPtr) GetWRefCon(theWindow);
  26.     GrafPtr    savePort;
  27.  
  28.     GetPort(&savePort);
  29.     SetPort(theWindow);
  30.  
  31.     TEKey(theChar, infoPtr->item.text.teHdl);
  32.     TextSelView(theWindow);
  33.     
  34.     if (!testUser)
  35.         infoPtr->dirty = TRUE;
  36.  
  37.     SetPort(savePort);
  38. }
  39.  
  40.  
  41. /* Do the selected item from the edit menu
  42.  */
  43. void
  44. EditMenu (theItem)
  45.     register short theItem;
  46. {
  47.     register WindowPtr theWindow = FrontWindow();
  48.     register InfoPtr infoPtr = (InfoPtr) GetWRefCon(theWindow);
  49.     register OSErr theError;
  50.     GrafPtr    savePort;
  51.  
  52.     GetPort(&savePort);
  53.     SetPort(theWindow);
  54.  
  55.     if (infoPtr->kind == wkText) {
  56.         register TEHandle teHdl = infoPtr->item.text.teHdl;
  57.     
  58.         /* Handle individual items
  59.          */
  60.         switch (theItem) {
  61.         case emUndo:
  62.             break;
  63.     
  64.         case emCut:
  65.             TECut(teHdl);
  66.             TextSelView(theWindow);
  67.             
  68.             if (!testUser)
  69.                 infoPtr->dirty = TRUE;
  70.             
  71.             if ((theError = ZeroScrap()) == noErr)
  72.                 TEToScrap();
  73.             break;
  74.     
  75.         case emCopy:
  76.             TECopy(teHdl);
  77.             
  78.             if ((theError = ZeroScrap()) == noErr)
  79.                 TEToScrap();
  80.  
  81.             break;
  82.     
  83.         case emPaste:
  84.             if ((theError = TEFromScrap()) == noErr) {
  85.                 TEPaste(teHdl);
  86.                 TextSelView(theWindow);
  87.                 
  88.                 if (!testUser)
  89.                     infoPtr->dirty = TRUE;
  90.             }
  91.             break;
  92.     
  93.         case emClear:
  94.             TEDelete(teHdl);
  95.             TextSelView(theWindow);
  96.             
  97.             if (!testUser)
  98.                 infoPtr->dirty = TRUE;
  99.  
  100.             break;
  101.     
  102.         default:
  103.             break;
  104.         }
  105.     }
  106.  
  107.     SetPort(savePort);
  108. }