Loading...
Searching...
No Matches
lib/score/widgets/ControlWidgets.hpp
1#pragma once
2#include <score/widgets/DoubleSlider.hpp>
3#include <score/widgets/IntSlider.hpp>
4
5#include <ossia/network/value/vec.hpp>
6
7#include <QPushButton>
8
9#include <score_lib_base_export.h>
10
11#include <array>
12
13#include <verdigris>
14
15class QDoubleSpinBox;
16
17namespace score
18{
19struct SCORE_LIB_BASE_EXPORT ToggleButton : public QPushButton
20{
21public:
22 ToggleButton(std::array<QString, 2> alts, QWidget* parent);
23
24 ToggleButton(std::array<const char*, 2> alt, QWidget* parent);
25
26 ToggleButton(QStringList alt, QWidget* parent);
28
29 std::array<QString, 2> alternatives;
30
31protected:
32 void paintEvent(QPaintEvent* event) override;
33};
34
35struct SCORE_LIB_BASE_EXPORT ValueSlider : public score::IntSlider
36{
37public:
38 using IntSlider::IntSlider;
40 bool moving = false;
41
42protected:
43 void paintEvent(QPaintEvent* event) override;
44};
45
46struct SCORE_LIB_BASE_EXPORT SpeedSlider : public score::DoubleSlider
47{
48public:
49 explicit SpeedSlider(QWidget* parent = nullptr);
51 bool showText = true;
52
53 double speed() const noexcept;
54 void setSpeed(double);
55 void setTempo(double);
56
57protected:
58 using score::DoubleSlider::setValue;
59 using score::DoubleSlider::value;
60
61 void paintEvent(QPaintEvent* event) override;
62 void mousePressEvent(QMouseEvent*) override;
63 void mouseDoubleClickEvent(QMouseEvent*) override;
64 void createPopup(QPoint pos) override;
65};
66
67struct SCORE_LIB_BASE_EXPORT VolumeSlider : public score::DoubleSlider
68{
69public:
70 using DoubleSlider::DoubleSlider;
71 double map(double v) const override; //TODO this is not very DRY friendly
72 double unmap(double v) const override;
74
75protected:
76 void paintEvent(QPaintEvent* event) override;
77};
78
79struct SCORE_LIB_BASE_EXPORT ValueDoubleSlider : public score::DoubleSlider
80{
81public:
82 using score::DoubleSlider::DoubleSlider;
84
85protected:
86 void paintEvent(QPaintEvent* event) override;
87};
88
89struct SCORE_LIB_BASE_EXPORT ValueLogDoubleSlider : public score::DoubleSlider
90{
91public:
92 using score::DoubleSlider::DoubleSlider;
93 double map(double v) const override;
94 double unmap(double v) const override;
96
97protected:
98 void paintEvent(QPaintEvent* event) override;
99};
100
101struct SCORE_LIB_BASE_EXPORT ComboSlider : public score::IntSlider
102{
103 QStringList array;
104
105public:
106 template <std::size_t N>
107 ComboSlider(const std::array<const char*, N>& arr, QWidget* parent)
108 : score::IntSlider{parent}
109 {
110 array.reserve(N);
111 for(auto str : arr)
112 array.push_back(str);
113 }
114
115 ComboSlider(const QStringList& arr, QWidget* parent);
116 ~ComboSlider();
117
118protected:
119 void paintEvent(QPaintEvent* event) override;
120};
121
134class SCORE_LIB_BASE_EXPORT RangeWidget final : public QWidget
135{
136 W_OBJECT(RangeWidget)
137
138public:
139 explicit RangeWidget(bool integral, QWidget* parent = nullptr);
140 ~RangeWidget();
141
142 void setRange(double min, double max, ossia::vec2f init);
143 void setValue(ossia::vec2f value);
144 [[nodiscard]] ossia::vec2f value() const noexcept;
145
146 bool moving = false;
147
148 void sliderMoved() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderMoved)
149 void sliderReleased() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderReleased)
150
151private:
152 void onStartEdited();
153 void onEndEdited();
154
155 QDoubleSpinBox* m_start{};
156 QDoubleSpinBox* m_end{};
157 ossia::vec2f m_init{};
158 bool m_updating{};
159};
160
161SCORE_LIB_BASE_EXPORT const QPalette& transparentPalette();
162}
The DoubleSlider class.
Definition DoubleSlider.hpp:20
Definition IntSlider.hpp:13
Editor for a pair (start, end), the QWidget counterpart of score::QGraphicsRangeSlider.
Definition lib/score/widgets/ControlWidgets.hpp:135
Base toolkit upon which the software is built.
Definition Application.cpp:117
Definition lib/score/widgets/ControlWidgets.hpp:102
Definition lib/score/widgets/ControlWidgets.hpp:47
Definition lib/score/widgets/ControlWidgets.hpp:20
Definition lib/score/widgets/ControlWidgets.hpp:80
Definition lib/score/widgets/ControlWidgets.hpp:90
Definition lib/score/widgets/ControlWidgets.hpp:36
Definition lib/score/widgets/ControlWidgets.hpp:68