Introjucer feedback

I shall reply via PM to avoid polluting this thread with a tagental discussion :)

Like

  • It's quite great all around! It has most features we would ever need at this point, and it increases my workflow speed to a point I'd imagine it measurable. I'm not sure about anybody else, but I find it really annoying to create and maintain several projects by hand that overall relate to the same code. It's nice to go to one place and do your changes there - for all projects.

Dislike

  • I wish there was an auto-sorting by group mechanism. Personally, I can't stand projects, even small ones, to be disorganised, and hate when files and filters aren't always in alphabetical order! (╯°□°)╯︵ ┻━┻ It would be useful to just be able to toggle this feature on, drop new files, and expect them to be instantly sorted - instead of haphazardly listing files, and have to go through every bloody filter to sort them.
  • (For the above point, see http://juce.com/forum/topic/introjucer-recursive-valuetree-sorting)
  • Essentially any non-code file automatically gets prepared for binary data when added to the Introjucer project. This should be a user configurable option - which I would disable!
  • On that same note, custom module juce_module_info files should be automatically excluded from binary data when dropped into the Introjucer project.
  • The default light colour scheme has white text on a light background, for the first Create New Project screen. Makes it really hard to read the text!

Other

  • http://juce.com/forum/topic/introjucer-new-project-intuitive-exporter-adding
  • http://juce.com/forum/topic/add-module-series-preset
  • I get that you can specify a module from a specific folder, but it would be nice if you could save a list of these folders/modules so they always show up as options in the "Add a module" popup menu. 
  • Project templates are great! They're really handy for getting up and running. The problem is that everybody has a different way of getting started, once they're familiar enough. Unless I'm skimming over how to do this, support for custom project templates would be awesome.
  • Project templates with ability to specify modules, JUCE and 3rd party.
  • Integrated git support would be a plus! A combination of specifying a repository to sync up with for a project, and always having the Introjucer sync up to the juce git repository. 
  • Lacking a javascript syntax highlighter
  • Reference highlighting would be handy. This is a Visual Studio feature that I wish existed everywhere. http://blogs.msdn.com/b/zainnab/archive/2013/07/18/visual-studio-2013-reference-highlighting.aspx
  • Somewhat like Projucer's concept: compiling within the Introjucer. This would be a big step into moving the Introjucer into the true IDE world. It would be really cool to just specify the compiler (e.g.: GCC, Clang, MSVC) and project configuration, hit "build" and get the spew of errors and warnings back (if any).
  • The other true IDE hard stuff: Auto-complete? Refactoring tools? Header and forward declaration clean up tools? Static analysis tool hooks? e.g.: https://www.jetbrains.com/idea/help/optimizing-imports.html
  • Some other points I've seen come up in the forum: Eclipse exporter, AndroidStudio exporter, QtCreator exporter

Edit: Added project template idea 

Thank you!

Some of these things are actually in development, I'll leave it to you to guess at which ;) Others are very good ideas that we should do. Watch this space!

Been watching the forum in its entirety for years now... :)

Like:

  • Ease to setup proyects
  • Ease to move projects to multiple platforms
  • Quick view and navigation project code

Dislike:

  • Mmmh, I don't know, but I would like some new features...

Other:

  • Instead hardocoded templates, I would like the possibility to create custom project templates (settings and code template)
  • Per file compiler flags, I think this is a very important feature...

 

I get that you can specify a module from a specific folder, but it would be nice if you could save a list of these folders/modules so they always show up as options in the "Add a module" popup menu. 

> Project templates are great! They're really handy for getting up and running. The problem is that everybody has a different way of getting started, once they're familiar enough. Unless I'm skimming over how to do this, support for custom project templates would be awesome.

 

+1 on both of these!

Thank you for the feedback! :)

This is related to another dislike in this thread:

My only major annoyance with Introjucer is per-file compilation settings. One of our projects depends on a third party ".rc" file for Windows. Anytime that I save the project via the Introjucer, I have to find the file in MSVC, open up its properties, and change its Item Type to "Resource Compiler".

There are a lot of Item Types in MSVC, so it would probably be tough/ponderous to support all of them in a well-designed, non-intrusive way. However, I do think that the Introjucer should automatically recognize certain file types, like ".rc" files, and set appropriate flags. External .rc files are not that uncommon for Windows developers!

