I started work porting a windows app using winelib, and hit an issue relating to the fact that there is currently no implementation of uxtheme.dll (and more importantly, no headers, of which would be enough to compile the app as it dynamically loads all the uxtheme dlls as needed, and falls back gracefully)
Because of this, I've been thinking about beginning an implementation of uxtheme.dll. I am curious if someone has already taken up this task, or if anyone any opinions on this topic.
Thanks Kevin
On Mon, 29 Sep 2003, Kevin wrote:
Because of this, I've been thinking about beginning an implementation of uxtheme.dll. I am curious if someone has already taken up this task, or if anyone any opinions on this topic.
I'm not aware of anyone working on this. This would be a nice contribution to Wine.
This isnt a windows system dll. Isnt that another attempt like cards.dll ?
--- "Dimitrie O. Paun" dimi@intelliware.ca a écrit :
On Mon, 29 Sep 2003, Kevin wrote:
Because of this, I've been thinking about beginning an
implementation of
uxtheme.dll. I am curious if someone has already taken up this
task, or if
anyone any opinions on this topic.
I'm not aware of anyone working on this. This would be a nice contribution to Wine.
===== Sylvain Petreolle (spetreolle_at_users_dot_sourceforge_dot_net) ICQ #170597259 Say NO to software patents Dites NON aux brevets logiciels
"What if tomorrow the War could be over ?" Morpheus, in "Reloaded".
___________________________________________________________ Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français ! Yahoo! Mail : http://fr.mail.yahoo.com
On Tue, 2003-09-30 at 04:43, Sylvain Petreolle wrote:
This isnt a windows system dll. Isnt that another attempt like cards.dll ?
Sure it is. Apps attempt to LoadLibrary it if they detect it to enhance their drawing capabilities. It's conceivable that one day apps will not have this backwards compat code and simply require Windows XP or above, so it needs to get done.
It's also the Right Way to make Wine not look like ass on our pretty desktops, because the win32 apps will be theme aware.
I hope you know what you will begin with. (For the ones that don't know uxtheme.dll is the dll that takes care of all theming on WinXP and it is the dll that dlls like comctl32 and all others use for theming)
Some time ago I checked out uxtheme.dll a bit and it seems that it needs changes all over Wine. As I understand it WinXP ships with two sets of comctl32.dll and friends. One is the "old" version and one is a new uxtheme aware version. The uxtheme aware version contains lots of changes and uses uxtheme for theming. To use uxtheme you need to add uxtheme support to the dlls that need it which looks like a huge job. Perhaps this is something post Wine-1.0?
Roderick Colenbrander
I started work porting a windows app using winelib, and hit an issue relating to the fact that there is currently no implementation of uxtheme.dll (and more importantly, no headers, of which would be enough to compile the app as it dynamically loads all the uxtheme dlls as needed, and falls back gracefully)
Because of this, I've been thinking about beginning an implementation of uxtheme.dll. I am curious if someone has already taken up this task, or if
anyone any opinions on this topic.
Thanks Kevin
Roderick Colenbrander wrote:
I hope you know what you will begin with. (For the ones that don't know uxtheme.dll is the dll that takes care of all theming on WinXP and it is the dll that dlls like comctl32 and all others use for theming)
Some time ago I checked out uxtheme.dll a bit and it seems that it needs changes all over Wine. As I understand it WinXP ships with two sets of comctl32.dll and friends. One is the "old" version and one is a new uxtheme aware version. The uxtheme aware version contains lots of changes and uses uxtheme for theming. To use uxtheme you need to add uxtheme support to the dlls that need it which looks like a huge job.
It does.
Perhaps this is something post Wine-1.0?
Why? This seems liks something that can be done incrementally. Kevin is interested in doing it. Is there any reason to wait? Kevin should be aware of what he's getting himself into, of course, but otherwise it's his call. That's what free software development is all about.
Roderick Colenbrander
Shachar
I would be glad to be of any assistance I can be in this matter. I think wine is a great project, and I have been looking for the right project to immerse my self in. I think I've just found it :-)
Mike Jackson
-----Original Message----- From: wine-devel-admin@winehq.org [mailto:wine-devel-admin@winehq.org] On Behalf Of Shachar Shemesh Sent: Tuesday, 30 September 2003 6:26 PM To: Roderick Colenbrander Cc: Kevin; wine-devel@winehq.com Subject: Re: uxtheme.dll
Roderick Colenbrander wrote:
I hope you know what you will begin with. (For the ones that don't know uxtheme.dll is the dll that takes care of all theming on WinXP and it is the dll that dlls like comctl32 and all others use for theming)
Some time ago I checked out uxtheme.dll a bit and it seems that it needs changes all over Wine. As I understand it WinXP ships with two sets of comctl32.dll and friends. One is the "old" version and one is a new uxtheme aware version. The uxtheme aware version contains lots of changes and uses uxtheme for theming. To use uxtheme you need to add uxtheme support to the dlls that need it which looks like a huge job.
It does.
Perhaps this is something post Wine-1.0?
Why? This seems liks something that can be done incrementally. Kevin is interested in doing it. Is there any reason to wait? Kevin should be aware of what he's getting himself into, of course, but otherwise it's his call. That's what free software development is all about.
Roderick Colenbrander
Shachar
-- Shachar Shemesh Open Source integration consultant Home page & resume - http://www.shemesh.biz/
Ofcourse I want uxtheme.dll implemented since it is a very cool new dll but I think a problem will be that it needs changes in various parts of Wine. Mainly in the user and common control area. Microsoft releases two sets of comctl32 dlls. One of them is meant for backwards compatibility. Because of this I think Wine will need two dlls and it might be needed to maintain two dlls. :(
Because of all this I said that it might be something for after Wine 1.0. This dll could later be reused for theming Wine and that atleast was something we planned to do behind 1.0, right?
Roderick
On Tuesday 30 September 2003 10:25, Shachar Shemesh wrote:
Roderick Colenbrander wrote:
I hope you know what you will begin with. (For the ones that don't know uxtheme.dll is the dll that takes care of all theming on WinXP and it is the dll that dlls like comctl32 and all others use for theming)
Some time ago I checked out uxtheme.dll a bit and it seems that it needs changes all over Wine. As I understand it WinXP ships with two sets of comctl32.dll and friends. One is the "old" version and one is a new uxtheme aware version. The uxtheme aware version contains lots of changes and uses uxtheme for theming. To use uxtheme you need to add uxtheme support to the dlls that need it which looks like a huge job.
It does.
Perhaps this is something post Wine-1.0?
Why? This seems liks something that can be done incrementally. Kevin is interested in doing it. Is there any reason to wait? Kevin should be aware of what he's getting himself into, of course, but otherwise it's his call. That's what free software development is all about.
Roderick Colenbrander
Shachar
On September 30, 2003 10:57 am, Roderick Colenbrander wrote:
Microsoft releases two sets of comctl32 dlls. One of them is meant for backwards compatibility.
Do you have any idea why would that be needed?
The "old" dll that MS ships with WindowsXP is comctl32.dll version 5.x which is the same as on other Windows versions.
Version 6 is the new version. One of the biggest changes is that this updated dll handles both the user and common controls. Further all controls now include some area in which can be drawn for theming.
For more info check out: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/...
Roderick Colenbrander
On Tuesday 30 September 2003 17:06, Dimitrie O. Paun wrote:
On September 30, 2003 10:57 am, Roderick Colenbrander wrote:
Microsoft releases two sets of comctl32 dlls. One of them is meant for backwards compatibility.
Do you have any idea why would that be needed?
Roderick Colenbrander wrote:
The "old" dll that MS ships with WindowsXP is comctl32.dll version 5.x which is the same as on other Windows versions.
Version 6 is the new version. One of the biggest changes is that this updated dll handles both the user and common controls. Further all controls now include some area in which can be drawn for theming.
For more info check out: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/...
Roderick Colenbrander
Another difference is that the new version comes as an assembly; multiple versions of the dll can live side by side.
The different versions of comctl32 are part of Microsoft's "assembly" system which is primarilly an attempt to battle "DLL hell" as well as part of their .NET strategy, which (correct me if I'm wrong) I don't think afflicts this part of WINE very much.
Altho one thing to consider in this area is Manifests, which at a minimal case could be used to simply enable/disable theme support for a particular application, or could be ignored completely for themes (similar to how applications like Stardock's WindowBlinds skins every app, regardless of a Manifest requesting the new comctl32).
On Tuesday 30 September 2003 10:57 am, Roderick Colenbrander wrote:
Ofcourse I want uxtheme.dll implemented since it is a very cool new dll but I think a problem will be that it needs changes in various parts of Wine. Mainly in the user and common control area. Microsoft releases two sets of comctl32 dlls. One of them is meant for backwards compatibility. Because of this I think Wine will need two dlls and it might be needed to maintain two dlls. :(
Because of all this I said that it might be something for after Wine 1.0. This dll could later be reused for theming Wine and that atleast was something we planned to do behind 1.0, right?
Roderick
I'm aware of the scope of the project. The general design of uxtheme lends itself well to being done incrementally, eg. controls could be modified as support for the particular control is implemented, etc. Also part of the API are a few functions (IsThemeActive & IsAppThemed) which will allow themes to be disabled in the beginning for theme aware applications until sufficient support has been built or if themes are disabled via config/registry.
First order of business tho is the headers
On Tuesday 30 September 2003 02:21 am, Roderick Colenbrander wrote:
I hope you know what you will begin with. (For the ones that don't know uxtheme.dll is the dll that takes care of all theming on WinXP and it is the dll that dlls like comctl32 and all others use for theming)
Some time ago I checked out uxtheme.dll a bit and it seems that it needs changes all over Wine. As I understand it WinXP ships with two sets of comctl32.dll and friends. One is the "old" version and one is a new uxtheme aware version. The uxtheme aware version contains lots of changes and uses uxtheme for theming. To use uxtheme you need to add uxtheme support to the dlls that need it which looks like a huge job. Perhaps this is something post Wine-1.0?
Roderick Colenbrander
On Wed, 2003-10-01 at 12:21, Kevin Koltzau wrote:
I'm aware of the scope of the project. The general design of uxtheme lends itself well to being done incrementally, eg. controls could be modified as support for the particular control is implemented, etc. Also part of the API are a few functions (IsThemeActive & IsAppThemed) which will allow themes to be disabled in the beginning for theme aware applications until sufficient support has been built or if themes are disabled via config/registry.
Some time ago I started hacking in support for GTK themes. When I first suggested this project to the list there was suggestions that doing it with uxtheme.dll was the way to go. I agreed, but didn't have winxp to play with, so I kept tinkering on this project with the intent of learning a bit more about how wine works (which meant learning a lot about how GDI and X works, though I didn't realise that I'd need to know that stuff when I started on the project). I actually managed to get some results which were starting to look promising (though there's no way I'd submit that code as a patch). Screenshots here (the checkbox being the only important part):
http://james.id.au/wine/wine-ss1.png http://james.id.au/wine/wine-ss2.png http://james.id.au/wine/wine-ss3.png
Anyway, the reason I'm posting is not to suggest that this code be used (nor the approach I took), but to mention that if theming code is to be written that I think it's really important to have a way to pass off rendering of controls etc to a .so that can be dlopened and called with dlsym. IIRC the existing system uses a function lookup table, so there shouldn't be much that needs to change for this to occur -- only the initialisation of this function table and probably some hooks so that these .sos can detect whether or not they'll work with the current configuration (as an example the way I was doing gtk theming won't work with anything that isn't x11drv. I don't like breaking encapsulation like this, but it sounds like it's practical in this case). I don't know if I can be of any help, but I'm interested in trying -- please keep me posted.
James.
On Tuesday 30 September 2003 02:21 am, Roderick Colenbrander wrote:
I hope you know what you will begin with. (For the ones that don't know uxtheme.dll is the dll that takes care of all theming on WinXP and it is the dll that dlls like comctl32 and all others use for theming)
Some time ago I checked out uxtheme.dll a bit and it seems that it needs changes all over Wine. As I understand it WinXP ships with two sets of comctl32.dll and friends. One is the "old" version and one is a new uxtheme aware version. The uxtheme aware version contains lots of changes and uses uxtheme for theming. To use uxtheme you need to add uxtheme support to the dlls that need it which looks like a huge job. Perhaps this is something post Wine-1.0?
Roderick Colenbrander
This is very kickass dude. I think this is the right method of supporting themes for WINE. KDE can already do GTK themes with a little bit of tweaking so it will support both Linux Desktops and GTK themes are now supported under Windows with GTK-Win32 so maybe we can even use this in ReactOS when its ready.
Thanks Steven
--- James Gregory james@linuxaus.com wrote:
Some time ago I started hacking in support for GTK themes. When I first suggested this project to the list there was suggestions that doing it with uxtheme.dll was the way to go. I agreed, but didn't have winxp to play with, so I kept tinkering on this project with the intent of learning a bit more about how wine works (which meant learning a lot about how GDI and X works, though I didn't realise that I'd need to know that stuff when I started on the project). I actually managed to get some results which were starting to look promising (though there's no way I'd submit that code as a patch). Screenshots here (the checkbox being the only important part):
http://james.id.au/wine/wine-ss1.png http://james.id.au/wine/wine-ss2.png http://james.id.au/wine/wine-ss3.png
Anyway, the reason I'm posting is not to suggest that this code be used (nor the approach I took), but to mention that if theming code is to be written that I think it's really important to have a way to pass off rendering of controls etc to a .so that can be dlopened and called with dlsym. IIRC the existing system uses a function lookup table, so there shouldn't be much that needs to change for this to occur -- only the initialisation of this function table and probably some hooks so that these .sos can detect whether or not they'll work with the current configuration (as an example the way I was doing gtk theming won't work with anything that isn't x11drv. I don't like breaking encapsulation like this, but it sounds like it's practical in this case). I don't know if I can be of any help, but I'm interested in trying -- please keep me posted.
James.
__________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com
On Wednesday 01 October 2003 09:59 am, Steven Edwards wrote:
This is very kickass dude.
I concur. I've been fantasizing about looking into this stuff myself, although so far I've always decided I had more pressing matters to look into. But some of this stuff is just so cool... and frankly, wine has a case of the uglies that could use fixing. A little razzle and dazzle can go a long way towards raising the profile of a project.
Anyone who's ever subscribed to the goodies-pipeline from StarDock knows -- this stuff has the potential to be very, very pretty. In fact, in my opinion, it made my Windows even prettier than my Linux (although the performance can be pretty awful). And KDE/gnome themes obviously could do something that was never really possible for wine before.
So... good luck, I am sure this will be quite difficult, but it's a great idea, in my opinion.
I'm currently working on implementing support for .msstyles themes (of which are used by XP) primarily because the format follows the API pretty closely and will be easier to test my implementation against an XP box.
One nice thing about .msstyles themes is they are basically just a resource-only DLL, which could of course include exported functions.
Going along that path, one possible way to integrate theme support from your native window manager is to extend the .msstyles theme format to enable using exported functions for drawing some controls, which could then make direct GTK/etc calls.
Another possible method would be to create a conversion tool to create an .msstyles theme from a GTK theme, or to simply create a totally new method of defining themes for WINE.
On Wednesday 01 October 2003 02:48 am, James Gregory wrote:
Some time ago I started hacking in support for GTK themes. When I first suggested this project to the list there was suggestions that doing it with uxtheme.dll was the way to go. I agreed, but didn't have winxp to play with, so I kept tinkering on this project with the intent of learning a bit more about how wine works (which meant learning a lot about how GDI and X works, though I didn't realise that I'd need to know that stuff when I started on the project). I actually managed to get some results which were starting to look promising (though there's no way I'd submit that code as a patch). Screenshots here (the checkbox being the only important part):
http://james.id.au/wine/wine-ss1.png http://james.id.au/wine/wine-ss2.png http://james.id.au/wine/wine-ss3.png
Anyway, the reason I'm posting is not to suggest that this code be used (nor the approach I took), but to mention that if theming code is to be written that I think it's really important to have a way to pass off rendering of controls etc to a .so that can be dlopened and called with dlsym. IIRC the existing system uses a function lookup table, so there shouldn't be much that needs to change for this to occur -- only the initialisation of this function table and probably some hooks so that these .sos can detect whether or not they'll work with the current configuration (as an example the way I was doing gtk theming won't work with anything that isn't x11drv. I don't like breaking encapsulation like this, but it sounds like it's practical in this case). I don't know if I can be of any help, but I'm interested in trying -- please keep me posted.
James.