// Copyright (C) 2016 Nicolas Arnaud-Cormos // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include namespace Macros::Internal { class Macro; class MacroEvent; class MacroManager; class IMacroHandler : public QObject { public: virtual void startRecording(Macro *macro); virtual void endRecordingMacro(Macro *macro); virtual bool canExecuteEvent(const MacroEvent ¯oEvent) = 0; virtual bool executeEvent(const MacroEvent ¯oEvent) = 0; protected: void addMacroEvent(const MacroEvent &event); void setCurrentMacro(Macro *macro); bool isRecording() const; private: friend class MacroManager; Macro *m_currentMacro = nullptr; }; } // namespace Macros::Internal