diff --git a/Manager.cpp b/Manager.cpp
index 54ab28c..45da884 100644
--- a/Manager.cpp
+++ b/Manager.cpp
@@ -35,6 +35,8 @@ Manager::Manager (QObject *parent) :
Recognizer *recognizer = new Recognizer;
connect (this, SIGNAL (selected (ProcessingItem)),
recognizer, SLOT (recognize (ProcessingItem)));
+ connect (recognizer, SIGNAL (recognized (ProcessingItem)),
+ SIGNAL (recognized (ProcessingItem)));
connect (recognizer, SIGNAL (error (QString)),
SLOT (showError (QString)));
connect (this, SIGNAL (settingsEdited ()),
@@ -48,8 +50,10 @@ Manager::Manager (QObject *parent) :
// Translator
Translator *translator = new Translator;
- connect (recognizer, SIGNAL (recognized (ProcessingItem)),
+ connect (this, SIGNAL (requestTranslate (ProcessingItem)),
translator, SLOT (translate (ProcessingItem)));
+ connect (translator, SIGNAL (translated (ProcessingItem)),
+ SLOT (showResult (ProcessingItem)));
connect (translator, SIGNAL (error (QString)),
SLOT (showError (QString)));
connect (this, SIGNAL (settingsEdited ()),
@@ -60,9 +64,6 @@ Manager::Manager (QObject *parent) :
translatorThread->start ();
connect (qApp, SIGNAL (aboutToQuit ()), translatorThread, SLOT (quit ()));
- connect (translator, SIGNAL (translated (ProcessingItem)),
- SLOT (showResult (ProcessingItem)));
-
connect (this, SIGNAL (settingsEdited ()), this, SLOT (applySettings ()));
resultDialog_->setWindowIcon (trayIcon_->icon ());
@@ -118,9 +119,25 @@ void Manager::applySettings () {
// Depends on SettingsEditor button indexes. 1==dialog
useResultDialog_ = GET (resultShowType).toBool ();
+ settings.endGroup ();
Q_CHECK_PTR (dictionary_);
dictionary_->updateAvailableOcrLanguages ();
+
+ settings.beginGroup (settings_names::translationGroup);
+ bool doTranslation = GET (doTranslation).toBool ();
+ if (doTranslation) {
+ disconnect (this, SIGNAL (recognized (ProcessingItem)),
+ this, SLOT (showResult (ProcessingItem)));
+ connect (this, SIGNAL (recognized (ProcessingItem)),
+ this, SIGNAL (requestTranslate (ProcessingItem)), Qt::UniqueConnection);
+ }
+ else {
+ disconnect (this, SIGNAL (recognized (ProcessingItem)),
+ this, SIGNAL (requestTranslate (ProcessingItem)));
+ connect (this, SIGNAL (recognized (ProcessingItem)),
+ this, SLOT (showResult (ProcessingItem)), Qt::UniqueConnection);
+ }
#undef GET
}
diff --git a/Manager.h b/Manager.h
index a27a566..84f1774 100644
--- a/Manager.h
+++ b/Manager.h
@@ -23,6 +23,8 @@ class Manager : public QObject {
signals:
void selected (ProcessingItem item);
+ void recognized (ProcessingItem item);
+ void requestTranslate (ProcessingItem item);
void closeSelections ();
void settingsEdited ();
diff --git a/ProcessingItem.cpp b/ProcessingItem.cpp
index 2729b72..c24de1d 100644
--- a/ProcessingItem.cpp
+++ b/ProcessingItem.cpp
@@ -5,6 +5,5 @@ bool ProcessingItem::isValid () const {
valid &= (!screenPos.isNull ());
valid &= (!source.isNull ());
valid &= (!recognized.isEmpty ());
- valid &= (!translated.isEmpty ());
return valid;
}
diff --git a/Settings.h b/Settings.h
index 8f705e0..dc056f9 100644
--- a/Settings.h
+++ b/Settings.h
@@ -20,6 +20,7 @@ namespace settings_names {
//! Translation
const QString translationGroup = "Translation";
+ const QString doTranslation = "doTranslation";
const QString sourceLanguage = "source_language";
const QString translationLanguage = "translation_language";
@@ -41,6 +42,7 @@ namespace settings_values {
const int imageScale = 5;
//! Translation
+ const bool doTranslation = true;
const QString sourceLanguage = "auto";
const QString translationLanguage = "ru";
}
diff --git a/SettingsEditor.cpp b/SettingsEditor.cpp
index 43d2775..62eca4d 100644
--- a/SettingsEditor.cpp
+++ b/SettingsEditor.cpp
@@ -58,6 +58,7 @@ void SettingsEditor::saveSettings () const {
settings.beginGroup (translationGroup);
+ settings.setValue (doTranslation, ui->doTranslationCombo->isChecked ());
QString trLanguage = dictionary_.translateUiToCode (ui->translateLangCombo->currentText ());
settings.setValue (translationLanguage, trLanguage);
QString sourceLanguage = dictionary_.translateForOcrCode (ocrLanguage);
@@ -98,6 +99,7 @@ void SettingsEditor::loadSettings () {
settings.endGroup ();
settings.beginGroup (settings_names::translationGroup);
+ ui->doTranslationCombo->setChecked (GET (doTranslation).toBool ());
QString trLanguage = dictionary_.translateCodeToUi (GET (translationLanguage).toString ());
ui->translateLangCombo->setCurrentText (trLanguage);
settings.endGroup ();
diff --git a/SettingsEditor.ui b/SettingsEditor.ui
index fe625b1..a494e84 100644
--- a/SettingsEditor.ui
+++ b/SettingsEditor.ui
@@ -6,8 +6,8 @@
0
0
- 435
- 242
+ 518
+ 274
@@ -145,14 +145,14 @@
Вывод результата
- -
+
-
Трей
- -
+
-
Окно
@@ -171,7 +171,17 @@
Перевод
-
-
+
-
+
+
+ <html><head/><body><p>Необходимо ли переводить (вкл) распознанный текст.</p></body></html>
+
+
+ Переводить текст
+
+
+
+ -
<html><head/><body><p>Язык, на который осуществляется перевод.</p></body></html>
@@ -184,7 +194,7 @@
- -
+
-