| @@ -71,8 +71,8 @@ static bool canFileBeReincluded (const File& f) | |||
| //============================================================================== | |||
| static bool parseFile (const File& rootFolder, | |||
| const File& newTargetFile, | |||
| StringArray& dest, | |||
| const File& file, | |||
| StringArray& dest, | |||
| const File& file, | |||
| StringArray& alreadyIncludedFiles, | |||
| const StringArray& includesToIgnore, | |||
| const StringArray& wildcards, | |||
| @@ -133,18 +133,18 @@ static bool parseFile (const File& rootFolder, | |||
| alreadyIncludedFiles.add (targetFile.getFullPathName()); | |||
| dest.add (String::empty); | |||
| dest.add (T("/********* Start of inlined file: ") | |||
| dest.add (T("/********* Start of inlined file: ") | |||
| + targetFile.getFileName() | |||
| + T(" *********/")); | |||
| if (! parseFile (rootFolder, newTargetFile, | |||
| if (! parseFile (rootFolder, newTargetFile, | |||
| dest, targetFile, alreadyIncludedFiles, includesToIgnore, | |||
| wildcards, false, stripUnnecessaryStuff)) | |||
| { | |||
| return false; | |||
| } | |||
| dest.add (T("/********* End of inlined file: ") | |||
| dest.add (T("/********* End of inlined file: ") | |||
| + targetFile.getFileName() | |||
| + T(" *********/")); | |||
| dest.add (String::empty); | |||
| @@ -192,9 +192,9 @@ static bool munge (const File& templateFile, const File& targetFile, const Strin | |||
| wildcards.trim(); | |||
| wildcards.removeEmptyStrings(); | |||
| if (! parseFile (targetFile.getParentDirectory(), | |||
| if (! parseFile (targetFile.getParentDirectory(), | |||
| targetFile, | |||
| lines, templateFile, | |||
| lines, templateFile, | |||
| alreadyIncludedFiles, | |||
| includesToIgnore, | |||
| wildcards, | |||
| @@ -296,7 +296,7 @@ static void mungeJuce (const File& juceFolder) | |||
| //============================================================================== | |||
| int main (int argc, char* argv[]) | |||
| { | |||
| // If you're running a command-line app, you need to initialise juce manually | |||
| // If you're running a command-line app, you need to initialise juce manually | |||
| // before calling any Juce functionality.. | |||
| initialiseJuce_NonGUI(); | |||
| @@ -327,10 +327,9 @@ int main (int argc, char* argv[]) | |||
| " ignoring any repeated instances of it.\n\n" | |||
| " The wildcard lets you specify what kind of files will be replaced, so\n" | |||
| " \"*.cpp;*.h\" would replace only includes that reference a .cpp or .h file.\n\n" | |||
| " Or: just run 'amalgamator YourJuceDirectory' to rebuild the juce files." | |||
| " Or: just run 'amalgamator YourJuceDirectory' to rebuild the juce files." | |||
| ); | |||
| } | |||
| return 0; | |||
| } | |||
| @@ -1,5 +1,5 @@ | |||
| /* | |||
| This file contains settings that you might want to explicitly apply to | |||
| This file contains settings that you might want to explicitly apply to | |||
| your Juce build. | |||
| These flags enable or disable juce features - if you're linking to juce as | |||
| @@ -8,7 +8,7 @@ | |||
| just include this file before including your juce_amalgamated.cpp file to | |||
| have the same effect. | |||
| If you leave any of these commented-out, they'll take on the default value | |||
| If you leave any of these commented-out, they'll take on the default value | |||
| assigned to them in juce_Config.h, so to force them on or off, just set them | |||
| to an explicit 0 or 1 in here. | |||
| */ | |||
| @@ -1,10 +1,10 @@ | |||
| /* | |||
| /* | |||
| This file includes the entire juce source tree via the amalgamated file. | |||
| You could add the amalgamated file directly to your project, but doing it | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| the source code. | |||
| */ | |||
| @@ -1,10 +1,10 @@ | |||
| /* | |||
| /* | |||
| This file includes the entire juce source tree via the amalgamated file. | |||
| You could add the amalgamated file directly to your project, but doing it | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| the source code. | |||
| */ | |||
| @@ -45,7 +45,7 @@ public: | |||
| void prepareToPlay (double sampleRate, int samplesPerBlock); | |||
| void releaseResources(); | |||
| void processBlock (AudioSampleBuffer& buffer, | |||
| void processBlock (AudioSampleBuffer& buffer, | |||
| MidiBuffer& midiMessages); | |||
| //============================================================================== | |||
| @@ -17,7 +17,7 @@ | |||
| //============================================================================== | |||
| static int addFile (const File& file, | |||
| const String& classname, | |||
| const String& classname, | |||
| OutputStream& headerStream, | |||
| OutputStream& cppStream) | |||
| { | |||
| @@ -29,7 +29,7 @@ static int addFile (const File& file, | |||
| .replaceCharacter ('.', '_') | |||
| .retainCharacters (T("abcdefghijklmnopqrstuvwxyz_0123456789"))); | |||
| printf ("Adding %s: %d bytes\n", | |||
| printf ("Adding %s: %d bytes\n", | |||
| (const char*) name, | |||
| mb.getSize()); | |||
| @@ -59,8 +59,8 @@ static int addFile (const File& file, | |||
| cppStream.printf ("%d,0,0};\r\n", (int) data[i]); | |||
| cppStream.printf ("const char* %s::%s = (const char*) temp%d;\r\n\r\n", | |||
| (const char*) classname, | |||
| (const char*) name, | |||
| (const char*) classname, | |||
| (const char*) name, | |||
| tempNum); | |||
| return mb.getSize(); | |||
| @@ -78,7 +78,7 @@ static bool isHiddenFile (const File& f, const File& root) | |||
| //============================================================================== | |||
| int main (int argc, char* argv[]) | |||
| { | |||
| // If you're running a command-line app, you need to initialise juce manually | |||
| // If you're running a command-line app, you need to initialise juce manually | |||
| // before calling any Juce functionality.. | |||
| initialiseJuce_NonGUI(); | |||
| @@ -128,15 +128,15 @@ int main (int argc, char* argv[]) | |||
| const File cppFile (destDirectory.getChildFile (className).withFileExtension (T(".cpp"))); | |||
| String message; | |||
| message << "Creating " << headerFile.getFullPathName() | |||
| message << "Creating " << headerFile.getFullPathName() | |||
| << " and " << cppFile.getFullPathName() | |||
| << " from files in " << sourceDirectory.getFullPathName() | |||
| << " from files in " << sourceDirectory.getFullPathName() | |||
| << "...\n\n"; | |||
| printf ((const char*) message); | |||
| OwnedArray <File> files; | |||
| sourceDirectory.findChildFiles (files, File::findFiles, true, | |||
| sourceDirectory.findChildFiles (files, File::findFiles, true, | |||
| (argc > 4) ? argv[4] : "*"); | |||
| if (files.size() == 0) | |||
| @@ -1,5 +1,5 @@ | |||
| /* | |||
| This file contains settings that you might want to explicitly apply to | |||
| This file contains settings that you might want to explicitly apply to | |||
| your Juce build. | |||
| These flags enable or disable juce features - if you're linking to juce as | |||
| @@ -8,7 +8,7 @@ | |||
| just include this file before including your juce_amalgamated.cpp file to | |||
| have the same effect. | |||
| If you leave any of these commented-out, they'll take on the default value | |||
| If you leave any of these commented-out, they'll take on the default value | |||
| assigned to them in juce_Config.h, so to force them on or off, just set them | |||
| to an explicit 0 or 1 in here. | |||
| */ | |||
| @@ -1,10 +1,10 @@ | |||
| /* | |||
| /* | |||
| This file includes the entire juce source tree via the amalgamated file. | |||
| You could add the amalgamated file directly to your project, but doing it | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| the source code. | |||
| */ | |||
| @@ -1,10 +1,10 @@ | |||
| /* | |||
| /* | |||
| This file includes the entire juce source tree via the amalgamated file. | |||
| You could add the amalgamated file directly to your project, but doing it | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| the source code. | |||
| */ | |||
| @@ -11,7 +11,7 @@ | |||
| #include "MainComponent.h" | |||
| //============================================================================== | |||
| /** | |||
| /** | |||
| This is the top-level window that we'll pop up. Inside it, we'll create and | |||
| show a component from the MainComponent.cpp file (you can open this file using | |||
| the Jucer to edit it). | |||
| @@ -20,13 +20,13 @@ class HelloWorldWindow : public DocumentWindow | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| HelloWorldWindow() | |||
| HelloWorldWindow() | |||
| : DocumentWindow (T("JUCE Hello World!"), | |||
| Colours::lightgrey, | |||
| Colours::lightgrey, | |||
| DocumentWindow::allButtons, | |||
| true) | |||
| { | |||
| // Create an instance of our main content component, and add it | |||
| // Create an instance of our main content component, and add it | |||
| // to our window. | |||
| MainComponent* const contentComponent = new MainComponent(); | |||
| @@ -46,9 +46,9 @@ public: | |||
| //============================================================================== | |||
| void closeButtonPressed() | |||
| { | |||
| // When the user presses the close button, we'll tell the app to quit. This | |||
| // When the user presses the close button, we'll tell the app to quit. This | |||
| // window will be deleted by our HelloWorldApplication::shutdown() method | |||
| // | |||
| // | |||
| JUCEApplication::quit(); | |||
| } | |||
| }; | |||
| @@ -1,5 +1,5 @@ | |||
| /* | |||
| This file contains settings that you might want to explicitly apply to | |||
| This file contains settings that you might want to explicitly apply to | |||
| your Juce build. | |||
| These flags enable or disable juce features - if you're linking to juce as | |||
| @@ -8,7 +8,7 @@ | |||
| just include this file before including your juce_amalgamated.cpp file to | |||
| have the same effect. | |||
| If you leave any of these commented-out, they'll take on the default value | |||
| If you leave any of these commented-out, they'll take on the default value | |||
| assigned to them in juce_Config.h, so to force them on or off, just set them | |||
| to an explicit 0 or 1 in here. | |||
| */ | |||
| @@ -1,10 +1,10 @@ | |||
| /* | |||
| /* | |||
| This file includes the entire juce source tree via the amalgamated file. | |||
| You could add the amalgamated file directly to your project, but doing it | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| the source code. | |||
| */ | |||
| @@ -1,12 +1,12 @@ | |||
| /* | |||
| This file includes the entire juce source tree via the amalgamated file. | |||
| You could add the amalgamated file directly to your project, but doing it | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| the source code. | |||
| */ | |||
| #include "juce_AppConfig.h" | |||
| #include "../../../juce_amalgamated.mm" | |||
| /* | |||
| This file includes the entire juce source tree via the amalgamated file. | |||
| You could add the amalgamated file directly to your project, but doing it | |||
| like this allows you to put your app's config settings in the | |||
| juce_AppConfig.h file and have them applied to both the juce headers and | |||
| the source code. | |||
| */ | |||
| #include "juce_AppConfig.h" | |||
| #include "../../../juce_amalgamated.mm" | |||
| @@ -98,8 +98,8 @@ END_JUCE_NAMESPACE | |||
| /* "Rectangle" is defined in some of the newer windows header files, so this makes | |||
| it easier to use the juce version explicitly. | |||
| If you run into difficulties where this macro interferes with other 3rd party header | |||
| files, you may need to use the juce_WithoutMacros.h file - see the comments in that | |||
| If you run into difficulties where this macro interferes with other 3rd party header | |||
| files, you may need to use the juce_WithoutMacros.h file - see the comments in that | |||
| file for more information. | |||
| */ | |||
| #if JUCE_WINDOWS && ! JUCE_DONT_DEFINE_MACROS | |||
| @@ -258063,7 +258063,7 @@ bool File::moveToTrash() const throw() | |||
| struct FindFileStruct | |||
| { | |||
| NSDirectoryEnumerator* enumerator; | |||
| String parentDir; | |||
| String parentDir, wildCard; | |||
| }; | |||
| bool juce_findFileNext (void* handle, String& resultFile, | |||
| @@ -258071,46 +258071,53 @@ bool juce_findFileNext (void* handle, String& resultFile, | |||
| { | |||
| FindFileStruct* ff = (FindFileStruct*) handle; | |||
| NSString* file; | |||
| const char* const wildcardUTF8 = ff->wildCard.toUTF8(); | |||
| if (ff == 0 || (file = [ff->enumerator nextObject]) == 0) | |||
| return false; | |||
| for (;;) | |||
| { | |||
| if (ff == 0 || (file = [ff->enumerator nextObject]) == 0) | |||
| return false; | |||
| [ff->enumerator skipDescendents]; | |||
| resultFile = nsStringToJuce (file); | |||
| [ff->enumerator skipDescendents]; | |||
| resultFile = nsStringToJuce (file); | |||
| const String path (ff->parentDir + resultFile); | |||
| if (fnmatch (wildcardUTF8, resultFile.toUTF8(), FNM_CASEFOLD) != 0) | |||
| continue; | |||
| if (isDir != 0 || fileSize != 0) | |||
| { | |||
| struct stat info; | |||
| const bool statOk = juce_stat (path, info); | |||
| const String path (ff->parentDir + resultFile); | |||
| if (isDir != 0) | |||
| *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||
| if (isDir != 0 || fileSize != 0) | |||
| { | |||
| struct stat info; | |||
| const bool statOk = juce_stat (path, info); | |||
| if (isHidden != 0) | |||
| *isHidden = juce_isHiddenFile (path); | |||
| if (isDir != 0) | |||
| *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||
| if (fileSize != 0) | |||
| *fileSize = statOk ? info.st_size : 0; | |||
| } | |||
| if (isHidden != 0) | |||
| *isHidden = juce_isHiddenFile (path); | |||
| if (modTime != 0 || creationTime != 0) | |||
| { | |||
| int64 m, a, c; | |||
| juce_getFileTimes (path, m, a, c); | |||
| if (fileSize != 0) | |||
| *fileSize = statOk ? info.st_size : 0; | |||
| } | |||
| if (modTime != 0) | |||
| *modTime = m; | |||
| if (modTime != 0 || creationTime != 0) | |||
| { | |||
| int64 m, a, c; | |||
| juce_getFileTimes (path, m, a, c); | |||
| if (creationTime != 0) | |||
| *creationTime = c; | |||
| } | |||
| if (modTime != 0) | |||
| *modTime = m; | |||
| if (isReadOnly != 0) | |||
| *isReadOnly = ! juce_canWriteToFile (path); | |||
| if (creationTime != 0) | |||
| *creationTime = c; | |||
| } | |||
| return true; | |||
| if (isReadOnly != 0) | |||
| *isReadOnly = ! juce_canWriteToFile (path); | |||
| return true; | |||
| } | |||
| } | |||
| void* juce_findFileStart (const String& directory, const String& wildCard, String& firstResultFile, | |||
| @@ -258124,6 +258131,7 @@ void* juce_findFileStart (const String& directory, const String& wildCard, Strin | |||
| FindFileStruct* ff = new FindFileStruct(); | |||
| ff->enumerator = [e retain]; | |||
| ff->parentDir = directory; | |||
| ff->wildCard = wildCard; | |||
| if (! ff->parentDir.endsWithChar (File::separator)) | |||
| ff->parentDir += File::separator; | |||
| @@ -258370,7 +258378,7 @@ void Desktop::setMousePosition (int x, int y) throw() | |||
| void Desktop::setScreenSaverEnabled (const bool isEnabled) throw() | |||
| { | |||
| [[UIApplication sharedApplication] setIdleTimerDisabled: ! isEnabled]; | |||
| [[UIApplication sharedApplication] setIdleTimerDisabled: ! isEnabled]; | |||
| } | |||
| bool Desktop::isScreenSaverEnabled() throw() | |||
| @@ -1,10 +1,10 @@ | |||
| /* | |||
| When using XCode, you should add this file to your project | |||
| instead of using juce_amalgamated.cpp directly. | |||
| This is because on the Mac we need to force the compiler to | |||
| treat the code as mixed C++/objective-C. | |||
| */ | |||
| #include "juce_amalgamated.cpp" | |||
| /* | |||
| When using XCode, you should add this file to your project | |||
| instead of using juce_amalgamated.cpp directly. | |||
| This is because on the Mac we need to force the compiler to | |||
| treat the code as mixed C++/objective-C. | |||
| */ | |||
| #include "juce_amalgamated.cpp" | |||
| @@ -26,4 +26,3 @@ | |||
| // This file just wraps juce_VSTPluginFormat.cpp in an objective-C wrapper | |||
| #define JUCE_MAC_VST_INCLUDED 1 | |||
| #include "juce_VSTPluginFormat.cpp" | |||
| @@ -145,7 +145,7 @@ void Desktop::setMousePosition (int x, int y) throw() | |||
| //============================================================================== | |||
| void Desktop::setScreenSaverEnabled (const bool isEnabled) throw() | |||
| { | |||
| [[UIApplication sharedApplication] setIdleTimerDisabled: ! isEnabled]; | |||
| [[UIApplication sharedApplication] setIdleTimerDisabled: ! isEnabled]; | |||
| } | |||
| bool Desktop::isScreenSaverEnabled() throw() | |||
| @@ -334,7 +334,7 @@ bool File::moveToTrash() const throw() | |||
| struct FindFileStruct | |||
| { | |||
| NSDirectoryEnumerator* enumerator; | |||
| String parentDir; | |||
| String parentDir, wildCard; | |||
| }; | |||
| bool juce_findFileNext (void* handle, String& resultFile, | |||
| @@ -342,46 +342,53 @@ bool juce_findFileNext (void* handle, String& resultFile, | |||
| { | |||
| FindFileStruct* ff = (FindFileStruct*) handle; | |||
| NSString* file; | |||
| const char* const wildcardUTF8 = ff->wildCard.toUTF8(); | |||
| if (ff == 0 || (file = [ff->enumerator nextObject]) == 0) | |||
| return false; | |||
| for (;;) | |||
| { | |||
| if (ff == 0 || (file = [ff->enumerator nextObject]) == 0) | |||
| return false; | |||
| [ff->enumerator skipDescendents]; | |||
| resultFile = nsStringToJuce (file); | |||
| [ff->enumerator skipDescendents]; | |||
| resultFile = nsStringToJuce (file); | |||
| const String path (ff->parentDir + resultFile); | |||
| if (fnmatch (wildcardUTF8, resultFile.toUTF8(), FNM_CASEFOLD) != 0) | |||
| continue; | |||
| if (isDir != 0 || fileSize != 0) | |||
| { | |||
| struct stat info; | |||
| const bool statOk = juce_stat (path, info); | |||
| const String path (ff->parentDir + resultFile); | |||
| if (isDir != 0) | |||
| *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||
| if (isDir != 0 || fileSize != 0) | |||
| { | |||
| struct stat info; | |||
| const bool statOk = juce_stat (path, info); | |||
| if (isHidden != 0) | |||
| *isHidden = juce_isHiddenFile (path); | |||
| if (isDir != 0) | |||
| *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||
| if (fileSize != 0) | |||
| *fileSize = statOk ? info.st_size : 0; | |||
| } | |||
| if (isHidden != 0) | |||
| *isHidden = juce_isHiddenFile (path); | |||
| if (modTime != 0 || creationTime != 0) | |||
| { | |||
| int64 m, a, c; | |||
| juce_getFileTimes (path, m, a, c); | |||
| if (fileSize != 0) | |||
| *fileSize = statOk ? info.st_size : 0; | |||
| } | |||
| if (modTime != 0) | |||
| *modTime = m; | |||
| if (modTime != 0 || creationTime != 0) | |||
| { | |||
| int64 m, a, c; | |||
| juce_getFileTimes (path, m, a, c); | |||
| if (creationTime != 0) | |||
| *creationTime = c; | |||
| } | |||
| if (modTime != 0) | |||
| *modTime = m; | |||
| if (isReadOnly != 0) | |||
| *isReadOnly = ! juce_canWriteToFile (path); | |||
| if (creationTime != 0) | |||
| *creationTime = c; | |||
| } | |||
| return true; | |||
| if (isReadOnly != 0) | |||
| *isReadOnly = ! juce_canWriteToFile (path); | |||
| return true; | |||
| } | |||
| } | |||
| void* juce_findFileStart (const String& directory, const String& wildCard, String& firstResultFile, | |||
| @@ -395,6 +402,7 @@ void* juce_findFileStart (const String& directory, const String& wildCard, Strin | |||
| FindFileStruct* ff = new FindFileStruct(); | |||
| ff->enumerator = [e retain]; | |||
| ff->parentDir = directory; | |||
| ff->wildCard = wildCard; | |||
| if (! ff->parentDir.endsWithChar (File::separator)) | |||
| ff->parentDir += File::separator; | |||