1 /*
2  *   xmcd - Motif(R) CD Audio Player/Ripper
3  *
4  *   Copyright (C) 1993-2004  Ti Kan
5  *   E-mail: xmcd@amb.org
6  *
7  *   This program is free software; you can redistribute it and/or modify
8  *   it under the terms of the GNU General Public License as published by
9  *   the Free Software Foundation; either version 2 of the License, or
10  *   (at your option) any later version.
11  *
12  *   This program is distributed in the hope that it will be useful,
13  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *   GNU General Public License for more details.
16  *
17  *   You should have received a copy of the GNU General Public License
18  *   along with this program; if not, write to the Free Software
19  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  *
21  */
22 #ifndef __WIDGET_H__
23 #define __WIDGET_H__
24 
25 #ifndef lint
26 static char *_widget_h_ident_ = "@(#)widget.h	7.79 04/02/13";
27 #endif
28 
29 /* Holder for all widgets */
30 typedef struct {
31 	/* Top-level shell */
32 	Widget		toplevel;
33 
34 	/* Main window widgets */
35 	struct {
36 		Widget	form;			/* Form container */
37 		Widget	mode_btn;		/* Normal/Basic mode button */
38 		Widget	chkbox_frm;		/* Frame for Lock toggle */
39 		Widget	check_box;		/* Toggle button checkbox */
40 		Widget	lock_btn;		/* Caddy lock button */
41 		Widget	repeat_btn;		/* Repeat button */
42 		Widget	shuffle_btn;		/* Shuffle button */
43 		Widget	eject_btn;		/* Eject button */
44 		Widget	quit_btn;		/* Quit button */
45 		Widget	disc_ind;		/* Disc number indicator */
46 		Widget	track_ind;		/* Track number indicator */
47 		Widget	index_ind;		/* Index number indicator */
48 		Widget	time_ind;		/* Time indicator */
49 		Widget	rptcnt_ind;		/* Repeat count indicator */
50 		Widget	dbmode_ind;		/* CD information indicator */
51 		Widget	progmode_ind;		/* Program mode indicator */
52 		Widget	timemode_ind;		/* Time mode indicator */
53 		Widget	playmode_ind;		/* Play mode indicator */
54 		Widget	dtitle_ind;		/* Disc title indicator */
55 		Widget	ttitle_ind;		/* Track title indicator */
56 		Widget	dbprog_btn;		/* CDDB/Program button */
57 		Widget	options_btn;		/* Options button */
58 		Widget	ab_btn;			/* A->B mode button */
59 		Widget	sample_btn;		/* Sample mode button */
60 		Widget	time_btn;		/* Time display button */
61 		Widget	keypad_btn;		/* Keypad button */
62 		Widget	wwwwarp_bar;		/* wwwWarp menu bar */
63 		Widget	wwwwarp_btn;		/* wwwWarp button */
64 		Widget	level_scale;		/* Volume control slider */
65 		Widget	playpause_btn;		/* Play/Pause button */
66 		Widget	stop_btn;		/* Stop button */
67 		Widget	prevdisc_btn;		/* Previous Disc button */
68 		Widget	nextdisc_btn;		/* Previous Disc button */
69 		Widget	prevtrk_btn;		/* Prev Track button */
70 		Widget	nexttrk_btn;		/* Next Track button */
71 		Widget	previdx_btn;		/* Prev Index button */
72 		Widget	nextidx_btn;		/* Next Index button */
73 		Widget	rew_btn;		/* Search REW button */
74 		Widget	ff_btn;			/* Search FF button */
75 	} main;
76 
77 	/* Keypad window widgets */
78 	struct {
79 		Widget	form;			/* Form container */
80 		Widget	keypad_lbl;		/* Keypad label */
81 		Widget	keypad_ind;		/* Keypad indicator */
82 		Widget	radio_frm;		/* Keypad mode Frame */
83 		Widget	radio_box;		/* Keypad mode radio box */
84 		Widget	track_btn;		/* Track button */
85 		Widget	disc_btn;		/* Disc button */
86 		Widget	num_btn[10];		/* Number keys */
87 		Widget	clear_btn;		/* Clear button */
88 		Widget	enter_btn;		/* Enter button */
89 		Widget	warp_lbl;		/* Track warp label */
90 		Widget	warp_scale;		/* Track warp slider */
91 		Widget	keypad_sep;		/* Separator bar */
92 		Widget	cancel_btn;		/* Cancel button */
93 	} keypad;
94 
95 	/* Options window widgets */
96 	struct {
97 		Widget	form;			/* Form container */
98 
99 		Widget	categ_lbl;		/* Category label */
100 		Widget	categ_list;		/* Category list */
101 		Widget	categ_sep;		/* Category separator */
102 
103 		Widget	mode_lbl;		/* Play mode label */
104 		Widget	mode_chkbox_frm;	/* Play mode chkbox frame */
105 		Widget	mode_jitter_btn;	/* CDDA jitter corr button */
106 		Widget	mode_trkfile_btn;	/* One file per track button */
107 		Widget	mode_subst_btn;		/* Underscore subst button */
108 		Widget	mode_fmt_opt;		/* File format options menu */
109 		Widget	mode_perfmon_btn;	/* CDDA Perf monitor button */
110 		Widget	mode_path_lbl;		/* File path label */
111 		Widget	mode_path_txt;		/* File path tmpl text */
112 		Widget	mode_pathexp_btn;	/* File path expand button */
113 		Widget	mode_prog_lbl;		/* Program path label */
114 		Widget	mode_prog_txt;		/* Program path text */
115 		Widget	mode_nullmarker;
116 		Widget	mode_chkbox;		/* Play mode check box */
117 		Widget	mode_std_btn;		/* Standard button */
118 		Widget	mode_cdda_btn;		/* CDDA button */
119 		Widget	mode_file_btn;		/* Save file button */
120 		Widget	mode_pipe_btn;		/* Pipe to program button */
121 		Widget	mode_fmt_menu_lbl;	/* File format menu label */
122 		Widget	mode_fmt_menu_sep;	/* File format menu sep */
123 		Widget	mode_fmt_raw_btn;	/* CDR format button */
124 		Widget	mode_fmt_au_btn;	/* AU format button */
125 		Widget	mode_fmt_wav_btn;	/* WAV format button */
126 		Widget	mode_fmt_aiff_btn;	/* AIFF format button */
127 		Widget	mode_fmt_aifc_btn;	/* AIFF-C format button */
128 		Widget	mode_fmt_mp3_btn;	/* MP3 format button */
129 		Widget	mode_fmt_ogg_btn;	/* Ogg Vorbis format button */
130 		Widget	mode_fmt_flac_btn;	/* FLAC format button */
131 		Widget	mode_fmt_aac_btn;	/* AAC format button */
132 		Widget	mode_fmt_mp4_btn;	/* MP4 format button */
133 		Widget	mode_fmt_menu;		/* File format pulldown menu */
134 
135 		Widget	method_opt;		/* Method options menu */
136 		Widget	qualval_lbl;		/* Quality factor label */
137 		Widget	qualval1_lbl;		/* Quality factor label */
138 		Widget	qualval2_lbl;		/* Quality factor label */
139 		Widget	qualval_scl;		/* Quality factor scale */
140 		Widget	bitrate_opt;		/* Bitrate options menu */
141 		Widget	minbrate_opt;		/* Min bitrate options menu */
142 		Widget	maxbrate_opt;		/* Max bitrate options menu */
143 		Widget	chmode_opt;		/* Channel mode options menu */
144 		Widget	compalgo_lbl;		/* Comp algorithm label */
145 		Widget	compalgo1_lbl;		/* Comp algorithm label */
146 		Widget	compalgo2_lbl;		/* Comp algorithm label */
147 		Widget	compalgo_scl;		/* Comp algorithm scale */
148 		Widget	encode_sep;		/* Separator */
149 		Widget	filters_lbl;		/* Filters label */
150 		Widget	freq_lbl;		/* Frequency label */
151 		Widget	width_lbl;		/* Width label */
152 		Widget	lp_opt;			/* Lopass option menu */
153 		Widget	lp_freq_txt;		/* Lopass frequency text */
154 		Widget	lp_width_txt;		/* Lopass width text */
155 		Widget	hp_opt;			/* Hipass option menu */
156 		Widget	hp_freq_txt;		/* Hipass frequency text */
157 		Widget	hp_width_txt;		/* Hipass width text */
158 		Widget	encode_sep2;		/* Separator */
159 		Widget	copyrt_btn;		/* Copyright button */
160 		Widget	orig_btn;		/* Original button */
161 		Widget	nores_btn;		/* No bit reservoir button */
162 		Widget	chksum_btn;		/* Checksum button */
163 		Widget	iso_btn;		/* Strict ISO button */
164 		Widget	addtag_btn;		/* Add tag button */
165 		Widget	id3tag_ver_opt;		/* ID3tag version option mnu */
166 		Widget	comp_nullmarker;
167 		Widget	method_menu_lbl;	/* Method menu label */
168 		Widget	method_menu_sep;	/* Method menu separator */
169 		Widget	method_menu;		/* Method menu */
170 		Widget	mode0_btn;		/* Mode0 button */
171 		Widget	mode1_btn;		/* Mode1 button */
172 		Widget	mode2_btn;		/* Mode2 button */
173 		Widget	mode3_btn;		/* Mode3 button */
174 		Widget	bitrate_menu_lbl;	/* Bitrate menu label */
175 		Widget	bitrate_menu_sep;	/* Bitrate menu separator */
176 		Widget	bitrate_def_btn;	/* Default bitrate button */
177 		Widget	bitrate_menu;		/* Bitrate menu */
178 		Widget	minbrate_menu_lbl;	/* Min bitrate menu label */
179 		Widget	minbrate_menu_sep;	/* Min bitrate menu sep */
180 		Widget	minbrate_def_btn;	/* Min bitrate default btn */
181 		Widget	minbrate_menu;		/* Min bitrate menu */
182 		Widget	maxbrate_menu_lbl;	/* Max bitrate menu label */
183 		Widget	maxbrate_menu_sep;	/* Max bitrate menu sep */
184 		Widget	maxbrate_def_btn;	/* Max bitrate default btn */
185 		Widget	maxbrate_menu;		/* Max bitrate menu */
186 		Widget	chmode_menu_lbl;	/* Chan mode menu label */
187 		Widget	chmode_menu_sep;	/* Chan mode menu separator */
188 		Widget	chmode_stereo_btn;	/* Chan mode stereo btn */
189 		Widget	chmode_jstereo_btn;	/* Chan mode j-stereo btn */
190 		Widget	chmode_forcems_btn;	/* Chan mode force m/s btn */
191 		Widget	chmode_mono_btn;	/* Chan mode mono btn */
192 		Widget	chmode_menu;		/* Chan mode menu */
193 		Widget	lp_menu_lbl;		/* Lopass menu label */
194 		Widget	lp_menu_sep;		/* Lopass menu separator */
195 		Widget	lp_off_btn;		/* Lopass off button */
196 		Widget	lp_auto_btn;		/* Lopass auto button */
197 		Widget	lp_manual_btn;		/* Lopass manual button */
198 		Widget	lp_menu;		/* Lopass menu */
199 		Widget	hp_menu_lbl;		/* Hipass menu label */
200 		Widget	hp_menu_sep;		/* Hipass menu separator */
201 		Widget	hp_off_btn;		/* Hipass off button */
202 		Widget	hp_auto_btn;		/* Hipass auto button */
203 		Widget	hp_manual_btn;		/* Hipass manual button */
204 		Widget	hp_menu;		/* Hipass menu */
205 		Widget	id3tag_ver_menu_lbl;	/* ID3tag version menu label */
206 		Widget	id3tag_ver_menu_sep;	/* ID3tag version menu sep */
207 		Widget	id3tag_v1_btn;		/* ID3tag version 1 button */
208 		Widget	id3tag_v2_btn;		/* ID3tag version 2 button */
209 		Widget	id3tag_both_btn;	/* ID3tag both button */
210 		Widget	id3tag_ver_menu;	/* ID3tag version menu */
211 
212 		Widget	lame_lbl;		/* Advanced LAME opts label */
213 		Widget	lame_mode_lbl;		/* LAME opts mode label */
214 		Widget	lame_radbox_frm;	/* LAME opts radbox frame */
215 		Widget	lame_opts_lbl;		/* LAME opts string label */
216 		Widget	lame_opts_txt;		/* LAME opts string label */
217 		Widget	lame_nullmarker;
218 		Widget	lame_radbox;		/* LAME opts radio box */
219 		Widget	lame_disable_btn;	/* LAME opts disable button */
220 		Widget	lame_insert_btn;	/* LAME opts insert button */
221 		Widget	lame_append_btn;	/* LAME opts append button */
222 		Widget	lame_replace_btn;	/* LAME opts replace button */
223 
224 		Widget	sched_lbl;		/* Sched options label */
225 		Widget	sched_rd_lbl;		/* Read sched label */
226 		Widget	sched_rd_radbox_frm;	/* Read sched radio box frm */
227 		Widget	sched_wr_lbl;		/* Write sched label */
228 		Widget	sched_wr_radbox_frm;	/* Write sched radio box frm */
229 		Widget	hb_tout_lbl;		/* heartbeat timeout label */
230 		Widget	hb_tout_txt;		/* heartbeat timeout text */
231 		Widget	sched_nullmarker;
232 		Widget	sched_rd_radbox;	/* Read sched radio box */
233 		Widget	sched_wr_radbox;	/* Write sched radio box */
234 		Widget	sched_rd_norm_btn;	/* Read sched normal button */
235 		Widget	sched_rd_hipri_btn;	/* Read sched hipri button */
236 		Widget	sched_wr_norm_btn;	/* Write sched normal button */
237 		Widget	sched_wr_hipri_btn;	/* Write sched hipri button */
238 
239 		Widget	load_lbl;		/* Load options label */
240 		Widget	load_chkbox_frm;	/* Load options chkbox frame */
241 		Widget	exit_lbl;		/* Exit options label */
242 		Widget	exit_radbox_frm;	/* Exit options frame */
243 		Widget	done_lbl;		/* Done options label */
244 		Widget	done_chkbox_frm;	/* Done options frame */
245 		Widget	eject_lbl;		/* Eject options label */
246 		Widget	eject_chkbox_frm;	/* Eject options frame */
247 		Widget	automation_nullmarker;
248 		Widget	load_chkbox;		/* Load options check box */
249 		Widget	exit_radbox;		/* Exit options radio box */
250 		Widget	done_chkbox;		/* Done options check box */
251 		Widget	eject_chkbox;		/* Eject options check box */
252 		Widget	load_none_btn;		/* None button */
253 		Widget	load_spdn_btn;		/* Spin Down button */
254 		Widget	load_play_btn;		/* Auto Play button */
255 		Widget	load_lock_btn;		/* Auto Lock button */
256 		Widget	exit_none_btn;		/* None button */
257 		Widget	exit_stop_btn;		/* Auto Stop button */
258 		Widget	exit_eject_btn;		/* Auto Eject button */
259 		Widget	done_eject_btn;		/* Auto Eject button */
260 		Widget	done_exit_btn;		/* Auto Exit button */
261 		Widget	eject_exit_btn;		/* Auto Exit button */
262 
263 		Widget	chg_lbl;		/* Changer options label */
264 		Widget	chg_chkbox_frm;		/* Changer options frame */
265 		Widget	changer_nullmarker;
266 		Widget	chg_chkbox;		/* Changer options chk box */
267 		Widget	chg_multiplay_btn;	/* Changer multi-play button */
268 		Widget	chg_reverse_btn;	/* Changer reverse button */
269 
270 		Widget	chroute_lbl;		/* Channel route label */
271 		Widget	chroute_radbox_frm;	/* Channel route frame */
272 		Widget	outport_lbl;		/* Output port label */
273 		Widget	outport_chkbox_frm;	/* Output port frame */
274 		Widget	chroute_nullmarker;
275 		Widget	chroute_radbox;		/* Channel route radio box */
276 		Widget	chroute_stereo_btn;	/* Stereo button */
277 		Widget	chroute_rev_btn;	/* Stereo Reverse button */
278 		Widget	chroute_left_btn;	/* Mono Left-only button */
279 		Widget	chroute_right_btn;	/* Mono Right-only button */
280 		Widget	chroute_mono_btn;	/* Mono Left+Right button */
281 		Widget	outport_chkbox;		/* Outport select check box */
282 		Widget	outport_spkr_btn;	/* Speaker */
283 		Widget	outport_phone_btn;	/* Headphone */
284 		Widget	outport_line_btn;	/* Line-out */
285 
286 		Widget	vol_lbl;		/* Vol ctrl taper label */
287 		Widget	vol_radbox_frm;		/* Vol ctrl taper frame */
288 		Widget	bal_lbl;		/* Balance ctrl label */
289 		Widget	ball_lbl;		/* Balance ctrl left label */
290 		Widget	balr_lbl;		/* Balance ctrl right label */
291 		Widget	bal_scale;		/* Balance ctrl scale */
292 		Widget	balctr_btn;		/* Balance center button */
293 		Widget	cdda_att_lbl;		/* CDDA attenuator label */
294 		Widget	cdda_att_scale;		/* CDDA attentuator scale */
295 		Widget	cdda_fadeout_btn;	/* CDDA fade-out button */
296 		Widget	cdda_fadein_btn;	/* CDDA fade-in button */
297 		Widget	cdda_fadeout_lbl;	/* CDDA fade-out label */
298 		Widget	cdda_fadein_lbl;	/* CDDA fade-in label */
299 		Widget	volbal_nullmarker;
300 		Widget	vol_radbox;		/* Vol ctrl taper radio box */
301 		Widget	vol_linear_btn;		/* Linear button */
302 		Widget	vol_square_btn;		/* Square button */
303 		Widget	vol_invsqr_btn;		/* Inverse Square button */
304 
305 		Widget	cddb_lbl;		/* CDDB options label */
306 		Widget	mbrowser_lbl;		/* Music browser label */
307 		Widget	mbrowser_frm;		/* Music browser frame */
308 		Widget	lookup_lbl;		/* Lookup priority label */
309 		Widget	lookup_frm;		/* Lookup priority frame */
310 		Widget	cddb_sep1;		/* Separator bar */
311 		Widget	serv_tout_lbl;		/* Service timeout label */
312 		Widget	serv_tout_txt;		/* Service timeout text */
313 		Widget	cache_tout_lbl;		/* Cache timeout label */
314 		Widget	cache_tout_txt;		/* Cache timeout text */
315 		Widget	cddb_sep2;		/* Separator bar */
316 		Widget	use_proxy_btn;		/* Use HTTP proxy server btn */
317 		Widget	proxy_srvr_lbl;		/* Proxy server label */
318 		Widget	proxy_srvr_txt;		/* Proxy server text */
319 		Widget	proxy_port_lbl;		/* Proxy port label */
320 		Widget	proxy_port_txt;		/* Proxy port text */
321 		Widget	proxy_auth_btn;		/* Proxy authorization btn */
322 		Widget	cddb_nullmarker;
323 		Widget	mbrowser_radbox;	/* Music browser radio box */
324 		Widget	autobr_btn;		/* Auto music browser */
325 		Widget	manbr_btn;		/* Manual music browser */
326 		Widget	lookup_radbox;		/* Lookup priority radio box */
327 		Widget	cddb_pri_btn;		/* CDDB priority button */
328 		Widget	cdtext_pri_btn;		/* CD-TEXT priority button */
329 
330 		Widget	options_sep;		/* Separator bar */
331 		Widget	reset_btn;		/* Reset button */
332 		Widget	save_btn;		/* Save button */
333 		Widget	ok_btn;			/* OK button */
334 	} options;
335 
336 	/* CDDA Performance Monitor window widgets */
337 	struct {
338 		Widget	form;			/* Form container */
339 		Widget	speed_lbl;		/* Speed factor label */
340 		Widget	speed_ind;		/* Speed factor indicator */
341 		Widget	frames_lbl;		/* Frames xfer'd label */
342 		Widget	frames_ind;		/* Frames xfer'd indicator */
343 		Widget	fps_lbl;		/* Frames per sec label */
344 		Widget	fps_ind;		/* Frames per sec indicator */
345 		Widget	ttc_lbl;		/* Time-to-completion label */
346 		Widget	ttc_ind;		/* Time-to-completion ind */
347 		Widget	perfmon_sep;		/* Separator bar */
348 		Widget	cancel_btn;		/* Cancel button */
349 	} perfmon;
350 
351 	/* CD Information/Program window widgets */
352 	struct {
353 		Widget	form;			/* Form container */
354 		Widget	tottime_ind;		/* Total time indicator */
355 		Widget	inetoffln_btn;		/* Internet Offline button */
356 		Widget	logo_lbl;		/* Logo label */
357 		Widget	dlist_btn;		/* Disc list button */
358 		Widget	artist_lbl;		/* Disc artist label */
359 		Widget	artist_txt;		/* Disc artist text */
360 		Widget	title_lbl;		/* Disc title label */
361 		Widget	title_txt;		/* Disc title text */
362 		Widget	fullname_btn;		/* Artist fullname button */
363 		Widget	extd_lbl;		/* Disc label */
364 		Widget	extd_btn;		/* Disc details button */
365 		Widget	dcredits_btn;		/* Disc credits button */
366 		Widget	segments_btn;		/* Segments button */
367 		Widget	dbprog_sep1;		/* Separator bar */
368 		Widget	trklist_lbl;		/* Track list label */
369 		Widget	trklist_sw;		/* Track list scrolled window */
370 		Widget	trk_list;		/* Track list */
371 		Widget	radio_lbl;		/* Time dpy radio box label */
372 		Widget	radio_frm;		/* Time dpy radio box Frame */
373 		Widget	radio_box;		/* Time dpy radio box */
374 		Widget	tottime_btn;		/* Total time button */
375 		Widget	trktime_btn;		/* Track time button */
376 		Widget	ttitle_lbl;		/* Track title label */
377 		Widget	ttitle_txt;		/* Track title text */
378 		Widget	apply_btn;		/* Track title apply button */
379 		Widget	extt_lbl;		/* Track label */
380 		Widget	extt_btn;		/* Track details button */
381 		Widget	tcredits_btn;		/* Track credits button */
382 		Widget	pgm_lbl;		/* Program label */
383 		Widget	addpgm_btn;		/* Add program button */
384 		Widget	clrpgm_btn;		/* Clear program button */
385 		Widget	savepgm_btn;		/* Save program button */
386 		Widget	pgmseq_lbl;		/* Program sequence label */
387 		Widget	pgmseq_txt;		/* Program sequence text */
388 		Widget	userreg_btn;		/* User registration button */
389 		Widget	dbprog_sep2;		/* Separator bar */
390 		Widget	submit_btn;		/* CDDB submit button */
391 		Widget	flush_btn;		/* CDDB flush cache button */
392 		Widget	reload_btn;		/* Reload CD info button */
393 		Widget	ok_btn;			/* OK button */
394 	} dbprog;
395 
396 	/* Disc list window widgets */
397 	struct {
398 		Widget	form;			/* Form container */
399 		Widget	type_opt;		/* List type option menu */
400 		Widget	type_menu;		/* List type pulldown menu */
401 		Widget	menu_lbl;		/* Menu title label */
402 		Widget	menu_sep;		/* Menu separator bar */
403 		Widget	hist_btn;		/* History menu button */
404 		Widget	chgr_btn;		/* Changer menu button */
405 		Widget	disclist_lbl;		/* Disc list label */
406 		Widget	disclist_sw;		/* Disc list scrolled window */
407 		Widget	disc_list;		/* Disc list */
408 		Widget	show_btn;		/* Show button */
409 		Widget	goto_btn;		/* Change to button */
410 		Widget	del_btn;		/* Delete button */
411 		Widget	delall_btn;		/* Delete all button */
412 		Widget	rescan_btn;		/* Re-scan button */
413 		Widget	dlist_sep;		/* Separator bar */
414 		Widget	cancel_btn;		/* Cancel button */
415 	} dlist;
416 
417 	/* Full name window widgets */
418 	struct {
419 		Widget	form;			/* Form container */
420 		Widget	head_lbl;		/* Head label */
421 		Widget	dispname_lbl;		/* display name label */
422 		Widget	dispname_txt;		/* display name label */
423 		Widget	autogen_btn;		/* auto-gen button */
424 		Widget	lastname_lbl;		/* last name label */
425 		Widget	lastname_txt;		/* last name label */
426 		Widget	firstname_lbl;		/* first name label */
427 		Widget	firstname_txt;		/* first name label */
428 		Widget	the_btn;		/* "The" togglebutton */
429 		Widget	the_txt;		/* "The" text */
430 		Widget	fullname_sep;		/* Separator bar */
431 		Widget	ok_btn;			/* OK button */
432 	} fullname;
433 
434 	/* Disc details window widgets */
435 	struct {
436 		Widget	form;			/* Form container */
437 		Widget	discno_lbl;		/* Disc number label */
438 		Widget	disc_lbl;		/* Disc artist/title label */
439 		Widget	dbextd_sep;		/* Separator bar */
440 		Widget	album_lbl;		/* Album label */
441 		Widget	sorttitle_lbl;		/* Sort title label */
442 		Widget	sorttitle_txt;		/* Sort title text */
443 		Widget	the_btn;		/* The togglebutton */
444 		Widget	the_txt;		/* The text */
445 		Widget	year_lbl;		/* Year label */
446 		Widget	year_txt;		/* Year text */
447 		Widget	label_lbl;		/* Label label */
448 		Widget	label_txt;		/* Label text */
449 		Widget	comp_btn;		/* Compilation button */
450 		Widget	genre_opt[2];		/* Genre option menu */
451 		Widget	genre_menu[2];		/* Genre pulldown menu */
452 		Widget	genre_lbl[2];		/* Genre menu label */
453 		Widget	genre_sep[2];		/* Genre menu separator */
454 		Widget	genre_none_btn[2];	/* Genre "none" button */
455 		Widget	subgenre_opt[2];	/* Subgenre option menu */
456 		Widget	subgenre_menu[2];	/* Subgenre pulldown menu */
457 		Widget	subgenre_lbl[2];	/* Subgenre menu label */
458 		Widget	subgenre_sep[2];	/* Subgenre menu separator */
459 		Widget	subgenre_none_btn[2];	/* Subgenre "none" button */
460 		Widget	dnum_lbl;		/* Disc number in set label */
461 		Widget	dnum_txt;		/* Disc number in set text */
462 		Widget	of_lbl;			/* "of" label */
463 		Widget	tnum_txt;		/* Total number in set text */
464 		Widget	region_lbl;		/* Region label */
465 		Widget	region_txt;		/* Region text */
466 		Widget	region_chg_btn;		/* Region change button */
467 		Widget	lang_lbl;		/* Language label */
468 		Widget	lang_txt;		/* Language text */
469 		Widget	lang_chg_btn;		/* Language change button */
470 		Widget	dbextd_sep2;		/* Separator bar */
471 		Widget	notes_lbl;		/* Disc notes label */
472 		Widget	notes_txt;		/* Disc notes text */
473 		Widget	discid_lbl;		/* Xmcd disc ID label */
474 		Widget	discid_ind;		/* Xmcd disc ID ind label */
475 		Widget	mcn_lbl;		/* Media catalog # label */
476 		Widget	mcn_ind;		/* Media catalog # ind label */
477 		Widget	rev_lbl;		/* Revision label */
478 		Widget	rev_ind;		/* Revision ind label */
479 		Widget	cert_lbl;		/* Certifier label */
480 		Widget	cert_ind;		/* Certifier ind label */
481 		Widget	dbextd_sep3;		/* Separator bar */
482 		Widget	ok_btn;			/* OK button */
483 	} dbextd;
484 
485 	/* Track details window widgets */
486 	struct {
487 		Widget	form;			/* Form container */
488 		Widget	autotrk_btn;		/* Auto-track button */
489 		Widget	prev_btn;		/* Prev track arrow button */
490 		Widget	next_btn;		/* Next track arrow button */
491 		Widget	trkno_lbl;		/* Track number label */
492 		Widget	trk_lbl;		/* Track title label */
493 		Widget	dbextt_sep;		/* Separator bar */
494 		Widget	sorttitle_lbl;		/* Sort title label */
495 		Widget	sorttitle_txt;		/* Sort title text */
496 		Widget	the_btn;		/* The togglebutton */
497 		Widget	the_txt;		/* The text */
498 		Widget	artist_lbl;		/* Artist label */
499 		Widget	artist_txt;		/* Artist text */
500 		Widget	fullname_btn;		/* Artist full name button */
501 		Widget	year_lbl;		/* Year label */
502 		Widget	year_txt;		/* Year text */
503 		Widget	label_lbl;		/* Label label */
504 		Widget	label_txt;		/* Label text */
505 		Widget	bpm_lbl;		/* BPM label */
506 		Widget	bpm_txt;		/* BPM text */
507 		Widget	genre_opt[2];		/* Genre option menu */
508 		Widget	genre_menu[2];		/* Genre pulldown menu */
509 		Widget	genre_lbl[2];		/* Genre menu label */
510 		Widget	genre_sep[2];		/* Genre menu separator */
511 		Widget	genre_none_btn[2];	/* Genre "none" button */
512 		Widget	subgenre_opt[2];	/* Subgenre option menu */
513 		Widget	subgenre_menu[2];	/* Subgenre pulldown menu */
514 		Widget	subgenre_lbl[2];	/* Subgenre menu label */
515 		Widget	subgenre_sep[2];	/* Subgenre menu separator */
516 		Widget	subgenre_none_btn[2];	/* Subgenre "none" button */
517 		Widget	dbextt_sep2;		/* Separator bar */
518 		Widget	notes_lbl;		/* Track notes label */
519 		Widget	notes_txt;		/* Track notes text */
520 		Widget	isrc_lbl;		/* ISRC label */
521 		Widget	isrc_ind;		/* ISRC indicator label */
522 		Widget	dbextt_sep3;		/* Separator bar */
523 		Widget	ok_btn;			/* OK button */
524 	} dbextt;
525 
526 	/* Credits list/editor window */
527 	struct {
528 		Widget	form;			/* Form container */
529 		Widget	autotrk_btn;		/* Auto-track button */
530 		Widget	prev_btn;		/* Prev track arrow button */
531 		Widget	next_btn;		/* Next track arrow button */
532 		Widget	disctrk_lbl;		/* Disc/track number label */
533 		Widget	title_lbl;		/* Title label */
534 		Widget	credlist_lbl;		/* Credit list label */
535 		Widget	cred_list;		/* Credit list */
536 		Widget	cred_sep1;		/* Separator */
537 		Widget	crededit_lbl;		/* Credit editor label */
538 		Widget	prirole_opt;		/* Role option menu */
539 		Widget	prirole_menu;		/* Role pulldown menu */
540 		Widget	prirole_lbl;		/* Role menu label */
541 		Widget	prirole_sep;		/* Role menu separator */
542 		Widget	prirole_none_btn;	/* Role "none" button */
543 		Widget	subrole_opt;		/* Subrole option menu */
544 		Widget	subrole_menu;		/* Subrole pulldown menu */
545 		Widget	subrole_lbl;		/* Subrole menu label */
546 		Widget	subrole_sep;		/* Subrole menu separator */
547 		Widget	subrole_none_btn;	/* Subrole "none" button */
548 		Widget	name_lbl;		/* Name label */
549 		Widget	name_txt;		/* Name text */
550 		Widget	fullname_btn;		/* Full name button */
551 		Widget	notes_lbl;		/* Notes label */
552 		Widget	notes_txt;		/* Notes text */
553 		Widget	cred_sep2;		/* Separator */
554 		Widget	add_btn;		/* Add button */
555 		Widget	mod_btn;		/* Modify button */
556 		Widget	del_btn;		/* Delete button */
557 		Widget	ok_btn;			/* OK button */
558 	} credits;
559 
560 	/* Segments list/editor window */
561 	struct {
562 		Widget	form;			/* Form container */
563 		Widget	discno_lbl;		/* Disc number label */
564 		Widget	disc_lbl;		/* Disc artist/title label */
565 		Widget	seglist_lbl;		/* Segment list label */
566 		Widget	seg_list;		/* Segment list */
567 		Widget	seg_sep1;		/* Separator bar */
568 		Widget	segedit_lbl;		/* Segment editor label */
569 		Widget	name_lbl;		/* Segment name label */
570 		Widget	name_txt;		/* Segment name text */
571 		Widget	start_lbl;		/* Start label */
572 		Widget	end_lbl;		/* End label */
573 		Widget	track_lbl;		/* Track label */
574 		Widget	frame_lbl;		/* Frame label */
575 		Widget	starttrk_txt;		/* Start track text */
576 		Widget	startfrm_txt;		/* Start frame text */
577 		Widget	endtrk_txt;		/* End track text */
578 		Widget	endfrm_txt;		/* End frame text */
579 		Widget	startptr_lbl;		/* Start pointer label */
580 		Widget	endptr_lbl;		/* End pointer label */
581 		Widget	playset_lbl;		/* Play-set label */
582 		Widget	set_btn;		/* Set button */
583 		Widget	playpaus_btn;		/* Play pause button */
584 		Widget	stop_btn;		/* Stop button */
585 		Widget	notes_lbl;		/* Segment notes label */
586 		Widget	notes_txt;		/* Segment notes text */
587 		Widget	segment_lbl;		/* Segment label */
588 		Widget	credits_btn;		/* Credits button */
589 		Widget	seg_sep2;		/* Separator bar */
590 		Widget	add_btn;		/* Add button */
591 		Widget	mod_btn;		/* Modify button */
592 		Widget	del_btn;		/* Delete button */
593 		Widget	ok_btn;			/* OK button */
594 	} segments;
595 
596 	/* Submit URL window */
597 	struct {
598 		Widget	form;			/* Form container */
599 		Widget	logo_lbl;		/* Logo label */
600 		Widget	heading_lbl;		/* Heading label */
601 		Widget	categ_lbl;		/* Category label */
602 		Widget	categ_txt;		/* Category text */
603 		Widget	name_lbl;		/* Name label */
604 		Widget	name_txt;		/* Name text */
605 		Widget	url_lbl;		/* URL label */
606 		Widget	url_txt;		/* URL text */
607 		Widget	desc_lbl;		/* Description label */
608 		Widget	desc_txt;		/* Description text */
609 		Widget	submiturl_sep;		/* Separator bar */
610 		Widget	submit_btn;		/* Submit button */
611 		Widget	ok_btn;			/* OK button */
612 	} submiturl;
613 
614 	/* Region selector window widgets */
615 	struct {
616 		Widget	form;			/* Form container */
617 		Widget	region_lbl;		/* Region list label */
618 		Widget	region_list;		/* Region list */
619 		Widget	region_sep;		/* Separator bar */
620 		Widget	ok_btn;			/* OK button */
621 	} regionsel;
622 
623 	/* Language selector window widgets */
624 	struct {
625 		Widget	form;			/* Form container */
626 		Widget	lang_lbl;		/* Language list label */
627 		Widget	lang_list;		/* Language list */
628 		Widget	lang_sep;		/* Separator bar */
629 		Widget	ok_btn;			/* OK button */
630 	} langsel;
631 
632 	/* Multiple match selector window widgets */
633 	struct {
634 		Widget	form;			/* Form container */
635 		Widget	logo_lbl;		/* Match list logo label */
636 		Widget	matchsel_lbl;		/* Match list label */
637 		Widget	matchsel_list;		/* Match list */
638 		Widget	matchsel_sep;		/* Separator bar */
639 		Widget	ok_btn;			/* OK button */
640 	} matchsel;
641 
642 	/* wwwWarp popup menu widgets */
643 	struct {
644 		Widget	menu;			/* Main popup menu */
645 		Widget	genurls_menu;		/* General URLs menu */
646 		Widget	discurls_menu;		/* Album-specific URLs menu */
647 	} wwwwarp;
648 
649 	/* User registration window widgets */
650 	struct {
651 		Widget	form;			/* Form container */
652 		Widget	logo_lbl;		/* Logo label */
653 		Widget	caption_lbl;		/* Caption label */
654 		Widget	handle_lbl;		/* Handle label */
655 		Widget	handle_txt;		/* Handle text */
656 		Widget	passwd_lbl;		/* Password label */
657 		Widget	passwd_txt;		/* Password text */
658 		Widget	vpasswd_lbl;		/* Verify password label */
659 		Widget	vpasswd_txt;		/* Verify password text */
660 		Widget	hint_lbl;		/* Password hint label */
661 		Widget	hint_txt;		/* Password hint text */
662 		Widget	gethint_btn;		/* Get hint button */
663 		Widget	email_lbl;		/* Email addr label */
664 		Widget	email_txt;		/* Email addr text */
665 		Widget	region_lbl;		/* Region label */
666 		Widget	region_txt;		/* Region text */
667 		Widget	region_chg_btn;		/* Region change button */
668 		Widget	postal_lbl;		/* Postal code label */
669 		Widget	postal_txt;		/* Postal code text */
670 		Widget	age_lbl;		/* Age label */
671 		Widget	age_txt;		/* Age text */
672 		Widget	gender_lbl;		/* Gender label */
673 		Widget	gender_frm;		/* Gender frame */
674 		Widget	gender_radbox;		/* Gender radio box */
675 		Widget	male_btn;		/* Male button */
676 		Widget	female_btn;		/* Female button */
677 		Widget	unspec_btn;		/* Unspecified button */
678 		Widget	allowmail_btn;		/* Allow mail toggle button */
679 		Widget	allowstats_btn;		/* Allow stats toggle button */
680 		Widget	userreg_sep;		/* separator bar */
681 		Widget	ok_btn;			/* OK button */
682 		Widget	priv_btn;		/* Privacy info button */
683 		Widget	cancel_btn;		/* Cancel button */
684 	} userreg;
685 
686 	/* Help window widgets */
687 	struct {
688 		Widget	form;			/* Form container */
689 		Widget	topic_opt;		/* Topic option menu */
690 		Widget	topic_menu;		/* Topic pulldown menu */
691 		Widget	topic_lbl;		/* Topic menu label */
692 		Widget	topic_sep;		/* Topic menu separator */
693 		Widget	online_btn;		/* Online Help button */
694 		Widget	topic_sep2;		/* Topic menu separator2 */
695 		Widget	help_txt;		/* Help text */
696 		Widget	help_sep;		/* Separator bar */
697 		Widget	about_btn;		/* About button */
698 		Widget	cancel_btn;		/* Cancel button */
699 	} help;
700 
701 	/* Authorization window widgets */
702 	struct {
703 		Widget	form;			/* Form container */
704 		Widget	auth_lbl;		/* Authorization label */
705 		Widget	name_lbl;		/* Name label */
706 		Widget	name_txt;		/* Name text */
707 		Widget	pass_lbl;		/* Password label */
708 		Widget	pass_txt;		/* Password text */
709 		Widget	auth_sep;		/* Separator bar */
710 		Widget	ok_btn;			/* OK button */
711 		Widget	cancel_btn;		/* Cancel button */
712 	} auth;
713 
714 	/* Dialog windows widgets */
715 	struct {
716 		Widget	info;			/* Info popup */
717 		Widget	info2;			/* Info2 popup */
718 		Widget	info2_txt;		/* Info2 text widget */
719 		Widget	warning;		/* Warning popup */
720 		Widget	fatal;			/* Fatal error popup */
721 		Widget	confirm;		/* Confirm popup */
722 		Widget	working;		/* Working popup */
723 		Widget	about;			/* About popup */
724 	} dialog;
725 
726 	/* Tooltip shell widgets */
727 	struct {
728 		Widget	shell;			/* Shell */
729 		Widget	tooltip_lbl;		/* Tool-tip label */
730 	} tooltip;
731 } widgets_t;
732 
733 
734 /* Holder for all button-face pixmaps */
735 typedef struct {
736 	/* Main window pixmaps */
737 	struct {
738 		Pixmap	icon_pixmap;		/* Icon logo */
739 		Pixmap	mode_pixmap;		/* Mode */
740 		Pixmap	mode_hlpixmap;		/* Mode */
741 		Pixmap	lock_pixmap;		/* Prevent caddy removal */
742 		Pixmap	repeat_pixmap;		/* Repeat */
743 		Pixmap	shuffle_pixmap;		/* Shuffle */
744 		Pixmap	eject_pixmap;		/* Eject */
745 		Pixmap	eject_hlpixmap;		/* Eject */
746 		Pixmap	quit_pixmap;		/* Quit */
747 		Pixmap	quit_hlpixmap;		/* Quit */
748 		Pixmap	dbprog_pixmap;		/* CDDB/Prog */
749 		Pixmap	dbprog_hlpixmap;	/* CDDB/Prog */
750 		Pixmap	options_pixmap;		/* Options */
751 		Pixmap	options_hlpixmap;	/* Options */
752 		Pixmap	ab_pixmap;		/* A->B */
753 		Pixmap	ab_hlpixmap;		/* A->B */
754 		Pixmap	sample_pixmap;		/* Sample */
755 		Pixmap	sample_hlpixmap;	/* Sample */
756 		Pixmap	time_pixmap;		/* Time */
757 		Pixmap	time_hlpixmap;		/* Time */
758 		Pixmap	keypad_pixmap;		/* Keypad */
759 		Pixmap	keypad_hlpixmap;	/* Keypad */
760 		Pixmap	world_pixmap;		/* wwwWarp */
761 		Pixmap	world_hlpixmap;		/* wwwWarp */
762 		Pixmap	playpause_pixmap;	/* Play/Pause */
763 		Pixmap	playpause_hlpixmap;	/* Play/Pause */
764 		Pixmap	stop_pixmap;		/* Stop */
765 		Pixmap	stop_hlpixmap;		/* Stop */
766 		Pixmap	prevdisc_pixmap;	/* Prev Disc */
767 		Pixmap	prevdisc_hlpixmap;	/* Prev Disc */
768 		Pixmap	nextdisc_pixmap;	/* Next Disc */
769 		Pixmap	nextdisc_hlpixmap;	/* Next Disc */
770 		Pixmap	prevtrk_pixmap;		/* Prev Track */
771 		Pixmap	prevtrk_hlpixmap;	/* Prev Track */
772 		Pixmap	nexttrk_pixmap;		/* Next Track */
773 		Pixmap	nexttrk_hlpixmap;	/* Next Track */
774 		Pixmap	previdx_pixmap;		/* Prev Index */
775 		Pixmap	previdx_hlpixmap;	/* Prev Index */
776 		Pixmap	nextidx_pixmap;		/* Next Index */
777 		Pixmap	nextidx_hlpixmap;	/* Next Index */
778 		Pixmap	rew_pixmap;		/* Search REW */
779 		Pixmap	rew_hlpixmap;		/* Search REW */
780 		Pixmap	ff_pixmap;		/* Search FF */
781 		Pixmap	ff_hlpixmap;		/* Search FF */
782 	} main;
783 
784 	/* CD Information/Program window pixmaps */
785 	struct {
786 		Pixmap	logo_pixmap;		/* CD Logo */
787 	} dbprog;
788 
789 	/* CD Match window pixmaps */
790 	struct {
791 		Pixmap	logo_pixmap;		/* CDDB Logo */
792 	} matchsel;
793 
794 	/* User registration window pixmaps */
795 	struct {
796 		Pixmap	logo_pixmap;		/* CDDB Logo */
797 	} userreg;
798 
799 	/* Segments window pixmaps */
800 	struct {
801 		Pixmap	playpause_pixmap;	/* Play/Pause */
802 		Pixmap	playpause_hlpixmap;	/* Play/Pause */
803 		Pixmap	stop_pixmap;		/* Stop */
804 		Pixmap	stop_hlpixmap;		/* Stop */
805 	} segments;
806 
807 	/* SubmitURL window pixmaps */
808 	struct {
809 		Pixmap	logo_pixmap;		/* CDDB Logo */
810 	} submiturl;
811 
812 	/* Dialog windows pixmaps */
813 	struct {
814 		Pixmap	about_pixmap;		/* Program logo */
815 	} dialog;
816 } pixmaps_t;
817 
818 
819 /* Mode flags for bm_to_px(): used to set foreground/background colors */
820 #define BM_PX_NORMAL	0		/* normal/normal */
821 #define BM_PX_REV	1		/* reverse/reverse */
822 #define BM_PX_HIGHLIGHT	2		/* highlight/normal */
823 #define BM_PX_WHITE	3		/* white/normal */
824 #define BM_PX_BLACK	4		/* black/normal */
825 #define BM_PX_BW	5		/* black/white */
826 #define BM_PX_BWREV	6		/* white/black */
827 
828 
829 /* Public function prototypes */
830 extern Pixmap	bm_to_px(Widget, void *, int, int, int, int);
831 extern void	create_widgets(widgets_t *);
832 extern void	pre_realize_config(widgets_t *);
833 extern void	post_realize_config(widgets_t *, pixmaps_t *);
834 
835 #endif /* __WIDGET_H__ */
836 
837