QtNovelUI/WordsIDE/tools.h

46 lines
1.3 KiB
C++

#ifndef COMNTOOLS_H
#define COMNTOOLS_H
#include <QAction>
#include <QStandardItemModel>
#include <functional>
namespace Tools {
class Run {
public:
Run(bool manual_flag, std::function<bool()> judge,
std::function<void(bool)> execution);
void exec();
private:
bool manual;
std::function<bool()> judgement;
std::function<void(bool)> execution;
};
class StatusSyncCore : public QObject {
public:
explicit StatusSyncCore(QObject *p = nullptr);
virtual ~StatusSyncCore() = default;
void widgetEnableSync(QWidget *tar, std::function<bool()> proc);
void actionEnableSync(QAction *tar, std::function<bool()> proc);
void actionCheckSync(QAction *tar, std::function<bool()> proc);
void registerTrigger(std::function<bool()> judge,
std::function<void(bool)> exec);
Run *registerManualRun(std::function<bool()> judge,
std::function<void(bool)> exec);
void sync();
private:
QHash<QWidget *, std::function<bool()>> widget_trigger_map;
QHash<QAction *, std::function<bool()>> action_trigger_map;
QList<Run *> alltriggers;
};
} // namespace Tools
#endif // COMNTOOLS_H