/*
**  $VER: window.h 44.1 (19.10.1999)
**  Includes Release 44.1
**
**  window.class definitions
**
**  (C) Copyright 1987-1999 Amiga, Inc.
**      All Rights Reserved
*/
/****************************************************************************/
MODULE 'reaction/reaction'
/****************************************************************************/
/*
** Attributes specific to window.class
*/
#define WINDOW_Dummy      (REACTION_Dummy + $25000)
#define WINDOW_Window         (WINDOW_Dummy + 1)
/* (struct Window *) Return the pointer to the real      */
/*                   Intuition window structure.         */
#define WINDOW_SigMask        (WINDOW_Dummy + 2)
/* (ULONG) Return the signal bit that you must wait for  */
/*         this window to know if the window as received */
/*         any input.                                    */
/* Defaults to 0.                                        */
#define WINDOW_MenuStrip      (WINDOW_Dummy + 4)
/* (struct MenuStrip *) A list of Menu structure that will */
/*                 be used as the menu of this window    */
/*                 when open.                            */
/* Defaults to NULL.                                     */
#define WINDOW_Layout   (WINDOW_Dummy + 5)
#define WINDOW_ParentLayout     WINDOW_Layout
#define WINDOW_ParentGroup    WINDOW_Layout
/* (Object *)        Layout group object for the window  */
/* Defaults to NULL.                                     */
#define WINDOW_UserData       (WINDOW_Dummy + 6)
/* (APTR) A value that will be stored in the Window      */
/*        Object structure.                              */
/* Defaults to NULL.                                     */
#define WINDOW_SharedPort     (WINDOW_Dummy + 7)
/* (struct MsgPort *) A port that will be used for this  */
/*                    window.  The port will not be      */
/*                    closed at dispose time.            */
/* Defaults to NULL.                                     */
#define WINDOW_Zoom           (WINDOW_Dummy + 8)
/* When TRUE, it will act as a click on the zoom button. */
#define WINDOW_FrontBack      (WINDOW_Dummy + 9)
/* (UWORD) Only WT_FRONT and WT_BACK can be used here.   */
/*         This put the window in front or in back of    */
/*         others windows                                */
#define WINDOW_Activate       (WINDOW_Dummy +10)
/* (BOOL) Activate the window (and its master group) if  */
/*        set to TRUE and the                            */
/*        window is open.                                */
#define WINDOW_LockWidth      (WINDOW_Dummy +11)
/* (BOOL) Lock the window from resize in width.          */
/* Defaults to FALSE.                                    */
#define WINDOW_LockHeight     (WINDOW_Dummy +12)
/* (BOOL) Lock the window from resize in height.         */
/* Defaults to FALSE.                                    */
#define WINDOW_AppPort        (WINDOW_Dummy +13)
/* (struct MsgPort *) A shared message port for appmessages */
/*  You must pass this to be able to iconify the window. */
/* Defaults to NULL.                                     */
#define WINDOW_Position      (WINDOW_Dummy +14)
/* (ULONG) The initial position to open at.        */
#define WINDOW_IDCMPHook      (WINDOW_Dummy +15)
/* (struct Hook *) Defaults to NULL.                     */
#define WINDOW_IDCMPHookBits  (WINDOW_Dummy +16)
/* (ULONG) Defaults to 0L.                               */
#define WINDOW_GadgetUserData   (WINDOW_Dummy +17)
#define WINDOW_InterpretUserData  WINDOW_GadgetUserData
/* (UWORD) How Gadget.UserData is interpreted.           */
/* Defaults to WGUD_IGNORE */
#define WINDOW_MenuUserData   (WINDOW_Dummy +25)
/* (UWORD) How GTMENUITEM_USERDATA is interpreted.    */
#define WGUD_HOOK  0    /* Gadget/MenuItem UserData points to a Hook */
#define WGUD_FUNC  1    /* Points to a function */
#define WGUD_IGNORE  2  /* App private, don't touch it */
#define WINDOW_IconTitle   (WINDOW_Dummy +18)
/* (STRPTR) Title of the iconified window.               */
#define WINDOW_AppMsgHook    (WINDOW_Dummy +19)
/* (struct Hook *) Defaults to NULL.                     */
#define WINDOW_Icon        (WINDOW_Dummy +20)
/* (struct DiskObject *) Custom icon for the window.     */
#define WINDOW_AppWindow   (WINDOW_Dummy +21)
/* (BOOL) Make the window a Workbench AppWindow. */
#define WINDOW_GadgetHelp    (WINDOW_Dummy +22)
/* (BOOL) Set gadget-help on/off. */
#define WINDOW_IconifyGadget  (WINDOW_Dummy +23)
/* (BOOL) Add an iconification gadget to window title bar. */
#define WINDOW_TextAttr      (WINDOW_Dummy +24)
/* (struct TextAttr *)Default font for window. If not set, use screen font. */
#define WINDOW_BackFillName    (WINDOW_Dummy +26)
/* (STRPTR) replaces the default backfill pattern with this file,
   * loaded through datatypes.
   */
#define WINDOW_RefWindow   (WINDOW_Dummy +41)
/* (struct Window *) Causes WINDOW_Position to be relative to
   * to this window vs the screen. (V42)
   */
#define WINDOW_InputEvent    (WINDOW_Dummy +42)
/* (struct InputEvent *) returns a pointer to an inputevent
   * which will be current *ONLY* after a WHMI_RAWKEY. (V42)
   */
