Send to Printer

stic12

Skins in the VW UI

March 21, 2012 12:59:46.954

Travis has mentioned the Skins (UI) work on his blog before - and today he's going to talk about it at STIC.

The VW widget set is an emulate done - the problem with moving it forward has to do with how fast UIs evolve in the host OS, and the limited manpower available to keep up with that. On the other hand, lots of legacy code relies on this stuff. Another issue - in the VW MVC model, the view and controller are really, really tightly coupled. The model tends to be more coupled than we'd like as well.

Over time, this got more complex with the addition of layout wrappers which again got more tightly coupled with the views than maybe they should have been. Then there are state wrappers (enablement) - and from there the wrapper party just grew like weed, and trackers just made things more complex. Then you add in all of the subclasses for views, controllers, and trackers....

Skinny goals:

  • Offload drawing to external resources
  • incremental on/off
  • grow in place replacement (not a big bang)
  • avoid a massive rewrite of platform interfaces
  • address some of the issues in the VW widget set
  • play the subclass card differently

Widgets will be simpler - manage own state, use models when they make sense. Layouts are being punted for now, the existing stuff is still in play, with some small mods. Controllers are out. State is being handled in a properties dictionary, and VisualPart already had that. Drawing - that's where things are offloaded to a strategy/policy pattern. The Skin api tend sto be a large, flat collection of methods, with a generic DNU handler for methods that follow the conventions.

The rest of the presentation is a demo - as with many of the other talks, you'll really need to wait for the video to see what happened here :) What he showed was a skinned Windows (XP in a Mac VM) and a skinned OS X Lion. Linux (GTK) is still being investigated, but using Cairo he got something pretty nice out (KDE Look) in a day.

This is in 7.9 builds, but not enabled. It can be turned on. There's still work to do on the more involved widgets, but it's taking shape. It is a a work in progress, but can be played with now.

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This