diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Tk/pTk/tixHList.h')
-rw-r--r-- | Master/tlpkg/tlperl/lib/Tk/pTk/tixHList.h | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Tk/pTk/tixHList.h b/Master/tlpkg/tlperl/lib/Tk/pTk/tixHList.h new file mode 100644 index 00000000000..5625f137c15 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Tk/pTk/tixHList.h @@ -0,0 +1,323 @@ + +/* $Id: tixHList.h,v 1.1.1.1 2000/05/17 11:08:42 idiscovery Exp $ */ + +/* + * tixHList.h -- + * + * Defines the data structures and functions used by the tixHList + * widget. + * + * Copyright (c) 1996, Expert Interface Technologies + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + */ + +#ifndef _TIX_HLIST_H_ +#define _TIX_HLIST_H_ + +#ifndef _TIX_INT_H_ +#include "tixInt.h" +#endif + +#include "tkVMacro.h" + +#define HLTYPE_COLUMN 1 +#define HLTYPE_HEADER 2 +#define HLTYPE_ENTRY 3 + +/* This is used to indetify what object has caused a DItemSizeChange + * All data structs for objects that manage DItems must have these two + * members as the beginning of the struct. + */ +typedef struct HLItemTypeInfo { + int type; + char * self; +} HLItemTypeInfo; + +typedef struct HListColumn { + /* generic type info section */ + int type; + char * self; + struct _HListElement * chPtr; + + /* other data */ + Tix_DItem * iPtr; + int width; +} HListColumn; + +typedef struct HListHeader { + /* generic type info section */ + int type; + char * self; + + struct HListStruct * wPtr; + /* other data */ + Tix_DItem * iPtr; + int width; + + Tk_3DBorder background; /* Used for drawing the 3d border. */ + int relief; /* Indicates whether window as a whole is + * raised, sunken, or flat. */ + int borderWidth; +} HListHeader; + +/*---------------------------------------------------------------------- + * A HListElement structure contain the information about each element + * inside the HList. + * + */ +typedef struct _HListElement { + /* generic type info section */ + int type; + char * self; + + /* other data */ + struct HListStruct * wPtr; + struct _HListElement * parent; + struct _HListElement * prev; + struct _HListElement * next; + struct _HListElement * childHead; + struct _HListElement * childTail; + + int numSelectedChild; /* number of childs that has selection(s) in + * them (either this child is selected or some + * of its descendants are selected */ + int numCreatedChild; /* this var gets increment by one each + * time a child is created */ + char * pathName; /* Full pathname of this element */ + char * name; /* Name of this element */ + int height; /* Height of this element, including padding + * and selBorderWidth; + */ + int allHeight; /* Height of all descendants and self */ + Tk_Uid state; /* State of Tab's for display purposes: + * normal or disabled. */ + Tcl_Obj * data; /* user data field */ + /* bottom-middle position of the bitmap/image branch (offset from + * the top-left corner of the item) + */ + int branchX; + int branchY; + + /* offset of the left-middle position of the icon */ + int iconX; + int iconY; + /*----------------------------------*/ + /* Things to display in the element */ + /*----------------------------------*/ + HListColumn * col; /* the multi-column display items */ + HListColumn _oneCol; /* If we have only one column, then this + * space is used (pointed to by column). + * This will save one Malloc */ + int indent; + Tix_DItem * indicator; /* indicator: little triangle on Mac */ + + /*----------------------------------*/ + /* Flags */ + /*----------------------------------*/ + Tix_DItemInfo * diTypePtr; + + unsigned int selected : 1; + unsigned int hidden : 1; + unsigned int dirty : 1; /* If it is dirty then its geometry needs + * be recalculated */ +} Tix_HListElement, HListElement; + +/* + * A data structure of the following type is kept for each + * widget managed by this file: + */ +typedef struct HListStruct { + Tix_DispData dispData; + Tcl_Command widgetCmd; /* Token for button's widget command. */ + + /* + * Information used when displaying widget: + */ + LangCallback *command; /* Command prefix to use when invoking + * scrolling commands. NULL means don't + * invoke commands. Malloc'ed. */ + int width, height; /* For app programmer to request size */ + + /* + * Information used when displaying widget: + */ + + /* Border and general drawing */ + int borderWidth; /* Width of 3-D borders. */ + int selBorderWidth; /* Width of 3-D borders for selected items */ + int relief; /* Indicates whether window as a whole is + * raised, sunken, or flat. */ + int indent; /* How much should the children be indented + * (to the right)?, in pixels */ + Tk_3DBorder border; /* Used for drawing the 3d border. */ + Tk_3DBorder selectBorder; /* Used for selected background. */ + XColor *normalFg; /* Normal foreground for text. */ + XColor *normalBg; /* Normal bachground for text. */ + XColor *selectFg; /* Color for drawing selected text. */ + TixFont font; /* The default font used in the DItems. */ + GC backgroundGC; /* GC for drawing background. */ + GC normalGC; /* GC for drawing text in normal mode. */ + GC selectGC; /* GC for drawing selected background. */ + GC anchorGC; /* GC for drawing dotted anchor highlight. */ + GC dropSiteGC; /* GC for drawing dotted anchor highlight. */ + + Cursor cursor; /* Current cursor for window, or None. */ + + int topPixel; /* Vertical offset */ + int leftPixel; /* Horizontal offset */ + int bottomPixel; + int wideSelect; /* BOOL: if 1, use a wide selection: the + * selection background color covers the whole + * widget. If 0, only the "significant" part + * of a list entry is highlighted */ + int selectWidth; /* Width of the selection: takes effect only + * if wideSelect == 1 */ + int exportSelection; /* Do we grab X Selection */ + /* For highlights */ + int highlightWidth; /* Width in pixels of highlight to draw + * around widget when it has the focus. + * <= 0 means don't draw a highlight. */ + XColor *highlightColorPtr; /* Color for drawing traversal highlight. */ + GC highlightGC; /* For drawing traversal highlight. */ + + /* default pad and gap values */ + int gap, padX, padY; + char * separator; + + Tk_Uid selectMode; /* Selection style: single, browse, multiple, + * or extended. This value isn't used in C + * code, but the Tcl bindings use it. */ + int drawBranch; /* Whether to draw the "branch" lines from + * parent entry to children */ + Tcl_HashTable childTable; /* Hash table to translate child names + * into (HListElement *) */ + HListElement * root; /* Mother of all elements */ + HListElement * anchor; /* The current anchor item */ + HListElement * dragSite; /* The current drag site */ + HListElement * dropSite; /* The current drop site */ + + LangCallback *yScrollCmd; /* Command prefix for communicating with + * vertical scrollbar. NULL means no command + * to issue. Malloc'ed. */ + LangCallback *xScrollCmd; /* Command prefix for communicating with + * horizontal scrollbar. NULL means no command + * to issue. Malloc'ed. */ + LangCallback *sizeCmd; /* The command to call when the size of + * the listbox changes. E.g., when the user + * add/deletes elements. Useful for + * auto-scrollbar geometry managers */ + LangCallback *browseCmd; /* The command to call when the selection + * changes. */ + LangCallback *indicatorCmd; /* The command to call when the user touches + * the indicator. */ + LangCallback *dragCmd; /* The command to call when info about a + * drag source is needed */ + LangCallback *dropCmd; /* The command to call when action at a drop + * side needs to be performed */ + char *takeFocus; /* Value of -takefocus option; not used in + * the C code, but used by keyboard traversal + * scripts. Malloc'ed, but may be NULL. */ + + Tix_LinkList mappedWindows; /* Those windows that are are mapped by this + * widget*/ + int serial; /* this number is incremented before each time + * the widget is redisplayed */ + + int numColumns; /* number of columns in the tixHList widget, + * cannot be changed after the widget's + * creation */ + + int totalSize[2]; + + HListColumn * reqSize; /* Requested column sizes by the user: + take precedence */ + HListColumn * actualSize; /* Actual column sizes, calculated using + * the sizes of the ditems */ + + HListHeader ** headers; /* Stores all the headers for a HList widget */ + int useHeader; /* whether headers should be used */ + int headerHeight; /* required height of the header */ + + Tix_DItemInfo * diTypePtr; /* Default item type */ + Tix_StyleTemplate stTmpl; + + int useIndicator; /* should indicators be displayed */ + int scrollUnit[2]; + + Tk_Window headerWin; /* subwindow, used to draw the headers */ + char * elmToSee; /* name of element to "see" the next time + * this widget is redrawn */ + unsigned redrawing : 1; + unsigned redrawingFrame : 1; + unsigned resizing : 1; + unsigned hasFocus : 1; + unsigned allDirty : 1; + unsigned initialized : 1; + unsigned headerDirty : 1; + unsigned needToRaise : 1; /* The header subwindow needs to be raised + * if we add a new window item into the + * HList widget (either in the list or + * in the header */ +} HList; + +#define TIX_X 0 +#define TIX_Y 1 +#define UNINITIALIZED -1 + +typedef HList WidgetRecord; +typedef HList * WidgetPtr; + +EXTERN TIX_DECLARE_SUBCMD(Tix_HLColumn); +EXTERN TIX_DECLARE_SUBCMD(Tix_HLItem); + +EXTERN HListColumn * Tix_HLAllocColumn _ANSI_ARGS_(( + WidgetPtr wPtr, HListElement * chPtr)); +EXTERN void Tix_HLCancelResizeWhenIdle _ANSI_ARGS_(( + WidgetPtr wPtr)); +EXTERN void Tix_HLComputeGeometry _ANSI_ARGS_(( + ClientData clientData)); +EXTERN HListElement * Tix_HLFindElement _ANSI_ARGS_((Tcl_Interp *interp, + WidgetPtr wPtr, char * pathName)); +EXTERN void Tix_HLFreeMappedWindow _ANSI_ARGS_((WidgetPtr wPtr, + HListElement * chPtr)); +EXTERN int Tix_HLElementTopOffset _ANSI_ARGS_(( + WidgetPtr wPtr, HListElement *chPtr)); +EXTERN int Tix_HLElementLeftOffset _ANSI_ARGS_(( + WidgetPtr wPtr, HListElement *chPtr)); +EXTERN int Tix_HLItemInfo _ANSI_ARGS_((Tcl_Interp *interp, + WidgetPtr wPtr, int argc, Tcl_Obj *CONST *objv)); +EXTERN int Tix_HLHeader _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int argc, Tcl_Obj *CONST *objv)); +EXTERN int Tix_HLCreateHeaders _ANSI_ARGS_(( + Tcl_Interp *interp, WidgetPtr wPtr)); +EXTERN void Tix_HLFreeHeaders _ANSI_ARGS_(( + Tcl_Interp *interp, WidgetPtr wPtr)); +EXTERN void Tix_HLDrawHeader _ANSI_ARGS_(( + WidgetPtr wPtr, Pixmap pixmap, GC gc, + int hdrX, int hdrY, int hdrW, int hdrH, + int xOffset)); +EXTERN void Tix_HLComputeHeaderGeometry _ANSI_ARGS_(( + WidgetPtr wPtr)); + +EXTERN void Tix_HLMarkElementDirty _ANSI_ARGS_((WidgetPtr wPtr, + HListElement *chPtr)); +EXTERN void Tix_HLResizeWhenIdle _ANSI_ARGS_((WidgetPtr wPtr)); +EXTERN void Tix_HLResizeNow _ANSI_ARGS_((WidgetPtr wPtr)); +EXTERN void Tix_HLComputeGeometry _ANSI_ARGS_(( + ClientData clientData)); +EXTERN void Tix_HLCancelResizeWhenIdle _ANSI_ARGS_(( + WidgetPtr wPtr)); + + +/* in tixHLCol.c */ +EXTERN TIX_DECLARE_SUBCMD(Tix_HLColumn); +EXTERN TIX_DECLARE_SUBCMD(Tix_HLItem); + +/* in tixHLInd.c */ +EXTERN TIX_DECLARE_SUBCMD(Tix_HLIndicator); + +#endif /*_TIX_HLIST_H_ */ + |