Loading...
Searching...
No Matches
score-plugin-media/Media/Step/Inspector.hpp
1#pragma once
2#include <Process/Inspector/ProcessInspectorWidgetDelegate.hpp>
3#include <Process/Inspector/ProcessInspectorWidgetDelegateFactory.hpp>
4
5#include <Media/Step/Commands.hpp>
6#include <Media/Step/Model.hpp>
7
8#include <score/command/Dispatchers/OngoingCommandDispatcher.hpp>
9#include <score/document/DocumentContext.hpp>
10#include <score/widgets/DoubleSlider.hpp>
11#include <score/widgets/SignalUtils.hpp>
12
13#include <QFormLayout>
14#include <QSpinBox>
15
16namespace Media
17{
18namespace Step
19{
21{
22public:
23 explicit InspectorWidget(
24 const Model& obj, const score::DocumentContext& doc, QWidget* parent)
25 : InspectorWidgetDelegate_T{obj, parent}
26 , m_dispatcher{doc.dispatcher}
27 , m_count{this}
28 , m_dur{this}
29 , m_min{this}
30 , m_max{this}
31 {
32 m_min.setRange(-100000, 100000);
33 m_max.setRange(-100000, 100000);
34 m_count.setRange(1, 24);
35 m_dur.setRange(1, 1000000);
36 m_count.setValue(obj.stepCount());
37 m_dur.setValue(obj.stepDuration());
38 m_min.setValue(obj.min());
39 m_max.setValue(obj.max());
40
41 auto lay = new QFormLayout{this};
42
43 con(process(), &Model::stepCountChanged, this,
44 [&] { m_count.setValue(obj.stepCount()); });
45 con(process(), &Model::stepDurationChanged, this,
46 [&] { m_dur.setValue(obj.stepDuration()); });
47 con(process(), &Model::minChanged, this, [&] { m_min.setValue(obj.min()); });
48 con(process(), &Model::maxChanged, this, [&] { m_max.setValue(obj.max()); });
49
50 con(m_count, &QSpinBox::editingFinished, this, [&]() {
51 m_dispatcher.submit<SetStepCount>(obj, m_count.value());
52 m_dispatcher.commit();
53 });
54 con(m_dur, &QSpinBox::editingFinished, this, [&]() {
55 m_dispatcher.submit<SetStepDuration>(obj, m_dur.value());
56 m_dispatcher.commit();
57 });
58 con(m_min, &QDoubleSpinBox::editingFinished, this, [&]() {
59 m_dispatcher.submit<SetMin>(obj, m_min.value());
60 m_dispatcher.commit();
61 });
62 con(m_max, &QDoubleSpinBox::editingFinished, this, [&]() {
63 m_dispatcher.submit<SetMax>(obj, m_max.value());
64 m_dispatcher.commit();
65 });
66
67 lay->addRow(tr("Count"), &m_count);
68 lay->addRow(tr("Duration (samples)"), &m_dur);
69 lay->addRow(tr("Min"), &m_min);
70 lay->addRow(tr("Max"), &m_max);
71 }
72
73private:
74 OngoingCommandDispatcher& m_dispatcher;
75
76 QSpinBox m_count;
77 QSpinBox m_dur;
78 QDoubleSpinBox m_min;
79 QDoubleSpinBox m_max;
80};
82 : public Process::InspectorWidgetDelegateFactory_T<Model, InspectorWidget>
83{
84 SCORE_CONCRETE("a7c0ecb5-70a1-476c-8187-075076e413d2")
85};
86}
87}
Definition plugins/score-plugin-media/Media/Step/commands.hpp:83
Definition plugins/score-plugin-media/Media/Step/commands.hpp:73
Definition plugins/score-plugin-media/Media/Step/commands.hpp:53
Definition plugins/score-plugin-media/Media/Step/commands.hpp:62
Definition score-plugin-media/Media/Step/Inspector.hpp:83
Definition score-plugin-media/Media/Step/Inspector.hpp:21
Definition score-plugin-media/Media/Step/Model.hpp:23
The OngoingCommandDispatcher class.
Definition OngoingCommandDispatcher.hpp:27
void submit(Args &&... args)
Definition OngoingCommandDispatcher.hpp:37
void commit()
Definition OngoingCommandDispatcher.hpp:61
Definition ProcessInspectorWidgetDelegate.hpp:13
Definition ProcessInspectorWidgetDelegateFactory.hpp:53
Definition DocumentContext.hpp:18