
                                                                 [section:top]

         ############ SLIK basic skin specifications file ############

              (SLIK: SimpLIstic sKin interface - revision 0.13.0)

                           Sound Monitor applet 1.99.0

Skin hierarchy:
   Skins are simply a directory which contain image files and one or more
   skindata files, usually named skindata or skindata_*.

 Sound Monitor NOTE: The order of the skindata files are as follows:

	data file (horizontal)  | max pixels | vertical
	=================================================
	         skindata_h_tiny      25      skindata_v_tiny
	         skindata_h_small     36      skindata_v_small
	         skindata_h           48      skindata_v
	         skindata_h_large     64      skindata_v_large
	         skindata_h_huge      80      skindata_v_huge

      skindata_h is required for the properties dialog to recognize the skin.
      The applet falls back to the next nearest size if the optimum one
      cannot be found, as a last resort the standard (48) size is used, then
      finally if that fails the opposing standard orientation is tried.

 Sound Monitor supports the following skin widget types:

   item, meter, scope, spectrum, button (for applet sizing only, key skin_size)

   the text widget can be used to display text within a skin.

   Using the skin_open button to open a new window will most likely work, but
   is not tested at this time.

The skindata file(s):
   All skin features are configured in the skindata file. A skin's default mode
   is always defined in the file named 'skindata', which can then contain
   buttons (key: "skin_toggle") that link to other skindata type files for
   changing the layout/size of the skin. Empty lines, and those beginning with
   a '#' (for comments) are ignored.

Image files:
   All image files can be any size, in most cases the drawing data will be
   calculated automatically. Skins can have any size buttons, items, digits,
   etc. The files can be of any type supported by gdk-pixbuf (xpm, png,
   jpeg, gif, etc.) The recommended file format is png.

Image contents:
  Every image within a file must have the same width and height, for example
  if the play button was 30 by 20, the resulting image file would be
  180 by 20. (6 button states total, including status lights and prelights)

  Addendum: If the above button was specified with the status light and
            prelight options as false, the resulting image file would be
            60 by 20. (2 button states total, 1 for normal, 1 for pressed)

Required elements:
  Only section [main] is required , everything else is optional (although it
  would be nice to always have a play button :)

Transparency:
  The main background image uses a threshold of 1 (out of 256 levels) for the
  window shape, the rest is used for partially overwriting the background when
  the Transparency option is true.

  If a mask file is specified, the threshold changes to 128 (of 256 levels).
  The 'mask = file.png' option is provided for backwards compatibility only.

  Portions of items, buttons, sliders, numbers, and text that never change and
  are the same as the background image (example: round buttons) should be set
  transparent so that the 'force transparent' option works properly.

All widgets recognize the following keys:
-----------------------------------------

anchor_right,
anchor_bottom:	When a skin changes size, this defines how a widget will be
		positioned. Anchor right will will keep the widget the same
		distance from the right side of the skin, bottom works in the
		same way. 
data:		Data defined for the widget. This is generic text, some widgets
		will use this. Also applications can access the text in this
		field (app access is read only).
id:		Nickname to use for this widget, when grouping (unimplemented).


------------------------------------------------------------------------------
Recognized format subsections:
------------------------------------------------------------------------------


Note: Keys that contain text in parenthesis '()' are optional, and describe
      the default behavior when the key is ommited.


==============================                                  [section:main]
main
==============================

This section is required in all skindata files, image must be valid.

Format:
-------

[main]
image = file.png

mask = file.png		(mask from 'image')
transparent = TRUE	(FALSE)
id = text		(none)

border = TRUE		(FALSE)

border_left = 3		(1)
border_right = 3	(1)
border_top = 3		(1)
border_bottom = 3	(1)

border_left_stretch = TRUE	(FALSE)
border_right_stretch = TRUE	(FALSE)
border_top_stretch = TRUE	(FALSE)
border_bottom_stretch = TRUE	(FALSE)

