[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


   NAME
       window_cl -- create Intuition Window objects

   SUPERCLASS
       rootclass

   REQUIRES
       layout.gadget, drawlist.image

   DESCRIPTION
       This class creates standard Intuition Windows, and intelligently
       handles some ReAction house keeping for KeyBoard Control, Defer
       Layout processing, etc. Window class properly handles processing
       messages using shared window message ports as well as safely
       closing intuition windows. Window class will also intialize
       your window's parent layout group properly.

       All windowclass methods and the callback hooks you provide it are
       ran in the context of the task you call windowclass from. Thus if
       your application is a process, DOS is safe to use. However,
       remember the Intuition rules about DOS and IDCMP VERIFY messages.

       Window.class requires layout.gadget.

   WINDOW REFRESH
       Usually, when all the graphics in your window are handled by
       ReAction, you should not explicitly set the window refresh method
       to either smart or simple refresh. This is a user preference
       setting, and windowclass will automatically choose it. However,
       if your program for some reason requires one or the other refresh
       method and can not use the other, set the refresh type in your
       window object creation taglist.

   BACKFILL PATTERNS
       Window.class will install the default backfill pattern on any
       window for which you do not pass a pointer to a custom backfill
       hook. The pattern bitmaps are cached by window.class, minimizing
       memory usage.

       If your windows have elements that look bad or do not work with
       a backfill pattern, install the default NULL backfill to the
       layout group(s) containing them.

       The backfill installed by window.class is NOT a standard, global
       window layer backfill hook. It is in fact passed to each of the
       layout groups of the window, which will install it during
       refreshes. This approach was chosen because datatypes fail to
       render correctly if their background has been backfilled. This
       method has the side effect that a gadget that is not aware of
       ReAction's method to install a backfill will only have a
       backfill during window refresh (GM_RENDER coming through from
       the parent layout), not during GM_HANDLEINPUT. To make the
       class use the backfill during input handling, it should have
       GA_BackFill as a settable attribute, and install that
       backfill hook before erasing its imagery.

   METHODS
       OM_NEW -- Passed to superclass first, defaults set, then OM_SET.

       OM_SET -- Passed to superclass first, then custom tags set.

       OM_GET -- Returns requested setting or passed to superclass

       OM_DISPOSE -- Child object disposed then passed to superclass.

       WM_OPEN -- Locks default pub screen if needed, domains child layout
           group min/max size, opens window, attaches layout to window.

       WM_CLOSE -- Closes the intuition window, but does not dispose
           the layout group.

       WM_ICONIFY -- Create AppIcon, and invokes WM_CLOSE.

       WM_HANDLEINPUT -- Handles IDCMP input processing, defer layout
           refresh requests, and returns the item ID and Code of
           and selected gadget or menu attached to the window.
           Transparently handles keyboard control.

       WM_NEWPREFS -- Handles update and visual refresh of new
           preference settings.

       WM_RETHINK -- Re-evaluate layout requirements and adjust
           window size if needed in support of dynamicly changing
           layout groups.. eg, adding, replacing and removing objects.

   ATTRIBUTES

       The following standard Intuition Window Tags are supported;

       You may set these while the window is NOT open, at NewObject()
       time or SetAttrs() - between WM_CLOSE and WM_OPEN for example.

           WA_Flags
           WA_NoCareRefresh
           WA_SimpleRefresh
           WA_SmartRefresh
           WA_CloseGadget
           WA_DepthGadget
           WA_SizeGadget
           WA_SizeBRight
           WA_SizeBBottom
           WA_DragBar
           WA_GimmeZeroZero
           WA_Borderless
           WA_Activate
           WA_RMBTrap
           WA_Backdrop
           WA_SuperBitMap
           WA_BackFill
           WA_PubScreen
           WA_CustomScreen
           WA_HelpGroup
           WA_MenuHelp
           WA_Zoom
           WA_NotifyDepth

       You may set any of these at any time, NewObject() or SetAttrs();

           WA_Top
           WA_Left
           WA_InnerWidth
           WA_InnerHeight
           WA_Width
           WA_Height
           WA_Title (NOTE: Calls SetWindowTitles() if the window is open)
           WA_IDCMP (NOTE: Calls ModifyIDCMP() if needed)
           WA_BusyPointer (NOTE: Creates/Removes a NULL requester)

       You may GetAttr() these at any time;

           WA_Top
           WA_Left
           WA_InnerWidth
           WA_Height
           WA_Width
           WA_InnerHeight
           WA_PubScreen
           WA_CustomScreen
           WA_Title
           WA_ScreenTitle
           WA_Zoom

           Note well, WA_InnerHeight, and WA_InnerWidth will be 0
           unless previously set until the window has been opened
           atleast once. These values are not computed until the
           first window open.

       These are the Window Class specific attributes.

       You may set these while the window is NOT open, at NewObject()
       time or SetAttrs() - between WM_CLOSE and WM_OPEN for example.

       WINDOW_Position (UWORD)
           Set the intial opening position of the window.
           See Also, WINDOW_RefWindow.

               WPOS_CENTERSCREEN - Center in visible screen clip.
               WPOS_CENTERMOUSE  - Center under mouse.
               WPOS_TOPLEFT      - Open Top/Left, just below screen bar.
               WPOS_CENTERWINDOW - Center in some other window.
               WPOS_FULLSCREEN   - Open Top/Left, and fill the screen clip.

           If WINDOW_RefWindow is set, WPOS_CENTERSCREEN will center
           in the refwindow, not the screen. As of 42.42, WPOS_FULLSCREEN
           remains broken, window will open a minimum size.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_LockWidth (ULONG)
           If TRUE, lock the width of the window, ie, disallow
           resizing in this orientation.

           Defaults to FALSE.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_LockHeight (ULONG)
           If TRUE, lock the height of the window, ie, disallow
           resizing in this orientation.

           Defaults to FALSE.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_SharedPort (struct MsgPort *)
           Pointer to a custom UserPort this window should share.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET, OM_GET)

       WINDOW_AppPort (struct MsgPort *)
           Pointer to a MsgPort this window should use for AppMessages.
           By passing this tag the window turns into an AppWindow and
           you can use the WM_ICONIFY method. WindowClass must use the
           ID field of the AppMessages to identify the window to which
           the message was intended. You can use the UserData field
           yourself.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_AppWindow (BOOL)
           By providing an AppPort and setting this to TRUE, the window
           will be made a Workbench AppWindow. If you don't set this
           attribute, the AppPort will only be used to support
           iconification.

           Defaults to FALSE.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_IconifyGadget (BOOL)
           Set to TRUE to add an iconification gadget to the window
           titlebar. Please note that currently windowclass detects
           the iconify gadget being pressed by using the gadget ID
           0xfffe.  Do not use this ID in your application.

           Defaults to FALSE.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_BackFillName (STRPTR)
           Name for the custom backfill to use instead of global CAPrefs
           backfill. If you use this tag, make it a user preference.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET)


       It is legal and safe to set any of these at any time, OM_NEW or
       OM_SET regardless of of the window being open or not, if
       not applicable, the setting will be ignored.

       WA_BusyPointer (BOOL)
           Set the window to a busy state. It will set busy pointer
           on the window. Setting the busy state will also clear the
           DeferLayout state, clearing the busy state restores the
           DeferLayout state to its last value.

           This is done since, its a logical assumption if the application
           is busy enough that a pointer change is waranted, then its
           probably busy to respond to defer requests in a timely fashion.

           Note, the window put to sleep creating a NULL requester.
           In prior versions of window class before V42.40, the layout
           group was set to readonly, and menu strip removed.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_Layout (Object *)
       WINDOW_ParentLayout
       WINDOW_ParentGroup
           Pointer to the parent level layout group object which
           will be added to the window.

           Note the tag has 2 aliased definitions which are now
           obsolete but still supported in the include files.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_Zoom (BOOL)
           Cause the window to to be zipped via ZipWindow().

           Applicability is (OM_NEW, OM_SET)

       WINDOW_FrontBack (BOOL)
           Changes window depth arrangement via WindowToFront() or
           WindowToBack(). Accepted settings;

               WT_FRONT - bring window to front.
               WT_BACK  - put window to back

           Applicability is (OM_NEW, OM_SET)

       WINDOW_UserData (APTR)
           Pointer to your user data. Take note, this is *NOT* the
           same pointer as the Intuition Window's UserData.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET, OM_GET)

       WINDOW_GadgetUserData (UWORD)
           Determines how a gadget's UserData should be interpreted.
           If the userdata is non-null, and this setting is not
           WGUD_IGNORE, then the (hook) function will be called
           when the gadget is selected.

           A function gets the hook's "object" argument in a0 and the
           "message" argument in a1.

           Possible values are;

               WGUD_HOOK   - UserData is hook pointer (struct Hook *).
               WGUD_FUNC   - UserData is a pointer to function.
               WGUD_IGNORE - Ignore UserData.

           Defaults to WGUD_IGNORE.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_MenuUserData (UWORD)
           Like the WINDOW_GadgetUserData tag, but for menus. Using
           this implies that WINDOW_MenuStrip has been created with
           GadTools or otherwise has a 32 bit UserData field after
           each menuitem.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_MenuStrip (struct Menu *)
           Pointer to a menu to add to window with SetMenuStrip().
           Closing the window via CA_CloseWindow, will remove
           the menustrip before closing the window.  Disposing the
           window does NOT free the menu strip.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_Window (struct Window *)
           Pointer to the Intuition Window, or NULL when the
           window is closed.  Take care NOT to do a CloseWindow()
           or you will invalidate window.class's internal pointer
           and window states.

           Applicability is (OM_GET)

       WINDOW_SigMask (ULONG)
           Window signal bit mask.

           Applicability is (OM_GET)

       WINDOW_IconTitle (STRPTR)
           The title of the icon when the window is iconified.

           Defaults to window title.

           Applicability is (OM_NEW, OM_SET, OM_UPDATE)

       WINDOW_Icon (struct DiskObject *)
           The icon to use when iconifying.

           Defaults to ENV:Sys/def_window.info or the default project
           window.

           Applicability is (OM_NEW, OM_SET, OM_UPDATE)

       WINDOW_GadgetHelp (BOOL)
           Set to TRUE to enabled gadget help processing.

           Defaults to FALSE.

           Applicability is (OM_NEW, OM_SET, OM_UPDATE)

       WINDOW_IDCMPHook (struct Hook *)
           Pointer to a Hook that should be called for IDCMP messages.
           When the hook is called, the data argument points to the
           window object and message argument to the IntuiMessage.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_IDCMPHookBits (ULONG)
           If WINDOW_IDCMPHook is set, it will be called for IDCMP
           messages matching this bit mask.

           Defaults to 0L.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_AppMsgHook (struct Hook *)
           Pointer to a hook that should be called for AppMessages.
           When this called, the function data argument will point to
           the window object and data argument to the AppMessage.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET)

       WINDOW_RefWindow (struct Window *)
           Pointer to an Intuition window whose location will be the
           reference used for WINDOW_Position rather than the screen.

           Defaults to NULL.

           Applicability is (OM_NEW, OM_SET)


       WINDOW_InputEvent (struct InputEvent *)
           Pointer to an InputEvent structure which will be valid AFTER
           receiving a WHMI_RAWKEY return code from window class.
           This is a "fake" event, the structure is filled in based on
           the IntuiMessage and other data, and is suitable for calling
           MapRawKey(), infact this is how window class handles managing
           gadget keyboard control.

           Applicability is (OM_GET)