Juce Quake Introjucer (ready to use?)

The first snippet makes sense, but surely the second lot of code doesn’t belong in addFile() ??

no, thats right. You can define special build rule for specific Files (which is very useful tool) , the xml which is generated is correct!

i saw you implemented the pre-build-event in the msvc project exporter, what I miss is to change the value directly in the introjucer gui…

Yes, I didn’t get as far as connecting it to a user setting…

thanks for the answer, other question:

i use special plist entries for file associatons, will they be overwritten each time i save the project?, if yes there should be an option to preserve/ or define them in the introjucer.

[attachment=0]pListFileAssociation.png[/attachment]

It will overwrite the whole plist, but I think that most or all of those items that you’ve highlighted can already be set in the introjucer…

aah, thanks, i was a little bit too quick, would be fancy if one can select a special icon for the extensions.

Also it seems that that only a 32x32 bit XP icon format is added to the icon-file (on windows), you can also add a additional 256x256 png (since Vista) as container-file

Other issue:
if I select “Optimise for maximum Speed” in Introjucer it uses “Full Optimization (/Ox)” in MSVC, but i think it should should be “Maximize Speed (/O2)”

Other issue:

sometimes i get this (runtime) errors with the introjucer

First-chance exception at 0x76a5c83b in Introjucer.exe: Microsoft C++ exception: juce::Expression::Helpers::EvaluationError at memory location 0x00bcea48.. Expression::EvaluationError: Unknown symbol: parent First-chance exception at 0x76a5c83b in Introjucer.exe: Microsoft C++ exception: juce::Expression::Helpers::EvaluationError at memory location 0x00bceaf4.. Expression::EvaluationError: Unknown symbol: parent First-chance exception at 0x76a5c83b in Introjucer.exe: Microsoft C++ exception: juce::Expression::Helpers::EvaluationError at memory location 0x00bceaf4.. Expression::EvaluationError: Unknown symbol: parent First-chance exception at 0x76a5c83b in Introjucer.exe: Microsoft C++ exception: juce::Expression::Helpers::EvaluationError at memory location 0x00bce724.. Expression::EvaluationError: Unknown symbol: parent First-chance exception at 0x76a5c83b in Introjucer.exe: Microsoft C++ exception: juce::Expression::Helpers::EvaluationError at memory location 0x00bce7d0.. Expression::EvaluationError: Unknown symbol: parent First-chance exception at 0x76a5c83b in Introjucer.exe: Microsoft C++ exception: juce::Expression::Helpers::EvaluationError at memory location 0x00bce7d0.. Expression::EvaluationError: Unknown symbol: parent First-chance exception at 0x76a5c83b in Introjucer.exe: Microsoft C++ exception: juce::Expression::Helpers::EvaluationError at memory location 0x00bcea48.. Expression::EvaluationError: Unknown symbol: parent

theese is a callstack to the error above

