#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 */