Fixed: When a file was selected for the Include command in the Configuration Editor that was not readable by the audio service, no warning appeared.

Fixed: When the Include command was used to load the configuration file itself or another file including the file, Equalizer APO could crash. The recursion depth is now limited to 100.
This commit is contained in:
jthedering committed 2016-07-17 13:08:59 +00:00
1 parent 3d8ef28d1b
commit f014bf4b7d
7 files changed
+248 -107

No files matched your search

+47
View File
@@ -19,6 +19,7 @@
#include <QFileDialog> #include <QFileDialog>
#include "helpers/RegistryHelper.h"
#include "IncludeFilterGUI.h" #include "IncludeFilterGUI.h"
#include "ui_IncludeFilterGUI.h" #include "ui_IncludeFilterGUI.h"
@@ -28,6 +29,8 @@ IncludeFilterGUI::IncludeFilterGUI(FilterTable* filterTable, const QString& path
ui->setupUi(this); ui->setupUi(this);
ui->pathLineEdit->setText(path); ui->pathLineEdit->setText(path);
updateFileInfo();
} }
IncludeFilterGUI::~IncludeFilterGUI() IncludeFilterGUI::~IncludeFilterGUI()
@@ -61,6 +64,7 @@ void IncludeFilterGUI::on_selectFileToolButton_clicked()
if (relativePath.startsWith("../../")) if (relativePath.startsWith("../../"))
relativePath = absolutePath; relativePath = absolutePath;
ui->pathLineEdit->setText(QDir::toNativeSeparators(relativePath)); ui->pathLineEdit->setText(QDir::toNativeSeparators(relativePath));
updateFileInfo();
emit updateModel(); emit updateModel();
} }
@@ -68,6 +72,8 @@ void IncludeFilterGUI::on_selectFileToolButton_clicked()
void IncludeFilterGUI::on_pathLineEdit_editingFinished() void IncludeFilterGUI::on_pathLineEdit_editingFinished()
{ {
updateFileInfo();
emit updateModel(); emit updateModel();
} }
@@ -83,3 +89,44 @@ void IncludeFilterGUI::on_openFileToolButton_clicked()
filterTable->openConfig(fileInfo.absoluteFilePath()); filterTable->openConfig(fileInfo.absoluteFilePath());
} }
} }
void IncludeFilterGUI::updateFileInfo()
{
QString error = "";
QString path = ui->pathLineEdit->text();
if (path.length() == 0)
{
error = tr("No file selected");
}
else
{
QFileInfo fileInfo(filterTable->getConfigPath());
QDir configDir = fileInfo.absoluteDir();
fileInfo.setFile(configDir, path);
if (!fileInfo.exists())
{
error = tr("File not found");
}
else
{
path = QDir::toNativeSeparators(fileInfo.absoluteFilePath());
ACCESS_MASK mask = GENERIC_READ;
try
{
mask = RegistryHelper::getFileAccessForUser(path.toStdWString(), SECURITY_LOCAL_SERVICE_RID);
}
catch (RegistryException e)
{
// ignore
}
if ((mask & GENERIC_READ) != GENERIC_READ && (mask & FILE_GENERIC_READ) != FILE_GENERIC_READ)
error = tr("The file is not readable for the audio service.\nChange the file permissions or copy the file to the config directory.");
}
}
ui->errorLabel->setVisible(error.length() > 0);
ui->errorLabel->setText(error);
}
+2
View File
@@ -42,6 +42,8 @@ private slots:
void on_openFileToolButton_clicked(); void on_openFileToolButton_clicked();
private: private:
void updateFileInfo();
Ui::IncludeFilterGUI* ui; Ui::IncludeFilterGUI* ui;
FilterTable* filterTable; FilterTable* filterTable;
}; };
+67 -23
View File
@@ -13,7 +13,7 @@
<property name="windowTitle"> <property name="windowTitle">
<string notr="true"/> <string notr="true"/>
</property> </property>
<layout class="QGridLayout" name="gridLayout" columnstretch="0,0,0,1,0"> <layout class="QGridLayout" name="gridLayout" columnstretch="0,0,0,1,0,0">
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>0</number>
</property> </property>
@@ -26,28 +26,7 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="5">
<widget class="QLabel" name="includeLabel">
<property name="text">
<string>Include:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="ResizingLineEdit" name="pathLineEdit"/>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="selectFileToolButton">
<property name="text">
<string>Select file</string>
</property>
<property name="icon">
<iconset resource="../Editor.qrc">
<normaloff>:/icons/document-open.ico</normaloff>:/icons/document-open.ico</iconset>
</property>
</widget>
</item>
<item row="0" column="4">
<spacer name="horizontalSpacer"> <spacer name="horizontalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
@@ -71,6 +50,71 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="ResizingLineEdit" name="pathLineEdit"/>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="selectFileToolButton">
<property name="text">
<string>Select file</string>
</property>
<property name="icon">
<iconset resource="../Editor.qrc">
<normaloff>:/icons/document-open.ico</normaloff>:/icons/document-open.ico</iconset>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="includeLabel">
<property name="text">
<string>Include:</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QLabel" name="errorLabel">
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>120</red>
<green>120</green>
<blue>120</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
Binary file not shown.
+100 -83
View File
@@ -19,79 +19,79 @@
<translation>Verstärkung:</translation> <translation>Verstärkung:</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="38"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="44"/>
<source>Peaking filter</source> <source>Peaking filter</source>
<translation>Peaking-Filter</translation> <translation>Peaking-Filter</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="39"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="45"/>
<source>Low-pass filter</source> <source>Low-pass filter</source>
<translation>Tiefpassfilter</translation> <translation>Tiefpassfilter</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="40"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="46"/>
<source>High-pass filter</source> <source>High-pass filter</source>
<translation>Hochpassfilter</translation> <translation>Hochpassfilter</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="41"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="47"/>
<source>Band-pass filter</source> <source>Band-pass filter</source>
<translation>Bandpassfilter</translation> <translation>Bandpassfilter</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="42"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="48"/>
<source>Low-shelf filter</source> <source>Low-shelf filter</source>
<translation>Low Shelf-Filter</translation> <translation>Low Shelf-Filter</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="43"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="49"/>
<source>High-shelf filter</source> <source>High-shelf filter</source>
<translation>High Shelf-Filter</translation> <translation>High Shelf-Filter</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="44"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="50"/>
<source>Notch filter</source> <source>Notch filter</source>
<translation>Notchfilter</translation> <translation>Notchfilter</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="45"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="51"/>
<source>All-pass filter</source> <source>All-pass filter</source>
<translation>Allpassfilter</translation> <translation>Allpassfilter</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="191"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="197"/>
<source>Center frequency</source> <source>Center frequency</source>
<translation>Mittenfrequenz</translation> <translation>Mittenfrequenz</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="193"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="199"/>
<source>Corner frequency</source> <source>Corner frequency</source>
<translation>Eckfrequenz</translation> <translation>Eckfrequenz</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="210"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="216"/>
<source>Fixed Q</source> <source>Fixed Q</source>
<translation>Festes Q</translation> <translation>Festes Q</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="212"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="218"/>
<location filename="../guis/BiQuadFilterGUI.cpp" line="252"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="258"/>
<source>Fixed S</source> <source>Fixed S</source>
<translation>Festes S</translation> <translation>Festes S</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="214"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="220"/>
<source>Q factor</source> <source>Q factor</source>
<translation>Q-Faktor</translation> <translation>Q-Faktor</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="216"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="222"/>
<source>Bandwidth</source> <source>Bandwidth</source>
<translation>Bandbreite</translation> <translation>Bandbreite</translation>
</message> </message>
<message> <message>
<location filename="../guis/BiQuadFilterGUI.cpp" line="218"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="224"/>
<location filename="../guis/BiQuadFilterGUI.cpp" line="253"/> <location filename="../guis/BiQuadFilterGUI.cpp" line="259"/>
<source>Slope</source> <source>Slope</source>
<translation>Steilheit</translation> <translation>Steilheit</translation>
</message> </message>
@@ -469,7 +469,7 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<name>DelayFilterGUI</name> <name>DelayFilterGUI</name>
<message> <message>
<location filename="../guis/DelayFilterGUI.ui" line="32"/> <location filename="../guis/DelayFilterGUI.ui" line="32"/>
<location filename="../guis/DelayFilterGUI.cpp" line="53"/> <location filename="../guis/DelayFilterGUI.cpp" line="55"/>
<source> ms</source> <source> ms</source>
<translation> ms</translation> <translation> ms</translation>
</message> </message>
@@ -489,7 +489,7 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<translation>Samples</translation> <translation>Samples</translation>
</message> </message>
<message> <message>
<location filename="../guis/DelayFilterGUI.cpp" line="53"/> <location filename="../guis/DelayFilterGUI.cpp" line="55"/>
<source> samples</source> <source> samples</source>
<translation> Samples</translation> <translation> Samples</translation>
</message> </message>
@@ -592,37 +592,37 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<translation>Nur Geräte mit installiertem APO zeigen</translation> <translation>Nur Geräte mit installiertem APO zeigen</translation>
</message> </message>
<message> <message>
<location filename="../guis/DeviceFilterGUIDialog.cpp" line="37"/> <location filename="../guis/DeviceFilterGUIDialog.cpp" line="39"/>
<source>Connection</source> <source>Connection</source>
<translation>Anschluss</translation> <translation>Anschluss</translation>
</message> </message>
<message> <message>
<location filename="../guis/DeviceFilterGUIDialog.cpp" line="38"/> <location filename="../guis/DeviceFilterGUIDialog.cpp" line="40"/>
<source>Device</source> <source>Device</source>
<translation>Gerät</translation> <translation>Gerät</translation>
</message> </message>
<message> <message>
<location filename="../guis/DeviceFilterGUIDialog.cpp" line="39"/> <location filename="../guis/DeviceFilterGUIDialog.cpp" line="41"/>
<source>State</source> <source>State</source>
<translation>Status</translation> <translation>Status</translation>
</message> </message>
<message> <message>
<location filename="../guis/DeviceFilterGUIDialog.cpp" line="41"/> <location filename="../guis/DeviceFilterGUIDialog.cpp" line="43"/>
<source>Playback devices</source> <source>Playback devices</source>
<translation>Wiedergabegeräte</translation> <translation>Wiedergabegeräte</translation>
</message> </message>
<message> <message>
<location filename="../guis/DeviceFilterGUIDialog.cpp" line="43"/> <location filename="../guis/DeviceFilterGUIDialog.cpp" line="45"/>
<source>Capture devices</source> <source>Capture devices</source>
<translation>Aufnahmegeräte</translation> <translation>Aufnahmegeräte</translation>
</message> </message>
<message> <message>
<location filename="../guis/DeviceFilterGUIDialog.cpp" line="53"/> <location filename="../guis/DeviceFilterGUIDialog.cpp" line="55"/>
<source>APO installed</source> <source>APO installed</source>
<translation>APO installiert</translation> <translation>APO installiert</translation>
</message> </message>
<message> <message>
<location filename="../guis/DeviceFilterGUIDialog.cpp" line="55"/> <location filename="../guis/DeviceFilterGUIDialog.cpp" line="57"/>
<source>APO not installed</source> <source>APO not installed</source>
<translation>APO nicht installiert</translation> <translation>APO nicht installiert</translation>
</message> </message>
@@ -647,7 +647,7 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<context> <context>
<name>FilterTable</name> <name>FilterTable</name>
<message> <message>
<location filename="../FilterTable.cpp" line="204"/> <location filename="../FilterTable.cpp" line="205"/>
<source>Add filter</source> <source>Add filter</source>
<translation>Filter hinzufügen</translation> <translation>Filter hinzufügen</translation>
</message> </message>
@@ -745,17 +745,17 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<translation>variabel</translation> <translation>variabel</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.ui" line="218"/> <location filename="../guis/GraphicEQFilterGUI.ui" line="211"/>
<source>Import</source> <source>Import</source>
<translation>Importieren</translation> <translation>Importieren</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.ui" line="227"/> <location filename="../guis/GraphicEQFilterGUI.ui" line="220"/>
<source>Export</source> <source>Export</source>
<translation>Exportieren</translation> <translation>Exportieren</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.ui" line="236"/> <location filename="../guis/GraphicEQFilterGUI.ui" line="229"/>
<source>Invert response</source> <source>Invert response</source>
<translation>Frequenzgang invertieren</translation> <translation>Frequenzgang invertieren</translation>
</message> </message>
@@ -764,34 +764,34 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<translation type="vanished">Frequenzgang spiegeln</translation> <translation type="vanished">Frequenzgang spiegeln</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.ui" line="245"/> <location filename="../guis/GraphicEQFilterGUI.ui" line="238"/>
<source>Normalize response</source> <source>Normalize response</source>
<translation>Frequenzgang normalisieren</translation> <translation>Frequenzgang normalisieren</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.ui" line="254"/> <location filename="../guis/GraphicEQFilterGUI.ui" line="247"/>
<source>Reset response</source> <source>Reset response</source>
<translation>Frequenzgang zurücksetzen</translation> <translation>Frequenzgang zurücksetzen</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.cpp" line="295"/> <location filename="../guis/GraphicEQFilterGUI.cpp" line="304"/>
<source>Import frequency response</source> <source>Import frequency response</source>
<translation>Frequenzgang importieren</translation> <translation>Frequenzgang importieren</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.cpp" line="298"/> <location filename="../guis/GraphicEQFilterGUI.cpp" line="307"/>
<location filename="../guis/GraphicEQFilterGUI.cpp" line="371"/> <location filename="../guis/GraphicEQFilterGUI.cpp" line="380"/>
<source>Frequency response (*.csv)</source> <source>Frequency response (*.csv)</source>
<translation>Frequenzgang (*.csv)</translation> <translation>Frequenzgang (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.cpp" line="299"/> <location filename="../guis/GraphicEQFilterGUI.cpp" line="308"/>
<location filename="../guis/GraphicEQFilterGUI.cpp" line="372"/> <location filename="../guis/GraphicEQFilterGUI.cpp" line="381"/>
<source>All files (*.*)</source> <source>All files (*.*)</source>
<translation>Alle Dateien (*.*)</translation> <translation>Alle Dateien (*.*)</translation>
</message> </message>
<message> <message>
<location filename="../guis/GraphicEQFilterGUI.cpp" line="367"/> <location filename="../guis/GraphicEQFilterGUI.cpp" line="376"/>
<source>Export frequency response</source> <source>Export frequency response</source>
<translation>Frequenzgang exportieren</translation> <translation>Frequenzgang exportieren</translation>
</message> </message>
@@ -824,30 +824,47 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<context> <context>
<name>IncludeFilterGUI</name> <name>IncludeFilterGUI</name>
<message> <message>
<location filename="../guis/IncludeFilterGUI.ui" line="32"/> <location filename="../guis/IncludeFilterGUI.ui" line="70"/>
<source>Include:</source> <source>Include:</source>
<translation>Einbinden:</translation> <translation>Einbinden:</translation>
</message> </message>
<message> <message>
<location filename="../guis/IncludeFilterGUI.ui" line="42"/> <location filename="../guis/IncludeFilterGUI.ui" line="59"/>
<source>Select file</source> <source>Select file</source>
<translation>Datei auswählen</translation> <translation>Datei auswählen</translation>
</message> </message>
<message> <message>
<location filename="../guis/IncludeFilterGUI.ui" line="66"/> <location filename="../guis/IncludeFilterGUI.ui" line="45"/>
<source>Open file in editor</source> <source>Open file in editor</source>
<translation>Datei im Editor öffnen</translation> <translation>Datei im Editor öffnen</translation>
</message> </message>
<message> <message>
<location filename="../guis/IncludeFilterGUI.cpp" line="52"/> <location filename="../guis/IncludeFilterGUI.cpp" line="55"/>
<source>Include file</source> <source>Include file</source>
<translation>Datei einbinden</translation> <translation>Datei einbinden</translation>
</message> </message>
<message> <message>
<location filename="../guis/IncludeFilterGUI.cpp" line="54"/> <location filename="../guis/IncludeFilterGUI.cpp" line="57"/>
<source>E-APO configurations (*.txt)</source> <source>E-APO configurations (*.txt)</source>
<translation>E-APO-Konfigurationen (*.txt)</translation> <translation>E-APO-Konfigurationen (*.txt)</translation>
</message> </message>
<message>
<location filename="../guis/IncludeFilterGUI.cpp" line="100"/>
<source>No file selected</source>
<translation>Keine Datei gewählt</translation>
</message>
<message>
<location filename="../guis/IncludeFilterGUI.cpp" line="109"/>
<source>File not found</source>
<translation>Datei nicht gefunden</translation>
</message>
<message>
<location filename="../guis/IncludeFilterGUI.cpp" line="126"/>
<source>The file is not readable for the audio service.
Change the file permissions or copy the file to the config directory.</source>
<translation>Die Datei ist für den Audiodienst nicht lesbar.
Ändern Sie die Dateiberechtigungen oder kopieren Sie die Datei in das config-Verzeichnis.</translation>
</message>
</context> </context>
<context> <context>
<name>IncludeFilterGUIFactory</name> <name>IncludeFilterGUIFactory</name>
@@ -1053,32 +1070,32 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<translation>Alle dateispezifischen Einstellungen zurücksetzen</translation> <translation>Alle dateispezifischen Einstellungen zurücksetzen</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="73"/> <location filename="../MainWindow.cpp" line="75"/>
<source>Equalizer APO %0 Configuration Editor</source> <source>Equalizer APO %0 Configuration Editor</source>
<translation>Equalizer APO %0 Konfigurationseditor</translation> <translation>Equalizer APO %0 Konfigurationseditor</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="79"/> <location filename="../MainWindow.cpp" line="81"/>
<source>Instant mode</source> <source>Instant mode</source>
<translation>Sofort-Modus</translation> <translation>Sofort-Modus</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="81"/> <location filename="../MainWindow.cpp" line="83"/>
<source>Changes are saved immediately</source> <source>Changes are saved immediately</source>
<translation>Änderungen werden sofort gespeichert</translation> <translation>Änderungen werden sofort gespeichert</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="89"/> <location filename="../MainWindow.cpp" line="91"/>
<source>Device: </source> <source>Device: </source>
<translation>Gerät: </translation> <translation>Gerät: </translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="99"/> <location filename="../MainWindow.cpp" line="101"/>
<source>Channel configuration: </source> <source>Channel configuration: </source>
<translation>Kanalkonfiguration: </translation> <translation>Kanalkonfiguration: </translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="107"/> <location filename="../MainWindow.cpp" line="109"/>
<source>Default</source> <source>Default</source>
<translation>Standard</translation> <translation>Standard</translation>
</message> </message>
@@ -1091,17 +1108,17 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<translation type="vanished">Eingabegeräte:</translation> <translation type="vanished">Eingabegeräte:</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="109"/> <location filename="../MainWindow.cpp" line="111"/>
<source>Playback devices:</source> <source>Playback devices:</source>
<translation>Wiedergabegeräte:</translation> <translation>Wiedergabegeräte:</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="120"/> <location filename="../MainWindow.cpp" line="122"/>
<source>Capture devices:</source> <source>Capture devices:</source>
<translation>Aufnahmegeräte:</translation> <translation>Aufnahmegeräte:</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="177"/> <location filename="../MainWindow.cpp" line="179"/>
<source>Registry problem</source> <source>Registry problem</source>
<translation>Registry-Problem</translation> <translation>Registry-Problem</translation>
</message> </message>
@@ -1110,31 +1127,31 @@ Wählen Sie eine andere Datei oder ändern Sie die Konfiguration des Geräts.</t
<translation type="vanished">Ein Registrywert, der für den Betrieb von Equalizer APO erforderlich ist, ist nicht korrekt gesetzt. Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</translation> <translation type="vanished">Ein Registrywert, der für den Betrieb von Equalizer APO erforderlich ist, ist nicht korrekt gesetzt. Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="177"/> <location filename="../MainWindow.cpp" line="179"/>
<source>A registry value that is required for the operation of Equalizer APO is not set correctly. <source>A registry value that is required for the operation of Equalizer APO is not set correctly.
Do you want to run the Configurator application to fix the problem?</source> Do you want to run the Configurator application to fix the problem?</source>
<translation>Ein Registrywert, der für den Betrieb von Equalizer APO erforderlich ist, ist nicht korrekt gesetzt. <translation>Ein Registrywert, der für den Betrieb von Equalizer APO erforderlich ist, ist nicht korrekt gesetzt.
Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</translation> Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="186"/> <location filename="../MainWindow.cpp" line="188"/>
<source>APO not installed to device</source> <source>APO not installed to device</source>
<translation>APO nicht für das Gerät installiert</translation> <translation>APO nicht für das Gerät installiert</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="186"/> <location filename="../MainWindow.cpp" line="188"/>
<source>Equalizer APO has not been installed to the selected device. <source>Equalizer APO has not been installed to the selected device.
Do you want to run the Configurator application to fix the problem?</source> Do you want to run the Configurator application to fix the problem?</source>
<translation>Equalizer APO wurde nicht für das gewählte Gerät installiert. <translation>Equalizer APO wurde nicht für das gewählte Gerät installiert.
Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</translation> Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="217"/> <location filename="../MainWindow.cpp" line="219"/>
<source>Audio enhancements disabled</source> <source>Audio enhancements disabled</source>
<translation>Signalverbesserungen deaktiviert</translation> <translation>Signalverbesserungen deaktiviert</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="217"/> <location filename="../MainWindow.cpp" line="219"/>
<source>Audio enhancements are not enabled for the device <source>Audio enhancements are not enabled for the device
%0 %1. %0 %1.
Do you want to run the Configurator application to fix the problem?</source> Do you want to run the Configurator application to fix the problem?</source>
@@ -1143,35 +1160,35 @@ Do you want to run the Configurator application to fix the problem?</source>
Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</translation> Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="262"/> <location filename="../MainWindow.cpp" line="264"/>
<location filename="../MainWindow.cpp" line="342"/> <location filename="../MainWindow.cpp" line="344"/>
<location filename="../MainWindow.cpp" line="356"/> <location filename="../MainWindow.cpp" line="358"/>
<source>Error</source> <source>Error</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="262"/> <location filename="../MainWindow.cpp" line="264"/>
<source>Error while reading configuration file: %0</source> <source>Error while reading configuration file: %0</source>
<translation>Fehler beim Lesen der Konfigurationsdatei: %0</translation> <translation>Fehler beim Lesen der Konfigurationsdatei: %0</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="342"/> <location filename="../MainWindow.cpp" line="344"/>
<source>Error while writing configuration file: %0</source> <source>Error while writing configuration file: %0</source>
<translation>Fehler beim Schreiben der Konfigurationsdatei: %0</translation> <translation>Fehler beim Schreiben der Konfigurationsdatei: %0</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="356"/> <location filename="../MainWindow.cpp" line="358"/>
<source>Only %0/%1 bytes have been written!</source> <source>Only %0/%1 bytes have been written!</source>
<translation>Nur %0/%1 Bytes wurden geschrieben!</translation> <translation>Nur %0/%1 Bytes wurden geschrieben!</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="424"/>
<location filename="../MainWindow.cpp" line="426"/> <location filename="../MainWindow.cpp" line="426"/>
<location filename="../MainWindow.cpp" line="428"/>
<source>From device</source> <source>From device</source>
<translation>Von Gerät</translation> <translation>Von Gerät</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="702"/> <location filename="../MainWindow.cpp" line="704"/>
<source>%0 dB</source> <source>%0 dB</source>
<translation>%0 dB</translation> <translation>%0 dB</translation>
</message> </message>
@@ -1180,7 +1197,7 @@ Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</tra
<translation type="vanished">%0 ms (%1 Samp.)</translation> <translation type="vanished">%0 ms (%1 Samp.)</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="705"/> <location filename="../MainWindow.cpp" line="707"/>
<source>%0 ms (%1 s.)</source> <source>%0 ms (%1 s.)</source>
<translation>%0 ms (%1 S.)</translation> <translation>%0 ms (%1 S.)</translation>
</message> </message>
@@ -1189,67 +1206,67 @@ Möchten Sie die Configurator-Anwendung starten, um das Problem zu beheben?</tra
<translation type="vanished">%0 ms (%1 Samples)</translation> <translation type="vanished">%0 ms (%1 Samples)</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="707"/> <location filename="../MainWindow.cpp" line="709"/>
<source>%0 ms</source> <source>%0 ms</source>
<translation>%0 ms</translation> <translation>%0 ms</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="710"/> <location filename="../MainWindow.cpp" line="712"/>
<source>%0 % (one core)</source> <source>%0 % (one core)</source>
<translation>%0 % (ein Kern)</translation> <translation>%0 % (ein Kern)</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="748"/> <location filename="../MainWindow.cpp" line="750"/>
<location filename="../MainWindow.cpp" line="775"/> <location filename="../MainWindow.cpp" line="777"/>
<location filename="../MainWindow.cpp" line="794"/> <location filename="../MainWindow.cpp" line="796"/>
<source>Restart required</source> <source>Restart required</source>
<translation>Neustart erforderlich</translation> <translation>Neustart erforderlich</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="748"/> <location filename="../MainWindow.cpp" line="750"/>
<location filename="../MainWindow.cpp" line="775"/> <location filename="../MainWindow.cpp" line="777"/>
<location filename="../MainWindow.cpp" line="794"/> <location filename="../MainWindow.cpp" line="796"/>
<source>Configuration Editor will be restarted to apply the changed settings. Proceed?</source> <source>Configuration Editor will be restarted to apply the changed settings. Proceed?</source>
<translation>Konfigurationseditor wird neugestartet, um die geänderten Einstellungen zu übernehmen. Fortsetzen?</translation> <translation>Konfigurationseditor wird neugestartet, um die geänderten Einstellungen zu übernehmen. Fortsetzen?</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="854"/> <location filename="../MainWindow.cpp" line="856"/>
<source>Unsaved changes</source> <source>Unsaved changes</source>
<translation>Ungespeicherte Änderungen</translation> <translation>Ungespeicherte Änderungen</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="855"/> <location filename="../MainWindow.cpp" line="857"/>
<source>The configuration file %0 has unsaved changes.</source> <source>The configuration file %0 has unsaved changes.</source>
<translation>Die Konfigurationsdatei %0 hat ungespeicherte Änderungen.</translation> <translation>Die Konfigurationsdatei %0 hat ungespeicherte Änderungen.</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="856"/> <location filename="../MainWindow.cpp" line="858"/>
<source>Do you want to save the changes before closing the file?</source> <source>Do you want to save the changes before closing the file?</source>
<translation>Möchten Sie die Änderungen speichern, bevor die Datei geschlossen wird?</translation> <translation>Möchten Sie die Änderungen speichern, bevor die Datei geschlossen wird?</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="527"/> <location filename="../MainWindow.cpp" line="529"/>
<source>Open file</source> <source>Open file</source>
<translation>Datei öffnen</translation> <translation>Datei öffnen</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="154"/> <location filename="../MainWindow.cpp" line="156"/>
<source>Automatic (%0)</source> <source>Automatic (%0)</source>
<translation>Automatisch (%0)</translation> <translation>Automatisch (%0)</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="529"/> <location filename="../MainWindow.cpp" line="531"/>
<location filename="../MainWindow.cpp" line="582"/> <location filename="../MainWindow.cpp" line="584"/>
<source>E-APO configurations (*.txt)</source> <source>E-APO configurations (*.txt)</source>
<translation>E-APO-Konfigurationen (*.txt)</translation> <translation>E-APO-Konfigurationen (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="579"/> <location filename="../MainWindow.cpp" line="581"/>
<source>Save file as</source> <source>Save file as</source>
<translation>Datei speichern unter</translation> <translation>Datei speichern unter</translation>
</message> </message>
<message> <message>
<location filename="../MainWindow.cpp" line="601"/> <location filename="../MainWindow.cpp" line="603"/>
<source>Unsaved</source> <source>Unsaved</source>
<translation>Ungespeichert</translation> <translation>Ungespeichert</translation>
</message> </message>
+27 -1
View File
@@ -27,11 +27,27 @@
using namespace std; using namespace std;
const int RECURSION_LIMIT = 100;
void IncludeFilterFactory::initialize(FilterEngine* engine) void IncludeFilterFactory::initialize(FilterEngine* engine)
{ {
this->engine = engine; this->engine = engine;
} }
vector<IFilter*> IncludeFilterFactory::startOfConfiguration()
{
recursionDepth = -1;
return vector<IFilter*>();
}
vector<IFilter*> IncludeFilterFactory::startOfFile(const wstring& configPath)
{
recursionDepth++;
return vector<IFilter*>();
}
vector<IFilter*> IncludeFilterFactory::createFilter(const wstring& configPath, wstring& command, wstring& parameters) vector<IFilter*> IncludeFilterFactory::createFilter(const wstring& configPath, wstring& command, wstring& parameters)
{ {
if (command == L"Include") if (command == L"Include")
@@ -56,9 +72,19 @@ vector<IFilter*> IncludeFilterFactory::createFilter(const wstring& configPath, w
else else
includePath = value; includePath = value;
engine->loadConfigFile(includePath); if (recursionDepth >= RECURSION_LIMIT)
LogF(L"Skipping include of %s as recursion limit of %d has been reached", value.c_str(), RECURSION_LIMIT);
else
engine->loadConfigFile(includePath);
command = L""; command = L"";
} }
return vector<IFilter*>(); return vector<IFilter*>();
} }
std::vector<IFilter*> IncludeFilterFactory::endOfFile(const wstring& configPath)
{
recursionDepth--;
return vector<IFilter*>();
}
+5
View File
@@ -28,8 +28,13 @@ class IncludeFilterFactory : public IFilterFactory
{ {
public: public:
void initialize(FilterEngine* engine) override; void initialize(FilterEngine* engine) override;
std::vector<IFilter*> startOfConfiguration() override;
std::vector<IFilter*> startOfFile(const std::wstring& configPath) override;
std::vector<IFilter*> createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; std::vector<IFilter*> createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override;
std::vector<IFilter*> endOfFile(const std::wstring& configPath) override;
private: private:
FilterEngine* engine; FilterEngine* engine;
int recursionDepth = -1;
}; };