/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2020 - Raw Material Software Limited 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 6 End-User License Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020). End User License Agreement: www.juce.com/juce-6-licence Privacy Policy: www.juce.com/juce-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 #include #include "../Demos/JUCEDemos.h" struct DemoContent; struct CodeContent; //============================================================================== class DemoContentComponent : public TabbedComponent { public: DemoContentComponent (Component& mainComponent, std::function demoChangedCallback); ~DemoContentComponent() override; void resized() override; void setDemo (const String& category, int selectedDemoIndex); void clearCurrentDemo(); int getCurrentDemoIndex() const noexcept { return currentDemoIndex; } bool isShowingHomeScreen() const noexcept; void showHomeScreen(); void setTabBarIndent (int indent) noexcept { tabBarIndent = indent; } private: std::function demoChangedCallback; std::unique_ptr demoContent; #if ! (JUCE_ANDROID || JUCE_IOS) std::unique_ptr codeContent; #endif String currentDemoCategory; int currentDemoIndex = -1; int tabBarIndent = 0; //============================================================================== void lookAndFeelChanged() override; String trimPIP (const String& fileContents); void ensureDemoIsShowing(); };