Moved widgets in subfolder
This commit is contained in:
@ -2,9 +2,9 @@ QT = core multimedia gui widgets network
|
|||||||
|
|
||||||
CONFIG += c++20
|
CONFIG += c++20
|
||||||
|
|
||||||
release: QMAKE_CXXFLAGS_RELEASE -= -O1
|
#release: QMAKE_CXXFLAGS_RELEASE -= -O1
|
||||||
release: QMAKE_CXXFLAGS_RELEASE -= -O2
|
#release: QMAKE_CXXFLAGS_RELEASE -= -O2
|
||||||
release: QMAKE_CXXFLAGS_RELEASE += -O3 -ffast-math -march=native -mtune=native
|
#release: QMAKE_CXXFLAGS_RELEASE += -O3 -ffast-math -march=native -mtune=native
|
||||||
|
|
||||||
LIBS += -lrtmidi -lportaudio
|
LIBS += -lrtmidi -lportaudio
|
||||||
|
|
||||||
@ -14,64 +14,64 @@ SOURCES += \
|
|||||||
audiodecoder.cpp \
|
audiodecoder.cpp \
|
||||||
audioformat.cpp \
|
audioformat.cpp \
|
||||||
audioplayer.cpp \
|
audioplayer.cpp \
|
||||||
djwidget.cpp \
|
|
||||||
drummachinesettings.cpp \
|
drummachinesettings.cpp \
|
||||||
drumpadwidget.cpp \
|
|
||||||
filesmodel.cpp \
|
filesmodel.cpp \
|
||||||
graphrenderer.cpp \
|
graphrenderer.cpp \
|
||||||
jsonconverters.cpp \
|
jsonconverters.cpp \
|
||||||
main.cpp \
|
main.cpp \
|
||||||
mainwindow.cpp \
|
|
||||||
midicontainers.cpp \
|
midicontainers.cpp \
|
||||||
midiinwrapper.cpp \
|
midiinwrapper.cpp \
|
||||||
midioutwrapper.cpp \
|
midioutwrapper.cpp \
|
||||||
presetdetailwidget.cpp \
|
|
||||||
presets.cpp \
|
presets.cpp \
|
||||||
presetsmodel.cpp \
|
presetsmodel.cpp \
|
||||||
previewwidget.cpp \
|
|
||||||
sampleswidget.cpp \
|
|
||||||
samplewidget.cpp \
|
|
||||||
scratchwidget.cpp \
|
|
||||||
sequencerwidget.cpp \
|
|
||||||
synthisizer.cpp \
|
synthisizer.cpp \
|
||||||
synthisizerwidget.cpp \
|
treetotableproxymodel.cpp \
|
||||||
trackdeck.cpp \
|
widgets/djwidget.cpp \
|
||||||
treetotableproxymodel.cpp
|
widgets/drumpadwidget.cpp \
|
||||||
|
widgets/mainwindow.cpp \
|
||||||
|
widgets/presetdetailwidget.cpp \
|
||||||
|
widgets/previewwidget.cpp \
|
||||||
|
widgets/sampleswidget.cpp \
|
||||||
|
widgets/samplewidget.cpp \
|
||||||
|
widgets/scratchwidget.cpp \
|
||||||
|
widgets/sequencerwidget.cpp \
|
||||||
|
widgets/synthisizerwidget.cpp \
|
||||||
|
widgets/trackdeck.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
audiodecoder.h \
|
audiodecoder.h \
|
||||||
audioformat.h \
|
audioformat.h \
|
||||||
audioplayer.h \
|
audioplayer.h \
|
||||||
djwidget.h \
|
|
||||||
drummachinesettings.h \
|
drummachinesettings.h \
|
||||||
drumpadwidget.h \
|
|
||||||
filesmodel.h \
|
filesmodel.h \
|
||||||
graphrenderer.h \
|
graphrenderer.h \
|
||||||
jsonconverters.h \
|
jsonconverters.h \
|
||||||
mainwindow.h \
|
|
||||||
midicontainers.h \
|
midicontainers.h \
|
||||||
midiinwrapper.h \
|
midiinwrapper.h \
|
||||||
midioutwrapper.h \
|
midioutwrapper.h \
|
||||||
presetdetailwidget.h \
|
|
||||||
presets.h \
|
presets.h \
|
||||||
presetsmodel.h \
|
presetsmodel.h \
|
||||||
previewwidget.h \
|
|
||||||
sampleswidget.h \
|
|
||||||
samplewidget.h \
|
|
||||||
scratchwidget.h \
|
|
||||||
sequencerwidget.h \
|
|
||||||
synthisizer.h \
|
synthisizer.h \
|
||||||
synthisizerwidget.h \
|
treetotableproxymodel.h \
|
||||||
trackdeck.h \
|
widgets/djwidget.h \
|
||||||
treetotableproxymodel.h
|
widgets/drumpadwidget.h \
|
||||||
|
widgets/mainwindow.h \
|
||||||
|
widgets/presetdetailwidget.h \
|
||||||
|
widgets/previewwidget.h \
|
||||||
|
widgets/sampleswidget.h \
|
||||||
|
widgets/samplewidget.h \
|
||||||
|
widgets/scratchwidget.h \
|
||||||
|
widgets/sequencerwidget.h \
|
||||||
|
widgets/synthisizerwidget.h \
|
||||||
|
widgets/trackdeck.h
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
djwidget.ui \
|
widgets/djwidget.ui \
|
||||||
drumpadwidget.ui \
|
widgets/drumpadwidget.ui \
|
||||||
mainwindow.ui \
|
widgets/mainwindow.ui \
|
||||||
presetdetailwidget.ui \
|
widgets/presetdetailwidget.ui \
|
||||||
sampleswidget.ui \
|
widgets/sampleswidget.ui \
|
||||||
samplewidget.ui \
|
widgets/samplewidget.ui \
|
||||||
sequencerwidget.ui \
|
widgets/sequencerwidget.ui \
|
||||||
synthisizerwidget.ui \
|
widgets/synthisizerwidget.ui \
|
||||||
trackdeck.ui
|
widgets/trackdeck.ui
|
||||||
|
2
main.cpp
2
main.cpp
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include "portaudio.h"
|
#include "portaudio.h"
|
||||||
|
|
||||||
#include "mainwindow.h"
|
#include "widgets/mainwindow.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -2,17 +2,17 @@
|
|||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "midicontainers.h"
|
|
||||||
|
|
||||||
constexpr double pi = std::acos(-1);
|
constexpr double pi = std::acos(-1);
|
||||||
|
|
||||||
void Synthisizer::writeSamples(frame_t *begin, frame_t *end)
|
void Synthisizer::writeSamples(frame_t *begin, frame_t *end)
|
||||||
{
|
{
|
||||||
|
const auto volume = m_volume;
|
||||||
const auto frequency = m_frequency;
|
const auto frequency = m_frequency;
|
||||||
|
|
||||||
if (frequency)
|
if (frequency)
|
||||||
std::transform(begin, end, begin, [&](frame_t frame){
|
std::transform(begin, end, begin, [&](frame_t frame){
|
||||||
std::transform(std::cbegin(frame), std::cend(frame), std::begin(frame),
|
std::transform(std::cbegin(frame), std::cend(frame), std::begin(frame),
|
||||||
[value=std::sin(m_phase)](const sample_t &sample) { return sample + value; });
|
[value=std::sin(m_phase),&volume](const sample_t &sample) { return (sample + value) * volume; });
|
||||||
|
|
||||||
m_phase += pi*2./frameRate*m_actualFrequency;
|
m_phase += pi*2./frameRate*m_actualFrequency;
|
||||||
if (m_phase >= pi*2.)
|
if (m_phase >= pi*2.)
|
||||||
@ -22,14 +22,3 @@ void Synthisizer::writeSamples(frame_t *begin, frame_t *end)
|
|||||||
});
|
});
|
||||||
m_actualFrequency = float(m_actualFrequency+m_frequency)/2.f;
|
m_actualFrequency = float(m_actualFrequency+m_frequency)/2.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Synthisizer::messageReceived(const midi::MidiMessage &message)
|
|
||||||
{
|
|
||||||
if (message.cmd == midi::Command::NoteOff || (message.cmd == midi::Command::NoteOn && message.velocity == 0))
|
|
||||||
{
|
|
||||||
if (m_frequency == int16_t(440.*std::pow(std::pow(2., 1./12.), message.note-48)))
|
|
||||||
m_frequency = 0;
|
|
||||||
}
|
|
||||||
else if (message.cmd == midi::Command::NoteOn)
|
|
||||||
m_frequency = 440.*std::pow(std::pow(2., 1./12.), message.note-48);
|
|
||||||
}
|
|
||||||
|
@ -1,24 +1,29 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
#include "audioformat.h"
|
#include "audioformat.h"
|
||||||
|
|
||||||
namespace midi { class MidiMessage; }
|
namespace midi { class MidiMessage; }
|
||||||
|
|
||||||
class DrumMachineSettings;
|
class DrumMachineSettings;
|
||||||
|
|
||||||
class Synthisizer
|
class Synthisizer : public QObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
float volume() const { return m_volume; }
|
||||||
|
void setVolume(float volume) { m_volume = volume; }
|
||||||
|
|
||||||
|
int16_t frequency() const { return m_frequency; }
|
||||||
void setFrequency(int16_t frequency) { m_frequency = frequency; }
|
void setFrequency(int16_t frequency) { m_frequency = frequency; }
|
||||||
|
|
||||||
void writeSamples(frame_t *begin, frame_t *end);
|
void writeSamples(frame_t *begin, frame_t *end);
|
||||||
|
|
||||||
void messageReceived(const midi::MidiMessage &message);
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sendMidi(const midi::MidiMessage &midiMsg);
|
void sendMidi(const midi::MidiMessage &midiMsg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
float m_volume{1.f};
|
||||||
int16_t m_frequency{};
|
int16_t m_frequency{};
|
||||||
int16_t m_actualFrequency{};
|
int16_t m_actualFrequency{};
|
||||||
double m_phase{};
|
double m_phase{};
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
#include "synthisizerwidget.h"
|
|
||||||
#include "ui_synthisizerwidget.h"
|
|
||||||
|
|
||||||
SynthisizerWidget::SynthisizerWidget(QWidget *parent) :
|
|
||||||
QWidget{parent},
|
|
||||||
m_ui{std::make_unique<Ui::SynthisizerWidget>()}
|
|
||||||
{
|
|
||||||
m_ui->setupUi(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
SynthisizerWidget::~SynthisizerWidget() = default;
|
|
||||||
|
|
||||||
void SynthisizerWidget::writeSamples(frame_t *begin, frame_t *end)
|
|
||||||
{
|
|
||||||
m_synthisizer.writeSamples(begin, end);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SynthisizerWidget::loadSettings(DrumMachineSettings &settings)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void SynthisizerWidget::unsendColors()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void SynthisizerWidget::sendColors()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void SynthisizerWidget::messageReceived(const midi::MidiMessage &message)
|
|
||||||
{
|
|
||||||
m_synthisizer.messageReceived(message);
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>SynthisizerWidget</class>
|
|
||||||
<widget class="QWidget" name="SynthisizerWidget">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>400</width>
|
|
||||||
<height>300</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Form</string>
|
|
||||||
</property>
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>30</x>
|
|
||||||
<y>60</y>
|
|
||||||
<width>221</width>
|
|
||||||
<height>31</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Hier könnte ihr Synthisizer stehen.</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@ -140,7 +140,7 @@
|
|||||||
<customwidget>
|
<customwidget>
|
||||||
<class>TrackDeck</class>
|
<class>TrackDeck</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>trackdeck.h</header>
|
<header>widgets/trackdeck.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
@ -119,8 +119,6 @@ void DrumPadWidget::loadPresets()
|
|||||||
|
|
||||||
void DrumPadWidget::requestFinished()
|
void DrumPadWidget::requestFinished()
|
||||||
{
|
{
|
||||||
qDebug() << "called";
|
|
||||||
|
|
||||||
if (!m_reply)
|
if (!m_reply)
|
||||||
{
|
{
|
||||||
qWarning() << "no valid reply";
|
qWarning() << "no valid reply";
|
@ -87,19 +87,19 @@
|
|||||||
<customwidget>
|
<customwidget>
|
||||||
<class>SamplesWidget</class>
|
<class>SamplesWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>sampleswidget.h</header>
|
<header>widgets/sampleswidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>PresetDetailWidget</class>
|
<class>PresetDetailWidget</class>
|
||||||
<extends>QScrollArea</extends>
|
<extends>QScrollArea</extends>
|
||||||
<header>presetdetailwidget.h</header>
|
<header>widgets/presetdetailwidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>SequencerWidget</class>
|
<class>SequencerWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>sequencerwidget.h</header>
|
<header>widgets/sequencerwidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
@ -37,6 +37,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
m_cache.setCacheDirectory("cache");
|
m_cache.setCacheDirectory("cache");
|
||||||
|
m_cache.setMaximumCacheSize(2ull * 1024 * 1024 * 1024);
|
||||||
m_networkAccessManager.setCache(&m_cache);
|
m_networkAccessManager.setCache(&m_cache);
|
||||||
|
|
||||||
m_ui->drumPadWidget->injectNetworkAccessManager(m_networkAccessManager);
|
m_ui->drumPadWidget->injectNetworkAccessManager(m_networkAccessManager);
|
||||||
@ -100,6 +101,8 @@ paDefault:
|
|||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
{
|
{
|
||||||
|
m_paStream = nullptr;
|
||||||
|
|
||||||
m_decoderThread.exit();
|
m_decoderThread.exit();
|
||||||
m_decoderThread.wait();
|
m_decoderThread.wait();
|
||||||
}
|
}
|
@ -240,19 +240,19 @@
|
|||||||
<customwidget>
|
<customwidget>
|
||||||
<class>DjWidget</class>
|
<class>DjWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>djwidget.h</header>
|
<header>widgets/djwidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>DrumPadWidget</class>
|
<class>DrumPadWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>drumpadwidget.h</header>
|
<header>widgets/drumpadwidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>SynthisizerWidget</class>
|
<class>SynthisizerWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>synthisizerwidget.h</header>
|
<header>widgets/synthisizerwidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
@ -175,7 +175,7 @@
|
|||||||
<customwidget>
|
<customwidget>
|
||||||
<class>SampleWidget</class>
|
<class>SampleWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>samplewidget.h</header>
|
<header>widgets/samplewidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
@ -63,7 +63,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void chokeTriggered(int choke);
|
void chokeTriggered(int choke);
|
||||||
void startDecoding(const std::shared_ptr<QIODevice> &device);
|
void startDecoding(std::shared_ptr<QIODevice> device);
|
||||||
void sendMidi(const midi::MidiMessage &midiMsg);
|
void sendMidi(const midi::MidiMessage &midiMsg);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
46
widgets/synthisizerwidget.cpp
Normal file
46
widgets/synthisizerwidget.cpp
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include "synthisizerwidget.h"
|
||||||
|
#include "ui_synthisizerwidget.h"
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
#include "midicontainers.h"
|
||||||
|
|
||||||
|
SynthisizerWidget::SynthisizerWidget(QWidget *parent) :
|
||||||
|
QWidget{parent},
|
||||||
|
m_ui{std::make_unique<Ui::SynthisizerWidget>()}
|
||||||
|
{
|
||||||
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
|
connect(m_ui->horizontalSliderVolume, &QSlider::valueChanged,
|
||||||
|
&m_synthisizer, [&synthisizer=m_synthisizer](int value){ synthisizer.setVolume(float(value) / 100.f); });
|
||||||
|
}
|
||||||
|
|
||||||
|
SynthisizerWidget::~SynthisizerWidget() = default;
|
||||||
|
|
||||||
|
void SynthisizerWidget::writeSamples(frame_t *begin, frame_t *end)
|
||||||
|
{
|
||||||
|
m_synthisizer.writeSamples(begin, end);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SynthisizerWidget::loadSettings(DrumMachineSettings &settings)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SynthisizerWidget::unsendColors()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SynthisizerWidget::sendColors()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SynthisizerWidget::messageReceived(const midi::MidiMessage &message)
|
||||||
|
{
|
||||||
|
if (message.cmd == midi::Command::NoteOff || (message.cmd == midi::Command::NoteOn && message.velocity == 0))
|
||||||
|
{
|
||||||
|
if (m_synthisizer.frequency() == int16_t(440.*std::pow(std::pow(2., 1./12.), message.note-48)))
|
||||||
|
m_synthisizer.setFrequency(0);
|
||||||
|
}
|
||||||
|
else if (message.cmd == midi::Command::NoteOn)
|
||||||
|
m_synthisizer.setFrequency(440.*std::pow(std::pow(2., 1./12.), message.note-48));
|
||||||
|
}
|
67
widgets/synthisizerwidget.ui
Normal file
67
widgets/synthisizerwidget.ui
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>SynthisizerWidget</class>
|
||||||
|
<widget class="QWidget" name="SynthisizerWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>30</x>
|
||||||
|
<y>60</y>
|
||||||
|
<width>221</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Hier könnte ihr Synthisizer stehen.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSlider" name="horizontalSliderVolume">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>110</x>
|
||||||
|
<y>110</y>
|
||||||
|
<width>160</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="labelVolume">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>110</y>
|
||||||
|
<width>55</width>
|
||||||
|
<height>18</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Volume:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>horizontalSliderVolume</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -399,13 +399,13 @@
|
|||||||
<customwidget>
|
<customwidget>
|
||||||
<class>PreviewWidget</class>
|
<class>PreviewWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>previewwidget.h</header>
|
<header>widgets/previewwidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>ScratchWidget</class>
|
<class>ScratchWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header>scratchwidget.h</header>
|
<header>widgets/scratchwidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
Reference in New Issue
Block a user