// Copyright 2007-2021 David Robillard <d@drobilla.net> // SPDX-License-Identifier: GPL-3.0-or-later #ifndef PATCHAGE_ACTION_HPP #define PATCHAGE_ACTION_HPP #include "ClientID.hpp" #include "PortID.hpp" #include "Setting.hpp" #include "SignalDirection.hpp" #include <variant> namespace patchage { namespace action { struct ChangeSetting { Setting setting; }; struct ConnectPorts { PortID tail; PortID head; }; struct DecreaseFontSize {}; struct DisconnectClient { ClientID client; SignalDirection direction; }; struct DisconnectPort { PortID port; }; struct DisconnectPorts { PortID tail; PortID head; }; struct IncreaseFontSize {}; struct MoveModule { ClientID client; SignalDirection direction; double x; double y; }; struct Refresh {}; struct ResetFontSize {}; struct SplitModule { ClientID client; }; struct UnsplitModule { ClientID client; }; struct ZoomFull {}; struct ZoomIn {}; struct ZoomNormal {}; struct ZoomOut {}; } // namespace action /// A high-level action from the user using Action = std::variant<action::ChangeSetting, action::ConnectPorts, action::DecreaseFontSize, action::DisconnectClient, action::DisconnectPort, action::DisconnectPorts, action::IncreaseFontSize, action::MoveModule, action::Refresh, action::ResetFontSize, action::SplitModule, action::UnsplitModule, action::ZoomFull, action::ZoomIn, action::ZoomNormal, action::ZoomOut>; } // namespace patchage #endif // PATCHAGE_ACTION_HPP