> Introjucer.exe!_heap_alloc_dbg_impl(unsigned int nSize=65650232, int nBlockUse=1830088, const char * szFileName=0xd3dad7a8, int nLine=0, int * errno_tmp=0x00000000) Line 500 + 0x7 bytes C++ Introjucer.exe!juce::Expression::Helpers::DotOperator::resolve(const juce::Expression::Scope & scope={...}, int recursionDepth=0) Line 319 C++ Introjucer.exe!juce::Expression::Helpers::BinaryTerm::resolve(const juce::Expression::Scope & scope={...}, int recursionDepth=0) Line 164 + 0x8d bytes C++ Introjucer.exe!juce::Expression::Helpers::BinaryTerm::resolve(const juce::Expression::Scope & scope={...}, int recursionDepth=0) Line 164 + 0x8d bytes C++ Introjucer.exe!juce::Expression::evaluate(const juce::Expression::Scope & scope={...}) Line 984 + 0x22 bytes C++ Introjucer.exe!juce::RelativeCoordinate::resolve(const juce::Expression::Scope * scope=0x001bf084) Line 121 + 0xc bytes C++ Introjucer.exe!juce::RelativeRectangle::resolve(const juce::Expression::Scope * scope=0x001bf084) Line 152 + 0xc bytes C++ Introjucer.exe!juce::RelativeRectangleComponentPositioner::applyToComponentBounds() Line 221 + 0x17 bytes C++ Introjucer.exe!juce::RelativeCoordinatePositionerBase::apply() Line 240 C++ Introjucer.exe!juce::RelativeRectangle::applyToComponent(juce::Component & component={...}) Line 263 C++ Introjucer.exe!juce::Component::setBounds(const juce::RelativeRectangle & newBounds={...}) Line 1084 C++ Introjucer.exe!juce::Component::setBounds(const juce::String & newBoundsExpression={...}) Line 1088 + 0x28 bytes C++ Introjucer.exe!ModuleSettingsPanel::ModuleSettingsPanel(Project & project_={...}, ModuleList & moduleList_={...}, const juce::String & moduleID_={...}) Line 117 + 0x1d bytes C++ Introjucer.exe!ModulesPanel::selectionChanged(const ModuleList::Module * selectedModule=0x03ea2228) Line 443 + 0x37 bytes C++ Introjucer.exe!ModuleSelectionListBox::selectedRowsChanged(int lastRowSelected=2) Line 335 C++ Introjucer.exe!juce::ListBox::selectRowInternal(const int row=2, bool dontScroll=false, bool deselectOthersFirst=true, bool isMouseClick=true) Line 478 C++ Introjucer.exe!juce::ListBox::selectRowsBasedOnModifierKeys(const int row=2, const juce::ModifierKeys & mods={...}, const bool isMouseUpEvent=false) Line 575 C++ Introjucer.exe!juce::ListBoxRowComponent::mouseDown(const juce::MouseEvent & e={...}) Line 77 C++ Introjucer.exe!juce::Component::internalMouseDown(juce::MouseInputSource & source={...}, const juce::Point<int> & relativePos={...}, const juce::Time & time={...}) Line 2400 C++ Introjucer.exe!juce::MouseInputSourceInternal::sendMouseDown(juce::Component * const comp=0x04b93878, const juce::Point<int> & screenPos={...}, const juce::Time & time={...}) Line 111 + 0x39 bytes C++ Introjucer.exe!juce::MouseInputSourceInternal::setButtons(const juce::Point<int> & screenPos={...}, const juce::Time & time={...}, const juce::ModifierKeys & newButtonState={...}) Line 180 C++ Introjucer.exe!juce::MouseInputSourceInternal::handleEvent(juce::ComponentPeer * const newPeer=0x04b21450, const juce::Point<int> & positionWithinPeer={...}, const juce::Time & time={...}, const juce::ModifierKeys & newMods={...}) Line 277 + 0x14 bytes C++ Introjucer.exe!juce::MouseInputSource::handleEvent(juce::ComponentPeer * peer=0x04b21450, const juce::Point<int> & positionWithinPeer={...}, const __int64 time=1317913163077, const juce::ModifierKeys & mods={...}) Line 526 + 0x48 bytes C++ Introjucer.exe!juce::ComponentPeer::handleMouseEvent(const int touchIndex=0, const juce::Point<int> & positionWithinPeer={...}, const juce::ModifierKeys & newMods={...}, const __int64 time=1317913163077) Line 95 C++ Introjucer.exe!juce::HWNDComponentPeer::doMouseEvent(const juce::Point<int> & position={...}) Line 1328 C++ Introjucer.exe!juce::HWNDComponentPeer::doMouseDown(const juce::Point<int> & position={...}, const unsigned int wParam=1) Line 1423 C++ Introjucer.exe!juce::HWNDComponentPeer::peerWindowProc(HWND__ * h=0x00130adc, unsigned int message=513, unsigned int wParam=1, long lParam=8978891) Line 1992 + 0x36 bytes C++ Introjucer.exe!juce::HWNDComponentPeer::windowProc(HWND__ * h=0x00130adc, unsigned int message=513, unsigned int wParam=1, long lParam=8978891) Line 1920 + 0x18 bytes C++ user32.dll!74fa8817() user32.dll!74fa898e() user32.dll!74fa8921() user32.dll!74fa8ab9() user32.dll!74fa8b10() Introjucer.exe!juce::MessageManager::dispatchNextMessageOnSystemQueue(const bool returnIfNoPendingMessages=false) Line 136 C++ Introjucer.exe!juce::MessageManager::runDispatchLoopUntil(int millisecondsToRunFor=-1) Line 151 + 0x10 bytes C++ Introjucer.exe!juce::MessageManager::runDispatchLoop() Line 132 C++ Introjucer.exe!juce::JUCEApplication::main(const juce::String & commandLine={...}) Line 217 C++ Introjucer.exe!WinMain(void * __formal=0x01360000, void * __formal=0x01360000, void * __formal=0x01360000, void * __formal=0x01360000) Line 28 + 0x54 bytes C++ Introjucer.exe!__tmainCRTStartup() Line 263 + 0x2c bytes C Introjucer.exe!WinMainCRTStartup() Line 182 C

It’s not an error, just an exception being used internally.

Jules, could you make the “msvcPreBuildCommand” configurable in the MSVC Project-Exporter Tab (its already defined jucer_ProjectExport_MSVC.h)?
Thats my missing link here…

[code] XmlElement* preBuildEvent = createToolElement (xml, “VCPreBuildEventTool”);

    if (msvcPreBuildDescription.isNotEmpty() || msvcPreBuildCommand.isNotEmpty())
    {
        preBuildEvent->setAttribute ("Description", msvcPreBuildDescription);
        preBuildEvent->setAttribute ("CommandLine", msvcPreBuildCommand);
    }[/code]

Yeah, will do…