Difference between revisions of "Skinning"
Jump to navigation
Jump to search
m (wiki-fu) |
Ramzi Linden (talk | contribs) |
||
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 | ||
== | ** "Skinning" can mean a lot of things. So for this project, skinning shall initially mean: | ||
* [[ | *# A custom look using the same-sized images. (for example, Dazzle) | ||
== | *# Custom floaters that display HTML and can speak back to the client through SLURLS. | ||
=== XUI | *# 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 | |||
* Remove all default values from the code ( | === Phase 0 === | ||
* Create a tool to process all existing | * 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 | |||
* JIRA: {{Jira|VWR-1885}} Dynamic Reloading - Allow all UI elements to be reloaded without restarting the client | |||
JIRA: {{Jira|VWR- | ** ''Objective:'' Make it easier to see the effects of XUI edits | ||
* ''Objective: Make it easier to | *** 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: {{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 | ||
* | *** 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 | *** 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 | |||
* 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 | |||
=== 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:
- A custom look using the same-sized images. (for example, Dazzle)
- Custom floaters that display HTML and can speak back to the client through SLURLS.
- Customizations or language customizations are retained across installs
- "Simpler" skins that allow parts of the UI to be removed
- 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
- Objective: enable external developers and residents to preserve changes across updates and distribute custom UI layouts
- 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
- Objective: Make it easier to add and modify UI art
- 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
- Objective: Remove any UI art from the code
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
- Objective: Make it easier to see the effects of XUI edits
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
- Objective: enable menus and overlay bar to be more easily customized
- 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
- Objective: make it easier to change the XUI layout data
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