| @@ -13,9 +13,13 @@ LOCAL_MODULE := juce_jni | |||
| LOCAL_SRC_FILES := \ | |||
| ../../../Source/Main.cpp\ | |||
| ../../../Source/MainWindow.cpp\ | |||
| ../../../Source/MainWindow.h\ | |||
| ../../../Source/DemoUtilities.h\ | |||
| ../../../Source/IntroScreen.cpp\ | |||
| ../../../Source/JuceDemoHeader.h\ | |||
| ../../../Source/Demos/AnimationDemo.cpp\ | |||
| ../../../Source/Demos/AudioLatencyDemo.cpp\ | |||
| ../../../Source/Demos/AudioLiveScrollingDisplay.h\ | |||
| ../../../Source/Demos/AudioPlaybackDemo.cpp\ | |||
| ../../../Source/Demos/AudioRecordingDemo.cpp\ | |||
| ../../../Source/Demos/AudioSettingsDemo.cpp\ | |||
| @@ -47,11 +51,905 @@ LOCAL_SRC_FILES := \ | |||
| ../../../Source/Demos/UnitTestsDemo.cpp\ | |||
| ../../../Source/Demos/ValueTreesDemo.cpp\ | |||
| ../../../Source/Demos/VideoDemo.cpp\ | |||
| ../../../Source/Demos/WavefrontObjParser.h\ | |||
| ../../../Source/Demos/WebBrowserDemo.cpp\ | |||
| ../../../Source/Demos/WidgetsDemo.cpp\ | |||
| ../../../Source/Demos/WindowsDemo.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.h\ | |||
| ../../../../../modules/juce_audio_basics/juce_audio_basics.cpp\ | |||
| ../../../../../modules/juce_audio_devices/juce_audio_devices.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_opengl/juce_opengl.cpp\ | |||
| ../../../../../modules/juce_video/juce_video.cpp\ | |||
| ../../../JuceLibraryCode/JuceHeader.h\ | |||
| 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" | |||
| @@ -43,6 +43,13 @@ import android.text.ClipboardManager; | |||
| import android.text.InputType; | |||
| import android.util.DisplayMetrics; | |||
| 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.net.URL; | |||
| import java.net.HttpURLConnection; | |||
| @@ -234,7 +241,7 @@ public class JuceDemo extends Activity | |||
| if (keepAliveTimer != null) | |||
| { | |||
| keepAliveTimer->cancel(); | |||
| keepAliveTimer.cancel(); | |||
| keepAliveTimer = null; | |||
| } | |||
| @@ -256,7 +263,14 @@ public class JuceDemo extends Activity | |||
| public void run() | |||
| { | |||
| android.app.Instrumentation instrumentation = new android.app.Instrumentation(); | |||
| instrumentation.sendKeyDownUpSync (KeyEvent.KEYCODE_BREAK); | |||
| try | |||
| { | |||
| instrumentation.sendKeyDownUpSync (KeyEvent.KEYCODE_BREAK); | |||
| } | |||
| catch (Exception e) | |||
| { | |||
| } | |||
| } | |||
| }, 2000, 2000); | |||
| } | |||
| @@ -433,6 +433,10 @@ | |||
| <Option compile="0"/> | |||
| <Option link="0"/> | |||
| </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"> | |||
| <Option compile="0"/> | |||
| <Option link="0"/> | |||
| @@ -733,6 +737,10 @@ | |||
| <Option compile="0"/> | |||
| <Option link="0"/> | |||
| </Unit> | |||
| <Unit filename="../../Source/BinaryData/background_logo.svg"> | |||
| <Option compile="0"/> | |||
| <Option link="0"/> | |||
| </Unit> | |||
| <Unit filename="../../Source/BinaryData/background_tile.png"> | |||
| <Option compile="0"/> | |||
| <Option link="0"/> | |||
| @@ -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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| @@ -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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| @@ -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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| @@ -765,7 +766,6 @@ | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| @@ -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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| @@ -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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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; }; | |||
| 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"; }; | |||
| 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; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| @@ -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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| 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"; }; | |||
| @@ -1072,6 +1074,7 @@ | |||
| 5432B7B9B2CF2EAEC8B66D5C, ); name = ComponentEditor; sourceTree = "<group>"; }; | |||
| E345840128627D533DF908AC = {isa = PBXGroup; children = ( | |||
| 6E7353DFEA8825B515049ABB, | |||
| 16385D79A30C6E06EFB46B79, | |||
| DBE0CDE1B017190ABBFF557C, | |||
| 05076CDF1511A5F8A8E18F1D, | |||
| C8A229ACD244F402C57286CD, | |||
| @@ -1165,6 +1168,7 @@ | |||
| 88DFD62CB6545EE8CA5C485B = {isa = PBXGroup; children = ( | |||
| 955A73C474B8CD4FB0D9A96F, | |||
| 5F4F4EAB042F2730F94A1CEA, | |||
| BB9C1E6E54A16F795908C469, | |||
| 301592EBAC0FFF6F5B268E99, | |||
| 41105E536155E394E54BDD35, | |||
| 5F6584B675E30761521A9F42, | |||
| @@ -249,6 +249,7 @@ | |||
| </Filter> | |||
| <Filter Name="Project Saving"> | |||
| <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_Make.h"/> | |||
| <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> | |||
| @@ -544,6 +545,16 @@ | |||
| <Tool Name="VCCLCompilerTool"/> | |||
| </FileConfiguration> | |||
| </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"> | |||
| <FileConfiguration Name="Debug|Win32" | |||
| ExcludedFromBuild="true"> | |||
| @@ -249,6 +249,7 @@ | |||
| </Filter> | |||
| <Filter Name="Project Saving"> | |||
| <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_Make.h"/> | |||
| <File RelativePath="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> | |||
| @@ -544,6 +545,16 @@ | |||
| <Tool Name="VCCLCompilerTool"/> | |||
| </FileConfiguration> | |||
| </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"> | |||
| <FileConfiguration Name="Debug|Win32" | |||
| ExcludedFromBuild="true"> | |||
| @@ -1135,6 +1135,7 @@ | |||
| <ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> | |||
| <ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.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_Make.h"/> | |||
| <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> | |||
| @@ -1541,6 +1542,7 @@ | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/> | |||
| <None Include="..\..\Source\BinaryData\background_logo.svg"/> | |||
| <None Include="..\..\Source\BinaryData\background_tile.png"/> | |||
| <None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> | |||
| <None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> | |||
| @@ -1584,6 +1584,9 @@ | |||
| <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"> | |||
| <Filter>The Introjucer\Project Saving</Filter> | |||
| </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"> | |||
| <Filter>The Introjucer\Project Saving</Filter> | |||
| </ClInclude> | |||
| @@ -2798,6 +2801,9 @@ | |||
| <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| <None Include="..\..\Source\BinaryData\background_logo.svg"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| <None Include="..\..\Source\BinaryData\background_tile.png"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| @@ -1141,6 +1141,7 @@ | |||
| <ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> | |||
| <ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.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_Make.h"/> | |||
| <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> | |||
| @@ -1547,6 +1548,7 @@ | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/> | |||
| <None Include="..\..\Source\BinaryData\background_logo.svg"/> | |||
| <None Include="..\..\Source\BinaryData\background_tile.png"/> | |||
| <None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> | |||
| <None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> | |||
| @@ -1584,6 +1584,9 @@ | |||
| <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"> | |||
| <Filter>The Introjucer\Project Saving</Filter> | |||
| </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"> | |||
| <Filter>The Introjucer\Project Saving</Filter> | |||
| </ClInclude> | |||
| @@ -2798,6 +2801,9 @@ | |||
| <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| <None Include="..\..\Source\BinaryData\background_logo.svg"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| <None Include="..\..\Source\BinaryData\background_tile.png"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| @@ -1141,6 +1141,7 @@ | |||
| <ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> | |||
| <ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.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_Make.h"/> | |||
| <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> | |||
| @@ -1547,6 +1548,7 @@ | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/> | |||
| <None Include="..\..\Source\BinaryData\background_logo.svg"/> | |||
| <None Include="..\..\Source\BinaryData\background_tile.png"/> | |||
| <None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> | |||
| <None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> | |||
| @@ -1584,6 +1584,9 @@ | |||
| <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"> | |||
| <Filter>The Introjucer\Project Saving</Filter> | |||
| </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"> | |||
| <Filter>The Introjucer\Project Saving</Filter> | |||
| </ClInclude> | |||
| @@ -2798,6 +2801,9 @@ | |||
| <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| <None Include="..\..\Source\BinaryData\background_logo.svg"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| <None Include="..\..\Source\BinaryData\background_tile.png"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| @@ -1141,6 +1141,7 @@ | |||
| <ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> | |||
| <ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.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_Make.h"/> | |||
| <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_MSVC.h"/> | |||
| @@ -1547,6 +1548,7 @@ | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"/> | |||
| <None Include="..\..\Source\BinaryData\background_logo.svg"/> | |||
| <None Include="..\..\Source\BinaryData\background_tile.png"/> | |||
| <None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> | |||
| <None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> | |||
| @@ -1584,6 +1584,9 @@ | |||
| <ClInclude Include="..\..\Source\Project Saving\jucer_ProjectExport_Android.h"> | |||
| <Filter>The Introjucer\Project Saving</Filter> | |||
| </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"> | |||
| <Filter>The Introjucer\Project Saving</Filter> | |||
| </ClInclude> | |||
| @@ -2798,6 +2801,9 @@ | |||
| <None Include="..\..\Source\BinaryData\AudioPluginXCodeScript.txt"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| <None Include="..\..\Source\BinaryData\background_logo.svg"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| <None Include="..\..\Source\BinaryData\background_tile.png"> | |||
| <Filter>The Introjucer\BinaryData</Filter> | |||
| </None> | |||
| @@ -402,6 +402,8 @@ | |||
| <GROUP id="{579C9644-D5C2-8469-9439-F91C81337531}" name="Project Saving"> | |||
| <FILE id="TtXohM" name="jucer_ProjectExport_Android.h" compile="0" | |||
| 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" | |||
| resource="0" file="Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"/> | |||
| <FILE id="mVXrLi" name="jucer_ProjectExport_Make.h" compile="0" resource="0" | |||
| @@ -583,6 +585,8 @@ | |||
| </GROUP> | |||
| <FILE id="RSJcrRl" name="AudioPluginXCodeScript.txt" compile="0" resource="1" | |||
| 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="Source/BinaryData/background_tile.png"/> | |||
| <FILE id="geMos6" name="colourscheme_dark.xml" compile="0" resource="1" | |||
| @@ -1470,15 +1470,57 @@ static const unsigned 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[] = | |||
| "<?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, | |||
| 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 ================== | |||
| 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" | |||
| "\r\n" | |||
| "<COLOUR_SCHEME font=\"<Monospaced>; 13.0\">\r\n" | |||
| @@ -1503,10 +1545,10 @@ static const unsigned char temp_binary_data_23[] = | |||
| " <COLOUR name=\"Error\" colour=\"FFE60000\"/>\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 ================== | |||
| 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" | |||
| "\r\n" | |||
| "<COLOUR_SCHEME font=\"<Monospaced>; 13.0\">\r\n" | |||
| @@ -1531,10 +1573,10 @@ static const unsigned char temp_binary_data_24[] = | |||
| " <COLOUR name=\"Error\" colour=\"ffcc0000\"/>\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 ================== | |||
| 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, | |||
| 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, | |||
| @@ -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, | |||
| 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 ================== | |||
| 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, | |||
| 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, | |||
| @@ -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, | |||
| 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 ================== | |||
| 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, | |||
| 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, | |||
| @@ -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, | |||
| 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 ================== | |||
| 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, | |||
| 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, | |||
| @@ -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, | |||
| 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 ================== | |||
| 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, | |||
| 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, | |||
| @@ -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, | |||
| 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 ================== | |||
| 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, | |||
| 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, | |||
| @@ -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, | |||
| 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 ================== | |||
| 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, | |||
| 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, | |||
| @@ -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, | |||
| 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 ================== | |||
| 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, | |||
| 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, | |||
| @@ -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, | |||
| 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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -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" | |||
| "</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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -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" | |||
| "</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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -3803,10 +3845,10 @@ static const unsigned char temp_binary_data_35[] = | |||
| "</g>\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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -3829,10 +3871,10 @@ static const unsigned char temp_binary_data_36[] = | |||
| "</g>\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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -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" | |||
| "</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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -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" | |||
| "</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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -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" | |||
| "</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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -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" | |||
| "</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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -3986,10 +4028,10 @@ static const unsigned char temp_binary_data_41[] = | |||
| "\ts-13.4-19.6-6.9-30\"/>\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 ================== | |||
| 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" | |||
| "<!-- 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" | |||
| @@ -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" | |||
| "</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(); | |||
| @@ -4067,6 +4109,7 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw | |||
| case 0x36e634a1: numBytes = 1626; return jucer_NewInlineComponentTemplate_h; | |||
| case 0x7fbac252: numBytes = 1827; return jucer_OpenGLComponentTemplate_cpp; | |||
| case 0x44be9398: numBytes = 2745; return AudioPluginXCodeScript_txt; | |||
| case 0x406db5c1: numBytes = 3117; return background_logo_svg; | |||
| case 0x4a0cfd09: numBytes = 151; return background_tile_png; | |||
| case 0x763d39dc: numBytes = 1050; return colourscheme_dark_xml; | |||
| case 0xe8b08520: numBytes = 1050; return colourscheme_light_xml; | |||
| @@ -4119,6 +4162,7 @@ const char* namedResourceList[] = | |||
| "jucer_NewInlineComponentTemplate_h", | |||
| "jucer_OpenGLComponentTemplate_cpp", | |||
| "AudioPluginXCodeScript_txt", | |||
| "background_logo_svg", | |||
| "background_tile_png", | |||
| "colourscheme_dark_xml", | |||
| "colourscheme_light_xml", | |||
| @@ -75,6 +75,9 @@ namespace BinaryData | |||
| extern const char* AudioPluginXCodeScript_txt; | |||
| const int AudioPluginXCodeScript_txtSize = 2745; | |||
| extern const char* background_logo_svg; | |||
| const int background_logo_svgSize = 3117; | |||
| extern const char* background_tile_png; | |||
| const int background_tile_pngSize = 151; | |||
| @@ -142,7 +145,7 @@ namespace BinaryData | |||
| extern const char* namedResourceList[]; | |||
| // 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 | |||
| // return the corresponding data and its size (or a null pointer if the name isn't found). | |||
| @@ -40,6 +40,7 @@ namespace CommandIDs | |||
| saveAll = 0x200080, | |||
| openInIDE = 0x200072, | |||
| saveAndOpenInIDE = 0x200073, | |||
| createNewExporter = 0x20007d, | |||
| showUTF8Tool = 0x200076, | |||
| showGlobalPreferences = 0x200077, | |||
| @@ -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> | |||
| @@ -22,30 +22,12 @@ | |||
| ============================================================================== | |||
| */ | |||
| class AndroidProjectExporter : public ProjectExporter | |||
| class AndroidProjectExporterBase : public ProjectExporter | |||
| { | |||
| 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) | |||
| { | |||
| name = getNameAndroid(); | |||
| if (getTargetLocationString().isEmpty()) | |||
| getTargetLocationValue() = getDefaultBuildsRootFolder() + "Android"; | |||
| if (getVersionCodeString().isEmpty()) | |||
| getVersionCodeValue() = 1; | |||
| @@ -67,13 +49,21 @@ public: | |||
| initialiseDependencyPathValues(); | |||
| } | |||
| //============================================================================== | |||
| bool canLaunchProject() override { return false; } | |||
| bool launchProject() override { return false; } | |||
| bool isAndroid() const override { return true; } | |||
| bool usesMMFiles() const 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 | |||
| { | |||
| props.add (new TextPropertyComponent (getActivityClassPathValue(), "Android Activity class name", 256, false), | |||
| @@ -172,6 +162,7 @@ public: | |||
| Value getCPP11EnabledValue() { return getSetting (Ids::androidCpp11); } | |||
| bool isCPP11Enabled() const { return settings [Ids::androidCpp11]; } | |||
| //============================================================================== | |||
| String createDefaultClassName() const | |||
| { | |||
| String s (project.getBundleIdentifier().toString().toLowerCase()); | |||
| @@ -192,84 +183,168 @@ public: | |||
| 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> smallIcon (getSmallIcon()); | |||
| if (bigIcon != nullptr && smallIcon != nullptr) | |||
| { | |||
| 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) | |||
| { | |||
| 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 | |||
| { | |||
| @@ -334,119 +409,109 @@ private: | |||
| 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 v (getNDKToolchainVersionString()); | |||
| @@ -466,9 +531,9 @@ private: | |||
| << "NDK_TOOLCHAIN_VERSION := " << getToolchainVersion() << newLine | |||
| << newLine | |||
| << "ifeq ($(NDK_DEBUG),1)" << newLine | |||
| << " APP_ABI := " << getABIs (true) << newLine | |||
| << " APP_ABI := " << getABIs<AndroidBuildConfiguration> (true) << newLine | |||
| << "else" << newLine | |||
| << " APP_ABI := " << getABIs (false) << newLine | |||
| << " APP_ABI := " << getABIs<AndroidBuildConfiguration> (false) << newLine | |||
| << "endif" << newLine; | |||
| overwriteFileIfDifferentOrThrow (file, mo); | |||
| @@ -478,8 +543,13 @@ private: | |||
| { | |||
| Array<RelativePath> files; | |||
| struct Predicate | |||
| { | |||
| bool operator() (const Project::Item& projectItem) const { return projectItem.shouldBeAddedToTargetProject(); } | |||
| }; | |||
| for (int i = 0; i < getAllGroups().size(); ++i) | |||
| findAllFilesToCompile (getAllGroups().getReference(i), files); | |||
| findAllProjectItemsWithPredicate (getAllGroups().getReference(i), files, Predicate()); | |||
| MemoryOutputStream mo; | |||
| writeAndroidMk (mo, files); | |||
| @@ -687,15 +757,6 @@ private: | |||
| 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 | |||
| { | |||
| MemoryOutputStream mo; | |||
| @@ -725,22 +786,6 @@ private: | |||
| 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 | |||
| { | |||
| XmlElement strings ("resources"); | |||
| @@ -751,19 +796,6 @@ private: | |||
| 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) | |||
| }; | |||
| @@ -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) | |||
| }; | |||
| @@ -29,6 +29,7 @@ | |||
| #include "jucer_ProjectExport_MSVC.h" | |||
| #include "jucer_ProjectExport_XCode.h" | |||
| #include "jucer_ProjectExport_Android.h" | |||
| #include "jucer_ProjectExport_AndroidStudio.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, MSVCProjectExporterVC2005::getName(), BinaryData::projectIconVisualStudio_png, BinaryData::projectIconVisualStudio_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::getNameLinux(), BinaryData::projectIconCodeblocks_png, BinaryData::projectIconCodeblocks_pngSize); | |||
| @@ -65,18 +67,19 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int | |||
| 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; | |||
| } | |||
| @@ -117,16 +120,17 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const Str | |||
| 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); | |||
| 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) | |||
| //MakefileProjectExporter::getValueTreeTypeName(), | |||
| #endif | |||
| AndroidStudioProjectExporter::getValueTreeTypeName(), | |||
| nullptr | |||
| }; | |||
| @@ -44,6 +44,8 @@ public: | |||
| String name; | |||
| const void* iconData; | |||
| int iconDataSize; | |||
| Image getIcon() const { return ImageCache::getFromMemory (iconData, iconDataSize); } | |||
| }; | |||
| static StringArray getExporterNames(); | |||
| @@ -174,6 +174,7 @@ public: | |||
| exportersTree.addListener (this); | |||
| } | |||
| bool isRoot() const override { return true; } | |||
| bool isProjectSettings() const override { return true; } | |||
| String getRenamingName() const override { return getDisplayName(); } | |||
| String getDisplayName() const override { return project.getTitle(); } | |||
| @@ -197,25 +198,8 @@ public: | |||
| 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 | |||
| @@ -27,12 +27,12 @@ class ExporterItem : public ConfigTreeItemBase | |||
| public: | |||
| ExporterItem (Project& p, ProjectExporter* e, int index) | |||
| : project (p), exporter (e), configListTree (exporter->getConfigurations()), | |||
| exporterIndex (index) | |||
| exporterIndex (index), icon (createIcon (exporter->getName())) | |||
| { | |||
| configListTree.addListener (this); | |||
| jassert (exporter != nullptr); | |||
| } | |||
| int getItemHeight() const override { return 22; } | |||
| bool canBeSelected() const override { return true; } | |||
| bool mightContainSubItems() override { return exporter->getNumConfigurations() > 0; } | |||
| String getUniqueName() const override { return "exporter_" + String (exporterIndex); } | |||
| @@ -40,9 +40,18 @@ public: | |||
| String getDisplayName() const override { return exporter->getName(); } | |||
| void setName (const String&) override {} | |||
| 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 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 | |||
| { | |||
| if (AlertWindow::showOkCancelBox (AlertWindow::WarningIcon, "Delete Exporter", | |||
| @@ -122,6 +131,22 @@ private: | |||
| ScopedPointer<ProjectExporter> exporter; | |||
| ValueTree configListTree; | |||
| 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 | |||
| @@ -300,6 +300,7 @@ public: | |||
| moduleListTree.addListener (this); | |||
| } | |||
| int getItemHeight() const override { return 22; } | |||
| bool isModulesList() const override { return true; } | |||
| bool canBeSelected() const override { return true; } | |||
| bool mightContainSubItems() override { return true; } | |||
| @@ -105,6 +105,7 @@ public: | |||
| //============================================================================== | |||
| File getGeneratedCodeFolder() const { return getFile().getSiblingFile ("JuceLibraryCode"); } | |||
| File getSourceFilesFolder() const { return getProjectFolder().getChildFile ("Source"); } | |||
| File getLocalModulesFolder() const { return getGeneratedCodeFolder().getChildFile ("modules"); } | |||
| File getLocalModuleFolder (const String& moduleID) const { return getLocalModulesFolder().getChildFile (moduleID); } | |||
| File getAppIncludeFile() const { return getGeneratedCodeFolder().getChildFile (getJuceSourceHFilename()); } | |||
| @@ -64,6 +64,11 @@ public: | |||
| #if JUCE_MAC || JUCE_WINDOWS | |||
| 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); | |||
| openProjectButton.setCommandToTrigger (&commandManager, CommandIDs::openInIDE, true); | |||
| openProjectButton.setButtonText (commandManager.getNameOfCommand (CommandIDs::openInIDE)); | |||
| @@ -87,20 +92,32 @@ public: | |||
| if (openProjectButton.isVisible()) | |||
| 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); | |||
| } | |||
| static void reselect (TreeViewItem& item) | |||
| { | |||
| item.setSelected (false, true); | |||
| item.setSelected (true, true); | |||
| } | |||
| void showProjectSettings() | |||
| { | |||
| if (ConfigTreeItemTypes::ConfigTreeItemBase* root = dynamic_cast<ConfigTreeItemTypes::ConfigTreeItemBase*> (rootItem.get())) | |||
| if (root->isProjectSettings()) | |||
| root->setSelected (true, true); | |||
| reselect (*root); | |||
| } | |||
| void showModules() | |||
| { | |||
| if (ConfigTreeItemTypes::ConfigTreeItemBase* mods = getModulesItem()) | |||
| mods->setSelected (true, true); | |||
| reselect (*mods); | |||
| } | |||
| void showModule (const String& moduleID) | |||
| @@ -112,11 +129,11 @@ public: | |||
| for (int i = mods->getNumSubItems(); --i >= 0;) | |||
| if (ConfigTreeItemTypes::ModuleItem* m = dynamic_cast<ConfigTreeItemTypes::ModuleItem*> (mods->getSubItem (i))) | |||
| if (m->moduleID == moduleID) | |||
| m->setSelected (true, true); | |||
| reselect (*m); | |||
| } | |||
| } | |||
| TextButton openProjectButton, saveAndOpenButton; | |||
| TextButton createExporterButton, openProjectButton, saveAndOpenButton; | |||
| private: | |||
| ConfigTreeItemTypes::ConfigTreeItemBase* getModulesItem() | |||
| @@ -134,6 +151,12 @@ private: | |||
| //============================================================================== | |||
| struct LogoComponent : public Component | |||
| { | |||
| LogoComponent() | |||
| { | |||
| ScopedPointer<XmlElement> svg (XmlDocument::parse (BinaryData::background_logo_svg)); | |||
| logo = Drawable::createFromSVG (*svg); | |||
| } | |||
| void paint (Graphics& g) | |||
| { | |||
| g.setColour (findColour (mainBackgroundColourId).contrasting (0.3f)); | |||
| @@ -141,11 +164,10 @@ struct LogoComponent : public Component | |||
| Rectangle<int> r (getLocalBounds()); | |||
| 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() | |||
| @@ -154,6 +176,8 @@ struct LogoComponent : public Component | |||
| + newLine | |||
| + 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() | |||
| { | |||
| if (TreePanelBase* const tree = dynamic_cast<TreePanelBase*> (treeViewTabs.getCurrentContentComponent())) | |||
| @@ -695,6 +755,7 @@ void ProjectContentComponent::getAllCommands (Array <CommandID>& commands) | |||
| CommandIDs::closeProject, | |||
| CommandIDs::openInIDE, | |||
| CommandIDs::saveAndOpenInIDE, | |||
| CommandIDs::createNewExporter, | |||
| CommandIDs::showFilePanel, | |||
| CommandIDs::showConfigPanel, | |||
| CommandIDs::showProjectSettings, | |||
| @@ -779,32 +840,29 @@ void ProjectContentComponent::getCommandInfo (const CommandID commandID, Applica | |||
| break; | |||
| 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", | |||
| CommandCategories::general, 0); | |||
| result.setActive (ProjectExporter::canProjectBeLaunched (project)); | |||
| break; | |||
| 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", | |||
| CommandCategories::general, 0); | |||
| result.setActive (ProjectExporter::canProjectBeLaunched (project)); | |||
| result.defaultKeypresses.add (KeyPress ('l', ModifierKeys::commandModifier | ModifierKeys::shiftModifier, 0)); | |||
| 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: | |||
| result.setInfo ("Show File Panel", | |||
| "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::saveAndOpenInIDE: openInIDE (true); break; | |||
| case CommandIDs::createNewExporter: showNewExporterMenu(); break; | |||
| case CommandIDs::deleteSelectedItem: deleteSelectedTreeItems(); break; | |||
| case CommandIDs::showTranslationTool: showTranslationTool(); break; | |||
| @@ -73,6 +73,7 @@ public: | |||
| void closeProject(); | |||
| void openInIDE (bool saveFirst); | |||
| void openInIDE (int exporterIndex, bool saveFirst); | |||
| void showNewExporterMenu(); | |||
| void showFilesTab(); | |||
| void showConfigTab(); | |||
| @@ -38,14 +38,12 @@ public: | |||
| } | |||
| //============================================================================== | |||
| virtual bool isRoot() const { return false; } | |||
| virtual bool acceptsFileDrop (const StringArray& files) const = 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 | |||
| { | |||
| @@ -55,10 +53,10 @@ public: | |||
| 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 | |||
| { | |||
| @@ -84,11 +84,6 @@ Font JucerTreeViewBase::getFont() const | |||
| 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) | |||
| { | |||
| TreeViewItem::paintOpenCloseButton (g, area, getOwnerView()->findColour (mainBackgroundColourId), isMouseOver); | |||
| @@ -37,7 +37,7 @@ public: | |||
| ~JucerTreeViewBase(); | |||
| 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; | |||
| Component* createItemComponent() override; | |||
| @@ -48,17 +48,18 @@ public: | |||
| void cancelDelayedSelectionTimer(); | |||
| //============================================================================== | |||
| virtual bool isRoot() const { return false; } | |||
| virtual Font getFont() const; | |||
| virtual String getRenamingName() const = 0; | |||
| virtual String getDisplayName() const = 0; | |||
| virtual void setName (const String& newName) = 0; | |||
| virtual bool isMissing() = 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 int getMillisecsAllowedForDragGesture() { return 120; }; | |||
| virtual File getDraggableFile() const { return File::nonexistent; } | |||
| virtual int getMillisecsAllowedForDragGesture() { return 120; }; | |||
| virtual File getDraggableFile() const { return File(); } | |||
| void refreshSubItems(); | |||
| virtual void deleteItem(); | |||
| @@ -206,13 +207,12 @@ public: | |||
| 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 | |||
| { | |||
| item.textX = (int) item.getIconSize() + 8; | |||
| item.textX = getHeight() + 4; | |||
| Rectangle<int> r (getLocalBounds()); | |||
| @@ -139,7 +139,7 @@ public: | |||
| for (int i = 0; i < types.size(); ++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); | |||
| @@ -886,6 +886,41 @@ File File::createTempFile (StringRef fileNameEnding) | |||
| 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) | |||
| : address (nullptr), range (0, file.getSize()), fileHandle (0) | |||
| @@ -360,14 +360,6 @@ public: | |||
| */ | |||
| 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. | |||
| 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); | |||
| //============================================================================== | |||
| /** Returns the current working directory. | |||
| @see setAsCurrentWorkingDirectory | |||
| @@ -946,8 +937,28 @@ public: | |||
| /** Adds a separator character to the end of a path if it doesn't already have one. */ | |||
| 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. */ | |||
| OSType getMacOSType() const; | |||
| @@ -960,11 +971,6 @@ public: | |||
| void addToDock() const; | |||
| #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: | |||
| //============================================================================== | |||
| String fullPath; | |||
| @@ -65,7 +65,7 @@ static String getLinkedFile (const String& file) | |||
| return String::fromUTF8 (buffer, jmax (0, numBytes)); | |||
| }; | |||
| bool File::isLink() const | |||
| bool File::isSymbolicLink() const | |||
| { | |||
| return getLinkedFile (getFullPathName()).isNotEmpty(); | |||
| } | |||
| @@ -285,7 +285,7 @@ static NSString* getFileLink (const String& path) | |||
| #endif | |||
| } | |||
| bool File::isLink() const | |||
| bool File::isSymbolicLink() const | |||
| { | |||
| return getFileLink (fullPath) != nil; | |||
| } | |||
| @@ -401,7 +401,12 @@ bool JUCE_CALLTYPE Process::openDocument (const String& fileName, const String& | |||
| { | |||
| 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 | |||
| (void) parameters; | |||
| @@ -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"); | |||
| } | |||
| 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); | |||
| String p (getFullPathName()); | |||
| @@ -664,7 +696,7 @@ File File::getLinkedTarget() const | |||
| return result; | |||
| } | |||
| bool File::createLink (const String& description, const File& linkFileToCreate) const | |||
| bool File::createShortcut (const String& description, const File& linkFileToCreate) const | |||
| { | |||
| linkFileToCreate.deleteFile(); | |||
| @@ -173,6 +173,12 @@ void StringArray::addArray (const StringArray& otherArray, int startIndex, int n | |||
| 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) | |||
| { | |||
| strings.set (index, newString); | |||
| @@ -209,6 +209,15 @@ public: | |||
| int startIndex = 0, | |||
| 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. | |||
| This will tokenise the given string using whitespace characters as the | |||