stretch = TRUE		(FALSE)

sizeable = TRUE		(FALSE)

width = 20		(taken from 'image' size)
height = 20		(taken from 'image' size)

width_min = 10		(taken from 'width')
width_max = 30		(taken from 'height')
height_min = 10		(taken from 'width')
height_max = 30		(taken from 'height')
width_increment = 5	(1)
height_increment = 5	(1)

focus = file.png	(none, uses rectangle with colors r, g, b)

focus_has_border = TRUE	(FALSE)
focus_border_left = 1	(0)
focus_border_right = 1	(0)
focus_border_top = 1	(0)
focus_border_bottom = 1	(0)

focus_anchor_right = TRUE	(FALSE)
focus_anchor_bottom = TRUE	(FALSE)

focus_filled = TRUE	(FALSE)
focus_red = 128		(255)
focus_green = 128	(0)
focus_blue = 128	(0)

focus_alpha = 255	(128)

focus_stretch = TRUE	(unimplemented)

Keys:
-----

image:		Background image file.
mask:		Background mask file.
		NOTE: This is a depreciated option, masks should now be
		included with 'image' file.

border:		When TRUE, 'image' contains border images.

border_left,
border_right,
border_top,
border_bottom:	Size of the background borders.

border_*_stretch:
		If TRUE, scale the respective (*) border image to fit within
		the actual size, when FALSE the border image is tiled.

stretch:	If TRUE, scale the image to fit within the actual window size,
		when FALSE the image is tiled.

sizeable:	TRUE if the window is to be resizeable. FALSE is a window with
		fixed size.
width_min/max:	Minimum and maximum width when resizing the window.
height_min/max: Minimum and maximum height when resizing the window.

width_increment,
height_increment:
		When resizing window, lock the size into steps of this value.

transparent:	TRUE if the skin has alpha channel transparent areas, and
		therefore should also capture the root window background.
		(Sound Monitor NOTE: when TRUE this shows the desktop root
		 window as the background of the applet instead of the panel
		 background.)

Shaped window note:
-------------------
    To have a shaped window simply supply 'image' with an alpha channel
    (transparency). The cutoff alpha level for shaped windows is 1 for
    'image' and 123 for 'mask'.

    Use of 'mask' is discouraged, since it is ignored for sizeable windows.
    Simply give 'image' an alpha channel (transparency) instead.

focus:		Image file to use for the focus, if not specified a rectangle
		with color focus_red, focus_green, focus_blue (below) is used.

focus_has_border: When TRUE, the image is drawn in in rectangular form, and
		the 'center' of the image is ignored. The rectangle size is
		determined y the focus_border_??? options, below.

focus_border_left:
focus_border_right:
focus_border_top:
focus_border_bottom: The respective sizes of the focus border with respect to
		the focus image. The image borders are tiled to fit the
		widget size.

focus_anchor_right: When TRUE, the focus image is aligned to the right side of
		the widget with the focus. Ignored if focus has a border.
focus_anchor_bottom: When TRUE, the focus image is aligned to the bottom side
		of the widget with the focus. Ignored if focus has a border.

focus_filled:	When TRUE, the focus rectangle is a solid rectangle. Only has
		effect when there is no focus image.

focus_red:
focus_green:
focus_blue:	When no focus image is specified, these are the color
		attributes to use when drawing the focus rectangle. Values are
		valid from 0 to 255.

focus_alpha:	The transparency to use when drawing the focus overlay, valid
		values are 0 to 255. (255 is fully visible, 128 half, ...)

focus_stretch:	Unimplemented.


==============================                                  [section:item]
item_XXXX
==============================

Recognized items:
-----------------

Use in place of XXXX, the second column is number of sections, the third column
is a text description of each section.
(second column key: A = animation; I = incremental by percentage (min to max) )

