Browse Source

Introjucer: Added Android Studio exporter

tags/2021-05-28
jules 10 years ago
parent
commit
810f2bfb2a
40 changed files with 2245 additions and 364 deletions
  1. +899
    -0
      examples/Demo/Builds/Android/jni/Android.mk
  2. +16
    -2
      examples/Demo/Builds/Android/src/com/juce/jucedemo/JuceDemo.java
  3. +8
    -0
      extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
  4. +26
    -22
      extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
  5. +11
    -0
      extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
  6. +11
    -0
      extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
  7. +2
    -0
      extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
  8. +6
    -0
      extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
  9. +2
    -0
      extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
  10. +6
    -0
      extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
  11. +2
    -0
      extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
  12. +6
    -0
      extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
  13. +2
    -0
      extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj
  14. +6
    -0
      extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters
  15. +4
    -0
      extras/Introjucer/Introjucer.jucer
  16. +86
    -42
      extras/Introjucer/JuceLibraryCode/BinaryData.cpp
  17. +4
    -1
      extras/Introjucer/JuceLibraryCode/BinaryData.h
  18. +1
    -0
      extras/Introjucer/Source/Application/jucer_CommandIDs.h
  19. +37
    -0
      extras/Introjucer/Source/BinaryData/background_logo.svg
  20. +221
    -189
      extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Android.h
  21. +616
    -0
      extras/Introjucer/Source/Project Saving/jucer_ProjectExport_AndroidStudio.h
  22. +28
    -23
      extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp
  23. +2
    -0
      extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.h
  24. +3
    -19
      extras/Introjucer/Source/Project/jucer_ConfigTree_Base.h
  25. +28
    -3
      extras/Introjucer/Source/Project/jucer_ConfigTree_Exporter.h
  26. +1
    -0
      extras/Introjucer/Source/Project/jucer_ConfigTree_Modules.h
  27. +1
    -0
      extras/Introjucer/Source/Project/jucer_Project.h
  28. +82
    -22
      extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp
  29. +1
    -0
      extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h
  30. +5
    -7
      extras/Introjucer/Source/Project/jucer_ProjectTree_Base.h
  31. +0
    -5
      extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp
  32. +8
    -8
      extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h
  33. +1
    -1
      extras/Introjucer/Source/Wizards/jucer_NewProjectWizardComponent.h
  34. +35
    -0
      modules/juce_core/files/juce_File.cpp
  35. +21
    -15
      modules/juce_core/files/juce_File.h
  36. +1
    -1
      modules/juce_core/native/juce_linux_CommonFile.cpp
  37. +7
    -2
      modules/juce_core/native/juce_mac_Files.mm
  38. +34
    -2
      modules/juce_core/native/juce_win32_Files.cpp
  39. +6
    -0
      modules/juce_core/text/juce_StringArray.cpp
  40. +9
    -0
      modules/juce_core/text/juce_StringArray.h

+ 899
- 0
examples/Demo/Builds/Android/jni/Android.mk View File

@@ -13,9 +13,13 @@ LOCAL_MODULE := juce_jni
LOCAL_SRC_FILES := \ LOCAL_SRC_FILES := \
../../../Source/Main.cpp\ ../../../Source/Main.cpp\
../../../Source/MainWindow.cpp\ ../../../Source/MainWindow.cpp\
../../../Source/MainWindow.h\
../../../Source/DemoUtilities.h\
../../../Source/IntroScreen.cpp\ ../../../Source/IntroScreen.cpp\
../../../Source/JuceDemoHeader.h\
../../../Source/Demos/AnimationDemo.cpp\ ../../../Source/Demos/AnimationDemo.cpp\
../../../Source/Demos/AudioLatencyDemo.cpp\ ../../../Source/Demos/AudioLatencyDemo.cpp\
../../../Source/Demos/AudioLiveScrollingDisplay.h\
../../../Source/Demos/AudioPlaybackDemo.cpp\ ../../../Source/Demos/AudioPlaybackDemo.cpp\
../../../Source/Demos/AudioRecordingDemo.cpp\ ../../../Source/Demos/AudioRecordingDemo.cpp\
../../../Source/Demos/AudioSettingsDemo.cpp\ ../../../Source/Demos/AudioSettingsDemo.cpp\
@@ -47,11 +51,905 @@ LOCAL_SRC_FILES := \
../../../Source/Demos/UnitTestsDemo.cpp\ ../../../Source/Demos/UnitTestsDemo.cpp\
../../../Source/Demos/ValueTreesDemo.cpp\ ../../../Source/Demos/ValueTreesDemo.cpp\
../../../Source/Demos/VideoDemo.cpp\ ../../../Source/Demos/VideoDemo.cpp\
../../../Source/Demos/WavefrontObjParser.h\
../../../Source/Demos/WebBrowserDemo.cpp\ ../../../Source/Demos/WebBrowserDemo.cpp\
../../../Source/Demos/WidgetsDemo.cpp\ ../../../Source/Demos/WidgetsDemo.cpp\
../../../Source/Demos/WindowsDemo.cpp\ ../../../Source/Demos/WindowsDemo.cpp\
../../../Source/Demos/XMLandJSONDemo.cpp\ ../../../Source/Demos/XMLandJSONDemo.cpp\
../../../Resources/tile_background.png\
../../../Resources/cello.wav\
../../../Resources/demo\ table\ data.xml\
../../../Resources/icons.zip\
../../../Resources/juce_icon.png\
../../../Resources/juce_module_info\
../../../Resources/portmeirion.jpg\
../../../Resources/teapot.obj\
../../../Resources/treedemo.xml\
../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp\
../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h\
../../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h\
../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp\
../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h\
../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp\
../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h\
../../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp\
../../../../../modules/juce_audio_basics/midi/juce_MidiFile.h\
../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp\
../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h\
../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp\
../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h\
../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp\
../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.h\
../../../../../modules/juce_audio_basics/effects/juce_Decibels.h\
../../../../../modules/juce_audio_basics/effects/juce_FFT.cpp\
../../../../../modules/juce_audio_basics/effects/juce_FFT.h\
../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp\
../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h\
../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp\
../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h\
../../../../../modules/juce_audio_basics/effects/juce_Reverb.h\
../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h\
../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp\
../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h\
../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp\
../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h\
../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp\
../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h\
../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp\
../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h\
../../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h\
../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp\
../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h\
../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp\
../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h\
../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp\
../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h\
../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp\
../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h\
../../../../../modules/juce_audio_basics/juce_module_info\
../../../../../modules/juce_audio_basics/juce_audio_basics.h\
../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp\
../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h\
../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp\
../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h\
../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp\
../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h\
../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h\
../../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h\
../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp\
../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h\
../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp\
../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h\
../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp\
../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h\
../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp\
../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h\
../../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h\
../../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp\
../../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h\
../../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp\
../../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp\
../../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp\
../../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp\
../../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp\
../../../../../modules/juce_audio_devices/native/juce_linux_AudioCDReader.cpp\
../../../../../modules/juce_audio_devices/native/juce_linux_JackAudio.cpp\
../../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp\
../../../../../modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm\
../../../../../modules/juce_audio_devices/native/juce_mac_AudioCDReader.mm\
../../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp\
../../../../../modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp\
../../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h\
../../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp\
../../../../../modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp\
../../../../../modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp\
../../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp\
../../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp\
../../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp\
../../../../../modules/juce_audio_devices/juce_module_info\
../../../../../modules/juce_audio_devices/juce_audio_devices.h\
../../../../../modules/juce_audio_formats/format/juce_AudioFormat.cpp\
../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h\
../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp\
../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.h\
../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp\
../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h\
../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp\
../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h\
../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp\
../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.h\
../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp\
../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h\
../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp\
../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h\
../../../../../modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h\
../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h\
../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h\
../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h\
../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h\
../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h\
../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h\
../../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.h\
../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.h\
../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp\
../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h\
../../../../../modules/juce_audio_formats/sampler/juce_Sampler.cpp\
../../../../../modules/juce_audio_formats/sampler/juce_Sampler.h\
../../../../../modules/juce_audio_formats/juce_module_info\
../../../../../modules/juce_audio_formats/juce_audio_formats.h\
../../../../../modules/juce_audio_processors/processors/juce_AudioPlayHead.h\
../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h\
../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp\
../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h\
../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp\
../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h\
../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp\
../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h\
../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h\
../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h\
../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp\
../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h\
../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp\
../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h\
../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp\
../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h\
../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp\
../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h\
../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h\
../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm\
../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp\
../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h\
../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h\
../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h\
../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp\
../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h\
../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h\
../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp\
../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h\
../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp\
../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h\
../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp\
../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h\
../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp\
../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h\
../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h\
../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h\
../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h\
../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h\
../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp\
../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h\
../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp\
../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h\
../../../../../modules/juce_audio_processors/juce_module_info\
../../../../../modules/juce_audio_processors/juce_audio_processors.h\
../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp\
../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h\
../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp\
../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h\
../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp\
../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h\
../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h\
../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp\
../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h\
../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp\
../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h\
../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp\
../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h\
../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp\
../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h\
../../../../../modules/juce_audio_utils/juce_module_info\
../../../../../modules/juce_audio_utils/juce_audio_utils.h\
../../../../../modules/juce_box2d/box2d/Box2D.h\
../../../../../modules/juce_box2d/box2d/README.txt\
../../../../../modules/juce_box2d/utils/juce_Box2DRenderer.cpp\
../../../../../modules/juce_box2d/utils/juce_Box2DRenderer.h\
../../../../../modules/juce_box2d/juce_module_info\
../../../../../modules/juce_box2d/juce_box2d.h\
../../../../../modules/juce_core/text/juce_Base64.cpp\
../../../../../modules/juce_core/text/juce_Base64.h\
../../../../../modules/juce_core/text/juce_CharacterFunctions.cpp\
../../../../../modules/juce_core/text/juce_CharacterFunctions.h\
../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h\
../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h\
../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h\
../../../../../modules/juce_core/text/juce_CharPointer_UTF32.h\
../../../../../modules/juce_core/text/juce_Identifier.cpp\
../../../../../modules/juce_core/text/juce_Identifier.h\
../../../../../modules/juce_core/text/juce_LocalisedStrings.cpp\
../../../../../modules/juce_core/text/juce_LocalisedStrings.h\
../../../../../modules/juce_core/text/juce_NewLine.h\
../../../../../modules/juce_core/text/juce_String.cpp\
../../../../../modules/juce_core/text/juce_String.h\
../../../../../modules/juce_core/text/juce_StringArray.cpp\
../../../../../modules/juce_core/text/juce_StringArray.h\
../../../../../modules/juce_core/text/juce_StringPairArray.cpp\
../../../../../modules/juce_core/text/juce_StringPairArray.h\
../../../../../modules/juce_core/text/juce_StringPool.cpp\
../../../../../modules/juce_core/text/juce_StringPool.h\
../../../../../modules/juce_core/text/juce_StringRef.h\
../../../../../modules/juce_core/text/juce_TextDiff.cpp\
../../../../../modules/juce_core/text/juce_TextDiff.h\
../../../../../modules/juce_core/maths/juce_BigInteger.cpp\
../../../../../modules/juce_core/maths/juce_BigInteger.h\
../../../../../modules/juce_core/maths/juce_Expression.cpp\
../../../../../modules/juce_core/maths/juce_Expression.h\
../../../../../modules/juce_core/maths/juce_MathsFunctions.h\
../../../../../modules/juce_core/maths/juce_NormalisableRange.h\
../../../../../modules/juce_core/maths/juce_Random.cpp\
../../../../../modules/juce_core/maths/juce_Random.h\
../../../../../modules/juce_core/maths/juce_Range.h\
../../../../../modules/juce_core/memory/juce_Atomic.h\
../../../../../modules/juce_core/memory/juce_ByteOrder.h\
../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h\
../../../../../modules/juce_core/memory/juce_HeapBlock.h\
../../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h\
../../../../../modules/juce_core/memory/juce_Memory.h\
../../../../../modules/juce_core/memory/juce_MemoryBlock.cpp\
../../../../../modules/juce_core/memory/juce_MemoryBlock.h\
../../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h\
../../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h\
../../../../../modules/juce_core/memory/juce_ScopedPointer.h\
../../../../../modules/juce_core/memory/juce_SharedResourcePointer.h\
../../../../../modules/juce_core/memory/juce_Singleton.h\
../../../../../modules/juce_core/memory/juce_WeakReference.h\
../../../../../modules/juce_core/containers/juce_AbstractFifo.cpp\
../../../../../modules/juce_core/containers/juce_AbstractFifo.h\
../../../../../modules/juce_core/containers/juce_Array.h\
../../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h\
../../../../../modules/juce_core/containers/juce_DynamicObject.cpp\
../../../../../modules/juce_core/containers/juce_DynamicObject.h\
../../../../../modules/juce_core/containers/juce_ElementComparator.h\
../../../../../modules/juce_core/containers/juce_HashMap.h\
../../../../../modules/juce_core/containers/juce_LinkedListPointer.h\
../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp\
../../../../../modules/juce_core/containers/juce_NamedValueSet.h\
../../../../../modules/juce_core/containers/juce_OwnedArray.h\
../../../../../modules/juce_core/containers/juce_PropertySet.cpp\
../../../../../modules/juce_core/containers/juce_PropertySet.h\
../../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h\
../../../../../modules/juce_core/containers/juce_ScopedValueSetter.h\
../../../../../modules/juce_core/containers/juce_SortedSet.h\
../../../../../modules/juce_core/containers/juce_SparseSet.h\
../../../../../modules/juce_core/containers/juce_Variant.cpp\
../../../../../modules/juce_core/containers/juce_Variant.h\
../../../../../modules/juce_core/threads/juce_ChildProcess.cpp\
../../../../../modules/juce_core/threads/juce_ChildProcess.h\
../../../../../modules/juce_core/threads/juce_CriticalSection.h\
../../../../../modules/juce_core/threads/juce_DynamicLibrary.h\
../../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp\
../../../../../modules/juce_core/threads/juce_HighResolutionTimer.h\
../../../../../modules/juce_core/threads/juce_InterProcessLock.h\
../../../../../modules/juce_core/threads/juce_Process.h\
../../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp\
../../../../../modules/juce_core/threads/juce_ReadWriteLock.h\
../../../../../modules/juce_core/threads/juce_ScopedLock.h\
../../../../../modules/juce_core/threads/juce_ScopedReadLock.h\
../../../../../modules/juce_core/threads/juce_ScopedWriteLock.h\
../../../../../modules/juce_core/threads/juce_SpinLock.h\
../../../../../modules/juce_core/threads/juce_Thread.cpp\
../../../../../modules/juce_core/threads/juce_Thread.h\
../../../../../modules/juce_core/threads/juce_ThreadLocalValue.h\
../../../../../modules/juce_core/threads/juce_ThreadPool.cpp\
../../../../../modules/juce_core/threads/juce_ThreadPool.h\
../../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp\
../../../../../modules/juce_core/threads/juce_TimeSliceThread.h\
../../../../../modules/juce_core/threads/juce_WaitableEvent.h\
../../../../../modules/juce_core/time/juce_PerformanceCounter.cpp\
../../../../../modules/juce_core/time/juce_PerformanceCounter.h\
../../../../../modules/juce_core/time/juce_RelativeTime.cpp\
../../../../../modules/juce_core/time/juce_RelativeTime.h\
../../../../../modules/juce_core/time/juce_Time.cpp\
../../../../../modules/juce_core/time/juce_Time.h\
../../../../../modules/juce_core/files/juce_DirectoryIterator.cpp\
../../../../../modules/juce_core/files/juce_DirectoryIterator.h\
../../../../../modules/juce_core/files/juce_File.cpp\
../../../../../modules/juce_core/files/juce_File.h\
../../../../../modules/juce_core/files/juce_FileFilter.cpp\
../../../../../modules/juce_core/files/juce_FileFilter.h\
../../../../../modules/juce_core/files/juce_FileInputStream.cpp\
../../../../../modules/juce_core/files/juce_FileInputStream.h\
../../../../../modules/juce_core/files/juce_FileOutputStream.cpp\
../../../../../modules/juce_core/files/juce_FileOutputStream.h\
../../../../../modules/juce_core/files/juce_FileSearchPath.cpp\
../../../../../modules/juce_core/files/juce_FileSearchPath.h\
../../../../../modules/juce_core/files/juce_MemoryMappedFile.h\
../../../../../modules/juce_core/files/juce_TemporaryFile.cpp\
../../../../../modules/juce_core/files/juce_TemporaryFile.h\
../../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp\
../../../../../modules/juce_core/files/juce_WildcardFileFilter.h\
../../../../../modules/juce_core/network/juce_IPAddress.cpp\
../../../../../modules/juce_core/network/juce_IPAddress.h\
../../../../../modules/juce_core/network/juce_MACAddress.cpp\
../../../../../modules/juce_core/network/juce_MACAddress.h\
../../../../../modules/juce_core/network/juce_NamedPipe.cpp\
../../../../../modules/juce_core/network/juce_NamedPipe.h\
../../../../../modules/juce_core/network/juce_Socket.cpp\
../../../../../modules/juce_core/network/juce_Socket.h\
../../../../../modules/juce_core/network/juce_URL.cpp\
../../../../../modules/juce_core/network/juce_URL.h\
../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp\
../../../../../modules/juce_core/streams/juce_BufferedInputStream.h\
../../../../../modules/juce_core/streams/juce_FileInputSource.cpp\
../../../../../modules/juce_core/streams/juce_FileInputSource.h\
../../../../../modules/juce_core/streams/juce_InputSource.h\
../../../../../modules/juce_core/streams/juce_InputStream.cpp\
../../../../../modules/juce_core/streams/juce_InputStream.h\
../../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp\
../../../../../modules/juce_core/streams/juce_MemoryInputStream.h\
../../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp\
../../../../../modules/juce_core/streams/juce_MemoryOutputStream.h\
../../../../../modules/juce_core/streams/juce_OutputStream.cpp\
../../../../../modules/juce_core/streams/juce_OutputStream.h\
../../../../../modules/juce_core/streams/juce_SubregionStream.cpp\
../../../../../modules/juce_core/streams/juce_SubregionStream.h\
../../../../../modules/juce_core/logging/juce_FileLogger.cpp\
../../../../../modules/juce_core/logging/juce_FileLogger.h\
../../../../../modules/juce_core/logging/juce_Logger.cpp\
../../../../../modules/juce_core/logging/juce_Logger.h\
../../../../../modules/juce_core/system/juce_CompilerSupport.h\
../../../../../modules/juce_core/system/juce_PlatformDefs.h\
../../../../../modules/juce_core/system/juce_StandardHeader.h\
../../../../../modules/juce_core/system/juce_SystemStats.cpp\
../../../../../modules/juce_core/system/juce_SystemStats.h\
../../../../../modules/juce_core/system/juce_TargetPlatform.h\
../../../../../modules/juce_core/xml/juce_XmlDocument.cpp\
../../../../../modules/juce_core/xml/juce_XmlDocument.h\
../../../../../modules/juce_core/xml/juce_XmlElement.cpp\
../../../../../modules/juce_core/xml/juce_XmlElement.h\
../../../../../modules/juce_core/javascript/juce_Javascript.cpp\
../../../../../modules/juce_core/javascript/juce_Javascript.h\
../../../../../modules/juce_core/javascript/juce_JSON.cpp\
../../../../../modules/juce_core/javascript/juce_JSON.h\
../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp\
../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h\
../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp\
../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h\
../../../../../modules/juce_core/zip/juce_ZipFile.cpp\
../../../../../modules/juce_core/zip/juce_ZipFile.h\
../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp\
../../../../../modules/juce_core/unit_tests/juce_UnitTest.h\
../../../../../modules/juce_core/misc/juce_Result.cpp\
../../../../../modules/juce_core/misc/juce_Result.h\
../../../../../modules/juce_core/misc/juce_Uuid.cpp\
../../../../../modules/juce_core/misc/juce_Uuid.h\
../../../../../modules/juce_core/misc/juce_WindowsRegistry.h\
../../../../../modules/juce_core/native/juce_android_Files.cpp\
../../../../../modules/juce_core/native/juce_android_JNIHelpers.h\
../../../../../modules/juce_core/native/juce_android_Misc.cpp\
../../../../../modules/juce_core/native/juce_android_Network.cpp\
../../../../../modules/juce_core/native/juce_android_SystemStats.cpp\
../../../../../modules/juce_core/native/juce_android_Threads.cpp\
../../../../../modules/juce_core/native/juce_BasicNativeHeaders.h\
../../../../../modules/juce_core/native/juce_curl_Network.cpp\
../../../../../modules/juce_core/native/juce_linux_CommonFile.cpp\
../../../../../modules/juce_core/native/juce_linux_Files.cpp\
../../../../../modules/juce_core/native/juce_linux_Network.cpp\
../../../../../modules/juce_core/native/juce_linux_SystemStats.cpp\
../../../../../modules/juce_core/native/juce_linux_Threads.cpp\
../../../../../modules/juce_core/native/juce_mac_Files.mm\
../../../../../modules/juce_core/native/juce_mac_Network.mm\
../../../../../modules/juce_core/native/juce_mac_Strings.mm\
../../../../../modules/juce_core/native/juce_mac_SystemStats.mm\
../../../../../modules/juce_core/native/juce_mac_Threads.mm\
../../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h\
../../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp\
../../../../../modules/juce_core/native/juce_posix_SharedCode.h\
../../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h\
../../../../../modules/juce_core/native/juce_win32_Files.cpp\
../../../../../modules/juce_core/native/juce_win32_Network.cpp\
../../../../../modules/juce_core/native/juce_win32_Registry.cpp\
../../../../../modules/juce_core/native/juce_win32_SystemStats.cpp\
../../../../../modules/juce_core/native/juce_win32_Threads.cpp\
../../../../../modules/juce_core/juce_module_info\
../../../../../modules/juce_core/juce_core.h\
../../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp\
../../../../../modules/juce_cryptography/encryption/juce_BlowFish.h\
../../../../../modules/juce_cryptography/encryption/juce_Primes.cpp\
../../../../../modules/juce_cryptography/encryption/juce_Primes.h\
../../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp\
../../../../../modules/juce_cryptography/encryption/juce_RSAKey.h\
../../../../../modules/juce_cryptography/hashing/juce_MD5.cpp\
../../../../../modules/juce_cryptography/hashing/juce_MD5.h\
../../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp\
../../../../../modules/juce_cryptography/hashing/juce_SHA256.h\
../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.cpp\
../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h\
../../../../../modules/juce_cryptography/juce_module_info\
../../../../../modules/juce_cryptography/juce_cryptography.h\
../../../../../modules/juce_data_structures/values/juce_Value.cpp\
../../../../../modules/juce_data_structures/values/juce_Value.h\
../../../../../modules/juce_data_structures/values/juce_ValueTree.cpp\
../../../../../modules/juce_data_structures/values/juce_ValueTree.h\
../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp\
../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h\
../../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h\
../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp\
../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h\
../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp\
../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h\
../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp\
../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h\
../../../../../modules/juce_data_structures/juce_module_info\
../../../../../modules/juce_data_structures/juce_data_structures.h\
../../../../../modules/juce_events/messages/juce_ApplicationBase.cpp\
../../../../../modules/juce_events/messages/juce_ApplicationBase.h\
../../../../../modules/juce_events/messages/juce_CallbackMessage.h\
../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp\
../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h\
../../../../../modules/juce_events/messages/juce_Initialisation.h\
../../../../../modules/juce_events/messages/juce_Message.h\
../../../../../modules/juce_events/messages/juce_MessageListener.cpp\
../../../../../modules/juce_events/messages/juce_MessageListener.h\
../../../../../modules/juce_events/messages/juce_MessageManager.cpp\
../../../../../modules/juce_events/messages/juce_MessageManager.h\
../../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h\
../../../../../modules/juce_events/messages/juce_NotificationType.h\
../../../../../modules/juce_events/timers/juce_MultiTimer.cpp\
../../../../../modules/juce_events/timers/juce_MultiTimer.h\
../../../../../modules/juce_events/timers/juce_Timer.cpp\
../../../../../modules/juce_events/timers/juce_Timer.h\
../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp\
../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h\
../../../../../modules/juce_events/broadcasters/juce_ActionListener.h\
../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp\
../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h\
../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp\
../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h\
../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h\
../../../../../modules/juce_events/broadcasters/juce_ListenerList.h\
../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp\
../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h\
../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp\
../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h\
../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp\
../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h\
../../../../../modules/juce_events/native/juce_android_Messaging.cpp\
../../../../../modules/juce_events/native/juce_ios_MessageManager.mm\
../../../../../modules/juce_events/native/juce_linux_Messaging.cpp\
../../../../../modules/juce_events/native/juce_mac_MessageManager.mm\
../../../../../modules/juce_events/native/juce_osx_MessageQueue.h\
../../../../../modules/juce_events/native/juce_ScopedXLock.h\
../../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h\
../../../../../modules/juce_events/native/juce_win32_Messaging.cpp\
../../../../../modules/juce_events/juce_module_info\
../../../../../modules/juce_events/juce_events.h\
../../../../../modules/juce_graphics/colour/juce_Colour.cpp\
../../../../../modules/juce_graphics/colour/juce_Colour.h\
../../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp\
../../../../../modules/juce_graphics/colour/juce_ColourGradient.h\
../../../../../modules/juce_graphics/colour/juce_Colours.cpp\
../../../../../modules/juce_graphics/colour/juce_Colours.h\
../../../../../modules/juce_graphics/colour/juce_FillType.cpp\
../../../../../modules/juce_graphics/colour/juce_FillType.h\
../../../../../modules/juce_graphics/colour/juce_PixelFormats.h\
../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp\
../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h\
../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h\
../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp\
../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h\
../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp\
../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h\
../../../../../modules/juce_graphics/images/juce_Image.cpp\
../../../../../modules/juce_graphics/images/juce_Image.h\
../../../../../modules/juce_graphics/images/juce_ImageCache.cpp\
../../../../../modules/juce_graphics/images/juce_ImageCache.h\
../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp\
../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h\
../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp\
../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h\
../../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp\
../../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp\
../../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp\
../../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp\
../../../../../modules/juce_graphics/geometry/juce_AffineTransform.h\
../../../../../modules/juce_graphics/geometry/juce_BorderSize.h\
../../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp\
../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h\
../../../../../modules/juce_graphics/geometry/juce_Line.h\
../../../../../modules/juce_graphics/geometry/juce_Path.cpp\
../../../../../modules/juce_graphics/geometry/juce_Path.h\
../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp\
../../../../../modules/juce_graphics/geometry/juce_PathIterator.h\
../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp\
../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h\
../../../../../modules/juce_graphics/geometry/juce_Point.h\
../../../../../modules/juce_graphics/geometry/juce_Rectangle.h\
../../../../../modules/juce_graphics/geometry/juce_RectangleList.h\
../../../../../modules/juce_graphics/placement/juce_Justification.h\
../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp\
../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h\
../../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp\
../../../../../modules/juce_graphics/fonts/juce_AttributedString.h\
../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp\
../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h\
../../../../../modules/juce_graphics/fonts/juce_Font.cpp\
../../../../../modules/juce_graphics/fonts/juce_Font.h\
../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp\
../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h\
../../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp\
../../../../../modules/juce_graphics/fonts/juce_TextLayout.h\
../../../../../modules/juce_graphics/fonts/juce_Typeface.cpp\
../../../../../modules/juce_graphics/fonts/juce_Typeface.h\
../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp\
../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h\
../../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp\
../../../../../modules/juce_graphics/effects/juce_GlowEffect.h\
../../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h\
../../../../../modules/juce_graphics/native/juce_android_Fonts.cpp\
../../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp\
../../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp\
../../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp\
../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h\
../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm\
../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h\
../../../../../modules/juce_graphics/native/juce_mac_Fonts.mm\
../../../../../modules/juce_graphics/native/juce_RenderingHelpers.h\
../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp\
../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp\
../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp\
../../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp\
../../../../../modules/juce_graphics/juce_module_info\
../../../../../modules/juce_graphics/juce_graphics.h\
../../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h\
../../../../../modules/juce_gui_basics/components/juce_Component.cpp\
../../../../../modules/juce_gui_basics/components/juce_Component.h\
../../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp\
../../../../../modules/juce_gui_basics/components/juce_ComponentListener.h\
../../../../../modules/juce_gui_basics/components/juce_Desktop.cpp\
../../../../../modules/juce_gui_basics/components/juce_Desktop.h\
../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp\
../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h\
../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp\
../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h\
../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp\
../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h\
../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h\
../../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h\
../../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h\
../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp\
../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h\
../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp\
../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h\
../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp\
../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h\
../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp\
../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h\
../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp\
../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h\
../../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h\
../../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h\
../../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h\
../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp\
../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h\
../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp\
../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h\
../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp\
../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h\
../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp\
../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h\
../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp\
../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h\
../../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h\
../../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h\
../../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h\
../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h\
../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h\
../../../../../modules/juce_gui_basics/widgets/juce_Label.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_Label.h\
../../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_ListBox.h\
../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h\
../../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_Slider.h\
../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h\
../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h\
../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h\
../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h\
../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h\
../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h\
../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h\
../../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp\
../../../../../modules/juce_gui_basics/widgets/juce_TreeView.h\
../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp\
../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h\
../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp\
../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h\
../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp\
../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h\
../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp\
../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h\
../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp\
../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h\
../../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h\
../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp\
../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h\
../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp\
../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h\
../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp\
../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h\
../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp\
../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h\
../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp\
../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h\
../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp\
../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h\
../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp\
../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h\
../../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h\
../../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h\
../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h\
../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h\
../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h\
../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h\
../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h\
../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp\
../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h\
../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp\
../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h\
../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h\
../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h\
../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h\
../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp\
../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h\
../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp\
../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h\
../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp\
../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h\
../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp\
../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h\
../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp\
../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h\
../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp\
../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h\
../../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp\
../../../../../modules/juce_gui_basics/layout/juce_Viewport.h\
../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h\
../../../../../modules/juce_gui_basics/buttons/juce_Button.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_Button.h\
../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h\
../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h\
../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h\
../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h\
../../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_TextButton.h\
../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h\
../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp\
../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h\
../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp\
../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h\
../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp\
../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h\
../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp\
../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h\
../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp\
../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h\
../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp\
../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h\
../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp\
../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h\
../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp\
../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h\
../../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp\
../../../../../modules/juce_gui_basics/drawables/juce_Drawable.h\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h\
../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp\
../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp\
../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h\
../../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp\
../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp\
../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h\
../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp\
../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h\
../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp\
../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h\
../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp\
../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h\
../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp\
../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h\
../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp\
../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h\
../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp\
../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h\
../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp\
../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h\
../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp\
../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h\
../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp\
../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h\
../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp\
../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h\
../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp\
../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h\
../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h\
../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp\
../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h\
../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp\
../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h\
../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp\
../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h\
../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp\
../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h\
../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp\
../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h\
../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp\
../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h\
../../../../../modules/juce_gui_basics/application/juce_Application.cpp\
../../../../../modules/juce_gui_basics/application/juce_Application.h\
../../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp\
../../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp\
../../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm\
../../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm\
../../../../../modules/juce_gui_basics/native/juce_linux_Clipboard.cpp\
../../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp\
../../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp\
../../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm\
../../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm\
../../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm\
../../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm\
../../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm\
../../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h\
../../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp\
../../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp\
../../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp\
../../../../../modules/juce_gui_basics/juce_module_info\
../../../../../modules/juce_gui_basics/juce_gui_basics.h\
../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp\
../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h\
../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp\
../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h\
../../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h\
../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp\
../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h\
../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h\
../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp\
../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h\
../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp\
../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h\
../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp\
../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h\
../../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h\
../../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h\
../../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h\
../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp\
../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h\
../../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h\
../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp\
../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h\
../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp\
../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h\
../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp\
../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h\
../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp\
../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h\
../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp\
../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h\
../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp\
../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h\
../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp\
../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h\
../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp\
../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h\
../../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h\
../../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp\
../../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm\
../../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp\
../../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp\
../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm\
../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h\
../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm\
../../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp\
../../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm\
../../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp\
../../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp\
../../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp\
../../../../../modules/juce_gui_extra/juce_module_info\
../../../../../modules/juce_gui_extra/juce_gui_extra.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp\
../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp\
../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp\
../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp\
../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.cpp\
../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp\
../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp\
../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h\
../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.cpp\
../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.h\
../../../../../modules/juce_opengl/geometry/juce_Draggable3DOrientation.h\
../../../../../modules/juce_opengl/geometry/juce_Matrix3D.h\
../../../../../modules/juce_opengl/geometry/juce_Quaternion.h\
../../../../../modules/juce_opengl/geometry/juce_Vector3D.h\
../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp\
../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h\
../../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h\
../../../../../modules/juce_opengl/native/juce_OpenGL_android.h\
../../../../../modules/juce_opengl/native/juce_OpenGL_ios.h\
../../../../../modules/juce_opengl/native/juce_OpenGL_linux.h\
../../../../../modules/juce_opengl/native/juce_OpenGL_osx.h\
../../../../../modules/juce_opengl/native/juce_OpenGL_win32.h\
../../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h\
../../../../../modules/juce_opengl/juce_module_info\
../../../../../modules/juce_opengl/juce_opengl.h\
../../../../../modules/juce_video/playback/juce_DirectShowComponent.h\
../../../../../modules/juce_video/playback/juce_QuickTimeMovieComponent.h\
../../../../../modules/juce_video/capture/juce_CameraDevice.cpp\
../../../../../modules/juce_video/capture/juce_CameraDevice.h\
../../../../../modules/juce_video/native/juce_android_CameraDevice.cpp\
../../../../../modules/juce_video/native/juce_mac_CameraDevice.mm\
../../../../../modules/juce_video/native/juce_mac_QuickTimeMovieComponent.mm\
../../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp\
../../../../../modules/juce_video/native/juce_win32_DirectShowComponent.cpp\
../../../../../modules/juce_video/native/juce_win32_QuickTimeMovieComponent.cpp\
../../../../../modules/juce_video/juce_module_info\
../../../../../modules/juce_video/juce_video.h\
../../../JuceLibraryCode/AppConfig.h\
../../../JuceLibraryCode/BinaryData.cpp\ ../../../JuceLibraryCode/BinaryData.cpp\
../../../JuceLibraryCode/BinaryData.h\
../../../../../modules/juce_audio_basics/juce_audio_basics.cpp\ ../../../../../modules/juce_audio_basics/juce_audio_basics.cpp\
../../../../../modules/juce_audio_devices/juce_audio_devices.cpp\ ../../../../../modules/juce_audio_devices/juce_audio_devices.cpp\
../../../../../modules/juce_audio_formats/juce_audio_formats.cpp\ ../../../../../modules/juce_audio_formats/juce_audio_formats.cpp\
@@ -67,6 +965,7 @@ LOCAL_SRC_FILES := \
../../../../../modules/juce_gui_extra/juce_gui_extra.cpp\ ../../../../../modules/juce_gui_extra/juce_gui_extra.cpp\
../../../../../modules/juce_opengl/juce_opengl.cpp\ ../../../../../modules/juce_opengl/juce_opengl.cpp\
../../../../../modules/juce_video/juce_video.cpp\ ../../../../../modules/juce_video/juce_video.cpp\
../../../JuceLibraryCode/JuceHeader.h\
ifeq ($(NDK_DEBUG),1) ifeq ($(NDK_DEBUG),1)
LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=c++11 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=c++11 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000"


