home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Prog / T / The Journal / journal Driver / journalDriver.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-03-12  |  6.3 KB  |  211 lines  |  [TEXT/KAHL]

  1. /*
  2.     FILE: journal driver.h
  3.     
  4.     The include stuff for the journal drive.
  5.  
  6. */
  7.  
  8. /* file included by both the driver and those programs
  9.    that call it */
  10.    
  11. #include "journalDriverInclude.h" 
  12.  
  13. #define NULL    0L
  14.  
  15.  
  16. /* some global data that we can use */
  17.  
  18.  
  19. #define GLOBAL_RES_TYPE    'JrDr'
  20. #define GLOBAL_RES_ID    1000
  21.  
  22. typedef struct {
  23.     OSType        fileCreator ;
  24.     int        eventFlags ;            /* future expansion for event types to trap */
  25.     int        fileRefNum ;
  26.     int        stateFlags ;            /* flags used by driver */
  27.     Str255        appName ;                /* name of current application */
  28. } GlobalData, *PGlobalData  ;
  29.  
  30. #define STATE_KEY_BIT            0x0001    /* user is currently typing */
  31. #define STATE_DIALOG_BIT        0x0002    /* last event occured in a dialog box */
  32. #define STATE_WINDOW_BIT        0x0004    /* last event occured in a window */
  33. #define STATE_MOUSE_DESK_BIT    0x0008    /* last mouse down in desk */
  34. #define STATE_MOUSE_MENU_BIT    0x0010    /* last mouse down was in menu */
  35. #define STATE_EVENT_MOUSE        0x0020    /* last event was a mouse event */
  36. #define STATE_EVENT_KEY            0x0040    /* last event was a key event */
  37. #define STATE_EVENT_OTHER        0x0080    /* last event was something else */
  38. #define STATE_MOUSE_GOAWAY_BIT    0x0100    /* last event in a goAway box */
  39. #define STATE_MOUSE_GROW_BIT    0x0200    /* last event in grow box of window */
  40. #define STATE_MOUSE_DRAG_BIT    0x0400    /* last event in drag region of window */
  41. #define STATE_MOUSE_ZOOMIN_BIT    0x0800
  42. #define STATE_MOUSE_ZOOMOUT_BIT    0x1000
  43. #define STATE_MOUSE_CONTENT_BIT    0x2000
  44. /*
  45. #define STATE_    0x4000
  46. #define STATE_    0x8000
  47. */
  48.  
  49.  
  50. #define IsSet(state, flag)         ((state) & flag)
  51. #define SetFlag(state, flag)     ((state) |= flag)
  52. #define ClearFlag(state, flag)    ((state) &= ~(flag))
  53.  
  54. #define ClearMouseBits(state)     ((state) &= ~(STATE_MOUSE_CONTENT_BIT | STATE_MOUSE_ZOOMOUT_BIT | STATE_MOUSE_ZOOMIN_BIT | STATE_MOUSE_DRAG_BIT | STATE_MOUSE_GROW_BIT | STATE_MOUSE_GOAWAY_BIT | STATE_MOUSE_DESK_BIT | STATE_MOUSE_MENU_BIT))
  55.  
  56. /* information for the journal file */
  57.  
  58. #define DEFAULT_JRNL_FILE    "\pJournal File"
  59. #define FILE_TYPE            'TEXT'
  60.  
  61. /* command constants */
  62.  
  63. #define    CMD_OPEN    0
  64. #define CMD_PRIME    1
  65. #define CMD_CONTROL    2
  66. #define CMD_STATUS    3
  67. #define CMD_CLOSE    4
  68.  
  69. /* Control message constants. JRNL - Journaling mechanism  CDEV - from my cdev */
  70.  
  71. #define    JRNL_PLAY_CNTRL        16
  72. #define JRNL_RECORD_CNTRL    17
  73.  
  74. /* Sub types of JRNL control messages */
  75.  
  76. #define JRNL_TICK_COUNT        0    /* call to TickCount() */
  77. #define JRNL_GET_MOUSE        1    /* call to GetMouse() */
  78. #define JRNL_BUTTON            2    /* call to Button() */
  79. #define JRNL_GET_KEYS        3    /* call to GetKeys() */
  80. #define JRNL_EVENT            4    /* call to GetNextEvent() or WaitNextEvent() */
  81.  
  82. /* System globals that we need to access */
  83.  
  84. #define JournalFlag    0x08DE    /* word */
  85. #define JournalRef    0x08E8    /* word */
  86. #define MenuDisable    0x0B54    /* 2 words - last selected menu item */
  87.  
  88.  
  89. #define        MouseMovedEvt        0xFA    /* Mouse moved event code            */
  90. #define        SuspendResumeEvt    0x01    /* Suspend/Resume event code        */
  91. #define        ResumeEvtMask        0x1        /* Supend or Resume selector        */
  92.  
  93. /* constants to put into JournalFlag or JournalRef */
  94.  
  95. #define JRNL_PLAY        -1
  96. #define JRNL_RECORD        1
  97. #define JRNL_NEUTRAL    0x0000
  98.  
  99.  
  100. /* macro to print to a file */
  101.  
  102. #define PrintIt(er, ref, ct, buf) (ct) = (buf)[0] ; (er) = FSWrite((ref), &(ct), (buf)+1)
  103.  
  104. /* strings used to record event types */
  105.  
  106. #define EV_RETURN        "\p>\015"
  107. #define EV_ONLY_RETURN    "\p\015"
  108.  
  109. #define EV_APPLIC_NAME    "\p<appl | "
  110.  
  111. #define EV_DELIMIT        "\p<"
  112. #define EV_END_DELIMIT    "\p>"
  113.  
  114.  
  115. #define EV_CR            "\p<CR>"
  116. #define EV_TAB            "\p<TAB>"
  117. #define EV_BACKSPACE    "\p<BS>"
  118. #define EV_ESCAPE        "\p<ESC>"
  119. #define EV_UP_ARROW        "\p<UP_AR>"
  120. #define EV_DOWN_ARROW    "\p<DWN_AR>"
  121. #define EV_LEFT_ARROW    "\p<LFT_AR>"
  122. #define EV_RIGHT_ARROW    "\p<RGT_AR>"
  123. #define EV_HELP            "\p<HELP>"
  124. #define EV_DELETE        "\p<DELETE>"
  125. #define EV_HOME            "\p<HOME>"
  126. #define EV_END            "\p<END>"
  127. #define EV_PAGE_UP        "\p<P_UP>"
  128. #define EV_PAGE_DOWN    "\p<P_DWN>"
  129. #define EV_UNKNOWN_CTRL    "\p<?CTRL?>"
  130. #define EV_F1            "\p<F1>"
  131. #define EV_F2            "\p<F2>"
  132. #define EV_F3            "\p<F3>"
  133. #define EV_F4            "\p<F4>"
  134. #define EV_F5            "\p<F5>"
  135. #define EV_F6            "\p<F6>"
  136. #define EV_F7            "\p<F7>"
  137. #define EV_F8            "\p<F8>"
  138. #define EV_F9            "\p<F9>"
  139. #define EV_F10            "\p<F10>"
  140. #define EV_F11            "\p<F11>"
  141. #define EV_F12            "\p<F12>"
  142. #define EV_F13            "\p<F13>"
  143. #define EV_F14            "\p<F14>"
  144. #define EV_F15            "\p<F15>"
  145. #define EV_RESET        "\p<RESET>"
  146. #define EV_CLEAR        "\p<CLEAR>"
  147. #define EV_ENTER        "\p<ENTER>"
  148.  
  149.  
  150. #define EV_UPDATE        "\p<update>"
  151. #define EV_DISK            "\p<disk>"
  152. #define EV_NETWORK        "\p<network>"
  153. #define EV_DRIVER        "\p<driver>"
  154. #define EV_APP1            "\p<app1>"
  155. #define EV_APP2            "\p<app2>"
  156. #define EV_APP3            "\p<app3>"
  157. #define EV_MOUSE_MOVED    "\p<mouseMoved>"
  158. #define EV_SUSPENDING    "\p<suspending>"
  159. #define EV_RESUMING        "\p<resuming>"
  160. #define EV_DEACTIVATE    "\p<deactivate>"
  161. #define EV_ACTIVATE        "\p<activate>"
  162.  
  163. /* key stuff */
  164.  
  165. #define APPLE_MENU_CHAR    20
  166.  
  167. #define EV_KEY_DOWN        "\p<keyDown>\015"
  168. #define EV_AUTO_KEY        "\p<autoKey>\015"
  169. #define EV_MENU_TITLE    "\p<Menu | "
  170. #define EV_APPLE_MENU    "\pApple"
  171. #define EV_MENU_DISABLE    "\p<disabled>"
  172. #define EV_MENU_ITEM    "\p | "
  173. #define EV_CANCEL        "\p<Used Cmd-. to cancel an action>\015"
  174. #define EV_CMD_KEY        "\p<Cmd-"
  175. #define EV_KEY_WINDOW    "\p\015<Action in window | "
  176. #define EV_KEY_DIALOG    "\p\015<Action in dialog box | "
  177. #define EV_KEY_NO_NAME    "\p<Action in unknown type of window>\015"
  178. #define EV_NO_WIND_NAME    "\p<no title>"
  179.  
  180. /* mouse stuff */
  181.  
  182. #define EV_MOUSE_DOWN    "\p<mDown "
  183. #define EV_MOUSE_UP        "\p<mUp "
  184.  
  185. #define EV_IN_DESK        "\p<inDeskTop>\015"
  186. #define EV_IN_MENU_BAR    "\p<inMenuBar>\015"
  187. #define EV_IN_SYS_WIND    "\p<inSysWindow>\015"
  188. #define EV_IN_CONTENT    "\p<inContent>\015"
  189. #define EV_IN_DRAG        "\p<inDrag>\015"
  190. #define EV_IN_GROW        "\p<inGrow>\015"
  191. #define EV_IN_GO_AWAY    "\p<inGoAway>\015"
  192. #define EV_IN_ZOOM_IN    "\p<inZoomIn>\015"
  193. #define EV_IN_ZOOM_OUT    "\p<inZoomOut>\015"
  194.  
  195. /* some stuff borrowed from CTypes.h */
  196.  
  197. #define isprint(c)        (((unsigned char)(c) > 31) && ((unsigned char)(c) < 127))
  198. #define isascii(c)        ((unsigned char)(c)<=0177)
  199. #define islower(c)        ((unsigned char)(c) & 0x20)
  200. #define toupper(c)        ((c)-'a'+'A')
  201.  
  202. /* Function prototypes */
  203.  
  204. int     DRVRControl(CntrlParam *ctlPB, DCtlPtr dCtl) ;
  205. void    DoJournalRecord(CntrlParam *paramBlock) ;
  206. void    DoMouseDown(EventRecord *eventPtr) ;
  207. void    DoKeyDown(EventRecord *eventPtr) ;
  208. void     WriteCdevParams(P_JrnlFileParam params) ;
  209. void    PrintMenuTitle(char keyPress, long menuHit) ;
  210. void     PrintWindowTitle(Boolean mustPrint) ;
  211. char     *GetNonPrintingKey(int keyCode) ;