diff --git a/docs/JUCE changelist.txt b/docs/JUCE changelist.txt index 3996587c29..ed04f73d2e 100644 --- a/docs/JUCE changelist.txt +++ b/docs/JUCE changelist.txt @@ -19,6 +19,7 @@ Changelist for version 1.46 - updated to include the latest version of Flac (1.2.1) - added a parameter to DragAndDropTarget::isInterestedInDragSource(). This ma - changed the parameters to AudioIODeviceCallback::audioDeviceAboutToStart(), so that it now just supplies a pointer to the device. If you need to, you can still find out the sample rate and block size by asking the device for them. +- changes to the URL class to allow file uploading ============================================================================== Changelist for version 1.45 diff --git a/extras/juce demo/src/ApplicationStartup.cpp b/extras/juce demo/src/ApplicationStartup.cpp index 88000615ed..776dc22f24 100644 --- a/extras/juce demo/src/ApplicationStartup.cpp +++ b/extras/juce demo/src/ApplicationStartup.cpp @@ -1,176 +1,176 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-7 by Raw Material Software ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the - GNU General Public License, as published by the Free Software Foundation; - either version 2 of the License, or (at your option) any later version. - - 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. - - You should have received a copy of the GNU General Public License - along with JUCE; if not, visit www.gnu.org/licenses or write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA - - ------------------------------------------------------------------------------ - - If you'd like to release a closed-source product which uses JUCE, commercial - licenses are also available: visit www.rawmaterialsoftware.com/juce for - more information. - - ============================================================================== -*/ - -#include "jucedemo_headers.h" -#include "MainDemoWindow.h" - - -//============================================================================== -class JUCEDemoApplication : public JUCEApplication -{ - /* Important! NEVER embed objects directly inside your JUCEApplication class! Use - ONLY pointers to objects, which you should create during the initialise() method - (NOT in the constructor!) and delete in the shutdown() method (NOT in the - destructor!) - - This is because the application object gets created before Juce has been properly - initialised, so any embedded objects would also get constructed too soon. - */ - MainDemoWindow* theMainWindow; - -public: - //============================================================================== - JUCEDemoApplication() - : theMainWindow (0) - { - // NEVER do anything in here that could involve any Juce function being called - // - leave all your startup tasks until the initialise() method. - } - - ~JUCEDemoApplication() - { - // Your shutdown() method should already have done all the things necessary to - // clean up this app object, so you should never need to put anything in - // the destructor. - - // Making any Juce calls in here could be very dangerous... - } - - //============================================================================== - void initialise (const String& commandLine) - { - // just create the main window... - theMainWindow = new MainDemoWindow(); - theMainWindow->centreWithSize (700, 600); - theMainWindow->setVisible (true); - - // this little function just demonstrates a few system info calls - Logger::outputDebugString (collectSomeSystemInfo()); - - /* on return from this method, the app will go into its the main event - dispatch loop, and this will run until something calls - JUCEAppliction::quit(). - - In this case, JUCEAppliction::quit() will be called by the - demo window when the user clicks on its close button. - */ - } - - void shutdown() - { - delete theMainWindow; - theMainWindow = 0; - } - - //============================================================================== - const String getApplicationName() - { - return T("JUCE Demo"); - } - - const String getApplicationVersion() - { - return T("1.0"); - } - - bool moreThanOneInstanceAllowed() - { - return true; - } - - void anotherInstanceStarted (const String& commandLine) - { - // This will get called if the user launches another copy of the app, but - // there's nothing that the demo app needs to do here. - } - -private: - //============================================================================== - // this little function just demonstrates a few system info calls - static const String collectSomeSystemInfo() - { - String systemInfo; - - systemInfo - << T("Time and date: ") << Time::getCurrentTime().toString (true, true) - << T("\nOperating system: ") << SystemStats::getOperatingSystemName() - << T("\nCPU vendor: ") << SystemStats::getCpuVendor() - << T("\nCPU speed: ") << SystemStats::getCpuSpeedInMegaherz() << T("MHz\n") - << T("\nNumber of CPUs: ") << SystemStats::getNumCpus() - << T("\nCPU has MMX: ") << (SystemStats::hasMMX() ? T("yes") : T("no")) - << T("\nCPU has SSE: ") << (SystemStats::hasSSE() ? T("yes") : T("no")) - << T("\nCPU has SSE2: ") << (SystemStats::hasSSE2() ? T("yes") : T("no")) - << T("\nCPU has 3DNOW: ") << (SystemStats::has3DNow() ? T("yes") : T("no")) - << T("\nMemory size: ") << SystemStats::getMemorySizeInMegabytes() << T("MB\n"); - - int64 macAddresses[8]; - const int numAddresses = SystemStats::getMACAddresses (macAddresses, 8); - - for (int i = 0; i < numAddresses; ++i) - { - systemInfo - << T("Found network card MAC address: ") - << String::formatted (T("%02x-%02x-%02x-%02x-%02x-%02x\n"), - 0xff & (int) (macAddresses [i] >> 40), - 0xff & (int) (macAddresses [i] >> 32), - 0xff & (int) (macAddresses [i] >> 24), - 0xff & (int) (macAddresses [i] >> 16), - 0xff & (int) (macAddresses [i] >> 8), - 0xff & (int) macAddresses [i]); - } - - systemInfo - << T("Current executable file: ") - << File::getSpecialLocation (File::currentExecutableFile).getFullPathName() - << T("\nCurrent application file: ") - << File::getSpecialLocation (File::currentApplicationFile).getFullPathName() - << T("\nUser home directory: ") - << File::getSpecialLocation (File::userHomeDirectory).getFullPathName() - << T("\nUser documents directory: ") - << File::getSpecialLocation (File::userDocumentsDirectory).getFullPathName() - << T("\nUser application data directory: ") - << File::getSpecialLocation (File::userApplicationDataDirectory).getFullPathName() - << T("\nCommon application data directory: ") - << File::getSpecialLocation (File::commonApplicationDataDirectory).getFullPathName() - << T("\nTemp directory: ") - << File::getSpecialLocation (File::tempDirectory).getFullPathName() - << T("\n\n"); - - return systemInfo; - } -}; - - -//============================================================================== -/* - This macro creates the application's main() function.. -*/ -START_JUCE_APPLICATION (JUCEDemoApplication) +/* + ============================================================================== + + This file is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-7 by Raw Material Software ltd. + + ------------------------------------------------------------------------------ + + JUCE can be redistributed and/or modified under the terms of the + GNU General Public License, as published by the Free Software Foundation; + either version 2 of the License, or (at your option) any later version. + + 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. + + You should have received a copy of the GNU General Public License + along with JUCE; if not, visit www.gnu.org/licenses or write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + ------------------------------------------------------------------------------ + + If you'd like to release a closed-source product which uses JUCE, commercial + licenses are also available: visit www.rawmaterialsoftware.com/juce for + more information. + + ============================================================================== +*/ + +#include "jucedemo_headers.h" +#include "MainDemoWindow.h" + + +//============================================================================== +class JUCEDemoApplication : public JUCEApplication +{ + /* Important! NEVER embed objects directly inside your JUCEApplication class! Use + ONLY pointers to objects, which you should create during the initialise() method + (NOT in the constructor!) and delete in the shutdown() method (NOT in the + destructor!) + + This is because the application object gets created before Juce has been properly + initialised, so any embedded objects would also get constructed too soon. + */ + MainDemoWindow* theMainWindow; + +public: + //============================================================================== + JUCEDemoApplication() + : theMainWindow (0) + { + // NEVER do anything in here that could involve any Juce function being called + // - leave all your startup tasks until the initialise() method. + } + + ~JUCEDemoApplication() + { + // Your shutdown() method should already have done all the things necessary to + // clean up this app object, so you should never need to put anything in + // the destructor. + + // Making any Juce calls in here could be very dangerous... + } + + //============================================================================== + void initialise (const String& commandLine) + { + // just create the main window... + theMainWindow = new MainDemoWindow(); + theMainWindow->centreWithSize (700, 600); + theMainWindow->setVisible (true); + + // this little function just demonstrates a few system info calls + Logger::outputDebugString (collectSomeSystemInfo()); + + /* on return from this method, the app will go into its the main event + dispatch loop, and this will run until something calls + JUCEAppliction::quit(). + + In this case, JUCEAppliction::quit() will be called by the + demo window when the user clicks on its close button. + */ + } + + void shutdown() + { + delete theMainWindow; + theMainWindow = 0; + } + + //============================================================================== + const String getApplicationName() + { + return T("JUCE Demo"); + } + + const String getApplicationVersion() + { + return T("1.0"); + } + + bool moreThanOneInstanceAllowed() + { + return true; + } + + void anotherInstanceStarted (const String& commandLine) + { + // This will get called if the user launches another copy of the app, but + // there's nothing that the demo app needs to do here. + } + +private: + //============================================================================== + // this little function just demonstrates a few system info calls + static const String collectSomeSystemInfo() + { + String systemInfo; + + systemInfo + << T("Time and date: ") << Time::getCurrentTime().toString (true, true) + << T("\nOperating system: ") << SystemStats::getOperatingSystemName() + << T("\nCPU vendor: ") << SystemStats::getCpuVendor() + << T("\nCPU speed: ") << SystemStats::getCpuSpeedInMegaherz() << T("MHz\n") + << T("\nNumber of CPUs: ") << SystemStats::getNumCpus() + << T("\nCPU has MMX: ") << (SystemStats::hasMMX() ? T("yes") : T("no")) + << T("\nCPU has SSE: ") << (SystemStats::hasSSE() ? T("yes") : T("no")) + << T("\nCPU has SSE2: ") << (SystemStats::hasSSE2() ? T("yes") : T("no")) + << T("\nCPU has 3DNOW: ") << (SystemStats::has3DNow() ? T("yes") : T("no")) + << T("\nMemory size: ") << SystemStats::getMemorySizeInMegabytes() << T("MB\n"); + + int64 macAddresses[8]; + const int numAddresses = SystemStats::getMACAddresses (macAddresses, 8, false); + + for (int i = 0; i < numAddresses; ++i) + { + systemInfo + << T("Found network card MAC address: ") + << String::formatted (T("%02x-%02x-%02x-%02x-%02x-%02x\n"), + 0xff & (int) (macAddresses [i] >> 40), + 0xff & (int) (macAddresses [i] >> 32), + 0xff & (int) (macAddresses [i] >> 24), + 0xff & (int) (macAddresses [i] >> 16), + 0xff & (int) (macAddresses [i] >> 8), + 0xff & (int) macAddresses [i]); + } + + systemInfo + << T("Current executable file: ") + << File::getSpecialLocation (File::currentExecutableFile).getFullPathName() + << T("\nCurrent application file: ") + << File::getSpecialLocation (File::currentApplicationFile).getFullPathName() + << T("\nUser home directory: ") + << File::getSpecialLocation (File::userHomeDirectory).getFullPathName() + << T("\nUser documents directory: ") + << File::getSpecialLocation (File::userDocumentsDirectory).getFullPathName() + << T("\nUser application data directory: ") + << File::getSpecialLocation (File::userApplicationDataDirectory).getFullPathName() + << T("\nCommon application data directory: ") + << File::getSpecialLocation (File::commonApplicationDataDirectory).getFullPathName() + << T("\nTemp directory: ") + << File::getSpecialLocation (File::tempDirectory).getFullPathName() + << T("\n\n"); + + return systemInfo; + } +}; + + +//============================================================================== +/* + This macro creates the application's main() function.. +*/ +START_JUCE_APPLICATION (JUCEDemoApplication)