Added support for mappings with no associated file.
[wine] / include / treeview.h
1 /*
2  * Treeview class extra info
3  *
4  * Copyright 1998 Eric Kohl
5  * Copyright 1998 Alex Priem
6  */
7
8 #ifndef __WINE_TREEVIEW_H
9 #define __WINE_TREEVIEW_H
10
11 #define MINIMUM_INDENT 10
12 #define TV_REFRESH_DELAY 100     /* 100 ms delay between two refreshes */
13 #define TV_DEFAULTITEMHEIGHT 16
14 #define TVITEM_ALLOC    16      /* default nr of items to allocate at first try */
15
16
17 /* internal structures */
18
19 typedef struct {
20     UINT mask;
21     HTREEITEM hItem;
22     UINT state;
23     UINT stateMask;
24     LPSTR pszText;
25     int cchTextMax;
26     int iImage;
27     int iSelectedImage;
28     int cChildren;
29     LPARAM lParam;
30     int iIntegral;
31         int iLevel;                     /* indentation level:0=root level */
32         COLORREF clrText;
33         
34         HTREEITEM parent;           /* handle to parent or 0 if at root*/
35         HTREEITEM firstChild;     /* handle to first child or 0 if no child*/
36         HTREEITEM sibling;        /* handle to next item in list, 0 if last */
37         HTREEITEM upsibling;      /* handle to previous item in list, 0 if first */
38         int visible;
39     RECT rect;
40         RECT text;
41 } TREEVIEW_ITEM;
42
43
44
45 typedef struct tagTREEVIEW_INFO
46 {
47     UINT        uInternalStatus;                
48         UINT  bAutoSize;                        /* merge with uInternalStatus */
49         INT     Timer;
50     UINT  uNumItems;    /* number of valid TREEVIEW_ITEMs */
51     UINT        uNumPtrsAlloced; 
52     HTREEITEM   uMaxHandle;     /* needed for delete_item */
53     HTREEITEM   TopRootItem;    /* handle to first item in treeview */
54         INT     cdmode;         /* last custom draw setting */
55
56         UINT    uItemHeight;            /* item height, -1 for default item height */
57         UINT    uRealItemHeight;        /* current item height in pixels */
58         UINT    uVisibleHeight;     /* visible height of treeview in pixels */
59     UINT        uTotalHeight;           /* total height of treeview in pixels */
60         UINT    uVisibleWidth;      
61     UINT        uTotalWidth;    
62     UINT        uIndent;                        /* indentation in pixels */
63     HTREEITEM   selectedItem;   /* handle to selected item or 0 if none */
64         HTREEITEM       focusItem;              /* handle to item that has focus, 0 if none */
65         HTREEITEM       hotItem;                /* handle currently under cursor, 0 if none */
66     HTREEITEM   editItem;   /* handle to item currently editted, 0 if none */
67     HTREEITEM   firstVisible;   /* handle to first visible item */
68     HTREEITEM   dropItem;       /* handle to item selected by drag cursor */
69         HIMAGELIST  dragList;   /* Bitmap of dragged item */
70     INT         cx,cy;          /* current x/y place in list */
71     COLORREF    clrBk;          
72     COLORREF    clrText;
73     HFONT       hFont;
74     HFONT       hBoldFont;
75         HWND            hwndToolTip;
76         HWND            hwndEdit;
77         WNDPROC   wpEditOrig;     /* needed for subclassing edit control */
78
79     HIMAGELIST  himlNormal;     
80     HIMAGELIST  himlState;
81     TREEVIEW_ITEM *items;       /* itemlist */
82     INT         *freeList;      /* bitmap indicating which elements are valid */
83                                 /* 1=valid, 0=free;     */
84                                 /* size of list= uNumPtrsAlloced/32 */
85
86 } TREEVIEW_INFO;
87
88
89
90 /* bitflags for infoPtr->uInternalStatus */
91
92 #define TV_HSCROLL      0x01    /* treeview too large to fit in window */
93 #define TV_VSCROLL      0x02    /* (horizontal/vertical) */
94 #define TV_LDRAG                0x04    /* Lbutton pushed to start drag */
95 #define TV_LDRAGGING    0x08    /* Lbutton pushed, mouse moved.  */
96 #define TV_RDRAG                0x10    /* dito Rbutton */
97 #define TV_RDRAGGING    0x20    
98
99 /* bitflags for infoPtr->timer */
100
101 #define TV_REFRESH_TIMER 1      
102 #define TV_EDIT_TIMER    2
103 #define TV_REFRESH_TIMER_SET 1  
104 #define TV_EDIT_TIMER_SET 2  
105
106
107 extern VOID TREEVIEW_Register (VOID);
108 extern VOID TREEVIEW_Unregister (VOID);
109
110 #endif  /* __WINE_TREEVIEW_H */