aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/macros/macromanager.h
blob: 936c9156a674ec6983b5a42c8b7b03a1333fc0ca (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
// 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::Internal {

class IMacroHandler;
class Macro;
class MacroOptionsWidget;

class MacroManager final : public QObject
{
public:
    MacroManager();
    ~MacroManager() final;

    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();

private:
    friend class Internal::MacroOptionsWidget;

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

    class MacroManagerPrivate *d;
};

} // namespace Macros::Internal