aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/macros/macromanager.h
blob: df33197931885b9f569d2b8cc1867927fa7bbdb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 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 <QObject>
#include <QMap>

namespace Macros {
namespace Internal {

class IMacroHandler;
class Macro;
class MacroOptionsWidget;

class MacroManager : public QObject
{
    Q_OBJECT

public:
    MacroManager();
    ~MacroManager() override;

    static MacroManager *instance();

    static const QMap<QString, Macro *> &macros();

    static void registerMacroHandler(IMacroHandler *handler);

    static QString macrosDirectory();

    void startMacro();
    void executeLastMacro();
    void saveLastMacro();
    bool executeMacro(const QString &name);
    void endMacro();

protected:
    friend class Internal::MacroOptionsWidget;

    void deleteMacro(const QString &name);
    void changeMacro(const QString &name, const QString &description);

private:
    class MacroManagerPrivate *d;
};

} // namespace Internal
} // namespace Macros