home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / dev / e / amigae / rkrmsrc / intuition / mouse_keyboard / custompointer.e next >
Text File  |  1995-03-26  |  2KB  |  67 lines

  1. -> custompointer.c - Show the use of a custom busy pointer, as well as using a
  2. -> requester to block input to a window.
  3.  
  4. OPT OSVERSION=37  -> E-Note: silently require V37
  5.  
  6. MODULE 'exec/memory',
  7.        'intuition/intuition'
  8.  
  9. ENUM ERR_NONE, ERR_WIN
  10.  
  11. RAISE ERR_WIN IF OpenWindowTagList()=NIL
  12.  
  13. PROC main() HANDLE
  14.   DEF win=NIL, null_request:requester, waitPointer
  15.  
  16.   -> The window is opened as active (WA_ACTIVATE) so that the busy pointer will
  17.   -> be visible.  If the window was not active, the user would have to activate
  18.   -> it to see the change in the pointer.
  19.   win:=OpenWindowTagList(NIL, [WA_ACTIVATE, TRUE, NIL])
  20.  
  21.   -> E-Note: the data is really a lot of LONGs (and in Chip memory!)
  22.   waitPointer:=copyListToChip([$00000000,   -> Reserved, must be NIL
  23.                                $040007C0,  $000007C0,  $01000380,  $000007E0,
  24.                                $07C01FF8,  $1FF03FEC,  $3FF87FDE,  $3FF87FBE,
  25.                                $7FFCFF7F,  $7EFCFFFF,  $7FFCFFFF,  $3FF87FFE,
  26.                                $3FF87FFE,  $1FF03FFC,  $07C01FF8,  $000007E0,
  27.                                $00000000    -> Reserved, must be NIL
  28.                               ])
  29.  
  30.   -> A NULL requester can be used to block input in a window without any
  31.   -> imagery provided.
  32.   InitRequester(null_request)
  33.  
  34.   Delay(50)  -> Simulate activity in the program
  35.  
  36.   -> Put up the requester to block user input in the window, and set the
  37.   -> pointer to the busy pointer.
  38.   IF Request(null_request, win)
  39.     SetPointer(win, waitPointer, 16, 16, -6, 0)
  40.  
  41.     Delay(100)  -> Simulate activity in the program
  42.  
  43.     -> Clear the pointer (which resets the window to the default pointer) and
  44.     -> remove the requester.
  45.     ClearPointer(win)
  46.     EndRequest(null_request, win)
  47.   ENDIF
  48.  
  49.   Delay(100)  -> Simulate activity in the program
  50.  
  51. EXCEPT DO
  52.   IF win THEN CloseWindow(win)
  53.   -> E-Note: we can print a minimal error message
  54.   SELECT exception
  55.   CASE ERR_WIN; WriteF('Error: Failed to open window\n')
  56.   CASE "MEM";   WriteF('Error: Ran out of (chip) memory\n')
  57.   ENDSELECT
  58. ENDPROC
  59.  
  60. -> E-Note: get some Chip memory and copy list (quick, since LONG aligned)
  61. PROC copyListToChip(data)
  62.   DEF size, mem
  63.   size:=ListLen(data)*SIZEOF LONG
  64.   mem:=NewM(size, MEMF_CHIP)
  65.   CopyMemQuick(data, mem, size)
  66. ENDPROC mem
  67.