Add custom substitution to auto correction features
This commit is contained in:
parent
bcefa83c0a
commit
ba34ae38a5
|
@ -81,6 +81,11 @@ void restore()
|
|||
v.editor.autoCompletition.trimWhitespaces = settings.value(QStringLiteral("trimwhitespaces"), true).toBool();
|
||||
v.editor.autoCompletition.formatNames = settings.value(QStringLiteral("formatnames"), false).toBool();
|
||||
v.editor.autoCompletition.fixUmlauts = settings.value(QStringLiteral("fixumlauts"), false).toBool();
|
||||
settings.beginGroup(QStringLiteral("customsubst"));
|
||||
v.editor.autoCompletition.customSubstitution.enabled = settings.value(QStringLiteral("enabled")).toBool();
|
||||
v.editor.autoCompletition.customSubstitution.regex = settings.value(QStringLiteral("regex")).toRegularExpression();
|
||||
v.editor.autoCompletition.customSubstitution.replacement = settings.value(QStringLiteral("replacement")).toString();
|
||||
settings.endGroup();
|
||||
settings.endGroup();
|
||||
v.editor.backupDirectory = settings.value(QStringLiteral("tempdir")).toString().toStdString();
|
||||
v.editor.hideCoverButtons = settings.value(QStringLiteral("hidecoverbtn"), false).toBool();
|
||||
|
@ -225,6 +230,11 @@ void save()
|
|||
settings.setValue(QStringLiteral("trimwhitespaces"), v.editor.autoCompletition.trimWhitespaces);
|
||||
settings.setValue(QStringLiteral("formatnames"), v.editor.autoCompletition.formatNames);
|
||||
settings.setValue(QStringLiteral("fixumlauts"), v.editor.autoCompletition.fixUmlauts);
|
||||
settings.beginGroup(QStringLiteral("customsubst"));
|
||||
settings.setValue(QStringLiteral("enabled"), v.editor.autoCompletition.customSubstitution.enabled);
|
||||
settings.setValue(QStringLiteral("regex"), v.editor.autoCompletition.customSubstitution.regex);
|
||||
settings.setValue(QStringLiteral("replacement"), v.editor.autoCompletition.customSubstitution.replacement);
|
||||
settings.endGroup();
|
||||
settings.endGroup();
|
||||
settings.setValue(QStringLiteral("tempdir"), QString::fromStdString(v.editor.backupDirectory));
|
||||
settings.setValue(QStringLiteral("hidecoverbtn"), v.editor.hideCoverButtons);
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <qtutilities/settingsdialog/qtsettings.h>
|
||||
|
||||
#include <QByteArray>
|
||||
#include <QRegularExpression>
|
||||
#include <QString>
|
||||
|
||||
namespace Settings {
|
||||
|
@ -22,12 +23,19 @@ enum class AdoptFields { Never, WithinDirectory, Always };
|
|||
|
||||
enum class MultipleTagHandling { SingleEditorPerTarget, SeparateEditors };
|
||||
|
||||
struct CustomSubstitution {
|
||||
QRegularExpression regex;
|
||||
QString replacement;
|
||||
bool enabled = false;
|
||||
};
|
||||
|
||||
struct AutoCompletition {
|
||||
AutoCompletition();
|
||||
bool insertTitleFromFilename = false;
|
||||
bool trimWhitespaces = true;
|
||||
bool formatNames = false;
|
||||
bool fixUmlauts = false;
|
||||
CustomSubstitution customSubstitution;
|
||||
KnownFieldModel fields;
|
||||
};
|
||||
|
||||
|
|
|
@ -28,28 +28,75 @@
|
|||
<item>
|
||||
<widget class="QCheckBox" name="insertTitleFromFilenameCheckBox">
|
||||
<property name="text">
|
||||
<string>insert title from filename if none present</string>
|
||||
<string>Insert title from filename if none present</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="trimWhitespacesCheckBox">
|
||||
<property name="text">
|
||||
<string>trim whitespaces</string>
|
||||
<string>Trim whitespaces</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="formatNamesCheckBox">
|
||||
<property name="text">
|
||||
<string>format names like "an example_name" to "An Example Name"</string>
|
||||
<string>Format names like "an example_name" to "An Example Name"</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="fixUmlautsCheckBox">
|
||||
<property name="text">
|
||||
<string>fix umlauts (replaces ae with ä for example)</string>
|
||||
<string>Fix umlauts (replaces ae with ä for example)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="customSubstitutionCheckBox">
|
||||
<property name="text">
|
||||
<string>Custom substitution</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="customSubstitutionGroupBox">
|
||||
<property name="title">
|
||||
<string>Custom substitution</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="matchLabel">
|
||||
<property name="text">
|
||||
<string>Match pattern</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="replacementLabel">
|
||||
<property name="text">
|
||||
<string>Replacement</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="regularExpressionLineEdit">
|
||||
<property name="placeholderText">
|
||||
<string>regular expression</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="replacementLineEdit">
|
||||
<property name="placeholderText">
|
||||
<string>replacement (use \1, \2, … for capture expressions)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -219,6 +219,10 @@ bool EditorAutoCorrectionOptionPage::apply()
|
|||
settings.trimWhitespaces = ui()->trimWhitespacesCheckBox->isChecked();
|
||||
settings.formatNames = ui()->formatNamesCheckBox->isChecked();
|
||||
settings.fixUmlauts = ui()->fixUmlautsCheckBox->isChecked();
|
||||
auto &subst = settings.customSubstitution;
|
||||
subst.enabled = ui()->customSubstitutionGroupBox->isChecked();
|
||||
subst.regex = QRegularExpression(ui()->regularExpressionLineEdit->text());
|
||||
subst.replacement = ui()->replacementLineEdit->text();
|
||||
if (m_model) {
|
||||
settings.fields.setItems(m_model->items());
|
||||
}
|
||||
|
@ -234,6 +238,10 @@ void EditorAutoCorrectionOptionPage::reset()
|
|||
ui()->trimWhitespacesCheckBox->setChecked(settings.trimWhitespaces);
|
||||
ui()->formatNamesCheckBox->setChecked(settings.formatNames);
|
||||
ui()->fixUmlautsCheckBox->setChecked(settings.fixUmlauts);
|
||||
const auto &subst = settings.customSubstitution;
|
||||
ui()->customSubstitutionGroupBox->setChecked(subst.enabled);
|
||||
ui()->regularExpressionLineEdit->setText(subst.regex.pattern());
|
||||
ui()->replacementLineEdit->setText(subst.replacement);
|
||||
if (m_model) {
|
||||
m_model->setItems(settings.fields.items());
|
||||
}
|
||||
|
|
|
@ -787,6 +787,10 @@ QString TagFieldEdit::applyAutoCorrection(const QString &textValue)
|
|||
if (settings.fixUmlauts) {
|
||||
correctedValue = Utility::fixUmlauts(correctedValue);
|
||||
}
|
||||
const auto &subst = settings.customSubstitution;
|
||||
if (subst.enabled && subst.regex.isValid()) {
|
||||
correctedValue.replace(subst.regex, subst.replacement);
|
||||
}
|
||||
return correctedValue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue