diff --git a/include/PluginBrowser.h b/include/PluginBrowser.h index dd2e0a5cb..2bb1b6d5c 100644 --- a/include/PluginBrowser.h +++ b/include/PluginBrowser.h @@ -63,13 +63,14 @@ public: using PluginKey = Plugin::Descriptor::SubPluginFeatures::Key; PluginDescWidget( const PluginKey & _pk, QWidget * _parent ); QString name() const; - + void openInNewInstrumentTrack(QString value); protected: void enterEvent( QEvent * _e ) override; void leaveEvent( QEvent * _e ) override; void mousePressEvent( QMouseEvent * _me ) override; void paintEvent( QPaintEvent * _pe ) override; + void contextMenuEvent(QContextMenuEvent* e) override; private: constexpr static int DEFAULT_HEIGHT{24}; diff --git a/src/gui/PluginBrowser.cpp b/src/gui/PluginBrowser.cpp index afb74dcd3..b59064f05 100644 --- a/src/gui/PluginBrowser.cpp +++ b/src/gui/PluginBrowser.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -34,7 +35,10 @@ #include "embed.h" #include "Engine.h" +#include "InstrumentTrack.h" +#include "Song.h" #include "StringPairDrag.h" +#include "TrackContainerView.h" #include "PluginFactory.h" namespace lmms::gui @@ -287,4 +291,24 @@ void PluginDescWidget::mousePressEvent( QMouseEvent * _me ) } +void PluginDescWidget::contextMenuEvent(QContextMenuEvent* e) +{ + QMenu contextMenu(this); + contextMenu.addAction( + tr("Send to new instrument track"), + [=]{ openInNewInstrumentTrack(m_pluginKey.desc->name); } + ); + contextMenu.exec(e->globalPos()); +} + + +void PluginDescWidget::openInNewInstrumentTrack(QString value) +{ + TrackContainer* tc = Engine::getSong(); + auto it = dynamic_cast(Track::create(Track::InstrumentTrack, tc)); + auto ilt = new InstrumentLoaderThread(this, it, value); + ilt->start(); +} + + } // namespace lmms::gui