#ifndef APPCORE_H #define APPCORE_H #include #include #include #include class MainWindow; namespace Enhancement { class HighlightFeature; } namespace MakeTools { class StoryTool; class DocsManager; class ContentPresent; } class SimpleException : public std::exception { public: explicit SimpleException(const QString &msg); private: QString msg_store; // exception interface public: virtual const char *what() const override; }; namespace Core { class Extension; class AppCore; enum class Scale { Global, Project, File, }; /** * @brief 软件内核类型 */ class AppCore : public QObject { public: AppCore(MainWindow *win, QObject *parent = nullptr); virtual ~AppCore() = default; void registerHighlightType(Enhancement::HighlightFeature *base_type); bool isHighlightDemand(void* ins) const; /** * @brief 全局保存操作 */ void save(); /** * @brief 全局配置端口 * @return */ Config::Configration * globalConfig() const; void setCurrentProject(Project::ProjectManager *project); Project::ProjectManager* currentProject() const; QList getConfigs(QList types) const; Parse::Result::ParseCore * parseCore() const; QList extensions(const QString &suffix = QString()) const; MakeTools::StoryTool *getMakeCore() const; MakeTools::DocsManager *getDocsManager() const; private: MainWindow *const views_holder; Config::Configration *const global_config; Project::ProjectManager * current_project; QList present_types; QList render_types; MakeTools::StoryTool *const makes_core; MakeTools::DocsManager *const docs_manager; }; } #endif // APPCORE_H