3#include <Process/Dataflow/ControlWidgets.hpp>
5#include <Media/MediaFileHandle.hpp>
7#include <nano_observer.hpp>
8#include <score_plugin_media_export.h>
11struct WaveformComputer;
18 ,
public QGraphicsItem
19 ,
public Nano::Observer
29 void pressed() E_SIGNAL(SCORE_PLUGIN_MEDIA_EXPORT, pressed);
30 void dropped(QString filename) E_SIGNAL(SCORE_PLUGIN_MEDIA_EXPORT, dropped, filename);
33 const QString& text()
const noexcept {
return m_string; }
34 void setFile(
const QString& s);
35 QRectF boundingRect()
const override;
38 void on_finishedDecoding();
39 void mousePressEvent(QGraphicsSceneMouseEvent* event)
override;
40 void mouseMoveEvent(QGraphicsSceneMouseEvent* event)
override;
41 void mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
override;
43 void dragEnterEvent(QGraphicsSceneDragDropEvent* event)
override;
44 void dragMoveEvent(QGraphicsSceneDragDropEvent* event)
override;
45 void dragLeaveEvent(QGraphicsSceneDragDropEvent* event)
override;
46 void dropEvent(QGraphicsSceneDragDropEvent* event)
override;
48 void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option, QWidget* widget)
52 std::shared_ptr<Media::AudioFile> m_file;
53 QVector<QImage*> m_images;
63 template <
typename T,
typename Control_T>
66 QGraphicsItem* parent, QObject* context)
69 auto on_open = [&inlet, &ctx] {
71 = QFileDialog::getOpenFileName(
nullptr,
"Open File", {}, inlet.filters());
72 if(filename.isEmpty())
76 .submit<WidgetFactory::SetControlValue<Control_T>>(
77 inlet, filename.toStdString());
79 auto on_set = [&inlet, &ctx](
const QString& filename) {
80 if(filename.isEmpty())
84 .submit<WidgetFactory::SetControlValue<Control_T>>(
85 inlet, filename.toStdString());
87 QObject::connect(bt, &score::QGraphicsWaveformButton::pressed, &inlet, on_open);
88 QObject::connect(bt, &score::QGraphicsWaveformButton::dropped, &inlet, on_set);
89 auto set = [=](
const ossia::value& val) {
90 auto str = QString::fromStdString(ossia::convert<std::string>(val));
101 QObject::connect(&inlet, &Control_T::valueChanged, bt, set);
The CommandDispatcher class.
Definition CommandDispatcher.hpp:13
Base toolkit upon which the software is built.
Definition Application.cpp:97
Definition DocumentContext.hpp:18