3#include <score/tools/FilePath.hpp>
4#include <Process/Dataflow/ControlWidgets.hpp>
6#include <Media/MediaFileHandle.hpp>
8#include <nano_observer.hpp>
9#include <score_plugin_media_export.h>
12struct WaveformComputer;
19 ,
public QGraphicsItem
20 ,
public Nano::Observer
30 void pressed() E_SIGNAL(SCORE_PLUGIN_MEDIA_EXPORT, pressed);
31 void dropped(QString filename) E_SIGNAL(SCORE_PLUGIN_MEDIA_EXPORT, dropped, filename);
34 const QString& text()
const noexcept {
return m_string; }
35 void setFile(
const QString& s);
36 QRectF boundingRect()
const override;
39 void on_finishedDecoding();
40 void mousePressEvent(QGraphicsSceneMouseEvent* event)
override;
41 void mouseMoveEvent(QGraphicsSceneMouseEvent* event)
override;
42 void mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
override;
44 void dragEnterEvent(QGraphicsSceneDragDropEvent* event)
override;
45 void dragMoveEvent(QGraphicsSceneDragDropEvent* event)
override;
46 void dragLeaveEvent(QGraphicsSceneDragDropEvent* event)
override;
47 void dropEvent(QGraphicsSceneDragDropEvent* event)
override;
49 void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option, QWidget* widget)
53 std::shared_ptr<Media::AudioFile> m_file;
54 QVector<QImage*> m_images;
64 template <
typename T,
typename Control_T>
67 QGraphicsItem* parent, QObject* context)
70 auto on_open = [&inlet, &ctx] {
71 const auto current = QString::fromStdString(ossia::convert<std::string>(inlet.value()));
72 WidgetFactory::openFileToImport(
74 [&inlet, &ctx](
const QString& filename) {
77 auto path = score::relativizeFilePath(filename, ctx);
78 CommandDispatcher<>{ctx.commandStack}
79 .submit<WidgetFactory::SetControlValue<Control_T>>(
80 inlet, path.toStdString());
83 auto on_set = [&inlet, &ctx](
const QString& filename) {
84 if(filename.isEmpty())
88 .submit<WidgetFactory::SetControlValue<Control_T>>(
89 inlet, filename.toStdString());
91 QObject::connect(bt, &score::QGraphicsWaveformButton::pressed, &inlet, on_open);
92 QObject::connect(bt, &score::QGraphicsWaveformButton::dropped, &inlet, on_set);
93 auto set = [=](
const ossia::value& val) {
94 auto str = QString::fromStdString(ossia::convert<std::string>(val));
105 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:113
QString pickerStartFolder(const QString ¤t, const score::DocumentContext &ctx) noexcept
Definition File.cpp:269
Definition DocumentContext.hpp:18