From 7fcf5b273173e26e04aba870a5b94acd3552b324 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sun, 23 Jul 2023 03:21:02 +0200 Subject: [PATCH 01/41] sound pref: js comment format > /// --- src/preferences/dialog/dlgprefsound.cpp | 90 ++++-------- src/preferences/dialog/dlgprefsound.h | 11 +- src/preferences/dialog/dlgprefsounditem.cpp | 78 ++++------- src/soundio/soundmanagerutil.cpp | 148 +++++++------------- 4 files changed, 111 insertions(+), 216 deletions(-) diff --git a/src/preferences/dialog/dlgprefsound.cpp b/src/preferences/dialog/dlgprefsound.cpp index d496e29ab7e..b5c3c9856f6 100644 --- a/src/preferences/dialog/dlgprefsound.cpp +++ b/src/preferences/dialog/dlgprefsound.cpp @@ -32,10 +32,8 @@ bool soundItemAlreadyExists(const AudioPath& output, const QWidget& widget) { } // namespace -/** - * Construct a new sound preferences pane. Initializes and populates all the - * all the controls to the values obtained from SoundManager. - */ +/// Construct a new sound preferences pane. Initializes and populates +/// all the controls to the values obtained from SoundManager. DlgPrefSound::DlgPrefSound(QWidget* pParent, std::shared_ptr pSoundManager, UserSettingsPointer pSettings) @@ -263,10 +261,8 @@ DlgPrefSound::DlgPrefSound(QWidget* pParent, MIXXX_WIKI_HARDWARE_COMPATIBILITY_URL))); } -/** - * Slot called when the preferences dialog is opened or this pane is - * selected. - */ +/// Slot called when the preferences dialog is opened or this pane is +/// selected. void DlgPrefSound::slotUpdate() { // this is unfortunate, because slotUpdate is called every time // we change to this pane, we lose changed and unapplied settings @@ -279,9 +275,7 @@ void DlgPrefSound::slotUpdate() { m_settingsModified = false; } -/** - * Slot called when the Apply or OK button is pressed. - */ +/// Slot called when the Apply or OK button is pressed. void DlgPrefSound::slotApply() { if (!m_settingsModified) { return; @@ -319,13 +313,11 @@ QUrl DlgPrefSound::helpUrl() const { return QUrl(MIXXX_MANUAL_SOUND_URL); } -/** - * Initializes (and creates) all the path items. Each path item widget allows - * the user to input a sound device name and channel number given a description - * of what will be done with that info. Inputs and outputs are grouped by tab, - * and each path item has an identifier (Main, Headphones, ...) and an index, - * if necessary. - */ +/// Initializes (and creates) all the path items. Each path item widget allows +/// the user to input a sound device name and channel number given a description +/// of what will be done with that info. Inputs and outputs are grouped by tab, +/// and each path item has an identifier (Master, Headphones, ...) and an index, +/// if necessary. void DlgPrefSound::initializePaths() { // Pre-sort paths so they're added in the order they'll appear later on // so Tab key order matches order in layout: @@ -419,18 +411,14 @@ void DlgPrefSound::insertItem(DlgPrefSoundItem *pItem, QVBoxLayout *pLayout) { pLayout->insertWidget(pos, pItem); } -/** - * Convenience overload to load settings from the SoundManagerConfig owned by - * SoundManager. - */ +/// Convenience overload to load settings from the SoundManagerConfig owned by +/// SoundManager. void DlgPrefSound::loadSettings() { loadSettings(m_pSoundManager->getConfig()); } -/** - * Loads the settings in the given SoundManagerConfig into the dialog. - */ -void DlgPrefSound::loadSettings(const SoundManagerConfig &config) { +/// Loads the settings in the given SoundManagerConfig into the dialog. +void DlgPrefSound::loadSettings(const SoundManagerConfig& config) { m_loading = true; // so settingsChanged ignores all our modifications here m_config = config; int apiIndex = apiComboBox->findData(m_config.getAPI()); @@ -494,12 +482,10 @@ void DlgPrefSound::loadSettings(const SoundManagerConfig &config) { emit loadPaths(m_config); } -/** - * Slot called when the user selects a different API, or the - * software changes it programmatically (for instance, when it - * loads a value from SoundManager). Refreshes the device lists - * for the new API and pushes those to the path items. - */ +/// Slot called when the user selects a different API, or the +/// software changes it programmatically (for instance, when it +/// loads a value from SoundManager). Refreshes the device lists +/// for the new API and pushes those to the path items. void DlgPrefSound::apiChanged(int index) { m_config.setAPI(apiComboBox->itemData(index).toString()); refreshDevices(); @@ -518,10 +504,8 @@ void DlgPrefSound::apiChanged(int index) { updateAudioBufferSizes(sampleRateComboBox->currentIndex()); } -/** - * Updates the list of APIs, trying to keep the API and device selections - * constant if possible. - */ +/// Updates the list of APIs, trying to keep the API and device selections +/// constant if possible. void DlgPrefSound::updateAPIs() { QString currentAPI(apiComboBox->itemData(apiComboBox->currentIndex()).toString()); emit updatingAPI(); @@ -538,10 +522,8 @@ void DlgPrefSound::updateAPIs() { emit updatedAPI(); } -/** - * Slot called when the sample rate combo box changes to update the - * sample rate in the config. - */ +/// Slot called when the sample rate combo box changes to update the +/// sample rate in the config. void DlgPrefSound::sampleRateChanged(int index) { m_config.setSampleRate( sampleRateComboBox->itemData(index).toUInt()); @@ -550,10 +532,8 @@ void DlgPrefSound::sampleRateChanged(int index) { checkLatencyCompensation(); } -/** - * Slot called when the latency combo box is changed to update the - * latency in the config. - */ +/// Slot called when the latency combo box is changed to update the +/// latency in the config. void DlgPrefSound::audioBufferChanged(int index) { m_config.setAudioBufferSizeIndex( audioBufferComboBox->itemData(index).toUInt()); @@ -637,10 +617,8 @@ void DlgPrefSound::updateAudioBufferSizes(int sampleRateIndex) { } } -/** - * Slot called when device lists go bad to refresh them, or the API - * just changes and we need to display new devices. - */ +/// Slot called when device lists go bad to refresh them, or the API +/// just changes and we need to display new devices. void DlgPrefSound::refreshDevices() { if (m_config.getAPI() == SoundManagerConfig::kDefaultAPI) { m_outputDevices.clear(); @@ -655,11 +633,9 @@ void DlgPrefSound::refreshDevices() { emit refreshInputDevices(m_inputDevices); } -/** - * Called when any of the combo boxes in this dialog are changed. Enables the - * apply button and marks that settings have been changed so that - * DlgPrefSound::slotApply knows to apply them. - */ +/// Called when any of the combo boxes in this dialog are changed. Enables the +/// apply button and marks that settings have been changed so that +/// DlgPrefSound::slotApply knows to apply them. void DlgPrefSound::settingChanged() { if (m_loading) { return; // doesn't count if we're just loading prefs @@ -675,18 +651,14 @@ void DlgPrefSound::deviceSettingChanged() { m_settingsModified = true; } -/** - * Slot called when the "Query Devices" button is clicked. - */ +/// Slot called when the "Query Devices" button is clicked. void DlgPrefSound::queryClicked() { ScopedWaitCursor cursor; m_pSoundManager->clearAndQueryDevices(); updateAPIs(); } -/** - * Slot called when the "Reset to Defaults" button is clicked. - */ +/// Slot called when the "Reset to Defaults" button is clicked. void DlgPrefSound::slotResetToDefaults() { SoundManagerConfig newConfig(m_pSoundManager.get()); newConfig.loadDefaults(m_pSoundManager.get(), SoundManagerConfig::ALL); diff --git a/src/preferences/dialog/dlgprefsound.h b/src/preferences/dialog/dlgprefsound.h index e337f0f4fe5..57aedd72e9a 100644 --- a/src/preferences/dialog/dlgprefsound.h +++ b/src/preferences/dialog/dlgprefsound.h @@ -17,15 +17,10 @@ class SoundDevice; class DlgPrefSoundItem; class ControlProxy; -/* - * TODO(bkgood) (n-decks) establish a signal/slot connection with a signal - * on EngineMixer that emits every time a channel is added, and a slot here - * that updates the dialog accordingly. - */ +// TODO(bkgood) (n-decks) establish a signal/slot connection with a signal +// on EngineMaster that emits every time a channel is added, and a slot here +// that updates the dialog accordingly. -/** - * Class representing a preferences pane to configure sound devices for Mixxx. - */ class DlgPrefSound : public DlgPreferencePage, public Ui::DlgPrefSoundDlg { Q_OBJECT; public: diff --git a/src/preferences/dialog/dlgprefsounditem.cpp b/src/preferences/dialog/dlgprefsounditem.cpp index 940d1ecf97c..d2f2250df0a 100644 --- a/src/preferences/dialog/dlgprefsounditem.cpp +++ b/src/preferences/dialog/dlgprefsounditem.cpp @@ -6,15 +6,13 @@ #include "soundio/sounddevice.h" #include "soundio/soundmanagerconfig.h" -/** - * Constructs a new preferences sound item, representing an AudioPath and SoundDevice - * with a label and two combo boxes. - * @param type The AudioPathType of the path to be represented - * @param devices The list of devices for the user to choose from (either a collection - * of input or output devices). - * @param isInput true if this is representing an AudioInput, false otherwise - * @param index the index of the represented AudioPath, if applicable - */ +/// Constructs a new preferences sound item, representing an AudioPath and SoundDevice +/// with a label and two combo boxes. +/// @param type The AudioPathType of the path to be represented +/// @param devices The list of devices for the user to choose from (either a collection +/// of input or output devices). +/// @param isInput true if this is representing an AudioInput, false otherwise +/// @param index the index of the represented AudioPath, if applicable DlgPrefSoundItem::DlgPrefSoundItem( QWidget* parent, AudioPathType type, @@ -47,10 +45,8 @@ DlgPrefSoundItem::~DlgPrefSoundItem() { } -/** - * Slot called when the parent preferences pane updates its list of sound - * devices, to update the item widget's list of devices to display. - */ +/// Slot called when the parent preferences pane updates its list of sound +/// devices, to update the item widget's list of devices to display. void DlgPrefSoundItem::refreshDevices(const QList& devices) { m_devices = devices; SoundDeviceId oldDev = deviceComboBox->itemData(deviceComboBox->currentIndex()).value(); @@ -72,10 +68,8 @@ void DlgPrefSoundItem::refreshDevices(const QList& devices) } } -/** - * Slot called when the device combo box selection changes. Updates the channel - * combo box. - */ +/// Slot called when the device combo box selection changes. Updates the channel +/// combo box. void DlgPrefSoundItem::deviceChanged(int index) { channelComboBox->clear(); SoundDeviceId selection = deviceComboBox->itemData(index).value(); @@ -136,13 +130,11 @@ void DlgPrefSoundItem::channelChanged() { } } -/** - * Slot called to load the respective AudioPath from a SoundManagerConfig - * object. - * @note If there are multiple AudioPaths matching this instance's type - * and index (if applicable), then only the first one is used. A more - * advanced preferences pane may one day allow multiples. - */ +/// Slot called to load the respective AudioPath from a SoundManagerConfig +/// object. +/// @note If there are multiple AudioPaths matching this instance's type +/// and index (if applicable), then only the first one is used. A more +/// advanced preferences pane may one day allow multiples. void DlgPrefSoundItem::loadPath(const SoundManagerConfig &config) { if (m_isInput) { const auto inputDeviceMap = config.getInputs(); @@ -168,11 +160,9 @@ void DlgPrefSoundItem::loadPath(const SoundManagerConfig &config) { setDevice(SoundDeviceId()); // this will blank the channel combo box } -/** - * Slot called when the underlying DlgPrefSound wants this Item to - * record its respective path with the SoundManagerConfig instance at - * config. - */ +/// Slot called when the underlying DlgPrefSound wants this Item to +/// record its respective path with the SoundManagerConfig instance at +/// config. void DlgPrefSoundItem::writePath(SoundManagerConfig* config) const { SoundDevicePointer pDevice = getDevice(); if (!pDevice) { @@ -199,17 +189,13 @@ void DlgPrefSoundItem::writePath(SoundManagerConfig* config) const { } } -/** - * Slot called to tell the Item to save its selections for later use. - */ +/// Slot called to tell the Item to save its selections for later use. void DlgPrefSoundItem::save() { m_savedDevice = deviceComboBox->itemData(deviceComboBox->currentIndex()).value(); m_savedChannel = channelComboBox->itemData(channelComboBox->currentIndex()).toPoint(); } -/** - * Slot called to reload Item with previously saved settings. - */ +/// Slot called to reload Item with previously saved settings. void DlgPrefSoundItem::reload() { int newDevice = deviceComboBox->findData(QVariant::fromValue(m_savedDevice)); if (newDevice > -1) { @@ -221,10 +207,8 @@ void DlgPrefSoundItem::reload() { } } -/** - * Gets the currently selected SoundDevice - * @returns pointer to SoundDevice, or NULL if the "None" option is selected. - */ +/// Gets the currently selected SoundDevice +/// @returns pointer to SoundDevice, or NULL if the "None" option is selected. SoundDevicePointer DlgPrefSoundItem::getDevice() const { SoundDeviceId selection = deviceComboBox->itemData(deviceComboBox->currentIndex()).value(); if (selection == SoundDeviceId()) { @@ -241,10 +225,8 @@ SoundDevicePointer DlgPrefSoundItem::getDevice() const { return SoundDevicePointer(); } -/** - * Selects a device in the device combo box given a SoundDevice - * internal name, or selects "None" if the device isn't found. - */ +/// Selects a device in the device combo box given a SoundDevice +/// internal name, or selects "None" if the device isn't found. void DlgPrefSoundItem::setDevice(const SoundDeviceId& device) { int index = deviceComboBox->findData(QVariant::fromValue(device)); //qDebug() << "DlgPrefSoundItem::setDevice" << device; @@ -258,10 +240,8 @@ void DlgPrefSoundItem::setDevice(const SoundDeviceId& device) { } } -/** - * Selects a channel in the channel combo box given a channel number, - * or selects the first channel if the given channel isn't found. - */ +/// Selects a channel in the channel combo box given a channel number, +/// or selects the first channel if the given channel isn't found. void DlgPrefSoundItem::setChannel(unsigned int channelBase, unsigned int channels) { // Because QComboBox supports QPoint natively (via QVariant) we use a QPoint @@ -278,9 +258,7 @@ void DlgPrefSoundItem::setChannel(unsigned int channelBase, } } -/** - * Checks that a given device can act as a source/input for our type. - */ +/// Checks that a given device can act as a source/input for our type. int DlgPrefSoundItem::hasSufficientChannels(const SoundDevice& device) const { unsigned char needed(AudioPath::minChannelsForType(m_type)); diff --git a/src/soundio/soundmanagerutil.cpp b/src/soundio/soundmanagerutil.cpp index 573193f2ae9..93b292ed81b 100644 --- a/src/soundio/soundmanagerutil.cpp +++ b/src/soundio/soundmanagerutil.cpp @@ -2,36 +2,28 @@ #include "engine/channels/enginechannel.h" -/** - * Constructs a ChannelGroup. - * @param channelBase the first channel in the group. - * @param channels the number of channels. - */ +/// Constructs a ChannelGroup. +/// @param channelBase the first channel in the group. +/// @param channels the number of channels. ChannelGroup::ChannelGroup(unsigned char channelBase, unsigned char channels) : m_channelBase(channelBase) , m_channels(channels) { } -/** - * @return This ChannelGroup's base channel - */ +/// @return This ChannelGroup's base channel unsigned char ChannelGroup::getChannelBase() const { return m_channelBase; } -/** - * @return The number of channels in this ChannelGroup - */ +/// @return The number of channels in this ChannelGroup unsigned char ChannelGroup::getChannelCount() const { return m_channels; } -/** - * Checks if another ChannelGroup shares channels with this one. - * @param other the other ChannelGroup to check for a clash with. - * @return true if the other and this ChannelGroup share any channels, - * false otherwise. - */ +/// Checks if another ChannelGroup shares channels with this one. +/// @param other the other ChannelGroup to check for a clash with. +/// @return true if the other and this ChannelGroup share any channels, +/// false otherwise. bool ChannelGroup::clashesWith(const ChannelGroup &other) const { if (m_channels == 0 || other.m_channels == 0) { return false; // can't clash if there are no channels in use @@ -44,59 +36,45 @@ bool ChannelGroup::clashesWith(const ChannelGroup &other) const { || m_channelBase == other.m_channelBase; } -/** - * Constructs an AudioPath object (must be called by a child class's - * constructor, AudioPath is abstract). - * @param channelBase the first channel on a sound device used by this AudioPath. - * @param channels the number of channels used. - */ +/// Constructs an AudioPath object (must be called by a child class's +/// constructor, AudioPath is abstract). +/// @param channelBase the first channel on a sound device used by this AudioPath. +/// @param channels the number of channels used. AudioPath::AudioPath(unsigned char channelBase, unsigned char channels) : m_channelGroup(channelBase, channels), m_type(AudioPathType::Invalid), m_index(0) { } -/** - * @return This AudioPath's type - */ +/// @return This AudioPath's type AudioPathType AudioPath::getType() const { return m_type; } -/** - * @return This AudioPath's ChannelGroup instance. - */ +/// @return This AudioPath's ChannelGroup instance. ChannelGroup AudioPath::getChannelGroup() const { return m_channelGroup; } -/** - * @return This AudioPath's index, or 0 if this AudioPath isn't indexable. - */ +/// @return This AudioPath's index, or 0 if this AudioPath isn't indexable. unsigned char AudioPath::getIndex() const { return m_index; } -/** - * Checks if this AudioPath's channels clash with another's - * (see ChannelGroup::clashesWith). - */ +/// Checks if this AudioPath's channels clash with another's +/// (see ChannelGroup::clashesWith). bool AudioPath::channelsClash(const AudioPath &other) const { return m_channelGroup.clashesWith(other.m_channelGroup); } -/** - * Returns a string describing the AudioPath for user benefit. - */ +/// Returns a string describing the AudioPath for user benefit. QString AudioPath::getString() const { return getTrStringFromType(m_type, m_index); } -/** - * Returns a string given an AudioPathType. - * @note This method is static. - * @note For user-facing usage, see getTrStringFromType - */ +/// Returns a string given an AudioPathType. +/// @note This method is static. +/// @note For user-facing usage, see getTrStringFromType QString AudioPath::getStringFromType(AudioPathType type) { switch (type) { case AudioPathType::Main: @@ -128,10 +106,8 @@ QString AudioPath::getStringFromType(AudioPathType type) { return QObject::tr("Unknown path type %1").arg(static_cast(type)); } -/** - * Returns a translated string given an AudioPathType. - * @note This method is static. - */ +/// Returns a translated string given an AudioPathType. +/// @note This method is static. QString AudioPath::getTrStringFromType(AudioPathType type, unsigned char index) { switch (type) { case AudioPathType::Invalid: @@ -173,10 +149,8 @@ QString AudioPath::getTrStringFromType(AudioPathType type, unsigned char index) return QObject::tr("Unknown path type %1").arg(static_cast(type)); } -/** - * Returns an AudioPathType given a string. - * @note This method is static. - */ +/// Returns an AudioPathType given a string. +/// @note This method is static. AudioPathType AudioPath::getTypeFromString(QString string) { string = string.toLower(); if (string == AudioPath::getStringFromType(AudioPathType::Main).toLower()) { @@ -202,10 +176,8 @@ AudioPathType AudioPath::getTypeFromString(QString string) { } } -/** - * Defines whether or not an AudioPathType can be indexed. - * @note This method is static. - */ +/// Defines whether or not an AudioPathType can be indexed. +/// @note This method is static. bool AudioPath::isIndexed(AudioPathType type) { switch (type) { case AudioPathType::Bus: @@ -220,10 +192,8 @@ bool AudioPath::isIndexed(AudioPathType type) { return false; } -/** - * Returns an AudioPathType given an int. - * @note This method is static. - */ +/// Returns an AudioPathType given an int. +/// @note This method is static. AudioPathType AudioPath::getTypeFromInt(int typeInt) { if (typeInt < 0 || typeInt >= static_cast(AudioPathType::Invalid)) { return AudioPathType::Invalid; @@ -247,9 +217,7 @@ unsigned char AudioPath::maxChannelsForType(AudioPathType type) { return 2; } -/** - * Constructs an AudioOutput. - */ +/// Constructs an AudioOutput. AudioOutput::AudioOutput(AudioPathType type, unsigned char channelBase, unsigned char channels, @@ -264,10 +232,8 @@ AudioOutput::AudioOutput(AudioPathType type, } } -/** - * Writes this AudioOutput's data to an XML element, preallocated from an XML - * DOM document. - */ +/// Writes this AudioOutput's data to an XML element, preallocated from an XML +/// DOM document. QDomElement AudioOutput::toXML(QDomElement *element) const { element->setTagName("output"); element->setAttribute("type", AudioPath::getStringFromType(m_type)); @@ -277,10 +243,8 @@ QDomElement AudioOutput::toXML(QDomElement *element) const { return *element; } -/** - * Constructs and returns an AudioOutput given an XML element representing it. - * @note This method is static. - */ +/// Constructs and returns an AudioOutput given an XML element representing it. +/// @note This method is static. AudioOutput AudioOutput::fromXML(const QDomElement &xml) { AudioPathType type(AudioPath::getTypeFromString(xml.attribute("type"))); unsigned int index(xml.attribute("index", "0").toUInt()); @@ -296,11 +260,9 @@ AudioOutput AudioOutput::fromXML(const QDomElement &xml) { return AudioOutput(type, channel, channels, index); } -//static -/** - * Enumerates the AudioPathTypes supported by AudioOutput. - * @note This method is static. - */ +// static +/// Enumerates the AudioPathTypes supported by AudioOutput. +/// @note This method is static. QList AudioOutput::getSupportedTypes() { return QList{ AudioPathType::Main, @@ -312,10 +274,8 @@ QList AudioOutput::getSupportedTypes() { }; } -/** - * Implements setting the type of an AudioOutput, using - * AudioOutput::getSupportedTypes. - */ +/// Implements setting the type of an AudioOutput, using +/// AudioOutput::getSupportedTypes. void AudioOutput::setType(AudioPathType type) { if (AudioOutput::getSupportedTypes().contains(type)) { m_type = type; @@ -324,9 +284,7 @@ void AudioOutput::setType(AudioPathType type) { } } -/** - * Constructs an AudioInput. - */ +/// Constructs an AudioInput. AudioInput::AudioInput(AudioPathType type, unsigned char channelBase, unsigned char channels, @@ -345,10 +303,8 @@ AudioInput::~AudioInput() { } -/** - * Writes this AudioInput's data to an XML element, preallocated from an XML - * DOM document. - */ +/// Writes this AudioInput's data to an XML element, preallocated from an XML +/// DOM document. QDomElement AudioInput::toXML(QDomElement *element) const { element->setTagName("input"); element->setAttribute("type", AudioPath::getStringFromType(m_type)); @@ -358,10 +314,8 @@ QDomElement AudioInput::toXML(QDomElement *element) const { return *element; } -/** - * Constructs and returns an AudioInput given an XML element representing it. - * @note This method is static. - */ +/// Constructs and returns an AudioInput given an XML element representing it. +/// @note This method is static. AudioInput AudioInput::fromXML(const QDomElement &xml) { AudioPathType type(AudioPath::getTypeFromString(xml.attribute("type"))); unsigned int index(xml.attribute("index", "0").toUInt()); @@ -377,10 +331,8 @@ AudioInput AudioInput::fromXML(const QDomElement &xml) { return AudioInput(type, channel, channels, index); } -/** - * Enumerates the AudioPathTypes supported by AudioInput. - * @note This method is static. - */ +/// Enumerates the AudioPathTypes supported by AudioInput. +/// @note This method is static. QList AudioInput::getSupportedTypes() { return QList{ #ifdef __VINYLCONTROL__ @@ -394,10 +346,8 @@ QList AudioInput::getSupportedTypes() { }; } -/** - * Implements setting the type of an AudioInput, using - * AudioInput::getSupportedTypes. - */ +/// Implements setting the type of an AudioInput, using +/// AudioInput::getSupportedTypes. void AudioInput::setType(AudioPathType type) { if (AudioInput::getSupportedTypes().contains(type)) { m_type = type; From 427bf396b097852d732802435640934e65c3bc3a Mon Sep 17 00:00:00 2001 From: ronso0 Date: Wed, 23 Aug 2023 01:02:17 +0200 Subject: [PATCH 02/41] SoundDeviceItem: rename member var, invert bool/meaning --- src/preferences/dialog/dlgprefsounditem.cpp | 27 +++++++++++---------- src/preferences/dialog/dlgprefsounditem.h | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/preferences/dialog/dlgprefsounditem.cpp b/src/preferences/dialog/dlgprefsounditem.cpp index d2f2250df0a..6a9e62f1f8b 100644 --- a/src/preferences/dialog/dlgprefsounditem.cpp +++ b/src/preferences/dialog/dlgprefsounditem.cpp @@ -23,7 +23,7 @@ DlgPrefSoundItem::DlgPrefSoundItem( m_type(type), m_index(index), m_isInput(isInput), - m_inhibitSettingChanged(false) { + m_emitSettingChanged(true) { setupUi(this); typeLabel->setText(AudioPath::getTrStringFromType(type, index)); @@ -119,13 +119,13 @@ void DlgPrefSoundItem::deviceChanged(int index) { } } emitAndReturn: - if (m_inhibitSettingChanged == false) { + if (m_emitSettingChanged) { emit settingChanged(); } } void DlgPrefSoundItem::channelChanged() { - if (m_inhibitSettingChanged == false) { + if (m_emitSettingChanged) { emit settingChanged(); } } @@ -230,13 +230,13 @@ SoundDevicePointer DlgPrefSoundItem::getDevice() const { void DlgPrefSoundItem::setDevice(const SoundDeviceId& device) { int index = deviceComboBox->findData(QVariant::fromValue(device)); //qDebug() << "DlgPrefSoundItem::setDevice" << device; - if (index != -1) { - m_inhibitSettingChanged = true; - deviceComboBox->setCurrentIndex(index); - m_inhibitSettingChanged = false; - } else { + if (index == -1) { deviceComboBox->setCurrentIndex(0); // None emit settingChanged(); + } else { + m_emitSettingChanged = false; + deviceComboBox->setCurrentIndex(index); + m_emitSettingChanged = true; } } @@ -248,13 +248,14 @@ void DlgPrefSoundItem::setChannel(unsigned int channelBase, // to store the channel info. x is the channel base and y is the channel // count. int index = channelComboBox->findData(QPoint(channelBase, channels)); - if (index != -1) { - m_inhibitSettingChanged = true; - channelComboBox->setCurrentIndex(index); - m_inhibitSettingChanged = false; - } else { + if (index == -1) { + // channel(s) not found channelComboBox->setCurrentIndex(0); // 1 emit settingChanged(); + } else { + m_emitSettingChanged = false; + channelComboBox->setCurrentIndex(index); + m_emitSettingChanged = true; } } diff --git a/src/preferences/dialog/dlgprefsounditem.h b/src/preferences/dialog/dlgprefsounditem.h index 73a3edd2c26..3f369db5756 100644 --- a/src/preferences/dialog/dlgprefsounditem.h +++ b/src/preferences/dialog/dlgprefsounditem.h @@ -50,5 +50,5 @@ class DlgPrefSoundItem : public QWidget, public Ui::DlgPrefSoundItem { // Because QVariant supports QPoint natively we use a QPoint to store the // channel info. x is the channel base and y is the channel count. QPoint m_savedChannel; - bool m_inhibitSettingChanged; + bool m_emitSettingChanged; }; From b57201ef1215ffd43bb5b93ac2c2ece2cc01c02b Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sat, 4 Nov 2023 02:33:08 +0100 Subject: [PATCH 03/41] change SKIN_WARNING to show the skin file:line first, then c++ context --- src/skin/legacy/legacyskinparser.cpp | 159 +++++++++++++------- src/skin/legacy/skincontext.cpp | 21 ++- src/skin/legacy/skincontext.h | 8 +- src/widget/wcombobox.cpp | 6 +- src/widget/weffectbuttonparametername.cpp | 6 +- src/widget/weffectchain.cpp | 6 +- src/widget/weffectchainpresetbutton.cpp | 6 +- src/widget/weffectchainpresetselector.cpp | 6 +- src/widget/weffectknobparametername.cpp | 6 +- src/widget/weffectname.cpp | 6 +- src/widget/weffectparameterknob.cpp | 2 +- src/widget/weffectparameterknobcomposed.cpp | 2 +- src/widget/weffectpushbutton.cpp | 2 +- src/widget/weffectselector.cpp | 6 +- src/widget/whotcuebutton.cpp | 7 +- src/widget/wpushbutton.cpp | 10 +- src/widget/wsingletoncontainer.cpp | 12 +- src/widget/wsplitter.cpp | 32 ++-- src/widget/wvumeterbase.cpp | 6 +- 19 files changed, 191 insertions(+), 118 deletions(-) diff --git a/src/skin/legacy/legacyskinparser.cpp b/src/skin/legacy/legacyskinparser.cpp index 7f41d448bbd..c61cdceed38 100644 --- a/src/skin/legacy/legacyskinparser.cpp +++ b/src/skin/legacy/legacyskinparser.cpp @@ -356,9 +356,10 @@ QWidget* LegacySkinParser::parseSkin(const QString& skinPath, QWidget* pParent) bool ok = false; double value = QString::fromStdString(attribute.value()).toDouble(&ok); if (!ok) { - SKIN_WARNING(skinDocument, *m_pContext) - << "Error reading double value from skin attribute: " - << QString::fromStdString(attribute.value()); + SKIN_WARNING(skinDocument, + *m_pContext, + QStringLiteral("Failed reading double value from skin attribute: %1") + .arg(QString::fromStdString(attribute.value()))); continue; } @@ -411,10 +412,12 @@ QWidget* LegacySkinParser::parseSkin(const QString& skinPath, QWidget* pParent) QList widgets = parseNode(skinDocument); if (widgets.empty()) { - SKIN_WARNING(skinDocument, *m_pContext) << "Skin produced no widgets!"; + SKIN_WARNING(skinDocument, *m_pContext, QStringLiteral("Skin produced no widgets!")); return nullptr; } else if (widgets.size() > 1) { - SKIN_WARNING(skinDocument, *m_pContext) << "Skin produced more than 1 widget!"; + SKIN_WARNING(skinDocument, + *m_pContext, + QStringLiteral("Skin produced more than 1 widget!")); } return widgets[0]; } @@ -619,8 +622,10 @@ QList LegacySkinParser::parseNode(const QDomElement& node) { } else if (nodeName == "SingletonContainer") { result = wrapWidget(parseStandardWidget(node)); } else { - SKIN_WARNING(node, *m_pContext) << "Invalid node name in skin:" - << nodeName; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("Invalid node name in skin: %1") + .arg(nodeName)); } if (sDebug) { @@ -673,14 +678,19 @@ QWidget* LegacySkinParser::parseScrollable(const QDomElement& node) { if (!childrenNode.isNull()) { QDomNodeList childNodes = childrenNode.childNodes(); if (childNodes.count() != 1) { - SKIN_WARNING(node, *m_pContext) << "Scrollables must have exactly one child"; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("Scrollables must have exactly one child")); } QDomNode childnode = childNodes.at(0); if (childnode.isElement()) { QList children = parseNode(childnode.toElement()); if (children.count() != 1) { - SKIN_WARNING(node, *m_pContext) << "Scrollables must have exactly one child"; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral( + "Scrollables must have exactly one child")); } else if (children.at(0) != nullptr) { pScrollable->setWidget(children.at(0)); } @@ -781,15 +791,19 @@ QWidget* LegacySkinParser::parseWidgetStack(const QDomElement& node) { QList child_widgets = parseNode(element); if (child_widgets.empty()) { - SKIN_WARNING(node, *m_pContext) - << "WidgetStack child produced no widget."; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral( + "WidgetStack child produced no widget.")); continue; } if (child_widgets.size() > 1) { - SKIN_WARNING(node, *m_pContext) - << "WidgetStack child produced multiple widgets." - << "All but the first are ignored."; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral( + "WidgetStack child produced multiple widgets. " + "All but the first are ignored.")); } QWidget* pChild = child_widgets[0]; @@ -849,15 +863,19 @@ QWidget* LegacySkinParser::parseSizeAwareStack(const QDomElement& node) { QList children = parseNode(element); if (children.empty()) { - SKIN_WARNING(node, *m_pContext) - << "SizeAwareStack child produced no widget."; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral( + "SizeAwareStack child produced no widget.")); continue; } if (children.size() > 1) { - SKIN_WARNING(node, *m_pContext) - << "SizeAwareStack child produced multiple widgets." - << "All but the first are ignored."; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral( + "SizeAwareStack child produced multiple " + "widgets. All but the first are ignored.")); } QWidget* pChild = children[0]; @@ -958,7 +976,7 @@ QWidget* LegacySkinParser::parseOverview(const QDomElement& node) { QString group = lookupNodeGroup(node); BaseTrackPlayer* pPlayer = m_pPlayerManager->getPlayer(group); if (!pPlayer) { - SKIN_WARNING(node, *m_pContext) << "No player found for group:" << group; + SKIN_WARNING(node, *m_pContext, QStringLiteral("No player found for group: %1").arg(group)); return nullptr; } @@ -1004,7 +1022,7 @@ QWidget* LegacySkinParser::parseVisual(const QDomElement& node) { QString group = lookupNodeGroup(node); BaseTrackPlayer* pPlayer = m_pPlayerManager->getPlayer(group); if (!pPlayer) { - SKIN_WARNING(node, *m_pContext) << "No player found for group:" << group; + SKIN_WARNING(node, *m_pContext, QStringLiteral("No player found for group: %1").arg(group)); return nullptr; } @@ -1049,7 +1067,7 @@ QWidget* LegacySkinParser::parseText(const QDomElement& node) { QString group = lookupNodeGroup(node); BaseTrackPlayer* pPlayer = m_pPlayerManager->getPlayer(group); if (!pPlayer) { - SKIN_WARNING(node, *m_pContext) << "No player found for group:" << group; + SKIN_WARNING(node, *m_pContext, QStringLiteral("No player found for group:").arg(group)); return nullptr; } @@ -1079,7 +1097,7 @@ QWidget* LegacySkinParser::parseTrackProperty(const QDomElement& node) { QString group = lookupNodeGroup(node); BaseTrackPlayer* pPlayer = m_pPlayerManager->getPlayer(group); if (!pPlayer) { - SKIN_WARNING(node, *m_pContext) << "No player found for group:" << group; + SKIN_WARNING(node, *m_pContext, QStringLiteral("No player found for group: %1").arg(group)); return nullptr; } @@ -1119,7 +1137,7 @@ QWidget* LegacySkinParser::parseTrackWidgetGroup(const QDomElement& node) { QString group = lookupNodeGroup(node); BaseTrackPlayer* pPlayer = m_pPlayerManager->getPlayer(group); if (!pPlayer) { - SKIN_WARNING(node, *m_pContext) << "No player found for group:" << group; + SKIN_WARNING(node, *m_pContext, QStringLiteral("No player found for group: %1").arg(group)); return nullptr; } @@ -1161,7 +1179,7 @@ QWidget* LegacySkinParser::parseStarRating(const QDomElement& node) { QString group = lookupNodeGroup(node); BaseTrackPlayer* pPlayer = m_pPlayerManager->getPlayer(group); if (!pPlayer) { - SKIN_WARNING(node, *m_pContext) << "No player found for group:" << group; + SKIN_WARNING(node, *m_pContext, QStringLiteral("No player found for group: %1").arg(group)); return nullptr; } @@ -1298,7 +1316,7 @@ QWidget* LegacySkinParser::parseSpinny(const QDomElement& node) { QString group = lookupNodeGroup(node); BaseTrackPlayer* pPlayer = m_pPlayerManager->getPlayer(group); if (!pPlayer) { - SKIN_WARNING(node, *m_pContext) << "No player found for group:" << group; + SKIN_WARNING(node, *m_pContext, QStringLiteral("No player found for group: %1").arg(group)); return nullptr; } // Note: For some reasons on X11 we need to create the widget without a parent to avoid to @@ -1443,7 +1461,9 @@ QWidget* LegacySkinParser::parseCoverArt(const QDomElement& node) { if (!group.isEmpty()) { pPlayer = m_pPlayerManager->getPlayer(group); if (!pPlayer) { - SKIN_WARNING(node, *m_pContext) << "No player found for group:" << group; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("No player found for group: %1").arg(group)); return nullptr; } } @@ -1472,14 +1492,17 @@ QWidget* LegacySkinParser::parseCoverArt(const QDomElement& node) { void LegacySkinParser::parseSingletonDefinition(const QDomElement& node) { QString objectName = m_pContext->selectString(node, "ObjectName"); if (objectName.isEmpty()) { - SKIN_WARNING(node, *m_pContext) - << "SingletonDefinition requires an ObjectName"; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("SingletonDefinition requires an ObjectName")); } QDomNode childrenNode = m_pContext->selectNode(node, "Children"); if (childrenNode.isNull()) { - SKIN_WARNING(node, *m_pContext) - << "SingletonDefinition requires a Children tag with one child"; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("SingletonDefinition requires a Children tag " + "with one child")); } // Descend children, taking the first valid element. @@ -1493,27 +1516,30 @@ void LegacySkinParser::parseSingletonDefinition(const QDomElement& node) { } if (child_node.isNull()) { - SKIN_WARNING(node, *m_pContext) - << "SingletonDefinition Children node is empty"; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("SingletonDefinition Children node is empty")); return; } QDomElement element = child_node.toElement(); QList child_widgets = parseNode(element); if (child_widgets.empty()) { - SKIN_WARNING(node, *m_pContext) - << "SingletonDefinition child produced no widget."; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral( + "SingletonDefinition child produced no widget.")); return; } else if (child_widgets.size() > 1) { - SKIN_WARNING(node, *m_pContext) - << "SingletonDefinition child produced multiple widgets." - << "All but the first are ignored."; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("SingletonDefinition child produced multiple " + "widgets. All but the first are ignored.")); } QWidget* pChild = child_widgets[0]; if (pChild == nullptr) { - SKIN_WARNING(node, *m_pContext) - << "SingletonDefinition child widget is NULL"; + SKIN_WARNING(node, *m_pContext, QStringLiteral("SingletonDefinition child widget is NULL")); return; } @@ -1712,9 +1738,11 @@ QDomElement LegacySkinParser::loadTemplate(const QString& path) { QList LegacySkinParser::parseTemplate(const QDomElement& node) { if (!node.hasAttribute("src")) { - SKIN_WARNING(node, *m_pContext) - << "Template instantiation without src attribute:" - << node.text(); + SKIN_WARNING(node, + *m_pContext, + QStringLiteral( + "Template instantiation without src attribute: %1") + .arg(node.text())); return QList(); } @@ -1726,7 +1754,10 @@ QList LegacySkinParser::parseTemplate(const QDomElement& node) { QDomElement templateNode = loadTemplate(path); if (templateNode.isNull()) { - SKIN_WARNING(node, *m_pContext) << "Template instantiation for template failed:" << path; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("Template instantiation for template failed: %1") + .arg(path)); m_pContext = std::move(pOldContext); return QList(); } @@ -1943,9 +1974,11 @@ void LegacySkinParser::setupSize(const QDomNode& node, QWidget* pWidget) { } else if (y >= 0 && x == -1) { pWidget->setMinimumHeight(y); } else if (x != -1 || y != -1) { - SKIN_WARNING(node, *m_pContext) - << "Could not parse widget MinimumSize:" << size; - } + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("Could not parse widget MinimumSize: %1") + .arg(size)); + } } @@ -1965,8 +1998,10 @@ void LegacySkinParser::setupSize(const QDomNode& node, QWidget* pWidget) { } else if (y >= 0 && x == -1) { pWidget->setMaximumHeight(y); } else if (x != -1 || y != -1) { - SKIN_WARNING(node, *m_pContext) - << "Could not parse widget MaximumSize:" << size; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("Could not parse widget MaximumSize: %1") + .arg(size)); } } @@ -1982,16 +2017,20 @@ void LegacySkinParser::setupSize(const QDomNode& node, QWidget* pWidget) { if (parseSizePolicy(&xs, &horizontalPolicy)) { sizePolicy.setHorizontalPolicy(horizontalPolicy); } else if (!xs.isEmpty()) { - SKIN_WARNING(node, *m_pContext) - << "Could not parse horizontal size policy:" << xs; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("Could not parse horizontal size policy: %1") + .arg(xs)); } QSizePolicy::Policy verticalPolicy; if (parseSizePolicy(&ys, &verticalPolicy)) { sizePolicy.setVerticalPolicy(verticalPolicy); } else if (!ys.isEmpty()) { - SKIN_WARNING(node, *m_pContext) - << "Could not parse vertical size policy:" << ys; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("Could not parse vertical size policy: %1") + .arg(ys)); } hasSizePolicyNode = true; @@ -2164,8 +2203,10 @@ void LegacySkinParser::setupBaseWidget(const QDomNode& node, } else if (!toolTipId.isEmpty()) { // Only warn if there was a tooltip ID specified and no tooltip for // that ID. - SKIN_WARNING(node, *m_pContext) - << "Invalid in skin.xml:" << toolTipId; + SKIN_WARNING(node, + *m_pContext, + QStringLiteral("Invalid in skin.xml: %1") + .arg(toolTipId)); } } } @@ -2275,9 +2316,11 @@ void LegacySkinParser::setupConnections(const QDomNode& node, WBaseWidget* pWidg if (nodeValue) { emitOption = ControlParameterWidgetConnection::EMIT_ON_PRESS_AND_RELEASE; } else { - SKIN_WARNING(con, *m_pContext) - << "LegacySkinParser::setupConnections():" - << "Setting EmitOnPressAndRelease to false is not necessary."; + SKIN_WARNING(con, + *m_pContext, + QStringLiteral("LegacySkinParser::setupConnections(" + "): Setting EmitOnPressAndRelease " + "to false is not necessary.")); } } else { // default: diff --git a/src/skin/legacy/skincontext.cpp b/src/skin/legacy/skincontext.cpp index 06c89681952..7dfbbcaeb59 100644 --- a/src/skin/legacy/skincontext.cpp +++ b/src/skin/legacy/skincontext.cpp @@ -135,14 +135,19 @@ PixmapSource SkinContext::getPixmapSourceInner(const QString& filename) const { return PixmapSource(); } -QDebug SkinContext::logWarning(const char* file, const int line, - const QDomNode& node) const { - return qWarning() << QString("%1:%2 SKIN ERROR at %3:%4 <%5>:") - .arg(file, QString::number(line), m_xmlPath, - QString::number(node.lineNumber()), - node.nodeName()) - .toUtf8() - .constData(); +QDebug SkinContext::logWarning(const char* file, + const int line, + const QDomNode& node, + const QString& message) const { + return qWarning() << QString("SKIN ERROR at %1:%2 <%3>: %4 | %5:%6") + .arg(m_xmlPath, + QString::number(node.lineNumber()), + node.nodeName(), + message, + file, + QString::number(line)) + .toUtf8() + .constData(); } int SkinContext::scaleToWidgetSize(QString& size) const { diff --git a/src/skin/legacy/skincontext.h b/src/skin/legacy/skincontext.h index d8d353003b3..9817f022bb2 100644 --- a/src/skin/legacy/skincontext.h +++ b/src/skin/legacy/skincontext.h @@ -15,7 +15,8 @@ #include "widget/wpixmapstore.h" #include "widget/wsingletoncontainer.h" -#define SKIN_WARNING(node, context) (context).logWarning(__FILE__, __LINE__, (node)) +#define SKIN_WARNING(node, context, message) \ + (context).logWarning(__FILE__, __LINE__, (node), (message)) // A class for managing the current context/environment when processing a // skin. Used hierarchically by LegacySkinParser to create new contexts and @@ -225,7 +226,10 @@ class SkinContext { return defaultDrawMode; } - QDebug logWarning(const char* file, const int line, const QDomNode& node) const; + QDebug logWarning(const char* file, + const int line, + const QDomNode& node, + const QString& message) const; void defineSingleton(const QString& objectName, QWidget* widget) { m_pSharedState->singletons.insertSingleton(objectName, widget); diff --git a/src/widget/wcombobox.cpp b/src/widget/wcombobox.cpp index 7fc52220463..11b917823fd 100644 --- a/src/widget/wcombobox.cpp +++ b/src/widget/wcombobox.cpp @@ -25,8 +25,10 @@ void WComboBox::setup(const QDomNode& node, const SkinContext& context) { QString icon = context.selectString(state, "Icon"); addItem(QIcon(icon), text, QVariant(iState)); } else { - SKIN_WARNING(state, context) - << "WComboBox ignoring without node."; + SKIN_WARNING(state, + context, + QStringLiteral("WComboBox ignoring without " + " node.")); } } state = state.nextSibling(); diff --git a/src/widget/weffectbuttonparametername.cpp b/src/widget/weffectbuttonparametername.cpp index 8ae4a90c388..8eb8e17ed00 100644 --- a/src/widget/weffectbuttonparametername.cpp +++ b/src/widget/weffectbuttonparametername.cpp @@ -22,8 +22,10 @@ void WEffectButtonParameterName::setup(const QDomNode& node, const SkinContext& EffectWidgetUtils::getButtonParameterSlotFromNode( node, context, m_pEffectSlot); VERIFY_OR_DEBUG_ASSERT(m_pParameterSlot) { - SKIN_WARNING(node, context) - << "EffectButtonParameter node could not attach to effect parameter"; + SKIN_WARNING(node, + context, + QStringLiteral("EffectButtonParameter node could not attach to " + "effect parameter")); } setEffectParameterSlot(m_pParameterSlot); } diff --git a/src/widget/weffectchain.cpp b/src/widget/weffectchain.cpp index 6ec1216b71a..a4275b2c3d7 100644 --- a/src/widget/weffectchain.cpp +++ b/src/widget/weffectchain.cpp @@ -19,8 +19,10 @@ void WEffectChain::setup(const QDomNode& node, const SkinContext& context) { if (pChainSlot) { setEffectChain(pChainSlot); } else { - SKIN_WARNING(node, context) - << "EffectChain node could not attach to effect chain slot."; + SKIN_WARNING(node, + context, + QStringLiteral("EffectChain node could not attach to effect " + "chain slot.")); } } diff --git a/src/widget/weffectchainpresetbutton.cpp b/src/widget/weffectchainpresetbutton.cpp index 3941259464a..9943d0e1a39 100644 --- a/src/widget/weffectchainpresetbutton.cpp +++ b/src/widget/weffectchainpresetbutton.cpp @@ -26,8 +26,10 @@ void WEffectChainPresetButton::setup(const QDomNode& node, const SkinContext& co m_pChain = EffectWidgetUtils::getEffectChainFromNode( node, context, m_pEffectsManager); VERIFY_OR_DEBUG_ASSERT(m_pChain) { - SKIN_WARNING(node, context) - << "EffectChainPresetButton node could not attach to effect chain"; + SKIN_WARNING(node, + context, + QStringLiteral("EffectChainPresetButton node could not attach " + "to effect chain")); return; } connect(m_pChain.get(), diff --git a/src/widget/weffectchainpresetselector.cpp b/src/widget/weffectchainpresetselector.cpp index bfed3191968..7a61c8b7e1f 100644 --- a/src/widget/weffectchainpresetselector.cpp +++ b/src/widget/weffectchainpresetselector.cpp @@ -31,8 +31,10 @@ void WEffectChainPresetSelector::setup(const QDomNode& node, const SkinContext& node, context, m_pEffectsManager); VERIFY_OR_DEBUG_ASSERT(m_pChain != nullptr) { - SKIN_WARNING(node, context) - << "EffectChainPresetSelector node could not attach to EffectChain"; + SKIN_WARNING(node, + context, + QStringLiteral("EffectChainPresetSelector node could not " + "attach to EffectChain")); return; } diff --git a/src/widget/weffectknobparametername.cpp b/src/widget/weffectknobparametername.cpp index 66004391eac..157e3eb5768 100644 --- a/src/widget/weffectknobparametername.cpp +++ b/src/widget/weffectknobparametername.cpp @@ -22,8 +22,10 @@ void WEffectKnobParameterName::setup(const QDomNode& node, const SkinContext& co EffectWidgetUtils::getParameterSlotFromNode( node, context, m_pEffectSlot); VERIFY_OR_DEBUG_ASSERT(m_pParameterSlot) { - SKIN_WARNING(node, context) - << "EffectParameter node could not attach to effect parameter"; + SKIN_WARNING(node, + context, + QStringLiteral("EffectParameter node could not attach to " + "effect parameter")); } setEffectParameterSlot(m_pParameterSlot); } diff --git a/src/widget/weffectname.cpp b/src/widget/weffectname.cpp index 1984449d701..b5184764146 100644 --- a/src/widget/weffectname.cpp +++ b/src/widget/weffectname.cpp @@ -22,8 +22,10 @@ void WEffectName::setup(const QDomNode& node, const SkinContext& context) { if (pEffectSlot) { setEffectSlot(pEffectSlot); } else { - SKIN_WARNING(node, context) - << "EffectName node could not attach to effect slot."; + SKIN_WARNING(node, + context, + QStringLiteral( + "EffectName node could not attach to effect slot.")); } } diff --git a/src/widget/weffectparameterknob.cpp b/src/widget/weffectparameterknob.cpp index d77b9b491ae..656402746c0 100644 --- a/src/widget/weffectparameterknob.cpp +++ b/src/widget/weffectparameterknob.cpp @@ -12,7 +12,7 @@ void WEffectParameterKnob::setup(const QDomNode& node, const SkinContext& contex m_pEffectParameterSlot = EffectWidgetUtils::getParameterSlotFromNode( node, context, pEffectSlot); VERIFY_OR_DEBUG_ASSERT(m_pEffectParameterSlot) { - SKIN_WARNING(node, context) << "Could not find effect parameter slot"; + SKIN_WARNING(node, context, QStringLiteral("Could not find effect parameter slot")); return; } connect(m_pEffectParameterSlot.data(), diff --git a/src/widget/weffectparameterknobcomposed.cpp b/src/widget/weffectparameterknobcomposed.cpp index aba1e6a9c35..5b7d516bafc 100644 --- a/src/widget/weffectparameterknobcomposed.cpp +++ b/src/widget/weffectparameterknobcomposed.cpp @@ -12,7 +12,7 @@ void WEffectParameterKnobComposed::setup(const QDomNode& node, const SkinContext m_pEffectParameterSlot = EffectWidgetUtils::getParameterSlotFromNode( node, context, pEffectSlot); VERIFY_OR_DEBUG_ASSERT(m_pEffectParameterSlot) { - SKIN_WARNING(node, context) << "Could not find effect parameter slot"; + SKIN_WARNING(node, context, QStringLiteral("Could not find effect parameter slot")); return; } connect(m_pEffectParameterSlot.data(), diff --git a/src/widget/weffectpushbutton.cpp b/src/widget/weffectpushbutton.cpp index d9a02796468..8f60ed1b0ca 100644 --- a/src/widget/weffectpushbutton.cpp +++ b/src/widget/weffectpushbutton.cpp @@ -23,7 +23,7 @@ void WEffectPushButton::setup(const QDomNode& node, const SkinContext& context) m_pEffectParameterSlot = EffectWidgetUtils::getButtonParameterSlotFromNode( node, context, pEffectSlot); if (!m_pEffectParameterSlot) { - SKIN_WARNING(node, context) << "Could not find effect parameter slot"; + SKIN_WARNING(node, context, QStringLiteral("Could not find effect parameter slot")); DEBUG_ASSERT(false); } connect(m_pEffectParameterSlot.data(), diff --git a/src/widget/weffectselector.cpp b/src/widget/weffectselector.cpp index ab1e21170a0..ba29aab3123 100644 --- a/src/widget/weffectselector.cpp +++ b/src/widget/weffectselector.cpp @@ -42,8 +42,10 @@ void WEffectSelector::setup(const QDomNode& node, const SkinContext& context) { this, &WEffectSelector::slotEffectSelected); } else { - SKIN_WARNING(node, context) - << "EffectSelector node could not attach to effect slot."; + SKIN_WARNING(node, + context, + QStringLiteral("EffectSelector node could not attach to effect " + "slot.")); } populate(); diff --git a/src/widget/whotcuebutton.cpp b/src/widget/whotcuebutton.cpp index 98bad972db1..a48630692e7 100644 --- a/src/widget/whotcuebutton.cpp +++ b/src/widget/whotcuebutton.cpp @@ -33,7 +33,10 @@ void WHotcueButton::setup(const QDomNode& node, const SkinContext& context) { if (ok && hotcue > 0) { m_hotcue = hotcue - 1; } else { - SKIN_WARNING(node, context) << "Hotcue value invalid"; + SKIN_WARNING(node, + context, + QStringLiteral("Hotcue index '%1' invalid") + .arg(context.selectString(node, QStringLiteral("Hotcue")))); } bool okay; @@ -84,7 +87,7 @@ void WHotcueButton::setup(const QDomNode& node, const SkinContext& context) { QDomNode con = context.selectNode(node, QStringLiteral("Connection")); if (!con.isNull()) { - SKIN_WARNING(node, context) << "Additional Connections are not allowed"; + SKIN_WARNING(node, context, QStringLiteral("Additional Connections are not allowed")); } } diff --git a/src/widget/wpushbutton.cpp b/src/widget/wpushbutton.cpp index dd874db5a20..c13c1f9ddec 100644 --- a/src/widget/wpushbutton.cpp +++ b/src/widget/wpushbutton.cpp @@ -195,9 +195,13 @@ void WPushButton::setup(const QDomNode& node, const SkinContext& context) { if (m_rightButtonMode != ControlPushButton::PUSH && m_rightButtonMode != ControlPushButton::TOGGLE && m_rightButtonMode != ControlPushButton::TRIGGER) { - SKIN_WARNING(node, context) - << "WPushButton::setup: Connecting a Pushbutton not in PUSH, TRIGGER or TOGGLE mode is not implemented\n" - << "Please consider to set true"; + SKIN_WARNING(node, + context, + "WPushButton::setup: Connecting a Pushbutton not " + "in PUSH, TRIGGER or TOGGLE mode is not " + "implemented\n Please consider to set " + "true"); } } } diff --git a/src/widget/wsingletoncontainer.cpp b/src/widget/wsingletoncontainer.cpp index 225e2c5ce5b..a90aa5ba050 100644 --- a/src/widget/wsingletoncontainer.cpp +++ b/src/widget/wsingletoncontainer.cpp @@ -20,19 +20,19 @@ void WSingletonContainer::setup(const QDomNode& node, const SkinContext& context QDomElement containerNode = node.toElement(); QString objectName; if (!context.hasNodeSelectString(node, "ObjectName", &objectName)) { - SKIN_WARNING(node, context) - << "Need objectName attribute for Singleton tag"; + SKIN_WARNING(node, context, QStringLiteral("Need ObjectName attribute for Singleton tag")); return; } if (objectName.isEmpty()) { - SKIN_WARNING(node, context) - << "Singleton tag's ObjectName is empty"; + SKIN_WARNING(node, context, QStringLiteral("Singleton tag's ObjectName is empty")); return; } m_pWidget = context.getSingletonWidget(objectName); if (m_pWidget == nullptr) { - SKIN_WARNING(node, context) - << "Asked for an unknown singleton widget:" << objectName; + SKIN_WARNING(node, + context, + QStringLiteral("Asked for an unknown singleton widget: %1") + .arg(objectName)); } } diff --git a/src/widget/wsplitter.cpp b/src/widget/wsplitter.cpp index 61dcb8344a8..9c5667e26ef 100644 --- a/src/widget/wsplitter.cpp +++ b/src/widget/wsplitter.cpp @@ -35,22 +35,19 @@ void WSplitter::setup(const QDomNode& node, const SkinContext& context) { if (m_pConfig->exists(m_configKey)) { sizesJoined = m_pConfig->getValueString(m_configKey); - msg = "Reading .cfg file: '" - + m_configKey.group + " " - + m_configKey.item + " " - + sizesJoined - + "' does not match the number of children nodes:" - + QString::number(this->count()); + msg = "Reading .cfg file: '" + m_configKey.group + " " + + m_configKey.item + " " + sizesJoined + + "' does not match the number of children nodes:" + + QString::number(count()); ok = true; } } // nothing in mixxx.cfg? Load default values if (!ok && context.hasNodeSelectString(node, "SplitSizes", &sizesJoined)) { - msg = " for (" - + sizesJoined - + ") does not match the number of children nodes:" - + QString::number(this->count()); + msg = " for (" + sizesJoined + + ") does not match the number of children nodes:" + + QString::number(count()); } // found some value for splitsizes? @@ -64,8 +61,8 @@ void WSplitter::setup(const QDomNode& node, const SkinContext& context) { break; } } - if (sizesList.length() != this->count()) { - SKIN_WARNING(node, context) << msg; + if (sizesList.length() != count()) { + SKIN_WARNING(node, context, msg); ok = false; } if (ok) { @@ -85,12 +82,11 @@ void WSplitter::setup(const QDomNode& node, const SkinContext& context) { break; } } - if (collapsibleList.length() != this->count()) { - msg = " for (" - + collapsibleJoined - + ") does not match the number of children nodes:" - + QString::number(this->count()); - SKIN_WARNING(node, context) << msg; + if (collapsibleList.length() != count()) { + msg = " for (" + collapsibleJoined + + ") does not match the number of children nodes:" + + QString::number(count()); + SKIN_WARNING(node, context, msg); ok = false; } if (ok) { diff --git a/src/widget/wvumeterbase.cpp b/src/widget/wvumeterbase.cpp index 34216b9433c..2696a197125 100644 --- a/src/widget/wvumeterbase.cpp +++ b/src/widget/wvumeterbase.cpp @@ -80,8 +80,10 @@ void WVuMeterBase::setup(const QDomNode& node, const SkinContext& context) { if (height() < 2 || width() < 2) { // This triggers a QT bug and displays a white widget instead. // We warn here, because the skin designer may not use the affected mode. - SKIN_WARNING(node, context) - << "VuMeterBase needs to have 2 pixel in all extents to be visible on all targets."; + SKIN_WARNING(node, + context, + QStringLiteral("VuMeterBase needs to have 2 pixel in all " + "extents to be visible on all targets.")); } setFocusPolicy(Qt::NoFocus); From 72b6f1c1875ba63adb9904b7b406b1dc4624bf9c Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sun, 5 Nov 2023 22:46:48 +0100 Subject: [PATCH 04/41] debug logging: rename SKIN ERROR to 'Skin parsing failed at' --- src/skin/legacy/skincontext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skin/legacy/skincontext.cpp b/src/skin/legacy/skincontext.cpp index 7dfbbcaeb59..6cc751336a7 100644 --- a/src/skin/legacy/skincontext.cpp +++ b/src/skin/legacy/skincontext.cpp @@ -139,7 +139,7 @@ QDebug SkinContext::logWarning(const char* file, const int line, const QDomNode& node, const QString& message) const { - return qWarning() << QString("SKIN ERROR at %1:%2 <%3>: %4 | %5:%6") + return qWarning() << QString("Skin parsing failed at %1:%2 <%3>: %4 | %5:%6") .arg(m_xmlPath, QString::number(node.lineNumber()), node.nodeName(), From c15cc67a33dac859f5cf15ce28dceac651806b67 Mon Sep 17 00:00:00 2001 From: djantti Date: Fri, 24 Nov 2023 02:21:56 +0200 Subject: [PATCH 05/41] Add mapping for Native Instruments Traktor Kontrol Z1 --- res/controllers/Traktor Kontrol Z1.hid.xml | 18 ++ res/controllers/Traktor-Kontrol-Z1-scripts.js | 250 ++++++++++++++++++ 2 files changed, 268 insertions(+) create mode 100644 res/controllers/Traktor Kontrol Z1.hid.xml create mode 100644 res/controllers/Traktor-Kontrol-Z1-scripts.js diff --git a/res/controllers/Traktor Kontrol Z1.hid.xml b/res/controllers/Traktor Kontrol Z1.hid.xml new file mode 100644 index 00000000000..94435f4ef9d --- /dev/null +++ b/res/controllers/Traktor Kontrol Z1.hid.xml @@ -0,0 +1,18 @@ + + + + Native Instruments Traktor Kontrol Z1 + djantti + HID mapping for Native Instruments Traktor Kontrol Z1 + native_instruments_traktor_kontrol_z1 + + + + + + + + + + + diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js new file mode 100644 index 00000000000..a33c4bc85b3 --- /dev/null +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -0,0 +1,250 @@ +// +// Native Instruments Traktor Kontrol Z1 HID controller script for Mixxx 2.4 +// Based on Traktor Kontrol S2 MK3 script by Michael Schmidt +// Author: djantti +// Last modified: 20231123 +// +// Extra functionality: +// Mode + FX -> Playback start / stop +// Mode + Headphone -> Stop and rewind track +// + +var KontrolZ1 = new function() { + this.controller = new HIDController(); + + // Modifier state + this.modePressed = false; + + // VuMeter + this.vuLeftConnection = {}; + this.vuRightConnection = {}; + this.vuMeterThresholds = {"vu-30": (1 / 7), "vu-15": (2 / 7), "vu-6": (3 / 7), "vu-3": (4 / 7), "vu0": (5 / 7), "vu3": (6 / 7), "vu6": (7 / 7)}; +}; + +KontrolZ1.init = function(_id) { + KontrolZ1.id = _id; + KontrolZ1.registerInputPackets(); + KontrolZ1.registerOutputPackets(); + print(KontrolZ1.id + " initialized"); +}; + +KontrolZ1.registerInputPackets = function() { + const message = new HIDPacket("message", 0x1, this.messageCallback); + + // Mode button + this.registerInputButton(message, "[Controls]", "!mode", 0x1D, 0x2, this.modeHandler); + + // Headphone buttons + this.registerInputButton(message, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler); + this.registerInputButton(message, "[Channel2]", "!pfl", 0x1D, 0x1, this.headphoneHandler); + + // FX buttons + this.registerInputButton(message, "[Channel1]", "!fx", 0x1D, 0x4, this.fxHandler); + this.registerInputButton(message, "[Channel2]", "!fx", 0x1D, 0x8, this.fxHandler); + + // EQ knobs + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x3, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x5, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x7, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0xD, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0xF, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter1", 0x11, 0xFFFF, this.parameterHandler); + + // FX knobs + this.registerInputScaler(message, "[QuickEffectRack1_[Channel1]]", "super1", 0x9, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[QuickEffectRack1_[Channel2]]", "super1", 0x13, 0xFFFF, this.parameterHandler); + + // Gain knobs + this.registerInputScaler(message, "[Channel1]", "pregain", 0x1, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[Channel2]", "pregain", 0xB, 0xFFFF, this.parameterHandler); + + // Headphone mix + this.registerInputScaler(message, "[Master]", "headMix", 0x15, 0xFFFF, this.parameterHandler); + + // Volume faders + this.registerInputScaler(message, "[Channel1]", "volume", 0x17, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[Channel2]", "volume", 0x19, 0xFFFF, this.parameterHandler); + + // Crossfader + this.registerInputScaler(message, "[Master]", "crossfader", 0x1B, 0xFFFF, this.parameterHandler); + + this.controller.registerInputPacket(message); + + // Soft takeover for all knobs and faders + engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter3", true); + engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter2", true); + engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter1", true); + + engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter3", true); + engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter2", true); + engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter1", true); + + engine.softTakeover("[QuickEffectRack1_[Channel1]]", "super1", true); + engine.softTakeover("[QuickEffectRack1_[Channel2]]", "super1", true); + + engine.softTakeover("[Channel1]", "pregain", true); + engine.softTakeover("[Channel2]", "pregain", true); + + engine.softTakeover("[Master]", "headMix", true); + + engine.softTakeover("[Channel1]", "volume", true); + engine.softTakeover("[Channel2]", "volume", true); + + engine.softTakeover("[Master]", "crossfader", true); +}; + +KontrolZ1.registerInputButton = function(message, group, name, offset, bitmask, callback) { + message.addControl(group, name, offset, "B", bitmask); + message.setCallback(group, name, callback); +}; + +KontrolZ1.registerInputScaler = function(message, group, name, offset, bitmask, callback) { + message.addControl(group, name, offset, "H", bitmask); + message.setCallback(group, name, callback); +}; + +KontrolZ1.registerOutputPackets = function() { + const output = new HIDPacket("output", 0x80); + + output.addOutput("[Controls]", "mode", 0x13, "B"); + + output.addOutput("[Channel1]", "pfl", 0xF, "B"); + output.addOutput("[Channel2]", "pfl", 0x10, "B"); + + output.addOutput("[Channel1]", "play_indicator", 0x11, "B"); + output.addOutput("[Channel2]", "play_indicator", 0x14, "B"); + + output.addOutput("[QuickEffectRack1_[Channel1]]", "enabled", 0x12, "B"); + output.addOutput("[QuickEffectRack1_[Channel2]]", "enabled", 0x15, "B"); + + output.addOutput("[Channel1]", "vu-30", 0x1, "B"); + output.addOutput("[Channel1]", "vu-15", 0x2, "B"); + output.addOutput("[Channel1]", "vu-6", 0x3, "B"); + output.addOutput("[Channel1]", "vu-3", 0x4, "B"); + output.addOutput("[Channel1]", "vu0", 0x5, "B"); + output.addOutput("[Channel1]", "vu3", 0x6, "B"); + output.addOutput("[Channel1]", "vu6", 0x7, "B"); + + output.addOutput("[Channel2]", "vu-30", 0x8, "B"); + output.addOutput("[Channel2]", "vu-15", 0x9, "B"); + output.addOutput("[Channel2]", "vu-6", 0xA, "B"); + output.addOutput("[Channel2]", "vu-3", 0xB, "B"); + output.addOutput("[Channel2]", "vu0", 0xC, "B"); + output.addOutput("[Channel2]", "vu3", 0xD, "B"); + output.addOutput("[Channel2]", "vu6", 0xE, "B"); + + this.controller.registerOutputPacket(output); + + engine.makeConnection("[QuickEffectRack1_[Channel1]]", "enabled", this.outputHandler); + engine.makeConnection("[QuickEffectRack1_[Channel2]]", "enabled", this.outputHandler); + + engine.makeConnection("[Channel1]", "pfl", this.outputHandler); + engine.makeConnection("[Channel2]", "pfl", this.outputHandler); + + this.vuLeftConnection = engine.makeUnbufferedConnection("[Channel1]", "vu_meter", this.vuMeterHandler); + this.vuRightConnection = engine.makeUnbufferedConnection("[Channel2]", "vu_meter", this.vuMeterHandler); + + KontrolZ1.lightDeck(false); +} + +KontrolZ1.modeHandler = function(field) { + KontrolZ1.modePressed = field.value; + KontrolZ1.outputHandler(field.value, field.group, "mode"); +}; + +KontrolZ1.headphoneHandler = function(field) { + if (field.value === 0) { + return; + } + // Seek to start and stop when modifier is active + if (KontrolZ1.modePressed) { + engine.setValue(field.group, "start_stop", field.value); + } else { + script.toggleControl(field.group, "pfl"); + } +}; + +KontrolZ1.fxHandler = function(field) { + if (field.value === 0) { + // Always clear play indicator on button release + KontrolZ1.controller.setOutput(field.group, "play_indicator", 0x0, true); + return; + } + // Control playback when modifier is active + if (KontrolZ1.modePressed) { + // Match play indicator (red led) brightness to fx indicator (blue led) + current = (engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled")) ? 0x7F : 0xA; + KontrolZ1.controller.setOutput(field.group, "play_indicator", current, true); + script.toggleControl(field.group, "play"); + } else { + script.toggleControl("[QuickEffectRack1_" + field.group + "]", "enabled"); + } +}; + +KontrolZ1.vuMeterHandler = function(value, group, _key) { + const vuKeys = Object.keys(KontrolZ1.vuMeterThresholds); + for (let i = 0; i < vuKeys.length; ++i) { + // Avoid spamming HID by only sending last LED update + const last = (i === (vuKeys.length - 1)); + if (KontrolZ1.vuMeterThresholds[vuKeys[i]] > value) { + KontrolZ1.controller.setOutput(group, vuKeys[i], 0x00, last); + } else { + KontrolZ1.controller.setOutput(group, vuKeys[i], 0x7E, last); + } + } +}; + +KontrolZ1.parameterHandler = function(field) { + engine.setParameter(field.group, field.name, field.value / 4095); +} + +KontrolZ1.outputHandler = function(value, group, key) { + if (value === 0 || value === false) { + // Off value (dimmed) + ledValue = 0xA; + } else if (value === 1 || value === true) { + // On value + ledValue = 0x7F; + } + KontrolZ1.controller.setOutput(group, key, ledValue, true); +}; + +KontrolZ1.lightDeck = function(switchOff) { + let softLight = 0xA; + let fullLight = 0x7F; + + if (switchOff) { + softLight = 0x00; + fullLight = 0x00; + } + + KontrolZ1.controller.setOutput("[Controls]", "mode", softLight, true); + + current = (engine.getValue("[QuickEffectRack1_[Channel1]]", "enabled")) ? fullLight : softLight; + KontrolZ1.controller.setOutput("[QuickEffectRack1_[Channel1]]", "enabled", current, true); + current = (engine.getValue("[QuickEffectRack1_[Channel2]]", "enabled")) ? fullLight : softLight; + KontrolZ1.controller.setOutput("[QuickEffectRack1_[Channel2]]", "enabled", current, true); + + current = (engine.getValue("[Channel1]", "pfl")) ? fullLight : softLight; + KontrolZ1.controller.setOutput("[Channel1]", "pfl", current, true); + current = (engine.getValue("[Channel2]", "pfl")) ? fullLight : softLight; + KontrolZ1.controller.setOutput("[Channel2]", "pfl", current, true); +} + +KontrolZ1.messageCallback = function(packet, data) { + for (const name in data) { + if (Object.hasOwnProperty.call(data, name)) { + KontrolZ1.controller.processButton(data[name]); + } + } +} + +KontrolZ1.shutdown = function() { + // Deactivate all LEDs + KontrolZ1.lightDeck(true); + print(KontrolZ1.id + " shut down"); +}; + +KontrolZ1.incomingData = function(data, length) { + KontrolZ1.controller.parsePacket(data, length); +}; From 191ef5b14113180fb773532515e0bf12606d33d9 Mon Sep 17 00:00:00 2001 From: djantti Date: Fri, 24 Nov 2023 13:25:08 +0200 Subject: [PATCH 06/41] Change headphone buttons secondary function to cue point seek and stop --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index a33c4bc85b3..372e26b856f 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -6,7 +6,7 @@ // // Extra functionality: // Mode + FX -> Playback start / stop -// Mode + Headphone -> Stop and rewind track +// Mode + Headphone -> Go to cue and stop // var KontrolZ1 = new function() { @@ -156,9 +156,9 @@ KontrolZ1.headphoneHandler = function(field) { if (field.value === 0) { return; } - // Seek to start and stop when modifier is active + // Go to cue and stop when modifier is active if (KontrolZ1.modePressed) { - engine.setValue(field.group, "start_stop", field.value); + engine.setValue(field.group, "cue_gotoandstop", field.value); } else { script.toggleControl(field.group, "pfl"); } From 0b52a65f19d0511508098223da0306764ffc6ed3 Mon Sep 17 00:00:00 2001 From: djantti Date: Fri, 24 Nov 2023 14:06:40 +0200 Subject: [PATCH 07/41] Remove unnecessary parentheses for more legible code --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index 372e26b856f..32da458143e 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -173,7 +173,7 @@ KontrolZ1.fxHandler = function(field) { // Control playback when modifier is active if (KontrolZ1.modePressed) { // Match play indicator (red led) brightness to fx indicator (blue led) - current = (engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled")) ? 0x7F : 0xA; + current = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0xA; KontrolZ1.controller.setOutput(field.group, "play_indicator", current, true); script.toggleControl(field.group, "play"); } else { @@ -185,7 +185,7 @@ KontrolZ1.vuMeterHandler = function(value, group, _key) { const vuKeys = Object.keys(KontrolZ1.vuMeterThresholds); for (let i = 0; i < vuKeys.length; ++i) { // Avoid spamming HID by only sending last LED update - const last = (i === (vuKeys.length - 1)); + const last = i === (vuKeys.length - 1); if (KontrolZ1.vuMeterThresholds[vuKeys[i]] > value) { KontrolZ1.controller.setOutput(group, vuKeys[i], 0x00, last); } else { @@ -220,14 +220,14 @@ KontrolZ1.lightDeck = function(switchOff) { KontrolZ1.controller.setOutput("[Controls]", "mode", softLight, true); - current = (engine.getValue("[QuickEffectRack1_[Channel1]]", "enabled")) ? fullLight : softLight; + current = engine.getValue("[QuickEffectRack1_[Channel1]]", "enabled") ? fullLight : softLight; KontrolZ1.controller.setOutput("[QuickEffectRack1_[Channel1]]", "enabled", current, true); - current = (engine.getValue("[QuickEffectRack1_[Channel2]]", "enabled")) ? fullLight : softLight; + current = engine.getValue("[QuickEffectRack1_[Channel2]]", "enabled") ? fullLight : softLight; KontrolZ1.controller.setOutput("[QuickEffectRack1_[Channel2]]", "enabled", current, true); - current = (engine.getValue("[Channel1]", "pfl")) ? fullLight : softLight; + current = engine.getValue("[Channel1]", "pfl") ? fullLight : softLight; KontrolZ1.controller.setOutput("[Channel1]", "pfl", current, true); - current = (engine.getValue("[Channel2]", "pfl")) ? fullLight : softLight; + current = engine.getValue("[Channel2]", "pfl") ? fullLight : softLight; KontrolZ1.controller.setOutput("[Channel2]", "pfl", current, true); } From 0d5f966fee07076c2de19871dc49ca891c5aa9ec Mon Sep 17 00:00:00 2001 From: djantti Date: Fri, 24 Nov 2023 22:43:35 +0200 Subject: [PATCH 08/41] We're using git and have a proper manual now, so remove modification date and usage hints from script header --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index 32da458143e..abe2026b5bf 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -2,11 +2,6 @@ // Native Instruments Traktor Kontrol Z1 HID controller script for Mixxx 2.4 // Based on Traktor Kontrol S2 MK3 script by Michael Schmidt // Author: djantti -// Last modified: 20231123 -// -// Extra functionality: -// Mode + FX -> Playback start / stop -// Mode + Headphone -> Go to cue and stop // var KontrolZ1 = new function() { From 7300b60f8bf66f0b552c5a350a5a9aff65b8523b Mon Sep 17 00:00:00 2001 From: djantti Date: Fri, 24 Nov 2023 23:02:33 +0200 Subject: [PATCH 09/41] Add discussion forum topic link --- res/controllers/Traktor Kontrol Z1.hid.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/controllers/Traktor Kontrol Z1.hid.xml b/res/controllers/Traktor Kontrol Z1.hid.xml index 94435f4ef9d..a4a6a2b6736 100644 --- a/res/controllers/Traktor Kontrol Z1.hid.xml +++ b/res/controllers/Traktor Kontrol Z1.hid.xml @@ -4,6 +4,7 @@ Native Instruments Traktor Kontrol Z1 djantti HID mapping for Native Instruments Traktor Kontrol Z1 + https://mixxx.discourse.group/t/new-mapping-for-native-instruments-traktor-kontrol-z1/28436 native_instruments_traktor_kontrol_z1 From d9019565545262903d591cf6c44345b4c8f563e6 Mon Sep 17 00:00:00 2001 From: djantti Date: Sat, 25 Nov 2023 12:46:26 +0200 Subject: [PATCH 10/41] Add a more complete script header --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index abe2026b5bf..3e62145418d 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -1,6 +1,7 @@ // // Native Instruments Traktor Kontrol Z1 HID controller script for Mixxx 2.4 -// Based on Traktor Kontrol S2 MK3 script by Michael Schmidt +// ------------------------------------------------------------------------- +// Based on: Kontrol S2 MK3 script by mi01 and Kontrol Z1 script by xeruf // Author: djantti // From dab89310385af7d12da8deecb11a42fc635b65dc Mon Sep 17 00:00:00 2001 From: djantti Date: Mon, 27 Nov 2023 00:23:13 +0200 Subject: [PATCH 11/41] Use ControlX group for Mode button --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index 3e62145418d..659e576226d 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -28,7 +28,7 @@ KontrolZ1.registerInputPackets = function() { const message = new HIDPacket("message", 0x1, this.messageCallback); // Mode button - this.registerInputButton(message, "[Controls]", "!mode", 0x1D, 0x2, this.modeHandler); + this.registerInputButton(message, "[ControlX]", "!mode", 0x1D, 0x2, this.modeHandler); // Headphone buttons this.registerInputButton(message, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler); @@ -102,7 +102,7 @@ KontrolZ1.registerInputScaler = function(message, group, name, offset, bitmask, KontrolZ1.registerOutputPackets = function() { const output = new HIDPacket("output", 0x80); - output.addOutput("[Controls]", "mode", 0x13, "B"); + output.addOutput("[ControlX]", "mode", 0x13, "B"); output.addOutput("[Channel1]", "pfl", 0xF, "B"); output.addOutput("[Channel2]", "pfl", 0x10, "B"); @@ -214,7 +214,7 @@ KontrolZ1.lightDeck = function(switchOff) { fullLight = 0x00; } - KontrolZ1.controller.setOutput("[Controls]", "mode", softLight, true); + KontrolZ1.controller.setOutput("[ControlX]", "mode", softLight, true); current = engine.getValue("[QuickEffectRack1_[Channel1]]", "enabled") ? fullLight : softLight; KontrolZ1.controller.setOutput("[QuickEffectRack1_[Channel1]]", "enabled", current, true); From e9a6e299fbd4fd0d84bd4936688daf0644bc56a1 Mon Sep 17 00:00:00 2001 From: djantti Date: Mon, 27 Nov 2023 01:55:36 +0200 Subject: [PATCH 12/41] Add missing semicolons --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index 659e576226d..51fb8181823 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -141,7 +141,7 @@ KontrolZ1.registerOutputPackets = function() { this.vuRightConnection = engine.makeUnbufferedConnection("[Channel2]", "vu_meter", this.vuMeterHandler); KontrolZ1.lightDeck(false); -} +}; KontrolZ1.modeHandler = function(field) { KontrolZ1.modePressed = field.value; @@ -192,7 +192,7 @@ KontrolZ1.vuMeterHandler = function(value, group, _key) { KontrolZ1.parameterHandler = function(field) { engine.setParameter(field.group, field.name, field.value / 4095); -} +}; KontrolZ1.outputHandler = function(value, group, key) { if (value === 0 || value === false) { @@ -225,7 +225,7 @@ KontrolZ1.lightDeck = function(switchOff) { KontrolZ1.controller.setOutput("[Channel1]", "pfl", current, true); current = engine.getValue("[Channel2]", "pfl") ? fullLight : softLight; KontrolZ1.controller.setOutput("[Channel2]", "pfl", current, true); -} +}; KontrolZ1.messageCallback = function(packet, data) { for (const name in data) { @@ -233,7 +233,7 @@ KontrolZ1.messageCallback = function(packet, data) { KontrolZ1.controller.processButton(data[name]); } } -} +}; KontrolZ1.shutdown = function() { // Deactivate all LEDs From 9ac3b40077439066a9f5abeace7f18b79452eb5f Mon Sep 17 00:00:00 2001 From: djantti Date: Mon, 27 Nov 2023 03:24:56 +0200 Subject: [PATCH 13/41] Fix undefined variables --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index 51fb8181823..75eab994c91 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -169,7 +169,7 @@ KontrolZ1.fxHandler = function(field) { // Control playback when modifier is active if (KontrolZ1.modePressed) { // Match play indicator (red led) brightness to fx indicator (blue led) - current = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0xA; + const current = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0xA; KontrolZ1.controller.setOutput(field.group, "play_indicator", current, true); script.toggleControl(field.group, "play"); } else { @@ -195,6 +195,7 @@ KontrolZ1.parameterHandler = function(field) { }; KontrolZ1.outputHandler = function(value, group, key) { + let ledValue; if (value === 0 || value === false) { // Off value (dimmed) ledValue = 0xA; @@ -208,6 +209,7 @@ KontrolZ1.outputHandler = function(value, group, key) { KontrolZ1.lightDeck = function(switchOff) { let softLight = 0xA; let fullLight = 0x7F; + let current; if (switchOff) { softLight = 0x00; From 00e74e38ed24958f97097127aef14009c6bac653 Mon Sep 17 00:00:00 2001 From: djantti Date: Mon, 27 Nov 2023 03:27:56 +0200 Subject: [PATCH 14/41] Replace print() with console.log() --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index 75eab994c91..152d9f41abd 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -21,7 +21,7 @@ KontrolZ1.init = function(_id) { KontrolZ1.id = _id; KontrolZ1.registerInputPackets(); KontrolZ1.registerOutputPackets(); - print(KontrolZ1.id + " initialized"); + console.log(KontrolZ1.id + " initialized"); }; KontrolZ1.registerInputPackets = function() { @@ -240,7 +240,7 @@ KontrolZ1.messageCallback = function(packet, data) { KontrolZ1.shutdown = function() { // Deactivate all LEDs KontrolZ1.lightDeck(true); - print(KontrolZ1.id + " shut down"); + console.log(KontrolZ1.id + " shut down"); }; KontrolZ1.incomingData = function(data, length) { From 34af7d1c477165bba56f692913577ba6279e671f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Mon, 27 Nov 2023 07:25:59 +0100 Subject: [PATCH 15/41] Add some line breaks --- src/track/beats.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/track/beats.h b/src/track/beats.h index 43008b3bcb5..3edf87c1146 100644 --- a/src/track/beats.h +++ b/src/track/beats.h @@ -77,7 +77,9 @@ class Beats : private std::enable_shared_from_this { ConstIterator(const Beats* beats, std::vector::const_iterator it, int beatOffset) - : m_beats(beats), m_it(it), m_beatOffset(beatOffset) { + : m_beats(beats), + m_it(it), + m_beatOffset(beatOffset) { updateValue(); } @@ -133,7 +135,8 @@ class Beats : private std::enable_shared_from_this { difference_type operator-(const ConstIterator& other) const; friend bool operator==(const ConstIterator& lhs, const ConstIterator& rhs) { - return lhs.m_beats == rhs.m_beats && lhs.m_it == rhs.m_it && + return lhs.m_beats == rhs.m_beats && + lhs.m_it == rhs.m_it && lhs.m_beatOffset == rhs.m_beatOffset; } From 3225af2f1439f814496700b32159308f5ed809fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Mon, 27 Nov 2023 07:31:43 +0100 Subject: [PATCH 16/41] Add values to warnings in case of beat iterator overflow protection --- src/track/beats.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/track/beats.cpp b/src/track/beats.cpp index dc2f0674ade..0bcc3143135 100644 --- a/src/track/beats.cpp +++ b/src/track/beats.cpp @@ -67,8 +67,8 @@ Beats::ConstIterator Beats::ConstIterator::operator+=(Beats::ConstIterator::diff // Detect integer overflow in `m_beatOffset + n` const int maxBeatOffset = std::numeric_limits::max(); if (m_beatOffset > maxBeatOffset - n) { - qWarning() << "Beats: Iterator would go out of possible range, capping " - "at latest possible position."; + qWarning() << "Beats: Iterator" << m_beatOffset << "+" << n + << "would go out of possible range, capping at latest possible position."; m_it = m_beats->m_markers.cend(); m_beatOffset = maxBeatOffset; updateValue(); @@ -115,8 +115,8 @@ Beats::ConstIterator Beats::ConstIterator::operator-=(Beats::ConstIterator::diff // Detect integer overflow const int minBeatOffset = std::numeric_limits::lowest(); if (m_beatOffset < minBeatOffset + n) { - qWarning() << "Beats: Iterator would go out of possible range, capping " - "at earliest possible position."; + qWarning() << "Beats Iterator" << m_beatOffset << "-" << n + << "would go out of possible range, capping at earliest possible position."; m_it = m_beats->m_markers.cbegin(); m_beatOffset = minBeatOffset; updateValue(); From 04d88d1be27f2c99e1101ef0fbd5032268df5e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Mon, 27 Nov 2023 08:04:08 +0100 Subject: [PATCH 17/41] Use overall average BPM before the play position is adjusted (kInitialPlayPosition) --- src/engine/controls/bpmcontrol.cpp | 4 +++- src/engine/controls/enginecontrol.h | 7 +++++++ src/engine/enginebuffer.cpp | 7 ------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/engine/controls/bpmcontrol.cpp b/src/engine/controls/bpmcontrol.cpp index bf9dccc043a..9219af09304 100644 --- a/src/engine/controls/bpmcontrol.cpp +++ b/src/engine/controls/bpmcontrol.cpp @@ -1017,7 +1017,9 @@ mixxx::Bpm BpmControl::updateLocalBpm() { const mixxx::BeatsPointer pBeats = m_pBeats; const FrameInfo info = frameInfo(); if (pBeats) { - localBpm = pBeats->getBpmAroundPosition(info.currentPosition, kLocalBpmSpan); + if (info.currentPosition.isValid() && info.currentPosition != kInitialPlayPosition) { + localBpm = pBeats->getBpmAroundPosition(info.currentPosition, kLocalBpmSpan); + } if (!localBpm.isValid()) { localBpm = pBeats->getBpmInRange(mixxx::audio::kStartFramePos, info.trackEndPosition); } diff --git a/src/engine/controls/enginecontrol.h b/src/engine/controls/enginecontrol.h index 517a29e6285..6c2f451ec10 100644 --- a/src/engine/controls/enginecontrol.h +++ b/src/engine/controls/enginecontrol.h @@ -21,6 +21,13 @@ static_assert( mixxx::audio::FramePos::kLegacyInvalidEnginePosition == kNoTrigger, "Invalid engine position value mismatch"); +// This value is used to make sure the initial seek after loading a track is +// not omitted. Therefore this value must be different for 0.0 or any likely +// value for the main cue +constexpr auto kInitialPlayPosition = + mixxx::audio::FramePos::fromEngineSamplePos( + std::numeric_limits::lowest()); + /** * EngineControl is an abstract base class for objects which implement * functionality pertaining to EngineBuffer. An EngineControl is meant to be a diff --git a/src/engine/enginebuffer.cpp b/src/engine/enginebuffer.cpp index d75fb9e38ee..97874b0e946 100644 --- a/src/engine/enginebuffer.cpp +++ b/src/engine/enginebuffer.cpp @@ -41,13 +41,6 @@ namespace { const mixxx::Logger kLogger("EngineBuffer"); -// This value is used to make sure the initial seek after loading a track is -// not omitted. Therefore this value must be different for 0.0 or any likely -// value for the main cue -constexpr auto kInitialPlayPosition = - mixxx::audio::FramePos::fromEngineSamplePos( - std::numeric_limits::lowest()); - constexpr double kLinearScalerElipsis = 1.00058; // 2^(0.01/12): changes < 1 cent allows a linear scaler From f13630edd3ddd94c701669e15a9be70fc410c71d Mon Sep 17 00:00:00 2001 From: Joerg Date: Mon, 27 Nov 2023 22:04:42 +0100 Subject: [PATCH 18/41] Reformatted code to modern ES6 class structure --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 401 +++++++++--------- 1 file changed, 203 insertions(+), 198 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index 152d9f41abd..bde7fca988a 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -5,244 +5,249 @@ // Author: djantti // -var KontrolZ1 = new function() { - this.controller = new HIDController(); +class TraktorZ1Class { + constructor() { + this.controller = new HIDController(); - // Modifier state - this.modePressed = false; + // Modifier state + this.modePressed = false; - // VuMeter - this.vuLeftConnection = {}; - this.vuRightConnection = {}; - this.vuMeterThresholds = {"vu-30": (1 / 7), "vu-15": (2 / 7), "vu-6": (3 / 7), "vu-3": (4 / 7), "vu0": (5 / 7), "vu3": (6 / 7), "vu6": (7 / 7)}; -}; + // VuMeter + this.vuLeftConnection = {}; + this.vuRightConnection = {}; + this.vuMeterThresholds = {"vu-30": (1 / 7), "vu-15": (2 / 7), "vu-6": (3 / 7), "vu-3": (4 / 7), "vu0": (5 / 7), "vu3": (6 / 7), "vu6": (7 / 7)}; + } -KontrolZ1.init = function(_id) { - KontrolZ1.id = _id; - KontrolZ1.registerInputPackets(); - KontrolZ1.registerOutputPackets(); - console.log(KontrolZ1.id + " initialized"); -}; + init(_id) { + this.id = _id; + this.registerInputPackets(); + this.registerOutputPackets(); + console.log(this.id + " initialized"); + } -KontrolZ1.registerInputPackets = function() { - const message = new HIDPacket("message", 0x1, this.messageCallback); + registerInputPackets() { + const message = new HIDPacket("message", 0x1, this.messageCallback); - // Mode button - this.registerInputButton(message, "[ControlX]", "!mode", 0x1D, 0x2, this.modeHandler); + // Mode button + this.registerInputButton(message, "[ControlX]", "!mode", 0x1D, 0x2, this.modeHandler); - // Headphone buttons - this.registerInputButton(message, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler); - this.registerInputButton(message, "[Channel2]", "!pfl", 0x1D, 0x1, this.headphoneHandler); + // Headphone buttons + this.registerInputButton(message, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler); + this.registerInputButton(message, "[Channel2]", "!pfl", 0x1D, 0x1, this.headphoneHandler); - // FX buttons - this.registerInputButton(message, "[Channel1]", "!fx", 0x1D, 0x4, this.fxHandler); - this.registerInputButton(message, "[Channel2]", "!fx", 0x1D, 0x8, this.fxHandler); + // FX buttons + this.registerInputButton(message, "[Channel1]", "!fx", 0x1D, 0x4, this.fxHandler); + this.registerInputButton(message, "[Channel2]", "!fx", 0x1D, 0x8, this.fxHandler); - // EQ knobs - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x3, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x5, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x7, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0xD, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0xF, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter1", 0x11, 0xFFFF, this.parameterHandler); + // EQ knobs + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x3, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x5, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x7, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0xD, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0xF, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter1", 0x11, 0xFFFF, this.parameterHandler); - // FX knobs - this.registerInputScaler(message, "[QuickEffectRack1_[Channel1]]", "super1", 0x9, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[QuickEffectRack1_[Channel2]]", "super1", 0x13, 0xFFFF, this.parameterHandler); + // FX knobs + this.registerInputScaler(message, "[QuickEffectRack1_[Channel1]]", "super1", 0x9, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[QuickEffectRack1_[Channel2]]", "super1", 0x13, 0xFFFF, this.parameterHandler); - // Gain knobs - this.registerInputScaler(message, "[Channel1]", "pregain", 0x1, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[Channel2]", "pregain", 0xB, 0xFFFF, this.parameterHandler); + // Gain knobs + this.registerInputScaler(message, "[Channel1]", "pregain", 0x1, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[Channel2]", "pregain", 0xB, 0xFFFF, this.parameterHandler); - // Headphone mix - this.registerInputScaler(message, "[Master]", "headMix", 0x15, 0xFFFF, this.parameterHandler); + // Headphone mix + this.registerInputScaler(message, "[Master]", "headMix", 0x15, 0xFFFF, this.parameterHandler); - // Volume faders - this.registerInputScaler(message, "[Channel1]", "volume", 0x17, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[Channel2]", "volume", 0x19, 0xFFFF, this.parameterHandler); + // Volume faders + this.registerInputScaler(message, "[Channel1]", "volume", 0x17, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[Channel2]", "volume", 0x19, 0xFFFF, this.parameterHandler); - // Crossfader - this.registerInputScaler(message, "[Master]", "crossfader", 0x1B, 0xFFFF, this.parameterHandler); + // Crossfader + this.registerInputScaler(message, "[Master]", "crossfader", 0x1B, 0xFFFF, this.parameterHandler); - this.controller.registerInputPacket(message); + this.controller.registerInputPacket(message); - // Soft takeover for all knobs and faders - engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter3", true); - engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter2", true); - engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter1", true); + // Soft takeover for all knobs and faders + engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter3", true); + engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter2", true); + engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter1", true); - engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter3", true); - engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter2", true); - engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter1", true); + engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter3", true); + engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter2", true); + engine.softTakeover("[EqualizerRack1_[Channel2]_Effect1]", "parameter1", true); - engine.softTakeover("[QuickEffectRack1_[Channel1]]", "super1", true); - engine.softTakeover("[QuickEffectRack1_[Channel2]]", "super1", true); + engine.softTakeover("[QuickEffectRack1_[Channel1]]", "super1", true); + engine.softTakeover("[QuickEffectRack1_[Channel2]]", "super1", true); - engine.softTakeover("[Channel1]", "pregain", true); - engine.softTakeover("[Channel2]", "pregain", true); - - engine.softTakeover("[Master]", "headMix", true); - - engine.softTakeover("[Channel1]", "volume", true); - engine.softTakeover("[Channel2]", "volume", true); - - engine.softTakeover("[Master]", "crossfader", true); -}; - -KontrolZ1.registerInputButton = function(message, group, name, offset, bitmask, callback) { - message.addControl(group, name, offset, "B", bitmask); - message.setCallback(group, name, callback); -}; - -KontrolZ1.registerInputScaler = function(message, group, name, offset, bitmask, callback) { - message.addControl(group, name, offset, "H", bitmask); - message.setCallback(group, name, callback); -}; - -KontrolZ1.registerOutputPackets = function() { - const output = new HIDPacket("output", 0x80); - - output.addOutput("[ControlX]", "mode", 0x13, "B"); - - output.addOutput("[Channel1]", "pfl", 0xF, "B"); - output.addOutput("[Channel2]", "pfl", 0x10, "B"); - - output.addOutput("[Channel1]", "play_indicator", 0x11, "B"); - output.addOutput("[Channel2]", "play_indicator", 0x14, "B"); - - output.addOutput("[QuickEffectRack1_[Channel1]]", "enabled", 0x12, "B"); - output.addOutput("[QuickEffectRack1_[Channel2]]", "enabled", 0x15, "B"); - - output.addOutput("[Channel1]", "vu-30", 0x1, "B"); - output.addOutput("[Channel1]", "vu-15", 0x2, "B"); - output.addOutput("[Channel1]", "vu-6", 0x3, "B"); - output.addOutput("[Channel1]", "vu-3", 0x4, "B"); - output.addOutput("[Channel1]", "vu0", 0x5, "B"); - output.addOutput("[Channel1]", "vu3", 0x6, "B"); - output.addOutput("[Channel1]", "vu6", 0x7, "B"); - - output.addOutput("[Channel2]", "vu-30", 0x8, "B"); - output.addOutput("[Channel2]", "vu-15", 0x9, "B"); - output.addOutput("[Channel2]", "vu-6", 0xA, "B"); - output.addOutput("[Channel2]", "vu-3", 0xB, "B"); - output.addOutput("[Channel2]", "vu0", 0xC, "B"); - output.addOutput("[Channel2]", "vu3", 0xD, "B"); - output.addOutput("[Channel2]", "vu6", 0xE, "B"); - - this.controller.registerOutputPacket(output); - - engine.makeConnection("[QuickEffectRack1_[Channel1]]", "enabled", this.outputHandler); - engine.makeConnection("[QuickEffectRack1_[Channel2]]", "enabled", this.outputHandler); + engine.softTakeover("[Channel1]", "pregain", true); + engine.softTakeover("[Channel2]", "pregain", true); - engine.makeConnection("[Channel1]", "pfl", this.outputHandler); - engine.makeConnection("[Channel2]", "pfl", this.outputHandler); - - this.vuLeftConnection = engine.makeUnbufferedConnection("[Channel1]", "vu_meter", this.vuMeterHandler); - this.vuRightConnection = engine.makeUnbufferedConnection("[Channel2]", "vu_meter", this.vuMeterHandler); - - KontrolZ1.lightDeck(false); -}; + engine.softTakeover("[Master]", "headMix", true); -KontrolZ1.modeHandler = function(field) { - KontrolZ1.modePressed = field.value; - KontrolZ1.outputHandler(field.value, field.group, "mode"); -}; + engine.softTakeover("[Channel1]", "volume", true); + engine.softTakeover("[Channel2]", "volume", true); -KontrolZ1.headphoneHandler = function(field) { - if (field.value === 0) { - return; + engine.softTakeover("[Master]", "crossfader", true); } - // Go to cue and stop when modifier is active - if (KontrolZ1.modePressed) { - engine.setValue(field.group, "cue_gotoandstop", field.value); - } else { - script.toggleControl(field.group, "pfl"); + + registerInputButton(message, group, name, offset, bitmask, callback) { + message.addControl(group, name, offset, "B", bitmask); + message.setCallback(group, name, callback); } -}; -KontrolZ1.fxHandler = function(field) { - if (field.value === 0) { - // Always clear play indicator on button release - KontrolZ1.controller.setOutput(field.group, "play_indicator", 0x0, true); - return; + registerInputScaler(message, group, name, offset, bitmask, callback) { + message.addControl(group, name, offset, "H", bitmask); + message.setCallback(group, name, callback); } - // Control playback when modifier is active - if (KontrolZ1.modePressed) { - // Match play indicator (red led) brightness to fx indicator (blue led) - const current = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0xA; - KontrolZ1.controller.setOutput(field.group, "play_indicator", current, true); - script.toggleControl(field.group, "play"); - } else { - script.toggleControl("[QuickEffectRack1_" + field.group + "]", "enabled"); + + registerOutputPackets() { + const output = new HIDPacket("output", 0x80); + + output.addOutput("[ControlX]", "mode", 0x13, "B"); + + output.addOutput("[Channel1]", "pfl", 0xF, "B"); + output.addOutput("[Channel2]", "pfl", 0x10, "B"); + + output.addOutput("[Channel1]", "play_indicator", 0x11, "B"); + output.addOutput("[Channel2]", "play_indicator", 0x14, "B"); + + output.addOutput("[QuickEffectRack1_[Channel1]]", "enabled", 0x12, "B"); + output.addOutput("[QuickEffectRack1_[Channel2]]", "enabled", 0x15, "B"); + + output.addOutput("[Channel1]", "vu-30", 0x1, "B"); + output.addOutput("[Channel1]", "vu-15", 0x2, "B"); + output.addOutput("[Channel1]", "vu-6", 0x3, "B"); + output.addOutput("[Channel1]", "vu-3", 0x4, "B"); + output.addOutput("[Channel1]", "vu0", 0x5, "B"); + output.addOutput("[Channel1]", "vu3", 0x6, "B"); + output.addOutput("[Channel1]", "vu6", 0x7, "B"); + + output.addOutput("[Channel2]", "vu-30", 0x8, "B"); + output.addOutput("[Channel2]", "vu-15", 0x9, "B"); + output.addOutput("[Channel2]", "vu-6", 0xA, "B"); + output.addOutput("[Channel2]", "vu-3", 0xB, "B"); + output.addOutput("[Channel2]", "vu0", 0xC, "B"); + output.addOutput("[Channel2]", "vu3", 0xD, "B"); + output.addOutput("[Channel2]", "vu6", 0xE, "B"); + + this.controller.registerOutputPacket(output); + + engine.makeConnection("[QuickEffectRack1_[Channel1]]", "enabled", this.outputHandler); + engine.makeConnection("[QuickEffectRack1_[Channel2]]", "enabled", this.outputHandler); + + engine.makeConnection("[Channel1]", "pfl", this.outputHandler); + engine.makeConnection("[Channel2]", "pfl", this.outputHandler); + + this.vuLeftConnection = engine.makeUnbufferedConnection("[Channel1]", "vu_meter", this.vuMeterHandler); + this.vuRightConnection = engine.makeUnbufferedConnection("[Channel2]", "vu_meter", this.vuMeterHandler); + + this.lightDeck(false); + } + + modeHandler(field) { + this.modePressed = field.value; + this.outputHandler(field.value, field.group, "mode"); } -}; - -KontrolZ1.vuMeterHandler = function(value, group, _key) { - const vuKeys = Object.keys(KontrolZ1.vuMeterThresholds); - for (let i = 0; i < vuKeys.length; ++i) { - // Avoid spamming HID by only sending last LED update - const last = i === (vuKeys.length - 1); - if (KontrolZ1.vuMeterThresholds[vuKeys[i]] > value) { - KontrolZ1.controller.setOutput(group, vuKeys[i], 0x00, last); + + headphoneHandler(field) { + if (field.value === 0) { + return; + } + // Go to cue and stop when modifier is active + if (this.modePressed) { + engine.setValue(field.group, "cue_gotoandstop", field.value); } else { - KontrolZ1.controller.setOutput(group, vuKeys[i], 0x7E, last); + script.toggleControl(field.group, "pfl"); } } -}; -KontrolZ1.parameterHandler = function(field) { - engine.setParameter(field.group, field.name, field.value / 4095); -}; + fxHandler(field) { + if (field.value === 0) { + // Always clear play indicator on button release + this.controller.setOutput(field.group, "play_indicator", 0x0, true); + return; + } + // Control playback when modifier is active + if (this.modePressed) { + // Match play indicator (red led) brightness to fx indicator (blue led) + const current = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0xA; + this.controller.setOutput(field.group, "play_indicator", current, true); + script.toggleControl(field.group, "play"); + } else { + script.toggleControl("[QuickEffectRack1_" + field.group + "]", "enabled"); + } + } -KontrolZ1.outputHandler = function(value, group, key) { - let ledValue; - if (value === 0 || value === false) { - // Off value (dimmed) - ledValue = 0xA; - } else if (value === 1 || value === true) { - // On value - ledValue = 0x7F; + vuMeterHandler(value, group, _key) { + const vuKeys = Object.keys(this.vuMeterThresholds); + for (let i = 0; i < vuKeys.length; ++i) { + // Avoid spamming HID by only sending last LED update + const last = i === (vuKeys.length - 1); + if (this.vuMeterThresholds[vuKeys[i]] > value) { + this.controller.setOutput(group, vuKeys[i], 0x00, last); + } else { + this.controller.setOutput(group, vuKeys[i], 0x7E, last); + } + } } - KontrolZ1.controller.setOutput(group, key, ledValue, true); -}; -KontrolZ1.lightDeck = function(switchOff) { - let softLight = 0xA; - let fullLight = 0x7F; - let current; - if (switchOff) { - softLight = 0x00; - fullLight = 0x00; + parameterHandler(field) { + engine.setParameter(field.group, field.name, field.value / 4095); } - KontrolZ1.controller.setOutput("[ControlX]", "mode", softLight, true); + outputHandler(value, group, key) { + let ledValue; + if (value === 0 || value === false) { + // Off value (dimmed) + ledValue = 0xA; + } else if (value === 1 || value === true) { + // On value + ledValue = 0x7F; + } + this.controller.setOutput(group, key, ledValue, true); + } - current = engine.getValue("[QuickEffectRack1_[Channel1]]", "enabled") ? fullLight : softLight; - KontrolZ1.controller.setOutput("[QuickEffectRack1_[Channel1]]", "enabled", current, true); - current = engine.getValue("[QuickEffectRack1_[Channel2]]", "enabled") ? fullLight : softLight; - KontrolZ1.controller.setOutput("[QuickEffectRack1_[Channel2]]", "enabled", current, true); + lightDeck(switchOff) { + let softLight = 0xA; + let fullLight = 0x7F; + let current; - current = engine.getValue("[Channel1]", "pfl") ? fullLight : softLight; - KontrolZ1.controller.setOutput("[Channel1]", "pfl", current, true); - current = engine.getValue("[Channel2]", "pfl") ? fullLight : softLight; - KontrolZ1.controller.setOutput("[Channel2]", "pfl", current, true); -}; + if (switchOff) { + softLight = 0x00; + fullLight = 0x00; + } + + this.controller.setOutput("[ControlX]", "mode", softLight, true); + + current = engine.getValue("[QuickEffectRack1_[Channel1]]", "enabled") ? fullLight : softLight; + this.controller.setOutput("[QuickEffectRack1_[Channel1]]", "enabled", current, true); + current = engine.getValue("[QuickEffectRack1_[Channel2]]", "enabled") ? fullLight : softLight; + this.controller.setOutput("[QuickEffectRack1_[Channel2]]", "enabled", current, true); + + current = engine.getValue("[Channel1]", "pfl") ? fullLight : softLight; + this.controller.setOutput("[Channel1]", "pfl", current, true); + current = engine.getValue("[Channel2]", "pfl") ? fullLight : softLight; + this.controller.setOutput("[Channel2]", "pfl", current, true); + } -KontrolZ1.messageCallback = function(packet, data) { - for (const name in data) { - if (Object.hasOwnProperty.call(data, name)) { - KontrolZ1.controller.processButton(data[name]); + messageCallback(packet, data) { + for (const name in data) { + if (Object.hasOwnProperty.call(data, name)) { + this.controller.processButton(data[name]); + } } } -}; -KontrolZ1.shutdown = function() { - // Deactivate all LEDs - KontrolZ1.lightDeck(true); - console.log(KontrolZ1.id + " shut down"); -}; + shutdown() { + // Deactivate all LEDs + this.lightDeck(true); + console.log(this.id + " shut down"); + } + + incomingData(data, length) { + this.controller.parsePacket(data, length); + } +} -KontrolZ1.incomingData = function(data, length) { - KontrolZ1.controller.parsePacket(data, length); -}; +var TraktorZ1 = new TraktorZ1Class; // eslint-disable-line no-var, no-unused-vars From 5bdc21eabe5ecdfb61dd628807faa271674e8caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Tue, 28 Nov 2023 00:13:14 +0100 Subject: [PATCH 19/41] Lower clamping warning to debug message, because it can happen and it is no issue. --- src/track/beats.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/track/beats.cpp b/src/track/beats.cpp index 0bcc3143135..d8600979c2b 100644 --- a/src/track/beats.cpp +++ b/src/track/beats.cpp @@ -67,8 +67,8 @@ Beats::ConstIterator Beats::ConstIterator::operator+=(Beats::ConstIterator::diff // Detect integer overflow in `m_beatOffset + n` const int maxBeatOffset = std::numeric_limits::max(); if (m_beatOffset > maxBeatOffset - n) { - qWarning() << "Beats: Iterator" << m_beatOffset << "+" << n - << "would go out of possible range, capping at latest possible position."; + qDebug() << "Beats: Iterator" << m_beatOffset << "+" << n + << "would go out of possible range, capping at latest possible position."; m_it = m_beats->m_markers.cend(); m_beatOffset = maxBeatOffset; updateValue(); @@ -115,8 +115,8 @@ Beats::ConstIterator Beats::ConstIterator::operator-=(Beats::ConstIterator::diff // Detect integer overflow const int minBeatOffset = std::numeric_limits::lowest(); if (m_beatOffset < minBeatOffset + n) { - qWarning() << "Beats Iterator" << m_beatOffset << "-" << n - << "would go out of possible range, capping at earliest possible position."; + qDebug() << "Beats Iterator" << m_beatOffset << "-" << n + << "would go out of possible range, capping at earliest possible position."; m_it = m_beats->m_markers.cbegin(); m_beatOffset = minBeatOffset; updateValue(); From 84cdd61206784feaa5e211fc6c34e463230b1223 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Mon, 4 Dec 2023 00:22:49 +0100 Subject: [PATCH 20/41] Tracks table: don't wrap around when Shift is pressed --- src/widget/wlibrarytableview.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/widget/wlibrarytableview.cpp b/src/widget/wlibrarytableview.cpp index 28734f46996..d4885207c3b 100644 --- a/src/widget/wlibrarytableview.cpp +++ b/src/widget/wlibrarytableview.cpp @@ -324,6 +324,7 @@ QModelIndex WLibraryTableView::moveCursor(CursorAction cursorAction, // handler in `QAbstractItemView` uses to either move the cursor, move // the selection, or extend the selection depending on which modifier // keys are held down. + // Note: Shift modifier prevents wrap-around. case QAbstractItemView::MoveUp: case QAbstractItemView::MoveDown: { const QModelIndex current = currentIndex(); @@ -333,13 +334,13 @@ QModelIndex WLibraryTableView::moveCursor(CursorAction cursorAction, if (cursorAction == QAbstractItemView::MoveDown) { if (row + 1 < pModel->rowCount()) { return pModel->index(row + 1, column); - } else { + } else if (!modifiers.testFlag(Qt::ShiftModifier)) { return pModel->index(0, column); } } else { if (row - 1 >= 0) { return pModel->index(row - 1, column); - } else { + } else if (!modifiers.testFlag(Qt::ShiftModifier)) { return pModel->index(pModel->rowCount() - 1, column); } } From cfc642bf91e9e97d562828ba7d21a64ce7ac3695 Mon Sep 17 00:00:00 2001 From: Joerg Date: Wed, 6 Dec 2023 23:44:27 +0100 Subject: [PATCH 21/41] Append .bind(this) to all the callback functions --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index bde7fca988a..e27905a2c0d 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -26,44 +26,44 @@ class TraktorZ1Class { } registerInputPackets() { - const message = new HIDPacket("message", 0x1, this.messageCallback); + const message = new HIDPacket("message", 0x1, this.messageCallback.bind(this)); // Mode button - this.registerInputButton(message, "[ControlX]", "!mode", 0x1D, 0x2, this.modeHandler); + this.registerInputButton(message, "[ControlX]", "!mode", 0x1D, 0x2, this.modeHandler.bind(this)); // Headphone buttons - this.registerInputButton(message, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler); - this.registerInputButton(message, "[Channel2]", "!pfl", 0x1D, 0x1, this.headphoneHandler); + this.registerInputButton(message, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler.bind(this)); + this.registerInputButton(message, "[Channel2]", "!pfl", 0x1D, 0x1, this.headphoneHandler.bind(this)); // FX buttons - this.registerInputButton(message, "[Channel1]", "!fx", 0x1D, 0x4, this.fxHandler); - this.registerInputButton(message, "[Channel2]", "!fx", 0x1D, 0x8, this.fxHandler); + this.registerInputButton(message, "[Channel1]", "!fx", 0x1D, 0x4, this.fxHandler.bind(this)); + this.registerInputButton(message, "[Channel2]", "!fx", 0x1D, 0x8, this.fxHandler.bind(this)); // EQ knobs - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x3, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x5, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x7, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0xD, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0xF, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter1", 0x11, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x3, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x5, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x7, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0xD, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0xF, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter1", 0x11, 0xFFFF, this.parameterHandler.bind(this)); // FX knobs - this.registerInputScaler(message, "[QuickEffectRack1_[Channel1]]", "super1", 0x9, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[QuickEffectRack1_[Channel2]]", "super1", 0x13, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[QuickEffectRack1_[Channel1]]", "super1", 0x9, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[QuickEffectRack1_[Channel2]]", "super1", 0x13, 0xFFFF, this.parameterHandler.bind(this)); // Gain knobs - this.registerInputScaler(message, "[Channel1]", "pregain", 0x1, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[Channel2]", "pregain", 0xB, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[Channel1]", "pregain", 0x1, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[Channel2]", "pregain", 0xB, 0xFFFF, this.parameterHandler.bind(this)); // Headphone mix - this.registerInputScaler(message, "[Master]", "headMix", 0x15, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[Master]", "headMix", 0x15, 0xFFFF, this.parameterHandler.bind(this)); // Volume faders - this.registerInputScaler(message, "[Channel1]", "volume", 0x17, 0xFFFF, this.parameterHandler); - this.registerInputScaler(message, "[Channel2]", "volume", 0x19, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[Channel1]", "volume", 0x17, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[Channel2]", "volume", 0x19, 0xFFFF, this.parameterHandler.bind(this)); // Crossfader - this.registerInputScaler(message, "[Master]", "crossfader", 0x1B, 0xFFFF, this.parameterHandler); + this.registerInputScaler(message, "[Master]", "crossfader", 0x1B, 0xFFFF, this.parameterHandler.bind(this)); this.controller.registerInputPacket(message); @@ -132,14 +132,14 @@ class TraktorZ1Class { this.controller.registerOutputPacket(output); - engine.makeConnection("[QuickEffectRack1_[Channel1]]", "enabled", this.outputHandler); - engine.makeConnection("[QuickEffectRack1_[Channel2]]", "enabled", this.outputHandler); + engine.makeConnection("[QuickEffectRack1_[Channel1]]", "enabled", this.outputHandler.bind(this)); + engine.makeConnection("[QuickEffectRack1_[Channel2]]", "enabled", this.outputHandler.bind(this)); - engine.makeConnection("[Channel1]", "pfl", this.outputHandler); - engine.makeConnection("[Channel2]", "pfl", this.outputHandler); + engine.makeConnection("[Channel1]", "pfl", this.outputHandler.bind(this)); + engine.makeConnection("[Channel2]", "pfl", this.outputHandler.bind(this)); - this.vuLeftConnection = engine.makeUnbufferedConnection("[Channel1]", "vu_meter", this.vuMeterHandler); - this.vuRightConnection = engine.makeUnbufferedConnection("[Channel2]", "vu_meter", this.vuMeterHandler); + this.vuLeftConnection = engine.makeUnbufferedConnection("[Channel1]", "vu_meter", this.vuMeterHandler.bind(this)); + this.vuRightConnection = engine.makeUnbufferedConnection("[Channel2]", "vu_meter", this.vuMeterHandler.bind(this)); this.lightDeck(false); } From 5b52cb323f7b3510b8a7cdf100dda7bea163d861 Mon Sep 17 00:00:00 2001 From: djantti Date: Thu, 7 Dec 2023 21:21:41 +0200 Subject: [PATCH 22/41] Change function prefix to TraktorZ1 --- res/controllers/Traktor Kontrol Z1.hid.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/controllers/Traktor Kontrol Z1.hid.xml b/res/controllers/Traktor Kontrol Z1.hid.xml index a4a6a2b6736..843adc9fd65 100644 --- a/res/controllers/Traktor Kontrol Z1.hid.xml +++ b/res/controllers/Traktor Kontrol Z1.hid.xml @@ -13,7 +13,7 @@ - + From ce8b3c8f00ac44388c95cd7d6d86272ca9bb3985 Mon Sep 17 00:00:00 2001 From: djantti Date: Thu, 7 Dec 2023 21:23:28 +0200 Subject: [PATCH 23/41] Remove empty line --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 1 - 1 file changed, 1 deletion(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index e27905a2c0d..c5adc62ef5b 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -191,7 +191,6 @@ class TraktorZ1Class { } } - parameterHandler(field) { engine.setParameter(field.group, field.name, field.value / 4095); } From 6cfb632f36d3e74db68313b74ec7b8019572f423 Mon Sep 17 00:00:00 2001 From: djantti Date: Fri, 8 Dec 2023 01:00:52 +0200 Subject: [PATCH 24/41] Always use two digits for 7-bit hex values --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index c5adc62ef5b..922b5f898a5 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -26,34 +26,34 @@ class TraktorZ1Class { } registerInputPackets() { - const message = new HIDPacket("message", 0x1, this.messageCallback.bind(this)); + const message = new HIDPacket("message", 0x01, this.messageCallback.bind(this)); // Mode button - this.registerInputButton(message, "[ControlX]", "!mode", 0x1D, 0x2, this.modeHandler.bind(this)); + this.registerInputButton(message, "[ControlX]", "!mode", 0x1D, 0x02, this.modeHandler.bind(this)); // Headphone buttons this.registerInputButton(message, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler.bind(this)); - this.registerInputButton(message, "[Channel2]", "!pfl", 0x1D, 0x1, this.headphoneHandler.bind(this)); + this.registerInputButton(message, "[Channel2]", "!pfl", 0x1D, 0x01, this.headphoneHandler.bind(this)); // FX buttons - this.registerInputButton(message, "[Channel1]", "!fx", 0x1D, 0x4, this.fxHandler.bind(this)); - this.registerInputButton(message, "[Channel2]", "!fx", 0x1D, 0x8, this.fxHandler.bind(this)); + this.registerInputButton(message, "[Channel1]", "!fx", 0x1D, 0x04, this.fxHandler.bind(this)); + this.registerInputButton(message, "[Channel2]", "!fx", 0x1D, 0x08, this.fxHandler.bind(this)); // EQ knobs - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x3, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x5, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x7, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0xD, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0xF, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x03, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x05, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x07, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0x0D, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0x0F, 0xFFFF, this.parameterHandler.bind(this)); this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter1", 0x11, 0xFFFF, this.parameterHandler.bind(this)); // FX knobs - this.registerInputScaler(message, "[QuickEffectRack1_[Channel1]]", "super1", 0x9, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[QuickEffectRack1_[Channel1]]", "super1", 0x09, 0xFFFF, this.parameterHandler.bind(this)); this.registerInputScaler(message, "[QuickEffectRack1_[Channel2]]", "super1", 0x13, 0xFFFF, this.parameterHandler.bind(this)); // Gain knobs - this.registerInputScaler(message, "[Channel1]", "pregain", 0x1, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[Channel2]", "pregain", 0xB, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[Channel1]", "pregain", 0x01, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(message, "[Channel2]", "pregain", 0x0B, 0xFFFF, this.parameterHandler.bind(this)); // Headphone mix this.registerInputScaler(message, "[Master]", "headMix", 0x15, 0xFFFF, this.parameterHandler.bind(this)); @@ -105,7 +105,7 @@ class TraktorZ1Class { output.addOutput("[ControlX]", "mode", 0x13, "B"); - output.addOutput("[Channel1]", "pfl", 0xF, "B"); + output.addOutput("[Channel1]", "pfl", 0x0F, "B"); output.addOutput("[Channel2]", "pfl", 0x10, "B"); output.addOutput("[Channel1]", "play_indicator", 0x11, "B"); @@ -114,21 +114,21 @@ class TraktorZ1Class { output.addOutput("[QuickEffectRack1_[Channel1]]", "enabled", 0x12, "B"); output.addOutput("[QuickEffectRack1_[Channel2]]", "enabled", 0x15, "B"); - output.addOutput("[Channel1]", "vu-30", 0x1, "B"); - output.addOutput("[Channel1]", "vu-15", 0x2, "B"); - output.addOutput("[Channel1]", "vu-6", 0x3, "B"); - output.addOutput("[Channel1]", "vu-3", 0x4, "B"); - output.addOutput("[Channel1]", "vu0", 0x5, "B"); - output.addOutput("[Channel1]", "vu3", 0x6, "B"); - output.addOutput("[Channel1]", "vu6", 0x7, "B"); - - output.addOutput("[Channel2]", "vu-30", 0x8, "B"); - output.addOutput("[Channel2]", "vu-15", 0x9, "B"); - output.addOutput("[Channel2]", "vu-6", 0xA, "B"); - output.addOutput("[Channel2]", "vu-3", 0xB, "B"); - output.addOutput("[Channel2]", "vu0", 0xC, "B"); - output.addOutput("[Channel2]", "vu3", 0xD, "B"); - output.addOutput("[Channel2]", "vu6", 0xE, "B"); + output.addOutput("[Channel1]", "vu-30", 0x01, "B"); + output.addOutput("[Channel1]", "vu-15", 0x02, "B"); + output.addOutput("[Channel1]", "vu-6", 0x03, "B"); + output.addOutput("[Channel1]", "vu-3", 0x04, "B"); + output.addOutput("[Channel1]", "vu0", 0x05, "B"); + output.addOutput("[Channel1]", "vu3", 0x06, "B"); + output.addOutput("[Channel1]", "vu6", 0x07, "B"); + + output.addOutput("[Channel2]", "vu-30", 0x08, "B"); + output.addOutput("[Channel2]", "vu-15", 0x09, "B"); + output.addOutput("[Channel2]", "vu-6", 0x0A, "B"); + output.addOutput("[Channel2]", "vu-3", 0x0B, "B"); + output.addOutput("[Channel2]", "vu0", 0x0C, "B"); + output.addOutput("[Channel2]", "vu3", 0x0D, "B"); + output.addOutput("[Channel2]", "vu6", 0x0E, "B"); this.controller.registerOutputPacket(output); @@ -164,13 +164,13 @@ class TraktorZ1Class { fxHandler(field) { if (field.value === 0) { // Always clear play indicator on button release - this.controller.setOutput(field.group, "play_indicator", 0x0, true); + this.controller.setOutput(field.group, "play_indicator", 0x00, true); return; } // Control playback when modifier is active if (this.modePressed) { // Match play indicator (red led) brightness to fx indicator (blue led) - const current = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0xA; + const current = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0x0A; this.controller.setOutput(field.group, "play_indicator", current, true); script.toggleControl(field.group, "play"); } else { @@ -199,7 +199,7 @@ class TraktorZ1Class { let ledValue; if (value === 0 || value === false) { // Off value (dimmed) - ledValue = 0xA; + ledValue = 0x0A; } else if (value === 1 || value === true) { // On value ledValue = 0x7F; @@ -208,7 +208,7 @@ class TraktorZ1Class { } lightDeck(switchOff) { - let softLight = 0xA; + let softLight = 0x0A; let fullLight = 0x7F; let current; From fea0b755d550db6b56f88977828624da13ac8bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Sun, 3 Dec 2023 23:19:43 +0100 Subject: [PATCH 25/41] Fix "possible loss of data" warnings with MSVC --- lib/reverb/Reverb.h | 10 +++++----- lib/reverb/dsp/Delay.h | 11 ++++------- lib/reverb/dsp/IIR1.h | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/lib/reverb/Reverb.h b/lib/reverb/Reverb.h index 8900d0bfd6e..c0d428dc642 100644 --- a/lib/reverb/Reverb.h +++ b/lib/reverb/Reverb.h @@ -61,7 +61,7 @@ class Lattice : public DSP::Delay { public: - sample_t process (sample_t x, double d) + sample_t process (sample_t x, sample_t d) { sample_t y = get(); x -= d*y; @@ -126,8 +126,8 @@ class ModLattice void init (int n, int w) { - n0 = n; - width = w; + n0 = static_cast(n); + width = static_cast(w); delay.init (n + w); } @@ -137,9 +137,9 @@ class ModLattice } inline sample_t - process (sample_t x, double d) + process (sample_t x, sample_t d) { - sample_t y = delay.get_linear (n0 + width * lfo.get()); + sample_t y = delay.get_linear (n0 + width * static_cast(lfo.get())); x += d * y; delay.put (x); return y - d * x; /* note sign */ diff --git a/lib/reverb/dsp/Delay.h b/lib/reverb/dsp/Delay.h index c7e77ce79f3..d530fee58a1 100644 --- a/lib/reverb/dsp/Delay.h +++ b/lib/reverb/dsp/Delay.h @@ -104,12 +104,9 @@ class Delay sample_t x2 = (*this) [n + 2]; /* sample_t (32bit) quicker than double here */ - sample_t a = - (3 * (x0 - x1) - x_1 + x2) * .5; - sample_t b = - 2 * x1 + x_1 - (5 * x0 + x2) * .5; - sample_t c = - (x1 - x_1) * .5; + sample_t a = (3 * (x0 - x1) - x_1 + x2) * .5f; + sample_t b = 2 * x1 + x_1 - (5 * x0 + x2) * .5f; + sample_t c = (x1 - x_1) * .5f; return x0 + (((a * f) + b) * f + c) * f; } @@ -124,7 +121,7 @@ class MovingAverage void init (uint n) { this->Delay::init (n); - over_n = 1. / n; + over_n = 1.f / n; /* adjust write pointer so we have a full history of zeros */ write = (write + size + 1) & size; state = 0; diff --git a/lib/reverb/dsp/IIR1.h b/lib/reverb/dsp/IIR1.h index 0d945b3ffc6..5df8391f70b 100644 --- a/lib/reverb/dsp/IIR1.h +++ b/lib/reverb/dsp/IIR1.h @@ -36,7 +36,7 @@ class LP1 public: T a0, b1, y1; - LP1 (double d = 1.) + LP1 (T d = 1.) { set (d); y1 = 0.; From ced594f9eadab7feb0dc7c5258aced407cac73a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Wed, 6 Dec 2023 12:00:11 +0100 Subject: [PATCH 26/41] Taglib: Disable missing dll-interface warning --- src/track/taglib/trackmetadata_file.cpp | 13 +++++++++++++ src/track/taglib/trackmetadata_mp4.cpp | 13 +++++++++++++ src/track/taglib/trackmetadata_xiph.cpp | 13 +++++++++++++ 3 files changed, 39 insertions(+) diff --git a/src/track/taglib/trackmetadata_file.cpp b/src/track/taglib/trackmetadata_file.cpp index a085a4dfcbe..53519771807 100644 --- a/src/track/taglib/trackmetadata_file.cpp +++ b/src/track/taglib/trackmetadata_file.cpp @@ -1,3 +1,12 @@ +#if defined(_MSC_VER) +#pragma warning(push) +// https://github.com/taglib/taglib/issues/1185 +// warning C4251: 'TagLib::FileName::m_wname': class +// 'std::basic_string,std::allocator>' +// needs to have dll-interface to be used by clients of class 'TagLib::FileName' +#pragma warning(disable : 4251) +#endif + #include "track/taglib/trackmetadata_file.h" #include @@ -151,3 +160,7 @@ bool readAudioPropertiesFromFile( } // namespace taglib } // namespace mixxx + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif diff --git a/src/track/taglib/trackmetadata_mp4.cpp b/src/track/taglib/trackmetadata_mp4.cpp index 8ffa4fabb23..993d5d0273f 100644 --- a/src/track/taglib/trackmetadata_mp4.cpp +++ b/src/track/taglib/trackmetadata_mp4.cpp @@ -1,3 +1,12 @@ +#if defined(_MSC_VER) +#pragma warning(push) +// https://github.com/taglib/taglib/issues/1185 +// warning C4251: 'TagLib::FileName::m_wname': class +// 'std::basic_string,std::allocator>' +// needs to have dll-interface to be used by clients of class 'TagLib::FileName' +#pragma warning(disable : 4251) +#endif + #include "track/taglib/trackmetadata_mp4.h" #include "track/taglib/trackmetadata_common.h" @@ -508,3 +517,7 @@ bool exportTrackMetadataIntoTag( } // namespace taglib } // namespace mixxx + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif diff --git a/src/track/taglib/trackmetadata_xiph.cpp b/src/track/taglib/trackmetadata_xiph.cpp index bb7f4a43c17..0e5bffb2689 100644 --- a/src/track/taglib/trackmetadata_xiph.cpp +++ b/src/track/taglib/trackmetadata_xiph.cpp @@ -1,3 +1,12 @@ +#if defined(_MSC_VER) +#pragma warning(push) +// https://github.com/taglib/taglib/issues/1185 +// warning C4251: 'TagLib::FileName::m_wname': class +// 'std::basic_string,std::allocator>' +// needs to have dll-interface to be used by clients of class 'TagLib::FileName' +#pragma warning(disable : 4251) +#endif + #include "track/taglib/trackmetadata_xiph.h" #include @@ -635,3 +644,7 @@ bool exportTrackMetadataIntoTag( } // namespace taglib } // namespace mixxx + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif From 41a2898789f48c85bfa885695d41fae06e2fac79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 7 Dec 2023 10:00:34 +0100 Subject: [PATCH 27/41] Improve NativeEventHandlerWin to avoid header conflict --- src/main.cpp | 2 +- src/nativeeventhandlerwin.cpp | 20 +++++++++++--------- src/nativeeventhandlerwin.h | 14 ++++++-------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9f78fa0061a..478af0d057b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,7 +59,7 @@ int runMixxx(MixxxApplication* pApp, const CmdlineArgs& args) { pApp->installEventFilter(&mainWindow); #if defined(__WINDOWS__) - WindowsEventHandler winEventHandler(pApp); + WindowsEventHandler winEventHandler; pApp->installNativeEventFilter(&winEventHandler); #endif diff --git a/src/nativeeventhandlerwin.cpp b/src/nativeeventhandlerwin.cpp index a8db4c62c64..dcd99a7ca5f 100644 --- a/src/nativeeventhandlerwin.cpp +++ b/src/nativeeventhandlerwin.cpp @@ -1,18 +1,19 @@ -#include "nativeeventhandlerwin.h" #if defined(__WINDOWS__) -#include -#include -#include -#include "moc_nativeeventhandlerwin.cpp" +#include "nativeeventhandlerwin.h" -WindowsEventHandler::WindowsEventHandler(MixxxApplication* pApp) - : m_pApp(pApp) { -} +// clang-format off +#include // needs to be included first +#include // for DefSubclassProc +#include // for MSG, RedrawWindow PostMessageW +// clang-format on + +#include "moc_nativeeventhandlerwin.cpp" bool WindowsEventHandler::nativeEventFilter( const QByteArray& eventType, void* message, long* result) { - MSG* msg = (MSG*)message; + Q_UNUSED(eventType); + MSG* msg = reinterpret_cast(message); if (msg && msg->message == WM_NCLBUTTONDOWN) { // Trigger the modal loop to prevent 500ms wait in Event Loop // when Windows setting "Show window contents while dragging" is enabled @@ -38,4 +39,5 @@ bool WindowsEventHandler::nativeEventFilter( // so other recipients will also receive this message subsequently return false; } + #endif diff --git a/src/nativeeventhandlerwin.h b/src/nativeeventhandlerwin.h index 3f1f4f0016c..0d0a924b3d0 100644 --- a/src/nativeeventhandlerwin.h +++ b/src/nativeeventhandlerwin.h @@ -1,15 +1,13 @@ -#include - #if defined(__WINDOWS__) -#include "mixxxapplication.h" + +#include class WindowsEventHandler : public QAbstractNativeEventFilter { public: - WindowsEventHandler(MixxxApplication* pApp); - - bool nativeEventFilter(const QByteArray& eventType, void* message, long* result); + WindowsEventHandler() = default; + ~WindowsEventHandler() override = default; - private: - MixxxApplication* m_pApp; + bool nativeEventFilter(const QByteArray& eventType, void* message, long* result) override; }; + #endif From 326357d8eededccd7a8d24def0f936bac60d9f15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Wed, 6 Dec 2023 16:05:46 +0100 Subject: [PATCH 28/41] Add missing include --- src/controllers/hid/hidioglobaloutputreportfifo.h | 3 +-- src/util/console.cpp | 2 ++ src/util/safelywritablefile.cpp | 2 ++ src/waveform/renderers/allshader/waveformrendererpreroll.cpp | 1 + src/widget/wspinnyglsl.cpp | 1 + src/widget/wvumeterglsl.cpp | 1 + 6 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/controllers/hid/hidioglobaloutputreportfifo.h b/src/controllers/hid/hidioglobaloutputreportfifo.h index 2feb5aa80ba..634a03ae43a 100644 --- a/src/controllers/hid/hidioglobaloutputreportfifo.h +++ b/src/controllers/hid/hidioglobaloutputreportfifo.h @@ -1,12 +1,11 @@ #pragma once -#include +#include #include "rigtorp/SPSCQueue.h" struct RuntimeLoggingCategory; class QMutex; -class QByteArray; typedef struct hid_device_ hid_device; diff --git a/src/util/console.cpp b/src/util/console.cpp index 9c3f5a85059..60e1e895a34 100644 --- a/src/util/console.cpp +++ b/src/util/console.cpp @@ -6,6 +6,8 @@ #include #include +#include + #include "util/versionstore.h" typedef BOOL(WINAPI* pfGetCurrentConsoleFontEx)(HANDLE, BOOL, PCONSOLE_FONT_INFOEX); diff --git a/src/util/safelywritablefile.cpp b/src/util/safelywritablefile.cpp index 25fdbbe06ab..dcfa952469c 100644 --- a/src/util/safelywritablefile.cpp +++ b/src/util/safelywritablefile.cpp @@ -7,6 +7,8 @@ #if defined(__WINDOWS__) #include + +#include #endif namespace mixxx { diff --git a/src/waveform/renderers/allshader/waveformrendererpreroll.cpp b/src/waveform/renderers/allshader/waveformrendererpreroll.cpp index d9cc49a4ec1..a54f4828285 100644 --- a/src/waveform/renderers/allshader/waveformrendererpreroll.cpp +++ b/src/waveform/renderers/allshader/waveformrendererpreroll.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "skin/legacy/skincontext.h" #include "util/texture.h" diff --git a/src/widget/wspinnyglsl.cpp b/src/widget/wspinnyglsl.cpp index 71f84f31a2a..17f20ef70e0 100644 --- a/src/widget/wspinnyglsl.cpp +++ b/src/widget/wspinnyglsl.cpp @@ -1,6 +1,7 @@ #include "widget/wspinnyglsl.h" #include +#include #include "moc_wspinnyglsl.cpp" #include "util/texture.h" diff --git a/src/widget/wvumeterglsl.cpp b/src/widget/wvumeterglsl.cpp index 1a2f90f46ea..cd1ff511eef 100644 --- a/src/widget/wvumeterglsl.cpp +++ b/src/widget/wvumeterglsl.cpp @@ -1,6 +1,7 @@ #include "widget/wvumeterglsl.h" #include +#include #include "moc_wvumeterglsl.cpp" #include "util/duration.h" From 38ae1cc38b9a2cb649fd12ba1ec8415251d79b65 Mon Sep 17 00:00:00 2001 From: djantti Date: Fri, 8 Dec 2023 01:05:57 +0200 Subject: [PATCH 29/41] Use a more descriptive naming scheme for variables and functions --- res/controllers/Traktor-Kontrol-Z1-scripts.js | 124 +++++++++--------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/res/controllers/Traktor-Kontrol-Z1-scripts.js b/res/controllers/Traktor-Kontrol-Z1-scripts.js index 922b5f898a5..a18ad0b7af8 100644 --- a/res/controllers/Traktor-Kontrol-Z1-scripts.js +++ b/res/controllers/Traktor-Kontrol-Z1-scripts.js @@ -26,46 +26,46 @@ class TraktorZ1Class { } registerInputPackets() { - const message = new HIDPacket("message", 0x01, this.messageCallback.bind(this)); + const InputReport0x01 = new HIDPacket("InputReport0x01", 0x01, this.inputReportCallback.bind(this)); // Mode button - this.registerInputButton(message, "[ControlX]", "!mode", 0x1D, 0x02, this.modeHandler.bind(this)); + this.registerInputButton(InputReport0x01, "[ControlX]", "!mode", 0x1D, 0x02, this.modeHandler.bind(this)); // Headphone buttons - this.registerInputButton(message, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler.bind(this)); - this.registerInputButton(message, "[Channel2]", "!pfl", 0x1D, 0x01, this.headphoneHandler.bind(this)); + this.registerInputButton(InputReport0x01, "[Channel1]", "!pfl", 0x1D, 0x10, this.headphoneHandler.bind(this)); + this.registerInputButton(InputReport0x01, "[Channel2]", "!pfl", 0x1D, 0x01, this.headphoneHandler.bind(this)); // FX buttons - this.registerInputButton(message, "[Channel1]", "!fx", 0x1D, 0x04, this.fxHandler.bind(this)); - this.registerInputButton(message, "[Channel2]", "!fx", 0x1D, 0x08, this.fxHandler.bind(this)); + this.registerInputButton(InputReport0x01, "[Channel1]", "!fx", 0x1D, 0x04, this.fxHandler.bind(this)); + this.registerInputButton(InputReport0x01, "[Channel2]", "!fx", 0x1D, 0x08, this.fxHandler.bind(this)); // EQ knobs - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x03, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x05, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x07, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0x0D, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0x0F, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[EqualizerRack1_[Channel2]_Effect1]", "parameter1", 0x11, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[EqualizerRack1_[Channel1]_Effect1]", "parameter3", 0x03, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[EqualizerRack1_[Channel1]_Effect1]", "parameter2", 0x05, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[EqualizerRack1_[Channel1]_Effect1]", "parameter1", 0x07, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[EqualizerRack1_[Channel2]_Effect1]", "parameter3", 0x0D, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[EqualizerRack1_[Channel2]_Effect1]", "parameter2", 0x0F, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[EqualizerRack1_[Channel2]_Effect1]", "parameter1", 0x11, 0xFFFF, this.parameterHandler.bind(this)); // FX knobs - this.registerInputScaler(message, "[QuickEffectRack1_[Channel1]]", "super1", 0x09, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[QuickEffectRack1_[Channel2]]", "super1", 0x13, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[QuickEffectRack1_[Channel1]]", "super1", 0x09, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[QuickEffectRack1_[Channel2]]", "super1", 0x13, 0xFFFF, this.parameterHandler.bind(this)); // Gain knobs - this.registerInputScaler(message, "[Channel1]", "pregain", 0x01, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[Channel2]", "pregain", 0x0B, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[Channel1]", "pregain", 0x01, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[Channel2]", "pregain", 0x0B, 0xFFFF, this.parameterHandler.bind(this)); // Headphone mix - this.registerInputScaler(message, "[Master]", "headMix", 0x15, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[Master]", "headMix", 0x15, 0xFFFF, this.parameterHandler.bind(this)); // Volume faders - this.registerInputScaler(message, "[Channel1]", "volume", 0x17, 0xFFFF, this.parameterHandler.bind(this)); - this.registerInputScaler(message, "[Channel2]", "volume", 0x19, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[Channel1]", "volume", 0x17, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[Channel2]", "volume", 0x19, 0xFFFF, this.parameterHandler.bind(this)); // Crossfader - this.registerInputScaler(message, "[Master]", "crossfader", 0x1B, 0xFFFF, this.parameterHandler.bind(this)); + this.registerInputScaler(InputReport0x01, "[Master]", "crossfader", 0x1B, 0xFFFF, this.parameterHandler.bind(this)); - this.controller.registerInputPacket(message); + this.controller.registerInputPacket(InputReport0x01); // Soft takeover for all knobs and faders engine.softTakeover("[EqualizerRack1_[Channel1]_Effect1]", "parameter3", true); @@ -90,47 +90,47 @@ class TraktorZ1Class { engine.softTakeover("[Master]", "crossfader", true); } - registerInputButton(message, group, name, offset, bitmask, callback) { - message.addControl(group, name, offset, "B", bitmask); - message.setCallback(group, name, callback); + registerInputButton(inputReport, group, name, offset, bitmask, callback) { + inputReport.addControl(group, name, offset, "B", bitmask); + inputReport.setCallback(group, name, callback); } - registerInputScaler(message, group, name, offset, bitmask, callback) { - message.addControl(group, name, offset, "H", bitmask); - message.setCallback(group, name, callback); + registerInputScaler(inputReport, group, name, offset, bitmask, callback) { + inputReport.addControl(group, name, offset, "H", bitmask); + inputReport.setCallback(group, name, callback); } registerOutputPackets() { - const output = new HIDPacket("output", 0x80); + const OutputReport0x80 = new HIDPacket("OutputReport0x80", 0x80); - output.addOutput("[ControlX]", "mode", 0x13, "B"); + OutputReport0x80.addOutput("[ControlX]", "mode", 0x13, "B"); - output.addOutput("[Channel1]", "pfl", 0x0F, "B"); - output.addOutput("[Channel2]", "pfl", 0x10, "B"); + OutputReport0x80.addOutput("[Channel1]", "pfl", 0x0F, "B"); + OutputReport0x80.addOutput("[Channel2]", "pfl", 0x10, "B"); - output.addOutput("[Channel1]", "play_indicator", 0x11, "B"); - output.addOutput("[Channel2]", "play_indicator", 0x14, "B"); + OutputReport0x80.addOutput("[Channel1]", "play_indicator", 0x11, "B"); + OutputReport0x80.addOutput("[Channel2]", "play_indicator", 0x14, "B"); - output.addOutput("[QuickEffectRack1_[Channel1]]", "enabled", 0x12, "B"); - output.addOutput("[QuickEffectRack1_[Channel2]]", "enabled", 0x15, "B"); + OutputReport0x80.addOutput("[QuickEffectRack1_[Channel1]]", "enabled", 0x12, "B"); + OutputReport0x80.addOutput("[QuickEffectRack1_[Channel2]]", "enabled", 0x15, "B"); - output.addOutput("[Channel1]", "vu-30", 0x01, "B"); - output.addOutput("[Channel1]", "vu-15", 0x02, "B"); - output.addOutput("[Channel1]", "vu-6", 0x03, "B"); - output.addOutput("[Channel1]", "vu-3", 0x04, "B"); - output.addOutput("[Channel1]", "vu0", 0x05, "B"); - output.addOutput("[Channel1]", "vu3", 0x06, "B"); - output.addOutput("[Channel1]", "vu6", 0x07, "B"); + OutputReport0x80.addOutput("[Channel1]", "vu-30", 0x01, "B"); + OutputReport0x80.addOutput("[Channel1]", "vu-15", 0x02, "B"); + OutputReport0x80.addOutput("[Channel1]", "vu-6", 0x03, "B"); + OutputReport0x80.addOutput("[Channel1]", "vu-3", 0x04, "B"); + OutputReport0x80.addOutput("[Channel1]", "vu0", 0x05, "B"); + OutputReport0x80.addOutput("[Channel1]", "vu3", 0x06, "B"); + OutputReport0x80.addOutput("[Channel1]", "vu6", 0x07, "B"); - output.addOutput("[Channel2]", "vu-30", 0x08, "B"); - output.addOutput("[Channel2]", "vu-15", 0x09, "B"); - output.addOutput("[Channel2]", "vu-6", 0x0A, "B"); - output.addOutput("[Channel2]", "vu-3", 0x0B, "B"); - output.addOutput("[Channel2]", "vu0", 0x0C, "B"); - output.addOutput("[Channel2]", "vu3", 0x0D, "B"); - output.addOutput("[Channel2]", "vu6", 0x0E, "B"); + OutputReport0x80.addOutput("[Channel2]", "vu-30", 0x08, "B"); + OutputReport0x80.addOutput("[Channel2]", "vu-15", 0x09, "B"); + OutputReport0x80.addOutput("[Channel2]", "vu-6", 0x0A, "B"); + OutputReport0x80.addOutput("[Channel2]", "vu-3", 0x0B, "B"); + OutputReport0x80.addOutput("[Channel2]", "vu0", 0x0C, "B"); + OutputReport0x80.addOutput("[Channel2]", "vu3", 0x0D, "B"); + OutputReport0x80.addOutput("[Channel2]", "vu6", 0x0E, "B"); - this.controller.registerOutputPacket(output); + this.controller.registerOutputPacket(OutputReport0x80); engine.makeConnection("[QuickEffectRack1_[Channel1]]", "enabled", this.outputHandler.bind(this)); engine.makeConnection("[QuickEffectRack1_[Channel2]]", "enabled", this.outputHandler.bind(this)); @@ -170,8 +170,8 @@ class TraktorZ1Class { // Control playback when modifier is active if (this.modePressed) { // Match play indicator (red led) brightness to fx indicator (blue led) - const current = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0x0A; - this.controller.setOutput(field.group, "play_indicator", current, true); + const ledBrightness = engine.getValue("[QuickEffectRack1_" + field.group + "]", "enabled") ? 0x7F : 0x0A; + this.controller.setOutput(field.group, "play_indicator", ledBrightness, true); script.toggleControl(field.group, "play"); } else { script.toggleControl("[QuickEffectRack1_" + field.group + "]", "enabled"); @@ -210,7 +210,7 @@ class TraktorZ1Class { lightDeck(switchOff) { let softLight = 0x0A; let fullLight = 0x7F; - let current; + let ledBrightness; if (switchOff) { softLight = 0x00; @@ -219,18 +219,18 @@ class TraktorZ1Class { this.controller.setOutput("[ControlX]", "mode", softLight, true); - current = engine.getValue("[QuickEffectRack1_[Channel1]]", "enabled") ? fullLight : softLight; - this.controller.setOutput("[QuickEffectRack1_[Channel1]]", "enabled", current, true); - current = engine.getValue("[QuickEffectRack1_[Channel2]]", "enabled") ? fullLight : softLight; - this.controller.setOutput("[QuickEffectRack1_[Channel2]]", "enabled", current, true); + ledBrightness = engine.getValue("[QuickEffectRack1_[Channel1]]", "enabled") ? fullLight : softLight; + this.controller.setOutput("[QuickEffectRack1_[Channel1]]", "enabled", ledBrightness, true); + ledBrightness = engine.getValue("[QuickEffectRack1_[Channel2]]", "enabled") ? fullLight : softLight; + this.controller.setOutput("[QuickEffectRack1_[Channel2]]", "enabled", ledBrightness, true); - current = engine.getValue("[Channel1]", "pfl") ? fullLight : softLight; - this.controller.setOutput("[Channel1]", "pfl", current, true); - current = engine.getValue("[Channel2]", "pfl") ? fullLight : softLight; - this.controller.setOutput("[Channel2]", "pfl", current, true); + ledBrightness = engine.getValue("[Channel1]", "pfl") ? fullLight : softLight; + this.controller.setOutput("[Channel1]", "pfl", ledBrightness, true); + ledBrightness = engine.getValue("[Channel2]", "pfl") ? fullLight : softLight; + this.controller.setOutput("[Channel2]", "pfl", ledBrightness, true); } - messageCallback(packet, data) { + inputReportCallback(packet, data) { for (const name in data) { if (Object.hasOwnProperty.call(data, name)) { this.controller.processButton(data[name]); From e84bd66417746d33dd9d92a84e66f47f0fafc49f Mon Sep 17 00:00:00 2001 From: m0dB Date: Thu, 7 Dec 2023 23:07:36 +0100 Subject: [PATCH 30/41] edits from ronso0 from scaling-svg-for-retina --- res/skins/LateNight/style_palemoon.qss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/res/skins/LateNight/style_palemoon.qss b/res/skins/LateNight/style_palemoon.qss index c0d775092a1..2966410dab3 100644 --- a/res/skins/LateNight/style_palemoon.qss +++ b/res/skins/LateNight/style_palemoon.qss @@ -830,6 +830,8 @@ WBeatSpinBox::down-button, WEffectChainPresetButton::menu-indicator { image: url(skin:../LateNight/palemoon/buttons/btn__fx_settings.svg) no-repeat center center; + width: 18px; + height: 18px; } #FxSlotsCollapsed { @@ -909,6 +911,8 @@ WEffectSelector:!editable:on { /* Arrow size is set in C++ to match the library font size */ WSearchLineEdit::down-arrow { image: url(skin:../LateNight/palemoon/buttons/btn__fx_selector_down.svg); + width: 16px; + height: 24px; } From 3617f82c300fbd4e6e7c2c1067014c68396149c3 Mon Sep 17 00:00:00 2001 From: m0dB Date: Thu, 7 Dec 2023 22:54:48 +0100 Subject: [PATCH 31/41] width + height x2 and set viewBox w h + manually adjusted aux fx left mid right without viewBox --- res/skins/LateNight/classic/buttons/btn__.svg | 2 +- .../LateNight/classic/buttons/btn__1.svg | 4 +- .../LateNight/classic/buttons/btn__2.svg | 4 +- .../LateNight/classic/buttons/btn__3.svg | 6 +- .../LateNight/classic/buttons/btn__4.svg | 4 +- .../LateNight/classic/buttons/btn__5.svg | 4 +- .../LateNight/classic/buttons/btn__6.svg | 4 +- .../LateNight/classic/buttons/btn__7.svg | 4 +- .../LateNight/classic/buttons/btn__8.svg | 4 +- .../LateNight/classic/buttons/btn___.svg | 2 +- .../classic/buttons/btn___active.svg | 2 +- .../classic/buttons/btn___pressed.svg | 2 +- .../classic/buttons/btn__arrow_left_down.svg | 4 +- .../classic/buttons/btn__arrow_left_up.svg | 4 +- .../classic/buttons/btn__arrow_right_down.svg | 4 +- .../classic/buttons/btn__arrow_right_up.svg | 4 +- .../classic/buttons/btn__autodj_addrandom.svg | 2 +- .../buttons/btn__autodj_enable_off.svg | 2 +- .../classic/buttons/btn__autodj_enable_on.svg | 2 +- .../classic/buttons/btn__autodj_fade.svg | 2 +- .../buttons/btn__autodj_fade_disabled.svg | 2 +- .../btn__autodj_repeat_playlist_off.svg | 2 +- .../btn__autodj_repeat_playlist_on.svg | 2 +- .../classic/buttons/btn__autodj_shuffle.svg | 2 +- .../classic/buttons/btn__autodj_skip.svg | 2 +- .../buttons/btn__autodj_skip_disabled.svg | 2 +- .../classic/buttons/btn__aux_play.svg | 2 +- .../classic/buttons/btn__beat_curpos.svg | 2 +- .../buttons/btn__beat_curpos_active_12.svg | 2 +- .../buttons/btn__beat_curpos_active_34.svg | 2 +- .../buttons/btn__beat_curpos_large.svg | 2 +- .../btn__beatgrid_controls_collapse.svg | 6 +- .../buttons/btn__beatgrid_controls_expand.svg | 6 +- .../classic/buttons/btn__beatjump_left.svg | 6 +- .../classic/buttons/btn__beatjump_right.svg | 6 +- .../classic/buttons/btn__beats_earlier.svg | 6 +- .../classic/buttons/btn__beats_faster.svg | 6 +- .../buttons/btn__beats_hotcues_earlier.svg | 6 +- .../buttons/btn__beats_hotcues_later.svg | 6 +- .../classic/buttons/btn__beats_later.svg | 6 +- .../classic/buttons/btn__beats_slower.svg | 6 +- .../classic/buttons/btn__broadcast_off.svg | 4 +- .../classic/buttons/btn__broadcast_on.svg | 4 +- .../classic/buttons/btn__collapse.svg | 6 +- .../classic/buttons/btn__collapse_dim.svg | 6 +- .../classic/buttons/btn__cue_deck.svg | 2 +- .../LateNight/classic/buttons/btn__delete.svg | 2 +- .../buttons/btn__effectselector_border.svg | 2 +- .../LateNight/classic/buttons/btn__eject.svg | 2 +- .../classic/buttons/btn__eject_active_12.svg | 2 +- .../classic/buttons/btn__eject_active_34.svg | 2 +- .../classic/buttons/btn__eq_kill_high.svg | 6 +- .../classic/buttons/btn__eq_kill_low.svg | 6 +- .../classic/buttons/btn__eq_kill_mid.svg | 6 +- .../LateNight/classic/buttons/btn__expand.svg | 4 +- .../classic/buttons/btn__expand_dim.svg | 6 +- .../LateNight/classic/buttons/btn__fx_2.svg | 2 +- .../classic/buttons/btn__fx_2_active.svg | 2 +- .../LateNight/classic/buttons/btn__fx_3.svg | 2 +- .../classic/buttons/btn__fx_3_active.svg | 2 +- .../LateNight/classic/buttons/btn__fx_4.svg | 2 +- .../classic/buttons/btn__fx_4_active.svg | 2 +- .../LateNight/classic/buttons/btn__fx_FX1.svg | 2 +- .../classic/buttons/btn__fx_FX1_active.svg | 2 +- .../LateNight/classic/buttons/btn__fx_FX2.svg | 2 +- .../classic/buttons/btn__fx_FX2_active.svg | 2 +- .../LateNight/classic/buttons/btn__fx_FX3.svg | 2 +- .../classic/buttons/btn__fx_FX3_active.svg | 2 +- .../LateNight/classic/buttons/btn__fx_FX4.svg | 2 +- .../classic/buttons/btn__fx_FX4_active.svg | 2 +- .../classic/buttons/btn__fx_focus.svg | 4 +- .../classic/buttons/btn__fx_focus_active.svg | 4 +- .../classic/buttons/btn__fx_mixmode_d+w.svg | 4 +- .../classic/buttons/btn__fx_mixmode_d-w.svg | 4 +- .../classic/buttons/btn__fx_selector_down.svg | 2 +- .../buttons/btn__fx_selector_down_pressed.svg | 2 +- .../classic/buttons/btn__fx_settings.svg | 2 +- .../classic/buttons/btn__fx_toggle.svg | 2 +- .../classic/buttons/btn__fx_toggle_active.svg | 2 +- .../classic/buttons/btn__intro_end.svg | 2 +- .../classic/buttons/btn__intro_start.svg | 2 +- .../classic/buttons/btn__key_down.svg | 2 +- .../classic/buttons/btn__key_match.svg | 2 +- .../LateNight/classic/buttons/btn__key_up.svg | 2 +- .../classic/buttons/btn__keylock.svg | 2 +- .../buttons/btn__keylock_active_12.svg | 2 +- .../buttons/btn__keylock_active_34.svg | 2 +- .../classic/buttons/btn__leader_deck.svg | 6 +- .../classic/buttons/btn__lib_bpm_down.svg | 6 +- .../buttons/btn__lib_bpm_locked_orange.svg | 2 +- .../buttons/btn__lib_bpm_unlocked_grey.svg | 2 +- .../classic/buttons/btn__lib_bpm_up.svg | 4 +- .../classic/buttons/btn__lib_checkbox.svg | 2 +- .../buttons/btn__lib_checkbox_checked.svg | 2 +- .../buttons/btn__lib_checkmark_grey.svg | 2 +- .../btn__lib_checkmark_indeterminate_grey.svg | 2 +- ...tn__lib_checkmark_indeterminate_orange.svg | 2 +- .../buttons/btn__lib_checkmark_orange.svg | 2 +- .../classic/buttons/btn__lib_clear_search.svg | 6 +- .../buttons/btn__lib_clear_search_focus.svg | 6 +- .../buttons/btn__lib_preview_pause.svg | 6 +- .../classic/buttons/btn__lib_preview_play.svg | 6 +- .../buttons/btn__lib_radio_button_gold_on.svg | 2 +- .../buttons/btn__lib_radio_button_off.svg | 2 +- .../btn__lib_radio_button_on_yellow.svg | 2 +- .../btn__lib_radio_button_yellow_on.svg | 2 +- .../classic/buttons/btn__lib_sort_down.svg | 2 +- .../classic/buttons/btn__lib_sort_up.svg | 2 +- .../LateNight/classic/buttons/btn__loop.svg | 2 +- .../classic/buttons/btn__loop_in.svg | 6 +- .../classic/buttons/btn__loop_out.svg | 6 +- .../classic/buttons/btn__menu_checkbox.svg | 2 +- .../buttons/btn__menu_checkbox_checked.svg | 2 +- .../classic/buttons/btn__mic_duck_auto.svg | 2 +- .../classic/buttons/btn__mic_duck_manual.svg | 2 +- .../classic/buttons/btn__mic_duck_off.svg | 2 +- .../classic/buttons/btn__mic_talk.svg | 2 +- .../LateNight/classic/buttons/btn__minus.svg | 2 +- .../LateNight/classic/buttons/btn__next.svg | 2 +- .../classic/buttons/btn__outro_end.svg | 2 +- .../classic/buttons/btn__outro_start.svg | 2 +- .../classic/buttons/btn__pause_deck_mini.svg | 4 +- .../classic/buttons/btn__pause_preview.svg | 2 +- .../classic/buttons/btn__pause_sampler.svg | 4 +- .../LateNight/classic/buttons/btn__pfl.svg | 2 +- .../classic/buttons/btn__play_deck.svg | 2 +- .../classic/buttons/btn__play_deck_mini.svg | 2 +- .../classic/buttons/btn__play_sampler.svg | 2 +- .../LateNight/classic/buttons/btn__plus.svg | 2 +- .../classic/buttons/btn__plus_flat.svg | 2 +- .../LateNight/classic/buttons/btn__prev.svg | 2 +- .../classic/buttons/btn__quantize.svg | 2 +- .../buttons/btn__quantize_active_12.svg | 2 +- .../buttons/btn__quantize_active_34.svg | 2 +- .../classic/buttons/btn__rec_dot.svg | 2 +- .../classic/buttons/btn__rec_dot_active.svg | 2 +- .../LateNight/classic/buttons/btn__reloop.svg | 2 +- .../LateNight/classic/buttons/btn__repeat.svg | 2 +- .../classic/buttons/btn__repeat_active_12.svg | 2 +- .../classic/buttons/btn__repeat_active_34.svg | 2 +- .../classic/buttons/btn__reverse.svg | 2 +- .../classic/buttons/btn__settings_close.svg | 2 +- .../classic/buttons/btn__settings_off.svg | 2 +- .../classic/buttons/btn__settings_on.svg | 2 +- .../LateNight/classic/buttons/btn__slip.svg | 2 +- .../classic/buttons/btn__slip_active_12.svg | 2 +- .../classic/buttons/btn__slip_active_34.svg | 2 +- .../LateNight/classic/buttons/btn__split.svg | 2 +- .../classic/buttons/btn__split_active.svg | 4 +- .../LateNight/classic/buttons/btn__star.svg | 2 +- .../classic/buttons/btn__sync_deck.svg | 2 +- .../classic/buttons/btn__sync_leader.svg | 2 +- .../buttons/btn__sync_leader_active.svg | 2 +- .../classic/buttons/btn__sync_sampler.svg | 2 +- .../classic/buttons/btn__xfader_aux_left.svg | 17 ++++- .../buttons/btn__xfader_aux_left_off.svg | 17 ++++- .../classic/buttons/btn__xfader_aux_mid.svg | 17 ++++- .../buttons/btn__xfader_aux_mid_off.svg | 17 ++++- .../classic/buttons/btn__xfader_aux_right.svg | 17 ++++- .../buttons/btn__xfader_aux_right_off.svg | 17 ++++- .../buttons/btn__xfader_deck_left_default.svg | 17 ++++- .../buttons/btn__xfader_deck_left_off.svg | 17 ++++- .../buttons/btn__xfader_deck_left_warning.svg | 17 ++++- .../buttons/btn__xfader_deck_mid_off.svg | 17 ++++- .../buttons/btn__xfader_deck_mid_warning.svg | 19 +++--- .../btn__xfader_deck_right_default.svg | 17 ++++- .../buttons/btn__xfader_deck_right_off.svg | 17 ++++- .../btn__xfader_deck_right_warning.svg | 17 ++++- .../buttons/btn__xfader_sampler_left.svg | 2 +- .../buttons/btn__xfader_sampler_main.svg | 2 +- .../buttons/btn__xfader_sampler_right.svg | 2 +- .../LateNight/palemoon/buttons/btn__.svg | 2 +- .../LateNight/palemoon/buttons/btn__1.svg | 2 +- .../palemoon/buttons/btn__1_active.svg | 2 +- .../palemoon/buttons/btn__1_active_dark.svg | 2 +- .../palemoon/buttons/btn__1_loop.svg | 6 +- .../LateNight/palemoon/buttons/btn__2.svg | 2 +- .../palemoon/buttons/btn__2_active.svg | 2 +- .../palemoon/buttons/btn__2_active_dark.svg | 2 +- .../palemoon/buttons/btn__2_loop.svg | 6 +- .../LateNight/palemoon/buttons/btn__3.svg | 2 +- .../palemoon/buttons/btn__3_active.svg | 2 +- .../palemoon/buttons/btn__3_active_dark.svg | 2 +- .../palemoon/buttons/btn__3_loop.svg | 6 +- .../LateNight/palemoon/buttons/btn__4.svg | 2 +- .../palemoon/buttons/btn__4_active.svg | 2 +- .../palemoon/buttons/btn__4_active_dark.svg | 2 +- .../palemoon/buttons/btn__4_loop.svg | 6 +- .../LateNight/palemoon/buttons/btn__5.svg | 2 +- .../palemoon/buttons/btn__5_active.svg | 2 +- .../palemoon/buttons/btn__5_active_dark.svg | 2 +- .../palemoon/buttons/btn__5_loop.svg | 6 +- .../LateNight/palemoon/buttons/btn__6.svg | 2 +- .../palemoon/buttons/btn__6_active.svg | 2 +- .../palemoon/buttons/btn__6_active_dark.svg | 2 +- .../palemoon/buttons/btn__6_loop.svg | 6 +- .../LateNight/palemoon/buttons/btn__7.svg | 2 +- .../palemoon/buttons/btn__7_active.svg | 2 +- .../palemoon/buttons/btn__7_active_dark.svg | 2 +- .../palemoon/buttons/btn__7_loop.svg | 6 +- .../LateNight/palemoon/buttons/btn__8.svg | 2 +- .../palemoon/buttons/btn__8_active.svg | 2 +- .../palemoon/buttons/btn__8_active_dark.svg | 2 +- .../palemoon/buttons/btn__8_loop.svg | 6 +- .../palemoon/buttons/btn___active.svg | 2 +- .../palemoon/buttons/btn___pressed.svg | 2 +- .../palemoon/buttons/btn__active.svg | 2 +- .../palemoon/buttons/btn__arrow_left_down.svg | 2 +- .../buttons/btn__arrow_left_down_active.svg | 2 +- .../palemoon/buttons/btn__arrow_left_up.svg | 2 +- .../buttons/btn__arrow_left_up_active.svg | 2 +- .../buttons/btn__arrow_right_down.svg | 2 +- .../buttons/btn__arrow_right_down_active.svg | 2 +- .../palemoon/buttons/btn__arrow_right_up.svg | 2 +- .../buttons/btn__arrow_right_up_active.svg | 2 +- .../buttons/btn__autodj_addrandom.svg | 2 +- .../buttons/btn__autodj_addrandom_pressed.svg | 2 +- .../buttons/btn__autodj_enable_off.svg | 2 +- .../buttons/btn__autodj_enable_on.svg | 2 +- .../palemoon/buttons/btn__autodj_fade.svg | 2 +- .../buttons/btn__autodj_fade_disabled.svg | 2 +- .../buttons/btn__autodj_fade_pressed.svg | 2 +- .../btn__autodj_repeat_playlist_off.svg | 2 +- .../btn__autodj_repeat_playlist_on.svg | 2 +- .../palemoon/buttons/btn__autodj_shuffle.svg | 2 +- .../buttons/btn__autodj_shuffle_pressed.svg | 2 +- .../palemoon/buttons/btn__autodj_skip.svg | 2 +- .../buttons/btn__autodj_skip_disabled.svg | 2 +- .../buttons/btn__autodj_skip_pressed.svg | 2 +- .../palemoon/buttons/btn__aux_play.svg | 2 +- .../palemoon/buttons/btn__aux_play_active.svg | 2 +- .../palemoon/buttons/btn__beat_curpos.svg | 2 +- .../buttons/btn__beat_curpos_active_12.svg | 2 +- .../buttons/btn__beat_curpos_active_34.svg | 2 +- .../buttons/btn__beat_curpos_large.svg | 2 +- .../buttons/btn__beat_curpos_large_active.svg | 2 +- .../btn__beatgrid_controls_collapse.svg | 2 +- .../buttons/btn__beatgrid_controls_expand.svg | 2 +- .../palemoon/buttons/btn__beatjump_left.svg | 2 +- .../buttons/btn__beatjump_left_active.svg | 2 +- .../palemoon/buttons/btn__beatjump_right.svg | 2 +- .../buttons/btn__beatjump_right_active.svg | 2 +- .../palemoon/buttons/btn__beats_earlier.svg | 2 +- .../buttons/btn__beats_earlier_active.svg | 2 +- .../palemoon/buttons/btn__beats_faster.svg | 2 +- .../buttons/btn__beats_faster_active.svg | 2 +- .../buttons/btn__beats_hotcues_earlier.svg | 2 +- .../btn__beats_hotcues_earlier_active.svg | 2 +- .../buttons/btn__beats_hotcues_later.svg | 2 +- .../btn__beats_hotcues_later_active.svg | 2 +- .../palemoon/buttons/btn__beats_later.svg | 2 +- .../buttons/btn__beats_later_active.svg | 2 +- .../palemoon/buttons/btn__beats_slower.svg | 2 +- .../buttons/btn__beats_slower_active.svg | 2 +- .../palemoon/buttons/btn__broadcast_off.svg | 2 +- .../palemoon/buttons/btn__broadcast_on.svg | 2 +- .../palemoon/buttons/btn__collapse_dim.svg | 2 +- .../palemoon/buttons/btn__cue_deck.svg | 2 +- .../palemoon/buttons/btn__cue_deck_active.svg | 2 +- .../palemoon/buttons/btn__delete.svg | 2 +- .../palemoon/buttons/btn__effect_selected.svg | 2 +- .../LateNight/palemoon/buttons/btn__eject.svg | 2 +- .../palemoon/buttons/btn__eject_active_12.svg | 2 +- .../palemoon/buttons/btn__eject_active_34.svg | 2 +- .../buttons/btn__eq_kill_dot_active_green.svg | 2 +- .../buttons/btn__eq_kill_dot_active_red.svg | 2 +- .../palemoon/buttons/btn__eq_kill_dot_off.svg | 2 +- .../palemoon/buttons/btn__eq_kill_high.svg | 2 +- .../palemoon/buttons/btn__eq_kill_low.svg | 2 +- .../palemoon/buttons/btn__eq_kill_mid.svg | 2 +- .../palemoon/buttons/btn__expand_dim.svg | 2 +- .../palemoon/buttons/btn__fx_focus.svg | 2 +- .../palemoon/buttons/btn__fx_focus_active.svg | 2 +- .../palemoon/buttons/btn__fx_mixmode_d+w.svg | 2 +- .../palemoon/buttons/btn__fx_mixmode_d-w.svg | 2 +- .../buttons/btn__fx_selector_down.svg | 26 +++++++- .../palemoon/buttons/btn__fx_settings.svg | 2 +- .../palemoon/buttons/btn__fx_toggle.svg | 2 +- .../buttons/btn__fx_toggle_active.svg | 2 +- .../palemoon/buttons/btn__intro_end.svg | 2 +- .../buttons/btn__intro_end_active.svg | 2 +- .../palemoon/buttons/btn__intro_start.svg | 2 +- .../buttons/btn__intro_start_active.svg | 2 +- .../palemoon/buttons/btn__key_down.svg | 2 +- .../palemoon/buttons/btn__key_down_active.svg | 2 +- .../palemoon/buttons/btn__key_match.svg | 2 +- .../buttons/btn__key_match_active.svg | 2 +- .../palemoon/buttons/btn__key_up.svg | 2 +- .../palemoon/buttons/btn__key_up_active.svg | 2 +- .../palemoon/buttons/btn__keylock.svg | 2 +- .../buttons/btn__keylock_active_12.svg | 2 +- .../buttons/btn__keylock_active_34.svg | 2 +- .../buttons/btn__lib_bpm_locked_black.svg | 2 +- .../buttons/btn__lib_bpm_locked_blue.svg | 2 +- .../buttons/btn__lib_bpm_unlocked_grey.svg | 2 +- .../palemoon/buttons/btn__lib_checkbox.svg | 2 +- .../buttons/btn__lib_checkmark_blue.svg | 2 +- .../buttons/btn__lib_checkmark_grey.svg | 2 +- .../btn__lib_checkmark_indeterminate_blue.svg | 2 +- .../btn__lib_checkmark_indeterminate_grey.svg | 2 +- .../buttons/btn__lib_checkmark_ivory.svg | 2 +- .../buttons/btn__lib_clear_search.svg | 2 +- .../buttons/btn__lib_clear_search_focus.svg | 2 +- .../buttons/btn__lib_preview_pause.svg | 2 +- .../buttons/btn__lib_preview_play.svg | 2 +- .../buttons/btn__lib_radio_button_off.svg | 2 +- .../buttons/btn__lib_radio_button_on_blue.svg | 2 +- .../palemoon/buttons/btn__lib_sort_down.svg | 2 +- .../palemoon/buttons/btn__lib_sort_up.svg | 2 +- .../buttons/btn__lib_spinbox_down.svg | 2 +- .../palemoon/buttons/btn__lib_spinbox_up.svg | 2 +- .../LateNight/palemoon/buttons/btn__loop.svg | 2 +- .../palemoon/buttons/btn__loop_active.svg | 2 +- .../palemoon/buttons/btn__loop_in.svg | 2 +- .../palemoon/buttons/btn__loop_in_active.svg | 2 +- .../palemoon/buttons/btn__loop_out.svg | 2 +- .../palemoon/buttons/btn__loop_out_active.svg | 2 +- .../palemoon/buttons/btn__menu_checkbox.svg | 2 +- .../buttons/btn__menu_checkbox_checked.svg | 2 +- .../palemoon/buttons/btn__mic_duck_auto.svg | 2 +- .../palemoon/buttons/btn__mic_duck_manual.svg | 2 +- .../palemoon/buttons/btn__mic_duck_off.svg | 2 +- .../palemoon/buttons/btn__mic_talk.svg | 2 +- .../palemoon/buttons/btn__mic_talk_active.svg | 2 +- .../LateNight/palemoon/buttons/btn__minus.svg | 2 +- .../palemoon/buttons/btn__minus_active.svg | 2 +- .../palemoon/buttons/btn__outro_end.svg | 2 +- .../buttons/btn__outro_end_active.svg | 2 +- .../palemoon/buttons/btn__outro_start.svg | 2 +- .../buttons/btn__outro_start_active.svg | 2 +- .../palemoon/buttons/btn__pause_deck_mini.svg | 2 +- .../palemoon/buttons/btn__pause_sampler.svg | 2 +- .../LateNight/palemoon/buttons/btn__pfl.svg | 2 +- .../palemoon/buttons/btn__pfl_active.svg | 2 +- .../palemoon/buttons/btn__play_deck.svg | 2 +- .../buttons/btn__play_deck_active.svg | 2 +- .../palemoon/buttons/btn__play_deck_mini.svg | 2 +- .../palemoon/buttons/btn__play_sampler.svg | 2 +- .../LateNight/palemoon/buttons/btn__plus.svg | 2 +- .../palemoon/buttons/btn__plus_active.svg | 2 +- .../palemoon/buttons/btn__plus_flat.svg | 2 +- .../LateNight/palemoon/buttons/btn__prev.svg | 2 +- .../palemoon/buttons/btn__quantize.svg | 2 +- .../buttons/btn__quantize_active_12.svg | 2 +- .../buttons/btn__quantize_active_34.svg | 2 +- .../buttons/btn__rate_center_cyan.svg | 2 +- .../palemoon/buttons/btn__rate_center_off.svg | 2 +- .../palemoon/buttons/btn__rec_dot.svg | 2 +- .../palemoon/buttons/btn__rec_dot_active.svg | 2 +- .../palemoon/buttons/btn__reloop.svg | 2 +- .../palemoon/buttons/btn__reloop_active.svg | 2 +- .../palemoon/buttons/btn__repeat.svg | 2 +- .../buttons/btn__repeat_active_12.svg | 2 +- .../buttons/btn__repeat_active_34.svg | 2 +- .../palemoon/buttons/btn__reverse.svg | 2 +- .../palemoon/buttons/btn__reverse_active.svg | 2 +- .../palemoon/buttons/btn__settings_off.svg | 2 +- .../palemoon/buttons/btn__settings_on.svg | 2 +- .../LateNight/palemoon/buttons/btn__slip.svg | 2 +- .../palemoon/buttons/btn__slip_active_12.svg | 2 +- .../palemoon/buttons/btn__slip_active_34.svg | 2 +- .../palemoon/buttons/btn__spinbox_down.svg | 2 +- .../palemoon/buttons/btn__spinbox_up.svg | 2 +- .../LateNight/palemoon/buttons/btn__split.svg | 2 +- .../palemoon/buttons/btn__split_active.svg | 2 +- .../LateNight/palemoon/buttons/btn__star.svg | 2 +- .../palemoon/buttons/btn__sync_deck.svg | 2 +- .../buttons/btn__sync_deck_active.svg | 2 +- .../palemoon/buttons/btn__sync_leader.svg | 2 +- .../buttons/btn__sync_leader_explicit.svg | 2 +- .../buttons/btn__sync_leader_implicit.svg | 2 +- .../palemoon/buttons/btn__sync_sampler.svg | 2 +- .../buttons/btn__sync_sampler_active.svg | 2 +- .../palemoon/buttons/btn__xfader_aux_left.svg | 65 ++++++++++++++++--- .../buttons/btn__xfader_aux_left_off.svg | 22 ++++++- .../palemoon/buttons/btn__xfader_aux_mid.svg | 65 ++++++++++++++++--- .../buttons/btn__xfader_aux_mid_off.svg | 22 ++++++- .../buttons/btn__xfader_aux_right.svg | 65 ++++++++++++++++--- .../buttons/btn__xfader_aux_right_off.svg | 23 ++++++- .../buttons/btn__xfader_deck_left_default.svg | 65 ++++++++++++++++--- .../buttons/btn__xfader_deck_left_off.svg | 22 ++++++- .../buttons/btn__xfader_deck_left_warning.svg | 65 ++++++++++++++++--- .../buttons/btn__xfader_deck_mid_off.svg | 22 ++++++- .../buttons/btn__xfader_deck_mid_warning.svg | 65 ++++++++++++++++--- .../btn__xfader_deck_right_default.svg | 65 ++++++++++++++++--- .../buttons/btn__xfader_deck_right_off.svg | 22 ++++++- .../btn__xfader_deck_right_warning.svg | 65 ++++++++++++++++--- .../buttons/btn__xfader_sampler_left.svg | 2 +- .../buttons/btn__xfader_sampler_main.svg | 2 +- .../buttons/btn__xfader_sampler_right.svg | 2 +- res/skins/LateNight/style_classic.qss | 4 ++ 391 files changed, 1270 insertions(+), 551 deletions(-) diff --git a/res/skins/LateNight/classic/buttons/btn__.svg b/res/skins/LateNight/classic/buttons/btn__.svg index fb66ea1ba22..96b4ec0260f 100644 --- a/res/skins/LateNight/classic/buttons/btn__.svg +++ b/res/skins/LateNight/classic/buttons/btn__.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__1.svg b/res/skins/LateNight/classic/buttons/btn__1.svg index 365e088f60b..67c27b0200a 100644 --- a/res/skins/LateNight/classic/buttons/btn__1.svg +++ b/res/skins/LateNight/classic/buttons/btn__1.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg6" version="1.1" - height="24" - width="20"> + height="48" + width="40" viewBox="0 0 20 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__2.svg b/res/skins/LateNight/classic/buttons/btn__2.svg index a5944b6c2f6..71bc84c8e90 100644 --- a/res/skins/LateNight/classic/buttons/btn__2.svg +++ b/res/skins/LateNight/classic/buttons/btn__2.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg18" version="1.1" - height="24" - width="20"> + height="48" + width="40" viewBox="0 0 20 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__3.svg b/res/skins/LateNight/classic/buttons/btn__3.svg index 0543822b1bd..bccda28f095 100644 --- a/res/skins/LateNight/classic/buttons/btn__3.svg +++ b/res/skins/LateNight/classic/buttons/btn__3.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="20" - height="24" + width="40" + height="48" version="1.1" - id="svg18"> + id="svg18" viewBox="0 0 20 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__4.svg b/res/skins/LateNight/classic/buttons/btn__4.svg index a6f0aad608b..c42928864c9 100644 --- a/res/skins/LateNight/classic/buttons/btn__4.svg +++ b/res/skins/LateNight/classic/buttons/btn__4.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg30" version="1.1" - height="24" - width="20"> + height="48" + width="40" viewBox="0 0 20 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__5.svg b/res/skins/LateNight/classic/buttons/btn__5.svg index 626ab3a186b..95239978ceb 100644 --- a/res/skins/LateNight/classic/buttons/btn__5.svg +++ b/res/skins/LateNight/classic/buttons/btn__5.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg42" version="1.1" - height="24" - width="20"> + height="48" + width="40" viewBox="0 0 20 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__6.svg b/res/skins/LateNight/classic/buttons/btn__6.svg index 9a95353b4fb..4becb62d4dd 100644 --- a/res/skins/LateNight/classic/buttons/btn__6.svg +++ b/res/skins/LateNight/classic/buttons/btn__6.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg54" version="1.1" - height="24" - width="20"> + height="48" + width="40" viewBox="0 0 20 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__7.svg b/res/skins/LateNight/classic/buttons/btn__7.svg index 8aeaea2d1d2..78be668d8ab 100644 --- a/res/skins/LateNight/classic/buttons/btn__7.svg +++ b/res/skins/LateNight/classic/buttons/btn__7.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg66" version="1.1" - height="24" - width="20"> + height="48" + width="40" viewBox="0 0 20 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__8.svg b/res/skins/LateNight/classic/buttons/btn__8.svg index 01cdb08bee5..0d9ac1ffbc9 100644 --- a/res/skins/LateNight/classic/buttons/btn__8.svg +++ b/res/skins/LateNight/classic/buttons/btn__8.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg78" version="1.1" - height="24" - width="20"> + height="48" + width="40" viewBox="0 0 20 24"> diff --git a/res/skins/LateNight/classic/buttons/btn___.svg b/res/skins/LateNight/classic/buttons/btn___.svg index fb66ea1ba22..96b4ec0260f 100644 --- a/res/skins/LateNight/classic/buttons/btn___.svg +++ b/res/skins/LateNight/classic/buttons/btn___.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn___active.svg b/res/skins/LateNight/classic/buttons/btn___active.svg index fb66ea1ba22..96b4ec0260f 100644 --- a/res/skins/LateNight/classic/buttons/btn___active.svg +++ b/res/skins/LateNight/classic/buttons/btn___active.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn___pressed.svg b/res/skins/LateNight/classic/buttons/btn___pressed.svg index fb66ea1ba22..96b4ec0260f 100644 --- a/res/skins/LateNight/classic/buttons/btn___pressed.svg +++ b/res/skins/LateNight/classic/buttons/btn___pressed.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__arrow_left_down.svg b/res/skins/LateNight/classic/buttons/btn__arrow_left_down.svg index fd5381fe36e..1f1aeedc09a 100644 --- a/res/skins/LateNight/classic/buttons/btn__arrow_left_down.svg +++ b/res/skins/LateNight/classic/buttons/btn__arrow_left_down.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg6" version="1.1" - height="24" - width="24"> + height="48" + width="48" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__arrow_left_up.svg b/res/skins/LateNight/classic/buttons/btn__arrow_left_up.svg index 09a8d6866ea..9c3ee80cda4 100644 --- a/res/skins/LateNight/classic/buttons/btn__arrow_left_up.svg +++ b/res/skins/LateNight/classic/buttons/btn__arrow_left_up.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg6" version="1.1" - height="24" - width="24"> + height="48" + width="48" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__arrow_right_down.svg b/res/skins/LateNight/classic/buttons/btn__arrow_right_down.svg index 5d08e4b10dd..7b1ebcf1c2b 100644 --- a/res/skins/LateNight/classic/buttons/btn__arrow_right_down.svg +++ b/res/skins/LateNight/classic/buttons/btn__arrow_right_down.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg6" version="1.1" - height="24" - width="24"> + height="48" + width="48" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__arrow_right_up.svg b/res/skins/LateNight/classic/buttons/btn__arrow_right_up.svg index f881b330867..0de2a874776 100644 --- a/res/skins/LateNight/classic/buttons/btn__arrow_right_up.svg +++ b/res/skins/LateNight/classic/buttons/btn__arrow_right_up.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg6" version="1.1" - height="24" - width="24"> + height="48" + width="48" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_addrandom.svg b/res/skins/LateNight/classic/buttons/btn__autodj_addrandom.svg index b1252b84084..57830987f72 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_addrandom.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_addrandom.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_enable_off.svg b/res/skins/LateNight/classic/buttons/btn__autodj_enable_off.svg index 7c6f1aa799b..a754b70bddf 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_enable_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_enable_off.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_enable_on.svg b/res/skins/LateNight/classic/buttons/btn__autodj_enable_on.svg index d5ad1aa5988..f4840bc96cb 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_enable_on.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_enable_on.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_fade.svg b/res/skins/LateNight/classic/buttons/btn__autodj_fade.svg index 9e3a1e6be6d..64d21700d65 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_fade.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_fade.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_fade_disabled.svg b/res/skins/LateNight/classic/buttons/btn__autodj_fade_disabled.svg index c04b92a16c0..6b0ed8d828d 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_fade_disabled.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_fade_disabled.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_repeat_playlist_off.svg b/res/skins/LateNight/classic/buttons/btn__autodj_repeat_playlist_off.svg index 78105883d6e..fc8b637d0c5 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_repeat_playlist_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_repeat_playlist_off.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_repeat_playlist_on.svg b/res/skins/LateNight/classic/buttons/btn__autodj_repeat_playlist_on.svg index fb992a016f7..36f087d1f2a 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_repeat_playlist_on.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_repeat_playlist_on.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_shuffle.svg b/res/skins/LateNight/classic/buttons/btn__autodj_shuffle.svg index f8919cb86d7..f0ed9e00734 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_shuffle.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_shuffle.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_skip.svg b/res/skins/LateNight/classic/buttons/btn__autodj_skip.svg index 32c65f92ee2..5628d91b1b4 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_skip.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_skip.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__autodj_skip_disabled.svg b/res/skins/LateNight/classic/buttons/btn__autodj_skip_disabled.svg index 1de2abb0285..afe3f15e5dc 100644 --- a/res/skins/LateNight/classic/buttons/btn__autodj_skip_disabled.svg +++ b/res/skins/LateNight/classic/buttons/btn__autodj_skip_disabled.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__aux_play.svg b/res/skins/LateNight/classic/buttons/btn__aux_play.svg index 22e5e1a18d2..027f9eb1e16 100644 --- a/res/skins/LateNight/classic/buttons/btn__aux_play.svg +++ b/res/skins/LateNight/classic/buttons/btn__aux_play.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__beat_curpos.svg b/res/skins/LateNight/classic/buttons/btn__beat_curpos.svg index b850982aed1..b247dee750a 100644 --- a/res/skins/LateNight/classic/buttons/btn__beat_curpos.svg +++ b/res/skins/LateNight/classic/buttons/btn__beat_curpos.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__beat_curpos_active_12.svg b/res/skins/LateNight/classic/buttons/btn__beat_curpos_active_12.svg index 36912c9573f..baab57db1cd 100644 --- a/res/skins/LateNight/classic/buttons/btn__beat_curpos_active_12.svg +++ b/res/skins/LateNight/classic/buttons/btn__beat_curpos_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__beat_curpos_active_34.svg b/res/skins/LateNight/classic/buttons/btn__beat_curpos_active_34.svg index 3714e8e6b3f..618909aa246 100644 --- a/res/skins/LateNight/classic/buttons/btn__beat_curpos_active_34.svg +++ b/res/skins/LateNight/classic/buttons/btn__beat_curpos_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__beat_curpos_large.svg b/res/skins/LateNight/classic/buttons/btn__beat_curpos_large.svg index 7549be191a8..140ecb1aa8b 100644 --- a/res/skins/LateNight/classic/buttons/btn__beat_curpos_large.svg +++ b/res/skins/LateNight/classic/buttons/btn__beat_curpos_large.svg @@ -1,5 +1,5 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__beatgrid_controls_collapse.svg b/res/skins/LateNight/classic/buttons/btn__beatgrid_controls_collapse.svg index 462694904e1..948724dd7a5 100644 --- a/res/skins/LateNight/classic/buttons/btn__beatgrid_controls_collapse.svg +++ b/res/skins/LateNight/classic/buttons/btn__beatgrid_controls_collapse.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="26" - height="52" + width="52" + height="104" version="1.1" - id="svg16"> + id="svg16" viewBox="0 0 26 52"> diff --git a/res/skins/LateNight/classic/buttons/btn__beatgrid_controls_expand.svg b/res/skins/LateNight/classic/buttons/btn__beatgrid_controls_expand.svg index ab5630de104..37b54925d00 100644 --- a/res/skins/LateNight/classic/buttons/btn__beatgrid_controls_expand.svg +++ b/res/skins/LateNight/classic/buttons/btn__beatgrid_controls_expand.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="26" - height="52" + width="52" + height="104" version="1.1" - id="svg16"> + id="svg16" viewBox="0 0 26 52"> diff --git a/res/skins/LateNight/classic/buttons/btn__beatjump_left.svg b/res/skins/LateNight/classic/buttons/btn__beatjump_left.svg index 97fbca88422..622a6e015d6 100644 --- a/res/skins/LateNight/classic/buttons/btn__beatjump_left.svg +++ b/res/skins/LateNight/classic/buttons/btn__beatjump_left.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg14"> + id="svg14" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__beatjump_right.svg b/res/skins/LateNight/classic/buttons/btn__beatjump_right.svg index 328bcd1ad2a..cb83ddf1baf 100644 --- a/res/skins/LateNight/classic/buttons/btn__beatjump_right.svg +++ b/res/skins/LateNight/classic/buttons/btn__beatjump_right.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg14"> + id="svg14" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__beats_earlier.svg b/res/skins/LateNight/classic/buttons/btn__beats_earlier.svg index e7e3cdac411..88822e160c5 100644 --- a/res/skins/LateNight/classic/buttons/btn__beats_earlier.svg +++ b/res/skins/LateNight/classic/buttons/btn__beats_earlier.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg16"> + id="svg16" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__beats_faster.svg b/res/skins/LateNight/classic/buttons/btn__beats_faster.svg index ab98b314d79..8f892e772e5 100644 --- a/res/skins/LateNight/classic/buttons/btn__beats_faster.svg +++ b/res/skins/LateNight/classic/buttons/btn__beats_faster.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg12"> + id="svg12" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__beats_hotcues_earlier.svg b/res/skins/LateNight/classic/buttons/btn__beats_hotcues_earlier.svg index c09b365644d..bf2ce561db5 100644 --- a/res/skins/LateNight/classic/buttons/btn__beats_hotcues_earlier.svg +++ b/res/skins/LateNight/classic/buttons/btn__beats_hotcues_earlier.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg14"> + id="svg14" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__beats_hotcues_later.svg b/res/skins/LateNight/classic/buttons/btn__beats_hotcues_later.svg index 3d15769d019..18ad6d52b85 100644 --- a/res/skins/LateNight/classic/buttons/btn__beats_hotcues_later.svg +++ b/res/skins/LateNight/classic/buttons/btn__beats_hotcues_later.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg14"> + id="svg14" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__beats_later.svg b/res/skins/LateNight/classic/buttons/btn__beats_later.svg index d6bf2ac3e2e..4facc987736 100644 --- a/res/skins/LateNight/classic/buttons/btn__beats_later.svg +++ b/res/skins/LateNight/classic/buttons/btn__beats_later.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg18"> + id="svg18" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__beats_slower.svg b/res/skins/LateNight/classic/buttons/btn__beats_slower.svg index d437748a685..649f498882b 100644 --- a/res/skins/LateNight/classic/buttons/btn__beats_slower.svg +++ b/res/skins/LateNight/classic/buttons/btn__beats_slower.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg12"> + id="svg12" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__broadcast_off.svg b/res/skins/LateNight/classic/buttons/btn__broadcast_off.svg index 03e40c901c6..726186412bd 100644 --- a/res/skins/LateNight/classic/buttons/btn__broadcast_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__broadcast_off.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg6" version="1.1" - height="16" - width="66"> + height="32" + width="132" viewBox="0 0 66 16"> diff --git a/res/skins/LateNight/classic/buttons/btn__broadcast_on.svg b/res/skins/LateNight/classic/buttons/btn__broadcast_on.svg index 5197fb5c058..e0a24ab2dbb 100644 --- a/res/skins/LateNight/classic/buttons/btn__broadcast_on.svg +++ b/res/skins/LateNight/classic/buttons/btn__broadcast_on.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg6" version="1.1" - height="16" - width="66"> + height="32" + width="132" viewBox="0 0 66 16"> diff --git a/res/skins/LateNight/classic/buttons/btn__collapse.svg b/res/skins/LateNight/classic/buttons/btn__collapse.svg index 078444b9758..45c9f8fb96d 100644 --- a/res/skins/LateNight/classic/buttons/btn__collapse.svg +++ b/res/skins/LateNight/classic/buttons/btn__collapse.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="14" - height="18" + width="28" + height="36" version="1.1" - id="svg10"> + id="svg10" viewBox="0 0 14 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__collapse_dim.svg b/res/skins/LateNight/classic/buttons/btn__collapse_dim.svg index e803bd217c2..ef9eb801a1b 100644 --- a/res/skins/LateNight/classic/buttons/btn__collapse_dim.svg +++ b/res/skins/LateNight/classic/buttons/btn__collapse_dim.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="14" - height="18" + width="28" + height="36" version="1.1" - id="svg10"> + id="svg10" viewBox="0 0 14 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__cue_deck.svg b/res/skins/LateNight/classic/buttons/btn__cue_deck.svg index f06846a3544..da743b833d0 100644 --- a/res/skins/LateNight/classic/buttons/btn__cue_deck.svg +++ b/res/skins/LateNight/classic/buttons/btn__cue_deck.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__delete.svg b/res/skins/LateNight/classic/buttons/btn__delete.svg index 044b02548bc..8185e6f2fe6 100644 --- a/res/skins/LateNight/classic/buttons/btn__delete.svg +++ b/res/skins/LateNight/classic/buttons/btn__delete.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__effectselector_border.svg b/res/skins/LateNight/classic/buttons/btn__effectselector_border.svg index cc6c4645664..0364479a398 100644 --- a/res/skins/LateNight/classic/buttons/btn__effectselector_border.svg +++ b/res/skins/LateNight/classic/buttons/btn__effectselector_border.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__eject.svg b/res/skins/LateNight/classic/buttons/btn__eject.svg index ca7d2b8883d..64a70472b33 100644 --- a/res/skins/LateNight/classic/buttons/btn__eject.svg +++ b/res/skins/LateNight/classic/buttons/btn__eject.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__eject_active_12.svg b/res/skins/LateNight/classic/buttons/btn__eject_active_12.svg index a5b1bdaf835..73c49a7492a 100644 --- a/res/skins/LateNight/classic/buttons/btn__eject_active_12.svg +++ b/res/skins/LateNight/classic/buttons/btn__eject_active_12.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__eject_active_34.svg b/res/skins/LateNight/classic/buttons/btn__eject_active_34.svg index 1b24b74135c..bdb1e3cb33a 100644 --- a/res/skins/LateNight/classic/buttons/btn__eject_active_34.svg +++ b/res/skins/LateNight/classic/buttons/btn__eject_active_34.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__eq_kill_high.svg b/res/skins/LateNight/classic/buttons/btn__eq_kill_high.svg index cc38e50b6c7..6613c281174 100644 --- a/res/skins/LateNight/classic/buttons/btn__eq_kill_high.svg +++ b/res/skins/LateNight/classic/buttons/btn__eq_kill_high.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="18" - height="18" + width="36" + height="36" version="1.1" - id="svg17"> + id="svg17" viewBox="0 0 18 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__eq_kill_low.svg b/res/skins/LateNight/classic/buttons/btn__eq_kill_low.svg index 84bc12f9080..21ac673f339 100644 --- a/res/skins/LateNight/classic/buttons/btn__eq_kill_low.svg +++ b/res/skins/LateNight/classic/buttons/btn__eq_kill_low.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="18" - height="18" + width="36" + height="36" version="1.1" - id="svg17"> + id="svg17" viewBox="0 0 18 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__eq_kill_mid.svg b/res/skins/LateNight/classic/buttons/btn__eq_kill_mid.svg index 305912dd65e..f9c12544135 100644 --- a/res/skins/LateNight/classic/buttons/btn__eq_kill_mid.svg +++ b/res/skins/LateNight/classic/buttons/btn__eq_kill_mid.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="18" - height="18" + width="36" + height="36" version="1.1" - id="svg17"> + id="svg17" viewBox="0 0 18 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__expand.svg b/res/skins/LateNight/classic/buttons/btn__expand.svg index 4aa24238a30..ff96038ea65 100644 --- a/res/skins/LateNight/classic/buttons/btn__expand.svg +++ b/res/skins/LateNight/classic/buttons/btn__expand.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg16" version="1.1" - height="18" - width="14"> + height="36" + width="28" viewBox="0 0 14 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__expand_dim.svg b/res/skins/LateNight/classic/buttons/btn__expand_dim.svg index d6bb246979e..bcd9c928bea 100644 --- a/res/skins/LateNight/classic/buttons/btn__expand_dim.svg +++ b/res/skins/LateNight/classic/buttons/btn__expand_dim.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="14" - height="18" + width="28" + height="36" version="1.1" - id="svg16"> + id="svg16" viewBox="0 0 14 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__fx_2.svg b/res/skins/LateNight/classic/buttons/btn__fx_2.svg index 5868f1e3725..92883ba6b35 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_2.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_2.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_2_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_2_active.svg index 8d693355e6c..7ea415781fd 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_2_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_2_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_3.svg b/res/skins/LateNight/classic/buttons/btn__fx_3.svg index f85178c69ab..d3c444ba845 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_3.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_3.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_3_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_3_active.svg index 43f3fb10c6e..251eca065cc 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_3_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_3_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_4.svg b/res/skins/LateNight/classic/buttons/btn__fx_4.svg index b03b4e9dd4b..8942acdb021 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_4.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_4.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_4_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_4_active.svg index a039bce0d1d..55f4de29dd7 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_4_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_4_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_FX1.svg b/res/skins/LateNight/classic/buttons/btn__fx_FX1.svg index 72f260009df..470fd41f32a 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_FX1.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_FX1.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_FX1_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_FX1_active.svg index f0fb0fc9c8c..a44e3299016 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_FX1_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_FX1_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_FX2.svg b/res/skins/LateNight/classic/buttons/btn__fx_FX2.svg index 24319417239..4f9eb4be624 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_FX2.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_FX2.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_FX2_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_FX2_active.svg index b26ae578a38..a11f9781d2e 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_FX2_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_FX2_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_FX3.svg b/res/skins/LateNight/classic/buttons/btn__fx_FX3.svg index 071ea2b965a..e82c998c5d8 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_FX3.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_FX3.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_FX3_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_FX3_active.svg index eb026958dfb..619a2b7a2e7 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_FX3_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_FX3_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_FX4.svg b/res/skins/LateNight/classic/buttons/btn__fx_FX4.svg index 6d42ce787ba..c153195817f 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_FX4.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_FX4.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_FX4_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_FX4_active.svg index 79cd7ec5d8c..e4f2529206a 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_FX4_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_FX4_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_focus.svg b/res/skins/LateNight/classic/buttons/btn__fx_focus.svg index 0277d12a656..edded1623cd 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_focus.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_focus.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg22" version="1.1" - height="18" - width="18"> + height="36" + width="36" viewBox="0 0 18 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__fx_focus_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_focus_active.svg index 718d6039755..1ece9ddd5f5 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_focus_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_focus_active.svg @@ -8,8 +8,8 @@ xmlns:xlink="http://www.w3.org/1999/xlink" id="svg32" version="1.1" - height="18" - width="18"> + height="36" + width="36" viewBox="0 0 18 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__fx_mixmode_d+w.svg b/res/skins/LateNight/classic/buttons/btn__fx_mixmode_d+w.svg index 1eb0567c00e..ad73eb9d10f 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_mixmode_d+w.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_mixmode_d+w.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg12" version="1.1" - height="24" - width="28"> + height="48" + width="56" viewBox="0 0 28 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__fx_mixmode_d-w.svg b/res/skins/LateNight/classic/buttons/btn__fx_mixmode_d-w.svg index 2ec166c932a..8e9dc6a5f03 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_mixmode_d-w.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_mixmode_d-w.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg12" version="1.1" - height="24" - width="28"> + height="48" + width="56" viewBox="0 0 28 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__fx_selector_down.svg b/res/skins/LateNight/classic/buttons/btn__fx_selector_down.svg index 23215c8710d..c2364b0196e 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_selector_down.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_selector_down.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_selector_down_pressed.svg b/res/skins/LateNight/classic/buttons/btn__fx_selector_down_pressed.svg index 1fb9b0abcb3..1bb566ea97e 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_selector_down_pressed.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_selector_down_pressed.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_settings.svg b/res/skins/LateNight/classic/buttons/btn__fx_settings.svg index e5ea012bed0..137fa011b93 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_settings.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_settings.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_toggle.svg b/res/skins/LateNight/classic/buttons/btn__fx_toggle.svg index 1f1524a6ca0..34e23206cf8 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_toggle.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_toggle.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__fx_toggle_active.svg b/res/skins/LateNight/classic/buttons/btn__fx_toggle_active.svg index 8760ce6f0b7..986d672f58b 100644 --- a/res/skins/LateNight/classic/buttons/btn__fx_toggle_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__fx_toggle_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__intro_end.svg b/res/skins/LateNight/classic/buttons/btn__intro_end.svg index ff3317eb727..0b46d96e8bb 100644 --- a/res/skins/LateNight/classic/buttons/btn__intro_end.svg +++ b/res/skins/LateNight/classic/buttons/btn__intro_end.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__intro_start.svg b/res/skins/LateNight/classic/buttons/btn__intro_start.svg index b0ebbb8369d..95f1672558f 100644 --- a/res/skins/LateNight/classic/buttons/btn__intro_start.svg +++ b/res/skins/LateNight/classic/buttons/btn__intro_start.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__key_down.svg b/res/skins/LateNight/classic/buttons/btn__key_down.svg index 753b2af4aea..e9a99cf5b23 100644 --- a/res/skins/LateNight/classic/buttons/btn__key_down.svg +++ b/res/skins/LateNight/classic/buttons/btn__key_down.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__key_match.svg b/res/skins/LateNight/classic/buttons/btn__key_match.svg index 7f77bd675cd..8376c6a942e 100644 --- a/res/skins/LateNight/classic/buttons/btn__key_match.svg +++ b/res/skins/LateNight/classic/buttons/btn__key_match.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__key_up.svg b/res/skins/LateNight/classic/buttons/btn__key_up.svg index 4821f68e91b..96dd7d097fa 100644 --- a/res/skins/LateNight/classic/buttons/btn__key_up.svg +++ b/res/skins/LateNight/classic/buttons/btn__key_up.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__keylock.svg b/res/skins/LateNight/classic/buttons/btn__keylock.svg index f403f41b4dd..4df76d97127 100644 --- a/res/skins/LateNight/classic/buttons/btn__keylock.svg +++ b/res/skins/LateNight/classic/buttons/btn__keylock.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__keylock_active_12.svg b/res/skins/LateNight/classic/buttons/btn__keylock_active_12.svg index c75e8ce4206..c3102821e51 100644 --- a/res/skins/LateNight/classic/buttons/btn__keylock_active_12.svg +++ b/res/skins/LateNight/classic/buttons/btn__keylock_active_12.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__keylock_active_34.svg b/res/skins/LateNight/classic/buttons/btn__keylock_active_34.svg index 69fe30027bd..b3600ebd729 100644 --- a/res/skins/LateNight/classic/buttons/btn__keylock_active_34.svg +++ b/res/skins/LateNight/classic/buttons/btn__keylock_active_34.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__leader_deck.svg b/res/skins/LateNight/classic/buttons/btn__leader_deck.svg index 7f7de5bf879..c5b448e0186 100644 --- a/res/skins/LateNight/classic/buttons/btn__leader_deck.svg +++ b/res/skins/LateNight/classic/buttons/btn__leader_deck.svg @@ -7,12 +7,12 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="46" - height="20" + width="92" + height="40" version="1.1" id="svg32" sodipodi:docname="btn__leader_deck.svg" - inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" viewBox="0 0 46 20"> diff --git a/res/skins/LateNight/classic/buttons/btn__lib_bpm_down.svg b/res/skins/LateNight/classic/buttons/btn__lib_bpm_down.svg index 10c4bc4a3f4..8e56ea31bd5 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_bpm_down.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_bpm_down.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="12" - height="10" + width="24" + height="20" version="1.1" - id="svg4"> + id="svg4" viewBox="0 0 12 10"> diff --git a/res/skins/LateNight/classic/buttons/btn__lib_bpm_locked_orange.svg b/res/skins/LateNight/classic/buttons/btn__lib_bpm_locked_orange.svg index e19a86e209c..64836057958 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_bpm_locked_orange.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_bpm_locked_orange.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_bpm_unlocked_grey.svg b/res/skins/LateNight/classic/buttons/btn__lib_bpm_unlocked_grey.svg index ba6ce426894..cb256e4ed35 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_bpm_unlocked_grey.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_bpm_unlocked_grey.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_bpm_up.svg b/res/skins/LateNight/classic/buttons/btn__lib_bpm_up.svg index 30e180f6184..83c7b134248 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_bpm_up.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_bpm_up.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg4" version="1.1" - height="10" - width="12"> + height="20" + width="24" viewBox="0 0 12 10"> diff --git a/res/skins/LateNight/classic/buttons/btn__lib_checkbox.svg b/res/skins/LateNight/classic/buttons/btn__lib_checkbox.svg index 9ff5e37a358..2b9201dcc17 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_checkbox.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_checkbox.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_checkbox_checked.svg b/res/skins/LateNight/classic/buttons/btn__lib_checkbox_checked.svg index a051362dbb3..3b70ebc96d2 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_checkbox_checked.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_checkbox_checked.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_checkmark_grey.svg b/res/skins/LateNight/classic/buttons/btn__lib_checkmark_grey.svg index 2aa0d5f5c3f..acb520632b1 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_checkmark_grey.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_checkmark_grey.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_checkmark_indeterminate_grey.svg b/res/skins/LateNight/classic/buttons/btn__lib_checkmark_indeterminate_grey.svg index d26efbc781a..f5d6a37ad42 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_checkmark_indeterminate_grey.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_checkmark_indeterminate_grey.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_checkmark_indeterminate_orange.svg b/res/skins/LateNight/classic/buttons/btn__lib_checkmark_indeterminate_orange.svg index 10b911e5625..54142da559c 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_checkmark_indeterminate_orange.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_checkmark_indeterminate_orange.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_checkmark_orange.svg b/res/skins/LateNight/classic/buttons/btn__lib_checkmark_orange.svg index 2e08031d36f..c6b18d61871 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_checkmark_orange.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_checkmark_orange.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_clear_search.svg b/res/skins/LateNight/classic/buttons/btn__lib_clear_search.svg index 5cd52352522..83ec06eae2a 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_clear_search.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_clear_search.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="19" - height="19" + width="38" + height="38" version="1.1" - id="svg10"> + id="svg10" viewBox="0 0 19 19"> diff --git a/res/skins/LateNight/classic/buttons/btn__lib_clear_search_focus.svg b/res/skins/LateNight/classic/buttons/btn__lib_clear_search_focus.svg index e68471951a0..381e72a0d99 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_clear_search_focus.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_clear_search_focus.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="19" - height="19" + width="38" + height="38" version="1.1" - id="svg10"> + id="svg10" viewBox="0 0 19 19"> diff --git a/res/skins/LateNight/classic/buttons/btn__lib_preview_pause.svg b/res/skins/LateNight/classic/buttons/btn__lib_preview_pause.svg index ecd76912ea0..b8ffdc6fd3a 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_preview_pause.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_preview_pause.svg @@ -6,9 +6,9 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" - height="18" - width="30" - id="svg2"> + height="36" + width="60" + id="svg2" viewBox="0 0 30 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__lib_preview_play.svg b/res/skins/LateNight/classic/buttons/btn__lib_preview_play.svg index 7bb79b163b0..8426e82e2ff 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_preview_play.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_preview_play.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="30" - height="18" + width="60" + height="36" version="1.1" - id="svg10"> + id="svg10" viewBox="0 0 30 18"> diff --git a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_gold_on.svg b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_gold_on.svg index 271857a10b7..af13df7919d 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_gold_on.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_gold_on.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_off.svg b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_off.svg index 680fb2316fd..9dd7477ba9d 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_off.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_on_yellow.svg b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_on_yellow.svg index b077114da82..3da9361ae39 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_on_yellow.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_on_yellow.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_yellow_on.svg b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_yellow_on.svg index 8f8cccef434..5207747fc87 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_yellow_on.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_yellow_on.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_sort_down.svg b/res/skins/LateNight/classic/buttons/btn__lib_sort_down.svg index 4b8f3c5ad26..43880e91cf7 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_sort_down.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_sort_down.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__lib_sort_up.svg b/res/skins/LateNight/classic/buttons/btn__lib_sort_up.svg index b24794ca5e3..de784152567 100644 --- a/res/skins/LateNight/classic/buttons/btn__lib_sort_up.svg +++ b/res/skins/LateNight/classic/buttons/btn__lib_sort_up.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__loop.svg b/res/skins/LateNight/classic/buttons/btn__loop.svg index b8fe8a743f9..7940b7a3ad1 100644 --- a/res/skins/LateNight/classic/buttons/btn__loop.svg +++ b/res/skins/LateNight/classic/buttons/btn__loop.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__loop_in.svg b/res/skins/LateNight/classic/buttons/btn__loop_in.svg index 55ab1b8bdb9..92f1d059f3d 100644 --- a/res/skins/LateNight/classic/buttons/btn__loop_in.svg +++ b/res/skins/LateNight/classic/buttons/btn__loop_in.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg6"> + id="svg6" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__loop_out.svg b/res/skins/LateNight/classic/buttons/btn__loop_out.svg index 57d0290bb7d..5dff3a82d8a 100644 --- a/res/skins/LateNight/classic/buttons/btn__loop_out.svg +++ b/res/skins/LateNight/classic/buttons/btn__loop_out.svg @@ -5,10 +5,10 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" + width="48" + height="48" version="1.1" - id="svg6"> + id="svg6" viewBox="0 0 24 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__menu_checkbox.svg b/res/skins/LateNight/classic/buttons/btn__menu_checkbox.svg index ed1487b5277..3758d8632c1 100644 --- a/res/skins/LateNight/classic/buttons/btn__menu_checkbox.svg +++ b/res/skins/LateNight/classic/buttons/btn__menu_checkbox.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__menu_checkbox_checked.svg b/res/skins/LateNight/classic/buttons/btn__menu_checkbox_checked.svg index 1df19e8eb7a..1210160d3b7 100644 --- a/res/skins/LateNight/classic/buttons/btn__menu_checkbox_checked.svg +++ b/res/skins/LateNight/classic/buttons/btn__menu_checkbox_checked.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__mic_duck_auto.svg b/res/skins/LateNight/classic/buttons/btn__mic_duck_auto.svg index f0d8e622b54..c7173fc225b 100644 --- a/res/skins/LateNight/classic/buttons/btn__mic_duck_auto.svg +++ b/res/skins/LateNight/classic/buttons/btn__mic_duck_auto.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__mic_duck_manual.svg b/res/skins/LateNight/classic/buttons/btn__mic_duck_manual.svg index d5d6e4eb629..6ff64686458 100644 --- a/res/skins/LateNight/classic/buttons/btn__mic_duck_manual.svg +++ b/res/skins/LateNight/classic/buttons/btn__mic_duck_manual.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__mic_duck_off.svg b/res/skins/LateNight/classic/buttons/btn__mic_duck_off.svg index e45bffdbe48..e441959f0b9 100644 --- a/res/skins/LateNight/classic/buttons/btn__mic_duck_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__mic_duck_off.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__mic_talk.svg b/res/skins/LateNight/classic/buttons/btn__mic_talk.svg index 3637edf35d7..15ed412d187 100644 --- a/res/skins/LateNight/classic/buttons/btn__mic_talk.svg +++ b/res/skins/LateNight/classic/buttons/btn__mic_talk.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__minus.svg b/res/skins/LateNight/classic/buttons/btn__minus.svg index 54ce8b52532..d6eee38c09d 100644 --- a/res/skins/LateNight/classic/buttons/btn__minus.svg +++ b/res/skins/LateNight/classic/buttons/btn__minus.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__next.svg b/res/skins/LateNight/classic/buttons/btn__next.svg index b846e1a0f5f..c7397b7c067 100644 --- a/res/skins/LateNight/classic/buttons/btn__next.svg +++ b/res/skins/LateNight/classic/buttons/btn__next.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__outro_end.svg b/res/skins/LateNight/classic/buttons/btn__outro_end.svg index d276b287863..1f1a770a9ee 100644 --- a/res/skins/LateNight/classic/buttons/btn__outro_end.svg +++ b/res/skins/LateNight/classic/buttons/btn__outro_end.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__outro_start.svg b/res/skins/LateNight/classic/buttons/btn__outro_start.svg index 39516432b61..9d7a8f612fb 100644 --- a/res/skins/LateNight/classic/buttons/btn__outro_start.svg +++ b/res/skins/LateNight/classic/buttons/btn__outro_start.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__pause_deck_mini.svg b/res/skins/LateNight/classic/buttons/btn__pause_deck_mini.svg index c7acab40926..796eea7a262 100644 --- a/res/skins/LateNight/classic/buttons/btn__pause_deck_mini.svg +++ b/res/skins/LateNight/classic/buttons/btn__pause_deck_mini.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg8" version="1.1" - height="24" - width="40"> + height="48" + width="80" viewBox="0 0 40 24"> diff --git a/res/skins/LateNight/classic/buttons/btn__pause_preview.svg b/res/skins/LateNight/classic/buttons/btn__pause_preview.svg index 2e54f342047..6bbac27ed3d 100644 --- a/res/skins/LateNight/classic/buttons/btn__pause_preview.svg +++ b/res/skins/LateNight/classic/buttons/btn__pause_preview.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__pause_sampler.svg b/res/skins/LateNight/classic/buttons/btn__pause_sampler.svg index 61f9760d196..0871f0704e1 100644 --- a/res/skins/LateNight/classic/buttons/btn__pause_sampler.svg +++ b/res/skins/LateNight/classic/buttons/btn__pause_sampler.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg43" version="1.1" - height="32" - width="32"> + height="64" + width="64" viewBox="0 0 32 32"> diff --git a/res/skins/LateNight/classic/buttons/btn__pfl.svg b/res/skins/LateNight/classic/buttons/btn__pfl.svg index 12d464e989b..d371a3c9e09 100644 --- a/res/skins/LateNight/classic/buttons/btn__pfl.svg +++ b/res/skins/LateNight/classic/buttons/btn__pfl.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__play_deck.svg b/res/skins/LateNight/classic/buttons/btn__play_deck.svg index fd2caec629e..46d8ca801f2 100644 --- a/res/skins/LateNight/classic/buttons/btn__play_deck.svg +++ b/res/skins/LateNight/classic/buttons/btn__play_deck.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__play_deck_mini.svg b/res/skins/LateNight/classic/buttons/btn__play_deck_mini.svg index bf29e05c60c..3763d9c539d 100644 --- a/res/skins/LateNight/classic/buttons/btn__play_deck_mini.svg +++ b/res/skins/LateNight/classic/buttons/btn__play_deck_mini.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__play_sampler.svg b/res/skins/LateNight/classic/buttons/btn__play_sampler.svg index f88d8c36b68..f88ebee61cc 100644 --- a/res/skins/LateNight/classic/buttons/btn__play_sampler.svg +++ b/res/skins/LateNight/classic/buttons/btn__play_sampler.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__plus.svg b/res/skins/LateNight/classic/buttons/btn__plus.svg index 7ab60a0937c..0bf8c32a1fb 100644 --- a/res/skins/LateNight/classic/buttons/btn__plus.svg +++ b/res/skins/LateNight/classic/buttons/btn__plus.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__plus_flat.svg b/res/skins/LateNight/classic/buttons/btn__plus_flat.svg index ba62d28cb4d..8f19a05f601 100644 --- a/res/skins/LateNight/classic/buttons/btn__plus_flat.svg +++ b/res/skins/LateNight/classic/buttons/btn__plus_flat.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__prev.svg b/res/skins/LateNight/classic/buttons/btn__prev.svg index e021190ad2d..9de5a1354c0 100644 --- a/res/skins/LateNight/classic/buttons/btn__prev.svg +++ b/res/skins/LateNight/classic/buttons/btn__prev.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__quantize.svg b/res/skins/LateNight/classic/buttons/btn__quantize.svg index a9d18e0cfae..0178edb5e0e 100644 --- a/res/skins/LateNight/classic/buttons/btn__quantize.svg +++ b/res/skins/LateNight/classic/buttons/btn__quantize.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__quantize_active_12.svg b/res/skins/LateNight/classic/buttons/btn__quantize_active_12.svg index 3c3cf124c08..79ed14327b2 100644 --- a/res/skins/LateNight/classic/buttons/btn__quantize_active_12.svg +++ b/res/skins/LateNight/classic/buttons/btn__quantize_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__quantize_active_34.svg b/res/skins/LateNight/classic/buttons/btn__quantize_active_34.svg index a6fc4019847..a2ecb4efc6f 100644 --- a/res/skins/LateNight/classic/buttons/btn__quantize_active_34.svg +++ b/res/skins/LateNight/classic/buttons/btn__quantize_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__rec_dot.svg b/res/skins/LateNight/classic/buttons/btn__rec_dot.svg index cf444682da6..3b2cc683768 100644 --- a/res/skins/LateNight/classic/buttons/btn__rec_dot.svg +++ b/res/skins/LateNight/classic/buttons/btn__rec_dot.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__rec_dot_active.svg b/res/skins/LateNight/classic/buttons/btn__rec_dot_active.svg index a226d0000d6..406552fa84e 100644 --- a/res/skins/LateNight/classic/buttons/btn__rec_dot_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__rec_dot_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__reloop.svg b/res/skins/LateNight/classic/buttons/btn__reloop.svg index 93d5fb4cdc0..c17a181d1b4 100644 --- a/res/skins/LateNight/classic/buttons/btn__reloop.svg +++ b/res/skins/LateNight/classic/buttons/btn__reloop.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__repeat.svg b/res/skins/LateNight/classic/buttons/btn__repeat.svg index ab2853625d5..5c3f701c69d 100644 --- a/res/skins/LateNight/classic/buttons/btn__repeat.svg +++ b/res/skins/LateNight/classic/buttons/btn__repeat.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__repeat_active_12.svg b/res/skins/LateNight/classic/buttons/btn__repeat_active_12.svg index 6df9c3d0216..1f5de7166ea 100644 --- a/res/skins/LateNight/classic/buttons/btn__repeat_active_12.svg +++ b/res/skins/LateNight/classic/buttons/btn__repeat_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__repeat_active_34.svg b/res/skins/LateNight/classic/buttons/btn__repeat_active_34.svg index 1e1d7221487..d6670f9a01a 100644 --- a/res/skins/LateNight/classic/buttons/btn__repeat_active_34.svg +++ b/res/skins/LateNight/classic/buttons/btn__repeat_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__reverse.svg b/res/skins/LateNight/classic/buttons/btn__reverse.svg index 9c31255cf64..1bda081f8b8 100644 --- a/res/skins/LateNight/classic/buttons/btn__reverse.svg +++ b/res/skins/LateNight/classic/buttons/btn__reverse.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__settings_close.svg b/res/skins/LateNight/classic/buttons/btn__settings_close.svg index f04edc298ed..21532dc3cc1 100644 --- a/res/skins/LateNight/classic/buttons/btn__settings_close.svg +++ b/res/skins/LateNight/classic/buttons/btn__settings_close.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__settings_off.svg b/res/skins/LateNight/classic/buttons/btn__settings_off.svg index 965cddfdcf3..fddb4a68c94 100644 --- a/res/skins/LateNight/classic/buttons/btn__settings_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__settings_off.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__settings_on.svg b/res/skins/LateNight/classic/buttons/btn__settings_on.svg index 2ed1e10a1be..e0c37b0ae6a 100644 --- a/res/skins/LateNight/classic/buttons/btn__settings_on.svg +++ b/res/skins/LateNight/classic/buttons/btn__settings_on.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__slip.svg b/res/skins/LateNight/classic/buttons/btn__slip.svg index 656eb3c5bde..5d1294a3a0d 100644 --- a/res/skins/LateNight/classic/buttons/btn__slip.svg +++ b/res/skins/LateNight/classic/buttons/btn__slip.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__slip_active_12.svg b/res/skins/LateNight/classic/buttons/btn__slip_active_12.svg index 2c568c3dfea..b612c0dd35e 100644 --- a/res/skins/LateNight/classic/buttons/btn__slip_active_12.svg +++ b/res/skins/LateNight/classic/buttons/btn__slip_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__slip_active_34.svg b/res/skins/LateNight/classic/buttons/btn__slip_active_34.svg index 780e23dd36e..7afebf023d2 100644 --- a/res/skins/LateNight/classic/buttons/btn__slip_active_34.svg +++ b/res/skins/LateNight/classic/buttons/btn__slip_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__split.svg b/res/skins/LateNight/classic/buttons/btn__split.svg index 075321bbb2f..487d9109f69 100644 --- a/res/skins/LateNight/classic/buttons/btn__split.svg +++ b/res/skins/LateNight/classic/buttons/btn__split.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__split_active.svg b/res/skins/LateNight/classic/buttons/btn__split_active.svg index ebda1269253..ee752d77527 100644 --- a/res/skins/LateNight/classic/buttons/btn__split_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__split_active.svg @@ -7,8 +7,8 @@ xmlns="http://www.w3.org/2000/svg" id="svg26" version="1.1" - height="20" - width="46"> + height="40" + width="92" viewBox="0 0 46 20"> diff --git a/res/skins/LateNight/classic/buttons/btn__star.svg b/res/skins/LateNight/classic/buttons/btn__star.svg index 3d03d7bd085..ebe935df2a8 100644 --- a/res/skins/LateNight/classic/buttons/btn__star.svg +++ b/res/skins/LateNight/classic/buttons/btn__star.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__sync_deck.svg b/res/skins/LateNight/classic/buttons/btn__sync_deck.svg index 0313aa59456..a74c4d3f008 100644 --- a/res/skins/LateNight/classic/buttons/btn__sync_deck.svg +++ b/res/skins/LateNight/classic/buttons/btn__sync_deck.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__sync_leader.svg b/res/skins/LateNight/classic/buttons/btn__sync_leader.svg index ac9b702f82e..d331de533db 100644 --- a/res/skins/LateNight/classic/buttons/btn__sync_leader.svg +++ b/res/skins/LateNight/classic/buttons/btn__sync_leader.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__sync_leader_active.svg b/res/skins/LateNight/classic/buttons/btn__sync_leader_active.svg index aceaeebc372..83e1e3a6b57 100644 --- a/res/skins/LateNight/classic/buttons/btn__sync_leader_active.svg +++ b/res/skins/LateNight/classic/buttons/btn__sync_leader_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__sync_sampler.svg b/res/skins/LateNight/classic/buttons/btn__sync_sampler.svg index 2071e7bb779..943bf5d2b95 100644 --- a/res/skins/LateNight/classic/buttons/btn__sync_sampler.svg +++ b/res/skins/LateNight/classic/buttons/btn__sync_sampler.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_aux_left.svg b/res/skins/LateNight/classic/buttons/btn__xfader_aux_left.svg index da5b928d80c..303cadfb228 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_aux_left.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_aux_left.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_aux_left_off.svg b/res/skins/LateNight/classic/buttons/btn__xfader_aux_left_off.svg index c15d77c4bc0..f74e549e67a 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_aux_left_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_aux_left_off.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_aux_mid.svg b/res/skins/LateNight/classic/buttons/btn__xfader_aux_mid.svg index 71a9f048785..1c7ce783c9e 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_aux_mid.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_aux_mid.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_aux_mid_off.svg b/res/skins/LateNight/classic/buttons/btn__xfader_aux_mid_off.svg index e8c9e7490b1..0628dd98375 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_aux_mid_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_aux_mid_off.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_aux_right.svg b/res/skins/LateNight/classic/buttons/btn__xfader_aux_right.svg index 1c91063e788..7d819f1920d 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_aux_right.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_aux_right.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_aux_right_off.svg b/res/skins/LateNight/classic/buttons/btn__xfader_aux_right_off.svg index b8b6290eee5..9cf88146bbd 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_aux_right_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_aux_right_off.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_default.svg b/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_default.svg index 97c1a08df78..77fc719aa04 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_default.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_default.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_off.svg b/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_off.svg index 71a6d97b866..78700921622 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_off.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_warning.svg b/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_warning.svg index 52a1e3225b6..b352df7579e 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_warning.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_deck_left_warning.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_deck_mid_off.svg b/res/skins/LateNight/classic/buttons/btn__xfader_deck_mid_off.svg index ec87f75be5e..f5e7ea01d03 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_deck_mid_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_deck_mid_off.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_deck_mid_warning.svg b/res/skins/LateNight/classic/buttons/btn__xfader_deck_mid_warning.svg index eb0d70aafa3..c08f1d78291 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_deck_mid_warning.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_deck_mid_warning.svg @@ -1,14 +1,14 @@ + height="30" + width="22" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> @@ -17,7 +17,6 @@ image/svg+xml - @@ -25,6 +24,6 @@ id="defs8" /> + d="M 2,24 V 6 h 3 l 6,7 6,-7 h 3 V 24 H 16 V 12 l -5,6 -5,-6 v 12 z" + style="fill:#f0bb2b;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_default.svg b/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_default.svg index d590c5ab6b6..f19ceab70cd 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_default.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_default.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_off.svg b/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_off.svg index 6224588d3d2..85f70c6f2fd 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_off.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_off.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_warning.svg b/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_warning.svg index dedd1075ff2..4868fadf050 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_warning.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_deck_right_warning.svg @@ -1 +1,16 @@ - + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_sampler_left.svg b/res/skins/LateNight/classic/buttons/btn__xfader_sampler_left.svg index 7dd52debae5..747619b726c 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_sampler_left.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_sampler_left.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_sampler_main.svg b/res/skins/LateNight/classic/buttons/btn__xfader_sampler_main.svg index 6eb53f82c3a..67fe5425c08 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_sampler_main.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_sampler_main.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/classic/buttons/btn__xfader_sampler_right.svg b/res/skins/LateNight/classic/buttons/btn__xfader_sampler_right.svg index 2a67bf6a43f..9964c16d623 100644 --- a/res/skins/LateNight/classic/buttons/btn__xfader_sampler_right.svg +++ b/res/skins/LateNight/classic/buttons/btn__xfader_sampler_right.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__.svg b/res/skins/LateNight/palemoon/buttons/btn__.svg index ddb49a7888e..2f4614ce9a8 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__1.svg b/res/skins/LateNight/palemoon/buttons/btn__1.svg index f54cb88b4a4..b5ef3800afc 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__1.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__1.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__1_active.svg b/res/skins/LateNight/palemoon/buttons/btn__1_active.svg index 9e477118e15..0c90b0d2576 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__1_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__1_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__1_active_dark.svg b/res/skins/LateNight/palemoon/buttons/btn__1_active_dark.svg index 90cf767e7ee..190861b8da1 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__1_active_dark.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__1_active_dark.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__1_loop.svg b/res/skins/LateNight/palemoon/buttons/btn__1_loop.svg index f4a66fb01a9..6743ed61852 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__1_loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__1_loop.svg @@ -9,10 +9,10 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg6" version="1.1" - height="24" - width="20" + height="48" + width="40" sodipodi:docname="btn__1_loop.svg" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" viewBox="0 0 20 24"> + 2 2 diff --git a/res/skins/LateNight/palemoon/buttons/btn__2_active.svg b/res/skins/LateNight/palemoon/buttons/btn__2_active.svg index 604876266cb..00ebff60b8b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__2_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__2_active.svg @@ -1,3 +1,3 @@ - + 2 diff --git a/res/skins/LateNight/palemoon/buttons/btn__2_active_dark.svg b/res/skins/LateNight/palemoon/buttons/btn__2_active_dark.svg index 249a8eea04f..5f02195980a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__2_active_dark.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__2_active_dark.svg @@ -1,3 +1,3 @@ - + 2 diff --git a/res/skins/LateNight/palemoon/buttons/btn__2_loop.svg b/res/skins/LateNight/palemoon/buttons/btn__2_loop.svg index 501235396fd..6ef47fe481b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__2_loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__2_loop.svg @@ -9,10 +9,10 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg6" version="1.1" - height="24" - width="20" + height="48" + width="40" sodipodi:docname="btn__2_loop.svg" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" viewBox="0 0 20 24"> + 3 3 diff --git a/res/skins/LateNight/palemoon/buttons/btn__3_active.svg b/res/skins/LateNight/palemoon/buttons/btn__3_active.svg index 73b901f9a7e..66a41a81a3a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__3_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__3_active.svg @@ -1,3 +1,3 @@ - + 3 diff --git a/res/skins/LateNight/palemoon/buttons/btn__3_active_dark.svg b/res/skins/LateNight/palemoon/buttons/btn__3_active_dark.svg index 28d2b214f22..ac6b5181f53 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__3_active_dark.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__3_active_dark.svg @@ -1,3 +1,3 @@ - + 3 diff --git a/res/skins/LateNight/palemoon/buttons/btn__3_loop.svg b/res/skins/LateNight/palemoon/buttons/btn__3_loop.svg index e5327ba2c1b..3afc32bfccc 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__3_loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__3_loop.svg @@ -9,10 +9,10 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg6" version="1.1" - height="24" - width="20" + height="48" + width="40" sodipodi:docname="btn__3_loop.svg" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" viewBox="0 0 20 24"> + 4 4 diff --git a/res/skins/LateNight/palemoon/buttons/btn__4_active.svg b/res/skins/LateNight/palemoon/buttons/btn__4_active.svg index 516a3595faa..a6ac9c4e314 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__4_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__4_active.svg @@ -1,3 +1,3 @@ - + 4 diff --git a/res/skins/LateNight/palemoon/buttons/btn__4_active_dark.svg b/res/skins/LateNight/palemoon/buttons/btn__4_active_dark.svg index dea940a1b4b..c8852da4f6f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__4_active_dark.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__4_active_dark.svg @@ -1,3 +1,3 @@ - + 4 diff --git a/res/skins/LateNight/palemoon/buttons/btn__4_loop.svg b/res/skins/LateNight/palemoon/buttons/btn__4_loop.svg index 2c2ce420c77..940e6943a6a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__4_loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__4_loop.svg @@ -9,10 +9,10 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg6" version="1.1" - height="24" - width="20" + height="48" + width="40" sodipodi:docname="btn__4_loop.svg" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" viewBox="0 0 20 24"> + 5 5 diff --git a/res/skins/LateNight/palemoon/buttons/btn__5_active.svg b/res/skins/LateNight/palemoon/buttons/btn__5_active.svg index f9e9e185d9e..669b33adc9e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__5_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__5_active.svg @@ -1,3 +1,3 @@ - + 5 diff --git a/res/skins/LateNight/palemoon/buttons/btn__5_active_dark.svg b/res/skins/LateNight/palemoon/buttons/btn__5_active_dark.svg index 54dfe49e647..d9a1b9adb47 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__5_active_dark.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__5_active_dark.svg @@ -1,3 +1,3 @@ - + 5 diff --git a/res/skins/LateNight/palemoon/buttons/btn__5_loop.svg b/res/skins/LateNight/palemoon/buttons/btn__5_loop.svg index 7757dcc9ac7..77c256f8f37 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__5_loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__5_loop.svg @@ -9,10 +9,10 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg6" version="1.1" - height="24" - width="20" + height="48" + width="40" sodipodi:docname="btn__5_loop.svg" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" viewBox="0 0 20 24"> + 6 6 diff --git a/res/skins/LateNight/palemoon/buttons/btn__6_active.svg b/res/skins/LateNight/palemoon/buttons/btn__6_active.svg index 91ffcc87b0e..fba77beb9d2 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__6_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__6_active.svg @@ -1,3 +1,3 @@ - + 6 diff --git a/res/skins/LateNight/palemoon/buttons/btn__6_active_dark.svg b/res/skins/LateNight/palemoon/buttons/btn__6_active_dark.svg index 913f98a4cd3..9b6c733e552 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__6_active_dark.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__6_active_dark.svg @@ -1,3 +1,3 @@ - + 6 diff --git a/res/skins/LateNight/palemoon/buttons/btn__6_loop.svg b/res/skins/LateNight/palemoon/buttons/btn__6_loop.svg index e284a940e41..95ea51c78e7 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__6_loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__6_loop.svg @@ -9,10 +9,10 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg6" version="1.1" - height="24" - width="20" + height="48" + width="40" sodipodi:docname="btn__6_loop.svg" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" viewBox="0 0 20 24"> + 7 7 diff --git a/res/skins/LateNight/palemoon/buttons/btn__7_active.svg b/res/skins/LateNight/palemoon/buttons/btn__7_active.svg index 7710af32c00..00703f14c62 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__7_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__7_active.svg @@ -1,3 +1,3 @@ - + 7 diff --git a/res/skins/LateNight/palemoon/buttons/btn__7_active_dark.svg b/res/skins/LateNight/palemoon/buttons/btn__7_active_dark.svg index 63e10038686..7532101302f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__7_active_dark.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__7_active_dark.svg @@ -1,3 +1,3 @@ - + 7 diff --git a/res/skins/LateNight/palemoon/buttons/btn__7_loop.svg b/res/skins/LateNight/palemoon/buttons/btn__7_loop.svg index 03f4ac0c1b4..d4d3d9ff4d7 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__7_loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__7_loop.svg @@ -9,10 +9,10 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg6" version="1.1" - height="24" - width="20" + height="48" + width="40" sodipodi:docname="btn__7_loop.svg" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" viewBox="0 0 20 24"> + 8 8 diff --git a/res/skins/LateNight/palemoon/buttons/btn__8_active.svg b/res/skins/LateNight/palemoon/buttons/btn__8_active.svg index cea9732ef8f..4bd3739d6bd 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__8_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__8_active.svg @@ -1,3 +1,3 @@ - + 8 diff --git a/res/skins/LateNight/palemoon/buttons/btn__8_active_dark.svg b/res/skins/LateNight/palemoon/buttons/btn__8_active_dark.svg index bf82f40944e..f95c9092e30 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__8_active_dark.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__8_active_dark.svg @@ -1,3 +1,3 @@ - + 8 diff --git a/res/skins/LateNight/palemoon/buttons/btn__8_loop.svg b/res/skins/LateNight/palemoon/buttons/btn__8_loop.svg index db05c078bdf..08c64611541 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__8_loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__8_loop.svg @@ -7,12 +7,12 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="20" - height="24" + width="40" + height="48" version="1.1" id="svg6" sodipodi:docname="btn__8_loop.svg" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" viewBox="0 0 20 24"> + diff --git a/res/skins/LateNight/palemoon/buttons/btn___pressed.svg b/res/skins/LateNight/palemoon/buttons/btn___pressed.svg index ddb49a7888e..2f4614ce9a8 100644 --- a/res/skins/LateNight/palemoon/buttons/btn___pressed.svg +++ b/res/skins/LateNight/palemoon/buttons/btn___pressed.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__active.svg b/res/skins/LateNight/palemoon/buttons/btn__active.svg index ddb49a7888e..2f4614ce9a8 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__active.svg @@ -1 +1 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__arrow_left_down.svg b/res/skins/LateNight/palemoon/buttons/btn__arrow_left_down.svg index 488db135ffa..650f129d878 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__arrow_left_down.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__arrow_left_down.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__arrow_left_down_active.svg b/res/skins/LateNight/palemoon/buttons/btn__arrow_left_down_active.svg index be93c1c5d49..3ca9a61e8d6 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__arrow_left_down_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__arrow_left_down_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__arrow_left_up.svg b/res/skins/LateNight/palemoon/buttons/btn__arrow_left_up.svg index c6e5359420f..b5bf18b4dc5 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__arrow_left_up.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__arrow_left_up.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__arrow_left_up_active.svg b/res/skins/LateNight/palemoon/buttons/btn__arrow_left_up_active.svg index 1aa0dd1e9e0..eeeb80a6d75 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__arrow_left_up_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__arrow_left_up_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__arrow_right_down.svg b/res/skins/LateNight/palemoon/buttons/btn__arrow_right_down.svg index 452ed7181e7..23c2434764d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__arrow_right_down.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__arrow_right_down.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__arrow_right_down_active.svg b/res/skins/LateNight/palemoon/buttons/btn__arrow_right_down_active.svg index e8cd16a3c5e..b2ecd6a74aa 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__arrow_right_down_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__arrow_right_down_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__arrow_right_up.svg b/res/skins/LateNight/palemoon/buttons/btn__arrow_right_up.svg index e2be35f2a93..75f8eee4c7c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__arrow_right_up.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__arrow_right_up.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__arrow_right_up_active.svg b/res/skins/LateNight/palemoon/buttons/btn__arrow_right_up_active.svg index 0eb3bbab921..3c02087053d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__arrow_right_up_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__arrow_right_up_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_addrandom.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_addrandom.svg index 7a556c46da9..f448a625fc1 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_addrandom.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_addrandom.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_addrandom_pressed.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_addrandom_pressed.svg index cb44f864ffa..65b323e117b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_addrandom_pressed.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_addrandom_pressed.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_enable_off.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_enable_off.svg index dbd6ce4c778..61b99615585 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_enable_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_enable_off.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_enable_on.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_enable_on.svg index 6c6e430a2bf..c65344fbdfc 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_enable_on.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_enable_on.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_fade.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_fade.svg index f0152c7ba08..855616c51a2 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_fade.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_fade.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_fade_disabled.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_fade_disabled.svg index 7c67064a258..244bc05b298 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_fade_disabled.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_fade_disabled.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_fade_pressed.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_fade_pressed.svg index 3d7094f5427..275ae1c14fb 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_fade_pressed.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_fade_pressed.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_repeat_playlist_off.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_repeat_playlist_off.svg index 38d4b7ee5e9..e052f9ccb2c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_repeat_playlist_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_repeat_playlist_off.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_repeat_playlist_on.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_repeat_playlist_on.svg index d7686f621d5..68747aa96c3 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_repeat_playlist_on.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_repeat_playlist_on.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_shuffle.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_shuffle.svg index 4afb40b5843..af032ba7dd8 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_shuffle.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_shuffle.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_shuffle_pressed.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_shuffle_pressed.svg index 8434aa4fe84..c79bd9a443b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_shuffle_pressed.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_shuffle_pressed.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_skip.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_skip.svg index 59569cbaabc..9e1f0152e52 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_skip.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_skip.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_skip_disabled.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_skip_disabled.svg index 1f4bb86c005..83aa8e7725c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_skip_disabled.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_skip_disabled.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__autodj_skip_pressed.svg b/res/skins/LateNight/palemoon/buttons/btn__autodj_skip_pressed.svg index 3684ec7fee4..1fce44cc4a2 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__autodj_skip_pressed.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__autodj_skip_pressed.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__aux_play.svg b/res/skins/LateNight/palemoon/buttons/btn__aux_play.svg index 769be548375..4d5875b0a08 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__aux_play.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__aux_play.svg @@ -1,4 +1,4 @@ - + PLAY PLAY diff --git a/res/skins/LateNight/palemoon/buttons/btn__aux_play_active.svg b/res/skins/LateNight/palemoon/buttons/btn__aux_play_active.svg index b33995de754..059b65378cd 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__aux_play_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__aux_play_active.svg @@ -1,3 +1,3 @@ - + PLAY diff --git a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos.svg b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos.svg index 93a59c57690..200b86ddfdb 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_active_12.svg b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_active_12.svg index 4906d232f23..e85d191e42b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_active_12.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_active_34.svg b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_active_34.svg index 972ad500cee..fc2abdc864c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_active_34.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_large.svg b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_large.svg index efd70ae9bfa..f20f4f4ff3d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_large.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_large.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_large_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_large_active.svg index ba9e5dcb47f..3c3e637e4f4 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_large_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beat_curpos_large_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beatgrid_controls_collapse.svg b/res/skins/LateNight/palemoon/buttons/btn__beatgrid_controls_collapse.svg index 77491b7936c..75b6a797eda 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beatgrid_controls_collapse.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beatgrid_controls_collapse.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beatgrid_controls_expand.svg b/res/skins/LateNight/palemoon/buttons/btn__beatgrid_controls_expand.svg index af958671041..bd18711eebe 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beatgrid_controls_expand.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beatgrid_controls_expand.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beatjump_left.svg b/res/skins/LateNight/palemoon/buttons/btn__beatjump_left.svg index 77ae022df57..8d3b0219c88 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beatjump_left.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beatjump_left.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beatjump_left_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beatjump_left_active.svg index 2304798105b..ffe8a6eb285 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beatjump_left_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beatjump_left_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beatjump_right.svg b/res/skins/LateNight/palemoon/buttons/btn__beatjump_right.svg index de8dc5c4984..326a992864b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beatjump_right.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beatjump_right.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beatjump_right_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beatjump_right_active.svg index a001ba0e623..ec9429fbd97 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beatjump_right_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beatjump_right_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_earlier.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_earlier.svg index e312c879ccb..493af7c7734 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_earlier.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_earlier.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_earlier_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_earlier_active.svg index 69a2efceda0..7b73118b634 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_earlier_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_earlier_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_faster.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_faster.svg index 975eda390df..6b3c9836f71 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_faster.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_faster.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_faster_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_faster_active.svg index 67057c66a16..54d7adce8e4 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_faster_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_faster_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_earlier.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_earlier.svg index 7d3d7a288d9..2c35c8fa1b5 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_earlier.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_earlier.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_earlier_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_earlier_active.svg index 57afa5222cb..b3c7f3a148d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_earlier_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_earlier_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_later.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_later.svg index 7f4a5c80ff5..7a5c109c1ad 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_later.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_later.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_later_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_later_active.svg index 3ba0deede61..7ab65a0337a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_later_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_hotcues_later_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_later.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_later.svg index 01959a328e5..3aaa0148641 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_later.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_later.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_later_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_later_active.svg index 80a13864a7c..f09da4d5b92 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_later_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_later_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_slower.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_slower.svg index 862b2975129..72f822bbf0f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_slower.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_slower.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__beats_slower_active.svg b/res/skins/LateNight/palemoon/buttons/btn__beats_slower_active.svg index 5f6bc21cc24..16de22138fe 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__beats_slower_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__beats_slower_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__broadcast_off.svg b/res/skins/LateNight/palemoon/buttons/btn__broadcast_off.svg index b8c73ac9e0f..2ddccb07a9f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__broadcast_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__broadcast_off.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__broadcast_on.svg b/res/skins/LateNight/palemoon/buttons/btn__broadcast_on.svg index b96efa6f18d..803baf104d6 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__broadcast_on.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__broadcast_on.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__collapse_dim.svg b/res/skins/LateNight/palemoon/buttons/btn__collapse_dim.svg index 10a6224ea67..0f86a524336 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__collapse_dim.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__collapse_dim.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__cue_deck.svg b/res/skins/LateNight/palemoon/buttons/btn__cue_deck.svg index c30f61bda34..e774161b410 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__cue_deck.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__cue_deck.svg @@ -1,4 +1,4 @@ - + CUE CUE diff --git a/res/skins/LateNight/palemoon/buttons/btn__cue_deck_active.svg b/res/skins/LateNight/palemoon/buttons/btn__cue_deck_active.svg index 63b34a70740..fff7862f95e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__cue_deck_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__cue_deck_active.svg @@ -1,3 +1,3 @@ - + CUE diff --git a/res/skins/LateNight/palemoon/buttons/btn__delete.svg b/res/skins/LateNight/palemoon/buttons/btn__delete.svg index 7a682b36add..91e208da2d2 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__delete.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__delete.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__effect_selected.svg b/res/skins/LateNight/palemoon/buttons/btn__effect_selected.svg index f9232c2c0f2..cafcde85336 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__effect_selected.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__effect_selected.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__eject.svg b/res/skins/LateNight/palemoon/buttons/btn__eject.svg index 72ebe51dd4b..d1ca28e0708 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eject.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eject.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__eject_active_12.svg b/res/skins/LateNight/palemoon/buttons/btn__eject_active_12.svg index b3a74618c35..72565b3f4a6 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eject_active_12.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eject_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__eject_active_34.svg b/res/skins/LateNight/palemoon/buttons/btn__eject_active_34.svg index 3c7f6a00162..4e754b769c4 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eject_active_34.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eject_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_active_green.svg b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_active_green.svg index b99015f5b4f..227801112ed 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_active_green.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_active_green.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_active_red.svg b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_active_red.svg index 6cd466ddd98..ef4cc2d9eac 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_active_red.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_active_red.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_off.svg b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_off.svg index d2eb7808347..51bfebf315c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_dot_off.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_high.svg b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_high.svg index 4b750506954..07ad0f8d58e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_high.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_high.svg @@ -1,4 +1,4 @@ - + H H diff --git a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_low.svg b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_low.svg index 69be68b3d72..c1bb0859289 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_low.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_low.svg @@ -1,4 +1,4 @@ - + L L diff --git a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_mid.svg b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_mid.svg index 9a2a474f97b..18b73c9210b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__eq_kill_mid.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__eq_kill_mid.svg @@ -1,4 +1,4 @@ - + M M diff --git a/res/skins/LateNight/palemoon/buttons/btn__expand_dim.svg b/res/skins/LateNight/palemoon/buttons/btn__expand_dim.svg index f3bd2c74750..fd7ecbea658 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__expand_dim.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__expand_dim.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__fx_focus.svg b/res/skins/LateNight/palemoon/buttons/btn__fx_focus.svg index d144ffc8349..028c6cd68d8 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__fx_focus.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__fx_focus.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__fx_focus_active.svg b/res/skins/LateNight/palemoon/buttons/btn__fx_focus_active.svg index e0086b18284..2377f6e798c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__fx_focus_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__fx_focus_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__fx_mixmode_d+w.svg b/res/skins/LateNight/palemoon/buttons/btn__fx_mixmode_d+w.svg index 37bf865cdd0..1a93b9626db 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__fx_mixmode_d+w.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__fx_mixmode_d+w.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__fx_mixmode_d-w.svg b/res/skins/LateNight/palemoon/buttons/btn__fx_mixmode_d-w.svg index 420b4dcf266..daf54bf7339 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__fx_mixmode_d-w.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__fx_mixmode_d-w.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__fx_selector_down.svg b/res/skins/LateNight/palemoon/buttons/btn__fx_selector_down.svg index 786ba1d5c41..3cbe6324845 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__fx_selector_down.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__fx_selector_down.svg @@ -1,4 +1,24 @@ - - - + + + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__fx_settings.svg b/res/skins/LateNight/palemoon/buttons/btn__fx_settings.svg index 06e8d45d371..2984362862e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__fx_settings.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__fx_settings.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__fx_toggle.svg b/res/skins/LateNight/palemoon/buttons/btn__fx_toggle.svg index d5a61924112..bda73bb8850 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__fx_toggle.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__fx_toggle.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__fx_toggle_active.svg b/res/skins/LateNight/palemoon/buttons/btn__fx_toggle_active.svg index 7d1246f65f0..c1f5c163023 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__fx_toggle_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__fx_toggle_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__intro_end.svg b/res/skins/LateNight/palemoon/buttons/btn__intro_end.svg index 987dbdb8765..266d04db97b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__intro_end.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__intro_end.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__intro_end_active.svg b/res/skins/LateNight/palemoon/buttons/btn__intro_end_active.svg index 9e374c00fae..1c041860f1f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__intro_end_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__intro_end_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__intro_start.svg b/res/skins/LateNight/palemoon/buttons/btn__intro_start.svg index 69ee330a7d2..887ee4383e1 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__intro_start.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__intro_start.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__intro_start_active.svg b/res/skins/LateNight/palemoon/buttons/btn__intro_start_active.svg index 607e02c2f6c..4f18852c185 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__intro_start_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__intro_start_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__key_down.svg b/res/skins/LateNight/palemoon/buttons/btn__key_down.svg index a25ccfcbbb5..de4efae7dc0 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__key_down.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__key_down.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__key_down_active.svg b/res/skins/LateNight/palemoon/buttons/btn__key_down_active.svg index d9f29cce69d..e4714350733 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__key_down_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__key_down_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__key_match.svg b/res/skins/LateNight/palemoon/buttons/btn__key_match.svg index 6fb6d12a758..5c2f354ad20 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__key_match.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__key_match.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__key_match_active.svg b/res/skins/LateNight/palemoon/buttons/btn__key_match_active.svg index 02e7167994c..ee1920b3883 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__key_match_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__key_match_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__key_up.svg b/res/skins/LateNight/palemoon/buttons/btn__key_up.svg index 3329256ea96..edcf462db60 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__key_up.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__key_up.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__key_up_active.svg b/res/skins/LateNight/palemoon/buttons/btn__key_up_active.svg index 2f6bae5452b..7d549a3892f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__key_up_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__key_up_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__keylock.svg b/res/skins/LateNight/palemoon/buttons/btn__keylock.svg index 4eca5e5cfe2..f170c1e443b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__keylock.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__keylock.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__keylock_active_12.svg b/res/skins/LateNight/palemoon/buttons/btn__keylock_active_12.svg index c3699d320b5..32a7eb98d99 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__keylock_active_12.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__keylock_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__keylock_active_34.svg b/res/skins/LateNight/palemoon/buttons/btn__keylock_active_34.svg index a8248339b0a..5c72e893446 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__keylock_active_34.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__keylock_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_locked_black.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_locked_black.svg index 0e9735dcd83..ff7fb2e279b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_locked_black.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_locked_black.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_locked_blue.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_locked_blue.svg index 5b98f19eec1..f3484171333 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_locked_blue.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_locked_blue.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_unlocked_grey.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_unlocked_grey.svg index d7d17eddba7..9cfd0262531 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_unlocked_grey.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_bpm_unlocked_grey.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_checkbox.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_checkbox.svg index 5c7d23067b7..0765d59e174 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_checkbox.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_checkbox.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_blue.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_blue.svg index dfab6d20b93..8cfae560f02 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_blue.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_blue.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_grey.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_grey.svg index 8c1e80dac7c..34ad54dc8fe 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_grey.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_grey.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_indeterminate_blue.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_indeterminate_blue.svg index 67c75fc505a..8cfd89adc8e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_indeterminate_blue.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_indeterminate_blue.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_indeterminate_grey.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_indeterminate_grey.svg index c492f824bfa..9af0f6fa4e9 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_indeterminate_grey.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_indeterminate_grey.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_ivory.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_ivory.svg index 3b14994c0a5..7df7f290119 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_ivory.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_ivory.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_clear_search.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_clear_search.svg index e4e48c05ac0..e921bf55e61 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_clear_search.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_clear_search.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_clear_search_focus.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_clear_search_focus.svg index c6201acff62..10a521c6922 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_clear_search_focus.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_clear_search_focus.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_preview_pause.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_preview_pause.svg index b450d322ef8..dce5ee111f6 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_preview_pause.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_preview_pause.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_preview_play.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_preview_play.svg index e3db8b36a10..12cc49ff71d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_preview_play.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_preview_play.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_radio_button_off.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_radio_button_off.svg index 54e0da074f8..ed7a0809add 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_radio_button_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_radio_button_off.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_radio_button_on_blue.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_radio_button_on_blue.svg index 15fbe5ef481..cbcb348b28a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_radio_button_on_blue.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_radio_button_on_blue.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_sort_down.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_sort_down.svg index bb63ad1dd3f..8c669cb0fa0 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_sort_down.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_sort_down.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_sort_up.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_sort_up.svg index 101ede9223e..34a94802b9e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_sort_up.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_sort_up.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_spinbox_down.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_spinbox_down.svg index 51b2f9b0de8..c761911d254 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_spinbox_down.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_spinbox_down.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_spinbox_up.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_spinbox_up.svg index f11a1514937..de1c68af3fa 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__lib_spinbox_up.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__lib_spinbox_up.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop.svg b/res/skins/LateNight/palemoon/buttons/btn__loop.svg index d1687c8ee82..d0d3c1b820f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_active.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_active.svg index d13f8b99d0a..a7253f5c5b4 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_in.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_in.svg index 70c0e34ca25..d7773b05ce1 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_in.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_in.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_in_active.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_in_active.svg index 680817bc0c0..a0e9e4e2b96 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_in_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_in_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_out.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_out.svg index 70044f65693..d7c24ac0023 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_out.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_out.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_out_active.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_out_active.svg index 239341164e4..a50beda8b9d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_out_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_out_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__menu_checkbox.svg b/res/skins/LateNight/palemoon/buttons/btn__menu_checkbox.svg index 36a59452236..f96a52879bf 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__menu_checkbox.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__menu_checkbox.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__menu_checkbox_checked.svg b/res/skins/LateNight/palemoon/buttons/btn__menu_checkbox_checked.svg index 6c00fa5d9c3..5f6de1fdfc0 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__menu_checkbox_checked.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__menu_checkbox_checked.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__mic_duck_auto.svg b/res/skins/LateNight/palemoon/buttons/btn__mic_duck_auto.svg index d63efecdcff..94d483dd23a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__mic_duck_auto.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__mic_duck_auto.svg @@ -1,3 +1,3 @@ - + AUTO diff --git a/res/skins/LateNight/palemoon/buttons/btn__mic_duck_manual.svg b/res/skins/LateNight/palemoon/buttons/btn__mic_duck_manual.svg index e2c67836db4..3127946d56d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__mic_duck_manual.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__mic_duck_manual.svg @@ -1,3 +1,3 @@ - + MAN diff --git a/res/skins/LateNight/palemoon/buttons/btn__mic_duck_off.svg b/res/skins/LateNight/palemoon/buttons/btn__mic_duck_off.svg index 3022bcb2a58..04490e96011 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__mic_duck_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__mic_duck_off.svg @@ -1,4 +1,4 @@ - + DUCK DUCK diff --git a/res/skins/LateNight/palemoon/buttons/btn__mic_talk.svg b/res/skins/LateNight/palemoon/buttons/btn__mic_talk.svg index 0284b30f0f6..cb53d9d7fa0 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__mic_talk.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__mic_talk.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__mic_talk_active.svg b/res/skins/LateNight/palemoon/buttons/btn__mic_talk_active.svg index 45870841854..223c229ff29 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__mic_talk_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__mic_talk_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__minus.svg b/res/skins/LateNight/palemoon/buttons/btn__minus.svg index 32877c68fa5..03cb477519e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__minus.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__minus.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__minus_active.svg b/res/skins/LateNight/palemoon/buttons/btn__minus_active.svg index 3a5432f25be..df10104c2b7 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__minus_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__minus_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__outro_end.svg b/res/skins/LateNight/palemoon/buttons/btn__outro_end.svg index e5e4bc0e75e..83ff7b23ffc 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__outro_end.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__outro_end.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__outro_end_active.svg b/res/skins/LateNight/palemoon/buttons/btn__outro_end_active.svg index 030357759cd..5fb69951b2e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__outro_end_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__outro_end_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__outro_start.svg b/res/skins/LateNight/palemoon/buttons/btn__outro_start.svg index 303a4690aee..4be24a831ec 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__outro_start.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__outro_start.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__outro_start_active.svg b/res/skins/LateNight/palemoon/buttons/btn__outro_start_active.svg index 12c9e637d87..888db6b6706 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__outro_start_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__outro_start_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__pause_deck_mini.svg b/res/skins/LateNight/palemoon/buttons/btn__pause_deck_mini.svg index 85a14cc491e..72cc462adcd 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__pause_deck_mini.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__pause_deck_mini.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__pause_sampler.svg b/res/skins/LateNight/palemoon/buttons/btn__pause_sampler.svg index 821a7d610b9..1ac5aaad76a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__pause_sampler.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__pause_sampler.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__pfl.svg b/res/skins/LateNight/palemoon/buttons/btn__pfl.svg index a229bdeb6e8..882b9d78d62 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__pfl.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__pfl.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__pfl_active.svg b/res/skins/LateNight/palemoon/buttons/btn__pfl_active.svg index fad0d8c5f78..86add1b4048 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__pfl_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__pfl_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__play_deck.svg b/res/skins/LateNight/palemoon/buttons/btn__play_deck.svg index 7f259fc7500..808cf0a727b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__play_deck.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__play_deck.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__play_deck_active.svg b/res/skins/LateNight/palemoon/buttons/btn__play_deck_active.svg index fb9f96e695f..d8a86201da2 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__play_deck_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__play_deck_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__play_deck_mini.svg b/res/skins/LateNight/palemoon/buttons/btn__play_deck_mini.svg index 5e107fde94b..544e34d4e35 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__play_deck_mini.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__play_deck_mini.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__play_sampler.svg b/res/skins/LateNight/palemoon/buttons/btn__play_sampler.svg index 5e172c2e059..49da2d3dc13 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__play_sampler.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__play_sampler.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__plus.svg b/res/skins/LateNight/palemoon/buttons/btn__plus.svg index 5d64d2f3f4f..bd1add3383d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__plus.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__plus.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__plus_active.svg b/res/skins/LateNight/palemoon/buttons/btn__plus_active.svg index 34d64354d72..a24b9100997 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__plus_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__plus_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__plus_flat.svg b/res/skins/LateNight/palemoon/buttons/btn__plus_flat.svg index af431d2e4f6..43066bea72a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__plus_flat.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__plus_flat.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__prev.svg b/res/skins/LateNight/palemoon/buttons/btn__prev.svg index 8eeb2877477..6914a7a9f49 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__prev.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__prev.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__quantize.svg b/res/skins/LateNight/palemoon/buttons/btn__quantize.svg index c7d83d99e11..13263a21352 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__quantize.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__quantize.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__quantize_active_12.svg b/res/skins/LateNight/palemoon/buttons/btn__quantize_active_12.svg index bae2506aa2a..0fe637944c5 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__quantize_active_12.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__quantize_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__quantize_active_34.svg b/res/skins/LateNight/palemoon/buttons/btn__quantize_active_34.svg index fea278c0eae..5edbd8dbd54 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__quantize_active_34.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__quantize_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__rate_center_cyan.svg b/res/skins/LateNight/palemoon/buttons/btn__rate_center_cyan.svg index cf50983b34b..d05e2f86f75 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__rate_center_cyan.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__rate_center_cyan.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__rate_center_off.svg b/res/skins/LateNight/palemoon/buttons/btn__rate_center_off.svg index 636104dfa3f..0fe2cf9cc8f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__rate_center_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__rate_center_off.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__rec_dot.svg b/res/skins/LateNight/palemoon/buttons/btn__rec_dot.svg index 62479f2a9d3..81c00c7e2a5 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__rec_dot.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__rec_dot.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__rec_dot_active.svg b/res/skins/LateNight/palemoon/buttons/btn__rec_dot_active.svg index 4abd4121610..539c12017a2 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__rec_dot_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__rec_dot_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__reloop.svg b/res/skins/LateNight/palemoon/buttons/btn__reloop.svg index 43fa4509e0b..fd9d07545af 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__reloop.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__reloop.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__reloop_active.svg b/res/skins/LateNight/palemoon/buttons/btn__reloop_active.svg index d3602f025a1..09082cf36c3 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__reloop_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__reloop_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__repeat.svg b/res/skins/LateNight/palemoon/buttons/btn__repeat.svg index a1e8beb424f..011001b6fc9 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__repeat.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__repeat.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__repeat_active_12.svg b/res/skins/LateNight/palemoon/buttons/btn__repeat_active_12.svg index 79f9574bf90..76006460fe6 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__repeat_active_12.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__repeat_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__repeat_active_34.svg b/res/skins/LateNight/palemoon/buttons/btn__repeat_active_34.svg index c5c8855f6d4..f53db09979a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__repeat_active_34.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__repeat_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__reverse.svg b/res/skins/LateNight/palemoon/buttons/btn__reverse.svg index 30972c18800..8a2b1843a9f 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__reverse.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__reverse.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__reverse_active.svg b/res/skins/LateNight/palemoon/buttons/btn__reverse_active.svg index 452c714b9e3..0fa35d991ff 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__reverse_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__reverse_active.svg @@ -1,3 +1,3 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__settings_off.svg b/res/skins/LateNight/palemoon/buttons/btn__settings_off.svg index ba9738b1dd1..e0c392d84d2 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__settings_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__settings_off.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__settings_on.svg b/res/skins/LateNight/palemoon/buttons/btn__settings_on.svg index 9cf8c215c01..d91ebcd55a5 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__settings_on.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__settings_on.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__slip.svg b/res/skins/LateNight/palemoon/buttons/btn__slip.svg index a5f9340a4ac..cc40ed61977 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__slip.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__slip.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__slip_active_12.svg b/res/skins/LateNight/palemoon/buttons/btn__slip_active_12.svg index 6429a0e1aea..4c4d8de2ebc 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__slip_active_12.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__slip_active_12.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__slip_active_34.svg b/res/skins/LateNight/palemoon/buttons/btn__slip_active_34.svg index 3b9060cc6e0..16f53819961 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__slip_active_34.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__slip_active_34.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__spinbox_down.svg b/res/skins/LateNight/palemoon/buttons/btn__spinbox_down.svg index 19a1ca8cc0f..594ee0660a2 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__spinbox_down.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__spinbox_down.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__spinbox_up.svg b/res/skins/LateNight/palemoon/buttons/btn__spinbox_up.svg index 621833c17bc..11bb9552bcd 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__spinbox_up.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__spinbox_up.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__split.svg b/res/skins/LateNight/palemoon/buttons/btn__split.svg index cedab4beb65..d71b5341c53 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__split.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__split.svg @@ -1,4 +1,4 @@ - + SPLIT SPLIT diff --git a/res/skins/LateNight/palemoon/buttons/btn__split_active.svg b/res/skins/LateNight/palemoon/buttons/btn__split_active.svg index a11a1dddfd2..c9f27bf7a27 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__split_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__split_active.svg @@ -1,3 +1,3 @@ - + SPLIT diff --git a/res/skins/LateNight/palemoon/buttons/btn__star.svg b/res/skins/LateNight/palemoon/buttons/btn__star.svg index 63defd3da3d..9600c2b682c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__star.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__star.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__sync_deck.svg b/res/skins/LateNight/palemoon/buttons/btn__sync_deck.svg index 95b68c70e84..81f224ea9a8 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__sync_deck.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__sync_deck.svg @@ -1,4 +1,4 @@ - + SYNC SYNC diff --git a/res/skins/LateNight/palemoon/buttons/btn__sync_deck_active.svg b/res/skins/LateNight/palemoon/buttons/btn__sync_deck_active.svg index a14a1de1863..37fd7be2076 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__sync_deck_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__sync_deck_active.svg @@ -1,3 +1,3 @@ - + SYNC diff --git a/res/skins/LateNight/palemoon/buttons/btn__sync_leader.svg b/res/skins/LateNight/palemoon/buttons/btn__sync_leader.svg index 86370b8e446..63666d4f38b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__sync_leader.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__sync_leader.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__sync_leader_explicit.svg b/res/skins/LateNight/palemoon/buttons/btn__sync_leader_explicit.svg index 597e3cfe3f4..b182c791d11 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__sync_leader_explicit.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__sync_leader_explicit.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__sync_leader_implicit.svg b/res/skins/LateNight/palemoon/buttons/btn__sync_leader_implicit.svg index d99a457dd98..ac08b70489b 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__sync_leader_implicit.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__sync_leader_implicit.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__sync_sampler.svg b/res/skins/LateNight/palemoon/buttons/btn__sync_sampler.svg index 75e8271539c..0eb30ab70e1 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__sync_sampler.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__sync_sampler.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__sync_sampler_active.svg b/res/skins/LateNight/palemoon/buttons/btn__sync_sampler_active.svg index 6a8d858f0b0..bcff5c6700a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__sync_sampler_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__sync_sampler_active.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_left.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_left.svg index 74d5f3ad5a0..50af6c1762e 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_left.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_left.svg @@ -1,11 +1,60 @@ - - - - - + + + + + + - - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_left_off.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_left_off.svg index ff4be030baa..fe8fb4012e8 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_left_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_left_off.svg @@ -1,3 +1,21 @@ - - + + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_mid.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_mid.svg index ce1aac6ed82..10a70fd4609 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_mid.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_mid.svg @@ -1,11 +1,60 @@ - - - - - + + + + + + - - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_mid_off.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_mid_off.svg index dcc6bf3d8ed..fcc40186566 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_mid_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_mid_off.svg @@ -1,3 +1,21 @@ - - + + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_right.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_right.svg index 08547669146..1b8619f22bc 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_right.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_right.svg @@ -1,11 +1,60 @@ - - - - - + + + + + + - - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_right_off.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_right_off.svg index 24988943837..fceaf408bb7 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_right_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_aux_right_off.svg @@ -1,3 +1,22 @@ - - + + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_default.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_default.svg index 63a22d3d0d2..1e0c073e696 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_default.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_default.svg @@ -1,11 +1,60 @@ - - - - - + + + + + + - - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_off.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_off.svg index eaa0d2e3503..fef387e7dcd 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_off.svg @@ -1,3 +1,21 @@ - - + + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_warning.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_warning.svg index 1f1cc256730..863ad64ca14 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_warning.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_left_warning.svg @@ -1,11 +1,60 @@ - - - - - + + + + + + - - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_mid_off.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_mid_off.svg index 94a1d938491..f3d80b62ab1 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_mid_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_mid_off.svg @@ -1,3 +1,21 @@ - - + + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_mid_warning.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_mid_warning.svg index 0d5f430b28e..bd03cef83c1 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_mid_warning.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_mid_warning.svg @@ -1,11 +1,60 @@ - - - - - + + + + + + - - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_default.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_default.svg index 86b36785245..b83988c2a32 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_default.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_default.svg @@ -1,11 +1,60 @@ - - - - - + + + + + + - - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_off.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_off.svg index c40ec374081..a0ed969f84a 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_off.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_off.svg @@ -1,3 +1,21 @@ - - + + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_warning.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_warning.svg index 16bb8f78727..2625790220c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_warning.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_deck_right_warning.svg @@ -1,11 +1,60 @@ - - - - - + + + + + + - - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_left.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_left.svg index 5fba469b1fe..c749b7ba488 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_left.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_left.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_main.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_main.svg index f3b4a04fa98..1e077753dfe 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_main.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_main.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_right.svg b/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_right.svg index 342ae95fe8b..e84cc78dca9 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_right.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__xfader_sampler_right.svg @@ -1,4 +1,4 @@ - + diff --git a/res/skins/LateNight/style_classic.qss b/res/skins/LateNight/style_classic.qss index 8d419e0dbf4..9ea9d60dd30 100644 --- a/res/skins/LateNight/style_classic.qss +++ b/res/skins/LateNight/style_classic.qss @@ -804,6 +804,8 @@ WLibrary { WEffectChainPresetButton::menu-indicator { image: url(skin:../LateNight/classic/buttons/btn__fx_settings.svg) no-repeat center center; + width: 18px; + height: 18px; } #DryWetKnob, @@ -879,6 +881,8 @@ WEffectSelector, /* Arrow size is set in C++ to match the library font size */ WSearchLineEdit::down-arrow { image: url(skin:../LateNight/classic/buttons/btn__fx_selector_down.svg); + width: 16px; + height: 24px; } WEffectSelector::down-arrow:hover, WEffectChainPresetSelector::down-arrow:hover, From 2e3b5139d1f799cd96fcd6a8041b5d81ed9a97d3 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Fri, 8 Dec 2023 02:04:30 +0100 Subject: [PATCH 32/41] LateNight: fix library radio buttons (Analyze) * fixed size * background: -> image: --- .../buttons/btn__lib_radio_button_gold_on.svg | 4 -- .../btn__lib_radio_button_yellow_on.svg | 1 - res/skins/LateNight/style.qss | 9 +++-- res/skins/LateNight/style_classic.qss | 16 +++++--- res/skins/LateNight/style_palemoon.qss | 37 +++++++------------ 5 files changed, 29 insertions(+), 38 deletions(-) delete mode 100644 res/skins/LateNight/classic/buttons/btn__lib_radio_button_gold_on.svg delete mode 100644 res/skins/LateNight/classic/buttons/btn__lib_radio_button_yellow_on.svg diff --git a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_gold_on.svg b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_gold_on.svg deleted file mode 100644 index af13df7919d..00000000000 --- a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_gold_on.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_yellow_on.svg b/res/skins/LateNight/classic/buttons/btn__lib_radio_button_yellow_on.svg deleted file mode 100644 index 5207747fc87..00000000000 --- a/res/skins/LateNight/classic/buttons/btn__lib_radio_button_yellow_on.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/res/skins/LateNight/style.qss b/res/skins/LateNight/style.qss index 0892c091fc6..a7572edc9d4 100644 --- a/res/skins/LateNight/style.qss +++ b/res/skins/LateNight/style.qss @@ -841,14 +841,15 @@ WEffectChainPresetButton::menu-indicator { min-width: 40px; } +/* Extra declaration for QRadioButton otherwise it shows up with wrong colors in + Linux with Gnome */ #LibraryFeatureControls QLabel, #LibraryFeatureControls QRadioButton { background: transparent; } - -/* Additional space for QRadionButtons */ -#LibraryFeatureControls QRadioButton { - margin: 2px 3px 2px 3px; +#LibraryFeatureControls QRadioButton::indicator { + width: 18px; + height: 18px; } /* Push 'New' radio button away from corner */ QRadioButton#radioButtonRecentlyAdded { diff --git a/res/skins/LateNight/style_classic.qss b/res/skins/LateNight/style_classic.qss index 9ea9d60dd30..c9b9ef46eb0 100644 --- a/res/skins/LateNight/style_classic.qss +++ b/res/skins/LateNight/style_classic.qss @@ -2362,13 +2362,17 @@ WSearchLineEdit { /************ Library feature controls / tree view / table view *************/ -WLibrary QRadioButton::indicator:checked { - background: url(skin:../LateNight/classic/buttons/btn__lib_radio_button_on_yellow.svg) center center; -} -WLibrary QRadioButton::indicator:unchecked { - background: url(skin:../LateNight/classic/buttons/btn__lib_radio_button_off.svg) center center; -} +/* Additional space */ +#LibraryFeatureControls QRadioButton { + margin: 2px 3px 2px 3px; + } + #LibraryFeatureControls QRadioButton::indicator:checked { + image: url(skin:../LateNight/classic/buttons/btn__lib_radio_button_on_yellow.svg) center center; + } + #LibraryFeatureControls QRadioButton::indicator:unchecked { + image: url(skin:../LateNight/classic/buttons/btn__lib_radio_button_off.svg) center center; + } /* triangle for closed/opened branches in treeview */ /* closed */ diff --git a/res/skins/LateNight/style_palemoon.qss b/res/skins/LateNight/style_palemoon.qss index 2966410dab3..a15cbc03e93 100644 --- a/res/skins/LateNight/style_palemoon.qss +++ b/res/skins/LateNight/style_palemoon.qss @@ -2824,21 +2824,16 @@ WSearchLineEdit { } /************ splitters ***********************/ - -/* Extra declaration for QRadioButton otherwise it shows up with wrong colors in - Linux with Gnome */ -#LibraryFeatureControls QLabel, #LibraryFeatureControls QRadioButton { - background: transparent; -} - -#LibraryFeatureControls QRadioButton::indicator:checked { - image: url(skin:../LateNight/palemoon/buttons/btn__lib_radio_button_on_blue.svg) center center; -} - -#LibraryFeatureControls QRadioButton::indicator:unchecked { - image: url(skin:../LateNight/palemoon/buttons/btn__lib_radio_button_off.svg) center center; -} + /* bottom margin! */ + margin: 6px 3px 4px 3px; + } + #LibraryFeatureControls QRadioButton::indicator:checked { + image: url(skin:../LateNight/palemoon/buttons/btn__lib_radio_button_on_blue.svg) center center; + } + #LibraryFeatureControls QRadioButton::indicator:unchecked { + image: url(skin:../LateNight/palemoon/buttons/btn__lib_radio_button_off.svg) center center; + } /* Library feature pushbuttons Don't use 'WLibrary QPushButton' here, as this would apply padding @@ -2852,15 +2847,11 @@ WSearchLineEdit { /* #fadeModeCombobox set below */ #spinBoxTransition { margin-top: 4px; - } - #LibraryFeatureControls QRadioButton { - /* bottom margin! */ - margin: 6px 3px 4px 3px; - } - QLabel#labelProgress, /* Analysis progress */ - QLabel#labelSelectionInfo /* AutoDJ track selection info */ { - margin: 4px 5px 5px 1px; - } +} +QLabel#labelProgress, /* Analysis progress */ +QLabel#labelSelectionInfo /* AutoDJ track selection info */ { + margin: 4px 5px 5px 1px; +} WLibrarySidebar { show-decoration-selected: 0; From 87442175e6ce9f85d762fe4e604c2e03e9cb80f7 Mon Sep 17 00:00:00 2001 From: m0dB Date: Fri, 8 Dec 2023 11:43:45 +0100 Subject: [PATCH 33/41] fix clamping of the index so left of zero is not drawn with the first value --- .../renderers/allshader/waveformrendererfiltered.cpp | 3 +-- src/waveform/renderers/allshader/waveformrendererhsv.cpp | 3 +-- src/waveform/renderers/allshader/waveformrendererlrrgb.cpp | 3 +-- src/waveform/renderers/allshader/waveformrendererrgb.cpp | 3 +-- src/waveform/renderers/allshader/waveformrenderersimple.cpp | 5 ++--- 5 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/waveform/renderers/allshader/waveformrendererfiltered.cpp b/src/waveform/renderers/allshader/waveformrendererfiltered.cpp index 48e93a1ca51..27bf733fdec 100644 --- a/src/waveform/renderers/allshader/waveformrendererfiltered.cpp +++ b/src/waveform/renderers/allshader/waveformrendererfiltered.cpp @@ -99,8 +99,7 @@ void WaveformRendererFiltered::paintGL() { const int visualIndexStart = std::max(visualFrameStart * 2, 0); const int visualIndexStop = - std::min(std::max(visualFrameStop * 2, visualIndexStart + 1), - dataSize - 1); + std::min(std::max(visualFrameStop, visualFrameStart + 1) * 2, dataSize - 1); const float fpos = static_cast(pos); diff --git a/src/waveform/renderers/allshader/waveformrendererhsv.cpp b/src/waveform/renderers/allshader/waveformrendererhsv.cpp index 82c0dda1b9f..eb2a88af894 100644 --- a/src/waveform/renderers/allshader/waveformrendererhsv.cpp +++ b/src/waveform/renderers/allshader/waveformrendererhsv.cpp @@ -99,8 +99,7 @@ void WaveformRendererHSV::paintGL() { const int visualIndexStart = std::max(visualFrameStart * 2, 0); const int visualIndexStop = - std::min(std::max(visualFrameStop * 2, visualIndexStart + 1), - dataSize - 1); + std::min(std::max(visualFrameStop, visualFrameStart + 1) * 2, dataSize - 1); const float fpos = static_cast(pos); diff --git a/src/waveform/renderers/allshader/waveformrendererlrrgb.cpp b/src/waveform/renderers/allshader/waveformrendererlrrgb.cpp index e1082257be0..be49d260bdd 100644 --- a/src/waveform/renderers/allshader/waveformrendererlrrgb.cpp +++ b/src/waveform/renderers/allshader/waveformrendererlrrgb.cpp @@ -112,8 +112,7 @@ void WaveformRendererLRRGB::paintGL() { const int visualIndexStart = std::max(visualFrameStart * 2, 0); const int visualIndexStop = - std::min(std::max(visualFrameStop * 2, visualIndexStart + 1), - dataSize - 1); + std::min(std::max(visualFrameStop, visualFrameStart + 1) * 2, dataSize - 1); const float fpos = static_cast(pos); diff --git a/src/waveform/renderers/allshader/waveformrendererrgb.cpp b/src/waveform/renderers/allshader/waveformrendererrgb.cpp index 906d0d47b32..076acfb2278 100644 --- a/src/waveform/renderers/allshader/waveformrendererrgb.cpp +++ b/src/waveform/renderers/allshader/waveformrendererrgb.cpp @@ -111,8 +111,7 @@ void WaveformRendererRGB::paintGL() { const int visualIndexStart = std::max(visualFrameStart * 2, 0); const int visualIndexStop = - std::min(std::max(visualFrameStop * 2, visualIndexStart + 1), - dataSize - 1); + std::min(std::max(visualFrameStop, visualFrameStart + 1) * 2, dataSize - 1); const float fpos = static_cast(pos); diff --git a/src/waveform/renderers/allshader/waveformrenderersimple.cpp b/src/waveform/renderers/allshader/waveformrenderersimple.cpp index f1339309fc0..3537c92d874 100644 --- a/src/waveform/renderers/allshader/waveformrenderersimple.cpp +++ b/src/waveform/renderers/allshader/waveformrenderersimple.cpp @@ -108,10 +108,9 @@ void WaveformRendererSimple::paintGL() { const int visualIndexStart = std::max(visualFrameStart * 2, 0); // and at the upper boundary. // Note: * dataSize - 1, because below we add chn = 1 - // * visualIndexStart + 1, because we want to have at least 1 value + // * visualFrameStart + 1, because we want to have at least 1 value const int visualIndexStop = - std::min(std::max(visualFrameStop * 2, visualIndexStart + 1), - dataSize - 1); + std::min(std::max(visualFrameStop, visualFrameStart + 1) * 2, dataSize - 1); // 2 channels float max[2]{}; From 5a267c3f2b13dba31870a9b7fde9e72e0ce18bfa Mon Sep 17 00:00:00 2001 From: Joerg Date: Sat, 9 Dec 2023 00:14:13 +0100 Subject: [PATCH 34/41] Increased pixmapCache size limit and made it dependent on devicePixelRatio Moved this general definition out off coverartcache.cpp --- src/library/coverartcache.cpp | 10 ---------- src/main.cpp | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/library/coverartcache.cpp b/src/library/coverartcache.cpp index ff0d7a53ba8..5f07813abad 100644 --- a/src/library/coverartcache.cpp +++ b/src/library/coverartcache.cpp @@ -14,15 +14,6 @@ namespace { mixxx::Logger kLogger("CoverArtCache"); -// The initial QPixmapCache limit is 10MB. -// But it is not used just by the coverArt stuff, -// it is also used by Qt to handle other things behind the scenes. -// Consequently coverArt cache will always have less than those -// 10MB available to store the pixmaps. -// So, we must increase this size a bit more, -// in order to allow CoverCache handle more covers (performance gain). -constexpr int kPixmapCacheLimit = 20480; - QString pixmapCacheKey(mixxx::cache_key_t hash, int width) { return QString("CoverArtCache_%1_%2") .arg(QString::number(hash), QString::number(width)); @@ -39,7 +30,6 @@ inline QImage resizeImageWidth(const QImage& image, int width) { } // anonymous namespace CoverArtCache::CoverArtCache() { - QPixmapCache::setCacheLimit(kPixmapCacheLimit); } //static diff --git a/src/main.cpp b/src/main.cpp index 478af0d057b..e4065d0df9b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -40,6 +41,16 @@ constexpr char kScaleFactorEnvVar[] = "QT_SCALE_FACTOR"; const QString kConfigGroup = QStringLiteral("[Config]"); const QString kScaleFactorKey = QStringLiteral("ScaleFactor"); +// The default initial QPixmapCache limit is 10MB. +// But this is used for all CoverArts in all used sizes and +// as rendering cache for all SVG icons by Qt behind the scenes. +// Consequently coverArt cache will always have less than those +// 10MB available to store the pixmaps. +// Profiling at 100% HiDPI zoom on Windows, that with 20MByte, +// the SVG rendering happens sometimes during normal operation. +// An indicator that the QPixmapCache was too small. +constexpr int kPixmapCacheLimitAt100PercentZoom = 32 * 1024; // 32 MByte + int runMixxx(MixxxApplication* pApp, const CmdlineArgs& args) { const auto pCoreServices = std::make_shared(args, pApp); @@ -67,6 +78,12 @@ int runMixxx(MixxxApplication* pApp, const CmdlineArgs& args) { &mixxx::CoreServices::initializationProgressUpdate, &mainWindow, &MixxxMainWindow::initializationProgressUpdate); + + // The size of cached pixmaps increases with the square of devicePixelRatio + // (this covers both, operating system scaling and Mixxx preferences scaling) + QPixmapCache::setCacheLimit(static_cast(kPixmapCacheLimitAt100PercentZoom * + pow(pApp->devicePixelRatio(), 2.0f))); + pCoreServices->initialize(pApp); #ifdef MIXXX_USE_QOPENGL From 1908318413b6686e52a032078b4cd05e734eb1f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Fri, 8 Dec 2023 10:42:14 +0100 Subject: [PATCH 35/41] Suppress possible loss of data warning explicit a /w after /W3 seems to no longer work "overriding '/W3' with '/w'" --- CMakeLists.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ca8b2b7496..9b25806c7a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1545,15 +1545,10 @@ if(GNU_GCC OR LLVM_CLANG) PROPERTY COMPILE_OPTIONS -Wno-unused-parameter -Wno-switch ) elseif(MSVC) - set_property( - SOURCE src/library/rekordbox/kaitaistructs/rekordbox_anlz.cpp - APPEND_STRING - PROPERTY COMPILE_OPTIONS /w - ) set_property( SOURCE src/library/rekordbox/kaitaistructs/rekordbox_pdb.cpp APPEND_STRING - PROPERTY COMPILE_OPTIONS /w + PROPERTY COMPILE_OPTIONS /wd4244 ) endif() From 436f15b080f98ae5e0fd9b469982acbf63cace9a Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sun, 23 Jul 2023 03:22:12 +0200 Subject: [PATCH 36/41] Pref Sound: auto-select free channels when picking a new I/O device --- src/preferences/dialog/dlgprefsound.cpp | 97 ++++++++++++++++++++- src/preferences/dialog/dlgprefsound.h | 6 +- src/preferences/dialog/dlgprefsounditem.cpp | 23 ++++- src/preferences/dialog/dlgprefsounditem.h | 13 ++- 4 files changed, 129 insertions(+), 10 deletions(-) diff --git a/src/preferences/dialog/dlgprefsound.cpp b/src/preferences/dialog/dlgprefsound.cpp index b5c3c9856f6..97e7501ba6d 100644 --- a/src/preferences/dialog/dlgprefsound.cpp +++ b/src/preferences/dialog/dlgprefsound.cpp @@ -378,16 +378,24 @@ void DlgPrefSound::addPath(const AudioInput& input) { &DlgPrefSound::refreshInputDevices, pSoundItem, &DlgPrefSoundItem::refreshDevices); - insertItem(pSoundItem, inputVLayout); connectSoundItem(pSoundItem); + insertItem(pSoundItem, inputVLayout); setScrollSafeGuardForAllInputWidgets(pSoundItem); } void DlgPrefSound::connectSoundItem(DlgPrefSoundItem* pItem) { - connect(pItem, &DlgPrefSoundItem::settingChanged, this, &DlgPrefSound::deviceSettingChanged); + connect(pItem, + &DlgPrefSoundItem::selectedDeviceChanged, + this, + &DlgPrefSound::deviceChanged); + connect(pItem, + &DlgPrefSoundItem::selectedChannelsChanged, + this, + &DlgPrefSound::deviceChannelsChanged); connect(this, &DlgPrefSound::loadPaths, pItem, &DlgPrefSoundItem::loadPath); connect(this, &DlgPrefSound::writePaths, pItem, &DlgPrefSoundItem::writePath); + connect(this, &DlgPrefSound::refreshInputDevices, pItem, &DlgPrefSoundItem::refreshDevices); connect(this, &DlgPrefSound::updatingAPI, pItem, &DlgPrefSoundItem::save); connect(this, &DlgPrefSound::updatedAPI, pItem, &DlgPrefSoundItem::reload); } @@ -397,7 +405,7 @@ void DlgPrefSound::insertItem(DlgPrefSoundItem *pItem, QVBoxLayout *pLayout) { for (pos = 0; pos < pLayout->count() - 1; ++pos) { DlgPrefSoundItem *pOther(qobject_cast( pLayout->itemAt(pos)->widget())); - if (!pOther) { + if (!pOther) { // not a sound item, skip continue; } if (pItem->type() < pOther->type()) { @@ -477,6 +485,33 @@ void DlgPrefSound::loadSettings(const SoundManagerConfig& config) { keylockComboBox->setCurrentIndex(keylockComboBox->count() - 1); } + // Collect selected I/O channel indices for all non-empty device comboboxes + // in order to allow auto-selecting free channels when different devices are + // selected later on, when a different device is selected for any I/O. + m_selectedOutputChannelIndices.clear(); + m_selectedInputChannelIndices.clear(); + for (auto* ch : qAsConst(outputTab->children())) { + DlgPrefSoundItem* pItem = qobject_cast(ch); + if (pItem) { + auto id = pItem->getDeviceId(); + if (id == SoundDeviceId()) { + continue; + } + m_selectedOutputChannelIndices.insert(pItem, + QPair(id, pItem->getChannelIndex())); + } + } + for (auto* ch : qAsConst(inputTab->children())) { + DlgPrefSoundItem* pItem = qobject_cast(ch); + if (pItem) { + auto id = pItem->getDeviceId(); + if (id == SoundDeviceId()) { + continue; + } + m_selectedInputChannelIndices.insert(pItem, + QPair(id, pItem->getChannelIndex())); + } + } m_loading = false; // DlgPrefSoundItem has it's own inhibit flag emit loadPaths(m_config); @@ -643,10 +678,64 @@ void DlgPrefSound::settingChanged() { m_settingsModified = true; } -void DlgPrefSound::deviceSettingChanged() { +void DlgPrefSound::deviceChanged() { + if (m_loading) { + return; + } + + DlgPrefSoundItem* pItem = qobject_cast(sender()); + if (!pItem) { + return; + } + QHash>* channels; + if (pItem->isInput()) { + channels = &m_selectedInputChannelIndices; + } else { + channels = &m_selectedOutputChannelIndices; + } + auto id = pItem->getDeviceId(); + if (id == SoundDeviceId()) { + if (channels->contains(pItem)) { + channels->remove(pItem); + } + } else { + QList selectedChannelsForDevice; + QHashIterator> it( + pItem->isInput() + ? m_selectedInputChannelIndices + : m_selectedOutputChannelIndices); + while (it.hasNext()) { + it.next(); + if (it.value().first == id) { + qWarning() << " -> match"; + selectedChannelsForDevice.append(it.value().second); + } + } + pItem->selectFirstUnusedChannelIndex(selectedChannelsForDevice); + } + + checkLatencyCompensation(); + m_settingsModified = true; +} + +void DlgPrefSound::deviceChannelsChanged() { if (m_loading) { return; } + DlgPrefSoundItem* pItem = qobject_cast(sender()); + if (!pItem) { + return; + } + auto id = pItem->getDeviceId(); + int index = pItem->getChannelIndex(); + if (id != SoundDeviceId()) { + if (pItem->isInput()) { + m_selectedInputChannelIndices.insert(pItem, QPair(id, index)); + } else { + m_selectedOutputChannelIndices.insert(pItem, QPair(id, index)); + } + } + checkLatencyCompensation(); m_settingsModified = true; } diff --git a/src/preferences/dialog/dlgprefsound.h b/src/preferences/dialog/dlgprefsound.h index 57aedd72e9a..2a7089a28eb 100644 --- a/src/preferences/dialog/dlgprefsound.h +++ b/src/preferences/dialog/dlgprefsound.h @@ -14,6 +14,7 @@ class SoundManager; class PlayerManager; class ControlObject; class SoundDevice; +class SoundDeviceId; class DlgPrefSoundItem; class ControlProxy; @@ -67,7 +68,8 @@ class DlgPrefSound : public DlgPreferencePage, public Ui::DlgPrefSoundDlg { void engineClockChanged(int index); void refreshDevices(); void settingChanged(); - void deviceSettingChanged(); + void deviceChanged(); + void deviceChannelsChanged(); void queryClicked(); private: @@ -92,6 +94,8 @@ class DlgPrefSound : public DlgPreferencePage, public Ui::DlgPrefSoundDlg { ControlProxy* m_pMicMonitorMode; QList m_inputDevices; QList m_outputDevices; + QHash> m_selectedOutputChannelIndices; + QHash> m_selectedInputChannelIndices; bool m_settingsModified; bool m_bLatencyChanged; bool m_bSkipConfigClear; diff --git a/src/preferences/dialog/dlgprefsounditem.cpp b/src/preferences/dialog/dlgprefsounditem.cpp index 6a9e62f1f8b..c4e18cfb8fc 100644 --- a/src/preferences/dialog/dlgprefsounditem.cpp +++ b/src/preferences/dialog/dlgprefsounditem.cpp @@ -95,6 +95,7 @@ void DlgPrefSoundItem::deviceChanged(int index) { unsigned char maxChannelsForType = AudioPath::maxChannelsForType(m_type); + channelComboBox->blockSignals(true); // Count down from the max so that stereo channels are first. for (int channelsForType = maxChannelsForType; channelsForType >= minChannelsForType; --channelsForType) { @@ -117,16 +118,28 @@ void DlgPrefSoundItem::deviceChanged(int index) { QPoint(i - 1, channelsForType)); } } + channelComboBox->setCurrentIndex(-1); // clear selection + channelComboBox->blockSignals(false); } emitAndReturn: if (m_emitSettingChanged) { - emit settingChanged(); + emit selectedDeviceChanged(); } } void DlgPrefSoundItem::channelChanged() { if (m_emitSettingChanged) { - emit settingChanged(); + emit selectedChannelsChanged(); + } +} + +void DlgPrefSoundItem::selectFirstUnusedChannelIndex(const QList& selectedChannels) { + // Go through the list of occupied channel indices and pick the first unoccupied + for (int i = 0; i < channelComboBox->count(); i++) { + if (!selectedChannels.contains(i)) { + channelComboBox->setCurrentIndex(i); + return; + } } } @@ -177,6 +190,8 @@ void DlgPrefSoundItem::writePath(SoundManagerConfig* config) const { int channelBase = channelData.x(); int channelCount = channelData.y(); + // check config for occupied channels of this device + // auto-select next free channel (pair) if (m_isInput) { config->addInput( @@ -232,7 +247,7 @@ void DlgPrefSoundItem::setDevice(const SoundDeviceId& device) { //qDebug() << "DlgPrefSoundItem::setDevice" << device; if (index == -1) { deviceComboBox->setCurrentIndex(0); // None - emit settingChanged(); + emit selectedDeviceChanged(); } else { m_emitSettingChanged = false; deviceComboBox->setCurrentIndex(index); @@ -251,7 +266,7 @@ void DlgPrefSoundItem::setChannel(unsigned int channelBase, if (index == -1) { // channel(s) not found channelComboBox->setCurrentIndex(0); // 1 - emit settingChanged(); + emit selectedChannelsChanged(); } else { m_emitSettingChanged = false; channelComboBox->setCurrentIndex(index); diff --git a/src/preferences/dialog/dlgprefsounditem.h b/src/preferences/dialog/dlgprefsounditem.h index 3f369db5756..6fe3a49404d 100644 --- a/src/preferences/dialog/dlgprefsounditem.h +++ b/src/preferences/dialog/dlgprefsounditem.h @@ -23,9 +23,20 @@ class DlgPrefSoundItem : public QWidget, public Ui::DlgPrefSoundItem { AudioPathType type() const { return m_type; }; unsigned int index() const { return m_index; }; + bool isInput() { + return m_isInput; + } + const SoundDeviceId getDeviceId() { + return deviceComboBox->itemData(deviceComboBox->currentIndex()).value(); + } + int getChannelIndex() { + return channelComboBox->currentIndex(); + } + void selectFirstUnusedChannelIndex(const QList& selectedChannels); signals: - void settingChanged(); + void selectedDeviceChanged(); + void selectedChannelsChanged(); public slots: void refreshDevices(const QList& devices); From 12520aa381d1feef10ce1431d4cf586e7d184ecf Mon Sep 17 00:00:00 2001 From: ronso0 Date: Mon, 28 Aug 2023 15:22:33 +0200 Subject: [PATCH 37/41] SoundDeviceItem: add comment with ideas to improve channel auto-select --- src/preferences/dialog/dlgprefsounditem.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/preferences/dialog/dlgprefsounditem.cpp b/src/preferences/dialog/dlgprefsounditem.cpp index c4e18cfb8fc..3a875b025a5 100644 --- a/src/preferences/dialog/dlgprefsounditem.cpp +++ b/src/preferences/dialog/dlgprefsounditem.cpp @@ -137,6 +137,12 @@ void DlgPrefSoundItem::selectFirstUnusedChannelIndex(const QList& selectedC // Go through the list of occupied channel indices and pick the first unoccupied for (int i = 0; i < channelComboBox->count(); i++) { if (!selectedChannels.contains(i)) { + // TODO(xxx) Some ideas to improve auto-select: + // * check selected indices and new selection for channel overlap, e.g. + // if the device has 4 channels and ch.1/2 + ch.3/4 are already selected + // don't select next index (ch.1) but fall back to ch.1/2? + // * if there are only mono indices selected, try to pick the next mono + // channel index instead of suggesting index 0 (ch.1/) channelComboBox->setCurrentIndex(i); return; } From a50fca9f32c0bacf6814048c4c8d11b7ca0de587 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Wed, 13 Sep 2023 10:27:19 +0200 Subject: [PATCH 38/41] Pref Sound: consolidate item conncetions in connectSoundItem() --- src/preferences/dialog/dlgprefsound.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/preferences/dialog/dlgprefsound.cpp b/src/preferences/dialog/dlgprefsound.cpp index 97e7501ba6d..75e8e88e424 100644 --- a/src/preferences/dialog/dlgprefsound.cpp +++ b/src/preferences/dialog/dlgprefsound.cpp @@ -352,10 +352,6 @@ void DlgPrefSound::addPath(const AudioOutput& output) { m_outputDevices, false, AudioPath::isIndexed(type) ? output.getIndex() : 0); - connect(this, - &DlgPrefSound::refreshOutputDevices, - pSoundItem, - &DlgPrefSoundItem::refreshDevices); insertItem(pSoundItem, outputVLayout); connectSoundItem(pSoundItem); @@ -373,11 +369,6 @@ void DlgPrefSound::addPath(const AudioInput& input) { m_inputDevices, true, AudioPath::isIndexed(type) ? input.getIndex() : 0); - - connect(this, - &DlgPrefSound::refreshInputDevices, - pSoundItem, - &DlgPrefSoundItem::refreshDevices); connectSoundItem(pSoundItem); insertItem(pSoundItem, inputVLayout); @@ -395,7 +386,14 @@ void DlgPrefSound::connectSoundItem(DlgPrefSoundItem* pItem) { &DlgPrefSound::deviceChannelsChanged); connect(this, &DlgPrefSound::loadPaths, pItem, &DlgPrefSoundItem::loadPath); connect(this, &DlgPrefSound::writePaths, pItem, &DlgPrefSoundItem::writePath); - connect(this, &DlgPrefSound::refreshInputDevices, pItem, &DlgPrefSoundItem::refreshDevices); + if (pItem->isInput()) { + connect(this, &DlgPrefSound::refreshInputDevices, pItem, &DlgPrefSoundItem::refreshDevices); + } else { + connect(this, + &DlgPrefSound::refreshOutputDevices, + pItem, + &DlgPrefSoundItem::refreshDevices); + } connect(this, &DlgPrefSound::updatingAPI, pItem, &DlgPrefSoundItem::save); connect(this, &DlgPrefSound::updatedAPI, pItem, &DlgPrefSoundItem::reload); } From 8279ccd7f401e5f5cd8395ba305badf6256ef008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Fri, 8 Dec 2023 16:55:49 +0100 Subject: [PATCH 39/41] Display the samplerate in the track info dialog. --- src/library/dlgtrackinfo.cpp | 7 ++ src/library/dlgtrackinfo.ui | 211 +++++++++++++++++------------------ 2 files changed, 107 insertions(+), 111 deletions(-) diff --git a/src/library/dlgtrackinfo.cpp b/src/library/dlgtrackinfo.cpp index 8e43e59570b..8e3d9db146b 100644 --- a/src/library/dlgtrackinfo.cpp +++ b/src/library/dlgtrackinfo.cpp @@ -425,6 +425,13 @@ void DlgTrackInfo::updateTrackMetadataFields() { txtReplayGain->setText( mixxx::ReplayGain::ratioToString( m_trackRecord.getMetadata().getTrackInfo().getReplayGain().getRatio())); + + auto samplerate = m_trackRecord.getMetadata().getStreamInfo().getSignalInfo().getSampleRate(); + if (samplerate.isValid()) { + txtSamplerate->setText(QString::number(samplerate.value()) + " Hz"); + } else { + txtSamplerate->clear(); + } } void DlgTrackInfo::updateSpinBpmFromBeats() { diff --git a/src/library/dlgtrackinfo.ui b/src/library/dlgtrackinfo.ui index 45aeffed784..f3da4ee311a 100644 --- a/src/library/dlgtrackinfo.ui +++ b/src/library/dlgtrackinfo.ui @@ -7,7 +7,7 @@ 0 0 575 - 595 + 642 @@ -43,7 +43,6 @@ 0 - Summary @@ -54,7 +53,6 @@ - @@ -76,7 +74,6 @@ - @@ -111,7 +108,6 @@ - @@ -128,7 +124,6 @@ - @@ -145,7 +140,6 @@ - @@ -162,7 +156,6 @@ - @@ -179,7 +172,6 @@ - @@ -196,7 +188,6 @@ - @@ -213,7 +204,6 @@ - @@ -232,7 +222,6 @@ - @@ -243,7 +232,6 @@ - @@ -260,7 +248,6 @@ - @@ -268,7 +255,6 @@ - @@ -279,7 +265,6 @@ - @@ -290,7 +275,6 @@ - @@ -307,7 +291,6 @@ - @@ -315,7 +298,6 @@ - @@ -332,7 +314,6 @@ - @@ -343,7 +324,6 @@ - @@ -360,7 +340,6 @@ - @@ -368,7 +347,6 @@ - @@ -385,7 +363,6 @@ - @@ -396,7 +373,6 @@ - @@ -404,7 +380,6 @@ - @@ -436,7 +411,6 @@ - @@ -447,7 +421,6 @@ - @@ -458,8 +431,7 @@ - - + Qt::Horizontal @@ -474,8 +446,6 @@ - - @@ -489,16 +459,23 @@ - - - + + + - Duration: + BPM: - - + + + + Filetype: + + + + + 75 @@ -513,38 +490,69 @@ - - + + - BPM: + Location: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - 75 - true - - + + + + true + Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - + + - ReplayGain: + Bitrate: - - + + + + Duration: + + + + + + + + + Open in File Browser + + + + + + + Qt::Horizontal + + + + 40 + 10 + + + + + + + + 75 @@ -559,15 +567,24 @@ - - + + + + + 75 + true + + - Filetype: + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - + + 75 @@ -582,15 +599,22 @@ - - + + - Bitrate: + ReplayGain: - - + + + + Date added: + + + + + 75 @@ -605,14 +629,7 @@ - - - - Date added: - - - - + @@ -628,53 +645,26 @@ - - + + - Location: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + Samplerate: - - + + + + + 75 + true + + - - true - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Open in File Browser - - - - - - - Qt::Horizontal - - - - 40 - 10 - - - - - - @@ -698,7 +688,6 @@ - BPM From a2f91da2f031de4cd57eb35f15bfbd2b752e4102 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sat, 9 Dec 2023 00:31:57 +0100 Subject: [PATCH 40/41] LateNight, PaleMoon: fix active loop in/out icons --- .../LateNight/palemoon/buttons/btn__loop_active.svg | 12 ++---------- .../LateNight/palemoon/buttons/btn__loop_in.svg | 4 ++-- .../palemoon/buttons/btn__loop_in_active.svg | 5 +++-- .../LateNight/palemoon/buttons/btn__loop_out.svg | 4 ++-- .../palemoon/buttons/btn__loop_out_active.svg | 5 +++-- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_active.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_active.svg index a7253f5c5b4..69740f76efc 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_active.svg @@ -1,13 +1,5 @@ - - - - - - - - - + - + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_in.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_in.svg index d7773b05ce1..bfbfa8d2121 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_in.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_in.svg @@ -7,7 +7,7 @@ - - + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_in_active.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_in_active.svg index a0e9e4e2b96..845fb58c31d 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_in_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_in_active.svg @@ -1,3 +1,4 @@ - - + + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_out.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_out.svg index d7c24ac0023..cff83d7386c 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_out.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_out.svg @@ -7,7 +7,7 @@ - - + + diff --git a/res/skins/LateNight/palemoon/buttons/btn__loop_out_active.svg b/res/skins/LateNight/palemoon/buttons/btn__loop_out_active.svg index a50beda8b9d..94462fdfbf9 100644 --- a/res/skins/LateNight/palemoon/buttons/btn__loop_out_active.svg +++ b/res/skins/LateNight/palemoon/buttons/btn__loop_out_active.svg @@ -1,3 +1,4 @@ - - + + + From 19fdc2151b8f2710e2ef4f893dac62c071865723 Mon Sep 17 00:00:00 2001 From: m0dB Date: Sat, 9 Dec 2023 23:41:03 +0100 Subject: [PATCH 41/41] minor tweak --- .../classic/buttons/btn__intro_end.svg | 45 +++++++++++++++---- .../classic/buttons/btn__outro_end.svg | 42 +++++++++++++---- 2 files changed, 69 insertions(+), 18 deletions(-) diff --git a/res/skins/LateNight/classic/buttons/btn__intro_end.svg b/res/skins/LateNight/classic/buttons/btn__intro_end.svg index 0b46d96e8bb..2f4b1e36f2b 100644 --- a/res/skins/LateNight/classic/buttons/btn__intro_end.svg +++ b/res/skins/LateNight/classic/buttons/btn__intro_end.svg @@ -1,10 +1,37 @@ - - - - - - - - - + + + + + + + + + diff --git a/res/skins/LateNight/classic/buttons/btn__outro_end.svg b/res/skins/LateNight/classic/buttons/btn__outro_end.svg index 1f1a770a9ee..a77eb105119 100644 --- a/res/skins/LateNight/classic/buttons/btn__outro_end.svg +++ b/res/skins/LateNight/classic/buttons/btn__outro_end.svg @@ -1,10 +1,34 @@ - - - - - - - - - + + + + + + +