Using Juce GUI to replace WxWidgets


#1

I'm new to Juce and will get to programming a plugin soon, but I have a few questions about using just the Juce GUI to replace WxWidgets in an existing open source c++ command line app.

  1. How close are Juce GUI and WxWidgets in functionality? i.e. does WxWidgets do anything that Juce GUI doesn't?
  2. How different are they in use? 
  3. Does anyone have experience in porting WxWidgets code to Juce GUI (Xangis?).
  4. If porting is possible, in general, what would be the recommended methods to do so?

The app is pretty graphics-heavy (mostly 2D, some 3D) with an extensive use of toolbars. There's not much in the way of animations, though that may change.

The codebase is huge with c++ code spanning over 10ish years, so a tool or script to help conversion would be useful.

I'm just trying to get an idea of the scope of the work. Their WxWidgets problems are not likely to go away on their own so at some point they'll have to bite the bullet.

 


#2

I don't really know much about WxWidgets so can't help here! Maybe someone else with experience of it can give you some advice..


#3

I used wxWidgets in a previous existence. But it was a long time ago. The standout difference for me was the the way the two frameworks handle events. If I recall correctly, wxWidgets uses an event table. JUCE obviously uses a different approach here in its event listeners. Anyhow, I think you are probably looking at a fairly extensive re-write.

When I ported my wxWidgets app to JUCE I continued to use all the standard library stuff like std::vector, std::string, etc. so there were large chunks of generic code that I could simply copy and paste. It could well be the same in your case. After some time however I started to notice that JUCE also contains a String class, and several useful Array classes, and also certain classes that meant I could drop libraries from my project. So over time I slowly started using JUCE classes for absolutely everything. It resulted in a much easier to manage project.

It's going to be a slow process, but I think it will be worth it in the end.

 

p.s. what kind of command line application makes extensive use of graphics and menu bars?