#ifndef SENSITIVECORE_H #define SENSITIVECORE_H #include "ContentPresent.h" #include #include #include namespace MakeTools { /** * @brief 变化的文本视图 */ class VariedTextView : public QObject { Q_OBJECT public: explicit VariedTextView(); virtual ~VariedTextView() = default; void initSource(Core::AppCore *core, const QFileInfo &src, const QString &name, QWidget *parent=nullptr); QString filePath() const; void save() const; virtual void jumpTo(const QList &path) = 0; virtual QString docName() const; virtual QWidget* textView() const = 0; virtual QString textContent() const = 0; virtual void textContentReset(const QString &value) = 0; signals: void dataChanged(const QString &filePath); protected: virtual void initSource(Core::AppCore *core, const QFileInfo &src, QWidget *parent=nullptr); private: QString source_x; QString doc_name; }; enum class SensitiveType { DoNothing, CompileAtChanged }; /** * @brief 自动编译管理框架 */ class SensitiveCore : public QObject { Q_OBJECT public: SensitiveCore(StoryTool *tool); void saveAll() const; bool contains(const QFileInfo &target) const; VariedTextView *queryTextComponent(const QWidget *child_view) const; VariedTextView * queryTextComponent(const QFileInfo &target) const; void closeTextComponent(const QFileInfo &target); void addPerceptionList(VariedTextView *ins, SensitiveType type = SensitiveType::CompileAtChanged); void addProcTrigger(std::function exc); private: StoryTool *const make_core; QHash sourcecode_map; QHash plaintext_map; QList> trigger_list; void recompile(const QString &file_path, const QString &doc_name); }; } #endif // SENSITIVECORE_H