[section:top] ############ SLIK basic skin specifications file ############ (SLIK: SimpLIstic sKin interface - revision 0.13.0) GQmpeg - 0.17.0 Skin hierarchy: Skins are simply a directory which contain image files and one or more skindata files, usually named skindata or skindata_*. 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. 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. 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. ============================== [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) ) balance I balance left, ... , balance right load A blank, [loading frame 1, ... , loading frame x (A - 1)] loop_ab 2 off, on minus 2 time counts up, time counts down mpeglayer 4 blank, 1, 2, 3 mpegmode 5 blank, stereo, joint-stereo, dual-chan., single-chan. mpegversion 3 blank, 1, 2 position I song beginning, ... , song end repeat 2 off, on repeat_1 2 off, on shuffle 2 off, on status 3 stop, pause, play stereo 3 blank, mono , stereo time_mode 3 time refers to current song, total playlist, or live volume I volume min, ... , volume max 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. balance_left Move balance left. balance_right Move balance right. config Show configuration window. exit Exit the application. ff Fast forward. iconify Iconify main window. loop_ab X Control the loop A to B feature. mixer Run an external mixer. next Skip to next song. open_custom Display open custom dialog. open_file Display open file dialog. open_playlist Display open playlist dialog. pause X Pause. play X Play. playlist X Toggle display of the playlist window. prev Skip to previous song. repeat X Toggle repeat. repeat_1 X Toggle the repeat 1 feature. rw Rewind. save_playlist Display the save playlist as dialog. shuffle X Toggle shuffle. stop X Stop. time_remaining X Toggle between normal time (count up) and time remaining (count down). time_total X Toggle between time for current song and time for entire playlist. volume_up Increase volume. volume_down Decrease volume. 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. hour Time display. minute Time display. second Time display. song Current song. song_total Total songs in playlist. frame Current frame. frame_total Total frames in current song. input_rate Input bitrate in Kbytes. input_hz Input sample rate in kHz. output_bits Output bitrate to sound device in Kbytes. output_hz Output sample rate to sound device in kHz. cpu Current cpu utilization of player back-end. song_minute Current song total time. song_second Current song total time. playlist_hour Playlist length in time. playlist_minute Playlist length in time. playlist_second Playlist length in time. track Current song track number (not the same as the song number). 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. title Current song title. album Current song album. artist Current song artist. genre Current song genre. year Current song year. comment Current song comment. playlist Current playlist filename. 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. balance Volume balance. position Song position. volume Volume. 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. balance Volume balance. position Song position. volume Volume. 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. playlist The playlist. title The song title. time The song length. number The song number. presets The presets 1 through 10. description The preset menu description. number The preset number (1 - 10). 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. ------------------------------------------------------------------------------ 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. ------------------------------------------------------------------------------ Flybys: [section:flybys] ------------------------------------------------------------------------------ The flyby windows (skindata_flyby) support all keys of the main window, as well as these text widget keys: now Translated text for "now playing:" now_title Title of currently playing song. now_artist Artist of currently playing song. next Translated text for "up next:" next_title Title of the next song to be played. next_artist Artist of the next song to be played. Also these buttons keys are unique to flybys: hide_flyby Hides the flyby window immediately. ------------------------------------------------------------------------------ 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 ==============