home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Tools - Objects / MacApp / MacApp 3.0a2 / Libraries / UEvent.cp < prev    next >
Encoding:
Text File  |  1991-05-01  |  8.6 KB  |  367 lines  |  [TEXT/MPS ]

  1. // UEvent.cp
  2. // Copyright © 1984-1991 by Apple Computer Inc.    All rights reserved.
  3.  
  4. #ifndef __UEVENT__
  5. #include <UEvent.h>
  6. #endif
  7.  
  8. #ifndef __STDIO__
  9. #include <StdIo.h>
  10. #endif
  11.  
  12. #ifndef __RESOURCES__
  13. #include <Resources.h>
  14. #endif
  15.  
  16. #ifndef __TOOLUTILS__
  17. #include <ToolUtils.h>
  18. #endif
  19.  
  20. #ifndef __EPPC__
  21. #include <EPPC.h>
  22. #endif
  23.  
  24. #ifndef __WINDOWS__
  25. #include <Windows.h>
  26. #endif
  27.  
  28. #ifndef __UEVTHANDLER__
  29. #include <UEvtHandler.h>
  30. #endif
  31.  
  32. #ifndef __UMACAPPUTILITIES__
  33. #include <UMacAppUtilities.h>
  34. #endif
  35.  
  36. #ifndef __UAPPLICATION__
  37. #include <UApplication.h>
  38. #endif
  39.  
  40.  
  41. //--------------------------------------------------------------------------------------------------
  42. #pragma segment MAEvtHandlerRes
  43. pascal void TEvent::Initialize(void)            // override 
  44. {
  45.     inherited::Initialize();
  46.     fID = cNoEvent;
  47.     fSource = NULL;
  48.     fHandler = NULL;
  49.     fAffectsMenus = FALSE;
  50.     fPriority = kPriorityNormal;                // Don't worry, be happy! 
  51. }
  52.  
  53. //--------------------------------------------------------------------------------------------------
  54. #pragma segment MAEvtHandlerRes
  55. pascal void TEvent::IEvent(EvtNumber itsEventNumber,
  56.                            TEvtHandler* itsSource,
  57.                            TEvtHandler* itsHandler)
  58. {
  59.     this->IObject();
  60.     fID = itsEventNumber;
  61.     fSource = itsSource;
  62.     fHandler = itsHandler;
  63. }
  64.  
  65. //--------------------------------------------------------------------------------------------------
  66. #pragma segment MAEvtHandlerRes
  67. pascal TEvtHandler* TEvent::GetHandler(void)
  68. {
  69.     if (fHandler)
  70.         return fHandler;
  71.     else
  72.         return gApplication;
  73. }
  74.  
  75. //--------------------------------------------------------------------------------------------------
  76. #pragma segment MAEvtHandlerRes
  77. pascal Boolean TEvent::ShouldFreeOnCompletion(void)
  78. {
  79.     return TRUE;
  80. }
  81.  
  82. //--------------------------------------------------------------------------------------------------
  83. #pragma segment MAEvtHandlerRes
  84. pascal Boolean TEvent::IsReadyToExecute(void)
  85. {
  86.     return TRUE;
  87. }
  88.  
  89. //--------------------------------------------------------------------------------------------------
  90. #pragma segment MAEvtHandlerRes
  91. pascal Boolean TEvent::IsRecurring(void)
  92. {
  93.     return FALSE;
  94. }
  95.  
  96. //--------------------------------------------------------------------------------------------------
  97. #pragma segment MAEvtHandlerRes
  98.  
  99. pascal void TEvent::Process(void)    
  100.  
  101. {
  102.     TEvtHandler* handler = this->GetHandler();
  103.     
  104.     if (handler)
  105.         handler->HandleEvent(fID,fSource,this);
  106. }
  107.  
  108. //--------------------------------------------------------------------------------------------------
  109. #pragma segment MADebug
  110.  
  111. pascal void TEvent::ReportEvent(void)
  112. {
  113. }
  114.  
  115. //--------------------------------------------------------------------------------------------------
  116. #pragma segment MAFields
  117.  
  118. pascal void TEvent::Fields(TObject* obj)        // override 
  119.  
  120. {
  121.     obj->DoToField("TEvent", NULL, bClass);
  122.     obj->DoToField("fID", &fID, bCmdNumber);
  123.     obj->DoToField("fSource", &fSource, bObject);
  124.     obj->DoToField("fAffectsMenus", &fAffectsMenus, bBoolean);
  125.     obj->DoToField("fPriority", &fPriority, bByte);
  126.  
  127.     inherited::Fields(obj);
  128. }
  129.  
  130. //--------------------------------------------------------------------------------------------------
  131. #pragma segment MAEvtHandlerRes
  132.  
  133. pascal void TToolboxEvent::IToolboxEvent(TEvtHandler* itsHandler)
  134.  
  135. {
  136.     this->IEvent(cNoCommand, NULL, itsHandler);
  137. }
  138.  
  139. //--------------------------------------------------------------------------------------------------
  140. #pragma segment MAEvtHandlerRes
  141.  
  142. pascal void TToolboxEvent::HaveEvent(const EventRecord& theEvent)
  143.  
  144. {
  145.     fID = (long) theEvent.what;
  146.     fEventRecord = theEvent;
  147.  
  148.     fBtnState = ((theEvent.modifiers) & btnState) != 0;
  149.     fCmdKey = ((theEvent.modifiers) & cmdKey) != 0;
  150.     fShiftKey = ((theEvent.modifiers) & shiftKey) != 0;
  151.     fAlphaLock = ((theEvent.modifiers) & alphaLock) != 0;
  152.     fOptionKey = ((theEvent.modifiers) & optionKey) != 0;
  153.     fControlKey = ((theEvent.modifiers) & controlKey) != 0;
  154.     fAutoKey = theEvent.what == autoKey;
  155.     fClickCount = fClickCount;
  156.     fCharacter = (char)(0);                        /* Default, we don't know if this is a
  157.                                                   keystroke yet */
  158.     fKeyCode = 0;                                /* Default, we don't know if this is a
  159.                                                   keystroke yet */
  160.     fAffectsMenus = TRUE;                        /* assume going in that this event affects
  161.                                                   the menus */
  162. }
  163.  
  164. //--------------------------------------------------------------------------------------------------
  165. #pragma segment MADebug
  166.  
  167. pascal void TToolboxEvent::ReportEvent(void)        // override 
  168. {
  169.     short ch;
  170.     short cap;
  171.     Str255 aString;
  172.     Str63 mods;                //Pascal: STRING[10];
  173.     WindowPtr aWMgrWindow;
  174.     Point localWhere;
  175.  
  176.     fprintf(stderr, "t = %d", fEventRecord.when);
  177.     mods = (Str255) " ---------";
  178.     //                 1234567890 
  179.  
  180.     if (fControlKey)
  181.         mods[2] = 'C';
  182.     if (fOptionKey)
  183.         mods[3] = 'O';
  184.     if (fAlphaLock)
  185.         mods[4] = 'L';
  186.     if (fShiftKey)
  187.         mods[5] = 'S';
  188.     if (fCmdKey)
  189.         mods[6] = 'C';
  190.     if (fBtnState)
  191.         mods[7] = 'M';
  192.     if (fEventRecord.what == activateEvt)
  193.         if (((fEventRecord.modifiers) & activeFlag) != 0)
  194.             mods[8] = 'A';
  195.         else
  196.             mods[8] = 'D';
  197.     fprintf(stderr, "%s", (char *) mods);
  198.  
  199.     switch (fEventRecord.what)
  200.     {
  201.         case nullEvent:
  202.             fprintf(stderr, "nullEvent\n");
  203.             break;
  204.         case mouseDown:
  205.         case mouseUp:
  206.             if (fEventRecord.what == mouseDown)
  207.                 fprintf(stderr, "mouseDown   ");
  208.             else
  209.                 fprintf(stderr, "mouseUp     ");
  210.             localWhere = fEventRecord.where;
  211.             fprintf(stderr, "%s", (char *) &localWhere);        // ??? why %s
  212.             switch (FindWindow(fEventRecord.where, aWMgrWindow))
  213.             {
  214.                 case inMenuBar:
  215.                     aString = "inMenuBar";
  216.                     break;
  217.                     
  218.                 case inSysWindow:
  219.                     aString = "inSysWindow";
  220.                     break;
  221.                     
  222.                 case inDrag:
  223.                     aString = "inDrag";
  224.                     break;
  225.                     
  226.                 case inGrow:
  227.                     aString = "inGrow";
  228.                     break;
  229.                     
  230.                 case inGoAway:
  231.                     aString = "inGoAway";
  232.                     break;
  233.                     
  234.                 case inContent:
  235.                     aString = "inContent";
  236.                     break;
  237.                     
  238.                 case inZoomIn:
  239.                     aString = "inZoomIn";
  240.                     break;
  241.                     
  242.                 case inZoomOut:
  243.                     aString = "inZoomOut";
  244.                     break;
  245.                     
  246.                 default:
  247.                     aString = "Mouse clicked in an unknown place.";
  248.                     break;
  249.             }
  250.  
  251.             fprintf(stderr, "%5s\n", (char *) aString);
  252.             break;
  253.         case keyDown:
  254.         case autoKey:
  255.         case keyUp:
  256.             if (fEventRecord.what == keyDown)
  257.                 fprintf(stderr, "keyDown     ");
  258.             else if (fEventRecord.what == autoKey)
  259.                 fprintf(stderr, "autoKey     ");
  260.             else
  261.                 fprintf(stderr, "keyUp       ");
  262.  
  263.             ch = (short)(fEventRecord.message & charCodeMask);
  264.             cap = (short)(fEventRecord.message >> 8);
  265.  
  266.             if ((ch >= 0x20) && (ch <= 0xD8) && (ch != 0x7F))
  267.                 fprintf(stderr, "\"%c\"");
  268.             else
  269.                 fprintf(stderr, "   ");
  270.  
  271.             fprintf(stderr, "( %1d / %1d )\n", ch, cap);
  272.             break;
  273.  
  274.         case updateEvt:
  275.         case activateEvt:
  276.             if (fEventRecord.what == updateEvt)
  277.                 fprintf(stderr, "updateEvt   ");
  278.             else
  279.                 fprintf(stderr, "activateEvt ");
  280.  
  281.             aString = **( (Str255**) ((WindowPeek)(fEventRecord.message))->titleHandle);
  282.             fprintf(stderr, "\"%s\"\n", (char *) aString);
  283.             break;
  284.  
  285.         case diskEvt:
  286.             fprintf(stderr, "diskEvt     d = %1d e = %1d \n", LoWord(fEventRecord.message), HiWord(fEventRecord.message));
  287.             break;
  288.  
  289.         case networkEvt:
  290.             fprintf(stderr, "networkEvt  ");
  291.             WritePtr(fEventRecord.message);
  292.             fprintf(stderr, "\n");
  293.             break;
  294.  
  295.         case driverEvt:
  296.             WrLblHexLongint("driverEvt   , message", fEventRecord.message);
  297.             fprintf(stderr, "\n");
  298.             break;
  299.             
  300.         case app1Evt:
  301.             WrLblHexLongint("app1Evt     , message", fEventRecord.message);
  302.             fprintf(stderr, "\n");
  303.             break;
  304.             
  305.         case app2Evt:
  306.             WrLblHexLongint("app2Evt     , message", fEventRecord.message);
  307.             fprintf(stderr, "\n");
  308.             break;
  309.             
  310.         case app3Evt:
  311.             WrLblHexLongint("app3Evt     , message", fEventRecord.message);
  312.             fprintf(stderr, "\n");
  313.             break;
  314.             
  315.         case osEvt:
  316.             switch ((((fEventRecord.message) >> osEvtMessageMask)) & 24)
  317.             {
  318.                 case suspendResumeMessage:
  319.                     if (fEventRecord.message & 1)    //!!!Pascal: (Odd(fEventRecord.message))
  320.                         fprintf(stderr, "resume      ");
  321.                     else
  322.                         fprintf(stderr, "suspend     ");
  323.                     break;
  324.                     
  325.                 case mouseMovedMessage:
  326.                 {
  327.                     fprintf(stderr, "mouse moved ");
  328.                     localWhere = fEventRecord.where;
  329.                     fprintf(stderr, "%s", (char *) &localWhere);    // ??? why %s
  330.                     break;
  331.                 }
  332.                     
  333.                 default:
  334.                     fprintf(stderr, "osEvt     ");
  335.                     break;
  336.             }
  337.             WrLblHexLongint(", message", fEventRecord.message);
  338.             fprintf(stderr, "\n");
  339.             break;
  340.             
  341.         case kHighLevelEvent:
  342.             WrLblHexLongint("kHighLevelEvent     , message", fEventRecord.message);
  343.             fprintf(stderr, "\n");
  344.             break;
  345.             
  346.         default:
  347.             fprintf(stderr, "??? unknown = %1d   ", fEventRecord.what);
  348.             WriteHexLongint(fEventRecord.message);
  349.             break;
  350.     }
  351. }
  352.  
  353.  
  354. //--------------------------------------------------------------------------------------------------
  355. #pragma segment MAFields
  356.  
  357. pascal void TToolboxEvent::Fields(TObject* obj)    // override 
  358.  
  359. {
  360.  
  361.     obj->DoToField("TToolboxEvent", NULL, bClass);
  362.     inherited::Fields(obj);
  363.  
  364. }
  365.  
  366.  
  367.