Skinning

From Second Life Wiki
Jump to navigation Jump to search

Objectives

  • Enable internal designers to more easily customize the look of Second Life
  • Enable external developers and residents to save customizations and prepare skin "packages"

Links

Task Descriptions

XML Templates

Create 'templates.xml' file with default attributes for each widget type

  • Other templates for common attribute sets can also be declared here
  • Widgets can declare a tempate (default to the default one)
  • All default values will be removed from the code
  • Create a tool to process all existim .xui files and write out only the non default values

UI Texture Cache

Separate pre-cached images with asset ids from UI images

  • Rename UI Images to use file names not asset ids

Remove hard coded art and colors from UI

  • Replace any art embedded in code
    • Including programatic art with attributes, e.g. volume sliders
    • Remove any backgrounds from icons, etc (use alpha)
    • Ensure that all images can be cropped and scaled
    • Allow specification of fized size borders (i.e. so that button graphics with narrow boarders scale correctly)
  • Enable additional attributes for colors, etc

Facilitate UI customization

  • Enable reloading of all floaters including the menus and overlay bar
  • Ensure all floaters can handle missing UI elements and will behave reasonably or refuse to open with an appropriate message
  • Create a global floater/panel map and have floaters/panels to specify their type (e.g. "floater_inventory" -> LLFloaterInventory) in XML
  • Allow buttons to open floaters by name
    • Include support for opening a specific tab
    • Differentiate between toggling state of singletons, showing/focusing, and opening new instances
  • Allow menus to be expanded/collapsed for simple/advanced usage

Improve Layour

  • Better grouping / layout / auto sizing

Enable Packaging and Resident customizations

  • Allow residents to save changes to the UI and preserve them across updates
  • Allow residents to package changes and easily distribute them for easy installation by other users
  • Include the ability to show/restore the original skin

Specific Requests

  • Make iconic panels (i.e.. build tools) generally available
    • Combination of fully iconic buttons and the ability for a button to open a specific tab in a floater