File indexing completed on 2024-04-28 04:37:15
0001 /* 0002 SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org> 0003 SPDX-FileCopyrightText: 2007 Kris Wong <kris.p.wong@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KDEVPLATFORM_CORE_H 0009 #define KDEVPLATFORM_CORE_H 0010 0011 #include "shellexport.h" 0012 #include <interfaces/icore.h> 0013 0014 namespace KDevelop { 0015 0016 class UiController; 0017 class PluginController; 0018 class ProjectController; 0019 class LanguageController; 0020 class PartController; 0021 class DocumentController; 0022 class RunController; 0023 class SessionController; 0024 class CorePrivate; 0025 class SourceFormatterController; 0026 class ProgressManager; 0027 class SelectionController; 0028 class DocumentationController; 0029 class DebugController; 0030 class WorkingSetController; 0031 class RuntimeController; 0032 class TestController; 0033 0034 class KDEVPLATFORMSHELL_EXPORT Core: public ICore 0035 { 0036 Q_OBJECT 0037 0038 public: 0039 enum Setup { Default=0, NoUi=1 }; 0040 0041 static QString version(); 0042 0043 /** Initialize the core of the kdevplatform application 0044 * returns false if the initialization fails, which may happen 0045 * if the same session is already active in another instance 0046 * 0047 * @param mode the mode in which to run 0048 * @param session the name or uuid of the session to be loaded 0049 * 0050 */ 0051 static bool initialize(Setup mode=Default, const QString& session = {}); 0052 0053 /** 0054 * \brief Provide access an instance of Core 0055 */ 0056 static Core *self(); 0057 0058 ~Core() override; 0059 0060 IUiController *uiController() override; 0061 IPluginController *pluginController() override; 0062 IProjectController *projectController() override; 0063 ILanguageController *languageController() override; 0064 IPartController *partController() override; 0065 IDocumentController *documentController() override; 0066 IRunController *runController() override; 0067 ISourceFormatterController* sourceFormatterController() override; 0068 ISelectionController* selectionController() override; 0069 IDocumentationController* documentationController() override; 0070 IDebugController* debugController() override; 0071 ITestController* testController() override; 0072 IRuntimeController* runtimeController() override; 0073 ISession *activeSession() override; 0074 ISessionLock::Ptr activeSessionLock() override; 0075 QString sessionTemporaryDirectoryPath() const override; 0076 0077 /// The following methods may only be used within the shell. 0078 0079 UiController *uiControllerInternal(); 0080 PluginController *pluginControllerInternal(); 0081 ProjectController *projectControllerInternal(); 0082 LanguageController *languageControllerInternal(); 0083 PartController *partControllerInternal(); 0084 DocumentController *documentControllerInternal(); 0085 RunController *runControllerInternal(); 0086 DocumentationController *documentationControllerInternal(); 0087 DebugController *debugControllerInternal(); 0088 WorkingSetController* workingSetControllerInternal(); 0089 SourceFormatterController* sourceFormatterControllerInternal(); 0090 TestController* testControllerInternal(); 0091 RuntimeController* runtimeControllerInternal(); 0092 0093 /// @internal 0094 SessionController *sessionController(); 0095 /// @internal 0096 ProgressManager *progressController(); 0097 0098 void cleanup(); 0099 0100 bool shuttingDown() const override; 0101 0102 Core::Setup setupFlags() const; 0103 0104 public Q_SLOTS: 0105 void shutdown(); 0106 0107 protected: 0108 friend class CorePrivate; 0109 explicit Core( KDevelop::CorePrivate* dd, QObject* parent = nullptr ); 0110 KDevelop::CorePrivate *d; 0111 static Core *m_self; 0112 private: 0113 explicit Core(QObject *parent = nullptr); 0114 }; 0115 0116 } 0117 0118 #endif 0119