Other than that, I have no major complaints with it. I do agree with someone else earlier in the thread... VST and VST3 SDK folders should be a global option so that they don't need to be set for every... single... project...

You can actually globally set the SDK directories (VST, Android, etc) now with the IntroJucer. There's a new global settings option in the menu bar somewhere.

I'm just gonna link to this request that I previously made:

http://www.juce.com/forum/topic/rename-exporter-configurations

Would help out when managing both x86 + x64 builds on Windows.

Like:

- Very easy to create initial cross-platform projects

- Project updates (files, resources) quickly reflected across all platforms

Dislike:

- IJ only provides customization of a subset of IDE settings; any not supported by IJ get wiped out every time .jucer file is re-saved

- Assumes no other element of the product dev environment needs to modify the IDE project files.  This is a problem, for instance, with a certain popular copy protection scheme which makes the same assumption and uses a VS IDE plugin to customize the project file.  Both IJ and this CP assume they have "control" over the project file, creating a major headache.

Other:

- I'd very much like to see support for .xconfig and .vsprops files - this might be one way to address much of the overwriting-customizations-on-save issues. 

- Better/easier/more flexible template customization would be great so that new projects could start with all our setup tweaks, rather than a basic "audio plugin" that we then have to manually adjust by copying customizations from an existing project 

- Not a fully formed thought, but It would also be nice to move the version # out of IJ somehow so that a re-save isn't necessary to bump versions every build.  This is mostly an issue because of the issues above.

As Jordan said, there is a an option for this, but it's clear that it's not obvious enough as you're not the only person having this issue.


I agree with you about the *.rc files; they're really common on Windows so we should add some explicit support for them.


Thanks for the feedback! :)
 

Ah, good use case! Thanks for the feedback :)

All very good points! Also, thank you for mentioning the .vsprops files; didn't know about those.

Thanks for the feedback! :)

As for the custom resized() issue you can always do something "messy" like this:

void BlahComponent::resized()
{
    //[UserPreResize] Add your own custom resize code here..

    // Do custom resize stuff here ..
            
#if 0 // disable default Introjucer code 

    //[/UserPreResize]

    label->setBounds (8, 5, 400, 24);
    slider->setBounds (6, 27, 392, 34);
    button->setBounds (13, 65, 103, 24);
    thing->setBounds (7, 91, 109, 33);

    //[UserResized] Add your own custom resize handling here..

#endif

    // .. or do custom stuff here

    //[/UserResized]
}

But actually, it means you can do potentially useful stuff like this too:

void BlahComponent::resized()
{
    //[UserPreResize] Add your own custom resize code here..
            
    if (! weWantToUseSomeKindOfCustomResizeCode)
    {
    //[/UserPreResize]

    label->setBounds (8, 5, 400, 24);
    slider->setBounds (6, 27, 392, 34);
    button->setBounds (13, 65, 103, 24);
    thing->setBounds (7, 91, 109, 33);

    //[UserResized] Add your own custom resize handling here..
    }
    else
    {
        // do some kind of custom resize stuff
    }

    //[/UserResized]
}

I haven't used this particular pattern for the resized() function, but I use this sort of thing quite a bit to customise other behaviour in the Introjucer-generated code. I'm not sure all of them would be generalisable as an option.

If i am editing code in a Gui component’s cpp file, and click to display another file… when i come back to the original file i was editing, introjucer automatically opens at the Subcomponents tab.

Is there any compelling reason why this happens?

If i’m editing code, 99% of the time, when i come back to that file, i want to edit code again.

Would also really love the option to copy files into my project’s source folder when right clicking ‘add existing files’

Both good comments, there's no reason I'm aware of!

Thanks for the feedback :)

A native way to make a homogenous group of components would help a lot!  

ie, i want to make 12 sliders, and put them all in an owned array or whatever.  Would be cool to be able to do that simply with the introjucer.  

Is that already possible perhaps?  I was kinda thinking that was what a group box would be for.  

Not that I know of,  but then again, I hardly ever use the GUI editor.

There's a danger of feature creep if we implement such a thing, but we'll certainly discuss it :)