=== Top of the Swiki === Attachments ===

Appearance / Themes / Skins

There have been quite some requests on the mailing list about having Windows or other looks for Squeak, and some people have even implemented things that resemble these.
However, after looking at Apple's themes for MacOS or the various skins for Windows apps, I thought that Squeak should probably have a mechanism to support this kind of stuff.
Since I never programmed skins or themes, I don't exactly know what things would be involved. I'd guess that a lot of it is artwork, just painting the images that should go with all the UI widgets.
Write down your ideas here! If you have actual experience, tell us about it. If you're willing to code something, all the better!

Hans-Martin Mosner


Steve Wessels:

I've recently (January 2000) begun to experiment with a skins concept. I have a first pass working with V2.8a. Go look at this picture to see what I have working so far.
You can see several styles of browsers open, each having it's own look.
To experiment with this code yourself have a look at the instructions.
There's still work to be done. I would like to fill in the MVC portion of the framework.
The "Aqua" look is an obvious clone of the recent Apple OS/X beta release. I grabbed the bitmaps from the Aqua Windows skin I found on the internet.
Tell me what you think and if this approach is a decent one.

If you are trying to do this yourself, here's one tip learned the hard way. I chose to specify a skinned window instead of modifying all the windows to have skins. This is essential since you can then leave the Debugger windows alone. If you mess up window painting code and you apply the same "feature" to the debugger - you end up experiencing an excellent example of recursion!

Another lesson I learned was to have a browser open in a functioning skin and leave it open if you are testing a new skin. That way if things get out of control you can jump back to the working browser and fix things up.

The next activity for me is to write some instructions for people who want to extend this framework to add their own skins or customizations.
I updated the skins instructions and distribution kit on 2 Feb 2000. The "fur" stuff below looks interesting. It might be fun to add the scroll bar support into the skins code to further round out how this package works.
Stephan B. Wessels


Feb 1 2000: I started working on "Fur for Squeak" in Dec 1999, but couldn't put much time into it lately. It's based on recolorable scaleable images - look for EdgeImageMorph at http://swiki.gsug.org/sqfixes. I have scrollbars and buttons working - see this screen shot. I wanted Fur to not require theme specific code in the image but the furs should be distributed in a single directory containing all images and a spec file. I'll just file out my stuff and put it in this directory for anyone to use - especially for Steve who might want to rip parts of my code. Although I find "Fur" is a much more appropriate name for SqueakSkins ;-) --Bert Freudenberg



Stephan B. Wessels
April 20, 2000
There's been some recent personal e-mail traffic with people keenly interested in what I'd been doing with Skins on Squeak. Jim Benson, the author of the Morphic Eye Candy tutorials, has been corresponding and he recently asked me how things were going. While writing a lengthy e-mail response I realized it would be much more useful to just post my message to him here.

Jim,

That's pretty neat.

So you want to know how my Skins project is going, heh? Well. Here's what's going on.

I've made a version that works with the latest version of 2.8a. That solves the problem I mention on the web site with the installation instructions.

I've not worked out the import tool yet. I have a framework in place for one. The skin importer I was writing was based upon reading WindowBlinds files. But I realized after being pretty deep into the project that they have specific restrictions on writing importers of skins written to their specs into products that are not WindowBlinds. So some steam got lost on that project while a search for a liberal specification for skins that can be adopted for importing is found. I'm guessing that some effort looking into the format of the Gnome or KDE or any of those Linux GUI variants should yield a format that is both usefull and conflict free. Anyone who has knowledge of skin file formats and knows which ones we can safely adopt with Squeak please publish the information so that this work can be done. Here's some links where I've started digging:

Customize (http://www.customize.org/dir.pl?d=Skin)

Themes

I've also added textured backgrounds to row buttons and the like. Someone has posted a message on the mailing list about wanting bitmapped dialog backgrounds and I realized it was easy to add to what I already had so that was quick to write. I haven't published an update however.

The current activity is based around doing a more elegant approach to skins application to the Squeak base image. For instance, my original skins framework supported MVC, vector based skins and bitmap/form based skins. A big and noble goal. I backed off a bit and published the later release to focus on Morphic bitmap based skins first. But what I really want is a way to make the skins application more transparent and less invasive. With that goal in mind, I'm viewing the current release as a prototype of ideas but not really reflective of how I think it should actually be done. What exists today shows what it can look like. What I am working on is the framework that makes it clean and even more extensible. I also want to go back to including vector based skins as well. For that matter, I've also looked carefully at the Eye Candy work you've done and want to incorporate some of the cool things I've seen there as well as the "fur" project that is on the SWIKI.

I've sketched out the framework in my notebook so the worst part is over. Now it's just finding the "heartbeats" or time to focus on it. I also want to update all of my tools to work with 2.7 as well as 2.8a. There will probably variations to cover both bases.

THE REAL ISSUE right now is I'm swamped with work. I'm recently inherited project management for a substantial Java project that is consuming a lot of my energy. Once that gets on even keel I'll be back into Squeak with swift and useful updates.

Hmm. This conversation should be shared on the SWIKI where I describe what's going on with Skins. So I'll copy it out there now.

- Steve