1
2                                                                 [section:top]
3
4         ############ SLIK basic skin specifications file ############
5
6              (SLIK: SimpLIstic sKin interface - revision 0.91.0)
7
8                                GQradio 1.9.0
9
10Skin hierarchy:
11   Skins are simply a directory which contain image files and one or more
12   skindata files, usually named skindata or skindata_*.
13
14The skindata file(s):
15   All skin features are configured in the skindata file. A skin's default mode
16   is always defined in the file named 'skindata', which can then contain
17   buttons (key: "skin_toggle") that link to other skindata type files for
18   changing the layout/size of the skin. Empty lines, and those beginning with
19   a '#' (for comments) are ignored.
20
21Image files:
22   All image files can be any size, in most cases the drawing data will be
23   calculated automatically. Skins can have any size buttons, items, digits,
24   etc. The files can be of any type supported by gdk-pixbuf (xpm, png,
25   jpeg, gif, etc.) The recommended file format is png.
26
27Image contents:
28  Every image within a file must have the same width and height, for example
29  if the play button was 30 by 20, the resulting image file would be
30  180 by 20. (6 button states total, including status lights and prelights)
31
32  Addendum: If the above button was specified with the status light and
33            prelight options as false, the resulting image file would be
34            60 by 20. (2 button states total, 1 for normal, 1 for pressed)
35
36Required elements:
37  Only section [main] is required , everything else is optional (although it
38  would be nice to always have a play button :)
39
40Transparency:
41  The main background image uses a threshold of 1 (out of 256 levels) for the
42  window shape, the rest is used for partially overwriting the background when
43  the Transparency option is true.
44
45  If a mask file is specified, the threshold changes to 128 (of 256 levels).
46  The 'mask = file.png' option is provided for backwards compatibility only.
47
48  Portions of items, buttons, sliders, numbers, and text that never change and
49  are the same as the background image (example: round buttons) should be set
50  transparent so that the 'force transparent' option works properly.
51
52All widgets recognize the following keys:
53-----------------------------------------
54
55anchor_right,
56anchor_bottom:	When a skin changes size, this defines how a widget will be
57		positioned. Anchor right will will keep the widget the same
58		distance from the right side of the skin, bottom works in the
59		same way.
60data:		Data defined for the widget. This is generic text, some widgets
61		will use this. Also applications can access the text in this
62		field (app access is read only).
63id:		Nickname to use for this widget, when grouping (unimplemented).
64
65
66------------------------------------------------------------------------------
67Recognized format subsections:
68------------------------------------------------------------------------------
69
70
71Note: Keys that contain text in parenthesis '()' are optional, and describe
72      the default behavior when the key is ommited.
73
74
75==============================                                  [section:main]
76main
77==============================
78
79This section is required in all skindata files, image must be valid.
80
81Format:
82-------
83
84[main]
85image = file.png
86
87mask = file.png		(mask from 'image')
88transparent = TRUE	(FALSE)
89id = text		(none)
90
91border = TRUE		(FALSE)
92
93border_left = 3		(1)
94border_right = 3	(1)
95border_top = 3		(1)
96border_bottom = 3	(1)
97
98border_left_stretch = TRUE	(FALSE)
99border_right_stretch = TRUE	(FALSE)
100border_top_stretch = TRUE	(FALSE)
101border_bottom_stretch = TRUE	(FALSE)
102
103stretch = TRUE		(FALSE)
104
105sizeable = TRUE		(FALSE)
106
107width = 20		(taken from 'image' size)
108height = 20		(taken from 'image' size)
109
110width_min = 10		(taken from 'width')
111width_max = 30		(taken from 'height')
112height_min = 10		(taken from 'width')
113height_max = 30		(taken from 'height')
114width_increment = 5	(1)
115height_increment = 5	(1)
116
117focus = file.png	(none, uses rectangle with colors r, g, b)
118
119focus_has_border = TRUE	(FALSE)
120focus_border_left = 1	(0)
121focus_border_right = 1	(0)
122focus_border_top = 1	(0)
123focus_border_bottom = 1	(0)
124
125focus_anchor_right = TRUE	(FALSE)
126focus_anchor_bottom = TRUE	(FALSE)
127
128focus_filled = TRUE	(FALSE)
129focus_red = 128		(255)
130focus_green = 128	(0)
131focus_blue = 128	(0)
132
133focus_alpha = 255	(128)
134
135focus_stretch = TRUE	(unimplemented)
136
137Keys:
138-----
139
140image:		Background image file.
141mask:		Background mask file.
142		NOTE: This is a depreciated option, masks should now be
143		included with 'image' file.
144
145border:		When TRUE, 'image' contains border images.
146
147border_left,
148border_right,
149border_top,
150border_bottom:	Size of the background borders.
151
152border_*_stretch:
153		If TRUE, scale the respective (*) border image to fit within
154		the actual size, when FALSE the border image is tiled.
155
156stretch:	If TRUE, scale the image to fit within the actual window size,
157		when FALSE the image is tiled.
158
159sizeable:	TRUE if the window is to be resizeable. FALSE is a window with
160		fixed size.
161width_min/max:	Minimum and maximum width when resizing the window.
162height_min/max: Minimum and maximum height when resizing the window.
163
164width_increment,
165height_increment:
166		When resizing window, lock the size into steps of this value.
167
168transparent:	TRUE if the skin has alpha channel transparent areas, and
169		therefore should also capture the root window background.
170
171focus:		Image file to use for the focus, if not specified a rectangle
172		with color focus_red, focus_green, focus_blue (below) is used.
173
174focus_has_border: When TRUE, the image is drawn in in rectangular form, and
175		the 'center' of the image is ignored. The rectangle size is
176		determined y the focus_border_??? options, below.
177
178focus_border_left:
179focus_border_right:
180focus_border_top:
181focus_border_bottom: The respective sizes of the focus border with respect to
182		the focus image. The image borders are tiled to fit the
183		widget size.
184
185focus_anchor_right: When TRUE, the focus image is aligned to the right side of
186		the widget with the focus. Ignored if focus has a border.
187focus_anchor_bottom: When TRUE, the focus image is aligned to the bottom side
188		of the widget with the focus. Ignored if focus has a border.
189
190focus_filled:	When TRUE, the focus rectangle is a solid rectangle. Only has
191		effect when there is no focus image.
192
193focus_red:
194focus_green:
195focus_blue:	When no focus image is specified, these are the color
196		attributes to use when drawing the focus rectangle. Values are
197		valid from 0 to 255.
198
199focus_alpha:	The transparency to use when drawing the focus overlay, valid
200		values are 0 to 255. (255 is fully visible, 128 half, ...)
201
202focus_stretch:	Unimplemented.
203
204
205Shaped window note:
206-------------------
207    To have a shaped window simply supply 'image' with an alpha channel
208    (transparency). The cutoff alpha level for shaped windows is 1 for
209    'image' and 123 for 'mask'.
210
211    Use of 'mask' is discouraged, since it is ignored for sizeable windows.
212    Simply give 'image' an alpha channel (transparency) instead.
213
214
215==============================                                  [section:item]
216item_XXXX
217==============================
218
219Recognized items:
220-----------------
221
222Use in place of XXXX, the second column is number of sections, the third column
223is a text description of each section.
224(second column key: A = animation; I = incremental by percentage (min to max) )
225
226mode		4	Blank, manual, preset, auto.
227mute		2	No mute, muted.
228preset.scan	A	Scanning to set presets.
229preset.set	2	Blank, preset set mode.
230scan		A	Auto tuning.
231signal		I	Signal strength (0 to 100%).
232stereo		2	Mono, Stereo.
233
234volume		I	Volume display (0 to 100%).
235balance		I	Balance display (left to right).
236
237Format:
238-------
239
240[item_XXXX]
241image = file.png
242sections = 2
243x = 0
244y = 0
245
246animated = TRUE		(FALSE, reserved: FIXME)
247id = text		(none)
248
249Keys:
250-----
251
252image:		File containing images vertically for the item.
253x, y:		Coordinates for placement of the item.
254sections:	Number of images vertically in 'image' file.
255animated:	Item is animated (first section is blank, rest are animation
256		frame loop.
257id:		Nickname to use for this widget, when grouping.
258
259
260==============================                                [section:button]
261button_XXXX
262==============================
263
264Recognized buttons:
265-------------------
266
267Use in place of XXXX, the second column indicates if the button supports
268an indicator, the third column is a text description of the button.
269
270Reserved:
271  skin_toggle		Change to skin mode_key held in 'data'.
272			(If data is empty the default, "skindata", is assumed.)
273  skin_size		Drag the button to change the skin's size.
274			(Ignored if skin is not sizeable.)
275  skin_expand	X	Change size of skin by text held in 'data'
276			"[+/-]x [+/-]y" subsequent press reverts to original
277			size. The indicator is off in the default state.
278  skin_iconify		Iconifies the window.
279  skin_sticky	X	Toggle window stick state, indicator is on when the
280			window is sticky. Sticky makes the window appear on all
281			workspaces.
282			  note: sticky is not supported by all window managers.
283  skin_open		Similar to skin_toggle, but opens a new window.
284  skin_close		Close current window, ignored for parent (main) window.
285
286about			Shows about dialog.
287config			Shows preferences window.
288exit			Exits GQradio.
289exit.nomute		Exits GQradio without muting the output.
290
291preset.set	X	Sets a preset.
292preset.clear		Clears the current preset.
293preset.clear_all	Clears the preset list.
294preset.scan	X	Auto scans available frequencies into preset list.
295
296mixer			Runs mixer application.
297mode			Toggles seek mode (manual, preset, auto)
298mute		X	Mute radio tuner.
299
300seek.up			Seeks up using the current seek mode.
301seek.down		Seeks down using the current seek mode.
302
303seek.up.preset		Change to the next available preset.
304seek.down.preset	Change to the previous available preset.
305
306seek.up.manual		Increment frequency up.
307seek.down.manual	Increment frequency down.
308
309seek.up.auto		Seek up using auto tune.
310seek.down.auto		Seek down using auto tune.
311
312volume.up		Adjust volume up.
313volume.down		Adjust volume down.
314balance.left		Adjust balance left.
315balance.right		Adjust balance right.
316
317skin_editor		Opens skin editor.
318
319Format:
320-------
321
322[button_XXXX]
323image = file.png
324x = 0
325y = 0
326
327prelight = TRUE		(FALSE)
328indicator = TRUE	(FALSE)
329clip_mask = file.png	(none)
330id = text		(none)
331
332
333Keys:
334-----
335
336image:		File containing images horizontally for the button. Contains
337		the buttons horizontally in the order: normal, normal pressed,
338		normal active, normal active pressed, prelit, prelit active.
339		(see Notes)
340x, y:		Coordinates for placement of the button.
341prelight:	The button contains a mouse-over prelight.
342indicator:	The button contains a status indicator.
343clip_mask:	Image file containing a clip mask for the shape of the button.
344id:		Nickname to use for this widget, when grouping.
345
346Notes:
347------
348
349Reference for button options:
350Options:             |# images|Normal|Pressed| Lit  |  Lit  |Prelit|Prelit    |
351prelight | indicator | total  |      |       |Normal|Pressed|Normal|Lit Normal|
352---------------------+--------+------+-------+------+-------+------+----------+
353    F    |     F     |   2    |  X   |   X   |      |       |      |          |
354    T    |     F     |   3    |  X   |   X   |      |       |  X   |          |
355    F    |     T     |   4    |  X   |   X   |  X   |   X   |      |          |
356    T    |     T     |   6    |  X   |   X   |  X   |   X   |  X   |    X     |
357
358
359==============================                                 [section:digit]
360digit_XXXX
361==============================
362
363Recognized digits:
364------------------
365
366In place of XXXX can be any name, this will be the id to use when referencing
367the digit from a number.
368Note: Digits must be defined before a number can reference them.
369      (place numbers after digits in the skindata file)
370
371Format:
372-------
373
374[digit_XXXX]
375image = file.png
376id = text		(none)
377
378Keys:
379-----
380image:		File containing images horizontally for the digits in order
381		0 to 9, and a blank space (11 sections total).
382		[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, blank]
383
384id:		Nickname to use for this widget, when grouping.
385
386
387==============================                                [section:number]
388number_XXXX
389==============================
390
391Recognized numbers:
392-------------------
393
394Use in place of XXXX, the second column is a text description of the button.
395
396freq.major	The integer part of the frequency (XXX.00)
397freq.minor	The decimal part of the frequency (000.XX)
398preset		The current preset number.
399
400Format:
401-------
402
403[number_XXXX]
404image = file.png
405digit = id		(supply either an image _or_ digit key)
406length = 2
407x = 0
408y = 0
409
410zeros = TRUE		(FALSE)
411center = TRUE		(FALSE)
412rotation = 90		(0)
413
414id = text		(none)
415
416
417Keys:
418-----
419
420image:		File containing digit images (see digit_XXXX).
421digit:		Id (name) of a previously defined digit.
422		NOTE: Supply either one of the image _or_ digit keys, if both
423		are defined, image is used.
424x, y:		Coordinates for placement of the number.
425length:		Number of digits in the number.
426
427zeros:		Pad the number with leading zeros (for minutes, seconds, etc.).
428center:		Center justify the number within it's length.
429rotation:	Angle at which to draw the text. The standard angle is 0, and
430		increases clockwise in 90 degree increments. Using this method,
431		the only valid values are 0, 90, 180, and 270. All others are
432		read as 0.
433
434id:		Nickname to use for this widget, when grouping.
435
436
437==============================                                  [section:font]
438font_XXXX
439==============================
440
441Recognized fonts:
442----------------
443
444In place of XXXX can be any name, this will be the id to use when referencing
445the font from another widget.
446Note: Fonts must be defined before another widget references them.
447      (place text after fonts in the skindata file)
448
449Format:
450-------
451
452[font_XXXX]
453image = file.png
454extended = TRUE		(FALSE)
455
456description = Serif 16	(Sans 12)
457
458id = text		(none)
459
460Keys:
461-----
462image:		File containing images for a fixed font. With 3 or 6 lines of
463		32 characters each (see table below). The image key has
464		precedence over the description key.
465extended:	The image file also includes extended characters (6 lines).
466description:	Font description for this font. Please specify as generic of
467		a description as needed for the target font so that it has a
468		greater chance of working on other systems/locales.
469		Image has precedence over this key.
470id:		Nickname to use for this widget, when grouping.
471
472Notes:
473------
474
475   Please specify one image or description key, if both exist, image is used.
476
477   Description field compatibility: XFLD font descriptions are automatically
478   converted for compatibility with older skins, but are no longer officially
479   supported by the skin spec (as of SLIK 0.91.0). An XFLD description is of
480   the format: -*-helvetica-medium-*-*-*-10-*-*-*-*-*-*-*
481   Please do not use the old X font descriptions in new skins! The new
482   supported format examples:
483
484           Sans Bold 10
485           Bitstream Vera Serif 12
486           Courier Bold Italic 18
487
488   For the image file, the characters are represented in a grid of 32 colums
489   and 3 (or 6) rows. The characters are listed in three rows below so that
490   they can be copied and pasted into your graphics program. (the first
491   character in the top line is a space):
492
493            !"#$%&'()*+,-./0123456789:;<=>?
494           @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
495           `abcdefghijklmnopqrstuvwxyz{|}~
496
497   When extended is TRUE these are the 3 addition lines of international
498   characters:
499
500            �������������������������������
501           ��������������������������������
502           ��������������������������������
503
504
505==============================                                  [section:text]
506text_XXXX
507==============================
508
509Recognized text:
510----------------
511
512Use in place of XXXX, the second column is a text description of the text.
513
514preset.description	The current preset description.
515
516Format:
517-------
518
519[text_XXXX]
520image = file.png	(supply either an image, font, _or_ description key)
521font = id_text		(supply either an image, font, _or_ description key)
522width = 64
523length = 2		(0, only used for backwards compatibility)
524
525description = -*-*-*-*-*-*-*-*-*-*-*-*-*-*
526			(supply either an image, font, _or_ description key)
527
528red = 128		(0)
529green = 128		(0)
530blue = 128		(0)
531alpha = 128		(255)
532
533x = 0
534y = 0
535
536extended = TRUE		(FALSE)
537sizeable = TRUE		(FALSE)
538rotation = 90		(0)
539
540data = default_text	(none)
541
542id = text		(none)
543
544Keys:
545-----
546image:		File containing images for a fixed font. With 3 or 6 lines of
547		32 characters each. (see table in Font section, above)
548font:		Id (name) of a previously defined font.
549description:	Font description for this font. Please see the font section
550		for details of this field. (example: Sans 12)
551red, green,
552blue, alpha:	The color attributes in RGB format when using an X font. Valid
553		values are 0 to 255. Ignored for images.
554
555x, y:		Coordinates for placement of the text.
556width:		Width of the text field, in pixels.
557
558length:		Number of characters in the text field. (Maintained for
559		backwards compatibility only, use width for new skins.)
560
561extended:	The image file includes extended characters (6 lines).
562		NOTE: Ignored when font is defined, as font widgets already
563		include this information.
564sizeable:	When true, length will be dynamically adjusted to match the size
565		of the skin as it changes.
566rotation:	Angle at which to draw the text. The standard angle is 0, and
567		increases clockwise in 90 degree increments. Using this method,
568		the only valid values are 0, 90, 180, and 270. All others are
569		read as 0.
570data:		The text defined here is used as the default for the text
571		widget, it is only used when the application does not register
572		a matching key.
573
574id:		Nickname to use for this widget, when grouping.
575
576Notes:
577------
578
579   Supply either one of the image, font, _or_ description keys, if more than one
580   is defined, the order of key precedence is: image, description, font.
581
582
583==============================                                [section:slider]
584slider_XXXX
585==============================
586
587Recognized sliders:
588-------------------
589
590Use in place of XXXX, the second column is a text description of the slider.
591
592balance		The balance (left to right).
593volume		The volume.
594
595Format:
596-------
597
598[slider_XXXX]
599image = file.png
600length = 10
601x = 0
602y = 0
603vertical = TRUE		(FALSE)
604pressable = TRUE	(FALSE)
605prelight = FALSE	(FALSE)
606reversed = TRUE		(FALSE)
607
608sizeable = TRUE		(FALSE)
609trough_length = 20	(uses length)
610border_1 = 2		(0)
611border_2 = 2		(0)
612stretch = TRUE		(FALSE)
613
614item_key = key		(none)
615
616id = text		(none)
617
618Keys:
619-----
620image:		File containing slider images. In order of trough (background),
621		handle normal, handle pressed, and handle prelit. The images
622		are in order horizontally for horizontal slider, and
623		vertically for vertical slider.
624length:		Length of the slider trough (background) area.
625x, y:		Coordinates for placement of the slider.
626pressable:	The handle contains an image to indicate button press.
627prelight:	The handle contains an image to indicate mouse-over
628		prelighting.
629reversed:	Swaps the direction of the handle's movement, normally left to
630		right (vertical top to bottom) to right to left (bottom to
631		top).
632
633sizeable:	When true, trough_length will be dynamically adjusted to match
634		the size of the skin as it changes.
635trough_length:	If defined, this is the size to use as the length of the
636		widget (for backwards compatibility length is used to define
637		the actual trough image's size). When not defined length is
638		used.
639border_1,
640border_2:	The border sizes of the trough image when trough_length does
641		not match length. For vertical sliders this is top and bottom,
642		respectively, for Horizontal this is left and right.
643stretch:	When true, the remaining center portion of the trough (after
644		accounting for borders) is scaled to fill required space. The
645		default is to tile this area.
646
647item_key:	Key reference of an item that updates with the slider in such
648		a way that the item's image is drawn underneath the handle.
649
650id:		Nickname to use for this widget, when grouping.
651
652
653==============================                                  [section:dial]
654dial_XXXX
655==============================
656
657Recognized dials:
658-----------------
659
660Use in place of XXXX, the second column is a text description of the dial.
661
662balance		The balance (left to right).
663volume		The volume.
664
665Format:
666-------
667
668[dial_XXXX]
669image = file.png
670axis_x = 0
671axis_y = 0
672angle_begin = 0
673angle_end = 359
674handle_offset_x = 24
675handle_offset_y = 24
676clip_x = 0
677clip_y = 0
678clip_width = 32
679clip_height = 32
680pressable = TRUE	(FALSE)
681prelight = TRUE		(FALSE)
682reversed = TRUE		(FALSE)
683clip_mask = file.png	(none)
684
685fixed_handle = TRUE	(FALSE)
686fixed_radius = 100	(required when fixed_handle is TRUE)
687
688item_key = key		(none)
689
690id = text		(none)
691
692
693Keys:
694-----
695image:		File containing handle images vertically. In order of normal,
696		pressed, and prelit.
697axis_x, axis_y:	Center of rotation of handle relative to background.
698angle_begin,
699angle_end:	Endpoints of the handle's rotation in degrees, values are
700		from 0 to 359. 0 is far right point, increments clockwise.
701handle_offset_x,
702handle_offset_y:Position relative to handle image's upper left corner that
703		represents the handle rotation point, not necessarily
704		within the image.
705clip_x, clip_y:	Location of the clipping region (or clip mask) relative to
706		the background.
707clip_width,
708clip_height:	Height and width of the clipping region, not needed when
709		clip_mask is defined, since they are then taken from the
710		mask image's dimensions.
711clip_mask:	File containing image with transparency defining the
712		clipping mask for the dial.
713pressable:	The handle contains an image to indicate button press.
714prelight:	The handle contains an image to indicate mouse-over
715		prelighting.
716reversed:	Swaps the direction of the handle's rotation such that it
717		moves counterclockwise from angle_end to angle_start. The
718		default is to move counterclockwise from angle_start to
719		angle_end.
720
721fixed_handle:	When TRUE, the handle is drawn without rotation. Instead of
722		rotating the image, the handle image location is positioned
723		in an arc (of radius, below) such that is revolves around
724		the center axis.
725fixed_radius:	The distance to place the handle from the center axis, when
726		fixed_handle is TRUE, ignored otherwise.
727
728item_key:	Key reference of an item that updates with the dial in such
729		a way that the item's image is drawn underneath the handle.
730
731
732id:		Nickname to use for this widget, when grouping.
733
734Note: A dial draws the handle image in one of two styles, specified with the
735      fixed_handle parameter. There are two main differences: A fixed dial
736      is drawn with a static handle, that is the image itself is not rotated,
737      but merely moves around the center point. The other difference is that
738      a fixed dial's handle uses the fixed_radius to determine the distance
739      from the center axis point, the other ignores radius and uses the handle
740      offset values to overlay the handle's center point over the center axis.
741
742
743==============================                                [section:list]
744list_XXXX
745==============================
746
747Recognized lists:
748-------------------
749
750Use in place of XXXX, the second column is a text description of the list,
751extra lines describe each supported column key for that list.
752
753presets		The preset list.
754	number		Preset number.
755	frequency	Preset frequency.
756	description	Preset description.
757
758Format:
759-------
760
761[list_XXXX]
762image = file.png
763x = 0
764y = 0
765width = 20
766height  20
767sizeable = TRUE		(FALSE)
768columns = 2
769columns_right_justify = TRUE	(FALSE)
770
771border_top = 1
772border_right = 1
773border_bottom = 1
774border_left = 1
775center_stretch = TRUE	(FALSE)
776
777row_image = file.png
778row_pressable = TRUE	(FALSE)
779row_prelight = TRUE	(FALSE)
780row_border_left = 1
781row_border_right = 1
782row_stretch = TRUE	(FALSE)
783
784text_image = file.png
785text_extended = TRUE	(FALSE)
786
787text_font = Serif 10	(Sans 12)
788text_red = 128		(0)
789text_green = 128	(0)
790text_blue = 128		(0)
791text_alpha = 128	(255)
792
793divider_image = fl.png	(none)
794flag_image = file.png	(none)
795flag_sections = 4	(1)
796flag_column = 1		(0)
797
798column_#_key = key		(NULL, or blank)
799column_#_width = 42		(1)
800column_#_proportional = TRUE	(fixed width)
801column_#_right_justify = TRUE	(left justify)
802
803item_key = key		(none)
804
805id = text		(none)
806
807Keys:
808-----
809image:		File containing the list image background. This is where the
810		borders are also defined, remaining space is considered the
811		center.
812x, y:		Coordinates for placement of the slider.
813width, height:	Default size of the widget.
814sizeable:	The list size expands and shrinks with the skin size, note that
815		anchors should always remain default (top, left) when this is
816		enabled.
817columns		Number of columns in the list (should have corresponding number
818		of columns (0 to columns - 1) defined.
819		(see column_#_..., below.)
820columns_right_justify: When TRUE, the columns widths are calculated right to
821		left, but maintain the left to right (0, 1, 2, ...) order.
822
823border_top,
824border_right,
825border_bottom,
826border_left:	Size of the image borders.
827center_stretch:	Indicates if the center portion (see image, above) should be
828		scaled to fill the center of the list. The default is to fill
829		by tiling this image.
830
831row_image:	File containing the row images, vertically from top standard,
832		pressed, and prelight. Depending on row_pressable and
833		row_prelight, this image contains 1 to 3 images.
834row_pressable:	The row_image file includes a representation of the row being
835		pressed.
836row_prelight:	The row_image file includes a representation of the row being
837		prelighted.
838row_border_left,
839row_border_right: The left and right border size of row_image, above.
840row_stretch:	Indicates if the center portion of the row image should be
841		scaled to fit the entire row. The default is to tile the image
842		to fill the row.
843
844text_image:	Image containing the list text characters (font), please see
845		the Text widget for format and character chart reference.
846text_extended:	The text_image includes 3 additional rows of extended
847		(international) characters (see Text widget).
848
849text_font:	Font description for this font. Please see the font section
850		for details of this field. (Specify only one of either the
851		text_image or text_font keys.)
852text_red,
853text_green,
854text_blue,
855text_alpha:	Color to use for the text_font, in RGB format, ignored for
856		image fonts (text_image).
857
858divider_image:	File containing an image for the divider between columns. If
859		not specified each column is separated by a width of 3 pixels.
860flag_image:	File containing images representing row flags (icons), this
861		works the same way as for Item widgets (see Item widget for
862		detailed file format info).
863flag_sections:	The number of section in the flag_image.
864flag_column:	The column that displays the flag_image.
865
866{ Note: '#' should replaced by the column being defined (0 to columns - 1) }
867column_#_key:		The text key identifying this column.
868column_#_width:		The width of the column in pixels.
869column_#_proportional:	When TRUE, the width of the column (above) is
870			interpreted as a percentage of the list's width. The
871			valid range when thhis is true is 1 to 100.
872column_#_right_justify: The text in the column should be right justified.
873
874item_key:	Key reference of an item that updates with the slider in such
875		a way that the item's image is drawn underneath the handle.
876
877id:		Nickname to use for this widget, when grouping.
878
879Signals:
880--------
881
882The list widget registers these signals, XXXX is replaced by the list name,
883the second column is the widget type, and the third is a brief description.
884If you want the list to actually scroll, set up these widgets.
885
886list_XXXX_scroll_down		button		Scrolls the list down.
887list_XXXX_scroll_up		button		Scrolls the list up.
888list_XXXX_scroll		slider		Scrolls the list.
889
890
891==============================                                  [section:decal]
892decal_XXXX
893==============================
894
895Recognized decals:
896-----------------
897
898Use in place of XXXX, the second column is a text description of the decal.
899
900Format:
901-------
902
903[decal_XXXX]
904image = file.png	(none, uses rectangle of color
905			 rect_red, rect_green, rect_blue)
906
907x = 0
908y = 0
909width = 64
910height = 64
911
912sizeable = TRUE		(FALSE)
913alpha = 64		(255)
914
915border_left = 4		(0)
916border_right = 4	(0)
917border_top = 5		(0)
918border_bottom =5	(0)
919
920stretch = TRUE		(FALSE)
921border_stretch = TRUE	(FALSE)
922
923rect_red = 128		(0)
924rect_green = 128	(0)
925rect_blue = 128		(0)
926rect_fill = TRUE	(FALSE)
927
928data = some text	(none)
929
930id = text		(none)
931
932Keys:
933-----
934image:		File containing images for decal.
935
936x, y:		Coordinates for placement of the decal.
937width, height:	Size of the decal, in pixels.
938
939sizeable:	When true, size will be dynamically adjusted to match the size
940		of the skin as it changes.
941alpha:		Transparency to use when drawing onto background, range is
942		0 (invisible) to 255 (fully visible).
943
944border_left,
945border_right,
946border_top,
947border_bottom:	Border size. For decals with an image, this indicates the edge
948		size of the source image to use as the edges of the decal, the
949		remaining center portion of the image is tiled or stretched
950		(see stretch option) to fill the decal.
951		If no image is defined, this is the border size of the unfilled
952		rectangle (see rect_fill option for fill details).
953
954stretch:	If true, the source image is scaled to fit the decal size,
955		after accounting for border sizes. If false the source image
956		is tiled.
957border_stretch:	If true stretch borders to fill decal size, if false the
958		borders are tiled.
959
960rect_red,
961rect_green,
962rect_blue:	The color attributes in RGB format when drawing the decal
963		rectangle. Values are 0 to 255. Only has effect when no image
964		is defined. To fill the rectangle set rect_fill true.
965rect_fill:	When true, the color rectangle is drawn filled. When false the
966		color rectangle is drawn with border sizes defined by the
967		border_X options.
968
969id:		Nickname to use for this widget, when grouping.
970
971Notes:
972------
973
974   Decals can overlap other widget types (even other decals), decals will
975   always be drawn under other widget types as they have their own layer.
976
977
978------------------------------------------------------------------------------
979Menus:                                                        [section:menus]
980------------------------------------------------------------------------------
981
982Skinned menus are made using the same method as a normal skin, the data file
983is usually name skindata_menu.
984
985Menu skins have the following unique conditions:
986
987List "menu" widget:
988-------------------
989
990A list widget with the key "menu" must be present, this list is used to
991display the menu items. The menu item text is displayed in the column with
992key "text". The menu list also supports a flag icon with 4 sections, those
993sections in order are:
994
995   Blank, Submenu indicator, toggled item Unchecked, toggled item Checked
996
997The list widget must also be sizeable (sizable = TRUE), so that it grows when
998the skin is sized to hold all menu items.
999
1000The size of the menu list (as saved in the skindata file) should be such that:
1001
1002   Height (height = value) is equal the size required to display one (1) row.
1003
1004   Width (width = vale) is equal the size required to display 0 characters in
1005                        the "text' column, and should include the width
1006                        needed for the flag column (flag_column = value).
1007
1008Note: Lists have the ability to calculate the column widths right to left,
1009      the ability was added specifically so that menus can have the flag
1010      column on the right of the menu text. (columns_right_justify = TRUE)
1011
1012Menu background attributes:
1013---------------------------
1014
1015The default skin skize should be the size needed to correctly hold the "menu"
1016list widget. Since the skin will be automatically sized up from this default,
1017the background should also scale well asthetically, use the approprate
1018background options (has_border, border_left, etc.).
1019
1020The skin minimum size, maximum size, size increments, and sizeable flag are
1021ignored. The final size is determined by the number of menu items and the menu
1022item with the longest text description.
1023
1024For transparent menu simulation, set option transparent = TRUE.
1025
1026Submenus:
1027---------
1028
1029Submenu skins can be different from the 'parent'. To do this set the "data"
1030field for the "menu" list widget to the filename for the submenu's skindata
1031file. All submenus of the parent will then use that skin.
1032
1033Other widgets:
1034--------------
1035
1036All widgets other than the "menu" list work normally. Remember that a widget
1037can be anchored to the bottom and right (anchor_bottom, anchor_right), so that
1038it maintains it's respective position as the menu is automatically sized to
1039accomodate the menu items.
1040
1041Note: If the application sets the menu as a child of a window, the menu will
1042      inherit support of all the widgets the parent supports.
1043
1044
1045------------------------------------------------------------------------------
1046Sub Windows:                                             [section:subwindows]
1047------------------------------------------------------------------------------
1048
1049Sub windows are those that are created when the "skin_open" button is pressed.
1050To allow the user to close the window add a "skin_close" button to the window.
1051
1052These windows support all widget keys supported by the parent.
1053
1054
1055============== EOF ==============
1056
1057
1058