home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / developm / source / cdevskel.cpt / CdevSkeleton2.0 ƒ / CCdev.p next >
Encoding:
Text File  |  1991-08-21  |  5.5 KB  |  248 lines

  1. {    CCdev.p}
  2. {    Copyright ⌐ 1991, Michael J. Conrad}
  3. {}
  4. {    An object which handles the basic cdev interface.}
  5. {    If you need to, override this object's methods. You}
  6. {    should never need to modify this object specifically.}
  7.  
  8. UNIT CCdev;
  9.  
  10. INTERFACE
  11.  
  12.     USES
  13.         CCdevIntf, DialogUtils;
  14.  
  15.     FUNCTION main (message: integer;            {Message to cdev}
  16.                                     item: integer;                                    {Which item was pressed?}
  17.                                     numItems: integer;                            {How manu items in Control Panel}
  18.                                     cpID: integer;                                    {Control Panel id}
  19.                                     event: EventRecord;                        {The event record for our event}
  20.                                     cdevValue: Longint;                        {Place to store globals, send messages}
  21.                                     dlg: DialogPtr): longint;            {Pointer to the CP's dialog}
  22.  
  23. IMPLEMENTATION
  24.  
  25.     CONST
  26.         undoDev = 9;            {For Undo menu commands}
  27.         cutDev = 10;            {For Cut menu commands}
  28.         copyDev = 11;            {For Copy menu commands}
  29.         pasteDev = 12;        {For Past menu commands}
  30.         clearDev = 13;        {For Clear menu commands}
  31.  
  32.     FUNCTION Runable: Boolean;
  33.     external;
  34.     FUNCTION NewCdev: CCdev;
  35.     external;
  36.  
  37. {------------------------------------------------------------------------------------------}
  38.  
  39.     PROCEDURE CCdev.Init;
  40.     BEGIN
  41.         status := longint(SELF);
  42.         InitDialogUtils;
  43.     END;
  44.  
  45. {------------------------------------------------------------------------------------------}
  46.  
  47.     PROCEDURE CCdev.Hit (item: integer);
  48.     BEGIN
  49.     END;
  50.  
  51. {------------------------------------------------------------------------------------------}
  52.  
  53.     PROCEDURE CCdev.Close;
  54.     BEGIN
  55.         DisposHandle(Handle(SELF));
  56.     END;
  57.  
  58. {------------------------------------------------------------------------------------------}
  59.  
  60.     PROCEDURE CCdev.UpDate;
  61.     BEGIN
  62.     END;
  63.  
  64. {------------------------------------------------------------------------------------------}
  65.  
  66.     PROCEDURE CCdev.Activate;
  67.     BEGIN
  68.     END;
  69.  
  70. {------------------------------------------------------------------------------------------}
  71.  
  72.     PROCEDURE CCdev.Deactivate;
  73.     BEGIN
  74.     END;
  75.  
  76. {------------------------------------------------------------------------------------------}
  77.  
  78.     PROCEDURE CCdev.Idle;
  79.     BEGIN
  80.     END;
  81.  
  82. {------------------------------------------------------------------------------------------}
  83.  
  84.     PROCEDURE CCdev.Key (theChar: char);
  85.     BEGIN
  86.     END;
  87.  
  88. {------------------------------------------------------------------------------------------}
  89.  
  90.     PROCEDURE CCdev.DoCmdKey (theChar: char);
  91.     BEGIN
  92.     END;
  93.  
  94. {------------------------------------------------------------------------------------------}
  95.  
  96.     FUNCTION CCdev.Message (msg, item: integer): longint;
  97.         VAR
  98.             result: longint;
  99.  
  100.     BEGIN
  101.         CASE msg OF
  102.             initDev: 
  103.                 Init;
  104.             hitDev: 
  105.                 Hit(item - lastItem);
  106.             closeDev: 
  107.                 status := 0;
  108.             nulDev: 
  109.                 Idle;
  110.             updateDev: 
  111.                 Update;
  112.             activDev: 
  113.                 Activate;
  114.             deactivDev: 
  115.                 Deactivate;
  116.             keyEvtDev: 
  117.                 BEGIN
  118.                     IF BitAnd(event.modifiers, cmdKey) <> 0 THEN
  119.                         Key(char(BitAnd(event.message, charCodeMask)))
  120.                     ELSE IF event.message <> autoKey THEN
  121.                         DoCmdKey(char(BitAnd(event.message, charCodeMask)));
  122.                 END;
  123.             undoDev: 
  124.                 Undo;
  125.             cutDev: 
  126.                 Cut;
  127.             copyDev: 
  128.                 Copy;
  129.             pasteDev: 
  130.                 Paste;
  131.             clearDev: 
  132.                 Clear;
  133.             OTHERWISE
  134.                 ;
  135.         END;
  136.  
  137.         result := status;
  138.         IF result <> longint(SELF) THEN
  139.             Close;
  140.         Message := result;
  141.     END;
  142.  
  143. {------------------------------------------------------------------------------------------}
  144.  
  145.     PROCEDURE CCdev.Undo;
  146.     BEGIN
  147.     END;
  148.  
  149. {------------------------------------------------------------------------------------------}
  150.  
  151.     PROCEDURE CCdev.Cut;
  152.     BEGIN
  153.     END;
  154.  
  155. {------------------------------------------------------------------------------------------}
  156.  
  157.     PROCEDURE CCdev.Copy;
  158.     BEGIN
  159.     END;
  160.  
  161. {------------------------------------------------------------------------------------------}
  162.  
  163.     PROCEDURE CCdev.Paste;
  164.     BEGIN
  165.     END;
  166.  
  167. {------------------------------------------------------------------------------------------}
  168.  
  169.     PROCEDURE CCdev.Clear;
  170.     BEGIN
  171.     END;
  172.  
  173. {------------------------------------------------------------------------------------------}
  174.  
  175.     PROCEDURE CCdev.PostCdevEvent (theEvent: EventRecord);
  176.     BEGIN
  177.         event := theEvent;
  178.     END;
  179.  
  180. {------------------------------------------------------------------------------------------}
  181.  
  182.     PROCEDURE CCdev.ICdev (d: DialogPtr;
  183.                                     rNum: integer;
  184.                                     resID: integer;
  185.                                     items: integer);
  186.     BEGIN
  187.         dp := d;
  188.         refNum := rNum;
  189.         rsrcID := resID;
  190.         lastItem := items;
  191.     END;
  192.  
  193. {------------------------------------------------------------------------------------------}
  194.  
  195.  {$S %_MethTables}
  196.  {$Push}
  197.  {$N-}
  198.     PROCEDURE LoadMethTables;
  199.     BEGIN
  200.  
  201.     END;
  202.  {$Pop}
  203.  {$S}
  204.  
  205. {------------------------------------------------------------------------------------------}
  206.  
  207.     FUNCTION main (message: integer;        {Message to cdev}
  208.                                     item: integer;                                {Which item was pressed?}
  209.                                     numItems: integer;                        {How manu items in Control Panel}
  210.                                     cpID: integer;                                {Control Panel id}
  211.                                     event: EventRecord;                    {The event record for our event}
  212.                                     cdevValue: Longint;                    {Place to store globals, send messages}
  213.                                     dlg: DialogPtr): longint;        {Pointer to the CP's dialog}
  214.  
  215.         VAR
  216.             result: longint;
  217.             cdevObject: CCdev;
  218.  
  219.     BEGIN
  220.         RememberA4;
  221.         SetUpA4;
  222.         LoadMethTables;
  223.  
  224.         IF message = macDev THEN
  225.             main := integer(Runable)
  226.         ELSE
  227.             BEGIN
  228.                 IF message = initDev THEN
  229.                     BEGIN
  230.                         cdevObject := NewCdev;
  231.                         cdevObject.ICdev(dlg, DialogPeek(dlg)^.window.windowKind, cpID, numItems);
  232.                     END
  233.                 ELSE
  234.                     cdevObject := CCdev(cdevValue);
  235.  
  236.                 result := longint(cdevObject);
  237.                 IF result <> 0 THEN
  238.                     BEGIN
  239.                         cdevObject.PostCdevEvent(event);
  240.                         result := cdevObject.Message(message, item);
  241.                     END;
  242.             END;
  243.         main := result;
  244.  
  245.         RestoreA4;
  246.     END;
  247.  
  248. END.