Introjucer swallows Jucer

I’ve been wanting to get rid of the old Jucer for a while, but I know lots of people are still using it, and to be honest it can be quite handy.

So what I’ve just done is to take the old Jucer code, given it a quick clean-up and reshuffle, and embedded it inside the introjucer. It should let you do all the same stuff as the old stand-alone app, so please let me know if I’ve forgotten anything!

As a side-effect of using the introjucer’s document classes, it’ll actually do a few tricks that the old one couldn’t: it’ll let you edit the cpp file directly now, and should do its best to keep the GUI editor and the cpp file content in sync when you change them.

One small difference is that unlike the old app, there’s no global location for templates any more: each cpp file has a setting for its template, so you can specify one if you need to, or leave it blank to use the built-in default one. That means that if you import any files that used a custom template, you’ll need to set the file before saving.

Cool, thanks.

I assume though, it doesn’t get too smart about changing files? If a file was generated and then changed, will Jucer leave it alone unless I open the file for GUI editing?


Yes, it’ll leave it alone unless you re-save it.

Great, sounds like a step in the right direction!

nicely done!

I’ve noticed though - when editing a GUI component in the new, integrated Jucer - the focus is very easily lost while editing attributes of a selected subcomponent. Still haven’t figured out exactly when it happens, but i have to re-select the subcomponent many times to edit multiple attributes.

Line-endings have changed in the Jucer: all files are now generated with LF endings (on windows).
I know you have your git settings set to “don’t mess with my line endings”, but it’d be Real Nice to have the cpp/h files in crlf like before…

  • bram

Sorry, that’s not intentional - will sort it out.

Saw the commit, rebuilt, resaved, still LF!


  • bram

Are you sure you’re running the new version? It explicitly replaces all the newlines in the document now - check that you’ve got the fixLineEndings() method.

My bad jules, you are right!

  • bram

Just tried this out for the first time. Nice. I never used the original Jucer, but this looks really tidy.

Hey Jules,

There is a weird drag-issue with the UI in the introjucer/jucer combo:
when I grab a component and resize it the introjucer/jucer sometimes loses its focus on the component I’m resizing.
The same happens when moving selected objects.
There are also some weird focus-lost-when-mouse-hovering issues with components suddenly becoming not-selected.

I seem to be able to reproduce it better when I select and item and drag it really fast over the screen. It moves, then sudenly deselects itself and sits back at its original position.

The workflow with “new Jucer component” is also broken: there should be a way to add a “new jucer component” and then have it ask for the filename to save to.

  • bram

Just rebuilt with latest, still there.
It’s basically unusable like this right now.


  • bram

I noticed this issue too on Linux, but simply selecting the component after it lost focus seems to work fine. I didn’t notice any work flow problems but then again I only had a quick goo.

Made a quick screencast:

I don’t do any clicks except ON the component.
You’ll see it deselecting the component once in a while.

Especially 0:28 (resize+deselect), 0:39 (select, move mouse, deselects automatically)


  • bram

On top of the other issues mentioned, there’s no visible grid, and changing the grid size sometimes asserts to an isPositiveAndBelow or brings me to the Component’s CPP file!

Looks like these might be fixed:

Will rebuild today and see what gives.

  • bram

BTW, Jules, while on the bike from home to the office today I thought: wouldn’t it be great if it would be possible to now use images imported as binary-data in the intrujucer as images for buttons/knobs/… now!


  • bram

IMHO, no it wouldn’t! One of my pet hates is bitmap-based graphics, I want to encourage people to use vectors!