xref: /inferno-os/libtk/xdata.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1 #include "lib9.h"
2 #include "draw.h"
3 #include "tk.h"
4 
5 #define	O(t, e)		((long)(&((t*)0)->e))
6 
7 TkStab tkorient[] =
8 {
9 	"vertical",	Tkvertical,
10 	"horizontal",	Tkhorizontal,
11 	nil
12 };
13 
14 #define RGB(r,g,b) ((r<<24)|(g<<16)|(b<<8)|0xff)
15 
16 TkStab tkcolortab[] =
17 {
18 	"black",	RGB(0,0,0),
19 	"blue",		RGB(0,0,204),
20 	"darkblue",	RGB(93,0,187),
21 	"red",		RGB(255,0,0),
22 	"yellow",	RGB(255,255,0),
23 	"green",	RGB(0,128,0),
24 	"white",	RGB(255,255,255),
25 	"orange",	RGB(255,170,0),
26 	"aqua",		RGB(0,255,255),
27 	"fuchsia",	RGB(255,0,255),
28 	"gray",		RGB(128,128,128),
29 	"grey",		RGB(128,128,128),
30 	"lime",		RGB(0,255,0),
31 	"maroon",	RGB(128,0,0),
32 	"navy",		RGB(0,0,128),
33 	"olive",	RGB(128,128,0),
34 	"purple",	RGB(128,0,128),
35 	"silver",	RGB(192,192,192),
36 	"teal",		RGB(0,128,128),
37 	"transparent",	DTransparent,
38 	nil
39 };
40 
41 TkStab tkrelief[] =
42 {
43 	"raised",	TKraised,
44 	"sunken",	TKsunken,
45 	"flat",		TKflat,
46 	"groove",	TKgroove,
47 	"ridge",	TKridge,
48 	nil
49 };
50 
51 TkStab tkbool[] =
52 {
53 	"0",		BoolF,
54 	"no",		BoolF,
55 	"off",		BoolF,
56 	"false",	BoolF,
57 	"1",		BoolT,
58 	"yes",		BoolT,
59 	"on",		BoolT,
60 	"true",		BoolT,
61 	nil
62 };
63 
64 TkStab tkanchor[] =
65 {
66 	"center",	Tkcenter,
67 	"c",		Tkcenter,
68 	"n",		Tknorth,
69 	"ne",		Tknorth|Tkeast,
70 	"e",		Tkeast,
71 	"se",		Tksouth|Tkeast,
72 	"s",		Tksouth,
73 	"sw",		Tksouth|Tkwest,
74 	"w",		Tkwest,
75 	"nw",		Tknorth|Tkwest,
76 	nil
77 };
78 
79 static
80 TkStab tkstate[] =
81 {
82 	"normal",	0,
83 	"active",	Tkactive,
84 	"disabled",	Tkdisabled,
85 	nil
86 };
87 
88 static
89 TkStab tktakefocus[] =
90 {
91 	"0",	0,
92 	"1",	Tktakefocus,
93 	nil
94 };
95 
96 TkStab tktabjust[] =
97 {
98 	"left",		Tkleft,
99 	"right",	Tkright,
100 	"center",	Tkcenter,
101 	"numeric",	Tknumeric,
102 	nil
103 };
104 
105 TkStab tkwrap[] =
106 {
107 	"none",		Tkwrapnone,
108 	"word",		Tkwrapword,
109 	"char",		Tkwrapchar,
110 	nil
111 };
112 
113 TkStab tkjustify[] =
114 {
115 	"left",		Tkleft,
116 	"right",	Tkright,
117 	"center",	Tkcenter,
118 	nil
119 };
120 
121 TkOption tkgeneric[] =
122 {
123  "actx",		OPTact,	0,	IAUX(0),
124  "acty",		OPTact,	0,	IAUX(1),
125  "actwidth",		OPTdist, O(Tk, act.width),	IAUX(O(Tk, env)),
126  "actheight",		OPTdist, O(Tk, act.height),	IAUX(O(Tk, env)),
127  "bd",			OPTnndist, O(Tk, borderwidth),	nil,
128  "borderwidth",		OPTnndist, O(Tk, borderwidth),	nil,
129  "highlightthickness",	OPTnndist, O(Tk, highlightwidth), nil,
130  "height",		OPTsize, 0,			IAUX(O(Tk, env)),
131  "width",		OPTsize, 0,			IAUX(O(Tk, env)),
132  "relief",		OPTstab, O(Tk, relief),		tkrelief,
133  "state",		OPTflag, O(Tk, flag),		tkstate,
134  "font",		OPTfont, O(Tk, env),		nil,
135  "foreground",		OPTcolr, O(Tk, env),		IAUX(TkCforegnd),
136  "background",		OPTcolr, O(Tk, env),		IAUX(TkCbackgnd),
137  "fg",			OPTcolr, O(Tk, env),		IAUX(TkCforegnd),
138  "bg",			OPTcolr, O(Tk, env),		IAUX(TkCbackgnd),
139  "selectcolor",		OPTcolr, O(Tk, env),		IAUX(TkCselect),
140  "selectforeground",	OPTcolr, O(Tk, env),		IAUX(TkCselectfgnd),
141  "selectbackground",	OPTcolr, O(Tk, env),		IAUX(TkCselectbgnd),
142  "activeforeground",	OPTcolr, O(Tk, env),		IAUX(TkCactivefgnd),
143  "activebackground",	OPTcolr, O(Tk, env),		IAUX(TkCactivebgnd),
144  "highlightcolor",	OPTcolr, O(Tk, env),		IAUX(TkChighlightfgnd),
145  "disabledcolor",	OPTcolr, O(Tk, env),		IAUX(TkCdisablefgnd),
146  "padx",		OPTnndist, O(Tk, pad.x),		nil,
147  "pady",		OPTnndist, O(Tk, pad.y),		nil,
148  "takefocus",	OPTflag, O(Tk, flag),		tktakefocus,
149  nil
150 };
151 
152 TkOption tktop[] =
153 {
154 	"x",		OPTdist,	O(TkWin, req.x),		nil,
155 	"y",		OPTdist,	O(TkWin, req.y),		nil,
156 	nil
157 };
158 
159 TkOption tktopdbg[] =
160 {
161 	"debug",	OPTbool,	O(TkTop, debug),	nil,
162 	nil
163 };
164 
165 TkMethod *tkmethod[] =
166 {
167 	&framemethod,	/* TKframe */
168 	&labelmethod,		/* TKlabel */
169 	&checkbuttonmethod,	/* TKcheckbutton */
170 	&buttonmethod,	/* TKbutton */
171 	&menubuttonmethod,	/* TKmenubutton */
172 	&menumethod,	/* TKmenu */
173 	&separatormethod,	/* TKseparator */
174 	&cascademethod,	/* TKcascade */
175 	&listboxmethod,	/* TKlistbox */
176 	&scrollbarmethod,	/* TKscrollbar */
177 	&textmethod,	/* TKtext */
178 	&canvasmethod,	/* TKcanvas */
179 	&entrymethod,	/* TKentry */
180 	&radiobuttonmethod,	/* TKradiobutton */
181 	&scalemethod,	/* TKscale */
182 	&panelmethod,	/* TKpanel */
183 	&choicebuttonmethod,	/*TKchoicebutton */
184 };
185 
186 char TkNomem[]	= "!out of memory";
187 char TkBadop[]	= "!bad option";
188 char TkOparg[]	= "!arg requires option";
189 char TkBadvl[]	= "!bad value";
190 char TkBadwp[]	= "!bad window path";
191 char TkWpack[]	= "!window is already packed";
192 char TkNotop[]	= "!no toplevel";
193 char TkDupli[]  = "!window path already exists";
194 char TkNotpk[]	= "!window not packed";
195 char TkBadcm[]	= "!bad command";
196 char TkIstop[]	= "!can't pack top level";
197 char TkBadbm[]	= "!failed to load bitmap";
198 char TkBadft[]	= "!failed to open font";
199 char TkBadit[]	= "!bad item type";
200 char TkBadtg[]	= "!bad/no matching tag";
201 char TkFewpt[]	= "!wrong number of points";
202 char TkBadsq[]	= "!bad event sequence";
203 char TkBadix[]	= "!bad index";
204 char TkNotwm[]	= "!not a window";
205 char TkBadvr[]	= "!variable does not exist";
206 char TkNotvt[]	= "!variable is wrong type";
207 char TkMovfw[]	= "!too many events buffered";
208 char TkBadsl[]	= "!selection already exists";
209 char TkSyntx[]	= "!bad [] or {} syntax";
210 char TkRecur[] = "!cannot pack recursively";
211 char TkDepth[] = "!execution stack too big";
212 char TkNomaster[] = "!no master given";
213 char TkNotgrid[] = "!not a grid";
214 char TkIsgrid[] = "!cannot use pack inside a grid";
215 char TkBadgridcell[] = "!grid cell in use";
216 char TkBadspan[] = "!bad grid span";
217 char TkBadcursor[] = "!bad cursor image";
218