From 5c187eadf2686f760eabd84fb9caffb9ac2ca4c6 Mon Sep 17 00:00:00 2001 From: Gres Date: Fri, 4 Apr 2014 19:01:04 +0400 Subject: [PATCH] Update languages on tessdata path edition. --- LanguageHelper.cpp | 43 +++++++++++++++++++++++++++++++------------ LanguageHelper.h | 2 ++ SettingsEditor.cpp | 6 +++--- SettingsEditor.h | 2 +- 4 files changed, 37 insertions(+), 16 deletions(-) diff --git a/LanguageHelper.cpp b/LanguageHelper.cpp index a430e40..de3893a 100644 --- a/LanguageHelper.cpp +++ b/LanguageHelper.cpp @@ -25,6 +25,35 @@ const QStringList &LanguageHelper::availableOcrLanguages() const return availableOcrLanguages_; } +QStringList LanguageHelper::availableOcrLanguages(const QString &path) const +{ + QDir dir (path + "/tessdata/"); + if (!dir.exists ()) + { + return QStringList (); + } + QStringList items; + QStringList files = dir.entryList (QStringList () << "*.traineddata", QDir::Files); + foreach (const QString& file, files) + { + QString lang = file.left (file.indexOf (".")); + items << lang; + } + return items; +} + +QStringList LanguageHelper::availableOcrLanguagesUi(const QString &path) const +{ + QStringList uiItems, items; + items = availableOcrLanguages (path); + foreach (const QString& item, items) + { + uiItems << ocrCodeToUi (item); + } + uiItems.sort (); + return uiItems; +} + QStringList LanguageHelper::translateLanguagesUi() const { QStringList uiItems = translateLanguages_.keys (); @@ -77,22 +106,12 @@ void LanguageHelper::init() void LanguageHelper::updateAvailableOcrLanguages() { + availableOcrLanguages_.clear (); QSettings settings; settings.beginGroup (settings_names::recogntionGroup); QString tessDataPlace = settings.value (settings_names::tessDataPlace, settings_values::tessDataPlace).toString (); - QDir dir (tessDataPlace + "/tessdata/"); - if (!dir.exists ()) - { - return; - } - availableOcrLanguages_.clear (); - QStringList files = dir.entryList (QStringList () << "*.traineddata", QDir::Files); - foreach (const QString& file, files) - { - QString lang = file.left (file.indexOf (".")); - availableOcrLanguages_ << lang; - } + availableOcrLanguages_ = availableOcrLanguages (tessDataPlace + "/tessdata/"); } void LanguageHelper::initTranslateLanguages() diff --git a/LanguageHelper.h b/LanguageHelper.h index 2d47b63..b9599e9 100644 --- a/LanguageHelper.h +++ b/LanguageHelper.h @@ -11,6 +11,7 @@ class LanguageHelper QStringList availableOcrLanguagesUi () const; const QStringList& availableOcrLanguages () const; + QStringList availableOcrLanguagesUi (const QString& path) const; QStringList translateLanguagesUi () const; QStringList translateLanguages () const; @@ -23,6 +24,7 @@ class LanguageHelper void updateAvailableOcrLanguages (); private: + QStringList availableOcrLanguages (const QString& path) const; void init (); void initTranslateLanguages (); void initOcrLanguages (); diff --git a/SettingsEditor.cpp b/SettingsEditor.cpp index bcfdc93..1a44ac7 100644 --- a/SettingsEditor.cpp +++ b/SettingsEditor.cpp @@ -19,7 +19,7 @@ SettingsEditor::SettingsEditor(const LanguageHelper &dictionary, QWidget *parent connect (ui->tessdataButton, SIGNAL (clicked ()), SLOT (openTessdataDialog ())); connect (ui->tessdataEdit, SIGNAL (textChanged (const QString&)), - SLOT (initOcrLangCombo ())); + SLOT (initOcrLangCombo (const QString&))); ui->translateLangCombo->addItems (dictionary_.translateLanguagesUi ()); loadSettings (); @@ -126,8 +126,8 @@ void SettingsEditor::loadState() restoreGeometry (settings.value (objectName () + "_" + settings_names::geometry).toByteArray ()); } -void SettingsEditor::initOcrLangCombo() +void SettingsEditor::initOcrLangCombo(const QString &path) { ui->ocrLangCombo->clear (); - ui->ocrLangCombo->addItems (dictionary_.availableOcrLanguagesUi ()); + ui->ocrLangCombo->addItems (dictionary_.availableOcrLanguagesUi (path)); } diff --git a/SettingsEditor.h b/SettingsEditor.h index 0155eb3..20b7d39 100644 --- a/SettingsEditor.h +++ b/SettingsEditor.h @@ -27,7 +27,7 @@ class SettingsEditor : public QDialog private slots: void saveSettings () const; void openTessdataDialog (); - void initOcrLangCombo (); + void initOcrLangCombo (const QString& path); private: void loadSettings ();