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