#pragma once #include "macro-action-edit.hpp" #include "filter-combo-box.hpp" #include namespace advss { struct ClipboardQueueParams { std::string mimeTypePrimary; std::string mimeTypeAll; }; struct ClipboardTextQueueParams : ClipboardQueueParams { StringVariable text; }; struct ClipboardImageQueueParams : ClipboardQueueParams { StringVariable url; }; class MacroActionClipboard : public MacroAction { public: MacroActionClipboard(Macro *m) : MacroAction(m) {} static std::shared_ptr Create(Macro *m); std::shared_ptr Copy() const; std::string GetId() const { return id; }; bool PerformAction(); bool Save(obs_data_t *obj) const; bool Load(obs_data_t *obj); void ResolveVariablesToFixedValues(); enum class Action { COPY_TEXT, COPY_IMAGE, }; Action _action = Action::COPY_TEXT; StringVariable _text = obs_module_text( "AdvSceneSwitcher.action.clipboard.copy.text.text.placeholder"); StringVariable _url = obs_module_text( "AdvSceneSwitcher.action.clipboard.copy.image.url.placeholder"); private: void SetupTempVars(); void SetTempVarValues(const ClipboardQueueParams ¶ms); static bool _registered; static const std::string id; }; class MacroActionClipboardEdit : public QWidget { Q_OBJECT public: MacroActionClipboardEdit( QWidget *parent, std::shared_ptr entryData = nullptr); static QWidget *Create(QWidget *parent, std::shared_ptr action) { return new MacroActionClipboardEdit( parent, std::dynamic_pointer_cast( action)); } void UpdateEntryData(); protected: std::shared_ptr _entryData; private slots: void ActionChanged(int index); void TextChanged(); void UrlChanged(); private: void SetWidgetVisibility(); bool _loading = true; FilterComboBox *_actions; VariableLineEdit *_text; VariableLineEdit *_url; }; } // namespace advss