diff --git a/src/settings.cpp b/src/settings.cpp index 0ac7051..ca364ae 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1,6 +1,7 @@ #include "settings.h" #include +#include namespace { @@ -21,7 +22,6 @@ const QString qs_lastUpdateCheck = "lastUpdateCheck"; const QString qs_showMessageOnStart = "showMessageOnStart"; const QString qs_recogntionGroup = "Recognition"; -const QString qs_tessDataPlace = "tessdata_dir"; const QString qs_ocrLanguage = "language"; const QString qs_correctionGroup = "Correction"; @@ -82,6 +82,7 @@ void cleanupOutdated(QSettings& settings) settings.beginGroup(qs_recogntionGroup); settings.remove("image_scale"); + settings.remove("tessdata_dir"); settings.endGroup(); settings.beginGroup(qs_translationGroup); @@ -92,6 +93,14 @@ void cleanupOutdated(QSettings& settings) } // namespace +Settings::Settings() +{ + const auto baseDataPath = + QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); + tessdataPath = baseDataPath + "/tessdata"; + translatorsDir = baseDataPath + "/translators"; +} + void Settings::save() { QSettings settings; @@ -123,10 +132,7 @@ void Settings::save() settings.endGroup(); settings.beginGroup(qs_recogntionGroup); - - settings.setValue(qs_tessDataPlace, tessdataPath); settings.setValue(qs_ocrLanguage, sourceLanguage); - settings.endGroup(); settings.beginGroup(qs_correctionGroup); @@ -185,10 +191,7 @@ void Settings::load() settings.endGroup(); settings.beginGroup(qs_recogntionGroup); - - tessdataPath = settings.value(qs_tessDataPlace, tessdataPath).toString(); sourceLanguage = settings.value(qs_ocrLanguage, sourceLanguage).toString(); - settings.endGroup(); settings.beginGroup(qs_correctionGroup); diff --git a/src/settings.h b/src/settings.h index 8f84b79..9cb3d5f 100644 --- a/src/settings.h +++ b/src/settings.h @@ -21,6 +21,8 @@ enum class AutoUpdate { Disabled, Daily, Weekly, Monthly }; class Settings { public: + Settings(); + void save(); void load(); @@ -46,7 +48,7 @@ public: bool debugMode{false}; - QString tessdataPath{"tessdata"}; + QString tessdataPath; QString sourceLanguage{"eng"}; LanguageIds availableOcrLanguages_; @@ -55,7 +57,7 @@ public: bool forceRotateTranslators{false}; LanguageId targetLanguage{"rus"}; std::chrono::seconds translationTimeout{15}; - QString translatorsDir{"translators"}; + QString translatorsDir; QStringList translators{"google.js"}; ResultMode resultShowType{ResultMode::Widget}; // dialog diff --git a/src/settingseditor.cpp b/src/settingseditor.cpp index be388a5..7d0160e 100644 --- a/src/settingseditor.cpp +++ b/src/settingseditor.cpp @@ -42,12 +42,6 @@ SettingsEditor::SettingsEditor(update::Loader &updater) ui->proxyPassEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit); } - // recognition - connect(ui->tessdataButton, &QPushButton::clicked, // - this, &SettingsEditor::openTessdataDialog); - connect(ui->tessdataEdit, &QLineEdit::textChanged, // - this, &SettingsEditor::updateTesseractLanguages); - // correction ui->userSubstitutionsTable->setEnabled(ui->useUserSubstitutions->isChecked()); @@ -110,7 +104,6 @@ Settings SettingsEditor::settings() const settings.proxySavePassword = ui->proxySaveCheck->isChecked(); LanguageCodes langs; - settings.tessdataPath = ui->tessdataEdit->text(); if (auto lang = langs.findByName(ui->tesseractLangCombo->currentText())) settings.sourceLanguage = lang->id; @@ -154,7 +147,8 @@ void SettingsEditor::setSettings(const Settings &settings) ui->proxySaveCheck->setChecked(settings.proxySavePassword); LanguageCodes langs; - ui->tessdataEdit->setText(settings.tessdataPath); + ui->tessdataPath->setText(settings.tessdataPath); + updateTesseractLanguages(); if (auto lang = langs.findById(settings.sourceLanguage)) ui->tesseractLangCombo->setCurrentText(lang->name); @@ -165,7 +159,7 @@ void SettingsEditor::setSettings(const Settings &settings) ui->ignoreSslCheck->setChecked(settings.ignoreSslErrors); ui->translatorDebugCheck->setChecked(settings.debugMode); ui->translateTimeoutSpin->setValue(settings.translationTimeout.count()); - translatorsPath_ = settings.translatorsDir; + ui->translatorsPath->setText(settings.translatorsDir); enabledTranslators_ = settings.translators; updateTranslators(); if (auto lang = langs.findById(settings.targetLanguage)) @@ -180,22 +174,11 @@ void SettingsEditor::updateCurrentPage() ui->pagesView->setCurrentIndex(ui->pagesList->currentIndex().row()); } -void SettingsEditor::openTessdataDialog() -{ - const auto path = - QFileDialog::getExistingDirectory(this, tr("Path to tessdata")); - - if (path.isEmpty()) - return; - - ui->tessdataEdit->setText(path); -} - void SettingsEditor::updateTesseractLanguages() { ui->tesseractLangCombo->clear(); - const auto path = ui->tessdataEdit->text(); + const auto path = ui->tessdataPath->text(); if (path.isEmpty()) return; @@ -224,7 +207,11 @@ void SettingsEditor::updateTranslators() { ui->translatorList->clear(); - QDir dir(translatorsPath_); + const auto path = ui->translatorsPath->text(); + if (path.isEmpty()) + return; + + QDir dir(path); if (!dir.exists()) return; diff --git a/src/settingseditor.h b/src/settingseditor.h index f6d2c12..267320f 100644 --- a/src/settingseditor.h +++ b/src/settingseditor.h @@ -22,7 +22,6 @@ public: private: void updateCurrentPage(); - void openTessdataDialog(); void updateTesseractLanguages(); void updateTranslators(); void updateTranslationLanguages(); @@ -30,6 +29,5 @@ private: Ui::SettingsEditor *ui; update::Loader &updater_; - QString translatorsPath_; QStringList enabledTranslators_; }; diff --git a/src/settingseditor.ui b/src/settingseditor.ui index 1c7ac94..8b273b3 100644 --- a/src/settingseditor.ui +++ b/src/settingseditor.ui @@ -210,57 +210,59 @@ + + + 0 + 0 + + <html><head/><body><p>Заполняется на основании содержания tessdata</p></body></html> - Language + Default language: tesseractLangCombo - - + + + + + 0 + 0 + + - ... + Tessdata path: - + Qt::Vertical - 20 - 40 + 17 + 410 - - - - Path to tessdata - - - tessdataEdit - - - - - - - Enter path - - - - + + + + + true + + + @@ -299,16 +301,6 @@ - - - - <html><head/><body><p>Отображает окно переводчика. Следует использовать только для разработки переводчиков.</p></body></html> - - - Debug mode - - - @@ -316,6 +308,16 @@ + + + + <html><head/><body><p>Необходимо ли переводить (вкл) распознанный текст.</p></body></html> + + + Translate text + + + @@ -323,30 +325,27 @@ - - - - Translators - - - Qt::AlignCenter - - - - - + + - <html><head/><body><p>Язык, на который осуществляется перевод.</p></body></html> + <html><head/><body><p>Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &quot;зависшим&quot;.</p></body></html> - Language: - - - translateLangCombo + Single translator timeout: - + + + + <html><head/><body><p>Отображает окно переводчика. Следует использовать только для разработки переводчиков.</p></body></html> + + + Debug mode + + + + <html><head/><body><p>Отображены в порядке убывания приоритета.</p></body></html> @@ -362,26 +361,43 @@ - - + + - <html><head/><body><p>Необходимо ли переводить (вкл) распознанный текст.</p></body></html> + <html><head/><body><p>Язык, на который осуществляется перевод.</p></body></html> - Translate text + Language: + + + translateLangCombo + + + + + + + + + + Translators + + + Qt::AlignCenter + + + + + + + Translators path: - - - - - - <html><head/><body><p>Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &quot;зависшим&quot;.</p></body></html> - - - Single translator timeout: + + + true