wxSkin - release 0.9 alpha
wxSkin - release 0.9 alpha
Hi everybody!
Finally my everlasting project "wxSkin" has reached a state were I decided to release it to the public!
I'm very sorry for the long delay (my original plan was to release it about a month ago), but I was busy on the job and moved with my family. In addition to that I had to fix a lot of bugs in it, write a tutorial and documentation, setup a cross-platform build system, write some examples, update my site... Well, you get the impression
wxSkin is released as "0.9 alpha". There is no guaranty that it will work or even build for you. In most cases it should be usable. I tested it on multiple platforms and wxWidgets version (thanks to Jorgen for the alpha testing).
It should work with wxWidgets 2.6.3 & the 2.7.x branch on
- Windows (not CE)
- Mac (tested on tiger)
- Linux (using the GTK2 port)
I included some example applications. One is a simple example with changeable GUI, one is a "complex" frame example and for all of you that have wxMediaCtrl build, there is a fully working media player example.
Makefile/project generation is done by CMake. I setup some small tutorial on how to use it on my site.
wxSkin itself compiles as a static lib. DLL/so builds should be possible, but are not supported right now. Anyway, the overhead of linking it statically should be fairly small.
For all info, screenshot, docs, tutorials, videos, examples, sources -> Visit my site at http://www.upcase.de
The direct link to the wxSkin related stuff is http://www.upcase.de/wxSkin.html
I hope you like wxSkin and find it somewhat useful. Note that it is still a work in progress. I'm open for input on this matter. If you have some suggestion, comment, idea or simply a bug report, either use the contact form on my site to mail me, PM me here, or post some message. I'll try to read everything I get from you.
Have fun!
Finally my everlasting project "wxSkin" has reached a state were I decided to release it to the public!
I'm very sorry for the long delay (my original plan was to release it about a month ago), but I was busy on the job and moved with my family. In addition to that I had to fix a lot of bugs in it, write a tutorial and documentation, setup a cross-platform build system, write some examples, update my site... Well, you get the impression
wxSkin is released as "0.9 alpha". There is no guaranty that it will work or even build for you. In most cases it should be usable. I tested it on multiple platforms and wxWidgets version (thanks to Jorgen for the alpha testing).
It should work with wxWidgets 2.6.3 & the 2.7.x branch on
- Windows (not CE)
- Mac (tested on tiger)
- Linux (using the GTK2 port)
I included some example applications. One is a simple example with changeable GUI, one is a "complex" frame example and for all of you that have wxMediaCtrl build, there is a fully working media player example.
Makefile/project generation is done by CMake. I setup some small tutorial on how to use it on my site.
wxSkin itself compiles as a static lib. DLL/so builds should be possible, but are not supported right now. Anyway, the overhead of linking it statically should be fairly small.
For all info, screenshot, docs, tutorials, videos, examples, sources -> Visit my site at http://www.upcase.de
The direct link to the wxSkin related stuff is http://www.upcase.de/wxSkin.html
I hope you like wxSkin and find it somewhat useful. Note that it is still a work in progress. I'm open for input on this matter. If you have some suggestion, comment, idea or simply a bug report, either use the contact form on my site to mail me, PM me here, or post some message. I'll try to read everything I get from you.
Have fun!
Last edited by upCASE on Fri Nov 17, 2006 4:01 pm, edited 1 time in total.
OS: OpenSuSE, Ubuntu, Win XP Pro
wx: svn
Compiler: gcc 4.5.1, VC 2008, eVC 4
"If it was hard to write it should be hard to read..." - the unknown coder
"Try not! Do. Or do not. There is no try." - Yoda
wx: svn
Compiler: gcc 4.5.1, VC 2008, eVC 4
"If it was hard to write it should be hard to read..." - the unknown coder
"Try not! Do. Or do not. There is no try." - Yoda
-
- wxWorld Domination!
- Posts: 1339
- Joined: Wed Aug 03, 2005 8:10 am
- Location: BANGALORE, INDIA
- Contact:
- Ryan Norton
- wxWorld Domination!
- Posts: 1319
- Joined: Mon Aug 30, 2004 6:01 pm
Hi!
I noticed some strange things related to wxMediaCtrl and the full example. When I configure my wxWidgets build on FC 6, it won't find gstreamer for 2.8.0 at all and reports that gstreamer was found but can't be used for 2.6.3.
I do have gstreamer-0.10 and gstreamer-0.8 ready (includeing the devel packs). The weird thing is
- 2.8.0-rc1: It reports that it isn't found at all.
- 2.6.3: It won't find 0.10, but 0.8. Then xoverlay.h isn't found, still it build wxMediaCtrl. The problem later on is that libgstplayer.a isn't found, so the example won't build.
I'm trying to find a cure, but currently nothing works out. Not building wxMediaCtrl makes the other samples working...
On 2.8.0 there seem to be some other problems as well. It reports that image handlers were not found, although I initialized them. -strange-
So far the errors only seem to be related to the samples. I'll try to fix them asap.
Could you explain a bit more in detail, please?Ryan Norton wrote:1) Artifacts from window left behind
2) Pure virtual function call in sample when closing after playing
(maybe an old wxMediaCtrl bug)
I noticed some strange things related to wxMediaCtrl and the full example. When I configure my wxWidgets build on FC 6, it won't find gstreamer for 2.8.0 at all and reports that gstreamer was found but can't be used for 2.6.3.
I do have gstreamer-0.10 and gstreamer-0.8 ready (includeing the devel packs). The weird thing is
- 2.8.0-rc1: It reports that it isn't found at all.
- 2.6.3: It won't find 0.10, but 0.8. Then xoverlay.h isn't found, still it build wxMediaCtrl. The problem later on is that libgstplayer.a isn't found, so the example won't build.
I'm trying to find a cure, but currently nothing works out. Not building wxMediaCtrl makes the other samples working...
On 2.8.0 there seem to be some other problems as well. It reports that image handlers were not found, although I initialized them. -strange-
So far the errors only seem to be related to the samples. I'll try to fix them asap.
OS: OpenSuSE, Ubuntu, Win XP Pro
wx: svn
Compiler: gcc 4.5.1, VC 2008, eVC 4
"If it was hard to write it should be hard to read..." - the unknown coder
"Try not! Do. Or do not. There is no try." - Yoda
wx: svn
Compiler: gcc 4.5.1, VC 2008, eVC 4
"If it was hard to write it should be hard to read..." - the unknown coder
"Try not! Do. Or do not. There is no try." - Yoda
- Ryan Norton
- wxWorld Domination!
- Posts: 1319
- Joined: Mon Aug 30, 2004 6:01 pm
Hi Upcase!!
gstreamer-$GST_MAJORMINOR
gstreamer-plugins-base-$GST_MAJORMINOR
gconf-2.0
for 0.10 (.10 == GST_MAJORMINOR) - if that doesn't work it then tries to find 0.08 doing
gstreamer-$GST_MAJORMINOR
gstreamer-interfaces-$GST_MAJORMINOR
gstreamer-gconf-$GST_MAJORMINOR
if that doesn't work it fails.
Hmmm - it only happened to Vista - I swiched back to XP and both of these went away. By (1) I meant that part of the window was being left behind on the screen (I'll get a screenshot if I can ) - still sort of happens although maybe due to excessive refereshing? (2) I can't reproduce in XP...Could you explain a bit more in detail, please?Ryan Norton wrote:1) Artifacts from window left behind
2) Pure virtual function call in sample when closing after playing
(maybe an old wxMediaCtrl bug)
As I recall the latest/2.8.0 uses pkgconfig to find it so it should find it - it detects 0.08 and 0.10 in there.I noticed some strange things related to wxMediaCtrl and the full example. When I configure my wxWidgets build on FC 6, it won't find gstreamer for 2.8.0 at all and reports that gstreamer was found but can't be used for 2.6.3.
I believe the configure mechanism in wx2.8 is a lot better. I tested on Ubuntu and needed several different dev packages. The list goes something like:I do have gstreamer-0.10 and gstreamer-0.8 ready (includeing the devel packs). The weird thing is
- 2.8.0-rc1: It reports that it isn't found at all.
- 2.6.3: It won't find 0.10, but 0.8. Then xoverlay.h isn't found, still it build wxMediaCtrl. The problem later on is that libgstplayer.a isn't found, so the example won't build.
gstreamer-$GST_MAJORMINOR
gstreamer-plugins-base-$GST_MAJORMINOR
gconf-2.0
for 0.10 (.10 == GST_MAJORMINOR) - if that doesn't work it then tries to find 0.08 doing
gstreamer-$GST_MAJORMINOR
gstreamer-interfaces-$GST_MAJORMINOR
gstreamer-gconf-$GST_MAJORMINOR
if that doesn't work it fails.
[Mostly retired moderator, still check in to clean up some stuff]
Hi upCASE,
Happy new year 2007.
First impression is very very good .
So I did some tries.
Everything works very well even if there are some memory leaks, so I tried to fix them.
Indeed, in wxSkinEngine.cpp : there are 2 lines wxFSFile* thefile = system.OpenFile(...) where thefile is not deleted.
Then I slightly modified main.cpp and added this to force freeing singleton instance of wxSkinEngine at exit
int MyApp::OnExit()
{
wxSkinEngine::Get()->Destroy();
return(wxApp::OnExit());
}
Another wxSkinEngine::Get()->Destroy(); must be added just before wxMessageBox("Missing skin file or skin file is broken...");
That way, It's ok there were no memory leaks anymore as long as I did not try to change to another skin (in the same run of the application)
For strange reasons I did not understand yet, at least in debug mode, it crashes in OnExit Destroy call while trying to free objects from MapOfAssignments.
Really hope it helps.
And keep up the good work.
PS : I'm using wx 2.8.0 under windows with Visual Studio 2002 or cygwin
- May be, changing includes to something like #include <wx/skin/engine.h> etc.. would be easier to later integrate wxSkin directly in wxWidgets.
- Adding some options like /W4 or /Wp64 would track better compilation warnings.
Happy new year 2007.
First impression is very very good .
So I did some tries.
Everything works very well even if there are some memory leaks, so I tried to fix them.
Indeed, in wxSkinEngine.cpp : there are 2 lines wxFSFile* thefile = system.OpenFile(...) where thefile is not deleted.
Then I slightly modified main.cpp and added this to force freeing singleton instance of wxSkinEngine at exit
int MyApp::OnExit()
{
wxSkinEngine::Get()->Destroy();
return(wxApp::OnExit());
}
Another wxSkinEngine::Get()->Destroy(); must be added just before wxMessageBox("Missing skin file or skin file is broken...");
That way, It's ok there were no memory leaks anymore as long as I did not try to change to another skin (in the same run of the application)
For strange reasons I did not understand yet, at least in debug mode, it crashes in OnExit Destroy call while trying to free objects from MapOfAssignments.
Really hope it helps.
And keep up the good work.
PS : I'm using wx 2.8.0 under windows with Visual Studio 2002 or cygwin
- May be, changing includes to something like #include <wx/skin/engine.h> etc.. would be easier to later integrate wxSkin directly in wxWidgets.
- Adding some options like /W4 or /Wp64 would track better compilation warnings.
Happy new year for you too!
Thanks for trying wxSkin and your bug report. I knew there were memory leaks, but I was too lazy to find & fix them. Thanks for pointing them out
I'll look at the OnExit() bug as soon as I find some time.
I won't change the includes for now. I doubt that wxSkin would ever be accepted into wxWidgets, or even get mentioned officially. You're right that it might be easier to have the include paths in "contrib" style.
I'll try to fix things and upload the new version asap. Note however that due to the lack of acceptance and interest wxSkins further development is "on ice" again. There were only few downloads and even fewer (2, not counting this thread) comments on it. I will keep it on my site, but I won't hack through the todo list for some time. I guess wxSkin works well enough in its current state and I do want to focus on some other stuff right now. Apart from that I'll wait until I can see if the "official" skinning/rendering discussion leads somewhere. This has been a long term discussion among the devs, maybe we see some plans in the near future, but I doubt it.
Again, thanks for the input. If you find more, please tell me about.
Thanks for trying wxSkin and your bug report. I knew there were memory leaks, but I was too lazy to find & fix them. Thanks for pointing them out
I'll look at the OnExit() bug as soon as I find some time.
I won't change the includes for now. I doubt that wxSkin would ever be accepted into wxWidgets, or even get mentioned officially. You're right that it might be easier to have the include paths in "contrib" style.
I'll try to fix things and upload the new version asap. Note however that due to the lack of acceptance and interest wxSkins further development is "on ice" again. There were only few downloads and even fewer (2, not counting this thread) comments on it. I will keep it on my site, but I won't hack through the todo list for some time. I guess wxSkin works well enough in its current state and I do want to focus on some other stuff right now. Apart from that I'll wait until I can see if the "official" skinning/rendering discussion leads somewhere. This has been a long term discussion among the devs, maybe we see some plans in the near future, but I doubt it.
Again, thanks for the input. If you find more, please tell me about.
OS: OpenSuSE, Ubuntu, Win XP Pro
wx: svn
Compiler: gcc 4.5.1, VC 2008, eVC 4
"If it was hard to write it should be hard to read..." - the unknown coder
"Try not! Do. Or do not. There is no try." - Yoda
wx: svn
Compiler: gcc 4.5.1, VC 2008, eVC 4
"If it was hard to write it should be hard to read..." - the unknown coder
"Try not! Do. Or do not. There is no try." - Yoda
Hi again upCASE,
Adding the same OnExit handler (cf my previous post) this time to main_full.cpp revealed another memory leak in wxSkinEngine.cpp(444) : fsfile should be deleted
if(fsfile==NULL)
{
wxLogError(wxT("Couldn't open the specified skin file."));
return false;
}
..... skip the code using fsfile
delete fsfile; // delete fsfile before reassign it with system.OpenFile
// wxFileSystem system;
fsfile = system.OpenFile(filePrefix+screenloc);
When changing skin only, it still crashes in wxSkinEngine::Get()->Destroy(); call during exit but not for the same exact reason, so it really seems there is a memory corruption somewhere when changing to another skin.
Call Stack
ntdll.dll!7c901230()
ntdll.dll!7c96d208()
ntdll.dll!7c960ae7()
kernel32.dll!7c85e9cf()
msvcr70d.dll!_heapchk() Ligne 104 + 0x10 C
msvcr70d.dll!_CrtCheckMemory() Ligne 1500 + 0x5 C
msvcr70d.dll!_free_dbg_lk(void * pUserData=0x0104e488, int nBlockUse=0x00000001) Ligne 1100 + 0x5 C
msvcr70d.dll!_free_dbg(void * pUserData=0x0104e488, int nBlockUse=0x00000001) Ligne 1070 + 0xd C
msvcr70d.dll!operator delete(void * pUserData=0x0104e488) Ligne 53 + 0x10 C++
msvcr70d.dll!operator delete[](void * p=0x0104e488) Ligne 21 + 0x9 C++
> example_full.exe!wxBaseArrayPtrVoid::~wxBaseArrayPtrVoid() Ligne 405 + 0x32 C++
example_full.exe!wxEventTableEntryPointerArray::~wxEventTableEntryPointerArray() Ligne 2319 + 0x16 C++
example_full.exe!wxEventHashTable::EventTypeTable::~EventTypeTable() + 0x19 C++
example_full.exe!wxEventHashTable::EventTypeTable::`scalar deleting destructor'() + 0x16 C++
example_full.exe!wxEventHashTable::Clear() Ligne 829 + 0x1c C++
example_full.exe!wxEventHashTable::ClearAll() Ligne 849 C++
example_full.exe!wxEventTableEntryModule::OnExit() Ligne 122 C++
example_full.exe!wxModule::Exit() Ligne 41 + 0x1c C++
Adding the same OnExit handler (cf my previous post) this time to main_full.cpp revealed another memory leak in wxSkinEngine.cpp(444) : fsfile should be deleted
if(fsfile==NULL)
{
wxLogError(wxT("Couldn't open the specified skin file."));
return false;
}
..... skip the code using fsfile
delete fsfile; // delete fsfile before reassign it with system.OpenFile
// wxFileSystem system;
fsfile = system.OpenFile(filePrefix+screenloc);
When changing skin only, it still crashes in wxSkinEngine::Get()->Destroy(); call during exit but not for the same exact reason, so it really seems there is a memory corruption somewhere when changing to another skin.
Call Stack
ntdll.dll!7c901230()
ntdll.dll!7c96d208()
ntdll.dll!7c960ae7()
kernel32.dll!7c85e9cf()
msvcr70d.dll!_heapchk() Ligne 104 + 0x10 C
msvcr70d.dll!_CrtCheckMemory() Ligne 1500 + 0x5 C
msvcr70d.dll!_free_dbg_lk(void * pUserData=0x0104e488, int nBlockUse=0x00000001) Ligne 1100 + 0x5 C
msvcr70d.dll!_free_dbg(void * pUserData=0x0104e488, int nBlockUse=0x00000001) Ligne 1070 + 0xd C
msvcr70d.dll!operator delete(void * pUserData=0x0104e488) Ligne 53 + 0x10 C++
msvcr70d.dll!operator delete[](void * p=0x0104e488) Ligne 21 + 0x9 C++
> example_full.exe!wxBaseArrayPtrVoid::~wxBaseArrayPtrVoid() Ligne 405 + 0x32 C++
example_full.exe!wxEventTableEntryPointerArray::~wxEventTableEntryPointerArray() Ligne 2319 + 0x16 C++
example_full.exe!wxEventHashTable::EventTypeTable::~EventTypeTable() + 0x19 C++
example_full.exe!wxEventHashTable::EventTypeTable::`scalar deleting destructor'() + 0x16 C++
example_full.exe!wxEventHashTable::Clear() Ligne 829 + 0x1c C++
example_full.exe!wxEventHashTable::ClearAll() Ligne 849 C++
example_full.exe!wxEventTableEntryModule::OnExit() Ligne 122 C++
example_full.exe!wxModule::Exit() Ligne 41 + 0x1c C++
Last edited by ocococ on Thu Jan 04, 2007 2:45 pm, edited 1 time in total.
Looks real promising.
This looks like just what I need for current project. Will be working my way through it.
First thing I noted was trying to build in Unicode Debug was a problem - lots of bare strings that need to be wrapped in _T() or, I note you are using wxT().
I'm sure I'll be having questions/thoughts as I proceed. Is this the best way to continue this discussion?
rickb
This looks like just what I need for current project. Will be working my way through it.
First thing I noted was trying to build in Unicode Debug was a problem - lots of bare strings that need to be wrapped in _T() or, I note you are using wxT().
I'm sure I'll be having questions/thoughts as I proceed. Is this the best way to continue this discussion?
rickb
Hi!
I just uploaded a new version with some fixes. No new stuff added, no new components etc.
As I said, it's on ice right now. I figured that as I got almost now response this could mean three things:
1. Almost nobody uses it (most likely).
2. Nobody knows about it (likely, although I announced it here and (thanks Jorg) on the mailing list).
3. People use it and it simply works (except the bugs mentioned).
Although I do hope it's 3, I guess it's simply that only few people use it.
There seem to be some changes in wxWidgets regarding rendering. I'll sit and wait for a while to see how it works out. I did some initial work on rendering myself to allow easy ownerdrawing of controls. Works nicely on MSW and Mac, but not on GTK .
Let me know if it works and maybe send me a screenie.
I just uploaded a new version with some fixes. No new stuff added, no new components etc.
As I said, it's on ice right now. I figured that as I got almost now response this could mean three things:
1. Almost nobody uses it (most likely).
2. Nobody knows about it (likely, although I announced it here and (thanks Jorg) on the mailing list).
3. People use it and it simply works (except the bugs mentioned).
Although I do hope it's 3, I guess it's simply that only few people use it.
There seem to be some changes in wxWidgets regarding rendering. I'll sit and wait for a while to see how it works out. I did some initial work on rendering myself to allow easy ownerdrawing of controls. Works nicely on MSW and Mac, but not on GTK .
Thanks!rickbsgu wrote:Looks real promising.
This looks like just what I need for current project. Will be working my way through it.
Let me know if it works and maybe send me a screenie.
Feel free to start a new thread or post it here. I monitor the forum almost daily. You can also send me a PM or mail if you like. It's not that I get so many mails about this that I couldn't answer themrickbsgu wrote:I'm sure I'll be having questions/thoughts as I proceed. Is this the best way to continue this discussion?
OS: OpenSuSE, Ubuntu, Win XP Pro
wx: svn
Compiler: gcc 4.5.1, VC 2008, eVC 4
"If it was hard to write it should be hard to read..." - the unknown coder
"Try not! Do. Or do not. There is no try." - Yoda
wx: svn
Compiler: gcc 4.5.1, VC 2008, eVC 4
"If it was hard to write it should be hard to read..." - the unknown coder
"Try not! Do. Or do not. There is no try." - Yoda
Actually I plan on using it for an mp3 player, the only thing missing to this plan is timeupCASE wrote:Hi!
I just uploaded a new version with some fixes. No new stuff added, no new components etc.
As I said, it's on ice right now. I figured that as I got almost now response this could mean three things:
1. Almost nobody uses it (most likely).
2. Nobody knows about it (likely, although I announced it here and (thanks Jorg) on the mailing list).
3. People use it and it simply works (except the bugs mentioned).
Although I do hope it's 3, I guess it's simply that only few people use it.
So, until now, I only have took a look at it, and find it quite impressive what you made there
Having problems
HI! First of all excuse me for my english because it's my second languague.
My main problem and Iam getting desesperate is that I can't compile the examples this pack has. I really don't know which files to include or libraries.
I'am looking foward you can help me a bit.
Thanks
My main problem and Iam getting desesperate is that I can't compile the examples this pack has. I really don't know which files to include or libraries.
I'am looking foward you can help me a bit.
Thanks
I love wxSkin
I been playing with it. I'm trying to make it draw with the alpha channel. Instead of just masking everything. All school taught me was console apps.
I am new to GUI apps. I choose wxWidgets to code in.
My partner designed the GUI in Photoshop and I've been trying to figure out the best way of breaking it all up.
My goal is to make it look just like the image.
Keep up the good work. And I found out about this from wxWidgets' site.
I am new to GUI apps. I choose wxWidgets to code in.
My partner designed the GUI in Photoshop and I've been trying to figure out the best way of breaking it all up.
My goal is to make it look just like the image.
Keep up the good work. And I found out about this from wxWidgets' site.
Well I guess I'm a long way from figuring out how to draw stuff like with the alpha. Maybe one day wxWidgets will let you draw with wxImages and have no converting to to wxBitmap. And hopefully a nice way of having a window be see though.
I hope you still find time to work on wxSkin. I think you've done a great job so far.
I hope you still find time to work on wxSkin. I think you've done a great job so far.