From 0ca53b309839f6fabf3b7b7fe364158e3d96a963 Mon Sep 17 00:00:00 2001 From: Julian Storer Date: Wed, 8 Sep 2010 20:44:58 +0100 Subject: [PATCH] New feature in the (new) jucer: automatic download of the latest source code version. Fix for File::findChildFiles. VST host channels fix. --- .../Builds/Linux/Makefile | 6 + .../The Jucer.xcodeproj/project.pbxproj | 6 + .../Builds/VisualStudio2005/The Jucer.vcproj | 2 + .../Builds/VisualStudio2008/The Jucer.vcproj | 2 + .../Builds/VisualStudio2010/The Jucer.vcxproj | 2 + .../The Jucer.vcxproj.filters | 6 + extras/Jucer (experimental)/Jucer.jucer | 4 + .../Source/Application/jucer_Application.h | 15 +- .../Source/Application/jucer_CommandIDs.h | 1 + .../Source/Application/jucer_JuceUpdater.cpp | 402 +++++++++++++++++ .../Source/Application/jucer_JuceUpdater.h | 77 ++++ .../JucePluginCharacteristics.h | 6 +- extras/juce demo/Builds/MacOSX/Icon.icns | Bin 81944 -> 81944 bytes .../Builds/VisualStudio2005/icon.ico | Bin 82726 -> 82726 bytes .../Builds/VisualStudio2008/icon.ico | Bin 82726 -> 82726 bytes .../Builds/VisualStudio2010/icon.ico | Bin 82726 -> 82726 bytes extras/juce demo/Builds/iPhone/Icon.icns | Bin 81944 -> 81944 bytes juce_amalgamated.cpp | 414 +++++++----------- juce_amalgamated.h | 37 +- src/audio/midi/juce_MidiMessage.cpp | 2 - .../plugins/formats/juce_VSTPluginFormat.cpp | 246 ++++------- src/core/juce_StandardHeader.h | 2 +- src/gui/components/controls/juce_ListBox.h | 4 +- src/io/files/juce_DirectoryIterator.h | 2 - src/io/files/juce_File.cpp | 81 +--- src/io/files/juce_File.h | 1 - src/io/files/juce_ZipFile.cpp | 43 +- src/io/files/juce_ZipFile.h | 28 +- src/native/linux/juce_linux_Audio.cpp | 44 ++ 29 files changed, 920 insertions(+), 513 deletions(-) create mode 100644 extras/Jucer (experimental)/Source/Application/jucer_JuceUpdater.cpp create mode 100644 extras/Jucer (experimental)/Source/Application/jucer_JuceUpdater.h diff --git a/extras/Jucer (experimental)/Builds/Linux/Makefile b/extras/Jucer (experimental)/Builds/Linux/Makefile index e9fe579416..522443f489 100644 --- a/extras/Jucer (experimental)/Builds/Linux/Makefile +++ b/extras/Jucer (experimental)/Builds/Linux/Makefile @@ -45,6 +45,7 @@ endif OBJECTS := \ $(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \ $(OBJDIR)/jucer_FilePreviewComponent_55512f53.o \ + $(OBJDIR)/jucer_JuceUpdater_cf7865c4.o \ $(OBJDIR)/jucer_Main_f8488f5b.o \ $(OBJDIR)/jucer_MainWindow_1e163aeb.o \ $(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o \ @@ -95,6 +96,11 @@ $(OBJDIR)/jucer_FilePreviewComponent_55512f53.o: ../../Source/Application/jucer_ @echo "Compiling jucer_FilePreviewComponent.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" +$(OBJDIR)/jucer_JuceUpdater_cf7865c4.o: ../../Source/Application/jucer_JuceUpdater.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling jucer_JuceUpdater.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + $(OBJDIR)/jucer_Main_f8488f5b.o: ../../Source/Application/jucer_Main.cpp -@mkdir -p $(OBJDIR) @echo "Compiling jucer_Main.cpp" diff --git a/extras/Jucer (experimental)/Builds/MacOSX/The Jucer.xcodeproj/project.pbxproj b/extras/Jucer (experimental)/Builds/MacOSX/The Jucer.xcodeproj/project.pbxproj index 7878f237aa..f530ef56d3 100644 --- a/extras/Jucer (experimental)/Builds/MacOSX/The Jucer.xcodeproj/project.pbxproj +++ b/extras/Jucer (experimental)/Builds/MacOSX/The Jucer.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ 2E6836738CE7EB452FDC7E9A = { isa = PBXBuildFile; fileRef = D9FB1A5365FEEB854A0FF7BF; }; D6D0659F3F3504012246F13D = { isa = PBXBuildFile; fileRef = AA3CBE4A2AC3E9411426F630; }; 8BAE4D8EA7F247DA0A4D3A5C = { isa = PBXBuildFile; fileRef = F617CE0630ADB0628A34D6BF; }; + 280FE650B3F02AD9E821EA37 = { isa = PBXBuildFile; fileRef = 832701705EC0EC9484F9D9C2; }; 9950893AA82F86F1EEE55BED = { isa = PBXBuildFile; fileRef = D77EAC704C96F798B1C69A0D; }; C2F198C7058FC1A88A600645 = { isa = PBXBuildFile; fileRef = B06694E3C7EB89E3DDEFCBD0; }; A7C05B907BBCB4288FBC6428 = { isa = PBXBuildFile; fileRef = 194F6B951CBC3E8F897FB646; }; @@ -64,6 +65,8 @@ F617CE0630ADB0628A34D6BF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_FilePreviewComponent.cpp; path = ../../Source/Application/jucer_FilePreviewComponent.cpp; sourceTree = SOURCE_ROOT; }; 330CB15608DEAF19D28C18DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FilePreviewComponent.h; path = ../../Source/Application/jucer_FilePreviewComponent.h; sourceTree = SOURCE_ROOT; }; 0CA0CCCEBFA0AC8C577FC915 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Headers.h; path = ../../Source/jucer_Headers.h; sourceTree = SOURCE_ROOT; }; + 832701705EC0EC9484F9D9C2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_JuceUpdater.cpp; path = ../../Source/Application/jucer_JuceUpdater.cpp; sourceTree = SOURCE_ROOT; }; + AFC2F9A887CDBF7A0051CD09 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JuceUpdater.h; path = ../../Source/Application/jucer_JuceUpdater.h; sourceTree = SOURCE_ROOT; }; D77EAC704C96F798B1C69A0D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Main.cpp; path = ../../Source/Application/jucer_Main.cpp; sourceTree = SOURCE_ROOT; }; B06694E3C7EB89E3DDEFCBD0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainWindow.cpp; path = ../../Source/Application/jucer_MainWindow.cpp; sourceTree = SOURCE_ROOT; }; 24378294003DC2D038D0534D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MainWindow.h; path = ../../Source/Application/jucer_MainWindow.h; sourceTree = SOURCE_ROOT; }; @@ -139,6 +142,8 @@ F617CE0630ADB0628A34D6BF, 330CB15608DEAF19D28C18DD, 0CA0CCCEBFA0AC8C577FC915, + 832701705EC0EC9484F9D9C2, + AFC2F9A887CDBF7A0051CD09, D77EAC704C96F798B1C69A0D, B06694E3C7EB89E3DDEFCBD0, 24378294003DC2D038D0534D, @@ -304,6 +309,7 @@ 5362E03ADF975A126C1F2F7B = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( D6D0659F3F3504012246F13D, 8BAE4D8EA7F247DA0A4D3A5C, + 280FE650B3F02AD9E821EA37, 9950893AA82F86F1EEE55BED, C2F198C7058FC1A88A600645, A7C05B907BBCB4288FBC6428, diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2005/The Jucer.vcproj b/extras/Jucer (experimental)/Builds/VisualStudio2005/The Jucer.vcproj index 3a7e47847c..cced041554 100644 --- a/extras/Jucer (experimental)/Builds/VisualStudio2005/The Jucer.vcproj +++ b/extras/Jucer (experimental)/Builds/VisualStudio2005/The Jucer.vcproj @@ -137,6 +137,8 @@ + + diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2008/The Jucer.vcproj b/extras/Jucer (experimental)/Builds/VisualStudio2008/The Jucer.vcproj index 7c66c03ab2..6558ce1a29 100644 --- a/extras/Jucer (experimental)/Builds/VisualStudio2008/The Jucer.vcproj +++ b/extras/Jucer (experimental)/Builds/VisualStudio2008/The Jucer.vcproj @@ -137,6 +137,8 @@ + + diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj index 71ddd84911..1d06fb7029 100644 --- a/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj +++ b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj @@ -124,6 +124,7 @@ + @@ -156,6 +157,7 @@ + diff --git a/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj.filters b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj.filters index 4c0e921e7d..e077948cb6 100644 --- a/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj.filters +++ b/extras/Jucer (experimental)/Builds/VisualStudio2010/The Jucer.vcxproj.filters @@ -31,6 +31,9 @@ The Jucer\Application + + The Jucer\Application + The Jucer\Application @@ -150,6 +153,9 @@ The Jucer\Application + + The Jucer\Application + The Jucer\Application diff --git a/extras/Jucer (experimental)/Jucer.jucer b/extras/Jucer (experimental)/Jucer.jucer index 963b44bb2d..e8d53e8e5e 100644 --- a/extras/Jucer (experimental)/Jucer.jucer +++ b/extras/Jucer (experimental)/Jucer.jucer @@ -45,6 +45,10 @@ resource="0" file="Source/Application/jucer_FilePreviewComponent.h"/> + + diff --git a/extras/Jucer (experimental)/Source/Application/jucer_Application.h b/extras/Jucer (experimental)/Source/Application/jucer_Application.h index 3236bbde09..18a27e776e 100644 --- a/extras/Jucer (experimental)/Source/Application/jucer_Application.h +++ b/extras/Jucer (experimental)/Source/Application/jucer_Application.h @@ -28,6 +28,7 @@ #include "../jucer_Headers.h" #include "jucer_MainWindow.h" +#include "jucer_JuceUpdater.h" #include "../Project/jucer_NewProjectWizard.h" @@ -161,7 +162,7 @@ public: const StringArray getMenuBarNames() { - const char* const names[] = { "File", "Edit", "View", "Window", 0 }; + const char* const names[] = { "File", "Edit", "View", "Window", "Update", 0 }; return StringArray ((const char**) names); } @@ -251,6 +252,10 @@ public: menu.addSeparator(); menu.addCommandItem (commandManager, CommandIDs::closeAllDocuments); } + else if (topLevelMenuIndex == 4) // "Juce" menu + { + menu.addCommandItem (commandManager, CommandIDs::showJuceVersion); + } return menu; } @@ -287,7 +292,8 @@ public: CommandIDs::open, CommandIDs::showPrefs, CommandIDs::closeAllDocuments, - CommandIDs::saveAll }; + CommandIDs::saveAll, + CommandIDs::showJuceVersion }; commands.addArray (ids, numElementsInArray (ids)); } @@ -321,6 +327,10 @@ public: result.setActive (OpenDocumentManager::getInstance()->anyFilesNeedSaving()); break; + case CommandIDs::showJuceVersion: + result.setInfo ("Download the latest JUCE version", "Checks online for any Juce updates", CommandCategories::general, 0); + break; + default: JUCEApplication::getCommandInfo (commandID, result); break; @@ -336,6 +346,7 @@ public: case CommandIDs::showPrefs: showPrefsPanel(); break; case CommandIDs::saveAll: OpenDocumentManager::getInstance()->saveAll(); break; case CommandIDs::closeAllDocuments: closeAllDocuments (true); break; + case CommandIDs::showJuceVersion: JuceUpdater::show (mainWindows[0]); break; default: return JUCEApplication::perform (info); } diff --git a/extras/Jucer (experimental)/Source/Application/jucer_CommandIDs.h b/extras/Jucer (experimental)/Source/Application/jucer_CommandIDs.h index a74b834af2..a10af1dc36 100644 --- a/extras/Jucer (experimental)/Source/Application/jucer_CommandIDs.h +++ b/extras/Jucer (experimental)/Source/Application/jucer_CommandIDs.h @@ -39,6 +39,7 @@ namespace CommandIDs static const int saveProjectAs = 0x200070; static const int openProjectInIDE = 0x200071; static const int showProjectSettings = 0x200072; + static const int showJuceVersion = 0x200073; static const int saveAll = 0x200080; static const int undo = 0x200090; diff --git a/extras/Jucer (experimental)/Source/Application/jucer_JuceUpdater.cpp b/extras/Jucer (experimental)/Source/Application/jucer_JuceUpdater.cpp new file mode 100644 index 0000000000..7de8f5fb6a --- /dev/null +++ b/extras/Jucer (experimental)/Source/Application/jucer_JuceUpdater.cpp @@ -0,0 +1,402 @@ +/* + ============================================================================== + + This file is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-10 by Raw Material Software Ltd. + + ------------------------------------------------------------------------------ + + JUCE can be redistributed and/or modified under the terms of the GNU General + Public License (Version 2), as published by the Free Software Foundation. + A copy of the license is included in the JUCE distribution, or can be found + online at www.gnu.org/licenses. + + JUCE is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + ------------------------------------------------------------------------------ + + To release a closed-source product which uses JUCE, commercial licenses are + available: visit www.rawmaterialsoftware.com/juce for more information. + + ============================================================================== +*/ + +#include "../jucer_Headers.h" +#include "jucer_JuceUpdater.h" + + +//============================================================================== +JuceUpdater::JuceUpdater() + : filenameComp ("Juce Folder", StoredSettings::getInstance()->getLastKnownJuceFolder(), + true, true, false, "*", String::empty, "Select your Juce folder"), + checkNowButton ("Check Online for Available Updates...", + "Contacts the website to see if this version is up-to-date") +{ + addAndMakeVisible (&label); + addAndMakeVisible (&filenameComp); + addAndMakeVisible (&checkNowButton); + addAndMakeVisible (¤tVersionLabel); + checkNowButton.addButtonListener (this); + filenameComp.addListener (this); + + currentVersionLabel.setFont (Font (14.0f, Font::italic)); + label.setFont (Font (12.0f)); + label.setText ("Destination folder:", false); + + addAndMakeVisible (&availableVersionsList); + availableVersionsList.setModel (this); + + setSize (600, 300); +} + +JuceUpdater::~JuceUpdater() +{ + checkNowButton.removeButtonListener (this); + filenameComp.removeListener (this); +} + +void JuceUpdater::show (Component* mainWindow) +{ + JuceUpdater updater; + DialogWindow::showModalDialog ("Juce Update...", &updater, mainWindow, + Colours::lightgrey, + true, false, false); +} + +void JuceUpdater::resized() +{ + filenameComp.setBounds (20, 40, getWidth() - 40, 22); + label.setBounds (filenameComp.getX(), filenameComp.getY() - 18, filenameComp.getWidth(), 18); + currentVersionLabel.setBounds (filenameComp.getX(), filenameComp.getBottom(), filenameComp.getWidth(), 25); + checkNowButton.changeWidthToFitText (20); + checkNowButton.setCentrePosition (getWidth() / 2, filenameComp.getBottom() + 40); + availableVersionsList.setBounds (filenameComp.getX(), checkNowButton.getBottom() + 20, filenameComp.getWidth(), getHeight() - (checkNowButton.getBottom() + 20)); +} + +void JuceUpdater::paint (Graphics& g) +{ + g.fillAll (Colours::white); +} + +const String findVersionNum (const String& file, const String& token) +{ + return file.fromFirstOccurrenceOf (token, false, false) + .upToFirstOccurrenceOf ("\n", false, false) + .trim(); +} + +const String JuceUpdater::getCurrentVersion() +{ + const String header (filenameComp.getCurrentFile() + .getChildFile ("src/core/juce_StandardHeader.h").loadFileAsString()); + + const String v1 (findVersionNum (header, "JUCE_MAJOR_VERSION")); + const String v2 (findVersionNum (header, "JUCE_MINOR_VERSION")); + const String v3 (findVersionNum (header, "JUCE_BUILDNUMBER")); + + if ((v1 + v2 + v3).isEmpty()) + return String::empty; + + return v1 + "." + v2 + "." + v3; +} + +XmlElement* JuceUpdater::downloadVersionList() +{ + return URL ("http://www.rawmaterialsoftware.com/juce/downloads/juce_versions.php").readEntireXmlStream(); +} + +void JuceUpdater::updateVersions (const XmlElement& xml) +{ + availableVersions.clear(); + + forEachXmlChildElementWithTagName (xml, v, "VERSION") + { + VersionInfo* vi = new VersionInfo(); + vi->url = URL (v->getStringAttribute ("url")); + vi->desc = v->getStringAttribute ("desc"); + vi->version = v->getStringAttribute ("version"); + vi->date = v->getStringAttribute ("date"); + availableVersions.add (vi); + } + + availableVersionsList.updateContent(); +} + +void JuceUpdater::buttonClicked (Button*) +{ + ScopedPointer xml (downloadVersionList()); + + if (xml == 0 || xml->hasTagName ("html")) + { + AlertWindow::showMessageBox (AlertWindow::WarningIcon, "Connection Problems...", + "Couldn't connect to the Raw Material Software website!"); + + return; + } + + if (! xml->hasTagName ("JUCEVERSIONS")) + { + AlertWindow::showMessageBox (AlertWindow::WarningIcon, "Update Problems...", + "This version of the Jucer may be too old to receive automatic updates!\n\n" + "Please visit www.rawmaterialsoftware.com and get the latest version manually!"); + return; + } + + const String currentVersion (getCurrentVersion()); + + OwnedArray versions; + updateVersions (*xml); +} + +//============================================================================== +class NewVersionDownloader : public ThreadWithProgressWindow +{ +public: + NewVersionDownloader (const String& title, const URL& url_, const File& target_) + : ThreadWithProgressWindow (title, true, true), + url (url_), target (target_) + { + } + + void run() + { + setStatusMessage ("Contacting website..."); + + ScopedPointer input (url.createInputStream (false)); + + if (input == 0) + { + error = "Couldn't connect to the website..."; + return; + } + + if (! target.deleteFile()) + { + error = "Couldn't delete the destination file..."; + return; + } + + ScopedPointer output (target.createOutputStream (32768)); + + if (output == 0) + { + error = "Couldn't write to the destination file..."; + return; + } + + setStatusMessage ("Downloading..."); + + int totalBytes = (int) input->getTotalLength(); + int bytesSoFar = 0; + + while (! (input->isExhausted() || threadShouldExit())) + { + HeapBlock buffer (8192); + const int num = input->read (buffer, 8192); + + if (num == 0) + break; + + output->write (buffer, num); + bytesSoFar += num; + + setProgress (totalBytes > 0 ? bytesSoFar / (double) totalBytes : -1.0); + } + } + + String error; + +private: + URL url; + File target; +}; + +//============================================================================== +class Unzipper : public ThreadWithProgressWindow +{ +public: + Unzipper (ZipFile& zipFile_, const File& targetDir_) + : ThreadWithProgressWindow ("Unzipping...", true, true), + zipFile (zipFile_), targetDir (targetDir_), worked (true) + { + } + + void run() + { + for (int i = 0; i < zipFile.getNumEntries(); ++i) + { + if (threadShouldExit()) + break; + + const ZipFile::ZipEntry* e = zipFile.getEntry (i); + setStatusMessage ("Unzipping " + e->filename + "..."); + setProgress (i / (double) zipFile.getNumEntries()); + + worked = zipFile.uncompressEntry (i, targetDir, true) && worked; + } + } + + bool worked; + +private: + ZipFile& zipFile; + File targetDir; +}; + +//============================================================================== +void JuceUpdater::applyVersion (VersionInfo* version) +{ + File destDir (filenameComp.getCurrentFile()); + + const bool destDirExisted = destDir.isDirectory(); + + if (destDirExisted && destDir.getNumberOfChildFiles (File::findFilesAndDirectories, "*") > 0) + { + int r = AlertWindow::showYesNoCancelBox (AlertWindow::WarningIcon, "Folder already exists", + "The folder " + destDir.getFullPathName() + "\nalready contains some files...\n\n" + "Do you want to delete everything in the folder and replace it entirely, or just merge the new files into the existing folder?", + "Delete and replace entire folder", + "Add and overwrite existing files", + "Cancel"); + + if (r == 0) + return; + + if (r == 1) + { + if (! destDir.deleteRecursively()) + { + AlertWindow::showMessageBox (AlertWindow::WarningIcon, "Problems...", + "Couldn't delete the existing folder!"); + return; + } + } + } + + if (! (destDir.isDirectory() || destDir.createDirectory())) + { + AlertWindow::showMessageBox (AlertWindow::WarningIcon, "Problems...", + "Couldn't create that target folder.."); + return; + } + + File zipFile (destDir.getNonexistentChildFile ("juce_download", ".tar.gz", false)); + + bool worked = false; + + { + NewVersionDownloader downloader ("Downloading Version " + version->version + "...", + version->url, zipFile); + worked = downloader.runThread(); + } + + if (worked) + { + ZipFile zip (zipFile); + Unzipper unzipper (zip, destDir); + worked = unzipper.runThread() && unzipper.worked; + } + + zipFile.deleteFile(); + + if ((! destDirExisted) && (destDir.getNumberOfChildFiles (File::findFilesAndDirectories, "*") == 0 || ! worked)) + destDir.deleteRecursively(); + + filenameComponentChanged (&filenameComp); +} + +void JuceUpdater::filenameComponentChanged (FilenameComponent*) +{ + const String version (getCurrentVersion()); + + if (version.isEmpty()) + currentVersionLabel.setText ("(Not a Juce folder)", false); + else + currentVersionLabel.setText ("(Current version in this folder: " + version + ")", false); +} + +//============================================================================== +int JuceUpdater::getNumRows() +{ + return availableVersions.size(); +} + +void JuceUpdater::paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) +{ + if (rowIsSelected) + g.fillAll (findColour (TextEditor::highlightColourId)); +} + +Component* JuceUpdater::refreshComponentForRow (int rowNumber, bool isRowSelected, Component* existingComponentToUpdate) +{ + class UpdateListComponent : public Component, + public ButtonListener + { + public: + UpdateListComponent (JuceUpdater& updater_) + : updater (updater_), version (0), applyButton ("Install this version...") + { + addAndMakeVisible (&applyButton); + applyButton.addButtonListener (this); + setInterceptsMouseClicks (false, true); + } + + ~UpdateListComponent() + { + applyButton.removeButtonListener (this); + } + + void setVersion (VersionInfo* v) + { + if (version != v) + { + version = v; + repaint(); + resized(); + } + } + + void paint (Graphics& g) + { + if (version != 0) + { + g.setColour (Colours::green.withAlpha (0.12f)); + + g.fillRect (0, 1, getWidth(), getHeight() - 2); + g.setColour (Colours::black); + g.setFont (getHeight() * 0.7f); + + String s; + s << "Version " << version->version << " - " << version->desc << " - " << version->date; + + g.drawText (s, 4, 0, applyButton.getX() - 4, getHeight(), Justification::centredLeft, true); + } + } + + void resized() + { + applyButton.changeWidthToFitText (getHeight() - 4); + applyButton.setTopRightPosition (getWidth(), 2); + applyButton.setVisible (version != 0); + } + + void buttonClicked (Button*) + { + updater.applyVersion (version); + } + + private: + JuceUpdater& updater; + TextButton applyButton; + VersionInfo* version; + }; + + UpdateListComponent* c = dynamic_cast (existingComponentToUpdate); + if (c == 0) + c = new UpdateListComponent (*this); + + c->setVersion (availableVersions [rowNumber]); + return c; +} diff --git a/extras/Jucer (experimental)/Source/Application/jucer_JuceUpdater.h b/extras/Jucer (experimental)/Source/Application/jucer_JuceUpdater.h new file mode 100644 index 0000000000..47aabe952a --- /dev/null +++ b/extras/Jucer (experimental)/Source/Application/jucer_JuceUpdater.h @@ -0,0 +1,77 @@ +/* + ============================================================================== + + This file is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-10 by Raw Material Software Ltd. + + ------------------------------------------------------------------------------ + + JUCE can be redistributed and/or modified under the terms of the GNU General + Public License (Version 2), as published by the Free Software Foundation. + A copy of the license is included in the JUCE distribution, or can be found + online at www.gnu.org/licenses. + + JUCE is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + ------------------------------------------------------------------------------ + + To release a closed-source product which uses JUCE, commercial licenses are + available: visit www.rawmaterialsoftware.com/juce for more information. + + ============================================================================== +*/ + +#ifndef __JUCER_JUCEUPDATER_H_81537815__ +#define __JUCER_JUCEUPDATER_H_81537815__ + + +//============================================================================== +class JuceUpdater : public Component, + public ButtonListener, + public FilenameComponentListener, + public ListBoxModel +{ +public: + JuceUpdater(); + ~JuceUpdater(); + + static void show (Component* mainWindow); + + //============================================================================== + void resized(); + void paint (Graphics& g); + void buttonClicked (Button*); + void filenameComponentChanged (FilenameComponent* fileComponentThatHasChanged); + + int getNumRows(); + void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected); + Component* refreshComponentForRow (int rowNumber, bool isRowSelected, Component* existingComponentToUpdate); + +private: + Label label, currentVersionLabel; + FilenameComponent filenameComp; + TextButton checkNowButton; + ListBox availableVersionsList; + + XmlElement* downloadVersionList(); + const String getCurrentVersion(); + bool isAlreadyUpToDate(); + + struct VersionInfo + { + URL url; + String desc; + String version; + String date; + }; + + OwnedArray availableVersions; + + void updateVersions (const XmlElement& xml); + void applyVersion (VersionInfo* version); +}; + + +#endif // __JUCER_JUCEUPDATER_H_81537815__ diff --git a/extras/audio plugins/demo/JuceLibraryCode/JucePluginCharacteristics.h b/extras/audio plugins/demo/JuceLibraryCode/JucePluginCharacteristics.h index 1b044bce19..5d836bbcbd 100644 --- a/extras/audio plugins/demo/JuceLibraryCode/JucePluginCharacteristics.h +++ b/extras/audio plugins/demo/JuceLibraryCode/JucePluginCharacteristics.h @@ -11,9 +11,9 @@ #ifndef __PLUGINCHARACTERISTICS_D4EFFF1A__ #define __PLUGINCHARACTERISTICS_D4EFFF1A__ -#define JucePlugin_Build_VST 1 // (If you change this you'll also need to re-export the projects using the Jucer) -#define JucePlugin_Build_AU 1 // (If you change this you'll also need to re-export the projects using the Jucer) -#define JucePlugin_Build_RTAS 0 // (If you change this you'll also need to re-export the projects using the Jucer) +#define JucePlugin_Build_VST 1 // (If you change this value, you'll also need to re-export the projects using the Jucer) +#define JucePlugin_Build_AU 1 // (If you change this value, you'll also need to re-export the projects using the Jucer) +#define JucePlugin_Build_RTAS 0 // (If you change this value, you'll also need to re-export the projects using the Jucer) #define JucePlugin_Name "Juce Demo Plugin" #define JucePlugin_Desc "Juce Demo Plugin" diff --git a/extras/juce demo/Builds/MacOSX/Icon.icns b/extras/juce demo/Builds/MacOSX/Icon.icns index a1d2ba8423941483ac31efaf090732faf70ae952..fea3a04779b05729d6eec816a10b2bd38fc4c9d6 100644 GIT binary patch literal 81944 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%0A&Xn;y4+=xdG-OMgbU`%q?H4MB3ucv7Dn2d!rB+ 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 bR(%)Y>UT8&`H4}mp+DJ-Z}~KE#tr`uLY8y= literal 81944 zcmeHQ2Ygh;)=waT6cPx8gp%Gv8Yv`!kPrwEO6Y>*-ueAYn03H^oi`RO^0ROM9pVJ5Bp=kiXS*0j>|YseEg@C69WpLMw(L&jr1mcNGsCL6Hp)E4QK#p2xtUo4DbQ? zTEGvl1b@pb->d)eI$qD;@%OwB@5lS{{_KbSv0o!Ua9rd`YhJ)t|Fkkc+ca`?DYR z$9~yA$Dw$E<1^|7qfWrT{%Iv(z!u$=tWyV5?i9@_qofCELt2q`F^-OQOqh0QS>Hcx?KihcSi1K1E+2e7 zx!-div<-dem1f?f9_gEt-8nWqJ=DoAwXvIX0`ABA^8W0H{jp#6&v7VT;P^OBWh0b* z_=gXGlww*@bT`U6^)GcYb#*Wx96*y3^Kr0Vrbu0P17v>16M^?%A0>9{qEhG<@{mnPJPn>e=k*<~EJRwx-p@Hqe{& z-5v{CHmf0aW;lu6tzEX(SE~@e&6Hc*+0o>EMRz zoyE?UHN}qP8sHf_u{9jL5m%l3aeP}&*z(V_!ybDzC-K(Xf<4-$1$rg9J3DY(9A5x{ zj5z&Bm^ePwU;Hw}TkP#xN9;^@mO6sEV{454g)J#= z->m7AI`75on4aDJYo~g-IdhyGFUQUCa~{@w@c&gGl!flJuMvPaK&$8mbw=IU%>S(= zx3xOHp=k|CZ_@nRBnQZ~oA?k&%SMVOGLR;KSTzEE097jJt5A>G(ew*wl@`K3>)qY&x#`oVJ z^lY9xIV&k6v`(#9%lJ7DYd)ZVP!m8t`2P|wSks>KCm!f8(Oyzt5>H0DXEhJ=yK`=O z__Aef!%l9>@DX_-(Ccy4#E+fa#Nly1;`ID*arw=rLVN(WGSNVy=!~eQXAnmIG$m>R3Pk&kYb<~$i-ZMfy>r9>3A!+r>?n#&O;#|bm zCXn^y>SAxVI^yKr!Q#ro1R*HXqzCmj=pkjftaL6dKd9??fARwRW549L&r`(3mt(}S z3BKaT9CzrXYGP}o-KD(5I;)rGG#xV|$**;szc=}Sb|C;jKbCO}=TBdUw$EA@;H&?M zrf5$dr~jj5o_RRtRv1Guo}#|&)GgBgxp&h2HhtYC>eTvJC$TNYP8=LqSDbnvSnA#@ z?~?8o{Y*M2IaTzj&{y1__xl)r!^iO!K>xB2%m4VEHp60HuDla3&OZ|+{8@mfXbICnALDqa^rkpgHNzSK_-!ImiFV7mF2?LFX6n z4u1O)Y|48*f=gIR* z=BX1qwDhn4<;q(U&umVrE%F$*HFXe&M>P~z-U1Eiiz(e+Kp$(GT4+rfeLqx)g`^vR zG$S29E+a2|*hK%`H{*o({uv<-eImrkJR$zrA;jV3LVWj_5MK`gpF#i2zJk#QbcEzP z%h>2wE+fyTipz*47;A2ecc71OIM1fvIqZdet|XZ$;;ID zjDgAHw0q=v@_rJabMv6aYd&x3ZOV^=A02Kl_V@A-7yi{mm?`6>p*!*Z0q9JbTm;{L z^#CC@i~-yM-@lJe7s@L6U@_=XBoC2p=##Skc}F2md?SSEyeP6=JuSrfpN078eIeH5 zVhoWwFK|3cAFwYAADA(h^OzU&5BZ^Xm-FKs;L`@T_I7opE?`bE5J3FUE)rkF8}aww z!UIOyQ|68Oo<1+vS7`Uh^C^G{_jJwpd3{^= zIsG=nU+hS9H04D*>{*-Dc+8CK=E=YZ{elnx?IL|*qdhS40RHv2Y^1-k_0(TnFQq0Q{}6I&luyZHq&>c0JrF!|3HLLD#tVh1qmwYT zsxC}ffNV!$YR~u8@QU}ny@h#3C!u}vlF^3OWAZg}P}BwA zws6umhuNLqn(p!Rt8K#4K;)*tjnN*c_`q5Z;Ih9}BkgJLm8~c3ne$>koO+G=KH1&D zp<_&t|Ki2%!lhroExx+ge@i`?o0GX3Bc5(}4?pXpIN%bm8z(^iKwk}LzX~}&bwX%g zzc0-51`5+H-on(`8Q>yJ@E^_h-6FIfHsM-aOd0*OwS_LAxuQMo#^)V`xcr9@*RDd2 zKLqV-g4XuJ)YT35sZ|&{yW;=oqm7*~WdOQ+2=gm5;UAp9c%XaOPEsGhF3=~Cwg=-j z&Ivk>`Nbc*)MoC8d4oku`?Sny>F1pUKA=4a05CqH3@N|x@2Ce9?Kw8eJ^egId)j)g zku-O5uzT#~?3m-5TQv|{qwU2H?cv)mfQ-FJU~5Qi5XAN z3m1FZ)#7^8;k*t(BSuGfH3QBV7g2U7Lw{EuFw&knO36L_7{+$AY4mfaOp9&A^)&Li z__13ZaTWP^vARX^u^i<_`gHw-IJQQ|=T+#~^-F|lK(H{SSZLnP0rC!+BrPEGh2*sh zWH-xBnEN&s;(&#Bc0Z-t5XNrr!f)LEkbdujyLFjv3msn)?F;b&`2hXUKBVbm((Y;} zwC%7tmtarWetZpjzYY4O4zut&V_4=bSEq@~uf>UdzzcZbr*#>gBZr52&_|-|P=@}F zJYY?G>L?}miuTR%-RRq+8Xa1jT3c+v+Uw7Qyo7lX@J?HAQ|5sW(uMYT3G~9Z^L1Yi zDAa!5CCo40DNG%pn<>|%fs(;O^su3?$pf$t;tJ?-{s8iJT`ch-=<&x++#UCS@(%sJ zWum>IFF6+I4C)^8L2LB+BxL{iA$fmsaKSGlma`T(lD6 z;36Gwm;Qu(hd(wVPMDelukFezpP&)+xw&^k$ogvip4%T3;vFBv@q@u%7oo4u$p4!< zz??BA~UdvXhW5a@vq7>gKqfcU^#)z$YB#2&0u zZ;7G0e?!a(w@_@1h^rh(&GB&i%72>NZX-3*}3>*u`#IXeesIy4>VS^LH_O6A! z-;BD7J=xHa@57dJ{nZxj=_g5_8F<++7Jl?ri7##MR$+c*Fk~J!mcCYjo-ZSP-~-T~ zGe18`r^7MmX2yHpKZnnn(AK=K>wfC-qG(#y@2N*P-c<0w2*jU?2ac@+pVP02Da->F zJ#hZ%NU^K6E7uVAt!vY0&@E8`j1S2J0RZBev7zDt#$2Qcp(+~tQE?u}z_BpC4*+nC z%o7Spuv}Ml= zQ$IgxL!}H^`*nqITuPaxPmfql+xUsz&$jyzNB$_^o9;-`bMjMuQjxlcvwntva9qXdV>!>vwCGYB$z5w$vw8fWylXTD) zJtfSy$Ln&#xT>_cEzNb*#q`OZodEn_)${qV{o0YAgsG>eC1+4dUMfw0*4MCq`k{{w z)%owIw~;dr1pR>rg%iG#2blkct-SPV9Af2K=FMUDOPBO&)(SXgzL+^8;+?r-#@m&h zA0q7uq&@pmzCPo;Pyq9K8Gw0@b!}*uBAx}7pOp_T5FYgcrh+w_SZQ&HM~>5EGcpVM`rgOGcmv z$O~9EI5RIy%Zsw#zb4&pSnt%PEr4(0ov{{kgeoSW9Z>!t-d0E>?Ul`^t)a~^`g`>C zJA1mhY+QM3a}Bmi97P?B#`?;l5{$AVa)vLeq+MrIdu6}nrH*xhX#PF1T zTX7!OL+JByorDd(n3=H|b7vLqd)u((To-^1(B6Fngg40{nEy4dYU$qz^dAj*H$nc7 zdsvF+37bJ6#r4`%cQXs63- z2aK|Bt@oMZp$+O4Qn&VwRXr1AJ@$`XJ%kCh^F`-??h`laf66S$H$hpDSuL`}d*>Rg?5>A;yRp)2}#GBY4rJM_sL7l z@sYRaZ^i+rcczT*+0nc$z6RDSs)^t41wPk+r)}DN@-=in>Cf6K)K`d$7lf%-eVLcP zVa-m_s#0D-fBG7z5zuz7)9H`3Iw_Nt(w~(sVh*5lEg^QSh5cs^sGTJTWXoRK&K-fiQ0~d8t=BrT-my6PbN!oZx~#8)?`59TQ(w=y+4Z)YrI)Phfe-l2k}9S@c#ri% zcV@|c#o^CN_Wf0Sk`cw94 z_bK~~F@pi*u}r|gq_E)Ac`ZFtJ42t zoQbt0?aSA6`cG?L1@aHt)9(ZQwJj^51Fs12&1lpgF#ku{R{&fwK2jj*&;J>4$eap% z>{Hld0NeZR^6t$B#rihL0$msnFgK`tL9Wj*Cr}n0KwjbXlzry;Y{~wU^Ln?tv?-HDf_HrQsXM|6}&8S{trpq zi*u)i`Tkpk3466=?N(L!f~3Vu({%bX_sI3-o3$q;{f;$+SOYc<1|3g=?rb}s6yiUg zpt-+p|37b!b#M5DyB`ed-MA4%YK1pPxQvd%(RDTE(AU7walz-^{%gHgmkzvTyh- zbsO>>-@hPHA&&hj%(LMOV12e+Yy2hALH(aR#=4A0hRFWS5B1e+_|*R^@|E=j0LI%tc6Pg* z7wICC;YU~LYry;#;gGiJQ@yqg>%%72wBC^@bA;xHZxh<#{rYeD z8`7UPL*f&7MXkW`DSphqY+Tl>S?^jkYP12JxJIaA0s3$B-XsNXj@6S0VV&~(;?%K=O$Hr{+ITi^-4XxuG9WJYCn#z*Vnu_+vC3o^K%nn z7eZlwm;;9&%=HQSLi82+o;3@78VfD&3mreZp3;2;uAMX1Le1Ej$0BfMjpH@c*N$u5 zB)B8!#2AgSn#u>zk5hgi-r8(R_tWoV%tzh9Sc1BQenn@%NAC{F(Kcd_-u|9-urCw+ z7fXK&-MLS4)orkC&tNakOV?q?T+n`iUJJD}4R&v-K1crjArG}bG5UI44scVUIvH{a z9mD+_;@TBqe&gPXr9b(Ldk1o`{{Z_)gc$;EY|wSud-H{<2Wk$;BcwNLgo>IYbzv`W zp&i)jLd(wwCnK|GqsQ>uziHckQHx|g{Jt$&Ja6S#!2ER>l#JOb-cXn@)V9N#=a{(Y{p{8_yk$xYp{^-^AO}KXzc_-}O zcrVfR`aWq-d%yo}ouZ&E>21z!qU$>9I|Z!8xYb9P@9815m2V5}SLip^#>sXW`BA>t z6^8cbIq*OHf&o}FVEs4bf%|%HN*|E^9K$HYAm{!N+J=wI@BeY%5$ihWQ~VAc&BpcR zU-!tGKe-=(^JU)zYZ));Gj(8p_)fp>!+kI4HPXzb(FR~$h-VWq4~z53-hMhW%xD7w zKs#jvXxnYs0Hf}w-$$K6-H`}jOqm<+-)QF-IWZz1=kNSB&0p93H>~l3?$rC+=E&)b z69?rwtK64`HFrs`PS9nf8(*1+B~GA=CG>6}%n$e1^~3H>Sf8`(o6zs3|2_1h&>kHu z%(n&t-@rNjBWV}PfK%e1vF0%7u+!K(h`3DBqs;aN_u*WyU&!1)K>87KpW(Hu*cZM- zXiJ`jZx^ET8n3$peR)FpH8Y?F9lQ!}1zQ(gS|0^$$w+zq;)dpEx5g#14E|J+%` zS3UH+2kl%@bLaO2>U8n~V?Xi=zB5m0Bec&jPsq>>4Ky=9J5k@WL0Xa*7;7th75B>i zXrr-*O#FUWXh-+MPsdsmaa`Q*jQ`_3*eBN#$EIREXSE!nc6cv*`bomvFF>a|{$J{Q z8t-rYp1g_v=nu)peT<)ESn`LUKl1MvUqGE;Ge^_bW-fQ#k{HzibffK#05FHc+6~$O z`glhAE8S1sz?h$F2LS;3kMtv{OaAj*&kT_ljJ=G~XkncS-96Fjlhqdn~b9#{f{jUk_!UbsurA{v`?XBl3c>%a)Y(#xP-7uo5 zFuytr`veY1d>8y-{pgA}rQfB;Q?M(=^~?V;KEwL6U~UCDAk&~=JHD3W zg*-HKe%5h6>Awv62z;sS{Z5Z-xc?0?aH(X!I6M%S^na+c;rp2M0OoTTdvM)oc2}W&|BcRm@bS10-P|4aBNO*5 ztqm$}zD4~HI?mjy0oDzd>3uVIEc3ziyFh=ORmn3jw=}UoxH_ZZfO>AO?LkM@Xodlp z%cE~cIVZhUBmJop)LNe(-bVqro}2@?yMIcP-@a+%hjSP0#kt4B<-UX)Y(MK4c@7Kw zb@S2}b=_UwIL#Iw$Om%&XI<>8%of@jtd$tssiVTY>^ab*uC9lRl10)IJfiK@<23WE z9NgCizmoSzd-5J?)yy~xM*NO^JR14UJgYP8GIRoSca=$d;)4D%_YP3+uh1}0$9rtrzJJ+hNn6bt=RL6Z~=s?L6@P%maNw2Q;K!Ywq+qO!_3I8(g z+LJHiWw}qBv7Y>$K^GC1@XfT{x*VGy%hhd+am;*Ay7HU>_!Zjwk0JkdQTAj04EmnF zJ$bPMc+wWHR`hrDPcUxntq1kF?tKmZA98G}b{OZLUPTSw_M{qD@{(L%e5iFySJ02^ zHZcI^a+%XrJ^JeqZ%`DO&<>ZXmba`=H~0y!S^sd*bj8D$YW{z&5D{k`+`5M?;XK#ep#&B zVVQG*{9E#|yW7;dx~WOck6-PdO&=f=&=e2^AbsiMliqC9{qzNt@2BE^wcgVQ|6B2P z_Y_&*`^!+AdBn3At$jb{dzQ7tJ|5(yjvW%Fp%GHHD#Zt~iAxI~Wb3hpd1M^u{*I)V z{B!0vp*=rY=Sk`e(wOw+J^-HOg{FP^hVB#c{5+>NNA@ERbxneK;XIr#pzHfPe3ws<2bSx>pbL2b^}&ZmG%#(Bw9j9Z z;z|0Ej<$S2d|g0)<@+;FKwp9Dhx8o=0Cp_R3X^A?pP1&S+kWf3A9H>yy6gDbN8i7; zZC|RWc~#c;^x2p{STG9f%NOMMG@K!0Li}LLg04WWNqZOTP4wXpB6eV`N!>x7VMDEs z_WTr`Ul@Z{);P;@U($bi2gF&3|IX|LJ=*GP>!iKK2Rt^>&$KD5`VO2y-XHX1{!Xn2 z8}mT;x)A+U-meM1SHAxsyx+U()>d+F*D2O`v)0Qx_M`1zH%!Ob_Z#)RnA}fe@VCk` z$BMd^dY*Qk{vY?$Vsx zFb1foah2yjq(AhUIQs|I&Gtdw!3#15yiWgH#S4 zY_?**XnfE0e&&w`0}ik2n!voWIQte%l6q3EX&Y=;dFEW+ z-_lld&kt<3%qJ^d@WFh!_Q$;_1r6tVYOCMHTAiPs=aDhpU(CnG`IG*r4-&s0hYt7! zF<+O$^hXW|XOElnqN@G0s&fSCM>>+8jOqOVlyk=VY)1MU>pd7VFz-7AaBM?PjM$Fn zBAuOw*xy#I=OU~_?0870|GJN^``X5F|JCoQ3#h}P^Ud=|An%8@MmEg?@&i6DMecz5 zq8Wg4&vEm&fA#oP|L|SRqu_7B&n~D1G0H#W^Ypw>bAD8{gR8ScNI%liIuC43f5wEQ ze*l1af6||^|4_h*bsZw*vy{%xC;d}yT=)5)iC)`7RDSxhp8KJHt;YP9zLIwEo0vbQ zFVMZQFyD^#(yy)ZMi%;WPZ;+lnz<*S8*)hG1+HPpIs6Uyfb<`O{444y#N}Th|J@49 zKjic5qv7T)G1U*PY8OQMk&dJ%a{vJVl>@-r0{JKXt=E0{yIjC;>$4+@p+CmLTGqX< zOIb3%|F|Xh2b}-abf?_1c8WCY(@2<~9wWro<#NqelKaSB>;YN|JpL&^${K{7*q6n| zx)9`;nd_DDAnZq_)})peSBy)iw}(FqpXKZ>_iO8@5peJ#JZ zdbZNe^=7Xl-Ko1-SHN||`+CbYeqGsvwy^)&XD-+G zS#9J4o(GI`gk`=_#sT2%zrrTS_z(1dsGnp}abmr`2K`acqC-VzP@&kiE} zNXN3!KMvQo0x)+p3~+RPPKq&i& zdMPt&&i;U}#D+YM_Q{KSev*D2Y`pmn;Oq=)kFQmQYSFSC(i*u{sc8()CnfkAITg5<%~IHuD9XLQPzjb7?DWFnE__Rj0NjUtV63R z9^jaP8||YfCHcjk7cKdJ_=Af6@c$8~n>ROs|KBCHy!7YqcYofixy=9nj^}RO82=;p zOaJrN&#<2XdwQQmTwRs)XI#!0pZht88_2iR=Q@Uj#u{Rr^h|Bm+)>*DO@>T;in zT>B|h_f7i4|2X^w=zmSFkIMRp(#)qk*N}e1J$*ZzA)(D3jPruOmpY!vk@cc)!56s= zaXkHZNq2)!%HK2p$9hdXGeSG|GtP#Dzi*^}!T9hyS?lG5=Lx`uOV z=B>;S))dHRGO^CI@cNI1{zu?flm7o2tJ}u{+(FhV`aN??#5H_O?cN^P8@ExCL;e9x zw9j6VwX!DKa_RUgyK`{@24YRhEa+9v%Cb6^~a{I(hAcWBB-Wd0cI2j)?z z{i43$HC#8Y$a#~mNPo5VBkTV%ExBL#0Hh1^a){6ItXj~&TK;?KenU%1f93;J{)cg* z%Kz~9pS;+woviyk(6_F*_8#bMUHkVzq#pl)0OqAQx0Q8!m9aiX8D`zipb(rPzW_SN zB8RBo(wM8qIdbM9$k{UQPkAj4|BC((50Gp6+RpX5?3Org@C|v2aR7M5JTV=9;#}~) zC5H$;lKV-pUz^9?xk(`jL($<^M>3=7s$L zQ2=B9|JkA8UYGMzJ;ctm8sY-ZBE5nBtUp=a9mI!U^fT7cc&?9%k4nO0asQ{B$vV9{ z*sIs^`nnvEz&!oBMZ(NIf~?1+&SgwTx)gU$^*=@br;rmu?5C|=1RjHKDJy+cf3!8w z3FbT7>N%x9^q3QDAZwRR$l00jtRJbD$P45hHI|ZIrQSo_C(o6yEq9^(gb!sHxJp=68NCWWPP=kDQB9_L=*^KCnNqMz(R- z4ex6mA2Yy0N77T(0Fute^*=>_4}9+fP_@5YH|`IZ-lSpuor`l&{~c&2j!*VOj0IX- zKc|f~C_Cpvmm&xB4E8irCQF+GRCA`hQ=f9agQA4C=t;==>FcDwgmd9Zr$OQRxq)0` zF3tYQqUcEf|MfZY{(O#`>|5c!sNaW_R$ezxc*GtPj}K6w24x+8nVa|*Tf9}Dw) z^AS(n0sG!Tm`5fG^X*Bfac_k>+95KQk+mMYe*arIJ0SpiKfbW+Q~%TVM{W+!7uE72 z?bp24EqN4Z*cZ^=LQm3_^d+5H@28rge{Fox5WqSy){C)jjP+x;1Kyd@CILC6nt0B= zGoIHMXTt`7Cs+sa<4YVVYGoHdzd;V9Pe!{6zl!>duk_79YpE;A>)3l`zN zy7dNR0TKWqfCd0}Kuv&Z)$oR&`914Hg8=b>)_`7s;ef|FMEIUqnS%4)aPG^QN8tn5 z+5^Hm)Gv@vJO2~%rSPfnOh(fzte@e$L#Yd>4+!+>ke4wd_BQkRnLEFc&v3LxhxYj^ z!i;lLCC`vw$UhY&pVT|hBigEkvRjR3Kv4fy)cqCx&=WJ_Q{p|YY?lXPsx~tp| z*K)X~6A17ExB;x`&ow|>IY7paLjY4;ot(CR*gaW3&xge zHh6&T^hwYcdo{5a*8JA}Qr@&3U+cNL^XK$yv{_965KpUFYG)1Hz!;DFA+D%=Y3IUFit9ojyL;%+Gf&!%W~PT`32N@lGiGo{uW-K zE~8z5|3}%7?FxLSylFZQsB;ulZr@06<9n(5Q{;J|JcAi$fV?xUWBMJSS3f`pfVJ;O z-=99eYNS6u(55`+Lq>bivHh1 z7oqW)Kza^=y4onOmHeJ@Abb(I*35xifnPwJQI8hjle)DCApNQP9}X4U6RKU_oa8dw zuYsr0_S2UO1<<#nk4N8+KA&o&KR+9NfM9$!`T)c5d8&(()9#PDCCKxC4v(Y_fZnmL z1uZmA(4V@DysY#XZ5Th3Ke%rA{qw}W(DrV@8e0@>F!Um2qq1pWSwqk)`-Ql#?=PW0 z?Hcs}d}8h6e~|;AH{t6sw`0uh7Q(B67ifcV9`w(H8*q=#uEpIFCV*B$0JPm1fLMUF z?WfPD8tKo^$_KDs2Vnk)wuCli$wS>*Ui~JbhS=N5U0mby9E%!PN#B$9mYPw)ntaCe z^pPu@?&|)uEyz)7Kjcf4|8?|-exc1_3``zavq+9dY?@NC4xsE~z5nv-abg$FgU7Rj z-=5N;_JY3AC+U!{5@ZazpXWeti?KViuDQpo240>cK`+Mb?Ep!DFo25tY2#_@Df7n0 z&-|XYfi{A1qR|Gh7L4)4B*4n2x+GuQ2pw>2q7UkQi}C?%@d0$zBFO#np2!njKwOJD zJe<90W=x3l_$%DUSF&#Xs^sk!Z&}AdHZ;G0{ee~K|5=ZTJjq-y;zKPTwG?dMBK}(h zSt&}6EV}=fTrWN^c=5gMQzkh$I1B}ixOSfjhyw%x8272TzdGLAqCa(lwGCk0!1#f2 z1mghemU#)G!6#Ox`-^W=9mTbGV8?C60k+0Wd&cMg9MgR+fjyeC&YrrsvTJ9I_$K`s zhvO_Ub(Tog#ec>4lN=Z8nD9I*aT#&bZ=2u)0Kc|k0E_Ow^h&JQnd)$AZA-5Qf_)p4 zKBQA;0Cj&9zz+v>b+IOGjqtpAzPMb0BQfZzY_C5#n9ZEFQE&W z`;|4RJV%Q*K;{Fi^eKIB_#;Ke?vv6nVBttEEi`LxVC%6uSsvJlO!KJ#pQ>F-0g<$b2-0!ys7 zC?)QUcr58X>Ce2p+(&hUnijeF$0{fPThdsJ|F?|GJPtm9K${UP1fI zufgw2t8s2^vd4m!k--x|7o+ZPiqE7UbGpUpe*9ZD(qHKSSG=drpx+n?NChyLp!~qu zp6<0yt<8YliNKoR6zBk~JrzrP`Z25%KekrK_rJ#IYXeoO_Z6;*XRgg*%|X=&Ys+5v zd&ob>bzd*|f9IhCen5Op|H{e-q}@lI*RhGdl>KdQb&8+Uz`YiAztQh6i|)ryWg`z* z`+*_&j_U`l0rUgOW8}3pFLu_S`}SQ6XL0py*eUR&T#K;gReq)&V-Dc_&yxP;yW0JA z_$K|aK5fQ19;_o_<6a+Gv!Zz9FL_1YgY;kgFF2$cYH1J)vbNS5pNRSX{CAAlh4Xmu zjP=F$bV!}*P^}tmGuM0C0!r)mTg#ki0~Hf-xm|Y&78haDU&EYqN0nJaoV> zI2TSn_pvBnkb4xE`?-L%EHv|!%)i#(My#dboOxB(FZV4o=lECHBk~$~k~LG=HL-@e zRpLmj9|N3O9)qgy(+Z++lIzE`OPeyn$b({KH4!+Qx~Ea&Fq=!z}dy zn0Hmnnq~b(TfY=zfuGHGjP>6he;xgq^Tat*=J~mZjo}~viWpG(Q;39`kAj&JYT;pIqFWx{_UUzZ8LK<#(aNWe5NgT1dy(j?~)p?QGTEs-q!~N0F1Gq z(gD-({i+4s(s=f~_^ze1xbPfkjPuBC+5y(B?0sFLTl*aQgjpLvzOPF9vp?<=>gy}C zpLW6?p_cO6SpfEb;XF`%t+5h(&f@0CF){aZ2WWldXMGKT`+DV?pTUPl&CU6zan5&= zBhO-7IlpV#>>3UZ^vCI!cL!twn70oG(C=d|hdCX}b7^Rg%j9+B74nQR7Gx|zyJFM< z^aJkmaCJTYRV!cY5wH^n`qhWe3ZI4Nkt)8Gukcyk$NnL%XLG$9doImf->s;6j^glZ z{2y`67>j5B|M3TOEo$^G0Ox3|-WFPA+*AQpz z?cu?5c=vzYHh6wmi&>2FI1C_kVL{@(*I1VH^mJ+xwO=N8(= zplaf$KJ~Dc1-)gxPk{9cJhOf){4So|dg_>dR$M_nUlr(GuKRMo*s2e7`t$r8?xRH0 zmOQ8D1*(c4x$cMa$h5B)>SOs6^)IWjF3vc~nDaxe?X^XC&R5skS2u)JTRE>&%531A zx_20WK7V@v?LK35qwG_Ds{=}_`*CSOv(^Fh16V`CSb+7!DjzTs@2Q6#sO?;H@8TXw zA}_#B{5lHrVvX1h>jThfTm!J=faSSs^nKa_7tDc|MRv-1E$PY}e?QbP@B0=6M~uy9 zFm9Xx{G&d5|2F7<$RlgR%6jjzT+bMTb`N_>1@;}u#%DvV!Cn-erC?n5h0n)z_FqRd z)HVj&?OND1{$3D%gnbb)jX!PN6c^6H{(}dko`NrM6+R%&2QcMETJivu#EXnQShs!$e0iKvD;stG>f7*4ANWVc zTn}((g5BryHuA&lj(?F{|LNqwM#MAmt@M6tyk~4i|Ew`U`TXUPecVPi@&NS*??qpt z9)S8K0+0-73+M&N1xx_Ug3(wsE;Hfc#%3OJzsM2Pqnqjf719IX0j~dlnFC*74@FOC zug!$q)rM~lxwsj+mgYC)FX$RRhe$ToA~7$;xa2VE57}@gn5;`?-Fj*6S=wuOKkh?D zj)8ke<#UfXan?oAFXFnG@|Vezz?T`ae|U6boV{j$VMDUVTLaUY&H#>SZ-)YicjBLV zpFW=-fI6D~niGKj8_01}x*tE2P3ZvMi}!Q~P`?BMVgPA?jsV7<$`0I(_sbt_mvnVK z)`*!KVxH1WoyNSSnxpgupzFTqjI(y22hg;SpBAQWhzVE|Ug0%BkZ0W2JU&g&`SPsN zRej-SHHF;4Cy_P)gE;;(`Ub7!{@seu0k{X}LLa9G{5;gP7BtqsyyL5{i>ca9MSJMX zqvL(Bu4{jFW31!n_q1(Fn?DIK9MA_q`^%gh>7evJbu?qP^5}j1yiij*pa#Bm1$Y2d zPRM8nxb8R_zk2i5KZNl@SFbA2lkaobjUW{u38%87k20hStZm(&ur530n z?J)g5_!#Eb=g5BKv)7j*PeDJMdsmoe=X2??Ps{x15Irs_&)y>H1$j0F>>A^ZT%03< zJ%+NG{)F9s0(1|9Ekrz|p6N^4gYK-UI64W>@`>jrvsV- zLI9)(=|cJ#^*(7=-e%MRyf^iWCqUVOW_X_k;MxH55aR%hP3C#lcH8oDkLFyX5ZmJ& zkQ+iS8|PD8*8!L>*EX5sWZmnf;}Sg@&f4ZaO1VZad7uL1kbC=v!S6Wo6POG+Kh~tu z21!2~dg*=8VkdMl8}^`>yJ7!QJJ^exi3Ru@>1!g-#C3*yZ@Ip&iBu)YThe-+urABZ%>(`Y*EG->$L_X0%-Gn0QCU0&!kU9=zZL# zP*XfWy+Xf|cEAe|0Eh-K9>@kT7NIXd8%107SdgFZcW?J-A@`1b-_}+9`66gwy;dk| zLE#HC7C-&HP6Om)&3rC5_fyhmx*0ks+e{vU?d2N3Y$x*|XBoO5s_YThC-~jP-=G6< zj?vS|1tg(wS({J_{!=vPD}8&^aWI!JYdKKkCfo6K@bmhE_ON?0zPH#z(w^)2U#IE$ zz0?|Fvya`jH~Y1n+n}xo{k^dO$`)mevX%^Btfy=~=|THkk$NAuE7ZsX^aW`LXk(~v z7!L#kVgbq*xE1edqZpsg1Uw!R;P?IeJyPkz;u#Vy;@kr8{#UTW^a=S4S<--d-~-6x z=ZMD-ex&0IYvAT*#_Rq7Ys7Ar4|rxG?LOD~v}-~zzec-bjIlWe>Vy0lvTyDCExJF7 zXMPm)YoxL9J?%Sb&N1>?5!labet4je`&_PYeL+Kx;T7;#EA#;!DC;>4wC9;T9z}r30v6sAs5e zsCO81gaYUbWB@t?=nswnOajaTENBuO@XIIdu{Rn1;CFaVCC`%5xQ7_}u3%paeZ&u; zA4r$&kkxC5&o5uWp5J#szZSyGePhHiZFyg(A*VgH-* zQf=d>Lc@MNxi6gindz4@Kfq^v@|B73|rd-EkTqpN* zV9rYCQ0DR6Hh%tXMu7M(*?~Gg|KI)EKM~r0qPs&3(y9I0}=qt3*-R$0Y(B84?Nny*>S}^>3lv7)(i10p&xVVAXf~% zZ{z`~3lel$T;2)xdWDWh#_NceHFee!>vyQvl^n|45%sji_HutG=>yvHoCw(tybt=~ z-nMA3XhJ$sKEHp)((hT>FV8jPxx4Z?j{}478Ys-8lZ1vn$=dS&AZ|FMKfBb7pOJ6( zyaXM03t}GV9r~A2<_)xGEQETAa|8qXFuhRq1>(;h^rPmKIo@ZReoE~$j1nObdcH&h& zKayuOLH&xOUx5zr^`(BX=-vXF8|WhWk30aHE}6c-^ST>ts1>IB&!ASqi9dOk@l3O z3;<;-450iy${uB~Drt}I3Umzh4S9h2hc<}*pg(|qi7g%=KhvJw2Y9(oo&u6W}jUSMu55k{%=|+QHrW-g%tOO8d_96nIVs&->H1ua=ic z;{UM|G)cGE{1RxdXe9j+^vgYN^cRk<(d+TdmvBqyb`xGN9)sM&r(;bc{klcqRr(d= z9d#e;SLDR`{KR7uuwEKnP0MfU@arcTjsD%dfjjX+{7~mp?kPK@J@qMleaaSNF2-I} z;qRfFBAe0yXJ9Ub$YP7l7ixtWX174Gj*S6qBC zTA1-1D;WzFsndcqGCzwdvYGoZRSs!A^wTRGgRw{yl}gV8xmdC z&CiaX3z;WAh!^5#7(mIrk@nQD#4l;D{5@s!@l};K#RJqoMjoI~>JLzQfODWvNFRoN z>{!5^fV%+?0#@Fem2hc8R87ePJCbT3@736{zZmqo!6sPpb*zidn~wcE3!!(n={ZEk z*5_d-PVK;6`WN;5GSADP4JkA2jW&UNK%0QRxpu+(F>gcOkaivaSNS_@+GG40aynPB zPlEY8oXrGVZ+~V@a;?Rq;sZH<;(_=W0~iV*o@no>^Of8apQJtYEM<-ORR{&dr7k8N`8y*$%ky51p@@4@)>-?)*cNde zbNHw34HCOrJBz#!J5yeCwZorf`M=vcurB9KTR#~bB7o!%k@M>2l!X?uPKk@iAA7)f&DFlMis^j20kL)$)gyb zX;G56gxdV`|7s!*-|mfPr`cUt)716o7nwfaJkcuj@y718IA7{}+IsqV{Q=zp#1HXA zd=YQNpHc29V}B>wV>q(e;sM$z#s&0OLjkdXR6rJhu>oxy?E&@PRKRQiWnw|2I<-C; z81B7qVGCc>6x9&ho7%}*XFh+B&mb}3j6)eS@+|T~_Q61p%Am3Fp3K?tGyCT_K=&)q z@uzV{{=q@@<#@3t)3iC(W%p~X!#*0^q|sA>_1rl>>O9Vu^XB}C2jZg*fcPPvLIA{@ z^7a0Xa*yE^YDONYf&XyK2 zf0jNk|EH-qIXejX40rHqHQFz8UYyIJMH&9fr^GavU#q4g=W{oJ^W!`@U(Q?U`wYBK z0uVpM6Y)j75r57A;`8q)_ZU{8rg(t931dUXr;JnU0vZAW0Lmv&_JDeiu?}T{GBE|f zIEXs(LBI=5y=yNSote1j?W~Y1o04nGvxs*jR)-&5ThY;;oa z^Kss_IeyNA^P!y|4d6UE-)?|*0OBDYK)m<^8UTnd72gw&#Ah`C@%wjgws^o5gRTRh zEu&3S_8fvu}@wCbp?5&DB%CqwJUKQ_S#UVT*0}==irANMJ>br zo*rTs_C0Qox6{WEWp{dIGxv@2)5G5G6zsjAk-LkL?wki>p5Xw_uNQ#x%>;1%F#zI2 z*?QuM_@eA6+7qY$4YbEFWmDrN&pH59Y(RZRo2KkR6TGLNOBrYj=mKE;L)|zMp!h)P z1M1NQ4cuMc$ZS|^#hnR0`xdqixwxsh2YoD_eZ+GRu)a`3aIJA)ue#!wVGU$%{nUNI z@Esz=g%_g56`YrGD7*QQ{1IjNj)3$(n^jxedfVJQv`5oUQa-^BR)gThRxe zhj?jon&%I1runS6D>?Y(gnF)zS@gV;cha5XCqHvOy#bsb=gIkU-jRSn0P$h8_11pg ze-rI7m4e1`D;}T?qb+j-P``Nt`~c+r7y$hO+QIe!>c*n@;2!+%e!#q%)$O13c5!?u zs=oV@p~;c?Pqhp_^;Jd#u@!6Q+v5QVHFbJn-EkZ2@(#okI}%x=?trtb0erOr{(n1s zjO|#X*oxorxtGjIY{xypTgSg_AHL0trjx0>@^tJ||b_RIb`4vvTGT=ZX*yp!%6Kk3f-a9*5WI3NI^WWF}u6Cad$ zM*#6eoc%A*9@CIb%}411&ea7#o+s~n0ek>K0O~~IN$~;kNBJQ>2LgrzMgt}QrUIq| zW&tRF_W~%3q|HNshb=G{uk#G>2;N(R@&CM@zvVp$ydUp-FM$29KlaQ1IS!78%g2q&xYW^W!`@UnTR@i8TNYfNB7RE4=-mYHD7bBYB*>PCg*-(=Vt8@CFpe2VL<0 zTLAq5LjfZI#Qk^x<&X5Z3qab?cO;!=1Mao}X-E5P3-~_*ujOwDya#nU@5lS{{_KbS zv0wH-1aKRGejUfx4q&7^`B~AO^P}zKd|d#XKk-0(DB9!g|8z6*0ePOh?*y>s17Cbc zyisnb50U}tfGj{K0OQ6!0P@0Mz%al_z$gG|Lt8;QQ9dUENH+rQ2Z454f%;Be!|VB5 z0`J57@xHu2`(c0Vm;G}b91q9E@zK6>yd1ZY?&NRMo%3`8knaEMGLI=1*-Fa?N*@rP zv4A8%3qUJCTL5w270?qv-P;#H+6({;0+3eJ6}c85{f65Be$Q)oErGw|?|C1}H}A{) zvmf@ye%U|A!SQfhF@SJDadiLxpzDExQaAEJH49K4iqZ#-@xK5-C?Ecv)$!5(5 zj<^r)r3=6fPzOL;s(69+!5=_6gaE<-v=yWe^#o}}y&P)+(yu5`*YJA&j=$%9ct75k z_h&!skNql|b37au$H#GUyc{?AxEess32*;trNn^38SzIv5})*!odMLTiWjJ7Jpts0 z27pEY>R{4`a!Fbd0xS@SSJKcL_qB+OIaVdZPAG!k> z71Zo;9|HNHI>5*aN-xyH_v8oaUDAX)nDn7sl2(NJ79jnK0(Fi04S&!3@P526@6UeN zpOSMU%{e}fQ;ivK|7jJ30fkdryr6UgX+fT#ERsG1$|iv{Q+z@i+5&Zr`i;5=@5lS{ z{)*m8zgyFsJ@?MZ2P2t*^KK{5P3mg$!eA>bNm>c9~RbWoY*H_SLF6I5^g*S<}hM*~P`hl?|`X zPEIvz)^K#dX>_=z40kNUrR==AgJVr67gsko_u6$lJnGidTU`&2I^U_VjRfbp{rIgpzMt$}42= zPA+bBJiQzH2Zcq(G)+ut)ph*bmll4yX6@RgA3XQasO8Q8D~0O*FP-{n`O9P4r6op(2m3Xw4S6>n%1s3|_qyIbf#ESN20W90$=IKb z_ZPmI*E2OHJkZCRBPbsg47~?M#I+jr)^Qsh-uTsz|IW>bjR@ihTxvQ}981Y(R+q8+ znl5f0UOwnO>&|5-Z|tgwZ;pRFJu40)@bYkTsd=+RfVOdTa;;OpQD8(|#?;j%A-?cX zF0CHZIxak*k!Kwc0VuGVS}8t~?_AvKHSiCM?eyHHQ-yC|icd%Kp3RO4_4BUl=6n-; zXm4NLu_h+(6C9N|`@6!jR*KH$C0BP%PiPX<*t51PxS&i-pfjGEhqr%NT!$~ul(xeg zt~>o+YHXOFw})HV1VLv!ch5#aO_DmV!8tuQ-7YU{oe&w=s2&8N^lXUkiF+^K(Abm- zKVxfQIhtwDnBq#W&rp@rR3Yk|F~dc$9JgkUJ;0x($P(n?F`Mb!Y6#_WQ#lnneXREZqR8 z^J>*?6daQ}rED6-$AE>%G3hyBA_zholH!Pj{yx2LS9lxq148CwAFT zKBZ@S@aCnh62g4yxfP`d?d{3>jY8uy=9Nd~+wPp-p1Uu-X-Ffg0h`9qzB+iXVNh(^ zAnb0fjHc}$)*?2jK^+%Z;~QmwYS$gSm)dz_d3AnKgV)w{NQnXu+F}7pzMH3SM6SuCFPFccBJXf`N=AGrSO8j}Fa^l_zxQz`lA-*Lpq?&Dt$7UR??A-|d(j>07TBWS|fNsyR5<_6~~6m{J*%Z=A-t zX_@gM4Iu-C)F7x|tDbLUYW5c6wUzSz?VJ|T{`H}Sj0muIaH`!PI6iaW=}PI-c++nO zWhI3*@+gD=`)V~@<@BGdIG@AVr}6#e`*PA^0=x<#0MmB|^;>nzt1Q)H7{S;56ao|n zLiM@S^@&Jse{bcZ9|sf6$VrR#_jIdSz=04xH?M%$^sf0;Fnydr*Sk$ZNW4<$EAzwKAOKWA4M_l? zzfQx@#H?H#)KW!l&#hSrp^yM+g@JzRzK(M*R8j9ZKjy9uDG@#%E|frUzgzu)*osz}y@TUh_j<$jm6h}D)sK5-HVyK2t0~#9VQ5m@J}WAxC);wy&(5Z%z6AvLypb_Vbo|E~|(C+Cm0iLzkKdn#q+^ST6!u)G)cenucYf1GN7@N@}w~FVV z+r!X*T&teLieA;Tjlyz$Yd&~G{}q{TEpcq-pRD`O-Cg33D)0i+Zq>hq|9a$Bt^WH~ z@m~S|e^Y_eEAdvQ{Gk^9m-;6rz1z@FO8ij;UT|&o&~9`9l>Tekb;xT~6nx29TwOGz ztI~gTzo7r0t<1ceHR>+EGDzuv2ba3OO`3Ne_;6J!fHU_E=nMz2uC%`%J`pJ$`%kaB z@CSz+kL}-)5r{MWFU0=MvipszO8r5|$!jG0#zD&W)uV+M3?!QjJ^07U|d z640*Ch^ZT@APMm0G@zfsr;dJI0=%&H(rxhg7b`#ie{R7n} z+@P*{`uqACq+9?%3bt47q!%k!2c3ES&fEKD!}X{O?k`vY;{r(ifatWG{-dX@s#N^1 zoIQSU_e|s-4a*;r10jN8NkG8F`zosH$JRXd&!2L8-wvtJy|wh@H_4BN(gS1xqtiOw zHtMdID^CZUd42lWLESL@1`vMB>WkjL)Ip(%ZF&qDKYK-GMFLk>&Yn1|cl#8%0DPVM z6awn|M>X%zcjS}@Dk&AE?YejB?fp8Z#|GWF0L~@AIt@eOTXh{cX4(tqZPBjW-yMH? z+L%GzS|^4zuIs9s9*KMX4@3Yf&=JXPd*x1;wdi8GJG=1)7v7pNerT_@DNX$9yE)xZ z1|I)VasFRyqlaP{-qlZN-{&>|)XWmpE;S2(~DysIq0=sIBZT@O{fAzX9! zl-v8|SSoOA6k!z+p#)AOF4_-C6&1$NU-Nb8l&% z8jTXT8){D!3P^!k^%|o9t8?EGlV&aW#riHc{W<@MnG=Tf>6jK9+|Z+#3OvdH3(yi; z<@6glY1X3^v?OtD`MjAEhxhH2-ZZokB;O|SbsRtou>db3DYHwz5tC*<@ZO&{J>}~^ zJp0}QGbfJdo0B1{-)@wAg?@5?UV!KyDF-ld#(ggzE3Ylke*O1-GbRl0m(wb-`0777 z4Ak7C2+oTG$mu(L{Iogq^2(=)F0Pw9XWIB-ec8Pqs~-!S9mCx9w_pKQfMNixI`_#P zd*|H`t}KsBd}i^3ci%Z?XrE3Qi4p!@B~*V}Fn~P|z(7PoddFJ^-!Wy@{fiFYtV3Wr z{OO)7tkKFmmGbIZtjpax+Wg7mj}O_?&4IM)dFA z9u?ren0;}qf1MIk11|3MeL`bXv%2)n9W!X01BiGU)b+)9!iTspW^tk{vN0T0Z}QyQfXOeNeBC8A(w= z*a0ASVO;N|xOZ~r32M*-A`;Ttckh=wX3C5?55BNuPiePdT-v?t`3L9Bm^?bSU$=H? z@e%$F>S6~(8Fryqw!X+62(3HaGGN5GDKqCh_|(EuZ3H>J@$CiZeahJ31A2AJOo<8g z^^%)lY!B)Ho(MAz{7XF%wz}c;?w_j*XvyArL^by>1|GXz(T9RK>ka~Q};+Gc8yZ;{9d!MfD z)0;(y`l{V0g>PT-CkqWc8wEtfrDSAd1S7^yo;Lg52jeXc%^7b4!a`KGcPX2me zSN{5CuRb|{?gRJEo;GRBh(Ue2wa-YA8<5Jr`^GXhod$CIRU}5xzH6U>!$(h;I(^nX z_ul`&Lk~YZciy~tkFeo&?!yl~^uYc1-ZN|Z)Cr@959r;Mz3UsWZf5t9J^~DYn~>b= zdHV#(5p=nw|IiVm$4{Di*YugQX5W4HJ#%Ec=bpP~&z?DB`dw2ejUPQ?$Zfs4v_tQa zh7D*XW83x>L;*Md)${hn7PRE_tWMqg^dCHIILrJbBWjiQ~tQ z9X)E~u)+QNbnldv-i&kiu2=32c(llB1lR-@o7AFJ+fH43_U_w%z@WiHb909cXB(C~ zbm-tg18(cvyJy!_#M~7!NCii3fUW0+-M2v@*n1ll9TOWHr?=SHnCK|% z!3_z*4qUH#6}$cQIu5u2*bTdny&7=uvA=&nKwuDCU_gMsKldOv@WKvcw+i3>TQCBB z_jN5d_d3{m?de&+zL(zW*Z1_SSJ$HswqO_Rz*eZMz*ox#a7S!D$KG>S*IKpQ^j51D zH=#RY3%X-vZU0u&;25f58#*?@J37{|G`z*uckKGE#NF>|0P+>1U_*bh>7UAI;Pe~* EAODerLjV8( diff --git a/extras/juce demo/Builds/VisualStudio2005/icon.ico b/extras/juce demo/Builds/VisualStudio2005/icon.ico index 853e63debcee70a77cbac5428c8d32f28b92f29b..9dfea84c64e909aa654bec54fd80b51e3f96d197 100644 GIT binary patch literal 82726 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 diff --git a/extras/juce demo/Builds/VisualStudio2008/icon.ico b/extras/juce demo/Builds/VisualStudio2008/icon.ico index 853e63debcee70a77cbac5428c8d32f28b92f29b..9dfea84c64e909aa654bec54fd80b51e3f96d197 100644 GIT binary patch literal 82726 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 diff --git a/extras/juce demo/Builds/VisualStudio2010/icon.ico b/extras/juce demo/Builds/VisualStudio2010/icon.ico index 853e63debcee70a77cbac5428c8d32f28b92f29b..9dfea84c64e909aa654bec54fd80b51e3f96d197 100644 GIT binary patch literal 82726 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 diff --git a/extras/juce demo/Builds/iPhone/Icon.icns b/extras/juce demo/Builds/iPhone/Icon.icns index a1d2ba8423941483ac31efaf090732faf70ae952..fea3a04779b05729d6eec816a10b2bd38fc4c9d6 100644 GIT binary patch literal 81944 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%0A&Xn;y4+=xdG-OMgbU`%q?H4MB3ucv7Dn2d!rB+ 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 bR(%)Y>UT8&`H4}mp+DJ-Z}~KE#tr`uLY8y= literal 81944 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%0DPVM z6awn|M>X%zcjS}@Dk&AE?YejB?fp8Z#|GWF0L~@AIt@eOTXh{cX4(tqZPBjW-yMH? z+L%GzS|^4zuIs9s9*KMX4@3Yf&=JXPd*x1;wdi8GJG=1)7v7pNerT_@DNX$9yE)xZ z1|I)VasFRyqlaP{-qlZN-{&>|)XWmpE;S2(~DysIq0=sIBZT@O{fAzX9! zl-v8|SSoOA6k!z+p#)AOF4_-C6&1$NU-Nb8l&% z8jTXT8){D!3P^!k^%|o9t8?EGlV&aW#riHc{W<@MnG=Tf>6jK9+|Z+#3OvdH3(yi; z<@6glY1X3^v?OtD`MjAEhxhH2-ZZokB;O|SbsRtou>db3DYHwz5tC*<@ZO&{J>}~^ zJp0}QGbfJdo0B1{-)@wAg?@5?UV!KyDF-ld#(ggzE3Ylke*O1-GbRl0m(wb-`0777 z4Ak7C2+oTG$mu(L{Iogq^2(=)F0Pw9XWIB-ec8Pqs~-!S9mCx9w_pKQfMNixI`_#P zd*|H`t}KsBd}i^3ci%Z?XrE3Qi4p!@B~*V}Fn~P|z(7PoddFJ^-!Wy@{fiFYtV3Wr z{OO)7tkKFmmGbIZtjpax+Wg7mj}O_?&4IM)dFA z9u?ren0;}qf1MIk11|3MeL`bXv%2)n9W!X01BiGU)b+)9!iTspW^tk{vN0T0Z}QyQfXOeNeBC8A(w= z*a0ASVO;N|xOZ~r32M*-A`;Ttckh=wX3C5?55BNuPiePdT-v?t`3L9Bm^?bSU$=H? z@e%$F>S6~(8Fryqw!X+62(3HaGGN5GDKqCh_|(EuZ3H>J@$CiZeahJ31A2AJOo<8g z^^%)lY!B)Ho(MAz{7XF%wz}c;?w_j*XvyArL^by>1|GXz(T9RK>ka~Q};+Gc8yZ;{9d!MfD z)0;(y`l{V0g>PT-CkqWc8wEtfrDSAd1S7^yo;Lg52jeXc%^7b4!a`KGcPX2me zSN{5CuRb|{?gRJEo;GRBh(Ue2wa-YA8<5Jr`^GXhod$CIRU}5xzH6U>!$(h;I(^nX z_ul`&Lk~YZciy~tkFeo&?!yl~^uYc1-ZN|Z)Cr@959r;Mz3UsWZf5t9J^~DYn~>b= zdHV#(5p=nw|IiVm$4{Di*YugQX5W4HJ#%Ec=bpP~&z?DB`dw2ejUPQ?$Zfs4v_tQa zh7D*XW83x>L;*Md)${hn7PRE_tWMqg^dCHIILrJbBWjiQ~tQ z9X)E~u)+QNbnldv-i&kiu2=32c(llB1lR-@o7AFJ+fH43_U_w%z@WiHb909cXB(C~ zbm-tg18(cvyJy!_#M~7!NCii3fUW0+-M2v@*n1ll9TOWHr?=SHnCK|% z!3_z*4qUH#6}$cQIu5u2*bTdny&7=uvA=&nKwuDCU_gMsKldOv@WKvcw+i3>TQCBB z_jN5d_d3{m?de&+zL(zW*Z1_SSJ$HswqO_Rz*eZMz*ox#a7S!D$KG>S*IKpQ^j51D zH=#RY3%X-vZU0u&;25f58#*?@J37{|G`z*uckKGE#NF>|0P+>1U_*bh>7UAI;Pe~* EAODerLjV8( diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index 1bc39b284a..3848a1459f 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -7464,97 +7464,40 @@ const String File::loadFileAsString() const return in.readEntireStreamAsString(); } -bool File::fileTypeMatches (const int whatToLookFor, const bool isDir, const bool isHidden) -{ - return (whatToLookFor & (isDir ? findDirectories - : findFiles)) != 0 - && ((! isHidden) || (whatToLookFor & File::ignoreHiddenFiles) == 0); -} - int File::findChildFiles (Array& results, const int whatToLookFor, const bool searchRecursively, const String& wildCardPattern) const { - // you have to specify the type of files you're looking for! - jassert ((whatToLookFor & (findFiles | findDirectories)) != 0); + DirectoryIterator di (*this, searchRecursively, wildCardPattern, whatToLookFor); int total = 0; - - if (isDirectory()) + while (di.next()) { - // find child files or directories in this directory first.. - String path (addTrailingSeparator (fullPath)), filename; - bool itemIsDirectory, itemIsHidden; - - DirectoryIterator::NativeIterator i (path, wildCardPattern); - - while (i.next (filename, &itemIsDirectory, &itemIsHidden, 0, 0, 0, 0)) - { - if (! filename.containsOnly (".")) - { - const File fileFound (path + filename, 0); - - if (fileTypeMatches (whatToLookFor, itemIsDirectory, itemIsHidden)) - { - results.add (fileFound); - ++total; - } - - if (searchRecursively && itemIsDirectory - && ((! itemIsHidden) || (whatToLookFor & File::ignoreHiddenFiles) == 0)) - - { - total += fileFound.findChildFiles (results, whatToLookFor, true, wildCardPattern); - } - } - } + results.add (di.getFile()); + ++total; } return total; } -int File::getNumberOfChildFiles (const int whatToLookFor, - const String& wildCardPattern) const +int File::getNumberOfChildFiles (const int whatToLookFor, const String& wildCardPattern) const { - // you have to specify the type of files you're looking for! - jassert (whatToLookFor > 0 && whatToLookFor <= 3); + DirectoryIterator di (*this, false, "*", whatToLookFor); - int count = 0; + int total = 0; + while (di.next()) + ++total; - if (isDirectory()) - { - String filename; - bool itemIsDirectory, itemIsHidden; - - DirectoryIterator::NativeIterator i (*this, wildCardPattern); - - while (i.next (filename, &itemIsDirectory, &itemIsHidden, 0, 0, 0, 0)) - if (fileTypeMatches (whatToLookFor, itemIsDirectory, itemIsHidden) - && ! filename.containsOnly (".")) - ++count; - } - else - { - // trying to search for files inside a non-directory? - jassertfalse; - } - - return count; + return total; } bool File::containsSubDirectories() const { if (isDirectory()) { - String filename; - bool itemIsDirectory; - - DirectoryIterator::NativeIterator i (*this, "*"); - - while (i.next (filename, &itemIsDirectory, 0, 0, 0, 0, 0)) - if (itemIsDirectory) - return true; + DirectoryIterator di (*this, false, "*", findDirectories); + return di.next(); } return false; @@ -10498,46 +10441,60 @@ int ZipFile::findEndOfZipEntryTable (InputStream* input, int& numEntries) return 0; } -void ZipFile::uncompressTo (const File& targetDirectory, +bool ZipFile::uncompressTo (const File& targetDirectory, const bool shouldOverwriteFiles) { for (int i = 0; i < entries.size(); ++i) + if (! uncompressEntry (i, targetDirectory, shouldOverwriteFiles)) + return false; + + return true; +} + +bool ZipFile::uncompressEntry (const int index, + const File& targetDirectory, + bool shouldOverwriteFiles) +{ + const ZipEntryInfo* zei = entries [index]; + + if (zei != 0) { - const ZipEntry& zei = entries.getUnchecked(i)->entry; + const File targetFile (targetDirectory.getChildFile (zei->entry.filename)); - const File targetFile (targetDirectory.getChildFile (zei.filename)); - - if (zei.filename.endsWithChar ('/')) + if (zei->entry.filename.endsWithChar ('/')) { targetFile.createDirectory(); // (entry is a directory, not a file) } else { - ScopedPointer in (createStreamForEntry (i)); + ScopedPointer in (createStreamForEntry (index)); if (in != 0) { - if (shouldOverwriteFiles) - targetFile.deleteFile(); + if (shouldOverwriteFiles && ! targetFile.deleteFile()) + return false; - if ((! targetFile.exists()) - && targetFile.getParentDirectory().createDirectory()) + if ((! targetFile.exists()) && targetFile.getParentDirectory().createDirectory()) { - ScopedPointer out (targetFile.createOutputStream()); + ScopedPointer out (targetFile.createOutputStream()); if (out != 0) { out->writeFromInputStream (*in, -1); out = 0; - targetFile.setCreationTime (zei.fileTime); - targetFile.setLastModificationTime (zei.fileTime); - targetFile.setLastAccessTime (zei.fileTime); + targetFile.setCreationTime (zei->entry.fileTime); + targetFile.setLastModificationTime (zei->entry.fileTime); + targetFile.setLastAccessTime (zei->entry.fileTime); + + return true; } } } } } + + return false; } END_JUCE_NAMESPACE @@ -29276,8 +29233,6 @@ const MidiMessage MidiMessage::noteOff (const int channel, const MidiMessage MidiMessage::allNotesOff (const int channel) throw() { - jassert (channel > 0 && channel <= 16); - return controllerEvent (channel, 123, 0); } @@ -33121,6 +33076,21 @@ static float vst_swapFloat (const float x) throw() #endif } +static double getVSTHostTimeNanoseconds() +{ + #if JUCE_WINDOWS + return timeGetTime() * 1000000.0; + #elif JUCE_LINUX + timeval micro; + gettimeofday (µ, 0); + return micro.tv_usec * 1000.0; + #elif JUCE_MAC + UnsignedWide micro; + Microseconds (µ); + return micro.lo * 1000.0; + #endif +} + typedef AEffect* (*MainCall) (audioMasterCallback); static VstIntPtr VSTCALLBACK audioMaster (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt); @@ -33227,22 +33197,16 @@ static void translateJuceToXButtonModifiers (const MouseEvent& e, XEvent& ev) th static void translateJuceToXMotionModifiers (const MouseEvent& e, XEvent& ev) throw() { - if (e.mods.isLeftButtonDown()) - ev.xmotion.state |= Button1Mask; - else if (e.mods.isRightButtonDown()) - ev.xmotion.state |= Button3Mask; - else if (e.mods.isMiddleButtonDown()) - ev.xmotion.state |= Button2Mask; + if (e.mods.isLeftButtonDown()) ev.xmotion.state |= Button1Mask; + else if (e.mods.isRightButtonDown()) ev.xmotion.state |= Button3Mask; + else if (e.mods.isMiddleButtonDown()) ev.xmotion.state |= Button2Mask; } static void translateJuceToXCrossingModifiers (const MouseEvent& e, XEvent& ev) throw() { - if (e.mods.isLeftButtonDown()) - ev.xcrossing.state |= Button1Mask; - else if (e.mods.isRightButtonDown()) - ev.xcrossing.state |= Button3Mask; - else if (e.mods.isMiddleButtonDown()) - ev.xcrossing.state |= Button2Mask; + if (e.mods.isLeftButtonDown()) ev.xcrossing.state |= Button1Mask; + else if (e.mods.isRightButtonDown()) ev.xcrossing.state |= Button3Mask; + else if (e.mods.isMiddleButtonDown()) ev.xcrossing.state |= Button2Mask; } static void translateJuceToXMouseWheelModifiers (const MouseEvent& e, const float increment, XEvent& ev) throw() @@ -33328,7 +33292,6 @@ public: ~ModuleHandle() { getActiveModules().removeValue (this); - close(); } @@ -33626,7 +33589,7 @@ public: } const String getName() const { return name; } - int getUID() const throw(); + int getUID() const; bool acceptsMidi() const { return wantsMidiMessages; } bool producesMidi() const { return dispatch (effCanDo, 0, 0, (void*) "sendVstMidiEvent", 0) > 0; } @@ -33683,14 +33646,13 @@ private: MidiBuffer incomingMidi; VSTMidiEventList midiEventsToSend; VstTimeInfo vstHostTime; - HeapBlock channels; ReferenceCountedObjectPtr module; int dispatch (const int opcode, const int index, const int value, void* const ptr, float opt) const; bool restoreProgramSettings (const fxProgram* const prog); const String getCurrentProgramName(); - void setParamsInProgramBlock (fxProgram* const prog) throw(); + void setParamsInProgramBlock (fxProgram* const prog); void updateStoredProgramNames(); void initialise(); void handleMidiFromPlugin (const VstEvents* const events); @@ -33705,8 +33667,8 @@ private: bool saveToFXBFile (MemoryBlock& dest, bool isFXB, int maxSizeMB); int getVersionNumber() const throw() { return effect != 0 ? effect->version : 0; } - const String getVersion() const throw(); - const String getCategory() const throw(); + const String getVersion() const; + const String getCategory() const; bool hasEditor() const throw() { return effect != 0 && (effect->flags & effFlagsHasEditor) != 0; } void setPower (const bool on); @@ -33777,34 +33739,32 @@ VSTPluginInstance::VSTPluginInstance (const ReferenceCountedObjectPtr magic == kEffectMagic) { - const ScopedLock sl (lock); - - jassert (insideVSTCallback == 0); - - if (effect != 0 && effect->magic == kEffectMagic) + try { - try - { #if JUCE_MAC - if (module->resFileId != 0) - UseResFile (module->resFileId); + if (module->resFileId != 0) + UseResFile (module->resFileId); #endif - // Must delete any editors before deleting the plugin instance! - jassert (getActiveEditor() == 0); + // Must delete any editors before deleting the plugin instance! + jassert (getActiveEditor() == 0); - _fpreset(); // some dodgy plugs fuck around with this + _fpreset(); // some dodgy plugs fuck around with this - module->closeEffect (effect); - } - catch (...) - {} + module->closeEffect (effect); } - - module = 0; - effect = 0; + catch (...) + {} } + + module = 0; + effect = 0; } void VSTPluginInstance::initialise() @@ -33869,8 +33829,6 @@ void VSTPluginInstance::prepareToPlay (double sampleRate_, setLatencySamples (effect->initialDelay); - channels.calloc (jmax (16, getNumOutputChannels(), getNumInputChannels()) + 2); - vstHostTime.tempo = 120.0; vstHostTime.timeSigNumerator = 4; vstHostTime.timeSigDenominator = 4; @@ -33924,7 +33882,6 @@ void VSTPluginInstance::releaseResources() incomingMidi.clear(); midiEventsToSend.freeEvents(); - channels.free(); } void VSTPluginInstance::processBlock (AudioSampleBuffer& buffer, @@ -33954,17 +33911,7 @@ void VSTPluginInstance::processBlock (AudioSampleBuffer& buffer, vstHostTime.flags &= ~kVstTransportPlaying; } -#if JUCE_WINDOWS - vstHostTime.nanoSeconds = timeGetTime() * 1000000.0; -#elif JUCE_LINUX - timeval micro; - gettimeofday (µ, 0); - vstHostTime.nanoSeconds = micro.tv_usec * 1000.0; -#elif JUCE_MAC - UnsignedWide micro; - Microseconds (µ); - vstHostTime.nanoSeconds = micro.lo * 1000.0; -#endif + vstHostTime.nanoSeconds = getVSTHostTimeNanoseconds(); if (wantsMidiMessages) { @@ -33989,21 +33936,13 @@ void VSTPluginInstance::processBlock (AudioSampleBuffer& buffer, {} } - int i; - const int maxChans = jmax (effect->numInputs, effect->numOutputs); - - for (i = 0; i < maxChans; ++i) - channels[i] = buffer.getSampleData (i); - - channels [maxChans] = 0; - _clearfp(); if ((effect->flags & effFlagsCanReplacing) != 0) { try { - effect->processReplacing (effect, channels, channels, numSamples); + effect->processReplacing (effect, buffer.getArrayOfChannels(), buffer.getArrayOfChannels(), numSamples); } catch (...) {} @@ -34013,22 +33952,15 @@ void VSTPluginInstance::processBlock (AudioSampleBuffer& buffer, tempBuffer.setSize (effect->numOutputs, numSamples); tempBuffer.clear(); - float* outs [64]; - - for (i = effect->numOutputs; --i >= 0;) - outs[i] = tempBuffer.getSampleData (i); - - outs [effect->numOutputs] = 0; - try { - effect->process (effect, channels, outs, numSamples); + effect->process (effect, buffer.getArrayOfChannels(), tempBuffer.getArrayOfChannels(), numSamples); } catch (...) {} - for (i = effect->numOutputs; --i >= 0;) - buffer.copyFrom (i, 0, outs[i], numSamples); + for (int i = effect->numOutputs; --i >= 0;) + buffer.copyFrom (i, 0, tempBuffer.getSampleData (i), numSamples); } } else @@ -34496,7 +34428,7 @@ private: } #if JUCE_WINDOWS - void checkPluginWindowSize() throw() + void checkPluginWindowSize() { RECT r; GetWindowRect (pluginHWND, &r); @@ -34517,7 +34449,7 @@ private: { for (int i = activeVSTWindows.size(); --i >= 0;) { - const VSTPluginWindow* const w = (const VSTPluginWindow*) activeVSTWindows.getUnchecked (i); + const VSTPluginWindow* const w = activeVSTWindows.getUnchecked (i); if (w->pluginHWND == hW) { @@ -34913,7 +34845,7 @@ bool VSTPluginInstance::loadFromFXBFile (const void* const data, return true; } -void VSTPluginInstance::setParamsInProgramBlock (fxProgram* const prog) throw() +void VSTPluginInstance::setParamsInProgramBlock (fxProgram* const prog) { const int numParams = getNumParameters(); @@ -35070,30 +35002,16 @@ int VSTPluginInstance::dispatch (const int opcode, const int index, const int va { if (effect != 0) { -#if JUCE_MAC + #if JUCE_MAC if (module->resFileId != 0) UseResFile (module->resFileId); - - CGrafPtr oldPort; - - if (getActiveEditor() != 0) - { - const Point pos (getActiveEditor()->relativePositionToOtherComponent (getActiveEditor()->getTopLevelComponent(), Point())); - - GetPort (&oldPort); - SetPortWindowPort ((WindowRef) getActiveEditor()->getWindowHandle()); - SetOrigin (-pos.getX(), -pos.getY()); - } -#endif + #endif result = effect->dispatcher (effect, opcode, index, value, ptr, opt); -#if JUCE_MAC - if (getActiveEditor() != 0) - SetPort (oldPort); - + #if JUCE_MAC module->resFileId = CurResFile(); -#endif + #endif --insideVSTCallback; return result; @@ -35120,7 +35038,7 @@ static VstIntPtr handleGeneralCallback (VstInt32 opcode, VstInt32 index, VstInt3 switch (opcode) { - case audioMasterCanDo: + case audioMasterCanDo: { static const char* canDos[] = { "supplyIdle", "sendVstEvents", @@ -35138,19 +35056,14 @@ static VstIntPtr handleGeneralCallback (VstInt32 opcode, VstInt32 index, VstInt3 return 0; } - case audioMasterVersion: - return 0x2400; - case audioMasterCurrentId: - return shellUIDToCreate; - case audioMasterGetNumAutomatableParameters: - return 0; - case audioMasterGetAutomationState: - return 1; + case audioMasterVersion: return 0x2400; + case audioMasterCurrentId: return shellUIDToCreate; + case audioMasterGetNumAutomatableParameters: return 0; + case audioMasterGetAutomationState: return 1; + case audioMasterGetVendorVersion: return 0x0101; - case audioMasterGetVendorVersion: - return 0x0101; - case audioMasterGetVendorString: - case audioMasterGetProductString: + case audioMasterGetVendorString: + case audioMasterGetProductString: { String hostName ("Juce VST Host"); @@ -35158,21 +35071,16 @@ static VstIntPtr handleGeneralCallback (VstInt32 opcode, VstInt32 index, VstInt3 hostName = JUCEApplication::getInstance()->getApplicationName(); hostName.copyToCString ((char*) ptr, jmin (kVstMaxVendorStrLen, kVstMaxProductStrLen) - 1); + break; } - break; - case audioMasterGetSampleRate: - return (VstIntPtr) defaultVSTSampleRateValue; + case audioMasterGetSampleRate: return (VstIntPtr) defaultVSTSampleRateValue; + case audioMasterGetBlockSize: return (VstIntPtr) defaultVSTBlockSizeValue; + case audioMasterSetOutputSampleRate: return 0; - case audioMasterGetBlockSize: - return (VstIntPtr) defaultVSTBlockSizeValue; - - case audioMasterSetOutputSampleRate: - return 0; - - default: - DBG ("*** Unhandled VST Callback: " + String ((int) opcode)); - break; + default: + DBG ("*** Unhandled VST Callback: " + String ((int) opcode)); + break; } return 0; @@ -35313,7 +35221,7 @@ static VstIntPtr VSTCALLBACK audioMaster (AEffect* effect, VstInt32 opcode, VstI } } -const String VSTPluginInstance::getVersion() const throw() +const String VSTPluginInstance::getVersion() const { unsigned int v = dispatch (effGetVendorVersion, 0, 0, 0, 0); @@ -35347,7 +35255,7 @@ const String VSTPluginInstance::getVersion() const throw() return s; } -int VSTPluginInstance::getUID() const throw() +int VSTPluginInstance::getUID() const { int uid = effect != 0 ? effect->uniqueID : 0; @@ -35357,50 +35265,22 @@ int VSTPluginInstance::getUID() const throw() return uid; } -const String VSTPluginInstance::getCategory() const throw() +const String VSTPluginInstance::getCategory() const { const char* result = 0; switch (dispatch (effGetPlugCategory, 0, 0, 0, 0)) { - case kPlugCategEffect: - result = "Effect"; - break; - - case kPlugCategSynth: - result = "Synth"; - break; - - case kPlugCategAnalysis: - result = "Anaylsis"; - break; - - case kPlugCategMastering: - result = "Mastering"; - break; - - case kPlugCategSpacializer: - result = "Spacial"; - break; - - case kPlugCategRoomFx: - result = "Reverb"; - break; - - case kPlugSurroundFx: - result = "Surround"; - break; - - case kPlugCategRestoration: - result = "Restoration"; - break; - - case kPlugCategGenerator: - result = "Tone generation"; - break; - - default: - break; + case kPlugCategEffect: result = "Effect"; break; + case kPlugCategSynth: result = "Synth"; break; + case kPlugCategAnalysis: result = "Anaylsis"; break; + case kPlugCategMastering: result = "Mastering"; break; + case kPlugCategSpacializer: result = "Spacial"; break; + case kPlugCategRoomFx: result = "Reverb"; break; + case kPlugSurroundFx: result = "Surround"; break; + case kPlugCategRestoration: result = "Restoration"; break; + case kPlugCategGenerator: result = "Tone generation"; break; + default: break; } return result; @@ -35833,11 +35713,9 @@ bool VSTPluginFormat::fileMightContainThisPluginType (const String& fileOrIdenti return false; #elif JUCE_WINDOWS - return f.existsAsFile() - && f.hasFileExtension (".dll"); + return f.existsAsFile() && f.hasFileExtension (".dll"); #elif JUCE_LINUX - return f.existsAsFile() - && f.hasFileExtension (".so"); + return f.existsAsFile() && f.hasFileExtension (".so"); #endif } @@ -262076,6 +261954,42 @@ public: outputNames.clear(); outputIds.clear(); +/* void** hints = 0; + if (snd_device_name_hint (-1, "pcm", &hints) >= 0) + { + for (void** hint = hints; *hint != 0; ++hint) + { + const String name (getHint (*hint, "NAME")); + + if (name.isNotEmpty()) + { + const String ioid (getHint (*hint, "IOID")); + + String desc (getHint (*hint, "DESC")); + if (desc.isEmpty()) + desc = name; + + desc = desc.replaceCharacters ("\n\r", " "); + + DBG ("name: " << name << "\ndesc: " << desc << "\nIO: " << ioid); + + if (ioid.isEmpty() || ioid == "Input") + { + inputNames.add (desc); + inputIds.add (name); + } + + if (ioid.isEmpty() || ioid == "Output") + { + outputNames.add (desc); + outputIds.add (name); + } + } + } + + snd_device_name_free_hint (hints); + } +*/ snd_ctl_t* handle = 0; snd_ctl_card_info_t* info = 0; snd_ctl_card_info_alloca (&info); @@ -262211,6 +262125,14 @@ private: return (isInput || isOutput) && rates.size() > 0; } + /*static const String getHint (void* hint, const char* type) + { + char* const n = snd_device_name_get_hint (hint, type); + const String s ((const char*) n); + free (n); + return s; + }*/ + ALSAAudioIODeviceType (const ALSAAudioIODeviceType&); ALSAAudioIODeviceType& operator= (const ALSAAudioIODeviceType&); }; diff --git a/juce_amalgamated.h b/juce_amalgamated.h index a4737b4a59..2ae7a610dc 100644 --- a/juce_amalgamated.h +++ b/juce_amalgamated.h @@ -64,7 +64,7 @@ */ #define JUCE_MAJOR_VERSION 1 #define JUCE_MINOR_VERSION 52 -#define JUCE_BUILDNUMBER 60 +#define JUCE_BUILDNUMBER 61 /** Current Juce version number. @@ -9433,7 +9433,6 @@ private: bool setFileReadOnlyInternal (bool shouldBeReadOnly) const; static const String parseAbsolutePath (const String& path); - static bool fileTypeMatches (int whatToLookFor, bool isDir, bool isHidden); }; @@ -15461,7 +15460,6 @@ public: juce_UseDebuggingNewOperator private: - friend class File; class NativeIterator { @@ -16145,17 +16143,42 @@ public: */ InputStream* createStreamForEntry (int index); + /** Creates a stream that can read from one of the zip file's entries. + + The stream that is returned must be deleted by the caller (and + zero might be returned if a stream can't be opened for some reason). + + The stream must not be used after the ZipFile object that created + has been deleted. + */ + InputStream* createStreamForEntry (ZipEntry& entry); + /** Uncompresses all of the files in the zip file. - This will expand all the entires into a target directory. The relative + This will expand all the entries into a target directory. The relative paths of the entries are used. @param targetDirectory the root folder to uncompress to @param shouldOverwriteFiles whether to overwrite existing files with similarly-named ones + @returns true if all the files are successfully unzipped */ - void uncompressTo (const File& targetDirectory, + bool uncompressTo (const File& targetDirectory, bool shouldOverwriteFiles = true); + /** Uncompresses one of the entries from the zip file. + + This will expand the entry and write it in a target directory. The entry's path is used to + determine which subfolder of the target should contain the new file. + + @param index the index of the entry to uncompress + @param targetDirectory the root folder to uncompress into + @param shouldOverwriteFiles whether to overwrite existing files with similarly-named ones + @returns true if the files is successfully unzipped + */ + bool uncompressEntry (int index, + const File& targetDirectory, + bool shouldOverwriteFiles = true); + juce_UseDebuggingNewOperator private: @@ -40269,8 +40292,8 @@ public: The model pointer passed-in can be null, in which case you can set it later with setModel(). */ - ListBox (const String& componentName, - ListBoxModel* model); + ListBox (const String& componentName = String::empty, + ListBoxModel* model = 0); /** Destructor. */ ~ListBox(); diff --git a/src/audio/midi/juce_MidiMessage.cpp b/src/audio/midi/juce_MidiMessage.cpp index b000a6e5da..ff002b8a40 100644 --- a/src/audio/midi/juce_MidiMessage.cpp +++ b/src/audio/midi/juce_MidiMessage.cpp @@ -494,8 +494,6 @@ const MidiMessage MidiMessage::noteOff (const int channel, const MidiMessage MidiMessage::allNotesOff (const int channel) throw() { - jassert (channel > 0 && channel <= 16); - return controllerEvent (channel, 123, 0); } diff --git a/src/audio/plugins/formats/juce_VSTPluginFormat.cpp b/src/audio/plugins/formats/juce_VSTPluginFormat.cpp index 2c7f8cc3af..489961b0e9 100644 --- a/src/audio/plugins/formats/juce_VSTPluginFormat.cpp +++ b/src/audio/plugins/formats/juce_VSTPluginFormat.cpp @@ -172,7 +172,6 @@ struct fxProgramSet char chunk[8]; // variable }; - static long vst_swap (const long x) throw() { #ifdef JUCE_LITTLE_ENDIAN @@ -194,6 +193,21 @@ static float vst_swapFloat (const float x) throw() #endif } +static double getVSTHostTimeNanoseconds() +{ + #if JUCE_WINDOWS + return timeGetTime() * 1000000.0; + #elif JUCE_LINUX + timeval micro; + gettimeofday (µ, 0); + return micro.tv_usec * 1000.0; + #elif JUCE_MAC + UnsignedWide micro; + Microseconds (µ); + return micro.lo * 1000.0; + #endif +} + //============================================================================== typedef AEffect* (*MainCall) (audioMasterCallback); @@ -304,22 +318,16 @@ static void translateJuceToXButtonModifiers (const MouseEvent& e, XEvent& ev) th static void translateJuceToXMotionModifiers (const MouseEvent& e, XEvent& ev) throw() { - if (e.mods.isLeftButtonDown()) - ev.xmotion.state |= Button1Mask; - else if (e.mods.isRightButtonDown()) - ev.xmotion.state |= Button3Mask; - else if (e.mods.isMiddleButtonDown()) - ev.xmotion.state |= Button2Mask; + if (e.mods.isLeftButtonDown()) ev.xmotion.state |= Button1Mask; + else if (e.mods.isRightButtonDown()) ev.xmotion.state |= Button3Mask; + else if (e.mods.isMiddleButtonDown()) ev.xmotion.state |= Button2Mask; } static void translateJuceToXCrossingModifiers (const MouseEvent& e, XEvent& ev) throw() { - if (e.mods.isLeftButtonDown()) - ev.xcrossing.state |= Button1Mask; - else if (e.mods.isRightButtonDown()) - ev.xcrossing.state |= Button3Mask; - else if (e.mods.isMiddleButtonDown()) - ev.xcrossing.state |= Button2Mask; + if (e.mods.isLeftButtonDown()) ev.xcrossing.state |= Button1Mask; + else if (e.mods.isRightButtonDown()) ev.xcrossing.state |= Button3Mask; + else if (e.mods.isMiddleButtonDown()) ev.xcrossing.state |= Button2Mask; } static void translateJuceToXMouseWheelModifiers (const MouseEvent& e, const float increment, XEvent& ev) throw() @@ -408,7 +416,6 @@ public: ~ModuleHandle() { getActiveModules().removeValue (this); - close(); } @@ -710,7 +717,7 @@ public: } const String getName() const { return name; } - int getUID() const throw(); + int getUID() const; bool acceptsMidi() const { return wantsMidiMessages; } bool producesMidi() const { return dispatch (effCanDo, 0, 0, (void*) "sendVstMidiEvent", 0) > 0; } @@ -773,7 +780,6 @@ private: MidiBuffer incomingMidi; VSTMidiEventList midiEventsToSend; VstTimeInfo vstHostTime; - HeapBlock channels; ReferenceCountedObjectPtr module; @@ -781,7 +787,7 @@ private: int dispatch (const int opcode, const int index, const int value, void* const ptr, float opt) const; bool restoreProgramSettings (const fxProgram* const prog); const String getCurrentProgramName(); - void setParamsInProgramBlock (fxProgram* const prog) throw(); + void setParamsInProgramBlock (fxProgram* const prog); void updateStoredProgramNames(); void initialise(); void handleMidiFromPlugin (const VstEvents* const events); @@ -796,8 +802,8 @@ private: bool saveToFXBFile (MemoryBlock& dest, bool isFXB, int maxSizeMB); int getVersionNumber() const throw() { return effect != 0 ? effect->version : 0; } - const String getVersion() const throw(); - const String getCategory() const throw(); + const String getVersion() const; + const String getCategory() const; bool hasEditor() const throw() { return effect != 0 && (effect->flags & effFlagsHasEditor) != 0; } void setPower (const bool on); @@ -869,34 +875,32 @@ VSTPluginInstance::VSTPluginInstance (const ReferenceCountedObjectPtr magic == kEffectMagic) { - const ScopedLock sl (lock); - - jassert (insideVSTCallback == 0); - - if (effect != 0 && effect->magic == kEffectMagic) + try { - try - { #if JUCE_MAC - if (module->resFileId != 0) - UseResFile (module->resFileId); + if (module->resFileId != 0) + UseResFile (module->resFileId); #endif - // Must delete any editors before deleting the plugin instance! - jassert (getActiveEditor() == 0); + // Must delete any editors before deleting the plugin instance! + jassert (getActiveEditor() == 0); - _fpreset(); // some dodgy plugs fuck around with this + _fpreset(); // some dodgy plugs fuck around with this - module->closeEffect (effect); - } - catch (...) - {} + module->closeEffect (effect); } - - module = 0; - effect = 0; + catch (...) + {} } + + module = 0; + effect = 0; } //============================================================================== @@ -964,8 +968,6 @@ void VSTPluginInstance::prepareToPlay (double sampleRate_, setLatencySamples (effect->initialDelay); - channels.calloc (jmax (16, getNumOutputChannels(), getNumInputChannels()) + 2); - vstHostTime.tempo = 120.0; vstHostTime.timeSigNumerator = 4; vstHostTime.timeSigDenominator = 4; @@ -1019,7 +1021,6 @@ void VSTPluginInstance::releaseResources() incomingMidi.clear(); midiEventsToSend.freeEvents(); - channels.free(); } void VSTPluginInstance::processBlock (AudioSampleBuffer& buffer, @@ -1049,17 +1050,7 @@ void VSTPluginInstance::processBlock (AudioSampleBuffer& buffer, vstHostTime.flags &= ~kVstTransportPlaying; } -#if JUCE_WINDOWS - vstHostTime.nanoSeconds = timeGetTime() * 1000000.0; -#elif JUCE_LINUX - timeval micro; - gettimeofday (µ, 0); - vstHostTime.nanoSeconds = micro.tv_usec * 1000.0; -#elif JUCE_MAC - UnsignedWide micro; - Microseconds (µ); - vstHostTime.nanoSeconds = micro.lo * 1000.0; -#endif + vstHostTime.nanoSeconds = getVSTHostTimeNanoseconds(); if (wantsMidiMessages) { @@ -1084,21 +1075,13 @@ void VSTPluginInstance::processBlock (AudioSampleBuffer& buffer, {} } - int i; - const int maxChans = jmax (effect->numInputs, effect->numOutputs); - - for (i = 0; i < maxChans; ++i) - channels[i] = buffer.getSampleData (i); - - channels [maxChans] = 0; - _clearfp(); if ((effect->flags & effFlagsCanReplacing) != 0) { try { - effect->processReplacing (effect, channels, channels, numSamples); + effect->processReplacing (effect, buffer.getArrayOfChannels(), buffer.getArrayOfChannels(), numSamples); } catch (...) {} @@ -1108,22 +1091,15 @@ void VSTPluginInstance::processBlock (AudioSampleBuffer& buffer, tempBuffer.setSize (effect->numOutputs, numSamples); tempBuffer.clear(); - float* outs [64]; - - for (i = effect->numOutputs; --i >= 0;) - outs[i] = tempBuffer.getSampleData (i); - - outs [effect->numOutputs] = 0; - try { - effect->process (effect, channels, outs, numSamples); + effect->process (effect, buffer.getArrayOfChannels(), tempBuffer.getArrayOfChannels(), numSamples); } catch (...) {} - for (i = effect->numOutputs; --i >= 0;) - buffer.copyFrom (i, 0, outs[i], numSamples); + for (int i = effect->numOutputs; --i >= 0;) + buffer.copyFrom (i, 0, tempBuffer.getSampleData (i), numSamples); } } else @@ -1604,7 +1580,7 @@ private: //============================================================================== #if JUCE_WINDOWS - void checkPluginWindowSize() throw() + void checkPluginWindowSize() { RECT r; GetWindowRect (pluginHWND, &r); @@ -1625,7 +1601,7 @@ private: { for (int i = activeVSTWindows.size(); --i >= 0;) { - const VSTPluginWindow* const w = (const VSTPluginWindow*) activeVSTWindows.getUnchecked (i); + const VSTPluginWindow* const w = activeVSTWindows.getUnchecked (i); if (w->pluginHWND == hW) { @@ -2026,7 +2002,7 @@ bool VSTPluginInstance::loadFromFXBFile (const void* const data, } //============================================================================== -void VSTPluginInstance::setParamsInProgramBlock (fxProgram* const prog) throw() +void VSTPluginInstance::setParamsInProgramBlock (fxProgram* const prog) { const int numParams = getNumParameters(); @@ -2184,30 +2160,16 @@ int VSTPluginInstance::dispatch (const int opcode, const int index, const int va { if (effect != 0) { -#if JUCE_MAC + #if JUCE_MAC if (module->resFileId != 0) UseResFile (module->resFileId); - - CGrafPtr oldPort; - - if (getActiveEditor() != 0) - { - const Point pos (getActiveEditor()->relativePositionToOtherComponent (getActiveEditor()->getTopLevelComponent(), Point())); - - GetPort (&oldPort); - SetPortWindowPort ((WindowRef) getActiveEditor()->getWindowHandle()); - SetOrigin (-pos.getX(), -pos.getY()); - } -#endif + #endif result = effect->dispatcher (effect, opcode, index, value, ptr, opt); -#if JUCE_MAC - if (getActiveEditor() != 0) - SetPort (oldPort); - + #if JUCE_MAC module->resFileId = CurResFile(); -#endif + #endif --insideVSTCallback; return result; @@ -2236,7 +2198,7 @@ static VstIntPtr handleGeneralCallback (VstInt32 opcode, VstInt32 index, VstInt3 switch (opcode) { - case audioMasterCanDo: + case audioMasterCanDo: { static const char* canDos[] = { "supplyIdle", "sendVstEvents", @@ -2254,19 +2216,14 @@ static VstIntPtr handleGeneralCallback (VstInt32 opcode, VstInt32 index, VstInt3 return 0; } - case audioMasterVersion: - return 0x2400; - case audioMasterCurrentId: - return shellUIDToCreate; - case audioMasterGetNumAutomatableParameters: - return 0; - case audioMasterGetAutomationState: - return 1; + case audioMasterVersion: return 0x2400; + case audioMasterCurrentId: return shellUIDToCreate; + case audioMasterGetNumAutomatableParameters: return 0; + case audioMasterGetAutomationState: return 1; + case audioMasterGetVendorVersion: return 0x0101; - case audioMasterGetVendorVersion: - return 0x0101; - case audioMasterGetVendorString: - case audioMasterGetProductString: + case audioMasterGetVendorString: + case audioMasterGetProductString: { String hostName ("Juce VST Host"); @@ -2274,21 +2231,16 @@ static VstIntPtr handleGeneralCallback (VstInt32 opcode, VstInt32 index, VstInt3 hostName = JUCEApplication::getInstance()->getApplicationName(); hostName.copyToCString ((char*) ptr, jmin (kVstMaxVendorStrLen, kVstMaxProductStrLen) - 1); + break; } - break; - case audioMasterGetSampleRate: - return (VstIntPtr) defaultVSTSampleRateValue; + case audioMasterGetSampleRate: return (VstIntPtr) defaultVSTSampleRateValue; + case audioMasterGetBlockSize: return (VstIntPtr) defaultVSTBlockSizeValue; + case audioMasterSetOutputSampleRate: return 0; - case audioMasterGetBlockSize: - return (VstIntPtr) defaultVSTBlockSizeValue; - - case audioMasterSetOutputSampleRate: - return 0; - - default: - DBG ("*** Unhandled VST Callback: " + String ((int) opcode)); - break; + default: + DBG ("*** Unhandled VST Callback: " + String ((int) opcode)); + break; } return 0; @@ -2430,7 +2382,7 @@ static VstIntPtr VSTCALLBACK audioMaster (AEffect* effect, VstInt32 opcode, VstI } //============================================================================== -const String VSTPluginInstance::getVersion() const throw() +const String VSTPluginInstance::getVersion() const { unsigned int v = dispatch (effGetVendorVersion, 0, 0, 0, 0); @@ -2464,7 +2416,7 @@ const String VSTPluginInstance::getVersion() const throw() return s; } -int VSTPluginInstance::getUID() const throw() +int VSTPluginInstance::getUID() const { int uid = effect != 0 ? effect->uniqueID : 0; @@ -2474,50 +2426,22 @@ int VSTPluginInstance::getUID() const throw() return uid; } -const String VSTPluginInstance::getCategory() const throw() +const String VSTPluginInstance::getCategory() const { const char* result = 0; switch (dispatch (effGetPlugCategory, 0, 0, 0, 0)) { - case kPlugCategEffect: - result = "Effect"; - break; - - case kPlugCategSynth: - result = "Synth"; - break; - - case kPlugCategAnalysis: - result = "Anaylsis"; - break; - - case kPlugCategMastering: - result = "Mastering"; - break; - - case kPlugCategSpacializer: - result = "Spacial"; - break; - - case kPlugCategRoomFx: - result = "Reverb"; - break; - - case kPlugSurroundFx: - result = "Surround"; - break; - - case kPlugCategRestoration: - result = "Restoration"; - break; - - case kPlugCategGenerator: - result = "Tone generation"; - break; - - default: - break; + case kPlugCategEffect: result = "Effect"; break; + case kPlugCategSynth: result = "Synth"; break; + case kPlugCategAnalysis: result = "Anaylsis"; break; + case kPlugCategMastering: result = "Mastering"; break; + case kPlugCategSpacializer: result = "Spacial"; break; + case kPlugCategRoomFx: result = "Reverb"; break; + case kPlugSurroundFx: result = "Surround"; break; + case kPlugCategRestoration: result = "Restoration"; break; + case kPlugCategGenerator: result = "Tone generation"; break; + default: break; } return result; @@ -2957,11 +2881,9 @@ bool VSTPluginFormat::fileMightContainThisPluginType (const String& fileOrIdenti return false; #elif JUCE_WINDOWS - return f.existsAsFile() - && f.hasFileExtension (".dll"); + return f.existsAsFile() && f.hasFileExtension (".dll"); #elif JUCE_LINUX - return f.existsAsFile() - && f.hasFileExtension (".so"); + return f.existsAsFile() && f.hasFileExtension (".so"); #endif } diff --git a/src/core/juce_StandardHeader.h b/src/core/juce_StandardHeader.h index 0f73be32ad..468edfa80a 100644 --- a/src/core/juce_StandardHeader.h +++ b/src/core/juce_StandardHeader.h @@ -33,7 +33,7 @@ */ #define JUCE_MAJOR_VERSION 1 #define JUCE_MINOR_VERSION 52 -#define JUCE_BUILDNUMBER 60 +#define JUCE_BUILDNUMBER 61 /** Current Juce version number. diff --git a/src/gui/components/controls/juce_ListBox.h b/src/gui/components/controls/juce_ListBox.h index b880c5eb84..b288063d34 100644 --- a/src/gui/components/controls/juce_ListBox.h +++ b/src/gui/components/controls/juce_ListBox.h @@ -175,8 +175,8 @@ public: The model pointer passed-in can be null, in which case you can set it later with setModel(). */ - ListBox (const String& componentName, - ListBoxModel* model); + ListBox (const String& componentName = String::empty, + ListBoxModel* model = 0); /** Destructor. */ ~ListBox(); diff --git a/src/io/files/juce_DirectoryIterator.h b/src/io/files/juce_DirectoryIterator.h index 75f57a7db5..133a1f190d 100644 --- a/src/io/files/juce_DirectoryIterator.h +++ b/src/io/files/juce_DirectoryIterator.h @@ -115,8 +115,6 @@ public: juce_UseDebuggingNewOperator private: - friend class File; - //============================================================================== class NativeIterator { diff --git a/src/io/files/juce_File.cpp b/src/io/files/juce_File.cpp index 86ad8d2d14..bb321af780 100644 --- a/src/io/files/juce_File.cpp +++ b/src/io/files/juce_File.cpp @@ -532,97 +532,40 @@ const String File::loadFileAsString() const } //============================================================================== -bool File::fileTypeMatches (const int whatToLookFor, const bool isDir, const bool isHidden) -{ - return (whatToLookFor & (isDir ? findDirectories - : findFiles)) != 0 - && ((! isHidden) || (whatToLookFor & File::ignoreHiddenFiles) == 0); -} - int File::findChildFiles (Array& results, const int whatToLookFor, const bool searchRecursively, const String& wildCardPattern) const { - // you have to specify the type of files you're looking for! - jassert ((whatToLookFor & (findFiles | findDirectories)) != 0); + DirectoryIterator di (*this, searchRecursively, wildCardPattern, whatToLookFor); int total = 0; - - if (isDirectory()) + while (di.next()) { - // find child files or directories in this directory first.. - String path (addTrailingSeparator (fullPath)), filename; - bool itemIsDirectory, itemIsHidden; - - DirectoryIterator::NativeIterator i (path, wildCardPattern); - - while (i.next (filename, &itemIsDirectory, &itemIsHidden, 0, 0, 0, 0)) - { - if (! filename.containsOnly (".")) - { - const File fileFound (path + filename, 0); - - if (fileTypeMatches (whatToLookFor, itemIsDirectory, itemIsHidden)) - { - results.add (fileFound); - ++total; - } - - if (searchRecursively && itemIsDirectory - && ((! itemIsHidden) || (whatToLookFor & File::ignoreHiddenFiles) == 0)) - - { - total += fileFound.findChildFiles (results, whatToLookFor, true, wildCardPattern); - } - } - } + results.add (di.getFile()); + ++total; } return total; } -int File::getNumberOfChildFiles (const int whatToLookFor, - const String& wildCardPattern) const +int File::getNumberOfChildFiles (const int whatToLookFor, const String& wildCardPattern) const { - // you have to specify the type of files you're looking for! - jassert (whatToLookFor > 0 && whatToLookFor <= 3); + DirectoryIterator di (*this, false, "*", whatToLookFor); - int count = 0; + int total = 0; + while (di.next()) + ++total; - if (isDirectory()) - { - String filename; - bool itemIsDirectory, itemIsHidden; - - DirectoryIterator::NativeIterator i (*this, wildCardPattern); - - while (i.next (filename, &itemIsDirectory, &itemIsHidden, 0, 0, 0, 0)) - if (fileTypeMatches (whatToLookFor, itemIsDirectory, itemIsHidden) - && ! filename.containsOnly (".")) - ++count; - } - else - { - // trying to search for files inside a non-directory? - jassertfalse; - } - - return count; + return total; } bool File::containsSubDirectories() const { if (isDirectory()) { - String filename; - bool itemIsDirectory; - - DirectoryIterator::NativeIterator i (*this, "*"); - - while (i.next (filename, &itemIsDirectory, 0, 0, 0, 0, 0)) - if (itemIsDirectory) - return true; + DirectoryIterator di (*this, false, "*", findDirectories); + return di.next(); } return false; diff --git a/src/io/files/juce_File.h b/src/io/files/juce_File.h index 435639b71c..fcd69e3b57 100644 --- a/src/io/files/juce_File.h +++ b/src/io/files/juce_File.h @@ -939,7 +939,6 @@ private: bool setFileReadOnlyInternal (bool shouldBeReadOnly) const; static const String parseAbsolutePath (const String& path); - static bool fileTypeMatches (int whatToLookFor, bool isDir, bool isHidden); }; diff --git a/src/io/files/juce_ZipFile.cpp b/src/io/files/juce_ZipFile.cpp index a8685dbd45..7eea5e68bb 100644 --- a/src/io/files/juce_ZipFile.cpp +++ b/src/io/files/juce_ZipFile.cpp @@ -374,46 +374,61 @@ int ZipFile::findEndOfZipEntryTable (InputStream* input, int& numEntries) return 0; } -void ZipFile::uncompressTo (const File& targetDirectory, +bool ZipFile::uncompressTo (const File& targetDirectory, const bool shouldOverwriteFiles) { for (int i = 0; i < entries.size(); ++i) + if (! uncompressEntry (i, targetDirectory, shouldOverwriteFiles)) + return false; + + return true; +} + +bool ZipFile::uncompressEntry (const int index, + const File& targetDirectory, + bool shouldOverwriteFiles) +{ + const ZipEntryInfo* zei = entries [index]; + + if (zei != 0) { - const ZipEntry& zei = entries.getUnchecked(i)->entry; + const File targetFile (targetDirectory.getChildFile (zei->entry.filename)); - const File targetFile (targetDirectory.getChildFile (zei.filename)); - - if (zei.filename.endsWithChar ('/')) + if (zei->entry.filename.endsWithChar ('/')) { targetFile.createDirectory(); // (entry is a directory, not a file) } else { - ScopedPointer in (createStreamForEntry (i)); + ScopedPointer in (createStreamForEntry (index)); if (in != 0) { - if (shouldOverwriteFiles) - targetFile.deleteFile(); + if (shouldOverwriteFiles && ! targetFile.deleteFile()) + return false; - if ((! targetFile.exists()) - && targetFile.getParentDirectory().createDirectory()) + if ((! targetFile.exists()) && targetFile.getParentDirectory().createDirectory()) { - ScopedPointer out (targetFile.createOutputStream()); + ScopedPointer out (targetFile.createOutputStream()); if (out != 0) { out->writeFromInputStream (*in, -1); out = 0; - targetFile.setCreationTime (zei.fileTime); - targetFile.setLastModificationTime (zei.fileTime); - targetFile.setLastAccessTime (zei.fileTime); + targetFile.setCreationTime (zei->entry.fileTime); + targetFile.setLastModificationTime (zei->entry.fileTime); + targetFile.setLastAccessTime (zei->entry.fileTime); + + return true; } } } } } + + return false; } + END_JUCE_NAMESPACE diff --git a/src/io/files/juce_ZipFile.h b/src/io/files/juce_ZipFile.h index 48e6c648c3..52f1a83697 100644 --- a/src/io/files/juce_ZipFile.h +++ b/src/io/files/juce_ZipFile.h @@ -128,18 +128,42 @@ public: */ InputStream* createStreamForEntry (int index); + /** Creates a stream that can read from one of the zip file's entries. + + The stream that is returned must be deleted by the caller (and + zero might be returned if a stream can't be opened for some reason). + + The stream must not be used after the ZipFile object that created + has been deleted. + */ + InputStream* createStreamForEntry (ZipEntry& entry); + //============================================================================== /** Uncompresses all of the files in the zip file. - This will expand all the entires into a target directory. The relative + This will expand all the entries into a target directory. The relative paths of the entries are used. @param targetDirectory the root folder to uncompress to @param shouldOverwriteFiles whether to overwrite existing files with similarly-named ones + @returns true if all the files are successfully unzipped */ - void uncompressTo (const File& targetDirectory, + bool uncompressTo (const File& targetDirectory, bool shouldOverwriteFiles = true); + /** Uncompresses one of the entries from the zip file. + + This will expand the entry and write it in a target directory. The entry's path is used to + determine which subfolder of the target should contain the new file. + + @param index the index of the entry to uncompress + @param targetDirectory the root folder to uncompress into + @param shouldOverwriteFiles whether to overwrite existing files with similarly-named ones + @returns true if the files is successfully unzipped + */ + bool uncompressEntry (int index, + const File& targetDirectory, + bool shouldOverwriteFiles = true); //============================================================================== juce_UseDebuggingNewOperator diff --git a/src/native/linux/juce_linux_Audio.cpp b/src/native/linux/juce_linux_Audio.cpp index 97f6502dd3..72d8218752 100644 --- a/src/native/linux/juce_linux_Audio.cpp +++ b/src/native/linux/juce_linux_Audio.cpp @@ -789,6 +789,42 @@ public: outputNames.clear(); outputIds.clear(); +/* void** hints = 0; + if (snd_device_name_hint (-1, "pcm", &hints) >= 0) + { + for (void** hint = hints; *hint != 0; ++hint) + { + const String name (getHint (*hint, "NAME")); + + if (name.isNotEmpty()) + { + const String ioid (getHint (*hint, "IOID")); + + String desc (getHint (*hint, "DESC")); + if (desc.isEmpty()) + desc = name; + + desc = desc.replaceCharacters ("\n\r", " "); + + DBG ("name: " << name << "\ndesc: " << desc << "\nIO: " << ioid); + + if (ioid.isEmpty() || ioid == "Input") + { + inputNames.add (desc); + inputIds.add (name); + } + + if (ioid.isEmpty() || ioid == "Output") + { + outputNames.add (desc); + outputIds.add (name); + } + } + } + + snd_device_name_free_hint (hints); + } +*/ snd_ctl_t* handle = 0; snd_ctl_card_info_t* info = 0; snd_ctl_card_info_alloca (&info); @@ -925,6 +961,14 @@ private: return (isInput || isOutput) && rates.size() > 0; } + /*static const String getHint (void* hint, const char* type) + { + char* const n = snd_device_name_get_hint (hint, type); + const String s ((const char*) n); + free (n); + return s; + }*/ + ALSAAudioIODeviceType (const ALSAAudioIODeviceType&); ALSAAudioIODeviceType& operator= (const ALSAAudioIODeviceType&); };