Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / sun4-solaris / Tk / pTk / tkButton.h
CommitLineData
86530b38
AT
1/*
2 * tkButton.h --
3 *
4 * Declarations of types and functions used to implement
5 * button-like widgets.
6 *
7 * Copyright (c) 1996 by Sun Microsystems, Inc.
8 *
9 * See the file "license.terms" for information on usage and redistribution
10 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
11 *
12 * RCS: @(#) $Id: tkButton.h,v 1.4 1998/09/14 18:23:04 stanton Exp $
13 */
14
15#ifndef _TKBUTTON
16#define _TKBUTTON
17
18#ifndef _TKINT
19#include "tkInt.h"
20#endif
21
22#ifdef BUILD_tk
23# undef TCL_STORAGE_CLASS
24# define TCL_STORAGE_CLASS DLLEXPORT
25#endif
26
27/*
28 * A data structure of the following type is kept for each
29 * widget managed by this file:
30 */
31
32typedef struct {
33 Tk_Window tkwin; /* Window that embodies the button. NULL
34 * means that the window has been destroyed. */
35 Display *display; /* Display containing widget. Needed to
36 * free up resources after tkwin is gone. */
37 Tcl_Interp *interp; /* Interpreter associated with button. */
38 Tcl_Command widgetCmd; /* Token for button's widget command. */
39 int type; /* Type of widget: restricts operations
40 * that may be performed on widget. See
41 * below for possible values. */
42
43 /*
44 * Information about what's in the button.
45 */
46
47 char *text; /* Text to display in button (malloc'ed)
48 * or NULL. */
49 int underline; /* Index of character to underline. < 0 means
50 * don't underline anything. */
51 Var textVarName; /* Name of variable (malloc'ed) or NULL.
52 * If non-NULL, button displays the contents
53 * of this variable. */
54 Pixmap bitmap; /* Bitmap to display or None. If not None
55 * then text and textVar are ignored. */
56 char *imageString; /* Name of image to display (malloc'ed), or
57 * NULL. If non-NULL, bitmap, text, and
58 * textVarName are ignored. */
59 Tk_Image image; /* Image to display in window, or NULL if
60 * none. */
61 char *selectImageString; /* Name of image to display when selected
62 * (malloc'ed), or NULL. */
63 Tk_Image selectImage; /* Image to display in window when selected,
64 * or NULL if none. Ignored if image is
65 * NULL. */
66
67 /*
68 * Information used when displaying widget:
69 */
70
71 Tk_State state; /* State of button for display purposes:
72 * normal, active, or disabled. */
73 Tk_3DBorder normalBorder; /* Structure used to draw 3-D
74 * border and background when window
75 * isn't active. NULL means no such
76 * border exists. */
77 Tk_3DBorder activeBorder; /* Structure used to draw 3-D
78 * border and background when window
79 * is active. NULL means no such
80 * border exists. */
81 int borderWidth; /* Width of border. */
82 int relief; /* 3-d effect: TK_RELIEF_RAISED, etc. */
83 int highlightWidth; /* Width in pixels of highlight to draw
84 * around widget when it has the focus.
85 * <= 0 means don't draw a highlight. */
86 Tk_3DBorder highlightBorder;
87 /* Structure used to draw 3-D default ring
88 * and focus highlight area when highlight
89 * is off. */
90 XColor *highlightColorPtr; /* Color for drawing traversal highlight. */
91
92 int inset; /* Total width of all borders, including
93 * traversal highlight and 3-D border.
94 * Indicates how much interior stuff must
95 * be offset from outside edges to leave
96 * room for borders. */
97 Tk_Font tkfont; /* Information about text font, or NULL. */
98 XColor *normalFg; /* Foreground color in normal mode. */
99 XColor *activeFg; /* Foreground color in active mode. NULL
100 * means use normalFg instead. */
101 XColor *disabledFg; /* Foreground color when disabled. NULL
102 * means use normalFg with a 50% stipple
103 * instead. */
104 GC normalTextGC; /* GC for drawing text in normal mode. Also
105 * used to copy from off-screen pixmap onto
106 * screen. */
107 GC activeTextGC; /* GC for drawing text in active mode (NULL
108 * means use normalTextGC). */
109 Pixmap gray; /* Pixmap for displaying disabled text if
110 * disabledFg is NULL. */
111 GC disabledGC; /* Used to produce disabled effect. If
112 * disabledFg isn't NULL, this GC is used to
113 * draw button text or icon. Otherwise
114 * text or icon is drawn with normalGC and
115 * this GC is used to stipple background
116 * across it. For labels this is None. */
117 GC copyGC; /* Used for copying information from an
118 * off-screen pixmap to the screen. */
119 Arg widthString; /* Value of -width option. Malloc'ed. */
120 Arg heightString; /* Value of -height option. Malloc'ed. */
121 int width, height; /* If > 0, these specify dimensions to request
122 * for window, in characters for text and in
123 * pixels for bitmaps. In this case the actual
124 * size of the text string or bitmap is
125 * ignored in computing desired window size. */
126 int wrapLength; /* Line length (in pixels) at which to wrap
127 * onto next line. <= 0 means don't wrap
128 * except at newlines. */
129 int padX, padY; /* Extra space around text (pixels to leave
130 * on each side). Ignored for bitmaps and
131 * images. */
132 Tk_Anchor anchor; /* Where text/bitmap should be displayed
133 * inside button region. */
134 Tk_Justify justify; /* Justification to use for multi-line text. */
135 int indicatorOn; /* True means draw indicator, false means
136 * don't draw it. */
137 Tk_3DBorder selectBorder; /* For drawing indicator background, or perhaps
138 * widget background, when selected. */
139 int textWidth; /* Width needed to display text as requested,
140 * in pixels. */
141 int textHeight; /* Height needed to display text as requested,
142 * in pixels. */
143 Tk_TextLayout textLayout; /* Saved text layout information. */
144 int indicatorSpace; /* Horizontal space (in pixels) allocated for
145 * display of indicator. */
146 int indicatorDiameter; /* Diameter of indicator, in pixels. */
147 Tk_State defaultState; /* State of default ring: TK_STATE_NORMAL,
148 * TK_STATE_ACTIVE, or TK_STATE_DISABLED. */
149
150 /*
151 * For check and radio buttons, the fields below are used
152 * to manage the variable indicating the button's state.
153 */
154
155 Var selVarName; /* Name of variable used to control selected
156 * state of button. Malloc'ed (if
157 * not NULL). */
158 Arg onValue; /* Value to store in variable when
159 * this button is selected. Malloc'ed (if
160 * not NULL). */
161 Arg offValue; /* Value to store in variable when this
162 * button isn't selected. Malloc'ed
163 * (if not NULL). Valid only for check
164 * buttons. */
165
166 /*
167 * Miscellaneous information:
168 */
169
170 Tk_Cursor cursor; /* Current cursor for window, or None. */
171 char *takeFocus; /* Value of -takefocus option; not used in
172 * the C code, but used by keyboard traversal
173 * scripts. Malloc'ed, but may be NULL. */
174 LangCallback *command; /* Command to execute when button is
175 * invoked; valid for buttons only.
176 * If not NULL, it's malloc-ed. */
177 int flags; /* Various flags; see below for
178 * definitions. */
179 Tk_Tile tile, activeTile, disabledTile;
180 Tk_TSOffset tsoffset; /* offset for tiling */
181} TkButton;
182
183/*
184 * Possible "type" values for buttons. These are the kinds of
185 * widgets supported by this file. The ordering of the type
186 * numbers is significant: greater means more features and is
187 * used in the code.
188 */
189
190#define TYPE_LABEL 0
191#define TYPE_BUTTON 1
192#define TYPE_CHECK_BUTTON 2
193#define TYPE_RADIO_BUTTON 3
194
195/*
196 * Flag bits for buttons:
197 *
198 * REDRAW_PENDING: Non-zero means a DoWhenIdle handler
199 * has already been queued to redraw
200 * this window.
201 * SELECTED: Non-zero means this button is selected,
202 * so special highlight should be drawn.
203 * GOT_FOCUS: Non-zero means this button currently
204 * has the input focus.
205 */
206
207#define REDRAW_PENDING 1
208#define SELECTED 2
209#define GOT_FOCUS 4
210
211/*
212 * Mask values used to selectively enable entries in the
213 * configuration specs:
214 */
215
216#define LABEL_MASK TK_CONFIG_USER_BIT
217#define BUTTON_MASK TK_CONFIG_USER_BIT << 1
218#define CHECK_BUTTON_MASK TK_CONFIG_USER_BIT << 2
219#define RADIO_BUTTON_MASK TK_CONFIG_USER_BIT << 3
220#define ALL_MASK (LABEL_MASK | BUTTON_MASK \
221 | CHECK_BUTTON_MASK | RADIO_BUTTON_MASK)
222
223/*
224 * Declaration of variables shared between the files in the button module.
225 */
226
227extern TkClassProcs tkpButtonProcs;
228extern Tk_ConfigSpec tkpButtonConfigSpecs[];
229
230/*
231 * Declaration of procedures used in the implementation of the button
232 * widget.
233 */
234
235EXTERN void TkButtonWorldChanged _ANSI_ARGS_((
236 ClientData instanceData));
237EXTERN void TkpComputeButtonGeometry _ANSI_ARGS_((
238 TkButton *butPtr));
239EXTERN TkButton * TkpCreateButton _ANSI_ARGS_((Tk_Window tkwin));
240#ifndef TkpDestroyButton
241EXTERN void TkpDestroyButton _ANSI_ARGS_((TkButton *butPtr));
242#endif
243#ifndef TkpDisplayButton
244EXTERN void TkpDisplayButton _ANSI_ARGS_((ClientData clientData));
245#endif
246EXTERN int TkInvokeButton _ANSI_ARGS_((TkButton *butPtr));
247
248# undef TCL_STORAGE_CLASS
249# define TCL_STORAGE_CLASS DLLIMPORT
250
251#endif /* _TKBUTTON */