#ifndef GADGETS_LISTBROWSER_H
#define GADGETS_LISTBROWSER_H
/*
** $VER: listbrowser.h 44.1 (19.10.1999)
** Includes Release 44.1
**
** Definitions for the ListBrowser BOOPSI class
**
** (C) Copyright 1987-1999 Amiga, Inc.
** All Rights Reserved
*/
/*****************************************************************************/
#ifndef REACTION_REACTION_H
#include <reaction/reaction.h>
#endif
#ifndef INTUITION_GADGETCLASS_H
#include <intuition/gadgetclass.h>
#endif
/*****************************************************************************/
/* LBM_ADDNODE creates a listbrowser node and inserts it to the currently
* attached list. The number of columns is automatically set according to the
* object's column number. If the node would become visible, it is automatically
* rendered. This method returns the address of the new node. (V41)
*/
#define LBM_ADDNODE (0x580001L)
struct lbAddNode
{
ULONG MethodID; /* LBM_ADDNODE */
struct GadgetInfo *lba_GInfo; /* to provide rendering info */
struct Node *lba_Node; /* Insert() after this node */
struct TagItem *lba_NodeAttrs; /* LBNA taglist */
};
/* LBM_REMNODE removes and frees the chosen node. If the node was visible, the
* display is updated. The method returns 1 if the operation was successful.
* (V41)
*/
#define LBM_REMNODE (0x580002L)
struct lbRemNode
{
ULONG MethodID; /* LBM_REMNODE */
struct GadgetInfo *lbr_GInfo; /* to provide rendering info */
struct Node *lbr_Node; /* Remove() this node */
};
/* LBM_EDITNODE changes the chosen node's attributes and renders the
* changes. The method returns 1 if the operation was successful. (V41)
*/
#define LBM_EDITNODE (0x580003L)
struct lbEditNode
{
ULONG MethodID; /* LBM_EDITNODE */
struct GadgetInfo *lbe_GInfo; /* to provide rendering info */
struct Node *lbe_Node; /* modify this node */
struct TagItem *lbe_NodeAttrs; /* according to this taglist */
};
/* LBM_SORT
*/
#define LBM_SORT (0x580004L)
struct lbSort
{
ULONG MethodID; /* LBM_SORT */
struct GadgetInfo *lbs_GInfo; /* to provide rendering info */
ULONG lbs_Column; /* Column to sort by */
ULONG lbs_Reverse; /* Reverse sort */
struct Hook *lbs_CompareHook; /* Optional hook to compare items */
};
/* LBM_SHOWCHILDREN
*/
#define LBM_SHOWCHILDREN (0x580005L)
struct lbShowChildren
{
ULONG MethodID; /* LBM_SHOWCHILDREN */
struct GadgetInfo *lbsc_GInfo; /* to provide rendering info */
struct Node *lbsc_Node; /* Starting ParentNode, NULL means start at root. */
WORD lbsc_Depth; /* Depth to Show */
};
/* LBM_HIDECHILDREN
*/
#define LBM_HIDECHILDREN (0x580006L)
struct lbHideChildren
{
ULONG MethodID; /* LBM_HIDECHILDREN */
struct GadgetInfo *lbhc_GInfo; /* to provide rendering info */
struct Node *lbhc_Node; /* Starting ParentNode, NULL means start at root. */
WORD lbhc_Depth; /* Depth to Hide */
};
/*****************************************************************************/
/* ListBrowser Node attributes.
*/
#define LBNA_Dummy (TAG_USER+0x5003500)
#define LBNA_Selected (LBNA_Dummy+1)
/* (BOOL) If the node is to be selected. Defaults to FALSE. */
#define LBNA_Flags (LBNA_Dummy+2)
/* (ULONG) Flags for the node. Defaults to 0. */
#define LBNA_UserData (LBNA_Dummy+3)
/* (ULONG) User data. Defaults to NULL. */
#define LBNA_Column (LBNA_Dummy+4)
/* (WORD) Column in the node that the attributes below effect. Defaults
* to 0.*/
#define LBNCA_Text (LBNA_Dummy+5)
/* (STRPTR) Text to display in the column. Defaults to NULL. */
#define LBNCA_Integer (LBNA_Dummy+6)
/* (LONG *) Pointer to an integer to display in the column. Defaults to NULL. */
#define LBNCA_FGPen (LBNA_Dummy+7)
/* (WORD) Column foreground pen. */
#define LBNCA_BGPen (LBNA_Dummy+8)
/* (WORD) Column background pen. */
#define LBNCA_Image (LBNA_Dummy+9)
/* (struct Image *) Image to display in the column. Defaults to NULL. */
#define LBNCA_SelImage (LBNA_Dummy+10)
/* (struct Image *) Image to display in column when selected. Defaults
* to NULL. */
#define LBNCA_HorizJustify (LBNA_Dummy+11)
#define LBNCA_Justification LBNCA_HorizJustify
/* (ULONG) Column justification. Defaults to LCJ_LEFT. */
#define LBNA_Generation (LBNA_Dummy+12)
/* Node generation. Defaults to 0. */
#define LBNCA_Editable (LBNA_Dummy+13)
/* (BOOL) If this column is editable. Requires LBNCA_CopyText. Defaults
* to FALSE. */
#define LBNCA_MaxChars (LBNA_Dummy+14)
/* (WORD) Maximum characters in an editable entry. Required when using
* LBNCA_Editable. */
#define LBNCA_CopyText (LBNA_Dummy+15)
/* Copy the LBNCA_Text contents to an internal buffer. */
#define LBNA_CheckBox (LBNA_Dummy+16)
/* (BOOL) this is a checkbox node */
#define LBNA_Checked (LBNA_Dummy+17)
/* (BOOL) is checked if true */
#define LBNA_NodeSize (LBNA_Dummy+18)
/* (ULONG) size of custom node and optimzie mempool puddles */
#define LBNCA_EditTags (LBNA_Dummy+19)
/* (struct TagItem *) taglist sent to editable string */
#define LBNCA_RenderHook (LBNA_Dummy+20)
/* (struct Hook *) effectivly the same as gadtools listview hook */
#define LBNCA_HookHeight (LBNA_Dummy+22)
/* (WORD) height in pixels of the hook function rendering */
#define LBNA_MemPool (LBNA_Dummy+23)
/* (APTR) exec memory pool to use */
#define LBNA_NumColumns (LBNA_Dummy+24)
/* (WORD) for GetListBrowserNodeAttrs() only! */
#define LBNA_Priority (LBNA_Dummy+25)
/* (UBYTE) Sets the exec node->ln_Pri */
#define LBNCA_CopyInteger (LBNA_Dummy+26)
/* (BOOL) AllocListBrowserNodeAttrs() or SetListBrowserNodeAttrs() only! */
#define LBNCA_WordWrap (LBNA_Dummy+27)
/* (BOOL) WordWrap this node's LBNCA_Text data */
#define LBNCA_VertJustify (LBNA_Dummy+28)
/* (ULONG) Row justification. Defaults to LRJ_BOTTOM. */
/* Flags for the LBNA_Flags node attribute.
*/
#define LBFLG_READONLY 1
#define LBFLG_CUSTOMPENS 2
#define LBFLG_HASCHILDREN 4
#define LBFLG_SHOWCHILDREN 8
#define LBFLG_HIDDEN 16
/* Justification modes for the LBNA_HorizJustify node column attribute.
*/
#define LCJ_LEFT 0
#define LCJ_CENTER 1
#define LCJ_RIGHT 2
#define LCJ_CENTRE LCJ_CENTER
/* Justification modes for the LBNA_VertJustify node column attribute.
*/
#define LRJ_BOTTOM 0
#define LRJ_CENTER 1
#define LRJ_TOP 2
#define LRJ_CENTRE LRJ_CENTER
/* These definitions are for the LBNCA_RenderHook tag.
*/
/* The different types of messages that a listview callback hook can see.
*/
#define LB_DRAW 0x202L /* Draw yourself, with state */
/* Possible return values from a render hook.
*/
#define LBCB_OK 0 /* callback understands this message type */
#define LBCB_UNKNOWN 1 /* callback does not understand this message */
/* States for LBDrawMsg.lbdm_State.
*/
#define LBR_NORMAL 0 /* The usual */
#define LBR_SELECTED 1 /* For selected gadgets */
/* Structure of LB_DRAW messages, object is a (struct Node *).
*/
struct LBDrawMsg
{
ULONG lbdm_MethodID; /* LV_DRAW */
struct RastPort *lbdm_RastPort; /* Where to render to */
struct DrawInfo *lbdm_DrawInfo; /* Useful to have around */
struct Rectangle lbdm_Bounds; /* Limits of where to render */
ULONG lbdm_State; /* How to render */
};
/* Sort Hook Data Structure.
*/
struct LBSortMsg
{
ULONG lbsm_TypeA;
union
{
LONG Integer;
STRPTR Text;
} lbsm_DataA;
APTR lbsm_UserDataA;
ULONG lbsm_TypeB;
union
{
LONG Integer;
STRPTR Text;
} lbsm_DataB;
APTR lbsm_UserDataB;
};
/*****************************************************************************/
/* Information for columns of the list browser.
*/
struct ColumnInfo
{
WORD ci_Width;
STRPTR ci_Title;
ULONG ci_Flags;
};
/* Possible ColumnInfo Flags
*/
#define CIF_WEIGHTED 0 /* weighted width column */
#define CIF_FIXED 1 /* fixed pixel width column */
#define CIF_DRAGGABLE 2
#define CIF_NOSEPARATORS 4
#define CIF_SORTABLE 8
/*****************************************************************************/
/* Additional attributes defined by the List Browser class
*/
#define LISTBROWSER_Dummy (REACTION_Dummy+0x0003000)
#define LISTBROWSER_Top (LISTBROWSER_Dummy+1)
/* (LONG) Top position node. Defauts to 0. */
#define LISTBROWSER_Reserved1 (LISTBROWSER_Dummy+2)
/* RESERVED */
#define LISTBROWSER_Labels (LISTBROWSER_Dummy+3)
/* (struct List *) Defaults to ~0. */
#define LISTBROWSER_Selected (LISTBROWSER_Dummy+4)
/* (LONG) numeric index of node currently selected; Defaults to -1. */
#define LISTBROWSER_SelectedNode (LISTBROWSER_Dummy+5)
/* (struct Node *) node currently seleted */
#define LISTBROWSER_MultiSelect (LISTBROWSER_Dummy+6)
/* (BOOL) Defaults to FALSE. */
#define LISTBROWSER_VertSeparators (LISTBROWSER_Dummy+7)
#define LISTBROWSER_Separators LISTBROWSER_VertSeparators
/* (BOOL) Render column separators. Defaults to TRUE. */
#define LISTBROWSER_ColumnInfo (LISTBROWSER_Dummy+8)
/* (struct ColumnInfo *) Defaults to NULL. */
#define LISTBROWSER_MakeVisible (LISTBROWSER_Dummy+9)
/* (LONG) Defaults to 0. */
#define LISTBROWSER_VirtualWidth (LISTBROWSER_Dummy+10)
/* (WORD) Defaults to 0. */
#define LISTBROWSER_Borderless (LISTBROWSER_Dummy+11)
/* (BOOL) Defaults to FALSE. */
#define LISTBROWSER_VerticalProp (LISTBROWSER_Dummy+12)
/* (BOOL) Defaults to TRUE. */
#define LISTBROWSER_HorizontalProp (LISTBROWSER_Dummy+13)
/* (BOOL) Defaults to FALSE. */
#define LISTBROWSER_Left (LISTBROWSER_Dummy+14)
/* (WORD) Defaults to 0. */
#define LISTBROWSER_Reserved2 (LISTBROWSER_Dummy+15)
/* RESERVED */
#define LISTBROWSER_AutoFit (LISTBROWSER_Dummy+16)
/* (BOOL) Defaults to FALSE. */
#define LISTBROWSER_ColumnTitles (LISTBROWSER_Dummy+17)
/* (BOOL) Defaults to FALSE. */
#define LISTBROWSER_ShowSelected (LISTBROWSER_Dummy+18)
/* (BOOL) Defaults to FALSE. */
#define LISTBROWSER_VPropTotal (LISTBROWSER_Dummy+19)
#define LISTBROWSER_VPropTop (LISTBROWSER_Dummy+20)
#define LISTBROWSER_VPropVisible (LISTBROWSER_Dummy+21)
/* State of the vertical prop gadget (if any). */
#define LISTBROWSER_HPropTotal (LISTBROWSER_Dummy+22)
#define LISTBROWSER_HPropTop (LISTBROWSER_Dummy+23)
#define LISTBROWSER_HPropVisible (LISTBROWSER_Dummy+24)
/* State of the horizontal prop gadget (if any). */
#define LISTBROWSER_MouseX (LISTBROWSER_Dummy+25)
#define LISTBROWSER_MouseY (LISTBROWSER_Dummy+26)
/* (WORD) Returns position of mouse release. */
#define LISTBROWSER_Hierarchical (LISTBROWSER_Dummy+27)
/* (BOOL) Enables ListTree mode. Defaults to FALSE. */
#define LISTBROWSER_ShowImage (LISTBROWSER_Dummy+28)
/* (struct Image *) ListTree expanded branchh custom image. Defaults to NULL. */
#define LISTBROWSER_HideImage (LISTBROWSER_Dummy+29)
/* (struct Image *) ListTree colapsed branch custom image. Defaults to NULL. */
#define LISTBROWSER_LeafImage (LISTBROWSER_Dummy+30)
/* (struct Image *) ListTree branch item custom image. Defaults to NULL. */
#define LISTBROWSER_ScrollRaster (LISTBROWSER_Dummy+31)
/* (BOOL) See autodocs for Intuition V37 bug. Defaults to TRUE. */
#define LISTBROWSER_Spacing (LISTBROWSER_Dummy+32)
/* (WORD) Defaults to 0. */
#define LISTBROWSER_Editable (LISTBROWSER_Dummy+33)
/* (WORD) Defaults to FALSE. */
#define LISTBROWSER_EditNode (LISTBROWSER_Dummy+35)
/* (LONG) Specify a node to edit. */
#define LISTBROWSER_EditColumn (LISTBROWSER_Dummy+36)
/* (WORD) Specify a column to edit */
#define LISTBROWSER_EditTags (LISTBROWSER_Dummy+39)
/* (struct TagItem *) Taglist passed to editible node string gadget.
Defaults to NULL. */
#define LISTBROWSER_Position (LISTBROWSER_Dummy+34)
/* (ULONG) See possible values below. */
#define LISTBROWSER_RelEvent (LISTBROWSER_Dummy+37)
/* (ULONG) See possible values below. */
#define LISTBROWSER_NumSelected (LISTBROWSER_Dummy+38)
/* (LONG) Number of selected nodes. */
#define LISTBROWSER_RelColumn (LISTBROWSER_Dummy+40)
/* (WORD) Column number clicked on. */
#define LISTBROWSER_HorizSeparators (LISTBROWSER_Dummy+41)
/* (BOOL) Show horizontal node separators */
#define LISTBROWSER_CheckImage (LISTBROWSER_Dummy+42)
/* (struct Image *) Custom checkbox image, Checked state. */
#define LISTBROWSER_UncheckedImage (LISTBROWSER_Dummy+43)
/* (struct Image *) Custom checkbox image, UnChecked state. */
#define LISTBROWSER_TotalNodes (LISTBROWSER_Dummy+44)
/* (LONG) Total node count. */
#define LISTBROWSER_MinNodeSize (LISTBROWSER_Dummy+45)
/* (LONG) Minimum Node size for custom MemPool custom node optimization */
#define LISTBROWSER_TitleClickable (LISTBROWSER_Dummy+46)
/* (BOOL) Allow column-title bar clicking. */
#define LISTBROWSER_MinVisible (LISTBROWSER_Dummy+47)
/* (LONG) Minimum visible node count. This is a causes the
* minimum domain to be large enough to hold the specified number of
* nodes using the the estimated average node height. Note, ESTIMATED,
* this is not garanteed results. The result may be slightly more or
* less than specified, and potentially alot greater if other objects
* within the layout group cause the listbrowser to layout larger
* than its minimum domain.
*/
#define LISTBROWSER_Reserved6 (LISTBROWSER_Dummy+48)
/* RESERVED */
#define LISTBROWSER_Reserved7 (LISTBROWSER_Dummy+49)
/* RESERVED */
#define LISTBROWSER_PersistSelect (LISTBROWSER_Dummy+50)
/* (LONG) When set TRUE, SHIFT key is NOT required for multi-select. */
#define LISTBROWSER_CursorSelect (LISTBROWSER_Dummy+51)
/* (LONG) Keyboard Cursor Selected Node Number */
#define LISTBROWSER_CursorNode (LISTBROWSER_Dummy+52)
/* (struct Node *) Keyboard Cursor Selected Node */
#define LISTBROWSER_FastRender (LISTBROWSER_Dummy+53)
/* (BOOL) Causes use of mask planes, and turns off custom pen support */
/* The improvement with deep ECS or AGA display is *HUGE*. */
#define LISTBROWSER_TotalVisibleNodes (LISTBROWSER_Dummy+54)
/* (LONG) Total visible node count. */
#define LISTBROWSER_WrapText (LISTBROWSER_Dummy+55)
/* (BOOL) Enable word wrap of text nodes */
/* Possible values for LISTBROWSER_Position.
*/
#define LBP_LINEUP 1
#define LBP_LINEDOWN 2
#define LBP_PAGEUP 3
#define LBP_PAGEDOWN 4
#define LBP_TOP 5
#define LBP_BOTTOM 6
#define LBP_SHIFTLEFT 10
#define LBP_SHIFTRIGHT 11
#define LBP_LEFTEDGE 12
#define LBP_RIGHTEDGE 13
/* Possible values for LISTBROWSER_RelEvent.
*/
#define LBRE_NORMAL 1
#define LBRE_HIDECHILDREN 2
#define LBRE_SHOWCHILDREN 4
#define LBRE_EDIT 8
#define LBRE_DOUBLECLICK 16
#define LBRE_CHECKED 32
#define LBRE_UNCHECKED 64
#define LBRE_TITLECLICK 128
#define LBRE_COLUMNADJUST 256
/*****************************************************************************/
#endif /* GADGETS_LISTBROWSER_H */