+ 16
- 2
examples/Demo/Builds/Android/src/com/juce/jucedemo/JuceDemo.java View File

@@ -43,6 +43,13 @@ import android.text.ClipboardManager;
import android.text.InputType; import android.text.InputType;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import java.lang.Runnable;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.TimerTask;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
@@ -234,7 +241,7 @@ public class JuceDemo extends Activity
if (keepAliveTimer != null) if (keepAliveTimer != null)
{ {
keepAliveTimer->cancel();
keepAliveTimer.cancel();
keepAliveTimer = null; keepAliveTimer = null;
} }
@@ -256,7 +263,14 @@ public class JuceDemo extends Activity
public void run() public void run()
{ {
android.app.Instrumentation instrumentation = new android.app.Instrumentation(); android.app.Instrumentation instrumentation = new android.app.Instrumentation();
instrumentation.sendKeyDownUpSync (KeyEvent.KEYCODE_BREAK);
try
{
instrumentation.sendKeyDownUpSync (KeyEvent.KEYCODE_BREAK);
}
catch (Exception e)
{
}
} }
}, 2000, 2000); }, 2000, 2000);
} }


+ 8
- 0
extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp View File

@@ -433,6 +433,10 @@
<Option compile="0"/> <Option compile="0"/>
<Option link="0"/> <Option link="0"/>
</Unit> </Unit>
<Unit filename="../../Source/Project Saving/jucer_ProjectExport_AndroidStudio.h">
<Option compile="0"/>
<Option link="0"/>
</Unit>
<Unit filename="../../Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"> <Unit filename="../../Source/Project Saving/jucer_ProjectExport_CodeBlocks.h">
<Option compile="0"/> <Option compile="0"/>
<Option link="0"/> <Option link="0"/>
@@ -733,6 +737,10 @@
<Option compile="0"/> <Option compile="0"/>
<Option link="0"/> <Option link="0"/>
</Unit> </Unit>
<Unit filename="../../Source/BinaryData/background_logo.svg">
<Option compile="0"/>
<Option link="0"/>
</Unit>
<Unit filename="../../Source/BinaryData/background_tile.png"> <Unit filename="../../Source/BinaryData/background_tile.png">
<Option compile="0"/> <Option compile="0"/>
<Option link="0"/> <Option link="0"/>


+ 26
- 22
extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj View File

