#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; virtual void setSource(Core::AppCore *core, const QFileInfo &src, QWidget *parent=nullptr); QString filePath() const; void save() const; virtual void jumpTo(const QList &path) = 0; virtual QWidget* textView() const = 0; virtual QString textContent() const = 0; virtual void textContentReset(const QString &value) = 0; signals: void dataChanged(const QString &filePath); private: QFileInfo source_x; }; 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); }; } #endif // SENSITIVECORE_H