KWWidgets
tkTreeElem.h
Go to the documentation of this file.
1 /*
2  * tkTreeElem.h --
3  *
4  * This module is the header for elements in treectrl widgets.
5  *
6  * Copyright (c) 2002-2006 Tim Baker
7  *
8  * RCS: @(#) $Id: tkTreeElem.h,v 1.1 2007-02-06 13:18:14 barre Exp $
9  */
10 
11 typedef struct ElementType ElementType;
12 typedef struct Element Element;
13 typedef struct ElementArgs ElementArgs;
14 
16 {
19  int state;
20  struct {
23  } create;
24  struct {
25  int noop;
26  } delete;
27  struct {
28  int objc;
29  Tcl_Obj *CONST *objv;
30  int flagSelf;
31  TreeItem item;
33  } config;
34  struct {
35  int x;
36  int y;
37  int width;
38  int height;
39 #define STICKY_W 0x1000 /* These values must match ELF_STICKY_xxx */
40 #define STICKY_N 0x2000
41 #define STICKY_E 0x4000
42 #define STICKY_S 0x8000
43  int sticky;
44  Drawable drawable;
45  int bounds[4];
46  } display;
47  struct {
50  int maxWidth;
51  int maxHeight;
52  int width;
53  int height;
54  } needed;
55  struct {
56  int fixedWidth;
57  int height;
58  } height;
59  struct {
60  int flagTree;
62  int flagSelf;
63  } change;
64  struct {
65  int state1;
66  int state2;
67  } states;
68  struct {
69  Tcl_Obj *obj;
70  } actual;
71  struct {
72  int visible;
73  } screen;
74 };
75 
77 {
78  char *name; /* "image", "text" */
79  int size; /* size of an Element */
80  Tk_OptionSpec *optionSpecs;
81  Tk_OptionTable optionTable;
82  int (*createProc)(ElementArgs *args);
83  void (*deleteProc)(ElementArgs *args);
84  int (*configProc)(ElementArgs *args);
85  void (*displayProc)(ElementArgs *args);
86  void (*neededProc)(ElementArgs *args);
87  void (*heightProc)(ElementArgs *args);
88  int (*changeProc)(ElementArgs *args);
89  int (*stateProc)(ElementArgs *args);
90  int (*undefProc)(ElementArgs *args);
91  int (*actualProc)(ElementArgs *args);
92  void (*onScreenProc)(ElementArgs *args);
94 };
95 
96 /* list of these for each style */
97 struct Element
98 {
99  Tk_Uid name; /* "elem2", "eText" etc */
101  Element *master; /* NULL if this is master */
102  DynamicOption *options; /* Dynamically-allocated options. */
103  /* type-specific data here */
104 };
105 
113 
114 #define ELEMENT_TYPE_MATCHES(t1,t2) ((t1)->name == (t2)->name)
115 
116 /***** ***** *****/
117 
118 extern int Element_GetSortData(TreeCtrl *tree, Element *elem, int type, long *lv, double *dv, char **sv);
119 
120 typedef struct TreeIterate_ *TreeIterate;
121 
122 extern int TreeElement_TypeFromObj(TreeCtrl *tree, Tcl_Obj *objPtr, ElementType **typePtrPtr);
123 extern void Tree_RedrawElement(TreeCtrl *tree, TreeItem item, Element *elem);
124 extern TreeIterate Tree_ElementIterateBegin(TreeCtrl *tree, ElementType *elemTypePtr);
127 extern void Tree_ElementIterateChanged(TreeIterate iter_, int mask);
128 extern void Tree_ElementChangedItself(TreeCtrl *tree, TreeItem item,
129  TreeItemColumn column, Element *elem, int flags, int mask);
130 
133 {
134  int (*TreeCtrl_RegisterElementType)(Tcl_Interp *interp, ElementType *typePtr);
135  void (*Tree_RedrawElement)(TreeCtrl *tree, TreeItem item, Element *elem);
138  Element *(*Tree_ElementIterateGet)(TreeIterate iter_);
139  void (*Tree_ElementIterateChanged)(TreeIterate iter_, int mask);
140  void (*PerStateInfo_Free)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo);
142  PerStateData *(*PerStateInfo_ForState)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo, int state, int *match);
143  Tcl_Obj *(*PerStateInfo_ObjForState)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo, int state, int *match);
144  int (*PerStateInfo_Undefine)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo, int state);
146  int (*PerStateBoolean_ForState)(TreeCtrl *tree, PerStateInfo *pInfo, int state, int *match);
147  void (*PSTSave)(PerStateInfo *pInfo, PerStateInfo *pSave);
148  void (*PSTRestore)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo, PerStateInfo *pSave);
149  int (*TreeStateFromObj)(TreeCtrl *tree, Tcl_Obj *obj, int *stateOff, int *stateOn);
150  int (*BooleanCO_Init)(Tk_OptionSpec *optionTable, CONST char *optionName);
151  int (*StringTableCO_Init)(Tk_OptionSpec *optionTable, CONST char *optionName, CONST char **tablePtr);
152 };
153