home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Go Sit In The Corner 1.0 / source / cdev code / cdev.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-30  |  4.5 KB  |  150 lines  |  [TEXT/KAHL]

  1. /**********************************************************************\
  2.  
  3. File:        cdev.c
  4.  
  5. Purpose:    This module handles the actual cdev; check the switch-case
  6.             statement in main(...) for all the messages it does and
  7.             doesn't handle.
  8.             
  9.  
  10. Go Sit In The Corner -=- not you, just the cursor
  11. Copyright ©1994, Mark Pilgrim
  12.  
  13. This program is free software; you can redistribute it and/or modify
  14. it under the terms of the GNU General Public License as published by
  15. the Free Software Foundation; either version 2 of the License, or
  16. (at your option) any later version.
  17.  
  18. This program is distributed in the hope that it will be useful,
  19. but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21. GNU General Public License for more details.
  22.  
  23. You should have received a copy of the GNU General Public License
  24. along with this program in a file named "GNU General Public License".
  25. If not, write to the Free Software Foundation, 675 Mass Ave,
  26. Cambridge, MA 02139, USA.
  27.  
  28. \**********************************************************************/
  29.  
  30. #include "cdev globals.h"
  31. #include "cdev prefs.h"
  32. #include "cdev.h"
  33. #include "cdev meat.h"
  34. #include "cdev gui.h"
  35. #include "cdev error.h"
  36. #include "Retrace.h"
  37.  
  38. pascal long main(int message, int item, int numItems, int CPanelID,
  39.     EventRecord *theEvent, PrefHandle cdevStorage, DialogPtr theDlog)
  40. {
  41.     int                resultCode;
  42.     
  43.     if (message==macDev)
  44.         return 1L;                                            /* we work on every machine */
  45.     else if (cdevStorage!=0L)
  46.     {
  47.         switch (message) 
  48.         {
  49.             case initDev:                                    /* initialize cdev */
  50.                 cdevStorage=NewHandle(sizeof(PrefStruct));    /* create private storage */
  51.                 if (cdevStorage==0L)
  52.                     return 0L;
  53.  
  54.                 resultCode=PreferencesInit(cdevStorage);
  55.                 if ((resultCode!=prefs_allsWell) && (resultCode!=prefs_virginErr))
  56.                 {
  57.                     HandleError(resultCode);
  58.                     return cdevGenErr;
  59.                 }
  60.                 
  61.                 RemoveTheVBL(cdevStorage);
  62.                 
  63.                 CheckOnOff(theDlog, numItems, (**cdevStorage).isOn);
  64.                 CheckShowIcon(theDlog, numItems, (**cdevStorage).showIcon);
  65.                 CheckTime(theDlog, numItems, (**cdevStorage).numTicks);
  66.                 CheckCorner(theDlog, numItems, (**cdevStorage).whichCorner);
  67.                 CheckAlways(theDlog, numItems, (**cdevStorage).always);
  68.                 break;
  69.             case hitDev:                                    /* handle hit on item */
  70.                 switch (item-numItems)
  71.                 {
  72.                     case kButtonOn:
  73.                     case kTitleOn:
  74.                         (**cdevStorage).isOn=0xFF;
  75.                         CheckOnOff(theDlog, numItems, TRUE);
  76.                         break;
  77.                     case kButtonOff:
  78.                     case kTitleOff:
  79.                         (**cdevStorage).isOn=0x00;
  80.                         CheckOnOff(theDlog, numItems, FALSE);
  81.                         break;
  82.                     case kButtonShowIcon:
  83.                     case kTitleShowIcon:
  84.                         (**cdevStorage).showIcon=!((**cdevStorage).showIcon);
  85.                         CheckShowIcon(theDlog, numItems, (**cdevStorage).showIcon);
  86.                         break;
  87.                     case kButtonAlways:
  88.                     case kTitleAlways:
  89.                         (**cdevStorage).always=0xFF;
  90.                         CheckAlways(theDlog, numItems, TRUE);
  91.                         break;
  92.                     case kButtonOnlyIf:
  93.                     case kTitleOnlyIf:
  94.                         (**cdevStorage).always=0x00;
  95.                         CheckAlways(theDlog, numItems, FALSE);
  96.                         break;
  97.                     case kButtonTopLeft:
  98.                     case kButtonTopRight:
  99.                     case kButtonBottomRight:
  100.                     case kButtonBottomLeft:
  101.                         (**cdevStorage).whichCorner=item-numItems-kButtonTopLeft;
  102.                         CheckCorner(theDlog, numItems, (**cdevStorage).whichCorner);
  103.                         break;
  104.                 }
  105.                 if ((item-numItems>=kTitleFirstTime) && (item-numItems<=kTitleLastTime))
  106.                     item-=5;
  107.                 if ((item-numItems>=kButtonFirstTime) && (item-numItems<=kButtonLastTime))
  108.                 {
  109.                     switch (item-numItems-kButtonFirstTime)
  110.                     {
  111.                         case 0:    (**cdevStorage).numTicks=900;    break;
  112.                         case 1:    (**cdevStorage).numTicks=1800;    break;
  113.                         case 2:    (**cdevStorage).numTicks=3600;    break;
  114.                         case 3:    (**cdevStorage).numTicks=7200;    break;
  115.                         case 4:    (**cdevStorage).numTicks=18000;    break;
  116.                     }
  117.                     CheckTime(theDlog, numItems, (**cdevStorage).numTicks);
  118.                 }
  119.                 break;
  120.             case closeDev:                                    /* clean up and dispose */
  121.                 if ((**cdevStorage).isOn)
  122.                 {
  123.                     resultCode=InstallTheVBL(cdevStorage);
  124.                     if (resultCode!=allsWell)
  125.                     {
  126.                         HandleError(resultCode);
  127.                         return cdevGenErr;
  128.                     }
  129.                 }
  130.                 SaveThePrefs(cdevStorage);
  131.                 break;
  132.             case nulDev:
  133.             case updateDev:                                    /* handle any update drawing */
  134.             case activDev:                                    /* activate any needed items */
  135.             case deactivDev:                                /* deactivate any needed items */
  136.             case keyEvtDev:                                    /* respond to keydown */
  137.             case undoDev:
  138.             case cutDev:
  139.             case copyDev:
  140.             case pasteDev:
  141.             case clearDev:
  142.                 break;
  143.         }
  144.  
  145.         return (long)cdevStorage;
  146.     }
  147.     
  148.     return 0L;
  149. }
  150.