left		I	Shows sound volume level of the left channel.
right		I	Shows sound volume level of the right channel.
main		I	Shows sound volume level of both channels.
status		4	Esound status: error, standby, autostandby, ready

Format:
-------

[item_XXXX]
image = file.png
sections = 2
x = 0
y = 0

animated = TRUE		(FALSE, reserved: FIXME)
id = text		(none)

Keys:
-----

image:		File containing images vertically for the item.
x, y:		Coordinates for placement of the item.
sections:	Number of images vertically in 'image' file.
animated:	Item is animated (first section is blank, rest are animation
		frame loop.
id:		Nickname to use for this widget, when grouping.


==============================                                [section:button]
button_XXXX
==============================

Recognized buttons:
-------------------

Use in place of XXXX, the second column indicates if the button supports
an indicator, the third column is a text description of the button.

Reserved:
  skin_toggle		Change to skin mode_key held in 'data'.
			(If data is empty the default, "skindata", is assumed.)
  skin_size		Drag the button to change the skin's size.
			(Ignored if skin is not sizeable.)
  skin_expand	X	Change size of skin by text held in 'data'
			"[+/-]x [+/-]y" subsequent press reverts to original
			size. The indicator is off in the default state.
  skin_iconify		Iconifies the window.
  skin_open		Similar to skin_toggle, but opens a new window.
  skin_close		Close the current window, ignored for top level (main) window.

empty_slot	X	Description.

Format:
-------

[button_XXXX]
image = file.png
x = 0
y = 0

prelight = TRUE		(FALSE)
indicator = TRUE	(FALSE)
clip_mask = file.png	(none)
id = text		(none)


Keys:
-----

image:		File containing images horizontally for the button. Contains
		the buttons horizontally in the order: normal, normal pressed,
		normal active, normal active pressed, prelit, prelit active.
		(see Notes)
x, y:		Coordinates for placement of the button.
prelight:	The button contains a mouse-over prelight.
indicator:	The button contains a status indicator.
clip_mask:	Image file containing a clip mask for the shape of the button.
id:		Nickname to use for this widget, when grouping.

Notes:
------

Reference for button options:
Options:             |# images|Normal|Pressed| Lit  |  Lit  |Prelit|Prelit    |
prelight | indicator | total  |      |       |Normal|Pressed|Normal|Lit Normal|
---------------------+--------+------+-------+------+-------+------+----------+
    F    |     F     |   2    |  X   |   X   |      |       |      |          |
    T    |     F     |   3    |  X   |   X   |      |       |  X   |          |
    F    |     T     |   4    |  X   |   X   |  X   |   X   |      |          |
    T    |     T     |   6    |  X   |   X   |  X   |   X   |  X   |    X     |


==============================                                 [section:digit]
digit_XXXX
==============================

Recognized digits:
------------------

In place of XXXX can be any name, this will be the id to use when referencing
the digit from a number.
Note: Digits must be defined before a number can reference them.
      (place numbers after digits in the skindata file)

Format:
-------

[digit_XXXX]
image = file.png
id = text		(none)

Keys:
-----
image:		File containing images horizontally for the digits in order
		0 to 9, and a blank space (11 sections total).
		[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, blank]

id:		Nickname to use for this widget, when grouping.


==============================                                [section:number]
number_XXXX
==============================

Recognized numbers:
-------------------

Use in place of XXXX, the second column is a text description of the button.

empty_slot	Description.

Format:
-------

[number_XXXX]
image = file.png
digit = id		(supply either an image _or_ digit key)
length = 2
x = 0
y = 0

zeros = TRUE		(FALSE)
center = TRUE		(FALSE)
rotation = 90		(0)

id = text		(none)


Keys:
-----

image:		File containing digit images (see digit_XXXX).
digit:		Id (name) of a previously defined digit.
		NOTE: Supply either one of the image _or_ digit keys, if both
		are defined, image is used.
x, y:		Coordinates for placement of the number.
length:		Number of digits in the number.

zeros:		Pad the number with leading zeros (for minutes, seconds, etc.).
center:		Center justify the number within it's length.
rotation:	Angle at which to draw the text. The standard angle is 0, and
		increases clockwise in 90 degree increments. Using this method,
		the only valid values are 0, 90, 180, and 270. All others are
		read as 0.

id:		Nickname to use for this widget, when grouping.


==============================                                  [section:font]
font_XXXX
==============================

Recognized fonts:
----------------

In place of XXXX can be any name, this will be the id to use when referencing
the font from another widget.
Note: Fonts must be defined before another widget references them.
      (place text after fonts in the skindata file)

Format:
-------

[font_XXXX]
image = file.png
extended = TRUE		(FALSE)

description = -*-*-*-*-*-*-*-*-*-*-*-*-*-*	(none)

id = text		(none)

Keys:
-----
image:		File containing images for a fixed font. With 3 or 6 lines of
		32 characters each (see table below). The image key has
		precedence over the description key.
extended:	The image file also includes extended characters (6 lines).
description:	X font description for this font. Please specify as generic of
		a description as needed for the target font so that it has a
		greater chance of working on other systems/locales.
		It is recommended to use the xfontsel program distributed with
		X window instead of the one built into the skin editor to
		generate the description. Image has precedence over this key.
id:		Nickname to use for this widget, when grouping.

Notes:
------

   Please specify one image or description key, if both exist, image is used.

   For the image file, the characters are represented in a grid of 32 colums
   and 3 (or 6) rows. The characters are listed in three rows below so that
   they can be copied and pasted into your graphics program. (the first
   character in the top line is a space):

            !"#$%&'()*+,-./0123456789:;<=>?
           @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
           `abcdefghijklmnopqrstuvwxyz{|}~ 

   When extended is TRUE these are the 3 addition lines of international
   characters:

            
           
           


==============================                                  [section:text]
text_XXXX
==============================

Recognized text:
----------------

Use in place of XXXX, the second column is a text description of the text.

empty_slot	Description.

Format:
-------

[text_XXXX]
image = file.png	(supply either an image, font, _or_ description key)
font = id_text		(supply either an image, font, _or_ description key)
width = 64
length = 2		(0, only used for backwards compatibility)

description = -*-*-*-*-*-*-*-*-*-*-*-*-*-*
			(supply either an image, font, _or_ description key)

red = 128		(0)
green = 128		(0)
blue = 128		(0)
alpha = 128		(255)

x = 0;
y = 0;

extended = TRUE		(FALSE)
sizeable = TRUE		(FALSE)
rotation = 90		(0)

data = default_text	(none)

id = text		(none)

Keys:
-----
image:		File containing images for a fixed font. With 3 or 6 lines of
		32 characters each. (see table in Font section, above)
font:		Id (name) of a previously defined font.
description:	X font description for this font. Please see the font section
		for details of this field.
red, green,
blue, alpha:	The color attributes in RGB format when using an X font. Valid
		values are 0 to 255. Ignored for images.

x, y:		Coordinates for placement of the text.
width:		Width of the text field, in pixels.

length:		Number of characters in the text field. (Maintained for
		backwards compatibility only, use width for new skins.)

extended:	The image file includes extended characters (6 lines).
		NOTE: Ignored when font is defined, as font widgets already
		include this information.
sizeable:	When true, length will be dynamically adjusted to match the size
		of the skin as it changes.
rotation:	Angle at which to draw the text. The standard angle is 0, and
		increases clockwise in 90 degree increments. Using this method,
		the only valid values are 0, 90, 180, and 270. All others are
		read as 0.
data:		The text defined here is used as the default for the text
		widget, it is only used when the application does not register
		a matching key.

id:		Nickname to use for this widget, when grouping.

Notes:
------

   Supply either one of the image, font, _or_ description keys, if more than one
   is defined, the order of key precedence is: image, description, font.


==============================                                [section:slider]
slider_XXXX
==============================

Recognized sliders:
-------------------

Use in place of XXXX, the second column is a text description of the slider.

empty_slot	Description.

Format:
-------

[slider_XXXX]
image = file.png
length = 10
x = 0
y = 0
vertical = TRUE		(FALSE)
pressable = TRUE	(FALSE)
prelight = FALSE	(FALSE)
reversed = TRUE		(FALSE)

sizeable = TRUE		(FALSE)
trough_length = 20	(uses length)
border_1 = 2		(0)
border_2 = 2		(0)
stretch = TRUE		(FALSE)

item_key = key		(none)

id = text		(none)

Keys:
-----
image:		File containing slider images. In order of trough (background),
		handle normal, handle pressed, and handle prelit. The images
		are in order horizontally for horizontal slider, and
		vertically for vertical slider.
length:		Length of the slider trough (background) area.
x, y:		Coordinates for placement of the slider.
pressable:	The handle contains an image to indicate button press.
prelight:	The handle contains an image to indicate mouse-over
		prelighting.
reversed:	Swaps the direction of the handle's movement, normally left to
		right (vertical top to bottom) to right to left (bottom to
		top).

sizeable:	When true, trough_length will be dynamically adjusted to match
		the size of the skin as it changes.
trough_length:	If defined, this is the size to use as the length of the
		widget (for backwards compatibility length is used to define
		the actual trough image's size). When not defined length is
		used.
border_1,
border_2:	The border sizes of the trough image when trough_length does
		not match length. For vertical sliders this is top and bottom,
		respectively, for Horizontal this is left and right.
stretch:	When true, the remaining center portion of the trough (after
		accounting for borders) is scaled to fill required space. The
		default is to tile this area.

item_key:	Key reference of an item that updates with the slider in such
		a way that the item's image is drawn underneath the handle.

id:		Nickname to use for this widget, when grouping.


==============================                                  [section:dial]
dial_XXXX
==============================

Recognized dials:
-----------------

Use in place of XXXX, the second column is a text description of the dial.

empty_slot	Description.

Format:
-------

[dial_XXXX]
image = file.png
axis_x = 0
axis_y = 0
angle_begin = 0
angle_end = 359
handle_offset_x = 24
handle_offset_y = 24
clip_x = 0
clip_y = 0
clip_width = 32
clip_height = 32
pressable = TRUE	(FALSE)
prelight = TRUE		(FALSE)
reversed = TRUE		(FALSE)
clip_mask = file.png	(none)

fixed_handle = TRUE	(FALSE)
fixed_radius = 100	(required when fixed_handle is TRUE)

item_key = key		(none)

id = text		(none)


Keys:
-----
image:		File containing handle images vertically. In order of normal,
		pressed, and prelit.
axis_x, axis_y:	Center of rotation of handle relative to background.
angle_begin,
angle_end:	Endpoints of the handle's rotation in degrees, values are
		from 0 to 359. 0 is far right point, increments clockwise.
handle_offset_x,
handle_offset_y:Position relative to handle image's upper left corner that
		represents the handle rotation point, not necessarily
		within the image.
clip_x, clip_y:	Location of the clipping region (or clip mask) relative to
		the background.
clip_width,
clip_height:	Height and width of the clipping region, not needed when
		clip_mask is defined, since they are then taken from the
		mask image's dimensions.
clip_mask:	File containing image with transparency defining the
		clipping mask for the dial.
pressable:	The handle contains an image to indicate button press.
prelight:	The handle contains an image to indicate mouse-over
		prelighting.
reversed:	Swaps the direction of the handle's rotation such that it
		moves counterclockwise from angle_end to angle_start. The
		default is to move counterclockwise from angle_start to
		angle_end.

fixed_handle:	When TRUE, the handle is drawn without rotation. Instead of
		rotating the image, the handle image location is positioned
		in an arc (of radius, below) such that is revolves around
		the center axis.
fixed_radius:	The distance to place the handle from the center axis, when
		fixed_handle is TRUE, ignored otherwise.

item_key:	Key reference of an item that updates with the dial in such
		a way that the item's image is drawn underneath the handle.


id:		Nickname to use for this widget, when grouping.

Note: A dial draws the handle image in one of two styles, specified with the
      fixed_handle parameter. There are two main differences: A fixed dial
      is drawn with a static handle, that is the image itself is not rotated,
      but merely moves around the center point. The other difference is that
      a fixed dial's handle uses the fixed_radius to determine the distance
      from the center axis point, the other ignores radius and uses the handle
      offset values to overlay the handle's center point over the center axis.


==============================                                [section:list]
list_XXXX
==============================

Recognized lists:
-------------------

Use in place of XXXX, the second column is a text description of the list,
extra lines describe each supported column key for that list.

empty_slot	Description.
	empty_column	column description.
	empty_column	column description.

Format:
-------

[list_XXXX]
image = file.png
x = 0
y = 0
width = 20
height  20
sizeable = TRUE		(FALSE)
columns = 2
columns_right_justify = TRUE	(FALSE)

border_top = 1
border_right = 1
border_bottom = 1
border_left = 1
center_stretch = TRUE	(FALSE)

row_image = file.png
row_pressable = TRUE	(FALSE)
row_prelight = TRUE	(FALSE)
row_border_left = 1
row_border_right = 1
row_stretch = TRUE	(FALSE)

text_image = file.png
text_extended = TRUE	(FALSE)

text_font = -*-*-*-*-*-*-*-*-*-*-*-*-*-*	(none)
text_red = 128		(0)
text_green = 128	(0)
text_blue = 128		(0)
text_alpha = 128	(255)

divider_image = fl.png	(none)
flag_image = file.png	(none)
flag_sections = 4	(1)
flag_column = 1		(0)

column_#_key = key		(NULL, or blank)
column_#_width = 42		(1)
column_#_proportional = TRUE	(fixed width)
column_#_right_justify = TRUE	(left justify)

item_key = key		(none)

id = text		(none)

Keys:
-----
image:		File containing the list image background. This is where the
		borders are also defined, remaining space is considered the
		center.
x, y:		Coordinates for placement of the slider.
width, height:	Default size of the widget.
sizeable:	The list size expands and shrinks with the skin size, note that
		anchors should always remain default (top, left) when this is
		enabled.
columns		Number of columns in the list (should have corresponding number
		of columns (0 to columns - 1) defined.
		(see column_#_..., below.)
columns_right_justify: When TRUE, the columns widths are calculated right to
		left, but maintain the left to right (0, 1, 2, ...) order.

border_top,
border_right,
border_bottom,
border_left:	Size of the image borders.
center_stretch:	Indicates if the center portion (see image, above) should be
		scaled to fill the center of the list. The default is to fill
		by tiling this image.

row_image:	File containing the row images, vertically from top standard,
		pressed, and prelight. Depending on row_pressable and
		row_prelight, this image contains 1 to 3 images.
row_pressable:	The row_image file includes a representation of the row being
		pressed.
row_prelight:	The row_image file includes a representation of the row being
		prelighted.
row_border_left,
row_border_right: The left and right border size of row_image, above.
row_stretch:	Indicates if the center portion of the row image should be
		scaled to fit the entire row. The default is to tile the image
		to fill the row.

text_image:	Image containing the list text characters (font), please see
		the Text widget for format and character chart reference.
text_extended:	The text_image includes 3 additional rows of extended
		(international) characters (see Text widget).

text_font:	X font description for this font. Please see the font section
		for details of this field. (Specify only one of either the 
		text_image or text_font keys.)
text_red,
text_green,
text_blue,
text_alpha:	Color to use for the text_font, in RGB format, ignored for
		image fonts (text_image).

divider_image:	File containing an image for the divider between columns. If
		not specified each column is separated by a width of 3 pixels.
flag_image:	File containing images representing row flags (icons), this
		works the same way as for Item widgets (see Item widget for
		detailed file format info).
flag_sections:	The number of section in the flag_image.
flag_column:	The column that displays the flag_image.

{ Note: '#' should replaced by the column being defined (0 to columns - 1) }
column_#_key:		The text key identifying this column.
column_#_width:		The width of the column in pixels.
column_#_proportional:	When TRUE, the width of the column (above) is
			interpreted as a percentage of the list's width. The
			valid range when thhis is true is 1 to 100.
column_#_right_justify: The text in the column should be right justified.

item_key:	Key reference of an item that updates with the slider in such
		a way that the item's image is drawn underneath the handle.

id:		Nickname to use for this widget, when grouping.

Signals:
--------

The list widget registers these signals, XXXX is replaced by the list name,
the second column is the widget type, and the third is a brief description.
If you want the list to actually scroll, set up these widgets.

list_XXXX_scroll_down		button		Scrolls the list down.
list_XXXX_scroll_up		button		Scrolls the list up.
list_XXXX_scroll		slider		Scrolls the list.


==============================                                  [section:meter]
meter_XXXX
==============================

Recognized meters:
-----------------

Use in place of XXXX, the second column is a description of the meter.

left		Shows sound volume level of the left channel.
right		Shows sound volume level of the right channel.
main		Shows sound volume level of both channels.

Format:
-------

[meter_XXXX]
image = file.png
segments = 2
x = 0
y = 0

horizontal = TRUE	(FALSE)
slide = TRUE		(FALSE)
id = text		(none)

Keys:
-----

image:		File containing 3 images vertically for the meter states.
		(1 is background, 2 is standard activity, 3 is peak).
x, y:		Coordinates for placement of the item.
segments:	Number of divisions in the meter. (the size of each segment
		is meter image size divided by segments).
horizontal:	The meter segments increase from left to right, the default is
		bottom to top.
slide:		The segments slide such that the top or right-most segment is
		seen first.
id:		Nickname to use for this widget, when grouping.


==============================                                  [section:spectrum]
spectrum_XXXX
==============================

Recognized spectrums:
---------------------

Use in place of XXXX, the second column is a description of the spectrum.

left		Shows spectrum analyzer for the left channel.
right		Shows spectrum analyzer for the right channel.
main		Shows spectrum analyzer for both channels.

Format:
-------

[spectrum_XXXX]
image = file.png
segments = 2
bands = 5
x = 0
y = 0

horizontal = TRUE	(FALSE)
slide = TRUE		(FALSE)

one_image = TRUE	(FALSE, when TRUE compatible with meter images)
dynamic = TRUE		(FALSE, requires one_image to be TRUE)

id = text		(none)

Keys:
-----

image:		File containing 3 images vertically for the spectrum states.
		(1 is background, 2 is standard activity, 3 is peak).
x, y:		Coordinates for placement of the item.
segments:	Number of divisions in each meter. (the size of each segment
		is spectrum image size divided by segments).
bands:		The number of bands in spectrum, maximum is 16.
horizontal:	The spectrum bands align from bottom to top, the default is
		left to right.
slide:		The segments slide such that the top or right-most segment is
		seen first.

one_image:	When true, the image contains only a single band
		representation. The width (or height if horizontal) is then
		determined by multiplying the number of bands by the image
		size. When this is enabled, the image format is the exact
		same as that of meter widgets, which can be very convenient.
dynamic:	This widget automatically resizes itself with the skin. Note
		that it only has effect when one_image is also TRUE.

id:		Nickname to use for this widget, when grouping.


==============================                                  [section:scope]
scope_XXXX
==============================

Recognized scopes:
------------------

Use in place of XXXX, the second column is a description of each scope.

main		Shows sound data as an oscilliscope.

Format:
-------

[scope_XXXX]
image = file.png
x = 0
y = 0
width = n		(when 0 or missing, determined by image size)
height = n		(when 0 or missing, determined by image size)

horizontal = TRUE	(FALSE)

stretch = TRUE		(FALSE)
dynamic = TRUE		(FALSE)

id = text		(none)

Keys:
-----

image:		File containing 2 images vertically, one for the background, a
		second for drawing the scope overlay points.
x, y:		Coordinates for placement of the item.
width, height:	The width and height of the scope, if 0 or missing, default to
		the image dimensions.

horizontal:	When TRUE the scope axis is vertical (top to bottom).

stretch:	When true, the image is scaled to fit the specified scope size,
		when false the image is tiled if the specified size is larger
		than the image.
dynamic:	This widget automatically resizes itself with the skin.

id:		Nickname to use for this widget, when grouping.


==============================                                  [section:overlay]
overlay_XXXX
==============================

Recognized overlays:
--------------------

Use in place of XXXX, the second column is a description of each overlay.

empty_slot	Description.

Format:
-------

[overlay_XXXX]
x = 0
y = 0
width = n
height = n

dynamic = TRUE		(FALSE)

id = text		(none)

Keys:
-----

x, y:		Coordinates for placement of the overlay.
width, height:	The width and height of the overlay.

dynamic:	This widget automatically resizes itself with the skin.

id:		Nickname to use for this widget, when grouping.


------------------------------------------------------------------------------
Menus:                                                        [section:menus]
------------------------------------------------------------------------------

Skinned menus are made using the same method as a normal skin, the data file
is usually name skindata_menu.

Menu skins have the following unique conditions:

List "menu" widget:
-------------------

A list widget with the key "menu" must be present, this list is used to
display the menu items. The menu item text is displayed in the column with
key "text". The menu list also supports a flag icon with 4 sections, those
sections in order are:

   Blank, Submenu indicator, toggled item Unchecked, toggled item Checked

The list widget must also be sizeable (sizable = TRUE), so that it grows when
the skin is sized to hold all menu items.

The size of the menu list (as saved in the skindata file) should be such that:

   Height (height = value) is equal the size required to display one (1) row.

   Width (width = vale) is equal the size required to display 0 characters in
                        the "text' column, and should include the width
                        needed for the flag column (flag_column = value).

Note: Lists have the ability to calculate the column widths right to left,
      the ability was added specifically so that menus can have the flag
      column on the right of the menu text. (columns_right_justify = TRUE)

Menu background attributes:
---------------------------

The default skin skize should be the size needed to correctly hold the "menu"
list widget. Since the skin will be automatically sized up from this default,
the background should also scale well asthetically, use the approprate
background options (has_border, border_left, etc.).

The skin minimum size, maximum size, size increments, and sizeable flag are
ignored. The final size is determined by the number of menu items and the menu
item with the longest text description.

For transparent menu simulation, set option transparent = TRUE.

Submenus:
---------

Submenu skins can be different from the 'parent'. To do this set the "data"
field for the "menu" list widget to the filename for the submenu's skindata
file. All submenus of the parent will then use that skin.

Other widgets:
--------------

All widgets other than the "menu" list work normally. Remember that a widget
can be anchored to the bottom and right (anchor_bottom, anchor_right), so that
it maintains it's respective position as the menu is automatically sized to
accomodate the menu items.

Note: If the application sets the menu as a child of a window, the menu will
      inherit support of all the widgets the parent supports.


------------------------------------------------------------------------------
Sub Windows:                                             [section:subwindows]
------------------------------------------------------------------------------

Sub windows are those that are created when the "skin_open" button is pressed.
To allow the user to close the window add a "skin_close" button to the window.

These windows support all widget keys supported by the parent.


============== EOF ==============

