|
- /*
- ==============================================================================
-
- 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.
-
- ==============================================================================
- */
-
- #pragma once
-
- class ContentComponent;
-
- //==============================================================================
- class MainAppWindow : public DocumentWindow,
- private AsyncUpdater
- {
- public:
- //==============================================================================
- MainAppWindow();
- ~MainAppWindow();
-
- static MainAppWindow* getMainAppWindow(); // returns the MainWindow if it exists.
-
- // called by the OS when the window's close button is pressed.
- void closeButtonPressed() override;
-
- // (return the command manager object used to dispatch command events)
- static ApplicationCommandManager& getApplicationCommandManager();
-
- // (returns a shared AudioDeviceManager object that all the demos can use)
- static AudioDeviceManager& getSharedAudioDeviceManager();
-
- StringArray getRenderingEngines() const;
- int getActiveRenderingEngine() const;
- void setRenderingEngine (int index);
- void setOpenGLRenderingEngine();
-
- // (returns the exploding JUCE logo path)
- static Path getJUCELogoPath();
-
- /* Note: Be careful when overriding DocumentWindow methods - the base class
- uses a lot of them, so by overriding you might break its functionality.
- It's best to do all your work in you content component instead, but if
- you really have to override any DocumentWindow methods, make sure your
- implementation calls the superclass's method.
- */
-
- //==============================================================================
- enum CommandIDs
- {
- showPreviousDemo = 0x2100,
- showNextDemo = 0x2101,
-
- welcome = 0x2000,
- componentsAnimation = 0x2001,
- componentsDialogBoxes = 0x2002,
- componentsKeyMappings = 0x2003,
- componentsMDI = 0x2004,
- componentsPropertyEditors = 0x2005,
- componentsTransforms = 0x2006,
- componentsWebBrowsers = 0x2007,
- componentsWidgets = 0x2008,
-
- renderingEngineOne = 0x2300,
- renderingEngineTwo = 0x2301,
- renderingEngineThree = 0x2302, // these must be contiguous!
-
- useLookAndFeelV1 = 0x300a,
- useLookAndFeelV2 = 0x300b,
- useLookAndFeelV3 = 0x300c,
- useLookAndFeelV4Dark = 0x300d,
- useLookAndFeelV4Midnight = 0x300e,
- useLookAndFeelV4Grey = 0x300f,
- useLookAndFeelV4Light = 0x3010,
-
- toggleRepaintDebugging = 0x201a,
-
- useNativeTitleBar = 0x201d,
- goToKioskMode = 0x200f
- };
-
- private:
- static void runtimePermissionsCallback (bool wasGranted);
-
- ScopedPointer<ContentComponent> contentComponent;
- ScopedPointer<Component> taskbarIcon;
- ScopedPointer<BubbleMessageComponent> currentBubbleMessage;
-
- TooltipWindow tooltipWindow; // to add tooltips to an application, you
- // just need to create one of these and leave it
- // there to do its work..
-
- #if JUCE_OPENGL
- OpenGLContext openGLContext;
- #endif
-
- void handleAsyncUpdate() override;
- void showMessageBubble (const String&);
-
- JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainAppWindow)
- };
|