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

View File

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

View File

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