Difference between revisions of "Skinning"

From Second Life Wiki
Jump to navigation Jump to search
m (wiki-fu)
Line 1: Line 1:
[[Category:Linden Lab Projects]]
== See Also ==
* [[Viewer Roadmap]]
* [[User Interface Roadmap]]
== Objectives ==
== Objectives ==
* Enable internal designers to more easily customize the look of Second Life
* Enable internal designers to more easily customize the look of Second Life
* Enable external developers and residents to save customizations and prepare skin "packages"
* Enable external developers and residents to better serve their audiences, and save customizations and prepare skin "packages" that persist across viewer updates
== Links ==
** "Skinning" can mean a lot of things. So for this project, skinning shall initially mean:
* [[User Interface Roadmap]]
*# A custom look using the same-sized images. (for example, Dazzle)
== Task Descriptions ==
*# Custom floaters that display HTML and can speak back to the client through SLURLS.
=== XUI Default Templates ===
*# Customizations or language customizations are retained across installs
JIRA: {{Jira|VWR-1882}}
*# "Simpler" skins that allow parts of the UI to be removed
* ''Objective: Make the XUI files less verbose and more readable''
*# Customized help links
* Create 'templates.xml' file with default attributes for each widget type
 
** Other templates for common attribute sets can also be declared here
== Tasks ==
** Widgets can declare a tempate (default to the default one for that type)
 
* Remove all default values from the code (code cleanup)
=== Phase 0 ===
* Create a tool to process all existing .xui files and write out only the non default values
* The first phase is to implement Project [[Dazzle]], which is a first skin implementation and proof-of-needed-abstraction for changing the colors/look of the user interface.
** Clean up the XML output at the same time
 
=== Phase 1 ===
'''Enable Packaging and Resident customizations'''
 
*JIRA: {{Jira|VWR-1875}}
** ''Objective:'' enable external developers and residents to preserve changes across updates and distribute custom UI layouts
*** Allow residents to save changes to a user local directory (i.e. Documents and Settings\User\Application Data\SecondLife\skins)
*** Allow residents to package changes and easily distribute them for easy installation by other users
*** Define location to search for installed skin packages
*** Include the ability to change skins and restore the original skin
* Specify files that modify only (translation strings) or override completely (user customizations)
 
*JIRA: {{Jira|VWR-1883}}
** ''Objective:'' Make it easier to add and modify UI art
*** Separate pre-cached images with asset ids from UI images
*** Rename UI Images to use file names not asset ids
 
* JIRA: {{Jira|VWR-1884}}
** ''Objective:'' Remove any UI art from the code
*** Remove programmatic 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 fixed size borders (i.e. so that button graphics with narrow boarders scale correctly)
*** Enable additional attributes to widgets for colors, etc
 
=== Phase 2 ===
'''Improve Localizations'''
 
* Automated changelist generator for all releases
* strings.xml - Global translation pairs for text not associated with a XUI file
 
=== Phase 3 ===
'''Cleaner XUI files'''
 
*JIRA: {{Jira|VWR-1882}} Sparse XUI files
** ''Objective:'' Make the XUI files less verbose and more readable
** 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 template (default to the default one for that type)
** Remove all default values from the code (XML cleanup)
*** Create a tool to process all existing XML files and write out only the non-default values
*** Clean up the XML output at the same time
 
* Automatically Save Floater Positions and Sizes
** Include minimized position (not currently saved)
 
* Document the UI XML format
 
=== Phase 4 ===
'''Enable a simplified UI'''
 
* Menus and Overlay bar to become data driven


=== UI Texture Cache ===
* JIRA: {{Jira|VWR-1885}} Dynamic Reloading - Allow all UI elements to be reloaded without restarting the client
JIRA: {{Jira|VWR-1883}}
** ''Objective:'' Make it easier to see the effects of XUI edits
* ''Objective: Make it easier to add and modify UI art''
*** Enable reloading of all floaters including the menus and overlay bar
* Separate pre-cached images with asset ids from UI images
*** Ensure all floaters can handle missing UI elements and will behave reasonably or refuse to open with an appropriate message
* Rename UI Images to use file names not asset ids
** eg., Changing the language setting will reload all UI elements


=== Remove hard coded art and colors from UI ===
=== Phase 5 ===
JIRA: {{Jira|VWR-1884}}
'''Dynamic Layout'''
* ''Objective: Remove any UI art from the code
* Remove programmatic 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 fixed size borders (i.e. so that button graphics with narrow boarders scale correctly)
* Enable additional attributes to widgets for colors, etc


=== Facilitate UI customization ===
* Improve the widget layout language and add auto sizing
JIRA: {{Jira|VWR-1885}}
* ''Objective: Make it easier to see the effects of XUI edits''
* 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


=== Facilitate customization of menus and overlay bar ===
* JIRA: {{Jira|VWR-1886}}
JIRA: {{Jira|VWR-1886}}
** ''Objective:'' enable menus and overlay bar to be more easily customized
* ''Objective: enable menus and overlay bar to be more easily customized''
*** Allow buttons to open floaters by name
* Create a global floater/panel map and have floaters/panels to specify their type (e.g. "floater_inventory" -> LLFloaterInventory) in XML
*** Include support for opening a specific tab
* Allow buttons to open floaters by name
*** Differentiate between toggling state of singletons, showing/focusing, and opening new instances
** Include support for opening a specific tab
** Allow menus to be expanded/collapsed for simple vs. advanced usage
** Differentiate between toggling state of singletons, showing/focusing, and opening new instances
** Specify layout of overlay bar and menu bar in "viewer.xml"
* Allow menus to be expanded/collapsed for simple/advanced usage
*** Allow multiple "overlay bars" to be added so that side bars or corner panels with buttons can be added
* Specify layout of overlay bar and menu bar in "viewer.xml"
** Allow multiple "overlay bars" to be added so that side bars or corner panels with buttons can be added


