1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2  *
3  * ***** BEGIN LICENSE BLOCK *****
4  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5  *
6  * The contents of this file are subject to the Mozilla Public License Version
7  * 1.1 (the "License"); you may not use this file except in compliance with
8  * the License. You may obtain a copy of the License at
9  * http://www.mozilla.org/MPL/
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the
14  * License.
15  *
16  * The Original Code is the Microline Widget Library, originally made available under the NPL by Neuron Data <http://www.neurondata.com>.
17  *
18  * The Initial Developer of the Original Code is
19  * Netscape Communications Corporation.
20  * Portions created by the Initial Developer are Copyright (C) 1998
21  * the Initial Developer. All Rights Reserved.
22  *
23  * Contributor(s):
24  *
25  * Alternatively, the contents of this file may be used under the terms of
26  * either the GNU General Public License Version 2 or later (the "GPL"), or
27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28  * in which case the provisions of the GPL or the LGPL are applicable instead
29  * of those above. If you wish to allow use of your version of this file only
30  * under the terms of either the GPL or the LGPL, and not to allow others to
31  * use your version of this file under the terms of the MPL, indicate your
32  * decision by deleting the provisions above and replace them with the notice
33  * and other provisions required by the GPL or the LGPL. If you do not delete
34  * the provisions above, a recipient may use your version of this file under
35  * the terms of any one of the MPL, the GPL or the LGPL.
36  *
37  * In addition, as a special exception to the GNU GPL, the copyright holders
38  * give permission to link the code of this program with the Motif and Open
39  * Motif libraries (or with modified versions of these that use the same
40  * license), and distribute linked combinations including the two. You
41  * must obey the GNU General Public License in all respects for all of
42  * the code used other than linking with Motif/Open Motif. If you modify
43  * this file, you may extend this exception to your version of the file,
44  * but you are not obligated to do so. If you do not wish to do so,
45  * delete this exception statement from your version.
46  *
47  * ***** END LICENSE BLOCK ***** */
48 
49 
50 #ifndef XmLTreePH
51 #define XmLTreePH
52 
53 #include <Xm/XmP.h>
54 #ifndef MOTIF11
55 #include <Xm/ManagerP.h>
56 #include <Xm/DrawP.h>
57 #endif
58 
59 #include "Tree.h"
60 #include "GridP.h"
61 
62 /* row value mask for get/set values */
63 #define RVML XmLGridRowValueMaskLen
64 #define XmLTreeRowLevel      (1L << (RVML))
65 #define XmLTreeRowExpands    (1L << (RVML + 1))
66 #define XmLTreeRowIsExpanded (1L << (RVML + 2))
67 
68 typedef struct _XmLTreeRowPart
69 	{
70 	Boolean expands;
71 	int level;
72 	Boolean hasChildren, hasSiblings, isExpanded;
73 	Dimension stringWidth;
74 	Boolean stringWidthValid;
75 	} XmLTreeRowPart;
76 
77 struct _XmLTreeRowRec
78 	{
79 	XmLGridRowPart grid;
80 	XmLTreeRowPart tree;
81 	};
82 
83 typedef struct _XmLTreePart
84 	{
85 	/* resources */
86 	Dimension levelSpacing;
87 	Pixel lineColor, pmColor;
88 	XtCallbackList collapseCallback, expandCallback;
89 
90 	/* private data */
91 	char *linesData;
92 	int linesSize, linesMaxLevel;
93 	int recalcTreeWidth;
94 
95 	char defaultPixmapsCreated;
96 	Pixel pixColors[4];
97 	Pixmap filePixmask, folderPixmask, folderOpenPixmask;
98 	Pixmap filePixmap, folderPixmap, folderOpenPixmap;
99 
100 	/* row resources */
101 	int rowLevel;
102 	Boolean rowExpands, rowIsExpanded;
103 
104     /* Causes the tree to NOT render any pixmaps */
105 	Boolean ignorePixmaps;
106 	} XmLTreePart;
107 
108 typedef struct _XmLTreeRec
109 	{
110 	CorePart core;
111 	CompositePart composite;
112 	ConstraintPart constraint;
113 	XmManagerPart manager;
114 	XmLGridPart grid;
115 	XmLTreePart tree;
116 	} XmLTreeRec;
117 
118 typedef struct _XmLTreeClassPart
119 	{
120 	int unused;
121 	} XmLTreeClassPart;
122 
123 typedef struct _XmLTreeClassRec
124 	{
125 	CoreClassPart core_class;
126 	CompositeClassPart composite_class;
127 	ConstraintClassPart constraint_class;
128 	XmManagerClassPart manager_class;
129 	XmLGridClassPart grid_class;
130 	XmLTreeClassPart tree_class;
131 	} XmLTreeClassRec;
132 
133 extern XmLTreeClassRec xmlTreeClassRec;
134 
135 typedef struct _XmLTreeConstraintPart
136 	{
137 	int unused;
138 	} XmLTreeConstraintPart;
139 
140 typedef struct _XmLTreeConstraintRec
141 	{
142 	XmManagerConstraintPart manager;
143 	XmLGridConstraintPart grid;
144 	XmLTreeConstraintPart tree;
145 	} XmLTreeConstraintRec, *XmLTreeConstraintPtr;
146 
147 #endif
148