Pass ProcessingItem through Translator event if it should not be translated (allow user to choose it be key modifiers).

This commit is contained in:
Gres 2015-10-09 23:56:48 +03:00
parent 2a1ee13b46
commit 9083a7ca6c
3 changed files with 10 additions and 19 deletions

View File

@ -29,7 +29,7 @@ Manager::Manager (QObject *parent) :
resultDialog_ (new ResultDialog (*dictionary_)), resultDialog_ (new ResultDialog (*dictionary_)),
captureAction_ (NULL), repeatCaptureAction_ (NULL), captureAction_ (NULL), repeatCaptureAction_ (NULL),
repeatAction_ (NULL), clipboardAction_ (NULL), repeatAction_ (NULL), clipboardAction_ (NULL),
useResultDialog_ (true) { useResultDialog_ (true), doTranslation_ (true) {
GlobalActionHelper::init (); GlobalActionHelper::init ();
qRegisterMetaType<ProcessingItem>(); qRegisterMetaType<ProcessingItem>();
@ -38,7 +38,7 @@ Manager::Manager (QObject *parent) :
connect (this, SIGNAL (requestRecognize (ProcessingItem)), connect (this, SIGNAL (requestRecognize (ProcessingItem)),
recognizer, SLOT (recognize (ProcessingItem))); recognizer, SLOT (recognize (ProcessingItem)));
connect (recognizer, SIGNAL (recognized (ProcessingItem)), connect (recognizer, SIGNAL (recognized (ProcessingItem)),
SIGNAL (recognized (ProcessingItem))); this, SIGNAL (requestTranslate (ProcessingItem)));
connect (recognizer, SIGNAL (error (QString)), connect (recognizer, SIGNAL (error (QString)),
SLOT (showError (QString))); SLOT (showError (QString)));
connect (this, SIGNAL (settingsEdited ()), connect (this, SIGNAL (settingsEdited ()),
@ -157,25 +157,11 @@ void Manager::applySettings () {
settings.beginGroup (settings_names::translationGroup); settings.beginGroup (settings_names::translationGroup);
defaultTranslationLanguage_ = GET (translationLanguage).toString (); defaultTranslationLanguage_ = GET (translationLanguage).toString ();
doTranslation_ = GET (doTranslation).toBool ();
settings.endGroup (); settings.endGroup ();
Q_CHECK_PTR (dictionary_); Q_CHECK_PTR (dictionary_);
dictionary_->updateAvailableOcrLanguages (); 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 #undef GET
} }
@ -210,7 +196,8 @@ void Manager::capture () {
} }
void Manager::handleSelection (ProcessingItem item) { void Manager::handleSelection (ProcessingItem item) {
if (item.translateLanguage.isEmpty ()) { bool altMod = item.modifiers & Qt::AltModifier;
if ((doTranslation_ && !altMod) || (!doTranslation_ && altMod)) {
item.translateLanguage = defaultTranslationLanguage_; item.translateLanguage = defaultTranslationLanguage_;
} }
emit requestRecognize (item); emit requestRecognize (item);

View File

@ -23,7 +23,6 @@ class Manager : public QObject {
signals: signals:
void requestRecognize (ProcessingItem item); void requestRecognize (ProcessingItem item);
void recognized (ProcessingItem item);
void requestTranslate (ProcessingItem item); void requestTranslate (ProcessingItem item);
void closeSelections (); void closeSelections ();
void settingsEdited (); void settingsEdited ();
@ -64,6 +63,7 @@ class Manager : public QObject {
//! Used threads. For proper termination. //! Used threads. For proper termination.
QList<QThread *> threads_; QList<QThread *> threads_;
QString defaultTranslationLanguage_; QString defaultTranslationLanguage_;
bool doTranslation_;
}; };
#endif // MANAGER_H #endif // MANAGER_H

View File

@ -46,6 +46,10 @@ void WebTranslator::addProxyToView () {
} }
void WebTranslator::translate (ProcessingItem item) { void WebTranslator::translate (ProcessingItem item) {
if (item.translateLanguage.isEmpty ()) {
emit translated (item);
return;
}
queue_.push_back (item); queue_.push_back (item);
translateQueued (); translateQueued ();
} }