QtNovelUI/WordsIDE/SensitiveCore.h

75 lines
1.8 KiB
C
Raw Normal View History

2022-11-17 08:26:05 +00:00
#ifndef SENSITIVECORE_H
#define SENSITIVECORE_H
#include "ContentPresent.h"
2022-11-17 08:26:05 +00:00
#include <QHash>
#include <QObject>
#include <StoryTool.h>
namespace MakeTools {
/**
* @brief
*/
class VariedTextView : public QObject
{
Q_OBJECT
public:
explicit VariedTextView();
2022-11-17 08:26:05 +00:00
virtual ~VariedTextView() = default;
virtual void setSource(Core::AppCore *core, const QFileInfo &src, QWidget *parent=nullptr);
2022-11-17 08:26:05 +00:00
QString filePath() const;
void save() const;
virtual void jumpTo(const QList<QString> &path) = 0;
2022-11-17 08:26:05 +00:00
virtual QWidget* textView() const = 0;
virtual QString textContent() const = 0;
2022-11-17 08:26:05 +00:00
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);
2022-11-17 08:52:37 +00:00
2022-11-17 08:26:05 +00:00
void addPerceptionList(VariedTextView *ins, SensitiveType type = SensitiveType::CompileAtChanged);
void addProcTrigger(std::function<void()> exc);
private:
StoryTool *const make_core;
QHash<QString, VariedTextView*> sourcecode_map;
QHash<QString, VariedTextView*> plaintext_map;
QList<std::function<void()>> trigger_list;
void recompile(const QString &file_path);
};
}
#endif // SENSITIVECORE_H