@@ -147,6 +147,7 @@
16017456A45F74C692A3AE45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; }; 16017456A45F74C692A3AE45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; };
1614411A8699B82D1F7B0346 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 1614411A8699B82D1F7B0346 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
16203C6791259C9718A04C3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintRoutinePanel.cpp"; path = "../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 16203C6791259C9718A04C3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintRoutinePanel.cpp"; path = "../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.cpp"; sourceTree = "SOURCE_ROOT"; };
16385D79A30C6E06EFB46B79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_AndroidStudio.h"; path = "../../Source/Project Saving/jucer_ProjectExport_AndroidStudio.h"; sourceTree = "SOURCE_ROOT"; };
168F5F32F673036DDAEF1D8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; }; 168F5F32F673036DDAEF1D8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; };
1729AEDC34001C31B8CC357C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_FileHelpers.cpp"; path = "../../Source/Utility/jucer_FileHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; 1729AEDC34001C31B8CC357C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_FileHelpers.cpp"; path = "../../Source/Utility/jucer_FileHelpers.cpp"; sourceTree = "SOURCE_ROOT"; };
1772B02BAF54F29AD99DF42E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; 1772B02BAF54F29AD99DF42E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; };
@@ -723,6 +724,7 @@
BA5C7DE347A73A87F687703C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; BA5C7DE347A73A87F687703C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; };
BA95268EEE80F9509EC1F76F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; BA95268EEE80F9509EC1F76F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; };
BAC43B20E14A340CCF14119C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Project.cpp"; path = "../../Source/Project/jucer_Project.cpp"; sourceTree = "SOURCE_ROOT"; }; BAC43B20E14A340CCF14119C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Project.cpp"; path = "../../Source/Project/jucer_Project.cpp"; sourceTree = "SOURCE_ROOT"; };
BB9C1E6E54A16F795908C469 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = "background_logo.svg"; path = "../../Source/BinaryData/background_logo.svg"; sourceTree = "SOURCE_ROOT"; };
BC17B02633EF1E31024051C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; BC17B02633EF1E31024051C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
BCAD13352CE76BA81629A6E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; BCAD13352CE76BA81629A6E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; };
BCCFDFB2C02C4AA436C0ECF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_SliderHandler.h"; path = "../../Source/ComponentEditor/components/jucer_SliderHandler.h"; sourceTree = "SOURCE_ROOT"; }; BCCFDFB2C02C4AA436C0ECF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_SliderHandler.h"; path = "../../Source/ComponentEditor/components/jucer_SliderHandler.h"; sourceTree = "SOURCE_ROOT"; };
@@ -756,7 +758,6 @@
C5D5D2FFB030BD43160167EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; C5D5D2FFB030BD43160167EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; };
C5FCECA838D4D12D03929139 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C5FCECA838D4D12D03929139 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
C61E82D93918A611FAFD9E9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; C61E82D93918A611FAFD9E9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; };
C68355AA4D62939EECAD469E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; };
C6861DB44A31CE7A3DEFA083 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; }; C6861DB44A31CE7A3DEFA083 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; };
C6E46DBD249D9426C95E2235 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; C6E46DBD249D9426C95E2235 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; };
C717D2384896547D1CD993F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; }; C717D2384896547D1CD993F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; };
@@ -765,7 +766,6 @@
C7B47372A9D5970E3D9A5400 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GroupInformationComponent.h"; path = "../../Source/Project/jucer_GroupInformationComponent.h"; sourceTree = "SOURCE_ROOT"; }; C7B47372A9D5970E3D9A5400 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GroupInformationComponent.h"; path = "../../Source/Project/jucer_GroupInformationComponent.h"; sourceTree = "SOURCE_ROOT"; };
C7E19F79947BEFC7DB7A9CE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; C7E19F79947BEFC7DB7A9CE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; };
C83992DA0BE30EA3CD06EA98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; C83992DA0BE30EA3CD06EA98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; };
C85B4D62B96F4A44890F20E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; };
C8A229ACD244F402C57286CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_MSVC.h"; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = "SOURCE_ROOT"; }; C8A229ACD244F402C57286CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_MSVC.h"; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = "SOURCE_ROOT"; };
C90C66C5727759D5CBD5FB07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; C90C66C5727759D5CBD5FB07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; };
C9616830BB2474066AC8C910 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; }; C9616830BB2474066AC8C910 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; };
@@ -780,14 +780,13 @@
CD140A1C0161176682F6CA29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; CD140A1C0161176682F6CA29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
CD3216F23C7B273B010A8D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; }; CD3216F23C7B273B010A8D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; };
CDCAF0EC777DA2884AEB2B59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; CDCAF0EC777DA2884AEB2B59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; };
CDDF5BDC75277F7B83A38885 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; };
CDF8F65F9079B2C14A740F0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; }; CDF8F65F9079B2C14A740F0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; };
CE1DFE4E3908943656E180AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; CE1DFE4E3908943656E180AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; };
CF0615A1AF1A514A60322B50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
CF21D9DB3AEC0A4DCAB36A99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Icons.cpp"; path = "../../Source/Utility/jucer_Icons.cpp"; sourceTree = "SOURCE_ROOT"; }; CF21D9DB3AEC0A4DCAB36A99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Icons.cpp"; path = "../../Source/Utility/jucer_Icons.cpp"; sourceTree = "SOURCE_ROOT"; };
CF6C8BD0DA3D8CD4E99EBADA = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; CF6C8BD0DA3D8CD4E99EBADA = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
CF8011B3C67B609032974DA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; CF8011B3C67B609032974DA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; };
D00F311BFC3C2625C457CB9B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; D00F311BFC3C2625C457CB9B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
D041043D3B554B88F855C174 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; };
D0D8B580D0689FFF4B9B823B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StrokeType.h"; path = "../../Source/ComponentEditor/paintelements/jucer_StrokeType.h"; sourceTree = "SOURCE_ROOT"; }; D0D8B580D0689FFF4B9B823B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StrokeType.h"; path = "../../Source/ComponentEditor/paintelements/jucer_StrokeType.h"; sourceTree = "SOURCE_ROOT"; };
D0F1614CC861E8E0B59B7A06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; D0F1614CC861E8E0B59B7A06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; };
D10D51A0A2D63F38B4D86A60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceFile.cpp"; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = "SOURCE_ROOT"; }; D10D51A0A2D63F38B4D86A60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceFile.cpp"; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -806,62 +805,61 @@
D5057D7B18ABD5E810A6F830 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; D5057D7B18ABD5E810A6F830 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
D526C38D581425949BA0E4AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; D526C38D581425949BA0E4AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; };
D53B54D1786A1FFC024BF064 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; D53B54D1786A1FFC024BF064 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; };
D678882D133090214AF681BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; };
D6C91E2BF537F75A80F5C1DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; };
D75EAC16FAECCC51E3669193 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; D75EAC16FAECCC51E3669193 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; };
D780ED33573AED5AD383A036 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; };
D782DA091AD3ECE158FC6A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
D800DE818BEDBF4579D15B1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; };
D87FC8F6834E9DC9C8E88B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JustificationProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_JustificationProperty.h"; sourceTree = "SOURCE_ROOT"; }; D87FC8F6834E9DC9C8E88B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JustificationProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_JustificationProperty.h"; sourceTree = "SOURCE_ROOT"; };
D926E13AB5AD647A7A00F486 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; D926E13AB5AD647A7A00F486 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
D92A6E9404A30EED32DCE4ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_RelativePositionedRectangle.h"; path = "../../Source/ComponentEditor/ui/jucer_RelativePositionedRectangle.h"; sourceTree = "SOURCE_ROOT"; }; D92A6E9404A30EED32DCE4ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_RelativePositionedRectangle.h"; path = "../../Source/ComponentEditor/ui/jucer_RelativePositionedRectangle.h"; sourceTree = "SOURCE_ROOT"; };
D9342535EA61901A1AD816C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
DA345D5B9DABD049F90DC96F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GeneratedCode.h"; path = "../../Source/ComponentEditor/jucer_GeneratedCode.h"; sourceTree = "SOURCE_ROOT"; }; DA345D5B9DABD049F90DC96F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GeneratedCode.h"; path = "../../Source/ComponentEditor/jucer_GeneratedCode.h"; sourceTree = "SOURCE_ROOT"; };
DC5E7FF30B01118F6DAEC38F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; };
DB876F7873F42DC685A58CA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; };
DC922C6A65D260C18E888E49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_ComponentTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; DC922C6A65D260C18E888E49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_ComponentTemplate.cpp"; sourceTree = "SOURCE_ROOT"; };
DD00494140C86144306A9356 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; DD00494140C86144306A9356 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; };
DE8DF5D263F40F65581CFDE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
DFC6364D81D9C60BD4CA9D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
E0F9CA57E44F7F7E7E217E47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentUndoableAction.h"; path = "../../Source/ComponentEditor/components/jucer_ComponentUndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; E0F9CA57E44F7F7E7E217E47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentUndoableAction.h"; path = "../../Source/ComponentEditor/components/jucer_ComponentUndoableAction.h"; sourceTree = "SOURCE_ROOT"; };
E19160CF7208320D128786CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; };
E1D8CCD9F4ACBE1EC1D5BEA0 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = "wizard_AudioApp.svg"; path = "../../Source/BinaryData/wizard_AudioApp.svg"; sourceTree = "SOURCE_ROOT"; }; E1D8CCD9F4ACBE1EC1D5BEA0 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = "wizard_AudioApp.svg"; path = "../../Source/BinaryData/wizard_AudioApp.svg"; sourceTree = "SOURCE_ROOT"; };
E2374E15D65425C4101237E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewComponentTemplate.h"; path = "../../Source/BinaryData/jucer_NewComponentTemplate.h"; sourceTree = "SOURCE_ROOT"; }; E2374E15D65425C4101237E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewComponentTemplate.h"; path = "../../Source/BinaryData/jucer_NewComponentTemplate.h"; sourceTree = "SOURCE_ROOT"; };
E2C1C995D554A3F0A363CE58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; };
E2DBA3307837B64AFCCD8F8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; };
E3B56C5718D87CA0EFCB2662 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AudioComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_AudioComponentTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; E3B56C5718D87CA0EFCB2662 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AudioComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_AudioComponentTemplate.cpp"; sourceTree = "SOURCE_ROOT"; };
E4BB22E27C5AA4B666F265BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TextButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TextButtonHandler.h"; sourceTree = "SOURCE_ROOT"; }; E4BB22E27C5AA4B666F265BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TextButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TextButtonHandler.h"; sourceTree = "SOURCE_ROOT"; };
E4BD4C43370651B49F75855B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainTemplate_SimpleWindow.cpp"; path = "../../Source/BinaryData/jucer_MainTemplate_SimpleWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; E4BD4C43370651B49F75855B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainTemplate_SimpleWindow.cpp"; path = "../../Source/BinaryData/jucer_MainTemplate_SimpleWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
E570E57CC1FCEF78B54A7084 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
E5D6C36496F5BC84D7213BE8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; E5D6C36496F5BC84D7213BE8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
E62D9BA6E92FE7BB6EF65699 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; };
E65A820D34BF39478B7C5925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; E65A820D34BF39478B7C5925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; sourceTree = "SOURCE_ROOT"; };
E6F5CEC32EDC917B054467EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
E720FBCD836FF3AA466C31B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
E96597BBC6A98255B51B94DC = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; E96597BBC6A98255B51B94DC = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
25F52316D256B4534BED16D1 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; 25F52316D256B4534BED16D1 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
CF0615A1AF1A514A60322B50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
C68355AA4D62939EECAD469E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; };
C85B4D62B96F4A44890F20E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; };
CDDF5BDC75277F7B83A38885 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; };
D041043D3B554B88F855C174 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; };
D3E139185095C486DD3D61F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TranslationTool.h"; path = "../../Source/Utility/jucer_TranslationTool.h"; sourceTree = "SOURCE_ROOT"; }; D3E139185095C486DD3D61F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TranslationTool.h"; path = "../../Source/Utility/jucer_TranslationTool.h"; sourceTree = "SOURCE_ROOT"; };
D6C91E2BF537F75A80F5C1DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; };
D780ED33573AED5AD383A036 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; };
D782DA091AD3ECE158FC6A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
D678882D133090214AF681BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; };
D7A7F1AA9F313B0CCAAA73A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; D7A7F1AA9F313B0CCAAA73A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; };
D800DE818BEDBF4579D15B1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; };
D9342535EA61901A1AD816C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D95D7B49EC6C6BDCB5A1B988 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; D95D7B49EC6C6BDCB5A1B988 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; };
D9B077E2ECDDA94961E134D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; D9B077E2ECDDA94961E134D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; };
D9E59DE07A815AB303A297D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; D9E59DE07A815AB303A297D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; };
DAF84A553D264705FA6EB6FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TreeViewHandler.h"; sourceTree = "SOURCE_ROOT"; }; DAF84A553D264705FA6EB6FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TreeViewHandler.h"; sourceTree = "SOURCE_ROOT"; };
DB20268A566DABEAE3F2CBEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; DB20268A566DABEAE3F2CBEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; };
DB876F7873F42DC685A58CA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; };
DBE0CDE1B017190ABBFF557C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_CodeBlocks.h"; path = "../../Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"; sourceTree = "SOURCE_ROOT"; }; DBE0CDE1B017190ABBFF557C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_CodeBlocks.h"; path = "../../Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"; sourceTree = "SOURCE_ROOT"; };
DC5E7FF30B01118F6DAEC38F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; };
DCBB17488227A2CA7D3D3947 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_DependencyPathPropertyComponent.cpp"; path = "../../Source/Project/jucer_DependencyPathPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; DCBB17488227A2CA7D3D3947 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_DependencyPathPropertyComponent.cpp"; path = "../../Source/Project/jucer_DependencyPathPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
DCCB75165B7C73A589498E87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; DCCB75165B7C73A589498E87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
DD2494D5F1C081898D616AF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; DD2494D5F1C081898D616AF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; };
DD985A60FB76E976AF91852D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; DD985A60FB76E976AF91852D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; };
DE40B42B57F29C650CB7F2AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; DE40B42B57F29C650CB7F2AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; };
DE5F3C9EF6BFFDE73AF9E7FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; DE5F3C9EF6BFFDE73AF9E7FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
DE8DF5D263F40F65581CFDE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
DEF579B1433EB8DEE7AB50F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; }; DEF579B1433EB8DEE7AB50F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; };
DF725A596B7BCD7520CC0A9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceEditorPanel.cpp"; path = "../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; DF725A596B7BCD7520CC0A9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceEditorPanel.cpp"; path = "../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp"; sourceTree = "SOURCE_ROOT"; };
DF7BB5B6B394EDEEF5F5B4B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; DF7BB5B6B394EDEEF5F5B4B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; };
DFC6364D81D9C60BD4CA9D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
E07C56267CBB46FC44EF2026 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; }; E07C56267CBB46FC44EF2026 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; };
E19160CF7208320D128786CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; };
E1C16C872E34BCB144B469F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; E1C16C872E34BCB144B469F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; };
E27F0860F27023BAA9798B46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; }; E27F0860F27023BAA9798B46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; };
E284B565DBD647DC0830D23B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E284B565DBD647DC0830D23B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
E2C1C995D554A3F0A363CE58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; };
E2DBA3307837B64AFCCD8F8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; };
E3869AC657E984565F1718AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; E3869AC657E984565F1718AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
E3FF16862AA1B2F943DC616C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; }; E3FF16862AA1B2F943DC616C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; };
E446FFE889CD490FDE3F0F2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; E446FFE889CD490FDE3F0F2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -869,11 +867,15 @@
E4F9D1E097CC2C1D1291823C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; }; E4F9D1E097CC2C1D1291823C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; };
E530742870F07704E9616358 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; E530742870F07704E9616358 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; };
E54D0994D31E20A0A05EBA2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; E54D0994D31E20A0A05EBA2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; };
E570E57CC1FCEF78B54A7084 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
E60E28D1B7491047DEA236AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; }; E60E28D1B7491047DEA236AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; };
E62D9BA6E92FE7BB6EF65699 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; };
E63F54CF8D5D922A319C6962 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconXcodeIOS.png; path = ../../Source/BinaryData/projectIconXcodeIOS.png; sourceTree = "SOURCE_ROOT"; }; E63F54CF8D5D922A319C6962 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconXcodeIOS.png; path = ../../Source/BinaryData/projectIconXcodeIOS.png; sourceTree = "SOURCE_ROOT"; };
E642193A9990C48CFB6479A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; E642193A9990C48CFB6479A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; };
E654E3A3CD45A888C5F773DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; E654E3A3CD45A888C5F773DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; };
E6F5CEC32EDC917B054467EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
E70CA21960A64CCB835725FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; }; E70CA21960A64CCB835725FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; };
E720FBCD836FF3AA466C31B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
E73C7E17116F6085765622E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; E73C7E17116F6085765622E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; };
E7A4604F766ABC8BE26C94A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; E7A4604F766ABC8BE26C94A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; };
E7B6A0CBA0D27A095E83F5B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E7B6A0CBA0D27A095E83F5B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -1072,6 +1074,7 @@
5432B7B9B2CF2EAEC8B66D5C, ); name = ComponentEditor; sourceTree = "<group>"; }; 5432B7B9B2CF2EAEC8B66D5C, ); name = ComponentEditor; sourceTree = "<group>"; };
E345840128627D533DF908AC = {isa = PBXGroup; children = ( E345840128627D533DF908AC = {isa = PBXGroup; children = (
6E7353DFEA8825B515049ABB, 6E7353DFEA8825B515049ABB,
16385D79A30C6E06EFB46B79,
DBE0CDE1B017190ABBFF557C, DBE0CDE1B017190ABBFF557C,
05076CDF1511A5F8A8E18F1D, 05076CDF1511A5F8A8E18F1D,
C8A229ACD244F402C57286CD, C8A229ACD244F402C57286CD,
@@ -1165,6 +1168,7 @@
88DFD62CB6545EE8CA5C485B = {isa = PBXGroup; children = ( 88DFD62CB6545EE8CA5C485B = {isa = PBXGroup; children = (
955A73C474B8CD4FB0D9A96F, 955A73C474B8CD4FB0D9A96F,
5F4F4EAB042F2730F94A1CEA, 5F4F4EAB042F2730F94A1CEA,
BB9C1E6E54A16F795908C469,
301592EBAC0FFF6F5B268E99, 301592EBAC0FFF6F5B268E99,
41105E536155E394E54BDD35, 41105E536155E394E54BDD35,
5F6584B675E30761521A9F42, 5F6584B675E30761521A9F42,


+ 11
- 0
extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj View File

@@ -249,6 +249,7 @@
</Filter> </Filter>
<Filter Name="Project Saving"> <Filter Name="Project Saving">
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/> <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/>
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h"/>
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/> <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/>
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/> <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/>
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/>
@@ -544,6 +545,16 @@
<Tool Name="VCCLCompilerTool"/> <Tool Name="VCCLCompilerTool"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File RelativePath="..\..\Source\BinaryData\background_logo.svg">
<FileConfiguration Name="Debug|Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration Name="Release|Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File RelativePath="..\..\Source\BinaryData\background_tile.png"> <File RelativePath="..\..\Source\BinaryData\background_tile.png">
<FileConfiguration Name="Debug|Win32" <FileConfiguration Name="Debug|Win32"
ExcludedFromBuild="true"> ExcludedFromBuild="true">


+ 11
- 0
extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj View File

@@ -249,6 +249,7 @@
</Filter> </Filter>
<Filter Name="Project Saving"> <Filter Name="Project Saving">
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/> <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/>
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h"/>
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/> <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/>
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/> <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/>
<File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/>
@@ -544,6 +545,16 @@
<Tool Name="VCCLCompilerTool"/> <Tool Name="VCCLCompilerTool"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File RelativePath="..\..\Source\BinaryData\background_logo.svg">
<FileConfiguration Name="Debug|Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration Name="Release|Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File RelativePath="..\..\Source\BinaryData\background_tile.png"> <File RelativePath="..\..\Source\BinaryData\background_tile.png">
<FileConfiguration Name="Debug|Win32" <FileConfiguration Name="Debug|Win32"
ExcludedFromBuild="true"> ExcludedFromBuild="true">


+ 2
- 0
extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj View File

@@ -1135,6 +1135,7 @@
<ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> <ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/>
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/> <ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/>
@@ -1541,6 +1542,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/> <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/>
<None Include="..\..\Source\BinaryData\background_logo.svg"/>
<None Include="..\..\Source\BinaryData\background_tile.png"/> <None Include="..\..\Source\BinaryData\background_tile.png"/>
<None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> <None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/>
<None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> <None Include="..\..\Source\BinaryData\colourscheme_light.xml"/>


+ 6
- 0
extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters View File

@@ -1584,6 +1584,9 @@
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h">
<Filter>The Introjucer\Project Saving</Filter> <Filter>The Introjucer\Project Saving</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h">
<Filter>The Introjucer\Project Saving</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h">
<Filter>The Introjucer\Project Saving</Filter> <Filter>The Introjucer\Project Saving</Filter>
</ClInclude> </ClInclude>
@@ -2798,6 +2801,9 @@
<None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"> <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt">
<Filter>The Introjucer\BinaryData</Filter> <Filter>The Introjucer\BinaryData</Filter>
</None> </None>
<None Include="..\..\Source\BinaryData\background_logo.svg">
<Filter>The Introjucer\BinaryData</Filter>
</None>
<None Include="..\..\Source\BinaryData\background_tile.png"> <None Include="..\..\Source\BinaryData\background_tile.png">
<Filter>The Introjucer\BinaryData</Filter> <Filter>The Introjucer\BinaryData</Filter>
</None> </None>


+ 2
- 0
extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj View File

@@ -1141,6 +1141,7 @@
<ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> <ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/>
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/> <ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/>
@@ -1547,6 +1548,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/> <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/>
<None Include="..\..\Source\BinaryData\background_logo.svg"/>
<None Include="..\..\Source\BinaryData\background_tile.png"/> <None Include="..\..\Source\BinaryData\background_tile.png"/>
<None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> <None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/>
<None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> <None Include="..\..\Source\BinaryData\colourscheme_light.xml"/>


+ 6
- 0
extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters View File

@@ -1584,6 +1584,9 @@
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h">
<Filter>The Introjucer\Project Saving</Filter> <Filter>The Introjucer\Project Saving</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h">
<Filter>The Introjucer\Project Saving</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h">
<Filter>The Introjucer\Project Saving</Filter> <Filter>The Introjucer\Project Saving</Filter>
</ClInclude> </ClInclude>
@@ -2798,6 +2801,9 @@
<None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"> <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt">
<Filter>The Introjucer\BinaryData</Filter> <Filter>The Introjucer\BinaryData</Filter>
</None> </None>
<None Include="..\..\Source\BinaryData\background_logo.svg">
<Filter>The Introjucer\BinaryData</Filter>
</None>
<None Include="..\..\Source\BinaryData\background_tile.png"> <None Include="..\..\Source\BinaryData\background_tile.png">
<Filter>The Introjucer\BinaryData</Filter> <Filter>The Introjucer\BinaryData</Filter>
</None> </None>


+ 2
- 0
extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj View File

@@ -1141,6 +1141,7 @@
<ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> <ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/>
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/> <ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/>
@@ -1547,6 +1548,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/> <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/>
<None Include="..\..\Source\BinaryData\background_logo.svg"/>
<None Include="..\..\Source\BinaryData\background_tile.png"/> <None Include="..\..\Source\BinaryData\background_tile.png"/>
<None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> <None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/>
<None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> <None Include="..\..\Source\BinaryData\colourscheme_light.xml"/>


+ 6
- 0
extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters View File

@@ -1584,6 +1584,9 @@
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h">
<Filter>The Introjucer\Project Saving</Filter> <Filter>The Introjucer\Project Saving</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h">
<Filter>The Introjucer\Project Saving</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h">
<Filter>The Introjucer\Project Saving</Filter> <Filter>The Introjucer\Project Saving</Filter>
</ClInclude> </ClInclude>
@@ -2798,6 +2801,9 @@
<None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"> <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt">
<Filter>The Introjucer\BinaryData</Filter> <Filter>The Introjucer\BinaryData</Filter>
</None> </None>
<None Include="..\..\Source\BinaryData\background_logo.svg">
<Filter>The Introjucer\BinaryData</Filter>
</None>
<None Include="..\..\Source\BinaryData\background_tile.png"> <None Include="..\..\Source\BinaryData\background_tile.png">
<Filter>The Introjucer\BinaryData</Filter> <Filter>The Introjucer\BinaryData</Filter>
</None> </None>


+ 2
- 0
extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj View File

@@ -1141,6 +1141,7 @@
<ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> <ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/>
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/> <ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Make.h"/>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/>
@@ -1547,6 +1548,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/> <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/>
<None Include="..\..\Source\BinaryData\background_logo.svg"/>
<None Include="..\..\Source\BinaryData\background_tile.png"/> <None Include="..\..\Source\BinaryData\background_tile.png"/>
<None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> <None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/>
<None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> <None Include="..\..\Source\BinaryData\colourscheme_light.xml"/>


+ 6
- 0
extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters View File

@@ -1584,6 +1584,9 @@
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h">
<Filter>The Introjucer\Project Saving</Filter> <Filter>The Introjucer\Project Saving</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_AndroidStudio.h">
<Filter>The Introjucer\Project Saving</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h"> <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_CodeBlocks.h">
<Filter>The Introjucer\Project Saving</Filter> <Filter>The Introjucer\Project Saving</Filter>
</ClInclude> </ClInclude>
@@ -2798,6 +2801,9 @@
<None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"> <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt">
<Filter>The Introjucer\BinaryData</Filter> <Filter>The Introjucer\BinaryData</Filter>
</None> </None>
<None Include="..\..\Source\BinaryData\background_logo.svg">
<Filter>The Introjucer\BinaryData</Filter>
</None>
<None Include="..\..\Source\BinaryData\background_tile.png"> <None Include="..\..\Source\BinaryData\background_tile.png">
<Filter>The Introjucer\BinaryData</Filter> <Filter>The Introjucer\BinaryData</Filter>
</None> </None>


+ 4
- 0
extras/Introjucer/Introjucer.jucer View File

@@ -402,6 +402,8 @@
<GROUP id="{579C9644-D5C2-8469-9439-F91C81337531}" name="Project Saving"> <GROUP id="{579C9644-D5C2-8469-9439-F91C81337531}" name="Project Saving">
<FILE id="TtXohM" name="jucer_ProjectExport_Android.h" compile="0" <FILE id="TtXohM" name="jucer_ProjectExport_Android.h" compile="0"
resource="0" file="Source/Project Saving/jucer_ProjectExport_Android.h"/> resource="0" file="Source/Project Saving/jucer_ProjectExport_Android.h"/>
<FILE id="AhU3qX" name="jucer_ProjectExport_AndroidStudio.h" compile="0"
resource="0" file="Source/Project Saving/jucer_ProjectExport_AndroidStudio.h"/>
<FILE id="EkBkj1" name="jucer_ProjectExport_CodeBlocks.h" compile="0" <FILE id="EkBkj1" name="jucer_ProjectExport_CodeBlocks.h" compile="0"
resource="0" file="Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"/> resource="0" file="Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"/>
<FILE id="mVXrLi" name="jucer_ProjectExport_Make.h" compile="0" resource="0" <FILE id="mVXrLi" name="jucer_ProjectExport_Make.h" compile="0" resource="0"
@@ -583,6 +585,8 @@
</GROUP> </GROUP>
<FILE id="RSJcrRl" name="AudioPluginXCodeScript.txt" compile="0" resource="1" <FILE id="RSJcrRl" name="AudioPluginXCodeScript.txt" compile="0" resource="1"
file="Source/BinaryData/AudioPluginXCodeScript.txt"/> file="Source/BinaryData/AudioPluginXCodeScript.txt"/>
<FILE id="IW9hGs" name="background_logo.svg" compile="0" resource="1"
file="Source/BinaryData/background_logo.svg"/>
<FILE id="eYn4jB" name="background_tile.png" compile="0" resource="1" <FILE id="eYn4jB" name="background_tile.png" compile="0" resource="1"
file="Source/BinaryData/background_tile.png"/> file="Source/BinaryData/background_tile.png"/>
<FILE id="geMos6" name="colourscheme_dark.xml" compile="0" resource="1" <FILE id="geMos6" name="colourscheme_dark.xml" compile="0" resource="1"


+ 86
- 42
extras/Introjucer/JuceLibraryCode/BinaryData.cpp View File

@@ -1470,15 +1470,57 @@ static const unsigned char temp_binary_data_21[] =
const char* AudioPluginXCodeScript_txt = (const char*) temp_binary_data_21; const char* AudioPluginXCodeScript_txt = (const char*) temp_binary_data_21;
//================== background_tile.png ==================
//================== background_logo.svg ==================
static const unsigned char temp_binary_data_22[] = static const unsigned char temp_binary_data_22[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n"
"\t viewBox=\"0 0 451.7 451.7\" enable-background=\"new 0 0 451.7 451.7\" xml:space=\"preserve\">\r\n"
"<g>\r\n"
"\t<g>\r\n"
"\t\t<path fill=\"#808285\" d=\"M111.8,421.9c-8.7,0-15.6-3.2-21.8-11.3l8.5-7.3c4.2,5.5,8.2,7.6,13.3,7.6c9.2,0,15.5-6.9,15.5-17.5v-51.8\r\n"
"\t\t\th11.7v51.8C138.9,410.4,127.7,421.9,111.8,421.9z\"/>\r\n"
"\t\t<path fill=\"#808285\" d=\"M185.7,421.9c-17,0-31.6-12.5-31.6-33.1v-47.2h11.7v46.6c0,13.8,8.2,22.8,19.9,22.8c11.7,0,20-8.9,20-22.8\r\n"
"\t\t\tv-46.6h11.7v47.2C217.4,409.4,202.7,421.9,185.7,421.9z\"/>\r\n"
"\t\t<path fill=\"#808285\" d=\"M268.9,421.9c-22.6,0-40.9-18.1-40.9-40.6c0-22.6,18.5-40.6,40.9-40.6c10,0,18.8,3.5,25.7,9.2l-6.9,8.6\r\n"
"\t\t\tc-7.1-5-12-6.8-18.7-6.8c-16.2,0-29.1,13-29.1,29.7c0,16.7,12.9,29.7,29.1,29.7c6.4,0,11.8-2,18.6-6.7l7,8.7\r\n"
"\t\t\tC285.9,419.6,278.1,421.9,268.9,421.9z\"/>\r\n"
"\t\t<path fill=\"#808285\" d=\"M307.5,420.9v-79.3h47.8v10.5h-36.1v23.5h34.7V386h-34.7v24.4h36.1v10.5H307.5z\"/>\r\n"
"\t</g>\r\n"
"</g>\r\n"
"<g>\r\n"
"\t<path fill=\"#808285\" d=\"M222.6,313.3c-78.2,0-141.7-63.6-141.7-141.7S144.5,29.8,222.6,29.8s141.7,63.6,141.7,141.7\r\n"
"\t\tS300.8,313.3,222.6,313.3z M222.6,39.3c-72.9,0-132.3,59.3-132.3,132.3s59.3,132.3,132.3,132.3s132.3-59.3,132.3-132.3\r\n"
"\t\tS295.6,39.3,222.6,39.3z\"/>\r\n"
"\t<path fill=\"#414042\" d=\"M334.5,166.8c2.4,0,4.8-0.9,6.5-2.6c1.9-1.9,2.7-4.4,2.4-7c-2.6-22.2-11.4-43.3-25.3-60.9\r\n"
"\t\tc-1.7-2.2-4.1-3.3-6.6-3.3c-2.3,0-4.5,1-6.2,2.7L236.9,164c-1.1,1.1-0.3,2.9,1.2,2.9L334.5,166.8z\"/>\r\n"
"\t<path fill=\"#58595B\" d=\"M311.5,250.2L311.5,250.2c2.6,0,4.9-1.2,6.6-3.3c13.9-17.6,22.6-38.7,25.3-60.9c0.3-2.6-0.6-5.1-2.4-7\r\n"
"\t\tc-1.7-1.7-4.1-2.6-6.5-2.6l-96.4,0c-1.5,0-2.2,1.8-1.2,2.9l68.4,68.4C307,249.2,309.2,250.2,311.5,250.2z\"/>\r\n"
"\t<path fill=\"#6D6E71\" d=\"M229.9,290L229.9,290c1.8,1.8,4.3,2.7,7.1,2.3c22.3-2.6,43.4-11.3,60.9-25.2c2.1-1.6,3.2-4,3.3-6.7\r\n"
"\t\tc0-2.4-1-4.7-2.8-6.4l-68.1-68.1c-1.1-1.1-2.9-0.3-2.9,1.2l0,96.7C227.4,286.1,228.2,288.4,229.9,290z\"/>\r\n"
"\t<path fill=\"#A7A9AC\" d=\"M133.8,92.9c-2.6,0-4.9,1.2-6.6,3.3c-13.9,17.6-22.6,38.7-25.3,60.9c-0.3,2.6,0.6,5.1,2.4,7\r\n"
"\t\tc1.7,1.7,4.1,2.6,6.5,2.6l96.4,0c1.5,0,2.2-1.8,1.2-2.9L140,95.6C138.3,93.9,136.1,92.9,133.8,92.9z\"/>\r\n"
"\t<path fill=\"#BCBEC0\" d=\"M215.4,53.1c-1.8-1.8-4.3-2.7-7.1-2.3C186.1,53.4,165,62.1,147.4,76c-2.1,1.6-3.2,4-3.3,6.7\r\n"
"\t\tc0,2.4,1,4.7,2.8,6.4l68.1,68.1c1.1,1.1,2.9,0.3,2.9-1.2l0-96.7C217.9,57,217,54.8,215.4,53.1z\"/>\r\n"
"\t<path fill=\"#D1D3D4\" d=\"M301.3,82.7c0-2.6-1.2-4.9-3.3-6.6c-17.6-13.9-38.7-22.6-60.9-25.3c-2.6-0.3-5.1,0.6-7,2.4\r\n"
"\t\tc-1.7,1.7-2.6,4.1-2.6,6.5l0,96.4c0,1.5,1.8,2.2,2.9,1.2l68.4-68.4C300.3,87.2,301.3,85,301.3,82.7z\"/>\r\n"
"\t<path fill=\"#939598\" d=\"M207.2,176.3l-96.4,0c-2.4,0-4.8,0.9-6.5,2.6c-1.9,1.9-2.7,4.4-2.4,7c2.6,22.2,11.4,43.3,25.3,60.9\r\n"
"\t\tc1.7,2.2,4.1,3.3,6.6,3.3c2.3,0,4.5-1,6.2-2.7c0,0,0,0,0,0l68.4-68.4C209.4,178.1,208.7,176.3,207.2,176.3z\"/>\r\n"
"\t<path fill=\"#808285\" d=\"M215.1,185.8L146.9,254c-1.7,1.7-2.8,4-2.8,6.4c0,2.7,1.2,5.1,3.3,6.7c17.6,13.9,38.6,22.6,60.9,25.2\r\n"
"\t\tc2.7,0.3,5.2-0.5,7.1-2.3c1.6-1.6,2.5-3.8,2.5-6.3c0,0,0,0,0,0l0-96.7C217.9,185.5,216.1,184.8,215.1,185.8z\"/>\r\n"
"</g>\r\n"
"</svg>\r\n";
const char* background_logo_svg = (const char*) temp_binary_data_22;
//================== background_tile.png ==================
static const unsigned char temp_binary_data_23[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,7,0,0,0,7,8,6,0,0,0,196,82,87,211,0,0,0,94,73,68,65,84,120,218,85,141,73,14,0,33,8,4,253,137,226,18,19,245,234,255,127,70,75,155,232,56,135,10,132,94,112,33,4,37,222,123,205,57,107,74,105,239,196,137, { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,7,0,0,0,7,8,6,0,0,0,196,82,87,211,0,0,0,94,73,68,65,84,120,218,85,141,73,14,0,33,8,4,253,137,226,18,19,245,234,255,127,70,75,155,232,56,135,10,132,94,112,33,4,37,222,123,205,57,107,74,105,239,196,137,
8,72,239,29,99,12,204,57,209,90,227,237,19,45,113,161,209,12,234,172,18,49,70,88,229,134,34,103,173,245,159,60,134,82,10,238,79,166,223,106,238,91,100,229,73,191,80,92,47,179,68,223,148,158,98,226,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; 8,72,239,29,99,12,204,57,209,90,227,237,19,45,113,161,209,12,234,172,18,49,70,88,229,134,34,103,173,245,159,60,134,82,10,238,79,166,223,106,238,91,100,229,73,191,80,92,47,179,68,223,148,158,98,226,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* background_tile_png = (const char*) temp_binary_data_22;
const char* background_tile_png = (const char*) temp_binary_data_23;
//================== colourscheme_dark.xml ================== //================== colourscheme_dark.xml ==================
static const unsigned char temp_binary_data_23[] =
static const unsigned char temp_binary_data_24[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
"\r\n" "\r\n"
"<COLOUR_SCHEME font=\"&lt;Monospaced&gt;; 13.0\">\r\n" "<COLOUR_SCHEME font=\"&lt;Monospaced&gt;; 13.0\">\r\n"
@@ -1503,10 +1545,10 @@ static const unsigned char temp_binary_data_23[] =
" <COLOUR name=\"Error\" colour=\"FFE60000\"/>\r\n" " <COLOUR name=\"Error\" colour=\"FFE60000\"/>\r\n"
"</COLOUR_SCHEME>\r\n"; "</COLOUR_SCHEME>\r\n";
const char* colourscheme_dark_xml = (const char*) temp_binary_data_23;
const char* colourscheme_dark_xml = (const char*) temp_binary_data_24;
//================== colourscheme_light.xml ================== //================== colourscheme_light.xml ==================
static const unsigned char temp_binary_data_24[] =
static const unsigned char temp_binary_data_25[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
"\r\n" "\r\n"
"<COLOUR_SCHEME font=\"&lt;Monospaced&gt;; 13.0\">\r\n" "<COLOUR_SCHEME font=\"&lt;Monospaced&gt;; 13.0\">\r\n"
@@ -1531,10 +1573,10 @@ static const unsigned char temp_binary_data_24[] =
" <COLOUR name=\"Error\" colour=\"ffcc0000\"/>\r\n" " <COLOUR name=\"Error\" colour=\"ffcc0000\"/>\r\n"
"</COLOUR_SCHEME>\r\n"; "</COLOUR_SCHEME>\r\n";
const char* colourscheme_light_xml = (const char*) temp_binary_data_24;
const char* colourscheme_light_xml = (const char*) temp_binary_data_25;
//================== juce_icon.png ================== //================== juce_icon.png ==================
static const unsigned char temp_binary_data_25[] =
static const unsigned char temp_binary_data_26[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,67,120,105,84,88,116,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120, { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,67,120,105,84,88,116,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,
112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,10,60,120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34, 112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,10,60,120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,
97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53,54,55,57,55,44,32,50,48,49,52,47,48,56,47,50,48,45,48,57,58,53,51,58, 97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53,54,55,57,55,44,32,50,48,49,52,47,48,56,47,50,48,45,48,57,58,53,51,58,
@@ -2360,10 +2402,10 @@ static const unsigned char temp_binary_data_25[] =
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,255,255,88,234,20,149,130,13,78,186,0,0,0,0,73,69,78,68, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,255,255,88,234,20,149,130,13,78,186,0,0,0,0,73,69,78,68,
174,66,96,130,0,0 }; 174,66,96,130,0,0 };
const char* juce_icon_png = (const char*) temp_binary_data_25;
const char* juce_icon_png = (const char*) temp_binary_data_26;
//================== projectIconAndroid.png ================== //================== projectIconAndroid.png ==================
static const unsigned char temp_binary_data_26[] =
static const unsigned char temp_binary_data_27[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,134,105,84,88,116,88,77,76, { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,134,105,84,88,116,88,77,76,
58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60, 58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,
120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53, 120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53,
@@ -2480,10 +2522,10 @@ static const unsigned char temp_binary_data_26[] =
139,240,165,4,64,57,166,132,157,54,246,220,165,230,39,27,156,211,4,232,176,247,44,193,125,203,174,137,229,132,198,114,231,150,74,124,238,9,19,9,244,154,7,0,175,121,0,240,154,7,0,175,121,0,240,154,7,0,175,121,0,240,154,7,0,175,189,235,246,255,2,12,0,158, 139,240,165,4,64,57,166,132,157,54,246,220,165,230,39,27,156,211,4,232,176,247,44,193,125,203,174,137,229,132,198,114,231,150,74,124,238,9,19,9,244,154,7,0,175,121,0,240,154,7,0,175,121,0,240,154,7,0,175,121,0,240,154,7,0,175,189,235,246,255,2,12,0,158,
137,39,54,252,6,9,64,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; 137,39,54,252,6,9,64,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* projectIconAndroid_png = (const char*) temp_binary_data_26;
const char* projectIconAndroid_png = (const char*) temp_binary_data_27;
//================== projectIconCodeblocks.png ================== //================== projectIconCodeblocks.png ==================
static const unsigned char temp_binary_data_27[] =
static const unsigned char temp_binary_data_28[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,134,105,84,88,116,88,77,76, { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,134,105,84,88,116,88,77,76,
58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60, 58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,
120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53, 120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53,
@@ -2653,10 +2695,10 @@ static const unsigned char temp_binary_data_27[] =
202,84,15,91,2,120,13,161,41,237,191,111,130,252,4,17,176,224,208,111,140,253,56,221,147,207,16,11,238,233,234,37,192,250,248,241,59,248,122,10,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176, 202,84,15,91,2,120,13,161,41,237,191,111,130,252,4,17,176,224,208,111,140,253,56,221,147,207,16,11,238,233,234,37,192,250,248,241,59,248,122,10,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,
62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,126,28,143,255,39,192,0,238,147,31,89,162,25,31,21,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; 62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,214,12,176,62,126,28,143,255,39,192,0,238,147,31,89,162,25,31,21,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* projectIconCodeblocks_png = (const char*) temp_binary_data_27;
const char* projectIconCodeblocks_png = (const char*) temp_binary_data_28;
//================== projectIconLinuxMakefile.png ================== //================== projectIconLinuxMakefile.png ==================
static const unsigned char temp_binary_data_28[] =
static const unsigned char temp_binary_data_29[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,110,0,0,0,128,8,6,0,0,0,234,21,92,9,0,0,10,65,105,67,67,80,73,67,67,32,80,114,111,102,105,108,101,0,0,72,13,157,150,119,84,83,217,22,135,207,189,55,189,208,18,34,32,37,244,26,122,9,32,210,59,72,21,4, { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,110,0,0,0,128,8,6,0,0,0,234,21,92,9,0,0,10,65,105,67,67,80,73,67,67,32,80,114,111,102,105,108,101,0,0,72,13,157,150,119,84,83,217,22,135,207,189,55,189,208,18,34,32,37,244,26,122,9,32,210,59,72,21,4,
81,137,73,128,80,2,134,132,38,118,68,5,70,20,17,41,86,100,84,192,1,71,135,34,99,69,20,11,131,130,98,215,9,242,16,80,198,193,81,68,69,229,221,140,107,9,239,173,53,243,222,154,253,199,89,223,217,231,183,215,217,103,239,125,215,186,0,80,252,130,4,194,116, 81,137,73,128,80,2,134,132,38,118,68,5,70,20,17,41,86,100,84,192,1,71,135,34,99,69,20,11,131,130,98,215,9,242,16,80,198,193,81,68,69,229,221,140,107,9,239,173,53,243,222,154,253,199,89,223,217,231,183,215,217,103,239,125,215,186,0,80,252,130,4,194,116,
88,1,128,52,161,88,20,238,235,193,92,18,19,203,196,247,2,24,16,1,14,88,1,192,225,102,102,4,71,248,68,2,212,252,189,61,153,153,168,72,198,179,246,238,46,128,100,187,219,44,191,80,38,115,214,255,127,145,34,55,67,36,6,0,10,69,213,54,60,126,38,23,229,2,148, 88,1,128,52,161,88,20,238,235,193,92,18,19,203,196,247,2,24,16,1,14,88,1,192,225,102,102,4,71,248,68,2,212,252,189,61,153,153,168,72,198,179,246,238,46,128,100,187,219,44,191,80,38,115,214,255,127,145,34,55,67,36,6,0,10,69,213,54,60,126,38,23,229,2,148,
@@ -2892,10 +2934,10 @@ static const unsigned char temp_binary_data_28[] =
194,72,142,254,249,31,79,111,60,173,241,241,124,82,34,189,246,233,251,163,179,223,129,178,15,181,97,103,68,217,251,253,17,198,63,35,254,218,150,109,129,235,236,183,141,63,16,97,60,125,157,93,199,211,219,217,245,128,211,250,223,12,238,70,210,82,169,25, 194,72,142,254,249,31,79,111,60,173,241,241,124,82,34,189,246,233,251,163,179,223,129,178,15,181,97,103,68,217,251,253,17,198,63,35,254,218,150,109,129,235,236,183,141,63,16,97,60,125,157,93,199,211,219,217,245,128,211,250,223,12,238,70,210,82,169,25,
10,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; 10,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* projectIconLinuxMakefile_png = (const char*) temp_binary_data_28;
const char* projectIconLinuxMakefile_png = (const char*) temp_binary_data_29;
//================== projectIconVisualStudio.png ================== //================== projectIconVisualStudio.png ==================
static const unsigned char temp_binary_data_29[] =
static const unsigned char temp_binary_data_30[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,4,166,105,84,88,116,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,120,58,120,109,112,109,101, { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,4,166,105,84,88,116,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,120,58,120,109,112,109,101,
116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,88,77,80,32,67,111,114,101,32,53,46,52,46,48,34,62,10,32,32,32,60,114,100,102,58,82,68,70,32,120,109,108,110,115,58,114, 116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,88,77,80,32,67,111,114,101,32,53,46,52,46,48,34,62,10,32,32,32,60,114,100,102,58,82,68,70,32,120,109,108,110,115,58,114,
100,102,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,49,57,57,57,47,48,50,47,50,50,45,114,100,102,45,115,121,110,116,97,120,45,110,115,35,34,62,10,32,32,32,32,32,32,60,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110, 100,102,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,49,57,57,57,47,48,50,47,50,50,45,114,100,102,45,115,121,110,116,97,120,45,110,115,35,34,62,10,32,32,32,32,32,32,60,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,
@@ -2998,10 +3040,10 @@ static const unsigned char temp_binary_data_29[] =
60,9,167,156,184,49,164,154,223,25,2,227,183,193,73,245,49,24,79,213,175,147,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,192,129,64, 60,9,167,156,184,49,164,154,223,25,2,227,183,193,73,245,49,24,79,213,175,147,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,128,166,192,129,64,
129,255,7,47,12,150,8,60,209,161,194,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; 129,255,7,47,12,150,8,60,209,161,194,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* projectIconVisualStudio_png = (const char*) temp_binary_data_29;
const char* projectIconVisualStudio_png = (const char*) temp_binary_data_30;
//================== projectIconXcode.png ================== //================== projectIconXcode.png ==================
static const unsigned char temp_binary_data_30[] =
static const unsigned char temp_binary_data_31[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,40,105,84,88,116,88,77,76,58, { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,40,105,84,88,116,88,77,76,58,
99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,120, 99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,120,
58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53,54, 58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53,54,
@@ -3261,10 +3303,10 @@ static const unsigned char temp_binary_data_30[] =
94,156,0,232,23,120,134,102,179,249,235,17,128,9,19,38,192,59,223,249,206,152,182,172,169,75,67,169,119,178,110,237,223,246,242,196,143,188,48,28,50,88,157,63,127,254,175,124,82,161,71,186,231,200,203,63,99,234,231,229,216,252,127,248,207,255,19,96,0, 94,156,0,232,23,120,134,102,179,249,235,17,128,9,19,38,192,59,223,249,206,152,182,172,169,75,67,169,119,178,110,237,223,246,242,196,143,188,48,28,50,88,157,63,127,254,175,124,82,161,71,186,231,200,203,63,99,234,231,229,216,252,127,248,207,255,19,96,0,
221,83,18,25,240,8,112,38,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; 221,83,18,25,240,8,112,38,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* projectIconXcode_png = (const char*) temp_binary_data_30;
const char* projectIconXcode_png = (const char*) temp_binary_data_31;
//================== projectIconXcodeIOS.png ================== //================== projectIconXcodeIOS.png ==================
static const unsigned char temp_binary_data_31[] =
static const unsigned char temp_binary_data_32[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,134,105,84,88,116,88,77,76, { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,134,105,84,88,116,88,77,76,
58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60, 58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,
120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53, 120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,49,52,32,55,57,46,49,53,
@@ -3522,10 +3564,10 @@ static const unsigned char temp_binary_data_31[] =
4,97,9,162,191,203,0,199,198,0,162,157,87,213,105,220,35,12,64,131,146,62,249,201,79,186,117,103,130,86,133,76,84,14,16,185,67,123,223,37,252,241,103,134,146,206,234,228,201,147,143,250,164,172,171,29,174,239,254,252,101,253,188,235,155,255,31,255,249, 4,97,9,162,191,203,0,199,198,0,162,157,87,213,105,220,35,12,64,131,146,62,249,201,79,186,117,103,130,86,133,76,84,14,16,185,67,123,223,37,252,241,103,134,146,206,234,228,201,147,143,250,164,172,171,29,174,239,254,252,101,253,188,235,155,255,31,255,249,
255,2,12,0,235,154,52,248,249,240,115,28,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; 255,2,12,0,235,154,52,248,249,240,115,28,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* projectIconXcodeIOS_png = (const char*) temp_binary_data_31;
const char* projectIconXcodeIOS_png = (const char*) temp_binary_data_32;
//================== RecentFilesMenuTemplate.nib ================== //================== RecentFilesMenuTemplate.nib ==================
static const unsigned char temp_binary_data_32[] =
static const unsigned char temp_binary_data_33[] =
{ 98,112,108,105,115,116,48,48,212,0,1,0,2,0,3,0,4,0,5,0,6,1,53,1,54,88,36,118,101,114,115,105,111,110,88,36,111,98,106,101,99,116,115,89,36,97,114,99,104,105,118,101,114,84,36,116,111,112,18,0,1,134,160,175,16,74,0,7,0,8,0,31,0,35,0,36,0,42,0,46,0,50, { 98,112,108,105,115,116,48,48,212,0,1,0,2,0,3,0,4,0,5,0,6,1,53,1,54,88,36,118,101,114,115,105,111,110,88,36,111,98,106,101,99,116,115,89,36,97,114,99,104,105,118,101,114,84,36,116,111,112,18,0,1,134,160,175,16,74,0,7,0,8,0,31,0,35,0,36,0,42,0,46,0,50,
0,53,0,57,0,74,0,77,0,78,0,86,0,87,0,97,0,112,0,113,0,114,0,119,0,120,0,121,0,124,0,128,0,129,0,132,0,143,0,144,0,145,0,149,0,153,0,162,0,163,0,164,0,169,0,173,0,180,0,181,0,182,0,185,0,192,0,193,0,200,0,201,0,208,0,209,0,216,0,217,0,224,0,225,0,226, 0,53,0,57,0,74,0,77,0,78,0,86,0,87,0,97,0,112,0,113,0,114,0,119,0,120,0,121,0,124,0,128,0,129,0,132,0,143,0,144,0,145,0,149,0,153,0,162,0,163,0,164,0,169,0,173,0,180,0,181,0,182,0,185,0,192,0,193,0,200,0,201,0,208,0,209,0,216,0,217,0,224,0,225,0,226,
0,229,0,230,0,232,0,249,1,11,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,47,1,50,85,36,110,117,108,108,219,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0, 0,229,0,230,0,232,0,249,1,11,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,47,1,50,85,36,110,117,108,108,219,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,
@@ -3562,10 +3604,10 @@ static const unsigned char temp_binary_data_32[] =
7,157,7,159,7,161,7,163,7,165,7,167,7,169,7,171,7,173,7,175,7,177,7,179,7,181,7,190,7,192,7,225,7,227,7,229,7,231,7,233,7,235,7,237,7,239,7,241,7,243,7,245,7,247,7,249,7,251,7,253,7,255,8,2,8,5,8,8,8,11,8,14,8,17,8,20,8,23,8,26,8,29,8,32,8,35,8,38,8, 7,157,7,159,7,161,7,163,7,165,7,167,7,169,7,171,7,173,7,175,7,177,7,179,7,181,7,190,7,192,7,225,7,227,7,229,7,231,7,233,7,235,7,237,7,239,7,241,7,243,7,245,7,247,7,249,7,251,7,253,7,255,8,2,8,5,8,8,8,11,8,14,8,17,8,20,8,23,8,26,8,29,8,32,8,35,8,38,8,
41,8,44,8,53,8,55,8,56,8,65,8,67,8,68,8,77,8,92,8,97,8,115,8,120,8,134,0,0,0,0,0,0,2,2,0,0,0,0,0,0,1,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,136,0,0 }; 41,8,44,8,53,8,55,8,56,8,65,8,67,8,68,8,77,8,92,8,97,8,115,8,120,8,134,0,0,0,0,0,0,2,2,0,0,0,0,0,0,1,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,136,0,0 };
const char* RecentFilesMenuTemplate_nib = (const char*) temp_binary_data_32;
const char* RecentFilesMenuTemplate_nib = (const char*) temp_binary_data_33;
//================== wizard_AnimatedApp.svg ================== //================== wizard_AnimatedApp.svg ==================
static const unsigned char temp_binary_data_33[] =
static const unsigned char temp_binary_data_34[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3612,10 +3654,10 @@ static const unsigned char temp_binary_data_33[] =
"<line opacity=\"0.7\" fill=\"none\" stroke=\"#F29100\" stroke-width=\"1.3469\" stroke-miterlimit=\"10\" x1=\"57.7\" y1=\"48.4\" x2=\"34.2\" y2=\"48.4\"/>\r\n" "<line opacity=\"0.7\" fill=\"none\" stroke=\"#F29100\" stroke-width=\"1.3469\" stroke-miterlimit=\"10\" x1=\"57.7\" y1=\"48.4\" x2=\"34.2\" y2=\"48.4\"/>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_AnimatedApp_svg = (const char*) temp_binary_data_33;
const char* wizard_AnimatedApp_svg = (const char*) temp_binary_data_34;
//================== wizard_AudioApp.svg ================== //================== wizard_AudioApp.svg ==================
static const unsigned char temp_binary_data_34[] =
static const unsigned char temp_binary_data_35[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3689,10 +3731,10 @@ static const unsigned char temp_binary_data_34[] =
"<line fill=\"none\" stroke=\"#F29300\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"118.8\" y1=\"43.8\" x2=\"118.8\" y2=\"44.5\"/>\r\n" "<line fill=\"none\" stroke=\"#F29300\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"118.8\" y1=\"43.8\" x2=\"118.8\" y2=\"44.5\"/>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_AudioApp_svg = (const char*) temp_binary_data_34;
const char* wizard_AudioApp_svg = (const char*) temp_binary_data_35;
//================== wizard_AudioPlugin.svg ================== //================== wizard_AudioPlugin.svg ==================
static const unsigned char temp_binary_data_35[] =
static const unsigned char temp_binary_data_36[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3803,10 +3845,10 @@ static const unsigned char temp_binary_data_35[] =
"</g>\r\n" "</g>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_AudioPlugin_svg = (const char*) temp_binary_data_35;
const char* wizard_AudioPlugin_svg = (const char*) temp_binary_data_36;
//================== wizard_ConsoleApp.svg ================== //================== wizard_ConsoleApp.svg ==================
static const unsigned char temp_binary_data_36[] =
static const unsigned char temp_binary_data_37[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3829,10 +3871,10 @@ static const unsigned char temp_binary_data_36[] =
"</g>\r\n" "</g>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_ConsoleApp_svg = (const char*) temp_binary_data_36;
const char* wizard_ConsoleApp_svg = (const char*) temp_binary_data_37;
//================== wizard_DLL.svg ================== //================== wizard_DLL.svg ==================
static const unsigned char temp_binary_data_37[] =
static const unsigned char temp_binary_data_38[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3875,10 +3917,10 @@ static const unsigned char temp_binary_data_37[] =
"\tl-7.7,5.3c-0.7,0.5-1.7,0.3-2.2-0.4L70.1,31\"/>\r\n" "\tl-7.7,5.3c-0.7,0.5-1.7,0.3-2.2-0.4L70.1,31\"/>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_DLL_svg = (const char*) temp_binary_data_37;
const char* wizard_DLL_svg = (const char*) temp_binary_data_38;
//================== wizard_GUI.svg ================== //================== wizard_GUI.svg ==================
static const unsigned char temp_binary_data_38[] =
static const unsigned char temp_binary_data_39[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3929,10 +3971,10 @@ static const unsigned char temp_binary_data_38[] =
"\tC0,3.1,3.1,0,6.9,0H130c3.8,0,6.9,3.1,6.9,6.9v101.1C136.9,111.7,133.9,114.8,130,114.8z\"/>\r\n" "\tC0,3.1,3.1,0,6.9,0H130c3.8,0,6.9,3.1,6.9,6.9v101.1C136.9,111.7,133.9,114.8,130,114.8z\"/>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_GUI_svg = (const char*) temp_binary_data_38;
const char* wizard_GUI_svg = (const char*) temp_binary_data_39;
//================== wizard_Highlight.svg ================== //================== wizard_Highlight.svg ==================
static const unsigned char temp_binary_data_39[] =
static const unsigned char temp_binary_data_40[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3942,10 +3984,10 @@ static const unsigned char temp_binary_data_39[] =
"\tV108C136.9,111.8,133.9,114.8,130.1,114.8z\"/>\r\n" "\tV108C136.9,111.8,133.9,114.8,130.1,114.8z\"/>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_Highlight_svg = (const char*) temp_binary_data_39;
const char* wizard_Highlight_svg = (const char*) temp_binary_data_40;
//================== wizard_Openfile.svg ================== //================== wizard_Openfile.svg ==================
static const unsigned char temp_binary_data_40[] =
static const unsigned char temp_binary_data_41[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3955,10 +3997,10 @@ static const unsigned char temp_binary_data_40[] =
"\tc0-3.8,3.1-6.9,6.9-6.9h151.5c3.8,0,6.9,3.1,6.9,6.9v20.9C171.6,68.3,168.5,71.4,164.7,71.4z\"/>\r\n" "\tc0-3.8,3.1-6.9,6.9-6.9h151.5c3.8,0,6.9,3.1,6.9,6.9v20.9C171.6,68.3,168.5,71.4,164.7,71.4z\"/>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_Openfile_svg = (const char*) temp_binary_data_40;
const char* wizard_Openfile_svg = (const char*) temp_binary_data_41;
//================== wizard_OpenGL.svg ================== //================== wizard_OpenGL.svg ==================
static const unsigned char temp_binary_data_41[] =
static const unsigned char temp_binary_data_42[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -3986,10 +4028,10 @@ static const unsigned char temp_binary_data_41[] =
"\ts-13.4-19.6-6.9-30\"/>\r\n" "\ts-13.4-19.6-6.9-30\"/>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_OpenGL_svg = (const char*) temp_binary_data_41;
const char* wizard_OpenGL_svg = (const char*) temp_binary_data_42;
//================== wizard_StaticLibrary.svg ================== //================== wizard_StaticLibrary.svg ==================
static const unsigned char temp_binary_data_42[] =
static const unsigned char temp_binary_data_43[] =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n" "<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n"
@@ -4032,7 +4074,7 @@ static const unsigned char temp_binary_data_42[] =
"\tc-1,0-1.8-0.8-1.8-1.8V20.8\"/>\r\n" "\tc-1,0-1.8-0.8-1.8-1.8V20.8\"/>\r\n"
"</svg>\r\n"; "</svg>\r\n";
const char* wizard_StaticLibrary_svg = (const char*) temp_binary_data_42;
const char* wizard_StaticLibrary_svg = (const char*) temp_binary_data_43;
const char* getNamedResource (const char*, int&) throw(); const char* getNamedResource (const char*, int&) throw();
@@ -4067,6 +4109,7 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
case 0x36e634a1: numBytes = 1626; return jucer_NewInlineComponentTemplate_h; case 0x36e634a1: numBytes = 1626; return jucer_NewInlineComponentTemplate_h;
case 0x7fbac252: numBytes = 1827; return jucer_OpenGLComponentTemplate_cpp; case 0x7fbac252: numBytes = 1827; return jucer_OpenGLComponentTemplate_cpp;
case 0x44be9398: numBytes = 2745; return AudioPluginXCodeScript_txt; case 0x44be9398: numBytes = 2745; return AudioPluginXCodeScript_txt;
case 0x406db5c1: numBytes = 3117; return background_logo_svg;
case 0x4a0cfd09: numBytes = 151; return background_tile_png; case 0x4a0cfd09: numBytes = 151; return background_tile_png;
case 0x763d39dc: numBytes = 1050; return colourscheme_dark_xml; case 0x763d39dc: numBytes = 1050; return colourscheme_dark_xml;
case 0xe8b08520: numBytes = 1050; return colourscheme_light_xml; case 0xe8b08520: numBytes = 1050; return colourscheme_light_xml;
@@ -4119,6 +4162,7 @@ const char* namedResourceList[] =
"jucer_NewInlineComponentTemplate_h", "jucer_NewInlineComponentTemplate_h",
"jucer_OpenGLComponentTemplate_cpp", "jucer_OpenGLComponentTemplate_cpp",
"AudioPluginXCodeScript_txt", "AudioPluginXCodeScript_txt",
"background_logo_svg",
"background_tile_png", "background_tile_png",
"colourscheme_dark_xml", "colourscheme_dark_xml",
"colourscheme_light_xml", "colourscheme_light_xml",


+ 4
- 1
extras/Introjucer/JuceLibraryCode/BinaryData.h View File

@@ -75,6 +75,9 @@ namespace BinaryData
extern const char* AudioPluginXCodeScript_txt; extern const char* AudioPluginXCodeScript_txt;
const int AudioPluginXCodeScript_txtSize = 2745; const int AudioPluginXCodeScript_txtSize = 2745;
extern const char* background_logo_svg;
const int background_logo_svgSize = 3117;
extern const char* background_tile_png; extern const char* background_tile_png;
const int background_tile_pngSize = 151; const int background_tile_pngSize = 151;
@@ -142,7 +145,7 @@ namespace BinaryData
extern const char* namedResourceList[]; extern const char* namedResourceList[];
// Number of elements in the namedResourceList array. // Number of elements in the namedResourceList array.
const int namedResourceListSize = 43;
const int namedResourceListSize = 44;
// If you provide the name of one of the binary resource variables above, this function will // If you provide the name of one of the binary resource variables above, this function will
// return the corresponding data and its size (or a null pointer if the name isn't found). // return the corresponding data and its size (or a null pointer if the name isn't found).


+ 1
- 0
extras/Introjucer/Source/Application/jucer_CommandIDs.h View File

@@ -40,6 +40,7 @@ namespace CommandIDs
saveAll = 0x200080, saveAll = 0x200080,
openInIDE = 0x200072, openInIDE = 0x200072,
saveAndOpenInIDE = 0x200073, saveAndOpenInIDE = 0x200073,
createNewExporter = 0x20007d,
showUTF8Tool = 0x200076, showUTF8Tool = 0x200076,
showGlobalPreferences = 0x200077, showGlobalPreferences = 0x200077,


+ 37
- 0
extras/Introjucer/Source/BinaryData/background_logo.svg View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 451.7 451.7" enable-background="new 0 0 451.7 451.7" xml:space="preserve">
<g>
<g>
<path fill="#808285" d="M111.8,421.9c-8.7,0-15.6-3.2-21.8-11.3l8.5-7.3c4.2,5.5,8.2,7.6,13.3,7.6c9.2,0,15.5-6.9,15.5-17.5v-51.8
h11.7v51.8C138.9,410.4,127.7,421.9,111.8,421.9z"/>
<path fill="#808285" d="M185.7,421.9c-17,0-31.6-12.5-31.6-33.1v-47.2h11.7v46.6c0,13.8,8.2,22.8,19.9,22.8c11.7,0,20-8.9,20-22.8
v-46.6h11.7v47.2C217.4,409.4,202.7,421.9,185.7,421.9z"/>
<path fill="#808285" d="M268.9,421.9c-22.6,0-40.9-18.1-40.9-40.6c0-22.6,18.5-40.6,40.9-40.6c10,0,18.8,3.5,25.7,9.2l-6.9,8.6
c-7.1-5-12-6.8-18.7-6.8c-16.2,0-29.1,13-29.1,29.7c0,16.7,12.9,29.7,29.1,29.7c6.4,0,11.8-2,18.6-6.7l7,8.7
C285.9,419.6,278.1,421.9,268.9,421.9z"/>
<path fill="#808285" d="M307.5,420.9v-79.3h47.8v10.5h-36.1v23.5h34.7V386h-34.7v24.4h36.1v10.5H307.5z"/>
</g>
</g>
<g>
<path fill="#808285" d="M222.6,313.3c-78.2,0-141.7-63.6-141.7-141.7S144.5,29.8,222.6,29.8s141.7,63.6,141.7,141.7
S300.8,313.3,222.6,313.3z M222.6,39.3c-72.9,0-132.3,59.3-132.3,132.3s59.3,132.3,132.3,132.3s132.3-59.3,132.3-132.3
S295.6,39.3,222.6,39.3z"/>
<path fill="#414042" d="M334.5,166.8c2.4,0,4.8-0.9,6.5-2.6c1.9-1.9,2.7-4.4,2.4-7c-2.6-22.2-11.4-43.3-25.3-60.9
c-1.7-2.2-4.1-3.3-6.6-3.3c-2.3,0-4.5,1-6.2,2.7L236.9,164c-1.1,1.1-0.3,2.9,1.2,2.9L334.5,166.8z"/>
<path fill="#58595B" d="M311.5,250.2L311.5,250.2c2.6,0,4.9-1.2,6.6-3.3c13.9-17.6,22.6-38.7,25.3-60.9c0.3-2.6-0.6-5.1-2.4-7
c-1.7-1.7-4.1-2.6-6.5-2.6l-96.4,0c-1.5,0-2.2,1.8-1.2,2.9l68.4,68.4C307,249.2,309.2,250.2,311.5,250.2z"/>
<path fill="#6D6E71" d="M229.9,290L229.9,290c1.8,1.8,4.3,2.7,7.1,2.3c22.3-2.6,43.4-11.3,60.9-25.2c2.1-1.6,3.2-4,3.3-6.7
c0-2.4-1-4.7-2.8-6.4l-68.1-68.1c-1.1-1.1-2.9-0.3-2.9,1.2l0,96.7C227.4,286.1,228.2,288.4,229.9,290z"/>
<path fill="#A7A9AC" d="M133.8,92.9c-2.6,0-4.9,1.2-6.6,3.3c-13.9,17.6-22.6,38.7-25.3,60.9c-0.3,2.6,0.6,5.1,2.4,7
c1.7,1.7,4.1,2.6,6.5,2.6l96.4,0c1.5,0,2.2-1.8,1.2-2.9L140,95.6C138.3,93.9,136.1,92.9,133.8,92.9z"/>
<path fill="#BCBEC0" d="M215.4,53.1c-1.8-1.8-4.3-2.7-7.1-2.3C186.1,53.4,165,62.1,147.4,76c-2.1,1.6-3.2,4-3.3,6.7
c0,2.4,1,4.7,2.8,6.4l68.1,68.1c1.1,1.1,2.9,0.3,2.9-1.2l0-96.7C217.9,57,217,54.8,215.4,53.1z"/>
<path fill="#D1D3D4" d="M301.3,82.7c0-2.6-1.2-4.9-3.3-6.6c-17.6-13.9-38.7-22.6-60.9-25.3c-2.6-0.3-5.1,0.6-7,2.4
c-1.7,1.7-2.6,4.1-2.6,6.5l0,96.4c0,1.5,1.8,2.2,2.9,1.2l68.4-68.4C300.3,87.2,301.3,85,301.3,82.7z"/>
<path fill="#939598" d="M207.2,176.3l-96.4,0c-2.4,0-4.8,0.9-6.5,2.6c-1.9,1.9-2.7,4.4-2.4,7c2.6,22.2,11.4,43.3,25.3,60.9
c1.7,2.2,4.1,3.3,6.6,3.3c2.3,0,4.5-1,6.2-2.7c0,0,0,0,0,0l68.4-68.4C209.4,178.1,208.7,176.3,207.2,176.3z"/>
<path fill="#808285" d="M215.1,185.8L146.9,254c-1.7,1.7-2.8,4-2.8,6.4c0,2.7,1.2,5.1,3.3,6.7c17.6,13.9,38.6,22.6,60.9,25.2
c2.7,0.3,5.2-0.5,7.1-2.3c1.6-1.6,2.5-3.8,2.5-6.3c0,0,0,0,0,0l0-96.7C217.9,185.5,216.1,184.8,215.1,185.8z"/>
</g>
</svg>

+ 221
- 189
extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Android.h View File

@@ -22,30 +22,12 @@
============================================================================== ==============================================================================
*/ */
class AndroidProjectExporter : public ProjectExporter
class AndroidProjectExporterBase : public ProjectExporter
{ {
public: public:
//==============================================================================
static const char* getNameAndroid() { return "Android Project"; }
static const char* getValueTreeTypeName() { return "ANDROID"; }
static AndroidProjectExporter* createForSettings (Project& project, const ValueTree& settings)
{
if (settings.hasType (getValueTreeTypeName()))
return new AndroidProjectExporter (project, settings);
return nullptr;
}
//==============================================================================
AndroidProjectExporter (Project& p, const ValueTree& t)
AndroidProjectExporterBase (Project& p, const ValueTree& t)
: ProjectExporter (p, t) : ProjectExporter (p, t)
{ {
name = getNameAndroid();
if (getTargetLocationString().isEmpty())
getTargetLocationValue() = getDefaultBuildsRootFolder() + "Android";
if (getVersionCodeString().isEmpty()) if (getVersionCodeString().isEmpty())
getVersionCodeValue() = 1; getVersionCodeValue() = 1;
@@ -67,13 +49,21 @@ public:
initialiseDependencyPathValues(); initialiseDependencyPathValues();
} }
//==============================================================================
bool canLaunchProject() override { return false; } bool canLaunchProject() override { return false; }
bool launchProject() override { return false; } bool launchProject() override { return false; }
bool isAndroid() const override { return true; } bool isAndroid() const override { return true; }
bool usesMMFiles() const override { return false; } bool usesMMFiles() const override { return false; }
bool canCopeWithDuplicateFiles() override { return false; } bool canCopeWithDuplicateFiles() override { return false; }
void create (const OwnedArray<LibraryModule>& modules) const override
{
const String package (getActivityClassPackage());
const String path (package.replaceCharacter ('.', File::separator));
const File target (getTargetFolder().getChildFile ("src").getChildFile (path));
copyActivityJavaFiles (modules, target, package);
}
void createExporterProperties (PropertyListBuilder& props) override void createExporterProperties (PropertyListBuilder& props) override
{ {
props.add (new TextPropertyComponent (getActivityClassPathValue(), "Android Activity class name", 256, false), props.add (new TextPropertyComponent (getActivityClassPathValue(), "Android Activity class name", 256, false),
@@ -172,6 +162,7 @@ public:
Value getCPP11EnabledValue() { return getSetting (Ids::androidCpp11); } Value getCPP11EnabledValue() { return getSetting (Ids::androidCpp11); }
bool isCPP11Enabled() const { return settings [Ids::androidCpp11]; } bool isCPP11Enabled() const { return settings [Ids::androidCpp11]; }
//==============================================================================
String createDefaultClassName() const String createDefaultClassName() const
{ {
String s (project.getBundleIdentifier().toString().toLowerCase()); String s (project.getBundleIdentifier().toString().toLowerCase());
@@ -192,84 +183,168 @@ public:
return s + CodeHelpers::makeValidIdentifier (project.getProjectFilenameRoot(), false, true, false); return s + CodeHelpers::makeValidIdentifier (project.getProjectFilenameRoot(), false, true, false);
} }
//==============================================================================
void create (const OwnedArray<LibraryModule>& modules) const override
void initialiseDependencyPathValues()
{ {
const File target (getTargetFolder());
const File jniFolder (target.getChildFile ("jni"));
sdkPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::androidSDKPath),
Ids::androidSDKPath, TargetOS::getThisOS())));
copyActivityJavaFiles (modules);
createDirectoryOrThrow (jniFolder);
createDirectoryOrThrow (target.getChildFile ("res").getChildFile ("values"));
createDirectoryOrThrow (target.getChildFile ("libs"));
createDirectoryOrThrow (target.getChildFile ("bin"));
ndkPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::androidNDKPath),
Ids::androidNDKPath, TargetOS::getThisOS())));
}
void copyActivityJavaFiles (const OwnedArray<LibraryModule>& modules, const File& targetFolder, const String& package) const
{
const String className (getActivityName());
if (className.isEmpty())
throw SaveError ("Invalid Android Activity class name: " + getActivityClassPath());
createDirectoryOrThrow (targetFolder);
LibraryModule* const coreModule = getCoreModule (modules);
if (coreModule != nullptr)
{ {
ScopedPointer<XmlElement> manifest (createManifestXML());
writeXmlOrThrow (*manifest, target.getChildFile ("AndroidManifest.xml"), "utf-8", 100, true);
File javaDestFile (targetFolder.getChildFile (className + ".java"));
File javaSourceFile (coreModule->getFolder().getChildFile ("native")
.getChildFile ("java")
.getChildFile ("JuceAppActivity.java"));
MemoryOutputStream newFile;
newFile << javaSourceFile.loadFileAsString()
.replace ("JuceAppActivity", className)
.replace ("package com.juce;", "package " + package + ";");
overwriteFileIfDifferentOrThrow (javaDestFile, newFile);
} }
}
writeApplicationMk (jniFolder.getChildFile ("Application.mk"));
writeAndroidMk (jniFolder.getChildFile ("Android.mk"));
String getAppPlatform() const
{
int ndkVersion = getMinimumSDKVersionString().getIntValue();
if (ndkVersion == 9)
ndkVersion = 10; // (doesn't seem to be a version '9')
return "android-" + String (ndkVersion);
}
String getActivityName() const
{
return getActivityClassPath().fromLastOccurrenceOf (".", false, false);
}
String getActivitySubClassName() const
{
String activityPath = getActivitySubClassPath();
return (activityPath.isEmpty()) ? getActivityName() : activityPath.fromLastOccurrenceOf (".", false, false);
}
String getActivityClassPackage() const
{
return getActivityClassPath().upToLastOccurrenceOf (".", false, false);
}
String getJNIActivityClassName() const
{
return getActivityClassPath().replaceCharacter ('.', '/');
}
static LibraryModule* getCoreModule (const OwnedArray<LibraryModule>& modules)
{
for (int i = modules.size(); --i >= 0;)
if (modules.getUnchecked(i)->getID() == "juce_core")
return modules.getUnchecked(i);
return nullptr;
}
String getCppFlags() const
{
String flags ("-fsigned-char -fexceptions -frtti");
if (! getNDKToolchainVersionString().startsWithIgnoreCase ("clang"))
flags << " -Wno-psabi";
return flags;
}
StringArray getPermissionsRequired() const
{
StringArray s;
s.addTokens (getOtherPermissions(), ", ", "");
if (getInternetNeeded()) s.add ("android.permission.INTERNET");
if (getAudioRecordNeeded()) s.add ("android.permission.RECORD_AUDIO");
return getCleanedStringArray (s);
}
template <typename PredicateT>
void findAllProjectItemsWithPredicate (const Project::Item& projectItem, Array<RelativePath>& results, const PredicateT& predicate) const
{
if (projectItem.isGroup())
{ {
ScopedPointer<XmlElement> antBuildXml (createAntBuildXML());
writeXmlOrThrow (*antBuildXml, target.getChildFile ("build.xml"), "UTF-8", 100);
for (int i = 0; i < projectItem.getNumChildren(); ++i)
findAllProjectItemsWithPredicate (projectItem.getChild(i), results, predicate);
} }
else
{
if (predicate (projectItem))
results.add (RelativePath (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder));
}
}
writeProjectPropertiesFile (target.getChildFile ("project.properties"));
writeLocalPropertiesFile (target.getChildFile ("local.properties"));
writeStringsFile (target.getChildFile ("res/values/strings.xml"));
void writeIcon (const File& file, const Image& im) const
{
if (im.isValid())
{
createDirectoryOrThrow (file.getParentDirectory());
PNGImageFormat png;
MemoryOutputStream mo;
if (! png.writeImageToStream (im, mo))
throw SaveError ("Can't generate Android icon file");
overwriteFileIfDifferentOrThrow (file, mo);
}
}
void writeIcons (const File& folder) const
{
ScopedPointer<Drawable> bigIcon (getBigIcon()); ScopedPointer<Drawable> bigIcon (getBigIcon());
ScopedPointer<Drawable> smallIcon (getSmallIcon()); ScopedPointer<Drawable> smallIcon (getSmallIcon());
if (bigIcon != nullptr && smallIcon != nullptr) if (bigIcon != nullptr && smallIcon != nullptr)
{ {
const int step = jmax (bigIcon->getWidth(), bigIcon->getHeight()) / 8; const int step = jmax (bigIcon->getWidth(), bigIcon->getHeight()) / 8;
writeIcon (target.getChildFile ("res/drawable-xhdpi/icon.png"), getBestIconForSize (step * 8, false));
writeIcon (target.getChildFile ("res/drawable-hdpi/icon.png"), getBestIconForSize (step * 6, false));
writeIcon (target.getChildFile ("res/drawable-mdpi/icon.png"), getBestIconForSize (step * 4, false));
writeIcon (target.getChildFile ("res/drawable-ldpi/icon.png"), getBestIconForSize (step * 3, false));
writeIcon (folder.getChildFile ("drawable-xhdpi/icon.png"), getBestIconForSize (step * 8, false));
writeIcon (folder.getChildFile ("drawable-hdpi/icon.png"), getBestIconForSize (step * 6, false));
writeIcon (folder.getChildFile ("drawable-mdpi/icon.png"), getBestIconForSize (step * 4, false));
writeIcon (folder.getChildFile ("drawable-ldpi/icon.png"), getBestIconForSize (step * 3, false));
} }
else if (Drawable* icon = bigIcon != nullptr ? bigIcon : smallIcon) else if (Drawable* icon = bigIcon != nullptr ? bigIcon : smallIcon)
{ {
writeIcon (target.getChildFile ("res/drawable-mdpi/icon.png"), rescaleImageForIcon (*icon, icon->getWidth()));
writeIcon (folder.getChildFile ("drawable-mdpi/icon.png"), rescaleImageForIcon (*icon, icon->getWidth()));
} }
} }
protected:
//==============================================================================
class AndroidBuildConfiguration : public BuildConfiguration
template <typename BuildConfigType>
String getABIs (bool forDebug) const
{ {
public:
AndroidBuildConfiguration (Project& p, const ValueTree& settings)
: BuildConfiguration (p, settings)
{
if (getArchitectures().isEmpty())
getArchitecturesValue() = "armeabi armeabi-v7a";
}
Value getArchitecturesValue() { return getValue (Ids::androidArchitectures); }
String getArchitectures() const { return config [Ids::androidArchitectures]; }
var getDefaultOptimisationLevel() const override { return var ((int) (isDebug() ? gccO0 : gccO3)); }
void createConfigProperties (PropertyListBuilder& props) override
for (ConstConfigIterator config (*this); config.next();)
{ {
addGCCOptimisationProperty (props);
const BuildConfigType& androidConfig = dynamic_cast<const BuildConfigType&> (*config);
props.add (new TextPropertyComponent (getArchitecturesValue(), "Architectures", 256, false),
"A list of the ARM architectures to build (for a fat binary).");
if (config->isDebug() == forDebug)
return androidConfig.getArchitectures();
} }
};
BuildConfiguration::Ptr createBuildConfig (const ValueTree& v) const override
{
return new AndroidBuildConfiguration (project, v);
return String();
} }
private:
//============================================================================== //==============================================================================
XmlElement* createManifestXML() const XmlElement* createManifestXML() const
{ {
@@ -334,119 +409,109 @@ private:
return manifest; return manifest;
} }
StringArray getPermissionsRequired() const
{
StringArray s;
s.addTokens (getOtherPermissions(), ", ", "");
if (getInternetNeeded()) s.add ("android.permission.INTERNET");
if (getAudioRecordNeeded()) s.add ("android.permission.RECORD_AUDIO");
//==============================================================================
Value sdkPath, ndkPath;
return getCleanedStringArray (s);
}
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AndroidProjectExporterBase)
};
//==============================================================================
void findAllFilesToCompile (const Project::Item& projectItem, Array<RelativePath>& results) const
{
if (projectItem.isGroup())
{
for (int i = 0; i < projectItem.getNumChildren(); ++i)
findAllFilesToCompile (projectItem.getChild(i), results);
}
else
{
if (projectItem.shouldBeCompiled())
results.add (RelativePath (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder));
}
}
//==============================================================================
//==============================================================================
class AndroidAntProjectExporter : public AndroidProjectExporterBase
{
public:
//============================================================================== //==============================================================================
String getActivityName() const
{
return getActivityClassPath().fromLastOccurrenceOf (".", false, false);
}
static const char* getName() { return "Android Project"; }
static const char* getValueTreeTypeName() { return "ANDROID"; }
String getActivitySubClassName() const
static AndroidAntProjectExporter* createForSettings (Project& project, const ValueTree& settings)
{ {
String activityPath = getActivitySubClassPath();
if (settings.hasType (getValueTreeTypeName()))
return new AndroidAntProjectExporter (project, settings);
return (activityPath.isEmpty()) ? getActivityName() : activityPath.fromLastOccurrenceOf (".", false, false);
return nullptr;
} }
String getActivityClassPackage() const
//==============================================================================
AndroidAntProjectExporter (Project& p, const ValueTree& t)
: AndroidProjectExporterBase (p, t)
{ {
return getActivityClassPath().upToLastOccurrenceOf (".", false, false);
}
name = getName();
String getJNIActivityClassName() const
{
return getActivityClassPath().replaceCharacter ('.', '/');
if (getTargetLocationString().isEmpty())
getTargetLocationValue() = getDefaultBuildsRootFolder() + "Android";
} }
static LibraryModule* getCoreModule (const OwnedArray<LibraryModule>& modules)
//==============================================================================
void createExporterProperties (PropertyListBuilder& props) override
{ {
for (int i = modules.size(); --i >= 0;)
if (modules.getUnchecked(i)->getID() == "juce_core")
return modules.getUnchecked(i);
return nullptr;
AndroidProjectExporterBase::createExporterProperties (props);
} }
void copyActivityJavaFiles (const OwnedArray<LibraryModule>& modules) const
void create (const OwnedArray<LibraryModule>& modules) const override
{ {
const String className (getActivityName());
const String package (getActivityClassPackage());
String path (package.replaceCharacter ('.', File::separator));
if (path.isEmpty() || className.isEmpty())
throw SaveError ("Invalid Android Activity class name: " + getActivityClassPath());
AndroidProjectExporterBase::create (modules);
const File classFolder (getTargetFolder().getChildFile ("src")
.getChildFile (path));
createDirectoryOrThrow (classFolder);
const File target (getTargetFolder());
const File jniFolder (target.getChildFile ("jni"));
LibraryModule* const coreModule = getCoreModule (modules);
createDirectoryOrThrow (jniFolder);
createDirectoryOrThrow (target.getChildFile ("res").getChildFile ("values"));
createDirectoryOrThrow (target.getChildFile ("libs"));
createDirectoryOrThrow (target.getChildFile ("bin"));
if (coreModule != nullptr)
{ {
File javaDestFile (classFolder.getChildFile (className + ".java"));
File javaSourceFile (coreModule->getFolder().getChildFile ("native")
.getChildFile ("java")
.getChildFile ("JuceAppActivity.java"));
ScopedPointer<XmlElement> manifest (createManifestXML());
writeXmlOrThrow (*manifest, target.getChildFile ("AndroidManifest.xml"), "utf-8", 100, true);
}
MemoryOutputStream newFile;
newFile << javaSourceFile.loadFileAsString()
.replace ("JuceAppActivity", className)
.replace ("package com.juce;", "package " + package + ";");
writeApplicationMk (jniFolder.getChildFile ("Application.mk"));
writeAndroidMk (jniFolder.getChildFile ("Android.mk"));
overwriteFileIfDifferentOrThrow (javaDestFile, newFile);
{
ScopedPointer<XmlElement> antBuildXml (createAntBuildXML());
writeXmlOrThrow (*antBuildXml, target.getChildFile ("build.xml"), "UTF-8", 100);
} }
writeProjectPropertiesFile (target.getChildFile ("project.properties"));
writeLocalPropertiesFile (target.getChildFile ("local.properties"));
writeStringsFile (target.getChildFile ("res/values/strings.xml"));
writeIcons (target.getChildFile ("res"));
} }
String getABIs (bool forDebug) const
//==============================================================================
class AndroidBuildConfiguration : public BuildConfiguration
{ {
for (ConstConfigIterator config (*this); config.next();)
public:
AndroidBuildConfiguration (Project& p, const ValueTree& settings)
: BuildConfiguration (p, settings)
{ {
const AndroidBuildConfiguration& androidConfig = dynamic_cast<const AndroidBuildConfiguration&> (*config);
if (config->isDebug() == forDebug)
return androidConfig.getArchitectures();
if (getArchitectures().isEmpty())
getArchitecturesValue() = "armeabi armeabi-v7a";
} }
return String();
}
Value getArchitecturesValue() { return getValue (Ids::androidArchitectures); }
String getArchitectures() const { return config [Ids::androidArchitectures]; }
String getCppFlags() const
{
String flags ("-fsigned-char -fexceptions -frtti");
var getDefaultOptimisationLevel() const override { return var ((int) (isDebug() ? gccO0 : gccO3)); }
if (! getNDKToolchainVersionString().startsWithIgnoreCase ("clang"))
flags << " -Wno-psabi";
void createConfigProperties (PropertyListBuilder& props) override
{
addGCCOptimisationProperty (props);
return flags;
props.add (new TextPropertyComponent (getArchitecturesValue(), "Architectures", 256, false),
"A list of the ARM architectures to build (for a fat binary).");
}
};
BuildConfiguration::Ptr createBuildConfig (const ValueTree& v) const override
{
return new AndroidBuildConfiguration (project, v);
} }
private:
//==============================================================================
String getToolchainVersion() const String getToolchainVersion() const
{ {
String v (getNDKToolchainVersionString()); String v (getNDKToolchainVersionString());
@@ -466,9 +531,9 @@ private:
<< "NDK_TOOLCHAIN_VERSION := " << getToolchainVersion() << newLine << "NDK_TOOLCHAIN_VERSION := " << getToolchainVersion() << newLine
<< newLine << newLine
<< "ifeq ($(NDK_DEBUG),1)" << newLine << "ifeq ($(NDK_DEBUG),1)" << newLine
<< " APP_ABI := " << getABIs (true) << newLine
<< " APP_ABI := " << getABIs<AndroidBuildConfiguration> (true) << newLine
<< "else" << newLine << "else" << newLine
<< " APP_ABI := " << getABIs (false) << newLine
<< " APP_ABI := " << getABIs<AndroidBuildConfiguration> (false) << newLine
<< "endif" << newLine; << "endif" << newLine;
overwriteFileIfDifferentOrThrow (file, mo); overwriteFileIfDifferentOrThrow (file, mo);
@@ -478,8 +543,13 @@ private:
{ {
Array<RelativePath> files; Array<RelativePath> files;
struct Predicate
{
bool operator() (const Project::Item& projectItem) const { return projectItem.shouldBeAddedToTargetProject(); }
};
for (int i = 0; i < getAllGroups().size(); ++i) for (int i = 0; i < getAllGroups().size(); ++i)
findAllFilesToCompile (getAllGroups().getReference(i), files);
findAllProjectItemsWithPredicate (getAllGroups().getReference(i), files, Predicate());
MemoryOutputStream mo; MemoryOutputStream mo;
writeAndroidMk (mo, files); writeAndroidMk (mo, files);
@@ -687,15 +757,6 @@ private:
equals->setAttribute ("arg2", "debug"); equals->setAttribute ("arg2", "debug");
} }
String getAppPlatform() const
{
int ndkVersion = getMinimumSDKVersionString().getIntValue();
if (ndkVersion == 9)
ndkVersion = 10; // (doesn't seem to be a version '9')
return "android-" + String (ndkVersion);
}
void writeProjectPropertiesFile (const File& file) const void writeProjectPropertiesFile (const File& file) const
{ {
MemoryOutputStream mo; MemoryOutputStream mo;
@@ -725,22 +786,6 @@ private:
overwriteFileIfDifferentOrThrow (file, mo); overwriteFileIfDifferentOrThrow (file, mo);
} }
void writeIcon (const File& file, const Image& im) const
{
if (im.isValid())
{
createDirectoryOrThrow (file.getParentDirectory());
PNGImageFormat png;
MemoryOutputStream mo;
if (! png.writeImageToStream (im, mo))
throw SaveError ("Can't generate Android icon file");
overwriteFileIfDifferentOrThrow (file, mo);
}
}
void writeStringsFile (const File& file) const void writeStringsFile (const File& file) const
{ {
XmlElement strings ("resources"); XmlElement strings ("resources");
@@ -751,19 +796,6 @@ private:
writeXmlOrThrow (strings, file, "utf-8", 100); writeXmlOrThrow (strings, file, "utf-8", 100);
} }
void initialiseDependencyPathValues()
{
sdkPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::androidSDKPath),
Ids::androidSDKPath,
TargetOS::getThisOS())));
ndkPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::androidNDKPath),
Ids::androidNDKPath,
TargetOS::getThisOS())));
}
//============================================================================== //==============================================================================
Value sdkPath, ndkPath;
JUCE_DECLARE_NON_COPYABLE (AndroidProjectExporter)
JUCE_DECLARE_NON_COPYABLE (AndroidAntProjectExporter)
}; };

+ 616
- 0
extras/Introjucer/Source/Project Saving/jucer_ProjectExport_AndroidStudio.h View File

@@ -0,0 +1,616 @@
/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2015 - ROLI Ltd.
Permission is granted to use this software under the terms of either:
a) the GPL v2 (or any later version)
b) the Affero GPL v3
Details of these licenses can be found at: www.gnu.org/licenses
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.juce.com for more information.
==============================================================================
*/
class AndroidStudioProjectExporter : public AndroidProjectExporterBase
{
public:
//==============================================================================
static const char* getName() { return "Android Studio"; }
static const char* getValueTreeTypeName() { return "ANDROIDSTUDIO"; }
static AndroidStudioProjectExporter* createForSettings (Project& project, const ValueTree& settings)
{
if (settings.hasType (getValueTreeTypeName()))
return new AndroidStudioProjectExporter (project, settings);
return nullptr;
}
//==============================================================================
AndroidStudioProjectExporter (Project& p, const ValueTree& t)
: AndroidProjectExporterBase (p, t),
androidStudioExecutable (findAndroidStudioExecutable())
{
name = getName();
if (getTargetLocationString().isEmpty())
getTargetLocationValue() = getDefaultBuildsRootFolder() + "AndroidStudio";
}
//==============================================================================
bool canLaunchProject() override
{
return androidStudioExecutable.exists();
}
bool launchProject() override
{
if (! androidStudioExecutable.exists())
{
jassertfalse;
return false;
}
const File targetFolder (getTargetFolder());
return androidStudioExecutable.startAsProcess (targetFolder.getFullPathName());
}
void createExporterProperties (PropertyListBuilder& props) override
{
AndroidProjectExporterBase::createExporterProperties (props);
}
void create (const OwnedArray<LibraryModule>& modules) const override
{
const File targetFolder (getTargetFolder());
targetFolder.deleteRecursively();
{
const String package (getActivityClassPackage());
const String path (package.replaceCharacter ('.', File::separator));
const File javaTarget (targetFolder.getChildFile ("app/src/main/java").getChildFile (path));
copyActivityJavaFiles (modules, javaTarget, package);
}
writeSettingsDotGradle (targetFolder);
writeLocalDotProperties (targetFolder);
writeBuildDotGradleRoot (targetFolder);
writeBuildDotGradleApp (targetFolder);
writeGradleWrapperProperties (targetFolder);
writeAndroidManifest (targetFolder);
writeStringsXML (targetFolder);
writeAppIcons (targetFolder);
createSourceSymlinks (targetFolder);
}
static File findAndroidStudioExecutable()
{
#if JUCE_WINDOWS
const File defaultInstallation ("C:\\Program Files\\Android\\Android Studio\\bin");
if (defaultInstallation.exists())
{
{
const File studio64 = defaultInstallation.getChildFile ("studio64.exe");
if (studio64.existsAsFile())
return studio64;
}
{
const File studio = defaultInstallation.getChildFile ("studio.exe");
if (studio.existsAsFile())
return studio;
}
}
#elif JUCE_MAC
const File defaultInstallation ("/Applications/Android Studio.app");
if (defaultInstallation.exists())
return defaultInstallation;
#endif
return File::nonexistent;
}
protected:
//==============================================================================
class AndroidStudioBuildConfiguration : public BuildConfiguration
{
public:
AndroidStudioBuildConfiguration (Project& p, const ValueTree& settings)
: BuildConfiguration (p, settings)
{
if (getArchitectures().isEmpty())
getArchitecturesValue() = "armeabi armeabi-v7a";
}
Value getArchitecturesValue() { return getValue (Ids::androidArchitectures); }
String getArchitectures() const { return config [Ids::androidArchitectures]; }
var getDefaultOptimisationLevel() const override { return var ((int) (isDebug() ? gccO0 : gccO3)); }
void createConfigProperties (PropertyListBuilder& props) override
{
addGCCOptimisationProperty (props);
props.add (new TextPropertyComponent (getArchitecturesValue(), "Architectures", 256, false),
"A list of the ARM architectures to build (for a fat binary).");
}
};
BuildConfiguration::Ptr createBuildConfig (const ValueTree& v) const override
{
return new AndroidStudioBuildConfiguration (project, v);
}
private:
static void createSymboicLinkAndCreateParentFolders (const File& originalFile, const File& linkFile)
{
{
const File linkFileParentDirectory (linkFile.getParentDirectory());
// this will recursively creative the parent directories for the file
// without this, the symlink would fail because it doesn't automatically create
// the folders if they don't exist
if (! linkFileParentDirectory.createDirectory())
throw SaveError (String ("Could not create directory ") + linkFileParentDirectory.getFullPathName());
}
if (! originalFile.createSymbolicLink (linkFile, true))
throw SaveError (String ("Failed to create symlink from ")
+ linkFile.getFullPathName() + " to "
+ originalFile.getFullPathName() + "!");
}
void makeSymlinksForGroup (const Project::Item& group, const File& targetFolder) const
{
if (! group.isGroup())
{
throw SaveError ("makeSymlinksForGroup was called with something other than a group!");
}
for (int i = 0; i < group.getNumChildren(); ++i)
{
const Project::Item& projectItem = group.getChild (i);
if (projectItem.isGroup())
{
makeSymlinksForGroup (projectItem, targetFolder.getChildFile (projectItem.getName()));
}
else if (projectItem.shouldBeAddedToTargetProject()) // must be a file then
{
const File originalFile (projectItem.getFile());
const File targetFile (targetFolder.getChildFile (originalFile.getFileName()));
createSymboicLinkAndCreateParentFolders (originalFile, targetFile);
}
}
}
void createSourceSymlinks (const File& folder) const
{
const File targetFolder (folder.getChildFile ("app/src/main/jni"));
// here we make symlinks to only to files included in the groups inside the project
// this is because Android Studio does not have a concept of groups and just uses
// the file system layout to determine what's to be compiled
{
const Array<Project::Item>& groups = getAllGroups();
for (int i = 0; i < groups.size(); ++i)
{
const Project::Item projectItem (groups.getReference (i));
const String projectItemName (projectItem.getName());
if (projectItem.isGroup())
makeSymlinksForGroup (projectItem, projectItemName == "Juce Modules" ? targetFolder.getChildFile ("JuceModules") : targetFolder);
}
}
}
void writeAppIcons (const File& folder) const
{
writeIcons (folder.getChildFile ("app/src/main/res/"));
}
void writeSettingsDotGradle (const File& folder) const
{
MemoryOutputStream memoryOutputStream;
memoryOutputStream << "include ':app'";
overwriteFileIfDifferentOrThrow (folder.getChildFile ("settings.gradle"), memoryOutputStream);
}
static String sanitisePath (String path)
{
if (path.startsWith ("~"))
{
const String homeFolder (File::getSpecialLocation (File::SpecialLocationType::userHomeDirectory).getFullPathName());
path = path.replaceSection (0, 1, homeFolder);
}
return path.replace ("\\", "\\\\");
}
void writeLocalDotProperties (const File& folder) const
{
MemoryOutputStream memoryOutputStream;
memoryOutputStream << "ndk.dir=" << sanitisePath (getNDKPathString()) << newLine
<< "sdk.dir=" << sanitisePath (getSDKPathString());
overwriteFileIfDifferentOrThrow (folder.getChildFile ("local.properties"), memoryOutputStream);
}
void writeGradleWrapperProperties (const File& folder) const
{
MemoryOutputStream memoryOutputStream;
memoryOutputStream << "distributionUrl=https\\://services.gradle.org/distributions/gradle-2.6-all.zip";
overwriteFileIfDifferentOrThrow (folder.getChildFile ("gradle/wrapper/gradle-wrapper.properties"), memoryOutputStream);
}
void writeBuildDotGradleRoot (const File& folder) const
{
MemoryOutputStream memoryOutputStream;
const String indent = getIndentationString();
// this is needed to make sure the correct version of
// the gradle build tools is available
// otherwise, the user will get an error about
// com.android.tools.something not being available
memoryOutputStream << "buildscript {" << newLine
<< indent << "repositories {" << newLine
<< indent << indent << "jcenter()" << newLine
<< indent << "}" << newLine
<< indent << "dependencies {" << newLine
<< indent << indent << "classpath 'com.android.tools.build:gradle-experimental:0.3.0-alpha7'" << newLine
<< indent << "}" << newLine
<< "}" << newLine
<< newLine
<< "allprojects {" << newLine
<< indent << "repositories {" << newLine
<< indent << indent << "jcenter()" << newLine
<< indent << "}" << newLine
<< "}";
overwriteFileIfDifferentOrThrow (folder.getChildFile ("build.gradle"), memoryOutputStream);
}
void writeStringsXML (const File& folder) const
{
XmlElement strings ("resources");
XmlElement* resourceName = strings.createNewChildElement ("string");
resourceName->setAttribute ("name", "app_name");
resourceName->addTextElement (projectName);
writeXmlOrThrow (strings, folder.getChildFile ("app/src/main/res/values/string.xml"), "utf-8", 100, true);
}
void writeAndroidManifest (const File& folder) const
{
ScopedPointer<XmlElement> manifest (createManifestXML());
writeXmlOrThrow (*manifest, folder.getChildFile ("app/src/main/AndroidManifest.xml"), "utf-8", 100, true);
}
String createModelDotAndroid (const String& indent, const String& minimumSDKVersion, const String& bundleIdentifier) const
{
String result;
result << "android {" << newLine
<< indent << "compileSdkVersion = " << minimumSDKVersion << newLine
<< indent << "buildToolsVersion = \"" << "23.0.1" << "\"" << newLine
<< indent << "defaultConfig.with {" << newLine
<< indent << indent << "applicationId = \"" << bundleIdentifier.toLowerCase() << "\"" << newLine
<< indent << indent << "minSdkVersion.apiLevel = 11" << newLine
<< indent << indent << "targetSdkVersion.apiLevel = " << minimumSDKVersion << newLine
<< indent << "}" << newLine
<< "}" << newLine;
return result;
}
String createModelDotCompileOptions (const String& indent) const
{
String result;
result << "compileOptions.with {" << newLine
<< indent << "sourceCompatibility = JavaVersion.VERSION_1_7" << newLine
<< indent << indent << "targetCompatibility = JavaVersion.VERSION_1_7" << newLine
<< "}" << newLine;
return result;
}
String createModelDotAndroidSources (const String& indent) const
{
String result;
result << "android.sources {" << newLine
<< indent << "main {" << newLine
<< indent << indent << "jni {" << newLine
<< indent << indent << indent << "source {" << newLine
<< indent << indent << indent << indent << "exclude \"**/JuceModules/\"" << newLine
<< indent << indent << indent << "}" << newLine
<< indent << indent << "}" << newLine
<< indent << "}" << newLine
<< "}" << newLine;
return result;
}
StringArray getCPPFlags() const
{
StringArray result;
result.add ("\"-fsigned-char\"");
result.add ("\"-fexceptions\"");
result.add ("\"-frtti\"");
if (isCPP11Enabled())
result.add ("\"-std=gnu++11\"");
// preprocessor definitions
{
StringPairArray preprocessorDefinitions = getAllPreprocessorDefs();
preprocessorDefinitions.set ("JUCE_ANDROID", "1");
preprocessorDefinitions.set ("JUCE_ANDROID_ACTIVITY_CLASSNAME", getJNIActivityClassName().replaceCharacter ('/', '_'));
preprocessorDefinitions.set ("JUCE_ANDROID_ACTIVITY_CLASSPATH", "\\\"" + getActivityClassPath().replaceCharacter('.', '/') + "\\\"");
const StringArray& keys = preprocessorDefinitions.getAllKeys();
for (int i = 0; i < keys.size(); ++i)
result.add (String ("\"-D") + keys[i] + String ("=") + preprocessorDefinitions[keys[i]] + "\"");
}
// include paths
result.add ("\"-I${project.rootDir}/app\".toString()");
result.add ("\"-I${ext.juceRootDir}\".toString()");
result.add ("\"-I${ext.juceModuleDir}\".toString()");
{
Array<RelativePath> cppFiles;
const Array<Project::Item>& groups = getAllGroups();
struct Predicate
{
bool operator() (const Project::Item& projectItem) const { return projectItem.shouldBeAddedToTargetProject(); }
};
for (int i = 0; i < groups.size(); ++i)
findAllProjectItemsWithPredicate (groups.getReference (i), cppFiles, Predicate());
for (int i = 0; i < cppFiles.size(); ++i)
{
const RelativePath absoluteSourceFile (cppFiles.getReference (i).rebased (getTargetFolder(),
project.getProjectFolder(),
RelativePath::projectFolder));
const String absoluteIncludeFolder (sanitisePath (project.getProjectFolder().getFullPathName() + "/"
+ absoluteSourceFile.toUnixStyle().upToLastOccurrenceOf ("/", false, false)));
result.addIfNotAlreadyThere ("\"-I" + absoluteIncludeFolder + "\".toString()");
}
}
return result;
}
StringArray getLDLibs() const
{
StringArray result;
result.add ("android");
result.add ("EGL");
result.add ("GLESv2");
result.add ("log");
result.addArray (StringArray::fromTokens(getExternalLibrariesString(), ";", ""));
return result;
}
String createModelDotAndroidNDK (const String& indent) const
{
String result;
result << "android.ndk {" << newLine
<< indent << "moduleName = \"juce_jni\"" << newLine
<< indent << "stl = \"gnustl_static\"" << newLine
<< indent << "toolchainVersion = 4.9" << newLine
<< indent << "ext {" << newLine
<< indent << indent << "juceRootDir = \"" << "${project.rootDir}/../../../../" << "\".toString()" << newLine
<< indent << indent << "juceModuleDir = \"" << "${juceRootDir}/modules" << "\".toString()" << newLine
<< indent << "}" << newLine;
// CPP flags
{
StringArray cppFlags (getCPPFlags());
for (int i = 0; i < cppFlags.size(); ++i)
result << indent << "cppFlags += " << cppFlags[i] << newLine;
}
// libraries
{
StringArray libraries (getLDLibs());
result << indent << "ldLibs += [";
for (int i = 0; i < libraries.size(); ++i)
{
result << "\"" << libraries[i] << "\"";
if (i + 1 != libraries.size())
result << ", ";
}
result << "]" << newLine;
}
result << "}" << newLine;
return result;
}
String getGradleCPPFlags (const String& indent, const ConstConfigIterator& config) const
{
String result;
StringArray rootFlags;
StringArray ndkFlags;
if (config->isDebug())
{
ndkFlags.add ("debuggable = true");
ndkFlags.add ("cppFlags += \"-g\"");
ndkFlags.add ("cppFlags += \"-DDEBUG=1\"");
ndkFlags.add ("cppFlags += \"-D_DEBUG=1\"");
}
else
{
rootFlags.add ("minifyEnabled = true");
rootFlags.add ("proguardFiles += 'proguard-android-optimize.txt'");
ndkFlags.add ("cppFlags += \"-DNDEBUG=1\"");
}
{
StringArray extraFlags (StringArray::fromTokens (getExtraCompilerFlagsString(), " ", ""));
for (int i = 0; extraFlags.size(); ++i)
ndkFlags.add (String ("cppFlags += \"") + extraFlags[i] + "\"");
}
// there appears to be an issue with build types that have a name other than
// "debug" or "release". Apparently this is hard coded in Android Studio ...
{
const String configName (config->getName());
if (configName != "Debug" && configName != "Release")
throw SaveError ("Build configurations other than Debug and Release are not yet support for Android Studio");
result << configName.toLowerCase() << " {" << newLine;
}
for (int i = 0; i < rootFlags.size(); ++i)
result << indent << rootFlags[i] << newLine;
result << indent << "ndk.with {" << newLine;
for (int i = 0; i < ndkFlags.size(); ++i)
result << indent << indent << ndkFlags[i] << newLine;
result << indent << "}" << newLine
<< "}" << newLine;
return result;
}
String createModelDotAndroidDotBuildTypes (const String& indent) const
{
String result;
result << "android.buildTypes {" << newLine;
for (ConstConfigIterator config (*this); config.next();)
result << CodeHelpers::indent (getGradleCPPFlags (indent, config), indent.length(), true);
result << "}";
return result;
}
String createModelDotAndroidDotProductFlavors (const String& indent) const
{
String result;
result << "android.productFlavors {" << newLine;
// TODO! - this needs to be changed so that it generates seperate flags for debug and release ...
// at present, it just generates all ABIs for all build types
StringArray architectures (StringArray::fromTokens (getABIs<AndroidStudioBuildConfiguration> (true), " ", ""));
architectures.mergeArray (StringArray::fromTokens (getABIs<AndroidStudioBuildConfiguration> (false), " ", ""));
if (architectures.size() == 0)
throw SaveError ("Can't build for no architectures!");
for (int i = 0; i < architectures.size(); ++i)
{
String architecture (architectures[i].trim());
if (architecture.isEmpty())
continue;
result << indent << "create(\"" << architecture << "\") {" << newLine
<< indent << indent << "ndk.abiFilters += \"" << architecture << "\"" << newLine
<< indent << "}" << newLine;
}
result << "}" << newLine;
return result;
}
void writeBuildDotGradleApp (const File& folder) const
{
MemoryOutputStream memoryOutputStream;
const String indent = getIndentationString();
const String minimumSDKVersion = getMinimumSDKVersionString();
const String bundleIdentifier = project.getBundleIdentifier().toString();
memoryOutputStream << "apply plugin: 'com.android.model.application'" << newLine
<< newLine
<< "model {" << newLine
<< CodeHelpers::indent (createModelDotAndroid (indent, minimumSDKVersion, bundleIdentifier), indent.length(), true)
<< newLine
<< CodeHelpers::indent (createModelDotCompileOptions (indent), indent.length(), true)
<< newLine
<< CodeHelpers::indent (createModelDotAndroidSources (indent), indent.length(), true)
<< newLine
<< CodeHelpers::indent (createModelDotAndroidNDK (indent), indent.length(), true)
<< newLine
<< CodeHelpers::indent (createModelDotAndroidDotBuildTypes (indent), indent.length(), true)
<< newLine
<< CodeHelpers::indent (createModelDotAndroidDotProductFlavors (indent), indent.length(), true)
<< "}";
overwriteFileIfDifferentOrThrow (folder.getChildFile ("app/build.gradle"), memoryOutputStream);
}
static const char* getIndentationString() noexcept
{
return " ";
}
const File androidStudioExecutable;
JUCE_DECLARE_NON_COPYABLE (AndroidStudioProjectExporter)
};

+ 28
- 23
extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp View File

@@ -29,6 +29,7 @@
#include "jucer_ProjectExport_MSVC.h" #include "jucer_ProjectExport_MSVC.h"
#include "jucer_ProjectExport_XCode.h" #include "jucer_ProjectExport_XCode.h"
#include "jucer_ProjectExport_Android.h" #include "jucer_ProjectExport_Android.h"
#include "jucer_ProjectExport_AndroidStudio.h"
#include "jucer_ProjectExport_CodeBlocks.h" #include "jucer_ProjectExport_CodeBlocks.h"
//============================================================================== //==============================================================================
@@ -52,7 +53,8 @@ Array<ProjectExporter::ExporterTypeInfo> ProjectExporter::getExporterTypes()
addType (types, MSVCProjectExporterVC2008::getName(), BinaryData::projectIconVisualStudio_png, BinaryData::projectIconVisualStudio_pngSize); addType (types, MSVCProjectExporterVC2008::getName(), BinaryData::projectIconVisualStudio_png, BinaryData::projectIconVisualStudio_pngSize);
addType (types, MSVCProjectExporterVC2005::getName(), BinaryData::projectIconVisualStudio_png, BinaryData::projectIconVisualStudio_pngSize); addType (types, MSVCProjectExporterVC2005::getName(), BinaryData::projectIconVisualStudio_png, BinaryData::projectIconVisualStudio_pngSize);
addType (types, MakefileProjectExporter::getNameLinux(), BinaryData::projectIconLinuxMakefile_png, BinaryData::projectIconLinuxMakefile_pngSize); addType (types, MakefileProjectExporter::getNameLinux(), BinaryData::projectIconLinuxMakefile_png, BinaryData::projectIconLinuxMakefile_pngSize);
addType (types, AndroidProjectExporter::getNameAndroid(), BinaryData::projectIconAndroid_png, BinaryData::projectIconAndroid_pngSize);
addType (types, AndroidStudioProjectExporter::getName(), BinaryData::projectIconAndroid_png, BinaryData::projectIconAndroid_pngSize);
addType (types, AndroidAntProjectExporter::getName(), BinaryData::projectIconAndroid_png, BinaryData::projectIconAndroid_pngSize);
addType (types, CodeBlocksProjectExporter::getNameWindows(), BinaryData::projectIconCodeblocks_png, BinaryData::projectIconCodeblocks_pngSize); addType (types, CodeBlocksProjectExporter::getNameWindows(), BinaryData::projectIconCodeblocks_png, BinaryData::projectIconCodeblocks_pngSize);
addType (types, CodeBlocksProjectExporter::getNameLinux(), BinaryData::projectIconCodeblocks_png, BinaryData::projectIconCodeblocks_pngSize); addType (types, CodeBlocksProjectExporter::getNameLinux(), BinaryData::projectIconCodeblocks_png, BinaryData::projectIconCodeblocks_pngSize);
@@ -65,18 +67,19 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int
switch (index) switch (index)
{ {
case 0: exp = new XCodeProjectExporter (project, ValueTree (XCodeProjectExporter ::getValueTreeTypeName (false)), false); break;
case 1: exp = new XCodeProjectExporter (project, ValueTree (XCodeProjectExporter ::getValueTreeTypeName (true)), true); break;
case 2: exp = new MSVCProjectExporterVC2015 (project, ValueTree (MSVCProjectExporterVC2015::getValueTreeTypeName())); break;
case 3: exp = new MSVCProjectExporterVC2013 (project, ValueTree (MSVCProjectExporterVC2013::getValueTreeTypeName())); break;
case 4: exp = new MSVCProjectExporterVC2012 (project, ValueTree (MSVCProjectExporterVC2012::getValueTreeTypeName())); break;
case 5: exp = new MSVCProjectExporterVC2010 (project, ValueTree (MSVCProjectExporterVC2010::getValueTreeTypeName())); break;
case 6: exp = new MSVCProjectExporterVC2008 (project, ValueTree (MSVCProjectExporterVC2008::getValueTreeTypeName())); break;
case 7: exp = new MSVCProjectExporterVC2005 (project, ValueTree (MSVCProjectExporterVC2005::getValueTreeTypeName())); break;
case 8: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break;
case 9: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break;
case 10: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter::getValueTreeTypeName (CodeBlocksProjectExporter::windowsTarget)), CodeBlocksProjectExporter::windowsTarget); break;
case 11: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter::getValueTreeTypeName (CodeBlocksProjectExporter::linuxTarget)), CodeBlocksProjectExporter::linuxTarget); break;
case 0: exp = new XCodeProjectExporter (project, ValueTree (XCodeProjectExporter ::getValueTreeTypeName (false)), false); break;
case 1: exp = new XCodeProjectExporter (project, ValueTree (XCodeProjectExporter ::getValueTreeTypeName (true)), true); break;
case 2: exp = new MSVCProjectExporterVC2015 (project, ValueTree (MSVCProjectExporterVC2015 ::getValueTreeTypeName())); break;
case 3: exp = new MSVCProjectExporterVC2013 (project, ValueTree (MSVCProjectExporterVC2013 ::getValueTreeTypeName())); break;
case 4: exp = new MSVCProjectExporterVC2012 (project, ValueTree (MSVCProjectExporterVC2012 ::getValueTreeTypeName())); break;
case 5: exp = new MSVCProjectExporterVC2010 (project, ValueTree (MSVCProjectExporterVC2010 ::getValueTreeTypeName())); break;
case 6: exp = new MSVCProjectExporterVC2008 (project, ValueTree (MSVCProjectExporterVC2008 ::getValueTreeTypeName())); break;
case 7: exp = new MSVCProjectExporterVC2005 (project, ValueTree (MSVCProjectExporterVC2005 ::getValueTreeTypeName())); break;
case 8: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break;
case 9: exp = new AndroidStudioProjectExporter (project, ValueTree (AndroidStudioProjectExporter ::getValueTreeTypeName())); break;
case 10: exp = new AndroidAntProjectExporter (project, ValueTree (AndroidAntProjectExporter ::getValueTreeTypeName())); break;
case 11: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::windowsTarget)), CodeBlocksProjectExporter::windowsTarget); break;
case 12: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::linuxTarget)), CodeBlocksProjectExporter::linuxTarget); break;
default: jassertfalse; return 0; default: jassertfalse; return 0;
} }
@@ -117,16 +120,17 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const Str
ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueTree& settings) ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueTree& settings)
{ {
ProjectExporter* exp = MSVCProjectExporterVC2005::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2008::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2010::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2012::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2013::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2015::createForSettings (project, settings);
if (exp == nullptr) exp = XCodeProjectExporter ::createForSettings (project, settings);
if (exp == nullptr) exp = MakefileProjectExporter ::createForSettings (project, settings);
if (exp == nullptr) exp = AndroidProjectExporter ::createForSettings (project, settings);
if (exp == nullptr) exp = CodeBlocksProjectExporter::createForSettings (project, settings);
ProjectExporter* exp = MSVCProjectExporterVC2005 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2008 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2010 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2012 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2013 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2015 ::createForSettings (project, settings);
if (exp == nullptr) exp = XCodeProjectExporter ::createForSettings (project, settings);
if (exp == nullptr) exp = MakefileProjectExporter ::createForSettings (project, settings);
if (exp == nullptr) exp = AndroidStudioProjectExporter ::createForSettings (project, settings);
if (exp == nullptr) exp = AndroidAntProjectExporter ::createForSettings (project, settings);
if (exp == nullptr) exp = CodeBlocksProjectExporter ::createForSettings (project, settings);
jassert (exp != nullptr); jassert (exp != nullptr);
return exp; return exp;
@@ -152,6 +156,7 @@ bool ProjectExporter::canProjectBeLaunched (Project* project)
// (this doesn't currently launch.. not really sure what it would do on linux) // (this doesn't currently launch.. not really sure what it would do on linux)
//MakefileProjectExporter::getValueTreeTypeName(), //MakefileProjectExporter::getValueTreeTypeName(),
#endif #endif
AndroidStudioProjectExporter::getValueTreeTypeName(),
nullptr nullptr
}; };


+ 2
- 0
extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.h View File

@@ -44,6 +44,8 @@ public:
String name; String name;
const void* iconData; const void* iconData;
int iconDataSize; int iconDataSize;
Image getIcon() const { return ImageCache::getFromMemory (iconData, iconDataSize); }
}; };
static StringArray getExporterNames(); static StringArray getExporterNames();


+ 3
- 19
extras/Introjucer/Source/Project/jucer_ConfigTree_Base.h View File

@@ -174,6 +174,7 @@ public:
exportersTree.addListener (this); exportersTree.addListener (this);
} }
bool isRoot() const override { return true; }
bool isProjectSettings() const override { return true; } bool isProjectSettings() const override { return true; }
String getRenamingName() const override { return getDisplayName(); } String getRenamingName() const override { return getDisplayName(); }
String getDisplayName() const override { return project.getTitle(); } String getDisplayName() const override { return project.getTitle(); }
@@ -197,25 +198,8 @@ public:
void showPopupMenu() override void showPopupMenu() override
{ {
PopupMenu menu;
const StringArray exporters (ProjectExporter::getExporterNames());
for (int i = 0; i < exporters.size(); ++i)
menu.addItem (i + 1, "Create a new " + exporters[i] + " target");
launchPopupMenu (menu);
}
void handlePopupMenuResult (int resultCode) override
{
if (resultCode > 0)
{
String exporterName (ProjectExporter::getExporterNames() [resultCode - 1]);
if (exporterName.isNotEmpty())
project.addNewExporter (exporterName);
}
if (ProjectContentComponent* pcc = getProjectContentComponent())
pcc->showNewExporterMenu();
} }
bool isInterestedInDragSource (const DragAndDropTarget::SourceDetails& dragSourceDetails) override bool isInterestedInDragSource (const DragAndDropTarget::SourceDetails& dragSourceDetails) override


+ 28
- 3
extras/Introjucer/Source/Project/jucer_ConfigTree_Exporter.h View File

@@ -27,12 +27,12 @@ class ExporterItem : public ConfigTreeItemBase
public: public:
ExporterItem (Project& p, ProjectExporter* e, int index) ExporterItem (Project& p, ProjectExporter* e, int index)
: project (p), exporter (e), configListTree (exporter->getConfigurations()), : project (p), exporter (e), configListTree (exporter->getConfigurations()),
exporterIndex (index)
exporterIndex (index), icon (createIcon (exporter->getName()))
{ {
configListTree.addListener (this); configListTree.addListener (this);
jassert (exporter != nullptr);
} }
int getItemHeight() const override { return 22; }
bool canBeSelected() const override { return true; } bool canBeSelected() const override { return true; }
bool mightContainSubItems() override { return exporter->getNumConfigurations() > 0; } bool mightContainSubItems() override { return exporter->getNumConfigurations() > 0; }
String getUniqueName() const override { return "exporter_" + String (exporterIndex); } String getUniqueName() const override { return "exporter_" + String (exporterIndex); }
@@ -40,9 +40,18 @@ public:
String getDisplayName() const override { return exporter->getName(); } String getDisplayName() const override { return exporter->getName(); }
void setName (const String&) override {} void setName (const String&) override {}
bool isMissing() override { return false; } bool isMissing() override { return false; }
Icon getIcon() const override { return Icon (getIcons().exporter, getContrastingColour (0.5f)); }
Icon getIcon() const override { return Icon(); }
void showDocument() override { showSettingsPage (new SettingsComp (exporter)); } void showDocument() override { showSettingsPage (new SettingsComp (exporter)); }
void paintIcon (Graphics& g, Rectangle<int> area) override
{
g.setColour (Colours::black);
g.drawImageWithin (icon, area.getX(), area.getY(),
area.getWidth(), area.getHeight(),
RectanglePlacement::centred, false);
}
void deleteItem() override void deleteItem() override
{ {
if (AlertWindow::showOkCancelBox (AlertWindow::WarningIcon, "Delete Exporter", if (AlertWindow::showOkCancelBox (AlertWindow::WarningIcon, "Delete Exporter",
@@ -122,6 +131,22 @@ private:
ScopedPointer<ProjectExporter> exporter; ScopedPointer<ProjectExporter> exporter;
ValueTree configListTree; ValueTree configListTree;
int exporterIndex; int exporterIndex;
Image icon;
static Image createIcon (const String& exporterName)
{
Array<ProjectExporter::ExporterTypeInfo> types (ProjectExporter::getExporterTypes());
for (int i = 0; i < types.size(); ++i)
{
const ProjectExporter::ExporterTypeInfo& type = types.getReference (i);
if (type.name == exporterName)
return type.getIcon();
}
return Image();
}
//============================================================================== //==============================================================================
class SettingsComp : public Component class SettingsComp : public Component


+ 1
- 0
extras/Introjucer/Source/Project/jucer_ConfigTree_Modules.h View File

@@ -300,6 +300,7 @@ public:
moduleListTree.addListener (this); moduleListTree.addListener (this);
} }
int getItemHeight() const override { return 22; }
bool isModulesList() const override { return true; } bool isModulesList() const override { return true; }
bool canBeSelected() const override { return true; } bool canBeSelected() const override { return true; }
bool mightContainSubItems() override { return true; } bool mightContainSubItems() override { return true; }


+ 1
- 0
extras/Introjucer/Source/Project/jucer_Project.h View File

@@ -105,6 +105,7 @@ public:
//============================================================================== //==============================================================================
File getGeneratedCodeFolder() const { return getFile().getSiblingFile ("JuceLibraryCode"); } File getGeneratedCodeFolder() const { return getFile().getSiblingFile ("JuceLibraryCode"); }
File getSourceFilesFolder() const { return getProjectFolder().getChildFile ("Source"); }
File getLocalModulesFolder() const { return getGeneratedCodeFolder().getChildFile ("modules"); } File getLocalModulesFolder() const { return getGeneratedCodeFolder().getChildFile ("modules"); }
File getLocalModuleFolder (const String& moduleID) const { return getLocalModulesFolder().getChildFile (moduleID); } File getLocalModuleFolder (const String& moduleID) const { return getLocalModulesFolder().getChildFile (moduleID); }
File getAppIncludeFile() const { return getGeneratedCodeFolder().getChildFile (getJuceSourceHFilename()); } File getAppIncludeFile() const { return getGeneratedCodeFolder().getChildFile (getJuceSourceHFilename()); }


+ 82
- 22
extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp View File

@@ -64,6 +64,11 @@ public:
#if JUCE_MAC || JUCE_WINDOWS #if JUCE_MAC || JUCE_WINDOWS
ApplicationCommandManager& commandManager = IntrojucerApp::getCommandManager(); ApplicationCommandManager& commandManager = IntrojucerApp::getCommandManager();
addAndMakeVisible (createExporterButton);
createExporterButton.setCommandToTrigger (&commandManager, CommandIDs::createNewExporter, true);
createExporterButton.setButtonText (commandManager.getNameOfCommand (CommandIDs::createNewExporter));
createExporterButton.setColour (TextButton::buttonColourId, Colours::white.withAlpha (0.5f));
addAndMakeVisible (openProjectButton); addAndMakeVisible (openProjectButton);
openProjectButton.setCommandToTrigger (&commandManager, CommandIDs::openInIDE, true); openProjectButton.setCommandToTrigger (&commandManager, CommandIDs::openInIDE, true);
openProjectButton.setButtonText (commandManager.getNameOfCommand (CommandIDs::openInIDE)); openProjectButton.setButtonText (commandManager.getNameOfCommand (CommandIDs::openInIDE));
@@ -87,20 +92,32 @@ public:
if (openProjectButton.isVisible()) if (openProjectButton.isVisible())
openProjectButton.setBounds (r.removeFromBottom (30).reduced (16, 4)); openProjectButton.setBounds (r.removeFromBottom (30).reduced (16, 4));
if (createExporterButton.isVisible())
{
r.removeFromBottom (10);
createExporterButton.setBounds (r.removeFromBottom (30).reduced (16, 4));
}
tree.setBounds (r); tree.setBounds (r);
} }
static void reselect (TreeViewItem& item)
{
item.setSelected (false, true);
item.setSelected (true, true);
}
void showProjectSettings() void showProjectSettings()
{ {
if (ConfigTreeItemTypes::ConfigTreeItemBase* root = dynamic_cast<ConfigTreeItemTypes::ConfigTreeItemBase*> (rootItem.get())) if (ConfigTreeItemTypes::ConfigTreeItemBase* root = dynamic_cast<ConfigTreeItemTypes::ConfigTreeItemBase*> (rootItem.get()))
if (root->isProjectSettings()) if (root->isProjectSettings())
root->setSelected (true, true);
reselect (*root);
} }
void showModules() void showModules()
{ {
if (ConfigTreeItemTypes::ConfigTreeItemBase* mods = getModulesItem()) if (ConfigTreeItemTypes::ConfigTreeItemBase* mods = getModulesItem())
mods->setSelected (true, true);
reselect (*mods);
} }
void showModule (const String& moduleID) void showModule (const String& moduleID)
@@ -112,11 +129,11 @@ public:
for (int i = mods->getNumSubItems(); --i >= 0;) for (int i = mods->getNumSubItems(); --i >= 0;)
if (ConfigTreeItemTypes::ModuleItem* m = dynamic_cast<ConfigTreeItemTypes::ModuleItem*> (mods->getSubItem (i))) if (ConfigTreeItemTypes::ModuleItem* m = dynamic_cast<ConfigTreeItemTypes::ModuleItem*> (mods->getSubItem (i)))
if (m->moduleID == moduleID) if (m->moduleID == moduleID)
m->setSelected (true, true);
reselect (*m);
} }
} }
TextButton openProjectButton, saveAndOpenButton;
TextButton createExporterButton, openProjectButton, saveAndOpenButton;
private: private:
ConfigTreeItemTypes::ConfigTreeItemBase* getModulesItem() ConfigTreeItemTypes::ConfigTreeItemBase* getModulesItem()
@@ -134,6 +151,12 @@ private:
//============================================================================== //==============================================================================
struct LogoComponent : public Component struct LogoComponent : public Component
{ {
LogoComponent()
{
ScopedPointer<XmlElement> svg (XmlDocument::parse (BinaryData::background_logo_svg));
logo = Drawable::createFromSVG (*svg);
}
void paint (Graphics& g) void paint (Graphics& g)
{ {
g.setColour (findColour (mainBackgroundColourId).contrasting (0.3f)); g.setColour (findColour (mainBackgroundColourId).contrasting (0.3f));
@@ -141,11 +164,10 @@ struct LogoComponent : public Component
Rectangle<int> r (getLocalBounds()); Rectangle<int> r (getLocalBounds());
g.setFont (15.0f); g.setFont (15.0f);
g.drawFittedText (getVersionInfo(), r.removeFromBottom (50), Justification::centred, 3);
g.drawFittedText (getVersionInfo(), r.removeFromBottom (50), Justification::centredBottom, 3);
const Path& logo = getIcons().mainJuceLogo;
g.fillPath (logo, RectanglePlacement (RectanglePlacement::centred)
.getTransformToFit (logo.getBounds(), r.toFloat()));
logo->drawWithin (g, r.withTrimmedBottom (r.getHeight() / 4).toFloat(),
RectanglePlacement (RectanglePlacement::centred), 1.0f);
} }
static String getVersionInfo() static String getVersionInfo()
@@ -154,6 +176,8 @@ struct LogoComponent : public Component
+ newLine + newLine
+ IntrojucerApp::getApp().getVersionDescription(); + IntrojucerApp::getApp().getVersionDescription();
} }
ScopedPointer<Drawable> logo;
}; };
//============================================================================== //==============================================================================
@@ -618,6 +642,42 @@ void ProjectContentComponent::openInIDE (bool saveFirst)
} }
} }
static void newExporterMenuCallback (int result, ProjectContentComponent* comp)
{
if (comp != nullptr && result > 0)
{
if (Project* p = comp->getProject())
{
String exporterName (ProjectExporter::getExporterNames() [result - 1]);
if (exporterName.isNotEmpty())
p->addNewExporter (exporterName);
}
}
}
void ProjectContentComponent::showNewExporterMenu()
{
if (project != nullptr)
{
PopupMenu menu;
menu.addSectionHeader ("Create a new export target:");
Array<ProjectExporter::ExporterTypeInfo> exporters (ProjectExporter::getExporterTypes());
for (int i = 0; i < exporters.size(); ++i)
{
const ProjectExporter::ExporterTypeInfo& type = exporters.getReference(i);
menu.addItem (i + 1, type.name, true, false, type.getIcon());
}
menu.showMenuAsync (PopupMenu::Options(),
ModalCallbackFunction::forComponent (newExporterMenuCallback, this));
}
}
void ProjectContentComponent::deleteSelectedTreeItems() void ProjectContentComponent::deleteSelectedTreeItems()
{ {
if (TreePanelBase* const tree = dynamic_cast<TreePanelBase*> (treeViewTabs.getCurrentContentComponent())) if (TreePanelBase* const tree = dynamic_cast<TreePanelBase*> (treeViewTabs.getCurrentContentComponent()))
@@ -695,6 +755,7 @@ void ProjectContentComponent::getAllCommands (Array <CommandID>& commands)
CommandIDs::closeProject, CommandIDs::closeProject,
CommandIDs::openInIDE, CommandIDs::openInIDE,
CommandIDs::saveAndOpenInIDE, CommandIDs::saveAndOpenInIDE,
CommandIDs::createNewExporter,
CommandIDs::showFilePanel, CommandIDs::showFilePanel,
CommandIDs::showConfigPanel, CommandIDs::showConfigPanel,
CommandIDs::showProjectSettings, CommandIDs::showProjectSettings,
@@ -779,32 +840,29 @@ void ProjectContentComponent::getCommandInfo (const CommandID commandID, Applica
break; break;
case CommandIDs::openInIDE: case CommandIDs::openInIDE:
#if JUCE_MAC
result.setInfo ("Open in Xcode...",
#elif JUCE_WINDOWS
result.setInfo ("Open in Visual Studio...",
#else
result.setInfo ("Open as a Makefile...",
#endif
result.setInfo ("Open in IDE...",
"Launches the project in an external IDE", "Launches the project in an external IDE",
CommandCategories::general, 0); CommandCategories::general, 0);
result.setActive (ProjectExporter::canProjectBeLaunched (project)); result.setActive (ProjectExporter::canProjectBeLaunched (project));
break; break;
case CommandIDs::saveAndOpenInIDE: case CommandIDs::saveAndOpenInIDE:
#if JUCE_MAC
result.setInfo ("Save Project and Open in Xcode...",
#elif JUCE_WINDOWS
result.setInfo ("Save Project and Open in Visual Studio...",
#else
result.setInfo ("Save Project and Open as a Makefile...",
#endif
result.setInfo ("Save Project and Open in IDE...",
"Saves the project and launches it in an external IDE", "Saves the project and launches it in an external IDE",
CommandCategories::general, 0); CommandCategories::general, 0);
result.setActive (ProjectExporter::canProjectBeLaunched (project)); result.setActive (ProjectExporter::canProjectBeLaunched (project));
result.defaultKeypresses.add (KeyPress ('l', ModifierKeys::commandModifier | ModifierKeys::shiftModifier, 0)); result.defaultKeypresses.add (KeyPress ('l', ModifierKeys::commandModifier | ModifierKeys::shiftModifier, 0));
break; break;
case CommandIDs::createNewExporter:
result.setInfo ("Create New Exporter...",
"Creates a new exporter for a compiler type",
CommandCategories::general, 0);
result.setActive (project != nullptr);
break;
case CommandIDs::showFilePanel: case CommandIDs::showFilePanel:
result.setInfo ("Show File Panel", result.setInfo ("Show File Panel",
"Shows the tree of files for this project", "Shows the tree of files for this project",
@@ -901,6 +959,8 @@ bool ProjectContentComponent::perform (const InvocationInfo& info)
case CommandIDs::openInIDE: openInIDE (false); break; case CommandIDs::openInIDE: openInIDE (false); break;
case CommandIDs::saveAndOpenInIDE: openInIDE (true); break; case CommandIDs::saveAndOpenInIDE: openInIDE (true); break;
case CommandIDs::createNewExporter: showNewExporterMenu(); break;
case CommandIDs::deleteSelectedItem: deleteSelectedTreeItems(); break; case CommandIDs::deleteSelectedItem: deleteSelectedTreeItems(); break;
case CommandIDs::showTranslationTool: showTranslationTool(); break; case CommandIDs::showTranslationTool: showTranslationTool(); break;


+ 1
- 0
extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h View File

@@ -73,6 +73,7 @@ public:
void closeProject(); void closeProject();
void openInIDE (bool saveFirst); void openInIDE (bool saveFirst);
void openInIDE (int exporterIndex, bool saveFirst); void openInIDE (int exporterIndex, bool saveFirst);
void showNewExporterMenu();
void showFilesTab(); void showFilesTab();
void showConfigTab(); void showConfigTab();


+ 5
- 7
extras/Introjucer/Source/Project/jucer_ProjectTree_Base.h View File

@@ -38,14 +38,12 @@ public:
} }
//============================================================================== //==============================================================================
virtual bool isRoot() const { return false; }
virtual bool acceptsFileDrop (const StringArray& files) const = 0; virtual bool acceptsFileDrop (const StringArray& files) const = 0;
virtual bool acceptsDragItems (const OwnedArray<Project::Item>& selectedNodes) = 0; virtual bool acceptsDragItems (const OwnedArray<Project::Item>& selectedNodes) = 0;
//============================================================================== //==============================================================================
String getDisplayName() const override { return item.getName(); }
String getRenamingName() const override { return getDisplayName(); }
String getDisplayName() const override { return item.getName(); }
String getRenamingName() const override { return getDisplayName(); }
void setName (const String& newName) override void setName (const String& newName) override
{ {
@@ -55,10 +53,10 @@ public:
item.getNameValue() = newName; item.getNameValue() = newName;
} }
bool isMissing() override { return isFileMissing; }
virtual File getFile() const { return item.getFile(); }
bool isMissing() override { return isFileMissing; }
virtual File getFile() const { return item.getFile(); }
void deleteItem() override { item.removeItemFromProject(); }
void deleteItem() override { item.removeItemFromProject(); }
virtual void deleteAllSelectedItems() override virtual void deleteAllSelectedItems() override
{ {


+ 0
- 5
extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp View File

@@ -84,11 +84,6 @@ Font JucerTreeViewBase::getFont() const
return Font (getItemHeight() * 0.6f); return Font (getItemHeight() * 0.6f);
} }
float JucerTreeViewBase::getIconSize() const
{
return jmin (getItemHeight() - 4.0f, 18.0f);
}
void JucerTreeViewBase::paintOpenCloseButton (Graphics& g, const Rectangle<float>& area, Colour /*backgroundColour*/, bool isMouseOver) void JucerTreeViewBase::paintOpenCloseButton (Graphics& g, const Rectangle<float>& area, Colour /*backgroundColour*/, bool isMouseOver)
{ {
TreeViewItem::paintOpenCloseButton (g, area, getOwnerView()->findColour (mainBackgroundColourId), isMouseOver); TreeViewItem::paintOpenCloseButton (g, area, getOwnerView()->findColour (mainBackgroundColourId), isMouseOver);


+ 8
- 8
extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h View File

@@ -37,7 +37,7 @@ public:
~JucerTreeViewBase(); ~JucerTreeViewBase();
int getItemWidth() const override { return -1; } int getItemWidth() const override { return -1; }
int getItemHeight() const override { return 20; }
int getItemHeight() const override { return isRoot() ? 23 : 20; }
void paintOpenCloseButton (Graphics&, const Rectangle<float>& area, Colour backgroundColour, bool isMouseOver) override; void paintOpenCloseButton (Graphics&, const Rectangle<float>& area, Colour backgroundColour, bool isMouseOver) override;
Component* createItemComponent() override; Component* createItemComponent() override;
@@ -48,17 +48,18 @@ public:
void cancelDelayedSelectionTimer(); void cancelDelayedSelectionTimer();
//============================================================================== //==============================================================================
virtual bool isRoot() const { return false; }
virtual Font getFont() const; virtual Font getFont() const;
virtual String getRenamingName() const = 0; virtual String getRenamingName() const = 0;
virtual String getDisplayName() const = 0; virtual String getDisplayName() const = 0;
virtual void setName (const String& newName) = 0; virtual void setName (const String& newName) = 0;
virtual bool isMissing() = 0; virtual bool isMissing() = 0;
virtual Icon getIcon() const = 0; virtual Icon getIcon() const = 0;
virtual float getIconSize() const;
virtual bool isIconCrossedOut() const { return false; }
virtual bool isIconCrossedOut() const { return false; }
virtual void paintIcon (Graphics& g, Rectangle<int> area) { getIcon().draw (g, area.reduced (2).toFloat(), isIconCrossedOut()); }
virtual void paintContent (Graphics& g, const Rectangle<int>& area); virtual void paintContent (Graphics& g, const Rectangle<int>& area);
virtual int getMillisecsAllowedForDragGesture() { return 120; };
virtual File getDraggableFile() const { return File::nonexistent; }
virtual int getMillisecsAllowedForDragGesture() { return 120; };
virtual File getDraggableFile() const { return File(); }
void refreshSubItems(); void refreshSubItems();
virtual void deleteItem(); virtual void deleteItem();
@@ -206,13 +207,12 @@ public:
void paintIcon (Graphics& g) void paintIcon (Graphics& g)
{ {
item.getIcon().draw (g, Rectangle<float> (4.0f, 2.0f, item.getIconSize(), getHeight() - 4.0f),
item.isIconCrossedOut());
item.paintIcon (g, Rectangle<int> (getHeight(), getHeight()));
} }
void resized() override void resized() override
{ {
item.textX = (int) item.getIconSize() + 8;
item.textX = getHeight() + 4;
Rectangle<int> r (getLocalBounds()); Rectangle<int> r (getLocalBounds());


+ 1
- 1
extras/Introjucer/Source/Wizards/jucer_NewProjectWizardComponent.h View File

@@ -139,7 +139,7 @@ public:
for (int i = 0; i < types.size(); ++i) for (int i = 0; i < types.size(); ++i)
{ {
const ProjectExporter::ExporterTypeInfo& type = types.getReference (i); const ProjectExporter::ExporterTypeInfo& type = types.getReference (i);
platforms.add (new PlatformType (ImageCache::getFromMemory (type.iconData, type.iconDataSize), type.name));
platforms.add (new PlatformType (type.getIcon(), type.name));
} }
listBox.setRowHeight (35); listBox.setRowHeight (35);


+ 35
- 0
modules/juce_core/files/juce_File.cpp View File

@@ -886,6 +886,41 @@ File File::createTempFile (StringRef fileNameEnding)
return tempFile; return tempFile;
} }
bool File::createSymbolicLink (const File& linkFileToCreate, bool overwriteExisting) const
{
if (linkFileToCreate.exists())
{
if (! linkFileToCreate.isSymbolicLink())
{
// user has specified an existing file / directory as the link
// this is bad! the user could end up unintentionally destroying data
jassertfalse;
return false;
}
if (overwriteExisting)
linkFileToCreate.deleteFile();
}
#if JUCE_MAC || JUCE_LINUX
// one common reason for getting an error here is that the file already exists
if (symlink (fullPath.toRawUTF8(), linkFileToCreate.getFullPathName().toRawUTF8()) == -1)
{
jassertfalse;
return false;
}
return true;
#elif JUCE_WINDOWS
return CreateSymbolicLink (linkFileToCreate.getFullPathName().toWideCharPointer(),
fullPath.toWideCharPointer(),
isDirectory() ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0) != FALSE;
#else
jassertfalse; // symbolic links not supported on this platform!
return false;
#endif
}
//============================================================================== //==============================================================================
MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMode mode) MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMode mode)
: address (nullptr), range (0, file.getSize()), fileHandle (0) : address (nullptr), range (0, file.getSize()), fileHandle (0)


+ 21
- 15
modules/juce_core/files/juce_File.h View File

@@ -360,14 +360,6 @@ public:
*/ */
bool isHidden() const; bool isHidden() const;
/** Returns true if this file is a link or alias that can be followed using getLinkedTarget(). */
bool isLink() const;
/** If this file is a link or alias, this returns the file that it points to.
If the file isn't actually link, it'll just return itself.
*/
File getLinkedTarget() const;
/** Returns a unique identifier for the file, if one is available. /** Returns a unique identifier for the file, if one is available.
Depending on the OS and file-system, this may be a unix inode number or Depending on the OS and file-system, this may be a unix inode number or
@@ -880,7 +872,6 @@ public:
*/ */
static File createTempFile (StringRef fileNameEnding); static File createTempFile (StringRef fileNameEnding);
//============================================================================== //==============================================================================
/** Returns the current working directory. /** Returns the current working directory.
@see setAsCurrentWorkingDirectory @see setAsCurrentWorkingDirectory
@@ -946,8 +937,28 @@ public:
/** Adds a separator character to the end of a path if it doesn't already have one. */ /** Adds a separator character to the end of a path if it doesn't already have one. */
static String addTrailingSeparator (const String& path); static String addTrailingSeparator (const String& path);
#if JUCE_MAC || JUCE_IOS || DOXYGEN
//============================================================================== //==============================================================================
/** Tries to create a symbolic link and returns a boolean to indicate success */
bool createSymbolicLink (const File& linkFileToCreate, bool overwriteExisting) const;
/** Returns true if this file is a link or alias that can be followed using getLinkedTarget(). */
bool isSymbolicLink() const;
/** If this file is a link or alias, this returns the file that it points to.
If the file isn't actually link, it'll just return itself.
*/
File getLinkedTarget() const;
#if JUCE_WINDOWS
/** Windows ONLY - Creates a win32 .LNK shortcut file that links to this file. */
bool createShortcut (const String& description, const File& linkFileToCreate) const;
/** Windows ONLY - Returns true if this is a win32 .LNK file. */
bool isShortcut() const;
#endif
//==============================================================================
#if JUCE_MAC || JUCE_IOS || DOXYGEN
/** OSX ONLY - Finds the OSType of a file from the its resources. */ /** OSX ONLY - Finds the OSType of a file from the its resources. */
OSType getMacOSType() const; OSType getMacOSType() const;
@@ -960,11 +971,6 @@ public:
void addToDock() const; void addToDock() const;
#endif #endif
#if JUCE_WINDOWS
/** Windows ONLY - Creates a win32 .LNK shortcut file that links to this file. */
bool createLink (const String& description, const File& linkFileToCreate) const;
#endif
private: private:
//============================================================================== //==============================================================================
String fullPath; String fullPath;


+ 1
- 1
modules/juce_core/native/juce_linux_CommonFile.cpp View File

@@ -65,7 +65,7 @@ static String getLinkedFile (const String& file)
return String::fromUTF8 (buffer, jmax (0, numBytes)); return String::fromUTF8 (buffer, jmax (0, numBytes));
}; };
bool File::isLink() const
bool File::isSymbolicLink() const
{ {
return getLinkedFile (getFullPathName()).isNotEmpty(); return getLinkedFile (getFullPathName()).isNotEmpty();
} }


+ 7
- 2
modules/juce_core/native/juce_mac_Files.mm View File

@@ -285,7 +285,7 @@ static NSString* getFileLink (const String& path)
#endif #endif
} }
bool File::isLink() const
bool File::isSymbolicLink() const
{ {
return getFileLink (fullPath) != nil; return getFileLink (fullPath) != nil;
} }
@@ -401,7 +401,12 @@ bool JUCE_CALLTYPE Process::openDocument (const String& fileName, const String&
{ {
JUCE_AUTORELEASEPOOL JUCE_AUTORELEASEPOOL
{ {
NSURL* filenameAsURL = [NSURL URLWithString: juceStringToNS (fileName)];
NSString* fileNameAsNS (juceStringToNS (fileName));
NSURL* filenameAsURL ([NSURL URLWithString: fileNameAsNS]);
if (filenameAsURL == nil)
filenameAsURL = [NSURL fileURLWithPath: fileNameAsNS];
#if JUCE_IOS #if JUCE_IOS
(void) parameters; (void) parameters;


+ 34
- 2
modules/juce_core/native/juce_win32_Files.cpp View File

@@ -631,13 +631,45 @@ String File::getVersion() const
} }
//============================================================================== //==============================================================================
bool File::isLink() const
bool File::isSymbolicLink() const
{
return (GetFileAttributes (fullPath.toWideCharPointer()) & FILE_ATTRIBUTE_REPARSE_POINT) != 0;
}
bool File::isShortcut() const
{ {
return hasFileExtension (".lnk"); return hasFileExtension (".lnk");
} }
File File::getLinkedTarget() const File File::getLinkedTarget() const
{ {
{
HANDLE h = CreateFile (getFullPathName().toWideCharPointer(),
GENERIC_READ, FILE_SHARE_READ, nullptr,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
if (h != INVALID_HANDLE_VALUE)
{
DWORD requiredSize = ::GetFinalPathNameByHandleW (h, nullptr, 0, FILE_NAME_NORMALIZED);
if (requiredSize > 0)
{
HeapBlock<WCHAR> buffer (requiredSize + 2);
buffer.clear (requiredSize + 2);
requiredSize = ::GetFinalPathNameByHandleW (h, buffer, requiredSize, FILE_NAME_NORMALIZED);
if (requiredSize > 0)
{
CloseHandle (h);
return File (String (buffer));
}
}
CloseHandle (h);
}
}
File result (*this); File result (*this);
String p (getFullPathName()); String p (getFullPathName());
@@ -664,7 +696,7 @@ File File::getLinkedTarget() const
return result; return result;
} }
bool File::createLink (const String& description, const File& linkFileToCreate) const
bool File::createShortcut (const String& description, const File& linkFileToCreate) const
{ {
linkFileToCreate.deleteFile(); linkFileToCreate.deleteFile();


+ 6
- 0
modules/juce_core/text/juce_StringArray.cpp View File

@@ -173,6 +173,12 @@ void StringArray::addArray (const StringArray& otherArray, int startIndex, int n
strings.add (otherArray.strings.getReference (startIndex++)); strings.add (otherArray.strings.getReference (startIndex++));
} }
void StringArray::mergeArray (const StringArray& otherArray, const bool ignoreCase)
{
for (int i = 0; i < otherArray.size(); ++i)
addIfNotAlreadyThere (otherArray[i], ignoreCase);
}
void StringArray::set (const int index, const String& newString) void StringArray::set (const int index, const String& newString)
{ {
strings.set (index, newString); strings.set (index, newString);


+ 9
- 0
modules/juce_core/text/juce_StringArray.h View File

@@ -209,6 +209,15 @@ public:
int startIndex = 0, int startIndex = 0,
int numElementsToAdd = -1); int numElementsToAdd = -1);
/** Merges the strings from another array into this one.
This will not add a string that already exists.
@param other the array to add
@param ignoreCase ignore case when merging
*/
void mergeArray (const StringArray& other,
bool ignoreCase = false);
/** Breaks up a string into tokens and adds them to this array. /** Breaks up a string into tokens and adds them to this array.
This will tokenise the given string using whitespace characters as the This will tokenise the given string using whitespace characters as the


Loading…
Cancel
Save