summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authortreectrl <treectrl>2005-05-10 22:19:45 (GMT)
committertreectrl <treectrl>2005-05-10 22:19:45 (GMT)
commit115c258c8af07bcf3fba399813b04762f2e4074c (patch)
tree46e3f72a229c80ef4a2458ecd17d90eac42e45d8 /generic
parentc97ddc8d74cc43f9b2f15d1bdc269f3e60d83695 (diff)
downloadtktreectrl-115c258c8af07bcf3fba399813b04762f2e4074c.zip
tktreectrl-115c258c8af07bcf3fba399813b04762f2e4074c.tar.gz
tktreectrl-115c258c8af07bcf3fba399813b04762f2e4074c.tar.bz2
Added new "window" element type.
Moved PerState declarations to tkTreeCtrl.h. Changes to ElementArgs to support new "window" element type (or any other element type which changes itself outside of configure).
Diffstat (limited to 'generic')
-rw-r--r--generic/tkTreeElem.h60
1 files changed, 12 insertions, 48 deletions
diff --git a/generic/tkTreeElem.h b/generic/tkTreeElem.h
index e2d497a..9e5e236 100644
--- a/generic/tkTreeElem.h
+++ b/generic/tkTreeElem.h
@@ -5,7 +5,7 @@
*
* Copyright (c) 2002-2005 Tim Baker
*
- * RCS: @(#) $Id: tkTreeElem.h,v 1.8 2005/05/01 01:37:06 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeElem.h,v 1.9 2005/05/10 22:19:45 treectrl Exp $
*/
typedef struct ElementType ElementType;
@@ -15,11 +15,11 @@ typedef struct ElementArgs ElementArgs;
struct ElementArgs
{
TreeCtrl *tree;
- TreeItem item;
Element *elem;
int state;
struct {
- int noop;
+ TreeItem item;
+ TreeItemColumn column;
} create;
struct {
int noop;
@@ -77,7 +77,7 @@ struct ElementType
/* list of these for each style */
struct Element
{
- Tk_Uid name; /* "image", "text" etc */
+ Tk_Uid name; /* "elem2", "eText" etc */
ElementType *typePtr;
Element *master; /* NULL if this is master */
/* type-specific data here */
@@ -85,56 +85,18 @@ struct Element
extern ElementType elemTypeBitmap;
extern ElementType elemTypeBorder;
+extern ElementType elemTypeCheckButton;
extern ElementType elemTypeImage;
extern ElementType elemTypeRect;
extern ElementType elemTypeText;
+extern ElementType elemTypeWindow;
+
+#define ELEMENT_TYPE_MATCHES(t1,t2) ((t1)->name == (t2)->name)
/***** ***** *****/
extern int Element_GetSortData(TreeCtrl *tree, Element *elem, int type, long *lv, double *dv, char **sv);
-typedef struct PerStateData PerStateData;
-typedef struct PerStateInfo PerStateInfo;
-typedef struct PerStateType PerStateType;
-
-/* There is one of these for each XColor, Tk_Font, Tk_Image etc */
-struct PerStateData
-{
- int stateOff;
- int stateOn;
- /* Type-specific fields go here */
-};
-
-#define DEBUG_PSI
-
-struct PerStateInfo
-{
-#ifdef DEBUG_PSI
- PerStateType *type;
-#endif
- Tcl_Obj *obj;
- int count;
- PerStateData *data;
-};
-
-typedef int (*PerStateType_FromObjProc)(TreeCtrl *, Tcl_Obj *, PerStateData *);
-typedef void (*PerStateType_FreeProc)(TreeCtrl *, PerStateData *);
-
-struct PerStateType
-{
-#ifdef DEBUG_PSI
- char *name;
-#endif
- int size;
- PerStateType_FromObjProc fromObjProc;
- PerStateType_FreeProc freeProc;
-};
-
-#define MATCH_NONE 0
-#define MATCH_ANY 1
-#define MATCH_PARTIAL 2
-#define MATCH_EXACT 3
-
typedef struct TreeIterate_ *TreeIterate;
extern int TreeElement_TypeFromObj(TreeCtrl *tree, Tcl_Obj *objPtr, ElementType **typePtrPtr);
@@ -143,7 +105,9 @@ extern TreeIterate Tree_ElementIterateBegin(TreeCtrl *tree, ElementType *elemTyp
extern TreeIterate Tree_ElementIterateNext(TreeIterate iter_);
extern Element *Tree_ElementIterateGet(TreeIterate iter_);
extern void Tree_ElementIterateChanged(TreeIterate iter_, int mask);
-
+extern void Tree_ElementChangedItself(TreeCtrl *tree, TreeItem item,
+ TreeItemColumn column, Element *elem, int mask);
+
typedef struct TreeCtrlStubs TreeCtrlStubs;
struct TreeCtrlStubs
{
@@ -154,7 +118,7 @@ struct TreeCtrlStubs
Element *(*Tree_ElementIterateGet)(TreeIterate iter_);
void (*Tree_ElementIterateChanged)(TreeIterate iter_, int mask);
void (*PerStateInfo_Free)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo);
- int (*PerStateInfo_FromObj)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo);
+ int (*PerStateInfo_FromObj)(TreeCtrl *tree, StateFromObjProc proc, PerStateType *typePtr, PerStateInfo *pInfo);
PerStateData *(*PerStateInfo_ForState)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo, int state, int *match);
Tcl_Obj *(*PerStateInfo_ObjForState)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo, int state, int *match);
void (*PerStateInfo_Undefine)(TreeCtrl *tree, PerStateType *typePtr, PerStateInfo *pInfo, int state);