* Skinning * Each skin contain internationalization, theme or interaction map (this means that a skin may contain more than one, but in different parts and folders) * a file named "''skinid''.theme" (in distrib/skins) * The file contains properties of the skin like name, fallback skin. The fallback skin may be only one, and if it does not exist (or a value does not exist), a default value is used. {{{ #Example name = Blue Theme fallback = none }}} * a folder named "''skinid''_theme" (in distrib/skins) * The folder contains parts of the skins in different files with extension ''.part''. If a value is present in more than one file, one of the values is chosen (no matter which) It is advisable parts to be in different files grouped by functionality for example, but this should not be mandatory. * Lines of the part files may be the following * ''id'' : ''type'' : ''value'' - Where id is the id of the element * types can be '''boolean''', '''integer''', '''icon''', '''iconset''', '''color''', '''size''', '''point''' * value - relative (to the "''skinid''_theme" folder) path in quotation marks - if the value does not begin with "/" * value - absolute (to the Sophie folder) path in quotation mark that begins with "/" * The folder should contain the images as well. Images may be in subfolders. * The theme should include the following: Images and color hex values * Skin choosing * A file named "skin.conf" in distrib/conf will show which skin is chosen * Lines starting with "#" should be allowed and treated as comments * For now only language and theme will be chooseable (lines in the file with the following synthax "language = ''skinid''" "theme=skinid") * What should be changeable? * Images * All halos in the application * Flap and tab button styles * Palette background images * Colors * Dialog text foreground/background colors (optional) * Button text foreground (optional) * Gray area around pages (optional) * Application background style (optional) * '''Formats of the values''' * for ''boolean'' type, values should be '''true''' or '''false''', If anything else is written, it will be interpreted as "false". * for ''integer'' type, values should be such string that can be parsed to integer, e.g. '''24''' * for ''point'' type, values should be such two float numbers separated with ":" e.g. '''2.34:4.56'''. * for ''size'' type, values should be two float numbers separated with ":" e.g. '''2.34:4.56'''. * for ''text'' type, values should be some string (no restrictions). * for ''icon'' type, values should be path to the icon * for ''icons'' type, values should be '''IconId1=path1,IconId2=path2...''' where path1, path2 should be path to the location of the icon IconId is one of the following: ''DEFAULT'', ''DISABLED'',''PRESSED'', ''MOUSE_OVER'', ''SELECTED''[[BR]] path to the location of the icon can be [[BR]] 1) Relative path to the location of the icon (relative according to distrib directory). The path should starts with /.[[BR]] 2) Name of the icon. This way the icon should be located in the current directory.