#define WINDOW_HintInfo      (WINDOW_Dummy +43)
/* (struct HintInfo *) Static Array of help hints. (V43 BETA)
   */
#define WINDOW_KillWindow     (WINDOW_Dummy +44)
#define WINDOW_Application    (WINDOW_Dummy +45)
/* ** PRIVATE TAGS SET/GET BY APPLICATION CLASS! ** (V43 BETA)
   */
#define WINDOW_InterpretIDCMPHook   (WINDOW_Dummy +46)
/* Interpret IDCMPHook results. (V43 BETA)
   */
#define WINDOW_Parent       (WINDOW_Dummy +47)
/* ** PRIVATE TAGS SET/GET BY APPLICATION CLASS! ** (V43 BETA)
   */
#define WINDOW_PreRefreshHook   (WINDOW_Dummy +48)
/* (struct Hook *) window.class calls this hook BEFORE RefreshGList() */
#define WINDOW_PostRefreshHook  (WINDOW_Dummy +49)
/* (struct Hook *) window.class calls this hook AFTER RefreshGList() */
#define WINDOW_AppWindowPtr   (WINDOW_Dummy +50)
/* (struct AppWindow *) GetAttr()'able pointer to AddAppWindow() result.*/
/*** PRIVATE ***/
#define WINDOW_VertProp     (WINDOW_Dummy +27)
/* (BOOL) Enable vertical border scroller if true. */
#define WINDOW_VertObject   (WINDOW_Dummy +28)
/* (Object *) OM_GET the vertical scroller object pointer. */
#define WINDOW_HorizProp  (WINDOW_Dummy +29)
/* (BOOL) Enable horizontal border scroller if true. */
#define WINDOW_HorizObject  (WINDOW_Dummy +30)
/* (Object *) OM_GET the horizontal scroller object pointer. */
/****************************************************************************/
/* Pre-defined WM_HANDLEINPUT return codes.
 */
#define WMHI_LASTMSG                (0)   /* No more messages                 */
#define WMHI_IGNORE                (~0)   /* Ignore                           */
#define WMHI_GADGETMASK        ($ffff)  /* Gadget ID mask value             */
#define WMHI_MENUMASK        ($ffff)    /* Menu ID mask value               */
#define WMHI_KEYMASK         ($ff)    /* Key code mask value              */
#define WMHI_CLASSMASK       ($ffff0000)    /* Event class mask value     */
#define WMHI_CLOSEWINDOW         (1<<16)  /* The close gadget was clicked     */
/* or a hook function trigged close */
#define WMHI_GADGETUP       (2<<16) /* A gadget was released      */
#define WMHI_INACTIVE            (3<<16)  /* The window was de-activated      */
#define WMHI_ACTIVE              (4<<16)  /* The window was activated         */
#define WMHI_NEWSIZE      (5<<16) /* The window was resized           */
#define WMHI_MENUPICK       (6<<16) /* A menu item was picked     */
#define WMHI_MENUHELP       (7<<16) /* Help was hit in a menu     */
#define WMHI_GADGETHELP       (8<<16) /* A gadget returns a help code   */
#define WMHI_ICONIFY      (9<<16) /* Window requests to be iconified  */
#define WMHI_UNICONIFY       (10<<16) /* Window was uniconified           */
#define WMHI_RAWKEY             (11<<16)  /* Raw key codes                    */
#define WMHI_VANILLAKEY         (12<<16)  /* Vanilla key codes                */
#define WMHI_CHANGEWINDOW      (13<<16) /* Window moved (or depth arranged) */
#define WMHI_INTUITICK          (14<<16)  /* IDCMP intuitick (maximum 10 per second) */
#define WMHI_MOUSEMOVE          (15<<16)  /* IDCMP mouse move */
#define WMHI_MOUSEBUTTONS       (16<<16)  /* IDCMP mouse buttons */
#define WMHI_DISPOSEDWINDOW      (17<<16) /* hook function triggered disposal */
/****************************************************************************/
#define WMF_ZOOMED         ($0001)  /* Window is in zoomed state    */
#define WMF_ZIPWINDOW        ($0002)  /* This resize toggled zoom state */
/****************************************************************************/
/* Possible WINDOW_FrontBack values
 */
#define WT_FRONT    TRUE
#define WT_BACK     FALSE
/* Possible WINDOW_Position values
 */
#define WPOS_CENTERSCREEN         (1)     /* Center on the screen             */
#define WPOS_CENTERMOUSE          (2)     /* Center under the mouse           */
#define WPOS_TOPLEFT              (3)     /* Top-left of the screen           */
#define WPOS_CENTERWINDOW         (4)     /* Center in another window         */
#define WPOS_FULLSCREEN           (5)     /* Top-left of, and fill the screen */
/****************************************************************************/
/*
 * Window Methods
 */
#define WM_HANDLEINPUT  (0x570001)
/* The WM_HANDLEINPUT method should be called by for each received
 * IDCMP message.
 * If the message could be linked to a gadget in the window, the WORD
 * pointed to by wmh_Code will be set to the gadget's return code.
 */
OBJECT wmHandle
  MethodID:ULONG,          /* WM_HANDLEINPUT */
  wmh_Code:PTR TO WORD     /* The code from the gadget */

#define WM_OPEN       (0x570002)
#define WM_CLOSE    (0x570003)
#define WM_NEWPREFS     (0x570004)
#define WM_ICONIFY    (0x570005)
#define WM_RETHINK    (0x570006)
