/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2017 - ROLI Ltd. JUCE is an open source library subject to commercial or open-source licensing. By using JUCE, you agree to the terms of both the JUCE 5 End-User License Agreement and JUCE 5 Privacy Policy (both updated and effective as of the 27th April 2017). End User License Agreement: www.juce.com/juce-5-licence Privacy Policy: www.juce.com/juce-5-privacy-policy Or: You may also use this code under the terms of the GPL v3 (see www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ #include "../JuceLibraryCode/JuceHeader.h" #include "MainComponent.h" //============================================================================== /** This is the top-level window that we'll pop up. Inside it, we'll create and show a component from the MainComponent.cpp file (you can open this file using the Jucer to edit it). */ class HelloWorldWindow : public DocumentWindow { public: //============================================================================== HelloWorldWindow() : DocumentWindow ("JUCE Hello World!", LookAndFeel::getDefaultLookAndFeel().findColour (ResizableWindow::backgroundColourId), DocumentWindow::allButtons, true) { // Create an instance of our main content component, and add it to our window.. setContentOwned (new MainComponent(), true); // Centre the window on the screen centreWithSize (getWidth(), getHeight()); // And show it! setVisible (true); } ~HelloWorldWindow() { // (the content component will be deleted automatically, so no need to do it here) } //============================================================================== void closeButtonPressed() override { // When the user presses the close button, we'll tell the app to quit. This // HelloWorldWindow object will be deleted by the JUCEHelloWorldApplication class. JUCEApplication::quit(); } }; //============================================================================== /** This is the application object that is started up when Juce starts. It handles the initialisation and shutdown of the whole application. */ class JUCEHelloWorldApplication : public JUCEApplication { public: //============================================================================== JUCEHelloWorldApplication() {} //============================================================================== void initialise (const String& commandLine) override { // For this demo, we'll just create the main window... helloWorldWindow = new HelloWorldWindow(); /* ..and now return, which will fall into to the main event dispatch loop, and this will run until something calls JUCEAppliction::quit(). In this case, JUCEAppliction::quit() will be called by the hello world window being clicked. */ } void shutdown() override { // This method is where you should clear-up your app's resources.. // The helloWorldWindow variable is a ScopedPointer, so setting it to a null // pointer will delete the window. helloWorldWindow = nullptr; } //============================================================================== const String getApplicationName() override { return "Hello World for JUCE"; } const String getApplicationVersion() override { // The ProjectInfo::versionString value is automatically updated by the Jucer, and // can be found in the JuceHeader.h file that it generates for our project. return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return true; } void anotherInstanceStarted (const String& commandLine) override { } private: ScopedPointer helloWorldWindow; }; //============================================================================== // This macro creates the application's main() function.. START_JUCE_APPLICATION (JUCEHelloWorldApplication)