Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
plugin_operator.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "plugins/plugin_all.h"
7#include "structure/tracks/track_all.h"
8#include "undo/undo_stack.h"
9#include "utils/iobject_registry.h"
10
11#include <QtQmlIntegration/qqmlintegration.h>
12
13namespace zrythm::actions
14{
15
16class PluginOperator : public QObject
17{
18 Q_OBJECT
19 QML_ELEMENT
20 QML_UNCREATABLE ("Needs plugin registry")
21
22public:
23 explicit PluginOperator (
24 undo::UndoStack &undo_stack,
25 utils::IObjectRegistry &plugin_registry,
26 QObject * parent = nullptr)
27 : QObject (parent), plugin_registry_ (plugin_registry),
28 undo_stack_ (undo_stack)
29 {
30 }
31
43 Q_INVOKABLE void movePlugins (
44 QList<plugins::Plugin *> plugins,
45 plugins::PluginGroup * source_group,
46 structure::tracks::Track * source_track,
47 plugins::PluginGroup * target_group,
48 structure::tracks::Track * target_track,
49 int target_start_index = -1);
50
58 Q_INVOKABLE void removePlugins (
59 QList<plugins::Plugin *> plugins,
62
63private:
64 utils::IObjectRegistry &plugin_registry_;
65 undo::UndoStack &undo_stack_;
66};
67
68} // namespace zrythm::actions
Q_INVOKABLE void removePlugins(QList< plugins::Plugin * > plugins, plugins::PluginGroup *group, structure::tracks::Track *track)
Removes one or more plugins from their PluginGroup.
Q_INVOKABLE void movePlugins(QList< plugins::Plugin * > plugins, plugins::PluginGroup *source_group, structure::tracks::Track *source_track, plugins::PluginGroup *target_group, structure::tracks::Track *target_track, int target_start_index=-1)
Moves one or more plugins between PluginGroups.
A flexible container for plugins and nested plugin groups.
Represents a track in the project.
Definition track.h:60
Abstract interface for a UUID-keyed object registry.