=== Improve Layout Language ===
* JIRA: {{Jira|VWR-1887}}
JIRA: {{Jira|VWR-1887}}
** ''Objective:'' make it easier to change the XUI layout data
* ''Objective: make it easier to change the XUI layout data''
*** Choose a standard model for the layout language (e.g. CSS? qt-like?)
* Choose a standard model for the layout language (e.g. CSS? qt-like?)
*** Allow elements to be grouped for layout purposes
* Allow elements to be grouped for layout purposes
*** Auto layout elements when no layout information is provided
* Auto layout elements when no layout information is provided


=== Enable Packaging and Resident customizations ===
JIRA: {{Jira|VWR-1875}}
* ''Objective: enable external developers and residents to preserve changes across updates and distribute custom UI layouts''
* Allow residents to save changes to a user local directory (i.e. Documents and Settings\User\Application Data\SecondLife\skins)
* Allow residents to package changes and easily distribute them for easy installation by other users
** Define location to search for installed skin packages
** Include the ability to change skins and restore the original skin
=== Specific Requests ===
=== Specific Requests ===
* Make iconic panels (i.e.. build tools) generally available
* 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
** Combination of fully iconic buttons and the ability for a button to open a specific tab in a floater
* Docking / Hosting - Make the 3D window a layout element and allow floaters to be docked
** Possibly allow floaters to exist outside application window

Revision as of 18:21, 31 March 2008

See Also

Objectives

  • Enable internal designers to more easily customize the look of Second Life
  • Enable external developers and residents to better serve their audiences, and save customizations and prepare skin "packages" that persist across viewer updates
    • "Skinning" can mean a lot of things. So for this project, skinning shall initially mean:
    1. A custom look using the same-sized images. (for example, Dazzle)
    2. Custom floaters that display HTML and can speak back to the client through SLURLS.
    3. Customizations or language customizations are retained across installs
    4. "Simpler" skins that allow parts of the UI to be removed
    5. Customized help links

Tasks

Phase 0

  • The first phase is to implement Project Dazzle, which is a first skin implementation and proof-of-needed-abstraction for changing the colors/look of the user interface.

Phase 1

Enable Packaging and Resident customizations

  • JIRA: VWR-1875
    • Objective: enable external developers and residents to preserve changes across updates and distribute custom UI layouts
      • Allow residents to save changes to a user local directory (i.e. Documents and Settings\User\Application Data\SecondLife\skins)
      • Allow residents to package changes and easily distribute them for easy installation by other users
      • Define location to search for installed skin packages
      • Include the ability to change skins and restore the original skin
  • Specify files that modify only (translation strings) or override completely (user customizations)
  • JIRA: VWR-1883
    • Objective: Make it easier to add and modify UI art
      • Separate pre-cached images with asset ids from UI images
      • Rename UI Images to use file names not asset ids
  • JIRA: VWR-1884
    • Objective: Remove any UI art from the code
      • Remove programmatic 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 fixed size borders (i.e. so that button graphics with narrow boarders scale correctly)
      • Enable additional attributes to widgets for colors, etc

Phase 2

Improve Localizations

  • Automated changelist generator for all releases
  • strings.xml - Global translation pairs for text not associated with a XUI file

Phase 3

Cleaner XUI files

  • JIRA: VWR-1882 Sparse XUI files
    • Objective: Make the XUI files less verbose and more readable
    • 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 template (default to the default one for that type)
    • Remove all default values from the code (XML cleanup)
      • Create a tool to process all existing XML files and write out only the non-default values
      • Clean up the XML output at the same time
  • Automatically Save Floater Positions and Sizes
    • Include minimized position (not currently saved)
  • Document the UI XML format

Phase 4

Enable a simplified UI

  • Menus and Overlay bar to become data driven
  • JIRA: VWR-1885 Dynamic Reloading - Allow all UI elements to be reloaded without restarting the client
    • Objective: Make it easier to see the effects of XUI edits
      • 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
    • eg., Changing the language setting will reload all UI elements

Phase 5

Dynamic Layout

  • Improve the widget layout language and add auto sizing
  • JIRA: VWR-1886
    • Objective: enable menus and overlay bar to be more easily customized
      • 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 vs. advanced usage
    • Specify layout of overlay bar and menu bar in "viewer.xml"
      • Allow multiple "overlay bars" to be added so that side bars or corner panels with buttons can be added
  • JIRA: VWR-1887
    • Objective: make it easier to change the XUI layout data
      • Choose a standard model for the layout language (e.g. CSS? qt-like?)
      • Allow elements to be grouped for layout purposes
      • Auto layout elements when no layout information is provided

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
  • Docking / Hosting - Make the 3D window a layout element and allow floaters to be docked
    • Possibly allow floaters to exist outside application window