|
- /*
- ==============================================================================
-
- 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
-
- #include "jucer_MainWindow.h"
- #include "../Project/jucer_Module.h"
- #include "jucer_AutoUpdater.h"
- #include "../Code Editor/jucer_SourceCodeEditor.h"
- #include "../Utility/jucer_ProjucerLookAndFeel.h"
- #include "../Licenses/jucer_LicenseController.h"
-
- struct ChildProcessCache;
-
- //==============================================================================
- class ProjucerApplication : public JUCEApplication,
- private AsyncUpdater,
- private LicenseController::StateChangedCallback
- {
- public:
- ProjucerApplication();
-
- static ProjucerApplication& getApp();
- static ApplicationCommandManager& getCommandManager();
-
- //==============================================================================
- void initialise (const String& commandLine) override;
- void initialiseBasics();
- bool initialiseLogger (const char* filePrefix);
- void initialiseWindows (const String& commandLine);
-
- void shutdown() override;
- void systemRequestedQuit() override;
- void deleteLogger();
-
- //==============================================================================
- const String getApplicationName() override { return "Projucer"; }
- const String getApplicationVersion() override { return ProjectInfo::versionString; }
-
- String getVersionDescription() const;
- bool moreThanOneInstanceAllowed() override { return true; } // this is handled manually in initialise()
-
- void anotherInstanceStarted (const String& commandLine) override;
-
- //==============================================================================
- MenuBarModel* getMenuModel();
- StringArray getMenuNames();
- void createMenu (PopupMenu&, const String& menuName);
- void createFileMenu (PopupMenu&);
- void createEditMenu (PopupMenu&);
- void createViewMenu (PopupMenu&);
- void createBuildMenu (PopupMenu&);
- void createColourSchemeItems (PopupMenu&);
- void createWindowMenu (PopupMenu&);
- void createToolsMenu (PopupMenu&);
- void createExtraAppleMenuItems (PopupMenu&);
- void handleMainMenuCommand (int menuItemID);
-
- //==============================================================================
- void getAllCommands (Array<CommandID>&) override;
- void getCommandInfo (CommandID commandID, ApplicationCommandInfo&) override;
- bool perform (const InvocationInfo&) override;
-
- //==============================================================================
- void createNewProject();
- void updateNewlyOpenedProject (Project&);
- void askUserToOpenFile();
- bool openFile (const File&);
- bool closeAllDocuments (bool askUserToSave);
- bool closeAllMainWindows();
-
- PropertiesFile::Options getPropertyFileOptionsFor (const String& filename, bool isProjectSettings);
-
- //==============================================================================
- void showUTF8ToolWindow();
- void showSVGPathDataToolWindow();
-
- void showAboutWindow();
- void showApplicationUsageDataAgreementPopup();
- void dismissApplicationUsageDataAgreementPopup();
-
- void showPathsWindow();
- void showEditorColourSchemeWindow();
-
- void updateAllBuildTabs();
- LatestVersionChecker* createVersionChecker() const;
-
- //==============================================================================
- void licenseStateChanged (const LicenseState&) override;
- void doLogout();
-
- bool isPaidOrGPL() const { return licenseController == nullptr || licenseController->getState().isPaidOrGPL(); }
-
- //==============================================================================
- void selectEditorColourSchemeWithName (const String& schemeName);
- static bool isEditorColourSchemeADefaultScheme (const StringArray& schemes, int editorColourSchemeIndex);
- static int getEditorColourSchemeForGUIColourScheme (const StringArray& schemes, int guiColourSchemeIndex);
-
- //==============================================================================
- ProjucerLookAndFeel lookAndFeel;
-
- ScopedPointer<StoredSettings> settings;
- ScopedPointer<Icons> icons;
-
- struct MainMenuModel;
- ScopedPointer<MainMenuModel> menuModel;
-
- MainWindowList mainWindowList;
- OpenDocumentManager openDocumentManager;
- ScopedPointer<ApplicationCommandManager> commandManager;
-
- ScopedPointer<Component> utf8Window, svgPathWindow, aboutWindow, applicationUsageDataWindow,
- pathsWindow, editorColourSchemeWindow;
-
- ScopedPointer<FileLogger> logger;
-
- bool isRunningCommandLine;
- ScopedPointer<ChildProcessCache> childProcessCache;
- ScopedPointer<LicenseController> licenseController;
-
- private:
- void* server = nullptr;
-
- ScopedPointer<LatestVersionChecker> versionChecker;
- TooltipWindow tooltipWindow;
-
- void loginOrLogout();
-
- bool checkEULA();
- bool currentEULAHasBeenAcceptedPreviously() const;
- String getEULAChecksumProperty() const;
- void setCurrentEULAAccepted (bool hasBeenAccepted) const;
-
- void handleAsyncUpdate() override;
- void initCommandManager();
-
- //==============================================================================
- void setColourScheme (int index, bool saveSetting);
-
- void setEditorColourScheme (int index, bool saveSetting);
- void updateEditorColourSchemeIfNeeded();
-
- int selectedColourSchemeIndex;
-
- int selectedEditorColourSchemeIndex;
- int numEditorColourSchemes;
- };
|