Files
vimix/ActionManager.h
brunoherbelin 650017c8f3 BugFix: history manager undo and redo for delete and recreation of
source, delete multiple sources or clones, etc.
2020-10-11 00:37:04 +02:00

49 lines
944 B
C++

#ifndef ACTIONMANAGER_H
#define ACTIONMANAGER_H
#include <atomic>
#include <tinyxml2.h>
class Action
{
// Private Constructor
Action();
Action(Action const& copy); // Not Implemented
Action& operator=(Action const& copy); // Not Implemented
public:
static Action& manager()
{
// The only instance
static Action _instance;
return _instance;
}
void store(const std::string &label, uint64_t id = 0);
void clear();
void undo();
void redo();
void stepTo(uint target);
inline uint current() const { return step_; }
inline uint max() const { return max_step_; }
std::string label(uint s) const;
private:
void restore(uint target, uint64_t id);
void replaceSourceId(uint64_t previousid, uint64_t newid);
tinyxml2::XMLDocument xmlDoc_;
uint step_;
uint max_step_;
std::atomic<bool> locked_;
};
#endif // ACTIONMANAGER_H