diff --git a/Builds/VisualStudio2005/Juce.vcproj b/Builds/VisualStudio2005/Juce.vcproj
index 8f5d225630..c4f4f4913a 100644
--- a/Builds/VisualStudio2005/Juce.vcproj
+++ b/Builds/VisualStudio2005/Juce.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
-
-
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}
+
+
+
+ StaticLibrary
+ false
+ MultiByte
+
+
+ StaticLibrary
+ false
+ MultiByte
+ true
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ .\..\..\bin\
+ .\..\..\bin\
+ jucelib_static_Win32_debug
+ .\..\..\bin\
+ .\..\..\bin\
+ jucelib_static_Win32
+
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ true
+ true
+ Win32
+
+
+
+ Disabled
+ EditAndContinue
+ %(AdditionalIncludeDirectories)
+ JUCER_VS2010_78A501D;WIN32;_WINDOWS;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ MultiThreadedDebug
+ true
+
+ .\Debug\
+ .\Debug\
+ .\Debug\
+ Level4
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+ .\..\..\bin\jucelib_static_Win32_debug.lib
+ true
+ libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)
+ true
+ .\Debug\jucedebug.pdb
+ Windows
+ MachineX86
+
+
+ true
+ .\Debug\jucedebug.bsc
+
+
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ true
+ true
+ Win32
+
+
+
+ MaxSpeed
+ %(AdditionalIncludeDirectories)
+ JUCER_VS2010_78A501D;WIN32;_WINDOWS;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ MultiThreaded
+ true
+
+ .\Release\
+ .\Release\
+ .\Release\
+ Level4
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+ .\..\..\bin\jucelib_static_Win32.lib
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ false
+ .\Release\juce.pdb
+ Windows
+ MachineX86
+ true
+ true
+
+
+ true
+ .\Release\juce.bsc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Builds/VisualStudio2010/Juce.vcxproj.filters b/Builds/VisualStudio2010/Juce.vcxproj.filters
new file mode 100644
index 0000000000..85fb0ccddf
--- /dev/null
+++ b/Builds/VisualStudio2010/Juce.vcxproj.filters
@@ -0,0 +1,2155 @@
+
+
+
+
+
+ {4EBB1AA0-C8C1-3A6E-4EEF-16D94A800C1D}
+
+
+ {B3957F8E-6663-9185-1136-725FC483F754}
+
+
+ {76ED2629-A92C-0B92-503A-087604454893}
+
+
+ {0D4D0FFE-D16E-58DC-8BD2-B98A19E3D3E5}
+
+
+ {198C8EED-D309-F1DE-6B4E-C351CC50812F}
+
+
+ {21B05F4A-D58A-C45D-09BA-8A736B3D67C3}
+
+
+ {78A04D1F-179A-65F9-AF83-CC9C07828139}
+
+
+ {22AEF7CD-EF75-F3B4-8C08-F1FE5A087932}
+
+
+ {5B74C3D9-7807-74F3-0944-5242688166CE}
+
+
+ {726F1543-3280-C554-0844-B5AF99C2392D}
+
+
+ {46220919-DA8A-82C3-B033-1939CFCB5579}
+
+
+ {A0FD2518-2705-57EF-1770-7C9BB5396CC7}
+
+
+ {8D895E8F-029F-B8EA-E30D-6DE6D776C4B8}
+
+
+ {4FAABF21-2D54-2382-DBE2-34AC36E64382}
+
+
+ {9379B582-DCC2-F948-F1DE-A0D450B0DBEF}
+
+
+ {1C014FAC-29EE-15DA-644F-6C5DC4AECE62}
+
+
+ {E290BC33-5CD3-5DCF-DA4E-C16839648601}
+
+
+ {C1DD5A90-9EF3-E7A3-51D2-4F764B95DF4E}
+
+
+ {F87ADC73-12F9-6920-443B-408155CE0BA6}
+
+
+ {28FF351A-88A5-954B-43EB-1786A20796C4}
+
+
+ {E7BF31BD-CF43-6336-3393-A91CEB523BD4}
+
+
+ {6D87BD0C-C8BC-F4A1-9370-44D21B630459}
+
+
+ {7130B08B-624D-1D77-EAC7-04C96F798B1C}
+
+
+ {7637E9FA-EF6E-D1AD-948C-D2FC50F34B1B}
+
+
+ {C26D9DA0-B2D0-FF8F-2CEC-72157E40911B}
+
+
+ {CD7E4A5D-B44F-D468-7A29-E9812E562684}
+
+
+ {91615EAF-82B1-CE71-C546-B107666DC73C}
+
+
+ {B0D9CCC8-4718-BF06-EA13-DA2333E77AEE}
+
+
+ {6A81EDB6-D54A-343C-8BB0-CCE4DAA4823F}
+
+
+ {40D34D66-1607-CAC3-2F76-226E0C328620}
+
+
+ {FBDC681F-229A-7BDD-B1B3-10BE5A7F9A9B}
+
+
+ {3451EF52-8398-5DB1-9C74-EFD21B8ED2EF}
+
+
+ {ABF2F706-BD6B-F226-E0AC-76D0FC7ADB5A}
+
+
+ {6FC7F6EC-55E2-32DF-72F0-FFD044AA8C3C}
+
+
+ {E0962947-51B5-F42D-204C-AFC22B38AD94}
+
+
+ {8E523C69-A1A0-BDA3-9B80-FA1278E0C007}
+
+
+ {6AA8AEDB-B5A6-26A6-50AC-4EEF5B60D7EF}
+
+
+ {256CA617-3048-F818-38CA-AF50C584E234}
+
+
+ {08423EB8-E26E-3600-7177-8E3CD4BBF639}
+
+
+ {FC05C369-DC75-D434-ED29-1ECF5A8ED49F}
+
+
+ {E6E900B2-D5B4-7AE6-2AAB-A1E88B530DFE}
+
+
+ {92FD5E6C-144F-9B2E-F659-6D01129A62FC}
+
+
+ {64622FE4-B44B-D474-B7E9-6CCAB470D0AE}
+
+
+ {C2308939-D584-9814-C8E8-EFA033FFC652}
+
+
+ {A5F8397A-22E0-232C-6BDB-9A112412C424}
+
+
+ {BAD6B5EE-236C-8A52-235E-F92C1F98F8F7}
+
+
+ {37D4DBD5-448B-3915-AF1D-06AE76B6156C}
+
+
+ {B08B93CD-344E-92C9-88DF-BE1A2F8E2BD1}
+
+
+ {CFBC5FA1-5A68-B012-A852-1D798CD2CBDF}
+
+
+ {56CD7BE1-9B0B-A873-6126-8F47C2268CD3}
+
+
+ {63A5A988-2E40-A16D-FB1D-337F27BAF97A}
+
+
+ {69764D4B-36D6-B011-D88D-71CE947588EE}
+
+
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\dsp
+
+
+ Juce\Source\audio\dsp
+
+
+ Juce\Source\audio\dsp
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\plugins\formats
+
+
+ Juce\Source\audio\plugins\formats
+
+
+ Juce\Source\audio\plugins\formats
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\synthesisers
+
+
+ Juce\Source\audio\synthesisers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\cryptography
+
+
+ Juce\Source\cryptography
+
+
+ Juce\Source\cryptography
+
+
+ Juce\Source\cryptography
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\gui\components
+
+
+ Juce\Source\gui\components
+
+
+ Juce\Source\gui\components
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\code_editor
+
+
+ Juce\Source\gui\components\code_editor
+
+
+ Juce\Source\gui\components\code_editor
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\lookandfeel
+
+
+ Juce\Source\gui\components\lookandfeel
+
+
+ Juce\Source\gui\components\menus
+
+
+ Juce\Source\gui\components\menus
+
+
+ Juce\Source\gui\components\menus
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\graphics\colour
+
+
+ Juce\Source\gui\graphics\colour
+
+
+ Juce\Source\gui\graphics\colour
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\effects
+
+
+ Juce\Source\gui\graphics\effects
+
+
+ Juce\Source\gui\graphics\effects
+
+
+ Juce\Source\gui\graphics\fonts
+
+
+ Juce\Source\gui\graphics\fonts
+
+
+ Juce\Source\gui\graphics\fonts
+
+
+ Juce\Source\gui\graphics\fonts
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\imaging\image_file_formats
+
+
+ Juce\Source\gui\graphics\imaging\image_file_formats
+
+
+ Juce\Source\gui\graphics\imaging\image_file_formats
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\network
+
+
+ Juce\Source\io\network
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\native
+
+
+ Juce\Source\native
+
+
+ Juce\Source\native
+
+
+ Juce\Source\native\common
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\application
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_file_formats
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\audio_sources
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\devices
+
+
+ Juce\Source\audio\dsp
+
+
+ Juce\Source\audio\dsp
+
+
+ Juce\Source\audio\dsp
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\midi
+
+
+ Juce\Source\audio\plugins\formats
+
+
+ Juce\Source\audio\plugins\formats
+
+
+ Juce\Source\audio\plugins\formats
+
+
+ Juce\Source\audio\plugins\formats
+
+
+ Juce\Source\audio\plugins\formats
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\plugins
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\processors
+
+
+ Juce\Source\audio\synthesisers
+
+
+ Juce\Source\audio\synthesisers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\containers
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\core
+
+
+ Juce\Source\cryptography
+
+
+ Juce\Source\cryptography
+
+
+ Juce\Source\cryptography
+
+
+ Juce\Source\cryptography
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\events
+
+
+ Juce\Source\gui\components
+
+
+ Juce\Source\gui\components
+
+
+ Juce\Source\gui\components
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\buttons
+
+
+ Juce\Source\gui\components\code_editor
+
+
+ Juce\Source\gui\components\code_editor
+
+
+ Juce\Source\gui\components\code_editor
+
+
+ Juce\Source\gui\components\code_editor
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\controls
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\filebrowser
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\keyboard
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\layout
+
+
+ Juce\Source\gui\components\lookandfeel
+
+
+ Juce\Source\gui\components\lookandfeel
+
+
+ Juce\Source\gui\components\menus
+
+
+ Juce\Source\gui\components\menus
+
+
+ Juce\Source\gui\components\menus
+
+
+ Juce\Source\gui\components\menus
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\mouse
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\properties
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\special
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\components\windows
+
+
+ Juce\Source\gui\graphics\colour
+
+
+ Juce\Source\gui\graphics\colour
+
+
+ Juce\Source\gui\graphics\colour
+
+
+ Juce\Source\gui\graphics\colour
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\contexts
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\drawables
+
+
+ Juce\Source\gui\graphics\effects
+
+
+ Juce\Source\gui\graphics\effects
+
+
+ Juce\Source\gui\graphics\effects
+
+
+ Juce\Source\gui\graphics\effects
+
+
+ Juce\Source\gui\graphics\fonts
+
+
+ Juce\Source\gui\graphics\fonts
+
+
+ Juce\Source\gui\graphics\fonts
+
+
+ Juce\Source\gui\graphics\fonts
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\geometry
+
+
+ Juce\Source\gui\graphics\imaging\image_file_formats
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\gui\graphics\imaging
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\files
+
+
+ Juce\Source\io\network
+
+
+ Juce\Source\io\network
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\io\streams
+
+
+ Juce\Source\native\common
+
+
+ Juce\Source\native\linux
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\mac
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\native\windows
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\text
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\threads
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source\utilities
+
+
+ Juce\Source
+
+
+ Juce\Source
+
+
+
diff --git a/Juce.jucer b/Juce.jucer
index 68e95c82ea..268f848a72 100644
--- a/Juce.jucer
+++ b/Juce.jucer
@@ -24,6 +24,10 @@
rtasFolder="c:\SDKs\PT_80_SDK" libraryType="2" juceFolder="."
extraDefs="JUCE_DLL_BUILD=1 JUCE_DLL=1" libraryName_Debug="JUCE_debug.dll"
libraryName_Release="JUCE.dll"/>
+
CFBundleExecutable
- ${EXECUTABLE_NAME}
+ ${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2005/The Jucer.vcproj b/extras/Jucer (experimental)/Builds/VisualStudio2005/The Jucer.vcproj
index 723f2e13db..72b3b2161f 100644
--- a/extras/Jucer (experimental)/Builds/VisualStudio2005/The Jucer.vcproj
+++ b/extras/Jucer (experimental)/Builds/VisualStudio2005/The Jucer.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2008/The Jucer.vcproj b/extras/Jucer (experimental)/Builds/VisualStudio2008/The Jucer.vcproj
index 3615212698..720823471c 100644
--- a/extras/Jucer (experimental)/Builds/VisualStudio2008/The Jucer.vcproj
+++ b/extras/Jucer (experimental)/Builds/VisualStudio2008/The Jucer.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.sln b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.sln
new file mode 100644
index 0000000000..eb1d8d9f0e
--- /dev/null
+++ b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.sln
@@ -0,0 +1,19 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+Project("{4E9D0CBA-BFAB-E5E4-0A60-A20FD97F37CA}") = "The Jucer", "The Jucer.vcxproj", "{C9C4A72E-8CC9-D57E-C0D0-2E6109E48884}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C9C4A72E-8CC9-D57E-C0D0-2E6109E48884}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C9C4A72E-8CC9-D57E-C0D0-2E6109E48884}.Debug|Win32.Build.0 = Debug|Win32
+ {C9C4A72E-8CC9-D57E-C0D0-2E6109E48884}.Release|Win32.ActiveCfg = Release|Win32
+ {C9C4A72E-8CC9-D57E-C0D0-2E6109E48884}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj
new file mode 100644
index 0000000000..d81d065bd1
--- /dev/null
+++ b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj
@@ -0,0 +1,238 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {C9C4A72E-8CC9-D57E-C0D0-2E6109E48884}
+
+
+
+ Application
+ false
+ MultiByte
+
+
+ Application
+ false
+ MultiByte
+ true
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ .\Debug\
+ .\Debug\
+ Jucer
+ .\Release\
+ .\Release\
+ Jucer
+
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ true
+ true
+ Win32
+
+
+
+ Disabled
+ EditAndContinue
+ %(AdditionalIncludeDirectories)
+ JUCER_VS2010_78A501D;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)
+ MultiThreadedDebug
+ true
+
+ .\Debug\
+ .\Debug\
+ .\Debug\
+ Level4
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+ .\Debug\Jucer.exe
+ true
+ libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)
+ true
+ .\Debug\Jucer.pdb
+ Windows
+ MachineX86
+
+
+ true
+ .\Debug\Jucer.bsc
+
+
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ true
+ true
+ Win32
+
+
+
+ MaxSpeed
+ %(AdditionalIncludeDirectories)
+ JUCER_VS2010_78A501D;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)
+ MultiThreaded
+ true
+
+ .\Release\
+ .\Release\
+ .\Release\
+ Level4
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+ .\Release\Jucer.exe
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ false
+ .\Release\Jucer.pdb
+ Windows
+ MachineX86
+ true
+ true
+
+
+ true
+ .\Release\Jucer.bsc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj.filters b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj.filters
new file mode 100644
index 0000000000..6b832497b8
--- /dev/null
+++ b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj.filters
@@ -0,0 +1,412 @@
+
+
+
+
+
+ {251378DC-2EBB-4B5D-54B9-F55AC57A478F}
+
+
+ {A5344922-0D8B-B045-F28C-FED2183BC2C7}
+
+
+ {BB130AC7-0080-F6A3-9A33-66D8D081545C}
+
+
+ {373D0BD7-814C-7145-4C25-6D9C9E6D1D5D}
+
+
+ {7C9CA237-B750-662B-7DF8-5FD8FCAF4E3C}
+
+
+ {F9D69347-AF9F-BE13-7C53-9C497443E5AE}
+
+
+ {0FF8ACAB-44CE-46E5-1696-551E75158B70}
+
+
+ {F4F08AA9-6601-8093-5779-F29289064327}
+
+
+ {F476DB92-615F-54AF-2D4B-35031423FB68}
+
+
+ {37D72050-852A-B36C-3674-277B759737F1}
+
+
+ {04730C9B-9F60-192C-2577-97984C6BC024}
+
+
+ {B34892C3-DBB0-4445-A3A2-FF5FB798F25B}
+
+
+ {E870C076-EBCA-BE3D-D4EB-5D91F2FF6C9F}
+
+
+ {2E88444F-D7BD-E1A9-66EC-392A5E9341E5}
+
+
+ {80A084D8-BC07-0004-6213-67EFCAD6DC64}
+
+
+ {F7048EA6-F4B2-F31B-E402-E05D678A1111}
+
+
+
+
+ The Jucer\Model\Component
+
+
+ The Jucer\Model\Component
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Drawable
+
+
+ The Jucer\Model\Drawable
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\UI\Code Editor
+
+
+ The Jucer\UI\Component Editor
+
+
+ The Jucer\UI\Component Editor
+
+
+ The Jucer\UI\Drawable Editor
+
+
+ The Jucer\UI\Editor Base
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Main
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+
+
+ The Jucer\Model\Component
+
+
+ The Jucer\Model\Component
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Component\Types
+
+
+ The Jucer\Model\Drawable
+
+
+ The Jucer\Model\Drawable
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\Model\Project
+
+
+ The Jucer\UI\Code Editor
+
+
+ The Jucer\UI\Component Editor
+
+
+ The Jucer\UI\Component Editor
+
+
+ The Jucer\UI\Component Editor
+
+
+ The Jucer\UI\Component Editor
+
+
+ The Jucer\UI\Component Editor
+
+
+ The Jucer\UI\Component Editor
+
+
+ The Jucer\UI\Drawable Editor
+
+
+ The Jucer\UI\Drawable Editor
+
+
+ The Jucer\UI\Drawable Editor
+
+
+ The Jucer\UI\Drawable Editor
+
+
+ The Jucer\UI\Editor Base
+
+
+ The Jucer\UI\Editor Base
+
+
+ The Jucer\UI\Editor Base
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\UI\Project Editor
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Utility
+
+
+ The Jucer\Main
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ The Jucer\Resources
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+
diff --git a/extras/Jucer (experimental)/Jucer.jucer b/extras/Jucer (experimental)/Jucer.jucer
index b61e76bee1..1d4dd2fa77 100644
--- a/extras/Jucer (experimental)/Jucer.jucer
+++ b/extras/Jucer (experimental)/Jucer.jucer
@@ -18,6 +18,8 @@
+
& props)
{
ProjectExporter::createPropertyEditors (props);
@@ -136,176 +76,14 @@ public:
}
}
- //==============================================================================
- const String create()
- {
- if (version == visualStudio6)
- {
- {
- MemoryOutputStream mo;
- writeVC6Project (mo);
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getDSPFile(), mo))
- return "Can't write to the VC project file: " + getDSPFile().getFullPathName();
- }
-
- {
- MemoryOutputStream mo;
- writeDSWFile (mo);
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getDSWFile(), mo))
- return "Can't write to the VC solution file: " + getDSWFile().getFullPathName();
- }
- }
- else
- {
- projectGUID = createGUID (project.getProjectUID());
-
- XmlElement masterXml ("VisualStudioProject");
- fillInMasterXml (masterXml);
-
- {
- MemoryOutputStream mo;
- masterXml.writeToStream (mo, String::empty, false, true, "UTF-8", 10);
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getVCProjFile(), mo))
- return "Can't write to the VC project file: " + getVCProjFile().getFullPathName();
- }
-
- {
- MemoryOutputStream mo;
- writeSolutionFile (mo);
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getSLNFile(), mo))
- return "Can't write to the VC solution file: " + getSLNFile().getFullPathName();
- }
- }
-
- return String::empty;
- }
-
-private:
+protected:
String projectGUID;
- const VisualStudioVersion version;
const File getProjectFile (const String& extension) const { return getTargetFolder().getChildFile (project.getProjectFilenameRoot()).withFileExtension (extension); }
- const File getVCProjFile() const { return getProjectFile (".vcproj"); }
- const File getSLNFile() const { return getProjectFile (".sln"); }
- const File getDSPFile() const { return getProjectFile (".dsp"); }
- const File getDSWFile() const { return getProjectFile (".dsw"); }
-
Value getLibraryType() const { return getSetting (Ids::libraryType); }
bool isLibraryDLL() const { return project.isLibrary() && getLibraryType() == 2; }
- //==============================================================================
- void fillInMasterXml (XmlElement& masterXml)
- {
- masterXml.setAttribute ("ProjectType", "Visual C++");
-
- switch (version)
- {
- case visualStudio2005: masterXml.setAttribute ("Version", "8.00"); break;
- case visualStudio2008: masterXml.setAttribute ("Version", "9.00"); break;
- default: jassertfalse; break;
- }
-
- masterXml.setAttribute ("Name", project.getProjectName().toString());
- masterXml.setAttribute ("ProjectGUID", projectGUID);
- masterXml.setAttribute ("TargetFrameworkVersion", "131072");
-
- {
- XmlElement* platforms = masterXml.createNewChildElement ("Platforms");
- XmlElement* platform = platforms->createNewChildElement ("Platform");
- platform->setAttribute ("Name", "Win32");
- }
-
- masterXml.createNewChildElement ("ToolFiles");
- createConfigs (*masterXml.createNewChildElement ("Configurations"));
- masterXml.createNewChildElement ("References");
- createFiles (*masterXml.createNewChildElement ("Files"));
- masterXml.createNewChildElement ("Globals");
- }
-
- //==============================================================================
- void addFile (const RelativePath& file, XmlElement& parent, const bool excludeFromBuild, const bool useStdcall)
- {
- jassert (file.getRoot() == RelativePath::buildTargetFolder);
-
- XmlElement* fileXml = parent.createNewChildElement ("File");
- fileXml->setAttribute ("RelativePath", file.toWindowsStyle());
-
- if (excludeFromBuild || useStdcall)
- {
- for (int i = 0; i < project.getNumConfigurations(); ++i)
- {
- Project::BuildConfiguration config (project.getConfiguration (i));
-
- XmlElement* fileConfig = fileXml->createNewChildElement ("FileConfiguration");
- fileConfig->setAttribute ("Name", createConfigName (config));
-
- if (excludeFromBuild)
- fileConfig->setAttribute ("ExcludedFromBuild", "true");
-
- XmlElement* tool = createToolElement (*fileConfig, "VCCLCompilerTool");
-
- if (useStdcall)
- tool->setAttribute ("CallingConvention", "2");
- }
- }
- }
-
- XmlElement* createGroup (const String& groupName, XmlElement& parent)
- {
- XmlElement* filter = parent.createNewChildElement ("Filter");
- filter->setAttribute ("Name", groupName);
- return filter;
- }
-
- void addFiles (const Project::Item& projectItem, XmlElement& parent)
- {
- if (projectItem.isGroup())
- {
- XmlElement* filter = createGroup (projectItem.getName().toString(), parent);
-
- for (int i = 0; i < projectItem.getNumChildren(); ++i)
- addFiles (projectItem.getChild(i), *filter);
- }
- else
- {
- if (projectItem.shouldBeAddedToTargetProject())
- {
- const RelativePath path (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder);
-
- addFile (path, parent,
- projectItem.shouldBeAddedToBinaryResources() || (shouldFileBeCompiledByDefault (path) && ! projectItem.shouldBeCompiled()),
- false);
- }
- }
- }
-
- void addGroup (XmlElement& parent, const String& groupName, const Array& files, const bool useStdcall)
- {
- if (files.size() > 0)
- {
- XmlElement* const group = createGroup (groupName, parent);
-
- for (int i = 0; i < files.size(); ++i)
- if (files.getReference(i).hasFileExtension ("cpp;c;h"))
- addFile (files.getReference(i), *group, false,
- useStdcall && shouldFileBeCompiledByDefault (files.getReference(i)));
- }
- }
-
- void createFiles (XmlElement& files)
- {
- addFiles (project.getMainGroup(), files);
-
- addGroup (files, project.getJuceCodeGroupName(), juceWrapperFiles, false);
- addGroup (files, "Juce VST Wrapper", getVSTFilesRequired(), false);
- addGroup (files, "Juce RTAS Wrapper", getRTASFilesRequired(), true);
- }
-
//==============================================================================
const Array getRTASFilesRequired() const
{
@@ -425,10 +203,232 @@ private:
for (int i = 0; i < numElementsInArray (rtasIncludePaths); ++i)
searchPaths.add (sdkFolder.getChildFile (rtasIncludePaths[i]).toWindowsStyle());
}
-
- return searchPaths;
+
+ return searchPaths;
+ }
+
+ const String getBinaryFileForConfig (const Project::BuildConfiguration& config) const
+ {
+ const String targetBinary (getSetting (config.isDebug().getValue() ? Ids::libraryName_Debug : Ids::libraryName_Release).toString().trim());
+ if (targetBinary.isNotEmpty())
+ return targetBinary;
+
+ return config.getTargetBinaryName().toString() + getTargetBinarySuffix();
+ }
+
+ static const String createConfigName (const Project::BuildConfiguration& config)
+ {
+ return config.getName().toString() + "|Win32";
+ }
+
+ //==============================================================================
+ void writeSolutionFile (OutputStream& out, const String& versionString, const File& vcProject)
+ {
+ out << newLine << "Microsoft Visual Studio Solution File, Format Version " << versionString << newLine
+ << "Project(\"" << createGUID (project.getProjectName().toString() + "sln_guid") << "\") = \"" << project.getProjectName().toString() << "\", \""
+ << vcProject.getFileName() << "\", \"" << projectGUID << '"' << newLine
+ << "EndProject" << newLine
+ << "Global" << newLine
+ << "\tGlobalSection(SolutionConfigurationPlatforms) = preSolution" << newLine;
+
+ int i;
+ for (i = 0; i < project.getNumConfigurations(); ++i)
+ {
+ Project::BuildConfiguration config (project.getConfiguration (i));
+ out << "\t\t" << createConfigName (config) << " = " << createConfigName (config) << newLine;
+ }
+
+ out << "\tEndGlobalSection" << newLine
+ << "\tGlobalSection(ProjectConfigurationPlatforms) = postSolution" << newLine;
+
+ for (i = 0; i < project.getNumConfigurations(); ++i)
+ {
+ Project::BuildConfiguration config (project.getConfiguration (i));
+ out << "\t\t" << projectGUID << "." << createConfigName (config) << ".ActiveCfg = " << createConfigName (config) << newLine;
+ out << "\t\t" << projectGUID << "." << createConfigName (config) << ".Build.0 = " << createConfigName (config) << newLine;
+ }
+
+ out << "\tEndGlobalSection" << newLine
+ << "\tGlobalSection(SolutionProperties) = preSolution" << newLine
+ << "\t\tHideSolutionNode = FALSE" << newLine
+ << "\tEndGlobalSection" << newLine
+ << "EndGlobal" << newLine;
+ }
+
+ MSVCProjectExporterBase (const MSVCProjectExporterBase&);
+ MSVCProjectExporterBase& operator= (const MSVCProjectExporterBase&);
+};
+
+
+//==============================================================================
+class MSVCProjectExporterVC2008 : public MSVCProjectExporterBase
+{
+public:
+ //==============================================================================
+ MSVCProjectExporterVC2008 (Project& project_, const ValueTree& settings_, const char* folderName = "VisualStudio2008")
+ : MSVCProjectExporterBase (project_, settings_, folderName)
+ {
+ name = getName();
+ }
+
+ ~MSVCProjectExporterVC2008() {}
+
+ static const char* getName() { return "Visual Studio 2008"; }
+ static const char* getValueTreeTypeName() { return "VS2008"; }
+
+ void launchProject() { getSLNFile().startAsProcess(); }
+
+ bool isDefaultFormatForCurrentOS()
+ {
+ #if JUCE_WINDOWS
+ return true;
+ #else
+ return false;
+ #endif
+ }
+
+ static MSVCProjectExporterVC2008* createForSettings (Project& project, const ValueTree& settings)
+ {
+ if (settings.hasType (getValueTreeTypeName()))
+ return new MSVCProjectExporterVC2008 (project, settings);
+
+ return 0;
+ }
+
+ //==============================================================================
+ const String create()
+ {
+ {
+ XmlElement projectXml ("VisualStudioProject");
+ fillInProjectXml (projectXml);
+
+ MemoryOutputStream mo;
+ projectXml.writeToStream (mo, String::empty, false, true, "UTF-8", 10);
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getVCProjFile(), mo))
+ return "Can't write to the VC project file: " + getVCProjFile().getFullPathName();
+ }
+
+ {
+ MemoryOutputStream mo;
+ writeSolutionFile (mo, getSolutionVersionString(), getVCProjFile());
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getSLNFile(), mo))
+ return "Can't write to the VC solution file: " + getSLNFile().getFullPathName();
+ }
+
+ return String::empty;
+ }
+
+protected:
+ virtual const String getProjectVersionString() const { return "9.00"; }
+ virtual const String getSolutionVersionString() const { return String ("10.00") + newLine + "# Visual C++ Express 2008"; }
+
+ const File getVCProjFile() const { return getProjectFile (".vcproj"); }
+ const File getSLNFile() const { return getProjectFile (".sln"); }
+
+ //==============================================================================
+ void fillInProjectXml (XmlElement& projectXml)
+ {
+ projectXml.setAttribute ("ProjectType", "Visual C++");
+ projectXml.setAttribute ("Version", getProjectVersionString());
+ projectXml.setAttribute ("Name", project.getProjectName().toString());
+ projectXml.setAttribute ("ProjectGUID", projectGUID);
+ projectXml.setAttribute ("TargetFrameworkVersion", "131072");
+
+ {
+ XmlElement* platforms = projectXml.createNewChildElement ("Platforms");
+ XmlElement* platform = platforms->createNewChildElement ("Platform");
+ platform->setAttribute ("Name", "Win32");
+ }
+
+ projectXml.createNewChildElement ("ToolFiles");
+ createConfigs (*projectXml.createNewChildElement ("Configurations"));
+ projectXml.createNewChildElement ("References");
+ createFiles (*projectXml.createNewChildElement ("Files"));
+ projectXml.createNewChildElement ("Globals");
+ }
+
+ //==============================================================================
+ void addFile (const RelativePath& file, XmlElement& parent, const bool excludeFromBuild, const bool useStdcall)
+ {
+ jassert (file.getRoot() == RelativePath::buildTargetFolder);
+
+ XmlElement* fileXml = parent.createNewChildElement ("File");
+ fileXml->setAttribute ("RelativePath", file.toWindowsStyle());
+
+ if (excludeFromBuild || useStdcall)
+ {
+ for (int i = 0; i < project.getNumConfigurations(); ++i)
+ {
+ Project::BuildConfiguration config (project.getConfiguration (i));
+
+ XmlElement* fileConfig = fileXml->createNewChildElement ("FileConfiguration");
+ fileConfig->setAttribute ("Name", createConfigName (config));
+
+ if (excludeFromBuild)
+ fileConfig->setAttribute ("ExcludedFromBuild", "true");
+
+ XmlElement* tool = createToolElement (*fileConfig, "VCCLCompilerTool");
+
+ if (useStdcall)
+ tool->setAttribute ("CallingConvention", "2");
+ }
+ }
+ }
+
+ XmlElement* createGroup (const String& groupName, XmlElement& parent)
+ {
+ XmlElement* filter = parent.createNewChildElement ("Filter");
+ filter->setAttribute ("Name", groupName);
+ return filter;
+ }
+
+ void addFiles (const Project::Item& projectItem, XmlElement& parent)
+ {
+ if (projectItem.isGroup())
+ {
+ XmlElement* filter = createGroup (projectItem.getName().toString(), parent);
+
+ for (int i = 0; i < projectItem.getNumChildren(); ++i)
+ addFiles (projectItem.getChild(i), *filter);
+ }
+ else
+ {
+ if (projectItem.shouldBeAddedToTargetProject())
+ {
+ const RelativePath path (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder);
+
+ addFile (path, parent,
+ projectItem.shouldBeAddedToBinaryResources() || (shouldFileBeCompiledByDefault (path) && ! projectItem.shouldBeCompiled()),
+ false);
+ }
+ }
+ }
+
+ void addGroup (XmlElement& parent, const String& groupName, const Array& files, const bool useStdcall)
+ {
+ if (files.size() > 0)
+ {
+ XmlElement* const group = createGroup (groupName, parent);
+
+ for (int i = 0; i < files.size(); ++i)
+ if (files.getReference(i).hasFileExtension ("cpp;c;h"))
+ addFile (files.getReference(i), *group, false,
+ useStdcall && shouldFileBeCompiledByDefault (files.getReference(i)));
+ }
}
+ void createFiles (XmlElement& files)
+ {
+ addFiles (project.getMainGroup(), files);
+
+ addGroup (files, project.getJuceCodeGroupName(), juceWrapperFiles, false);
+ addGroup (files, "Juce VST Wrapper", getVSTFilesRequired(), false);
+ addGroup (files, "Juce RTAS Wrapper", getRTASFilesRequired(), true);
+ }
+
+ //==============================================================================
XmlElement* createToolElement (XmlElement& parent, const String& toolName) const
{
XmlElement* const e = parent.createNewChildElement ("Tool");
@@ -436,15 +436,6 @@ private:
return e;
}
- const String getBinaryFileForConfig (const Project::BuildConfiguration& config) const
- {
- const String targetBinary (getSetting (config.isDebug().getValue() ? Ids::libraryName_Debug : Ids::libraryName_Release).toString().trim());
- if (targetBinary.isNotEmpty())
- return targetBinary;
-
- return config.getTargetBinaryName().toString() + getTargetBinarySuffix();
- }
-
void createConfig (XmlElement& xml, const Project::BuildConfiguration& config) const
{
String binariesPath (getConfigTargetPath (config));
@@ -622,62 +613,108 @@ private:
}
}
- const String createConfigName (const Project::BuildConfiguration& config) const
+ //==============================================================================
+ MSVCProjectExporterVC2008 (const MSVCProjectExporterVC2008&);
+ MSVCProjectExporterVC2008& operator= (const MSVCProjectExporterVC2008&);
+};
+
+
+//==============================================================================
+class MSVCProjectExporterVC2005 : public MSVCProjectExporterVC2008
+{
+public:
+ MSVCProjectExporterVC2005 (Project& project_, const ValueTree& settings_)
+ : MSVCProjectExporterVC2008 (project_, settings_, "VisualStudio2005")
{
- return config.getName().toString() + "|Win32";
+ name = getName();
+ }
+
+ ~MSVCProjectExporterVC2005() {}
+
+ static const char* getName() { return "Visual Studio 2005"; }
+ static const char* getValueTreeTypeName() { return "VS2005"; }
+
+ bool isDefaultFormatForCurrentOS() { return false; }
+
+ static MSVCProjectExporterVC2005* createForSettings (Project& project, const ValueTree& settings)
+ {
+ if (settings.hasType (getValueTreeTypeName()))
+ return new MSVCProjectExporterVC2005 (project, settings);
+
+ return 0;
}
+protected:
+ const String getProjectVersionString() const { return "8.00"; }
+ const String getSolutionVersionString() const { return String ("8.00") + newLine + "# Visual C++ Express 2005"; }
+
+ MSVCProjectExporterVC2005 (const MSVCProjectExporterVC2005&);
+ MSVCProjectExporterVC2005& operator= (const MSVCProjectExporterVC2005&);
+};
+
+
+//==============================================================================
+class MSVCProjectExporterVC6 : public MSVCProjectExporterBase
+{
+public:
//==============================================================================
- void writeSolutionFile (OutputStream& out)
+ MSVCProjectExporterVC6 (Project& project_, const ValueTree& settings_)
+ : MSVCProjectExporterBase (project_, settings_, "MSVC6")
{
- out << newLine << "Microsoft Visual Studio Solution File, Format Version ";
+ name = getName();
+ }
- switch (version)
- {
- case visualStudio2005: out << "8.00" << newLine << "# Visual C++ Express 2005"; break;
- case visualStudio2008: out << "10.00" << newLine << "# Visual C++ Express 2008"; break;
- default: jassertfalse; break;
- }
+ ~MSVCProjectExporterVC6() {}
- out << newLine << "Project(\"" << createGUID (project.getProjectName().toString() + "sln_guid") << "\") = \"" << project.getProjectName().toString() << "\", \""
- << getVCProjFile().getFileName() << "\", \"" << projectGUID << '"' << newLine
- << "EndProject" << newLine
- << "Global" << newLine
- << "\tGlobalSection(SolutionConfigurationPlatforms) = preSolution" << newLine;
+ static const char* getName() { return "Visual C++ 6.0"; }
+ static const char* getValueTreeTypeName() { return "MSVC6"; }
- int i;
- for (i = 0; i < project.getNumConfigurations(); ++i)
+ bool isDefaultFormatForCurrentOS() { return false; }
+ void launchProject() { getDSWFile().startAsProcess(); }
+
+ static MSVCProjectExporterVC6* createForSettings (Project& project, const ValueTree& settings)
+ {
+ if (settings.hasType (getValueTreeTypeName()))
+ return new MSVCProjectExporterVC6 (project, settings);
+
+ return 0;
+ }
+
+ //==============================================================================
+ const String create()
+ {
{
- Project::BuildConfiguration config (project.getConfiguration (i));
- out << "\t\t" << createConfigName (config) << " = " << createConfigName (config) << newLine;
- }
+ MemoryOutputStream mo;
+ writeProject (mo);
- out << "\tEndGlobalSection" << newLine
- << "\tGlobalSection(ProjectConfigurationPlatforms) = postSolution" << newLine;
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getDSPFile(), mo))
+ return "Can't write to the VC project file: " + getDSPFile().getFullPathName();
+ }
- for (i = 0; i < project.getNumConfigurations(); ++i)
{
- Project::BuildConfiguration config (project.getConfiguration (i));
- out << "\t\t" << projectGUID << "." << createConfigName (config) << ".ActiveCfg = " << createConfigName (config) << newLine;
- out << "\t\t" << projectGUID << "." << createConfigName (config) << ".Build.0 = " << createConfigName (config) << newLine;
+ MemoryOutputStream mo;
+ writeDSWFile (mo);
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getDSWFile(), mo))
+ return "Can't write to the VC solution file: " + getDSWFile().getFullPathName();
}
- out << "\tEndGlobalSection" << newLine
- << "\tGlobalSection(SolutionProperties) = preSolution" << newLine
- << "\t\tHideSolutionNode = FALSE" << newLine
- << "\tEndGlobalSection" << newLine
- << "EndGlobal" << newLine;
+ return String::empty;
}
+private:
+ const File getDSPFile() const { return getProjectFile (".dsp"); }
+ const File getDSWFile() const { return getProjectFile (".dsw"); }
+
//==============================================================================
- const String createConfigNameVC6 (const Project::BuildConfiguration& config) const
+ const String createConfigName (const Project::BuildConfiguration& config) const
{
return project.getProjectName().toString() + " - Win32 " + config.getName().toString();
}
- void writeVC6Project (OutputStream& out)
+ void writeProject (OutputStream& out)
{
- const String defaultConfigName (createConfigNameVC6 (project.getConfiguration (0)));
+ const String defaultConfigName (createConfigName (project.getConfiguration (0)));
const bool isDLL = project.isAudioPlugin() || project.isBrowserPlugin();
String targetType, targetCode;
@@ -708,7 +745,7 @@ private:
int i;
for (i = 0; i < project.getNumConfigurations(); ++i)
- out << "!MESSAGE \"" << createConfigNameVC6 (project.getConfiguration (i)) << "\" (based on " << targetType << ")" << newLine;
+ out << "!MESSAGE \"" << createConfigName (project.getConfiguration (i)) << "\" (based on " << targetType << ")" << newLine;
out << "!MESSAGE " << newLine
<< "# Begin Project" << newLine
@@ -724,7 +761,7 @@ private:
for (i = 0; i < project.getNumConfigurations(); ++i)
{
const Project::BuildConfiguration config (project.getConfiguration (i));
- const String configName (createConfigNameVC6 (config));
+ const String configName (createConfigName (config));
targetList << "# Name \"" << configName << '"' << newLine;
const String binariesPath (getConfigTargetPath (config));
@@ -790,15 +827,15 @@ private:
<< "# Begin Target" << newLine
<< targetList;
- writeFilesVC6 (out, project.getMainGroup());
- writeGroupVC6 (out, project.getJuceCodeGroupName(), juceWrapperFiles);
- writeGroupVC6 (out, "Juce VST Wrapper", getVSTFilesRequired());
+ writeFiles (out, project.getMainGroup());
+ writeGroup (out, project.getJuceCodeGroupName(), juceWrapperFiles);
+ writeGroup (out, "Juce VST Wrapper", getVSTFilesRequired());
out << "# End Target" << newLine
<< "# End Project" << newLine;
}
- void writeFileVC6 (OutputStream& out, const RelativePath& file, const bool excludeFromBuild)
+ void writeFile (OutputStream& out, const RelativePath& file, const bool excludeFromBuild)
{
jassert (file.getRoot() == RelativePath::buildTargetFolder);
@@ -811,7 +848,7 @@ private:
out << "# End Source File" << newLine;
}
- void writeFilesVC6 (OutputStream& out, const Project::Item& projectItem)
+ void writeFiles (OutputStream& out, const Project::Item& projectItem)
{
if (projectItem.isGroup())
{
@@ -819,25 +856,25 @@ private:
<< "# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;idl;hpj;bat\"" << newLine;
for (int i = 0; i < projectItem.getNumChildren(); ++i)
- writeFilesVC6 (out, projectItem.getChild (i));
+ writeFiles (out, projectItem.getChild (i));
out << "# End Group" << newLine;
}
else if (projectItem.shouldBeAddedToTargetProject())
{
const RelativePath path (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder);
- writeFileVC6 (out, path, projectItem.shouldBeAddedToBinaryResources() || (shouldFileBeCompiledByDefault (path) && ! projectItem.shouldBeCompiled()));
+ writeFile (out, path, projectItem.shouldBeAddedToBinaryResources() || (shouldFileBeCompiledByDefault (path) && ! projectItem.shouldBeCompiled()));
}
}
- void writeGroupVC6 (OutputStream& out, const String& groupName, const Array& files)
+ void writeGroup (OutputStream& out, const String& groupName, const Array& files)
{
if (files.size() > 0)
{
out << "# Begin Group \"" << groupName << '"' << newLine;
for (int i = 0; i < files.size(); ++i)
if (files.getReference(i).hasFileExtension ("cpp;c;h"))
- writeFileVC6 (out, files.getReference(i), false);
+ writeFile (out, files.getReference(i), false);
out << "# End Group" << newLine;
}
@@ -882,8 +919,400 @@ private:
<< "}}}" << newLine;
}
- MSVCProjectExporter (const MSVCProjectExporter&);
- MSVCProjectExporter& operator= (const MSVCProjectExporter&);
+ MSVCProjectExporterVC6 (const MSVCProjectExporterVC6&);
+ MSVCProjectExporterVC6& operator= (const MSVCProjectExporterVC6&);
+};
+
+
+//==============================================================================
+class MSVCProjectExporterVC2010 : public MSVCProjectExporterBase
+{
+public:
+ MSVCProjectExporterVC2010 (Project& project_, const ValueTree& settings_)
+ : MSVCProjectExporterBase (project_, settings_, "VisualStudio2010")
+ {
+ name = getName();
+ }
+
+ ~MSVCProjectExporterVC2010() {}
+
+ static const char* getName() { return "Visual Studio 2010"; }
+ static const char* getValueTreeTypeName() { return "VS2010"; }
+
+ bool isDefaultFormatForCurrentOS() { return false; }
+ void launchProject() { getSLNFile().startAsProcess(); }
+
+ static MSVCProjectExporterVC2010* createForSettings (Project& project, const ValueTree& settings)
+ {
+ if (settings.hasType (getValueTreeTypeName()))
+ return new MSVCProjectExporterVC2010 (project, settings);
+
+ return 0;
+ }
+
+ //==============================================================================
+ const String create()
+ {
+ {
+ XmlElement projectXml ("Project");
+ fillInProjectXml (projectXml);
+
+ MemoryOutputStream mo;
+ projectXml.writeToStream (mo, String::empty, false, true, "utf-8", 100);
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getVCProjFile(), mo))
+ return "Can't write to the VC project file: " + getVCProjFile().getFullPathName();
+ }
+
+ {
+ XmlElement filtersXml ("Project");
+ fillInFiltersXml (filtersXml);
+
+ MemoryOutputStream mo;
+ filtersXml.writeToStream (mo, String::empty, false, true, "utf-8", 100);
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getVCProjFiltersFile(), mo))
+ return "Can't write to the VC project file: " + getVCProjFiltersFile().getFullPathName();
+ }
+
+ {
+ MemoryOutputStream mo;
+ writeSolutionFile (mo, "11.00", getVCProjFile());
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (getSLNFile(), mo))
+ return "Can't write to the VC solution file: " + getSLNFile().getFullPathName();
+ }
+
+ return String::empty;
+ }
+
+protected:
+ const File getVCProjFile() const { return getProjectFile (".vcxproj"); }
+ const File getVCProjFiltersFile() const { return getProjectFile (".vcxproj.filters"); }
+ const File getSLNFile() const { return getProjectFile (".sln"); }
+
+ static const String createConfigName (const Project::BuildConfiguration& config)
+ {
+ return config.getName().toString() + "|Win32";
+ }
+
+ //==============================================================================
+ void fillInProjectXml (XmlElement& projectXml)
+ {
+ projectXml.setAttribute ("DefaultTargets", "Build");
+ projectXml.setAttribute ("ToolsVersion", "4.0");
+ projectXml.setAttribute ("xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
+
+ {
+ XmlElement* configsGroup = projectXml.createNewChildElement ("ItemGroup");
+ configsGroup->setAttribute ("Label", "ProjectConfigurations");
+
+ for (int i = 0; i < project.getNumConfigurations(); ++i)
+ {
+ Project::BuildConfiguration config (project.getConfiguration (i));
+
+ XmlElement* e = configsGroup->createNewChildElement ("ProjectConfiguration");
+ e->setAttribute ("Include", createConfigName (config));
+ e->createNewChildElement ("Configuration")->addTextElement (config.getName().toString());
+ e->createNewChildElement ("Platform")->addTextElement ("Win32");
+ }
+ }
+
+ {
+ XmlElement* globals = projectXml.createNewChildElement ("PropertyGroup");
+ globals->setAttribute ("Label", "Globals");
+ globals->createNewChildElement ("ProjectGuid")->addTextElement (projectGUID);
+ }
+
+ {
+ XmlElement* imports = projectXml.createNewChildElement ("Import");
+ imports->setAttribute ("Project", "$(VCTargetsPath)\\Microsoft.Cpp.Default.props");
+ }
+
+ for (int i = 0; i < project.getNumConfigurations(); ++i)
+ {
+ Project::BuildConfiguration config (project.getConfiguration (i));
+
+ XmlElement* e = projectXml.createNewChildElement ("PropertyGroup");
+ e->setAttribute ("Condition", "'$(Configuration)|$(Platform)'=='" + createConfigName (config) + "'");
+ e->setAttribute ("Label", "Configuration");
+ e->createNewChildElement ("ConfigurationType")->addTextElement (getProjectType());
+ e->createNewChildElement ("UseOfMfc")->addTextElement ("false");
+ e->createNewChildElement ("CharacterSet")->addTextElement ("MultiByte");
+
+ if (! config.isDebug().getValue())
+ e->createNewChildElement ("WholeProgramOptimization")->addTextElement ("true");
+ }
+
+ {
+ XmlElement* e = projectXml.createNewChildElement ("Import");
+ e->setAttribute ("Project", "$(VCTargetsPath)\\Microsoft.Cpp.props");
+ }
+
+ {
+ XmlElement* e = projectXml.createNewChildElement ("ImportGroup");
+ e->setAttribute ("Label", "ExtensionSettings");
+ }
+
+ {
+ XmlElement* e = projectXml.createNewChildElement ("ImportGroup");
+ e->setAttribute ("Label", "PropertySheets");
+ XmlElement* p = e->createNewChildElement ("Import");
+ p->setAttribute ("Project", "$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props");
+ p->setAttribute ("Condition", "exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')");
+ p->setAttribute ("Label", "LocalAppDataPlatform");
+ }
+
+ {
+ XmlElement* e = projectXml.createNewChildElement ("PropertyGroup");
+ e->setAttribute ("Label", "UserMacros");
+ }
+
+ {
+ XmlElement* props = projectXml.createNewChildElement ("PropertyGroup");
+ props->createNewChildElement ("_ProjectFileVersion")->addTextElement ("10.0.30319.1");
+
+ for (int i = 0; i < project.getNumConfigurations(); ++i)
+ {
+ Project::BuildConfiguration config (project.getConfiguration (i));
+
+ XmlElement* outdir = props->createNewChildElement ("OutDir");
+ outdir->setAttribute ("Condition", "'$(Configuration)|$(Platform)'=='" + createConfigName (config) + "'");
+ outdir->addTextElement (getConfigTargetPath (config) + "\\");
+
+ XmlElement* intdir = props->createNewChildElement ("IntDir");
+ intdir->setAttribute ("Condition", "'$(Configuration)|$(Platform)'=='" + createConfigName (config) + "'");
+ intdir->addTextElement (getConfigTargetPath (config) + "\\");
+
+ XmlElement* name = props->createNewChildElement ("TargetName");
+ name->setAttribute ("Condition", "'$(Configuration)|$(Platform)'=='" + createConfigName (config) + "'");
+ name->addTextElement (getBinaryFileForConfig (config).upToLastOccurrenceOf (".", false, false));
+ }
+ }
+
+ for (int i = 0; i < project.getNumConfigurations(); ++i)
+ {
+ Project::BuildConfiguration config (project.getConfiguration (i));
+ String binariesPath (getConfigTargetPath (config));
+ String intermediatesPath (getIntermediatesPath (config));
+ const bool isDebug = (bool) config.isDebug().getValue();
+ const String binaryName (File::createLegalFileName (config.getTargetBinaryName().toString()));
+ const String outputFileName (getBinaryFileForConfig (config));
+
+ XmlElement* group = projectXml.createNewChildElement ("ItemDefinitionGroup");
+ group->setAttribute ("Condition", "'$(Configuration)|$(Platform)'=='" + createConfigName (config) + "'");
+
+ XmlElement* midl = group->createNewChildElement ("Midl");
+ midl->createNewChildElement ("PreprocessorDefinitions")->addTextElement (isDebug ? "_DEBUG;%(PreprocessorDefinitions)"
+ : "NDEBUG;%(PreprocessorDefinitions)");
+ midl->createNewChildElement ("MkTypLibCompatible")->addTextElement ("true");
+ midl->createNewChildElement ("SuppressStartupBanner")->addTextElement ("true");
+ midl->createNewChildElement ("TargetEnvironment")->addTextElement ("Win32");
+ //midl->createNewChildElement ("TypeLibraryName")->addTextElement ("");
+ midl->createNewChildElement ("HeaderFileName");
+
+ XmlElement* cl = group->createNewChildElement ("ClCompile");
+ cl->createNewChildElement ("Optimization")->addTextElement (isDebug ? "Disabled" : "MaxSpeed");
+
+ if (isDebug)
+ cl->createNewChildElement ("DebugInformationFormat")->addTextElement ("EditAndContinue");
+
+ StringArray includePaths (getHeaderSearchPaths (config));
+ includePaths.add ("%(AdditionalIncludeDirectories)");
+ cl->createNewChildElement ("AdditionalIncludeDirectories")->addTextElement (includePaths.joinIntoString (";"));
+ cl->createNewChildElement ("PreprocessorDefinitions")->addTextElement (getPreprocessorDefs (config, ";") + ";%(PreprocessorDefinitions)");
+ cl->createNewChildElement ("RuntimeLibrary")->addTextElement (isRTAS() ? (isDebug ? "MultiThreadedDLLDebug" : "MultiThreadedDLL")
+ : (isDebug ? "MultiThreadedDebug" : "MultiThreaded"));
+ cl->createNewChildElement ("RuntimeTypeInfo")->addTextElement ("true");
+ cl->createNewChildElement ("PrecompiledHeader");
+ cl->createNewChildElement ("AssemblerListingLocation")->addTextElement (FileHelpers::windowsStylePath (intermediatesPath + "/"));
+ cl->createNewChildElement ("ObjectFileName")->addTextElement (FileHelpers::windowsStylePath (intermediatesPath + "/"));
+ cl->createNewChildElement ("ProgramDataBaseFileName")->addTextElement (FileHelpers::windowsStylePath (intermediatesPath + "/"));
+ cl->createNewChildElement ("WarningLevel")->addTextElement ("Level4");
+ cl->createNewChildElement ("SuppressStartupBanner")->addTextElement ("true");
+
+ XmlElement* res = group->createNewChildElement ("ResourceCompile");
+ res->createNewChildElement ("PreprocessorDefinitions")->addTextElement (isDebug ? "_DEBUG;%(PreprocessorDefinitions)"
+ : "NDEBUG;%(PreprocessorDefinitions)");
+
+ XmlElement* link = group->createNewChildElement ("Link");
+ link->createNewChildElement ("OutputFile")->addTextElement (FileHelpers::windowsStylePath (binariesPath + "/" + outputFileName));
+ link->createNewChildElement ("SuppressStartupBanner")->addTextElement ("true");
+ link->createNewChildElement ("IgnoreSpecificDefaultLibraries")->addTextElement (isDebug ? "libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)"
+ : "%(IgnoreSpecificDefaultLibraries)");
+ link->createNewChildElement ("GenerateDebugInformation")->addTextElement (isDebug ? "true" : "false");
+ link->createNewChildElement ("ProgramDatabaseFile")->addTextElement (FileHelpers::windowsStylePath (intermediatesPath + "/" + binaryName + ".pdb"));
+ link->createNewChildElement ("SubSystem")->addTextElement (project.isCommandLineApp() ? "Console" : "Windows");
+ link->createNewChildElement ("TargetMachine")->addTextElement ("MachineX86");
+
+ if (! isDebug)
+ {
+ link->createNewChildElement ("OptimizeReferences")->addTextElement ("true");
+ link->createNewChildElement ("EnableCOMDATFolding")->addTextElement ("true");
+ }
+
+ XmlElement* bsc = group->createNewChildElement ("Bscmake");
+ bsc->createNewChildElement ("SuppressStartupBanner")->addTextElement ("true");
+ bsc->createNewChildElement ("OutputFile")->addTextElement (FileHelpers::windowsStylePath (intermediatesPath + "/" + binaryName + ".bsc"));
+ }
+
+ {
+ XmlElement* cppFiles = projectXml.createNewChildElement ("ItemGroup");
+ XmlElement* headerFiles = projectXml.createNewChildElement ("ItemGroup");
+
+ addFilesToCompile (project.getMainGroup(), *cppFiles, *headerFiles);
+ addFilesToCompile (juceWrapperFiles, *cppFiles, *headerFiles, false);
+ addFilesToCompile (getVSTFilesRequired(), *cppFiles, *headerFiles, false);
+ addFilesToCompile (getRTASFilesRequired(), *cppFiles, *headerFiles, true);
+ }
+
+ {
+ XmlElement* e = projectXml.createNewChildElement ("Import");
+ e->setAttribute ("Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets");
+ }
+
+ {
+ XmlElement* e = projectXml.createNewChildElement ("ImportGroup");
+ e->setAttribute ("Label", "ExtensionTargets");
+ }
+ }
+
+ const String getProjectType() const
+ {
+ if (project.isGUIApplication())
+ return "Application";
+ else if (project.isAudioPlugin() || project.isBrowserPlugin())
+ return "DynamicLibrary";
+ else if (project.isLibrary())
+ return "StaticLibrary";
+
+ jassertfalse;
+ return String::empty;
+ }
+
+ //==============================================================================
+ void addFileToCompile (const RelativePath& file, XmlElement& cpps, XmlElement& headers, const bool excludeFromBuild, const bool useStdcall)
+ {
+ jassert (file.getRoot() == RelativePath::buildTargetFolder);
+
+ if (file.hasFileExtension ("cpp;c"))
+ {
+ XmlElement* e = cpps.createNewChildElement ("ClCompile");
+ e->setAttribute ("Include", file.toWindowsStyle());
+
+ if (excludeFromBuild)
+ e->createNewChildElement ("ExcludedFromBuild")->addTextElement ("true");
+
+ if (useStdcall)
+ {
+ jassertfalse;
+ }
+ }
+ else if (file.hasFileExtension ("h"))
+ {
+ headers.createNewChildElement ("ClInclude")->setAttribute ("Include", file.toWindowsStyle());
+ }
+ }
+
+ void addFilesToCompile (const Array& files, XmlElement& cpps, XmlElement& headers, bool useStdCall)
+ {
+ for (int i = 0; i < files.size(); ++i)
+ addFileToCompile (files.getReference(i), cpps, headers, false,
+ useStdCall && shouldFileBeCompiledByDefault (files.getReference(i)));
+ }
+
+ void addFilesToCompile (const Project::Item& projectItem, XmlElement& cpps, XmlElement& headers)
+ {
+ if (projectItem.isGroup())
+ {
+ for (int i = 0; i < projectItem.getNumChildren(); ++i)
+ addFilesToCompile (projectItem.getChild(i), cpps, headers);
+ }
+ else
+ {
+ if (projectItem.shouldBeAddedToTargetProject())
+ {
+ const RelativePath path (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder);
+
+ if (path.hasFileExtension ("h") || (path.hasFileExtension ("cpp;c") && projectItem.shouldBeCompiled()))
+ addFileToCompile (path, cpps, headers, false, false);
+ }
+ }
+ }
+
+ //==============================================================================
+ void addFilterGroup (XmlElement& groups, const String& path)
+ {
+ XmlElement* e = groups.createNewChildElement ("Filter");
+ e->setAttribute ("Include", path);
+ e->createNewChildElement ("UniqueIdentifier")->addTextElement (createGUID (path + "_guidpathsaltxhsdf"));
+ }
+
+ void addFileToFilter (const RelativePath& file, const String& groupPath, XmlElement& cpps, XmlElement& headers)
+ {
+ XmlElement* e;
+
+ if (file.hasFileExtension ("h"))
+ e = headers.createNewChildElement ("ClInclude");
+ else
+ e = cpps.createNewChildElement ("ClCompile");
+
+ jassert (file.getRoot() == RelativePath::buildTargetFolder);
+ e->setAttribute ("Include", file.toWindowsStyle());
+ e->createNewChildElement ("Filter")->addTextElement (groupPath);
+ }
+
+ void addFilesToFilter (const Project::Item& projectItem, const String& path, XmlElement& cpps, XmlElement& headers, XmlElement& groups)
+ {
+ if (projectItem.isGroup())
+ {
+ addFilterGroup (groups, path);
+
+ for (int i = 0; i < projectItem.getNumChildren(); ++i)
+ addFilesToFilter (projectItem.getChild(i),
+ (path.isEmpty() ? String::empty : (path + "\\")) + projectItem.getChild(i).getName().toString(),
+ cpps, headers, groups);
+ }
+ else
+ {
+ if (projectItem.shouldBeAddedToTargetProject())
+ {
+ addFileToFilter (RelativePath (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder),
+ path.upToLastOccurrenceOf ("\\", false, false), cpps, headers);
+ }
+ }
+ }
+
+ void addFilesToFilter (const Array& files, const String& path, XmlElement& cpps, XmlElement& headers, XmlElement& groups)
+ {
+ if (files.size() > 0)
+ {
+ addFilterGroup (groups, path);
+
+ for (int i = 0; i < files.size(); ++i)
+ addFileToFilter (files.getReference(i), path, cpps, headers);
+ }
+ }
+
+ void fillInFiltersXml (XmlElement& filterXml)
+ {
+ filterXml.setAttribute ("ToolsVersion", "4.0");
+ filterXml.setAttribute ("xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
+
+ XmlElement* groups = filterXml.createNewChildElement ("ItemGroup");
+ XmlElement* cpps = filterXml.createNewChildElement ("ItemGroup");
+ XmlElement* headers = filterXml.createNewChildElement ("ItemGroup");
+
+ addFilesToFilter (project.getMainGroup(), project.getProjectName().toString(), *cpps, *headers, *groups);
+
+ addFilesToFilter (juceWrapperFiles, project.getJuceCodeGroupName(), *cpps, *headers, *groups);
+ addFilesToFilter (getVSTFilesRequired(), "Juce VST Wrapper", *cpps, *headers, *groups);
+ addFilesToFilter (getRTASFilesRequired(), "Juce RTAS Wrapper", *cpps, *headers, *groups);
+ }
+
+ //==============================================================================
+ MSVCProjectExporterVC2010 (const MSVCProjectExporterVC2010&);
+ MSVCProjectExporterVC2010& operator= (const MSVCProjectExporterVC2010&);
};
diff --git a/extras/Jucer (experimental)/Source/model/Project/jucer_ProjectExporter.cpp b/extras/Jucer (experimental)/Source/model/Project/jucer_ProjectExporter.cpp
index 3b781802bb..ca81db6f42 100644
--- a/extras/Jucer (experimental)/Source/model/Project/jucer_ProjectExporter.cpp
+++ b/extras/Jucer (experimental)/Source/model/Project/jucer_ProjectExporter.cpp
@@ -50,9 +50,10 @@ const StringArray ProjectExporter::getExporterNames()
StringArray s;
s.add (XCodeProjectExporter::getNameMac());
s.add (XCodeProjectExporter::getNameiPhone());
- s.add (MSVCProjectExporter::getNameVC6());
- s.add (MSVCProjectExporter::getName2005());
- s.add (MSVCProjectExporter::getName2008());
+ s.add (MSVCProjectExporterVC6::getName());
+ s.add (MSVCProjectExporterVC2005::getName());
+ s.add (MSVCProjectExporterVC2008::getName());
+ s.add (MSVCProjectExporterVC2010::getName());
s.add (MakefileProjectExporter::getNameLinux());
return s;
}
@@ -65,10 +66,11 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int
{
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 MSVCProjectExporter (project, ValueTree (MSVCProjectExporter::getValueTreeTypeName (MSVCProjectExporter::visualStudio6)), MSVCProjectExporter::visualStudio6); break;
- case 3: exp = new MSVCProjectExporter (project, ValueTree (MSVCProjectExporter::getValueTreeTypeName (MSVCProjectExporter::visualStudio2005)), MSVCProjectExporter::visualStudio2005); break;
- case 4: exp = new MSVCProjectExporter (project, ValueTree (MSVCProjectExporter::getValueTreeTypeName (MSVCProjectExporter::visualStudio2008)), MSVCProjectExporter::visualStudio2008); break;
- case 5: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter::getValueTreeTypeName())); break;
+ case 2: exp = new MSVCProjectExporterVC6 (project, ValueTree (MSVCProjectExporterVC6::getValueTreeTypeName())); break;
+ case 3: exp = new MSVCProjectExporterVC2005 (project, ValueTree (MSVCProjectExporterVC2005::getValueTreeTypeName())); break;
+ case 4: exp = new MSVCProjectExporterVC2008 (project, ValueTree (MSVCProjectExporterVC2008::getValueTreeTypeName())); break;
+ case 5: exp = new MSVCProjectExporterVC2010 (project, ValueTree (MSVCProjectExporterVC2010::getValueTreeTypeName())); break;
+ case 6: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter::getValueTreeTypeName())); break;
default: jassertfalse; return 0;
}
@@ -85,13 +87,12 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int
ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueTree& settings)
{
- ProjectExporter* exp = MSVCProjectExporter::createForSettings (project, settings);
-
- if (exp == 0)
- exp = XCodeProjectExporter::createForSettings (project, settings);
-
- if (exp == 0)
- exp = MakefileProjectExporter::createForSettings (project, settings);
+ ProjectExporter* exp = MSVCProjectExporterVC6::createForSettings (project, settings);
+ if (exp == 0) exp = MSVCProjectExporterVC2005::createForSettings (project, settings);
+ if (exp == 0) exp = MSVCProjectExporterVC2008::createForSettings (project, settings);
+ if (exp == 0) exp = MSVCProjectExporterVC2010::createForSettings (project, settings);
+ if (exp == 0) exp = XCodeProjectExporter::createForSettings (project, settings);
+ if (exp == 0) exp = MakefileProjectExporter::createForSettings (project, settings);
jassert (exp != 0);
return exp;
diff --git a/extras/Jucer (experimental)/Source/ui/Editor Base/jucer_EditorCanvas.cpp b/extras/Jucer (experimental)/Source/ui/Editor Base/jucer_EditorCanvas.cpp
index dc6c2540f6..cc9b74d46b 100644
--- a/extras/Jucer (experimental)/Source/ui/Editor Base/jucer_EditorCanvas.cpp
+++ b/extras/Jucer (experimental)/Source/ui/Editor Base/jucer_EditorCanvas.cpp
@@ -597,6 +597,7 @@ EditorCanvasBase::EditorCanvasBase()
: border (8, 8, 14, 14)
{
//setOpaque (true);
+ addChildComponent (&spacebarDragOverlay);
}
EditorCanvasBase::~EditorCanvasBase()
@@ -616,8 +617,9 @@ void EditorCanvasBase::initialise()
void EditorCanvasBase::shutdown()
{
dragger = 0;
- deleteAndZero (overlay);
- deleteAllChildren();
+ resizeFrame = 0;
+ overlay = 0;
+ componentHolder = 0;
}
EditorPanelBase* EditorCanvasBase::getPanel() const
@@ -680,6 +682,16 @@ void EditorCanvasBase::paint (Graphics& g)
{
}
+bool EditorCanvasBase::keyStateChanged (bool)
+{
+ return spacebarDragOverlay.updateVisibility();
+}
+
+bool EditorCanvasBase::keyPressed (const KeyPress& key)
+{
+ return key.isKeyCode (KeyPress::spaceKey); // required to consume the spacebar events and avoid a warning beep
+}
+
void EditorCanvasBase::setScale (const Scale& newScale)
{
jassertfalse;
@@ -735,6 +747,7 @@ void EditorCanvasBase::resized()
componentHolder->setBounds (getContentArea());
overlay->setBounds (getLocalBounds());
resizeFrame->setBounds (getLocalBounds());
+ spacebarDragOverlay.setBounds (getLocalBounds());
overlay->update();
handleUpdateNowIfNeeded();
}
@@ -798,6 +811,58 @@ const Point EditorCanvasBase::OverlayItemComponent::pointToLocalSpace (co
- getPosition()).toFloat();
}
+//==============================================================================
+EditorCanvasBase::SpacebarDragOverlay::SpacebarDragOverlay()
+{
+ setAlwaysOnTop (true);
+ setMouseCursor (MouseCursor::DraggingHandCursor);
+}
+
+EditorCanvasBase::SpacebarDragOverlay::~SpacebarDragOverlay()
+{
+}
+
+bool EditorCanvasBase::SpacebarDragOverlay::updateVisibility()
+{
+ bool isSpaceDown = KeyPress::isKeyCurrentlyDown (KeyPress::spaceKey);
+
+ if (isSpaceDown == isVisible())
+ return false;
+
+ setVisible (isSpaceDown);
+ return true;
+}
+
+void EditorCanvasBase::SpacebarDragOverlay::paint (Graphics&)
+{
+}
+
+void EditorCanvasBase::SpacebarDragOverlay::mouseMove (const MouseEvent& e)
+{
+ updateVisibility();
+}
+
+void EditorCanvasBase::SpacebarDragOverlay::mouseDown (const MouseEvent& e)
+{
+ Viewport* vp = findParentComponentOfClass ((Viewport*) 0);
+
+ if (vp != 0)
+ dragStart = vp->getViewPosition();
+}
+
+void EditorCanvasBase::SpacebarDragOverlay::mouseDrag (const MouseEvent& e)
+{
+ Viewport* vp = findParentComponentOfClass ((Viewport*) 0);
+
+ if (vp != 0)
+ vp->setViewPosition (dragStart - Point (e.getDistanceFromDragStartX(),
+ e.getDistanceFromDragStartY()));
+}
+
+void EditorCanvasBase::SpacebarDragOverlay::modifierKeysChanged (const ModifierKeys& modifiers)
+{
+}
+
//==============================================================================
EditorCanvasBase::Scale::Scale()
: scale (1.0)
diff --git a/extras/Jucer (experimental)/Source/ui/Editor Base/jucer_EditorCanvas.h b/extras/Jucer (experimental)/Source/ui/Editor Base/jucer_EditorCanvas.h
index b121108ea5..1a7b3b728c 100644
--- a/extras/Jucer (experimental)/Source/ui/Editor Base/jucer_EditorCanvas.h
+++ b/extras/Jucer (experimental)/Source/ui/Editor Base/jucer_EditorCanvas.h
@@ -49,6 +49,8 @@ public:
//==============================================================================
void paint (Graphics& g);
void resized();
+ bool keyStateChanged (bool isKeyDown);
+ bool keyPressed (const KeyPress& key);
const Rectangle getContentArea() const;
@@ -169,10 +171,29 @@ protected:
class DocumentResizeFrame;
class OverlayComponent;
+ class SpacebarDragOverlay : public Component
+ {
+ public:
+ SpacebarDragOverlay();
+ ~SpacebarDragOverlay();
+
+ bool updateVisibility();
+
+ void paint (Graphics&);
+ void mouseMove (const MouseEvent& e);
+ void mouseDown (const MouseEvent& e);
+ void mouseDrag (const MouseEvent& e);
+ void modifierKeysChanged (const ModifierKeys& modifiers);
+
+ private:
+ Point dragStart;
+ };
+
//==============================================================================
- Component* componentHolder;
- OverlayComponent* overlay;
- DocumentResizeFrame* resizeFrame;
+ ScopedPointer componentHolder;
+ ScopedPointer overlay;
+ ScopedPointer resizeFrame;
+ SpacebarDragOverlay spacebarDragOverlay;
ScopedPointer dragger;
void handleAsyncUpdate();
diff --git a/extras/Jucer (experimental)/Source/utility/jucer_MarkerListBase.h b/extras/Jucer (experimental)/Source/utility/jucer_MarkerListBase.h
index 57fedeee3d..ab71f00e54 100644
--- a/extras/Jucer (experimental)/Source/utility/jucer_MarkerListBase.h
+++ b/extras/Jucer (experimental)/Source/utility/jucer_MarkerListBase.h
@@ -60,7 +60,7 @@ public:
}
}
- virtual void createMarker (const String& name, int position) = 0;
+ virtual void createMarker (const String& name, double position) = 0;
virtual void deleteMarker (ValueTree& markerState) = 0;
//==============================================================================
diff --git a/extras/amalgamator/Builds/VisualStudio2005/Amalgamator.vcproj b/extras/amalgamator/Builds/VisualStudio2005/Amalgamator.vcproj
index 76dcbf6771..be2c474bae 100644
--- a/extras/amalgamator/Builds/VisualStudio2005/Amalgamator.vcproj
+++ b/extras/amalgamator/Builds/VisualStudio2005/Amalgamator.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
CFBundleExecutable
- ${EXECUTABLE_NAME}
+ ${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
diff --git a/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj b/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj
index 568bf7a75c..4489f0904d 100644
--- a/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj
+++ b/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
CFBundleExecutable
- ${EXECUTABLE_NAME}
+ ${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
diff --git a/extras/audio plugins/demo/Builds/VisualStudio2005/JuceDemoPlugin.vcproj b/extras/audio plugins/demo/Builds/VisualStudio2005/JuceDemoPlugin.vcproj
index 5791e73cd7..5a1f0ab96a 100644
--- a/extras/audio plugins/demo/Builds/VisualStudio2005/JuceDemoPlugin.vcproj
+++ b/extras/audio plugins/demo/Builds/VisualStudio2005/JuceDemoPlugin.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
-
-
-
-
CFBundleExecutable
- ${EXECUTABLE_NAME}
+ ${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
diff --git a/extras/example projects/Builds/VisualStudio2005/HelloWorld.vcproj b/extras/example projects/Builds/VisualStudio2005/HelloWorld.vcproj
index 23bc7d745f..8dea3e7dba 100644
--- a/extras/example projects/Builds/VisualStudio2005/HelloWorld.vcproj
+++ b/extras/example projects/Builds/VisualStudio2005/HelloWorld.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
CFBundleExecutable
- ${EXECUTABLE_NAME}
+ ${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
diff --git a/extras/juce demo/Builds/MacOSX/Info.plist b/extras/juce demo/Builds/MacOSX/Info.plist
index cef430999d..fbc0914d22 100644
--- a/extras/juce demo/Builds/MacOSX/Info.plist
+++ b/extras/juce demo/Builds/MacOSX/Info.plist
@@ -4,7 +4,7 @@
CFBundleExecutable
- ${EXECUTABLE_NAME}
+ ${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
diff --git a/extras/juce demo/Builds/VisualStudio2005/Juce Demo.vcproj b/extras/juce demo/Builds/VisualStudio2005/Juce Demo.vcproj
index 2a3dc74758..0032c41608 100644
--- a/extras/juce demo/Builds/VisualStudio2005/Juce Demo.vcproj
+++ b/extras/juce demo/Builds/VisualStudio2005/Juce Demo.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extras/juce demo/Builds/VisualStudio2008/Juce Demo.vcproj b/extras/juce demo/Builds/VisualStudio2008/Juce Demo.vcproj
index 2967d3d7f3..22b71fbe6f 100644
--- a/extras/juce demo/Builds/VisualStudio2008/Juce Demo.vcproj
+++ b/extras/juce demo/Builds/VisualStudio2008/Juce Demo.vcproj
@@ -10,7 +10,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extras/juce demo/Builds/VisualStudio2010/Juce Demo.sln b/extras/juce demo/Builds/VisualStudio2010/Juce Demo.sln
new file mode 100644
index 0000000000..d9ead8d9ee
--- /dev/null
+++ b/extras/juce demo/Builds/VisualStudio2010/Juce Demo.sln
@@ -0,0 +1,19 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+Project("{7A947A64-CDD8-D41D-F886-5E65A8ABDF81}") = "Juce Demo", "Juce Demo.vcxproj", "{36211E76-A802-50EE-3B95-0202F4EB67ED}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {36211E76-A802-50EE-3B95-0202F4EB67ED}.Debug|Win32.ActiveCfg = Debug|Win32
+ {36211E76-A802-50EE-3B95-0202F4EB67ED}.Debug|Win32.Build.0 = Debug|Win32
+ {36211E76-A802-50EE-3B95-0202F4EB67ED}.Release|Win32.ActiveCfg = Release|Win32
+ {36211E76-A802-50EE-3B95-0202F4EB67ED}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/extras/juce demo/Builds/VisualStudio2010/Juce Demo.vcxproj b/extras/juce demo/Builds/VisualStudio2010/Juce Demo.vcxproj
new file mode 100644
index 0000000000..0b51703f25
--- /dev/null
+++ b/extras/juce demo/Builds/VisualStudio2010/Juce Demo.vcxproj
@@ -0,0 +1,168 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {36211E76-A802-50EE-3B95-0202F4EB67ED}
+
+
+
+ Application
+ false
+ MultiByte
+
+
+ Application
+ false
+ MultiByte
+ true
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ .\Debug\
+ .\Debug\
+ JuceDemo
+ .\Release\
+ .\Release\
+ JuceDemo
+
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ true
+ true
+ Win32
+
+
+
+ Disabled
+ EditAndContinue
+ %(AdditionalIncludeDirectories)
+ JUCER_VS2010_78A501D;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)
+ MultiThreadedDebug
+ true
+
+ .\Debug\
+ .\Debug\
+ .\Debug\
+ Level4
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+ .\Debug\JuceDemo.exe
+ true
+ libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)
+ true
+ .\Debug\JuceDemo.pdb
+ Windows
+ MachineX86
+
+
+ true
+ .\Debug\JuceDemo.bsc
+
+
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ true
+ true
+ Win32
+
+
+
+ MaxSpeed
+ %(AdditionalIncludeDirectories)
+ JUCER_VS2010_78A501D;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)
+ MultiThreaded
+ true
+
+ .\Release\
+ .\Release\
+ .\Release\
+ Level4
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+ .\Release\JuceDemo.exe
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ false
+ .\Release\JuceDemo.pdb
+ Windows
+ MachineX86
+ true
+ true
+
+
+ true
+ .\Release\JuceDemo.bsc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/juce demo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters b/extras/juce demo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters
new file mode 100644
index 0000000000..651b8d318a
--- /dev/null
+++ b/extras/juce demo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters
@@ -0,0 +1,154 @@
+
+
+
+
+
+ {D3C1BE7C-161D-78D2-AA4A-AE5B28A49DC5}
+
+
+ {D4BFDBA1-04DA-1AF7-BEDF-7A5C63D00D65}
+
+
+ {383A10E9-7C30-CC23-0554-D95AC593AAFC}
+
+
+ {6E0A4587-C5D5-BB9D-A788-42A182380C69}
+
+
+ {F7048EA6-F4B2-F31B-E402-E05D678A1111}
+
+
+
+
+ Juce Demo\Source
+
+
+ Juce Demo\Source
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Binary Data
+
+
+ Juce Demo\Source\Binary Data
+
+
+ Juce Demo\Source\Binary Data
+
+
+ Juce Demo\Source\Binary Data
+
+
+ Juce Demo\Source\Binary Data
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+
+
+ Juce Demo\Source
+
+
+ Juce Demo\Source
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Demo\Source\Demos
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+ Juce Library Code
+
+
+
diff --git a/extras/juce demo/Builds/iPhone/Info.plist b/extras/juce demo/Builds/iPhone/Info.plist
index cef430999d..fbc0914d22 100644
--- a/extras/juce demo/Builds/iPhone/Info.plist
+++ b/extras/juce demo/Builds/iPhone/Info.plist
@@ -4,7 +4,7 @@
CFBundleExecutable
- ${EXECUTABLE_NAME}
+ ${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
diff --git a/extras/juce demo/Juce Demo.jucer b/extras/juce demo/Juce Demo.jucer
index 355914ee01..4a9fc8780f 100644
--- a/extras/juce demo/Juce Demo.jucer
+++ b/extras/juce demo/Juce Demo.jucer
@@ -18,6 +18,8 @@
+
updateContextPosition();
+
+ if (! isShowingNow)
+ {
+ const ScopedLock sl (owner->getContextLock());
+ owner->deleteContext();
+ }
}
}
diff --git a/src/text/juce_XmlElement.cpp b/src/text/juce_XmlElement.cpp
index e6c01f4e52..cc15a419a7 100644
--- a/src/text/juce_XmlElement.cpp
+++ b/src/text/juce_XmlElement.cpp
@@ -160,7 +160,7 @@ namespace XmlOutputFunctions
|| (character >= '0' && character <= '9'))
return true;
- const char* t = " .,;:-()_+=?!'#@[]/\\*%~{}";
+ const char* t = " .,;:-()_+=?!'#@[]/\\*%~{}$|";
do
{
@@ -189,7 +189,7 @@ namespace XmlOutputFunctions
static bool isLegalXmlChar (const uint32 c) throw()
{
- static const unsigned char legalChars[] = { 0, 0, 0, 0, 171, 255, 255, 175, 255, 255, 255, 191, 254, 255, 255, 111 };
+ static const unsigned char legalChars[] = { 0, 0, 0, 0, 187, 255, 255, 175, 255, 255, 255, 191, 254, 255, 255, 127 };
return c < sizeof (legalChars) * 8
&& (legalChars [c >> 3] & (1 << (c & 7))) != 0;