wxSkin - release 0.9 alpha

Do you like to promote your wxWidgets based application or component!? Post it here and let's see what the critics have to say. Also, if you found that ONE wx component the world needs to know about, put it here for future reference.

What do you think about wxSkin?

Great thing!
18
64%
Nice, but needs some updates...
9
32%
Quite ok.
1
4%
It's a pile of cr*p
0
No votes
 
Total votes: 28

upCASE
Moderator
Moderator
Posts: 3176
Joined: Mon Aug 30, 2004 6:55 am
Location: Germany, Cologne

wxSkin - release 0.9 alpha

Post by upCASE »

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!
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
priyank_bolia
wxWorld Domination!
wxWorld Domination!
Posts: 1339
Joined: Wed Aug 03, 2005 8:10 am
Location: BANGALORE, INDIA
Contact:

Post by priyank_bolia »

First impression is really good. I' try it for some application.
User avatar
Ryan Norton
wxWorld Domination!
wxWorld Domination!
Posts: 1319
Joined: Mon Aug 30, 2004 6:01 pm

Post by Ryan Norton »

looks good - couple notes

1) Artifacts from window left behind
2) Pure virtual function call in sample when closing after playing
(maybe an old wxMediaCtrl bug)


VERY NEAT :D!
[Mostly retired moderator, still check in to clean up some stuff]
upCASE
Moderator
Moderator
Posts: 3176
Joined: Mon Aug 30, 2004 6:55 am
Location: Germany, Cologne

Post by upCASE »

Hi!
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)
Could you explain a bit more in detail, please?

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
User avatar
Ryan Norton
wxWorld Domination!
wxWorld Domination!
Posts: 1319
Joined: Mon Aug 30, 2004 6:01 pm

Post by Ryan Norton »

Hi Upcase!!
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)
Could you explain a bit more in detail, please?
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 :D) - still sort of happens although maybe due to excessive refereshing? (2) I can't reproduce in XP...

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.
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 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 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:

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]
ocococ
In need of some credit
In need of some credit
Posts: 2
Joined: Thu Jan 04, 2007 8:03 am

Post by ocococ »

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.
upCASE
Moderator
Moderator
Posts: 3176
Joined: Mon Aug 30, 2004 6:55 am
Location: Germany, Cologne

Post by upCASE »

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.
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
ocococ
In need of some credit
In need of some credit
Posts: 2
Joined: Thu Jan 04, 2007 8:03 am

Post by ocococ »

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++
Last edited by ocococ on Thu Jan 04, 2007 2:45 pm, edited 1 time in total.
rickbsgu
Earned a small fee
Earned a small fee
Posts: 16
Joined: Wed Nov 08, 2006 2:32 am

Post by rickbsgu »

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
upCASE
Moderator
Moderator
Posts: 3176
Joined: Mon Aug 30, 2004 6:55 am
Location: Germany, Cologne

Post by upCASE »

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 .
rickbsgu wrote:Looks real promising.
This looks like just what I need for current project. Will be working my way through it.
Thanks!
Let me know if it works and maybe send me a screenie.
rickbsgu wrote:I'm sure I'll be having questions/thoughts as I proceed. Is this the best way to continue this discussion?
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 them ;)
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
phlox81
wxWorld Domination!
wxWorld Domination!
Posts: 1387
Joined: Thu Aug 18, 2005 7:49 pm
Location: Germany
Contact:

Post by phlox81 »

upCASE 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.
Actually I plan on using it for an mp3 player, the only thing missing to this plan is time ;)
So, until now, I only have took a look at it, and find it quite impressive what you made there :)
- Pk2 -
In need of some credit
In need of some credit
Posts: 3
Joined: Wed Oct 31, 2007 10:40 am

Having problems

Post by - Pk2 - »

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
pcvii
In need of some credit
In need of some credit
Posts: 2
Joined: Mon Dec 17, 2007 5:24 am

I love wxSkin

Post by pcvii »

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.
pcvii
In need of some credit
In need of some credit
Posts: 2
Joined: Mon Dec 17, 2007 5:24 am

Post by pcvii »

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.
garrizano
Earned a small fee
Earned a small fee
Posts: 10
Joined: Fri Apr 23, 2010 3:31 am
Location: El Salvador
Contact:

Post by garrizano »

I compiled my project with source files wxSkin and when I run I always get an error that says: "No handlers found for image type".
What have I done wrong?
Vive como si fuera el ultimo dia de tu vida.
Post Reply