Added TranslatorHelper class.
This commit is contained in:
parent
186395f692
commit
67a4c8e0ea
@ -10,6 +10,7 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
|||||||
|
|
||||||
TARGET = ScreenTranslator
|
TARGET = ScreenTranslator
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
|
CONFIG += c++11
|
||||||
|
|
||||||
win32{
|
win32{
|
||||||
RC_FILE = app.rc
|
RC_FILE = app.rc
|
||||||
@ -37,7 +38,8 @@ SOURCES += main.cpp\
|
|||||||
ImageProcessing.cpp \
|
ImageProcessing.cpp \
|
||||||
LanguageHelper.cpp \
|
LanguageHelper.cpp \
|
||||||
WebTranslator.cpp \
|
WebTranslator.cpp \
|
||||||
WebTranslatorProxy.cpp
|
WebTranslatorProxy.cpp \
|
||||||
|
TranslatorHelper.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
Manager.h \
|
Manager.h \
|
||||||
@ -52,7 +54,8 @@ HEADERS += \
|
|||||||
LanguageHelper.h \
|
LanguageHelper.h \
|
||||||
WebTranslator.h \
|
WebTranslator.h \
|
||||||
WebTranslatorProxy.h \
|
WebTranslatorProxy.h \
|
||||||
StAssert.h
|
StAssert.h \
|
||||||
|
TranslatorHelper.h
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
SettingsEditor.ui \
|
SettingsEditor.ui \
|
||||||
@ -71,5 +74,8 @@ OTHER_FILES += \
|
|||||||
images/icon.ico \
|
images/icon.ico \
|
||||||
README.md \
|
README.md \
|
||||||
uncrustify.cfg\
|
uncrustify.cfg\
|
||||||
|
images/README.md \
|
||||||
translators/google.js \
|
translators/google.js \
|
||||||
|
translators/yandex.js \
|
||||||
|
translators/bing.js \
|
||||||
TODO.md
|
TODO.md
|
||||||
|
@ -25,6 +25,7 @@ namespace settings_names {
|
|||||||
const QString sourceLanguage = "source_language";
|
const QString sourceLanguage = "source_language";
|
||||||
const QString translationLanguage = "translation_language";
|
const QString translationLanguage = "translation_language";
|
||||||
const QString translationTimeout = "translation_timeout";
|
const QString translationTimeout = "translation_timeout";
|
||||||
|
const QString translators = "translators";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,6 +50,7 @@ namespace settings_values {
|
|||||||
const QString sourceLanguage = "auto";
|
const QString sourceLanguage = "auto";
|
||||||
const QString translationLanguage = "ru";
|
const QString translationLanguage = "ru";
|
||||||
const int translationTimeout = 15; // secs
|
const int translationTimeout = 15; // secs
|
||||||
|
const QString translators = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // SETTINGS_H
|
#endif // SETTINGS_H
|
||||||
|
74
TranslatorHelper.cpp
Normal file
74
TranslatorHelper.cpp
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#include <QSettings>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QFile>
|
||||||
|
|
||||||
|
#include "TranslatorHelper.h"
|
||||||
|
#include "Settings.h"
|
||||||
|
|
||||||
|
TranslatorHelper::TranslatorHelper ()
|
||||||
|
: translatorsDir_ ("translators"), currentIndex_ (0) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void TranslatorHelper::setEnabledTranslators (const QStringList &enabled) const {
|
||||||
|
QSettings settings;
|
||||||
|
settings.beginGroup (settings_names::translationGroup);
|
||||||
|
settings.setValue (settings_names::translators, enabled.join ("|"));
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList TranslatorHelper::possibleTranslators (QStringList &enabled) const {
|
||||||
|
#define GET(FIELD) settings.value (settings_names::FIELD, settings_values::FIELD)
|
||||||
|
QSettings settings;
|
||||||
|
settings.beginGroup (settings_names::translationGroup);
|
||||||
|
QStringList exist = QDir (translatorsDir_).entryList (QStringList () << "*.js", QDir::Files);
|
||||||
|
QStringList saved = GET (translators).toString ().split ("|", QString::SkipEmptyParts);
|
||||||
|
QStringList on, off;
|
||||||
|
std::copy_if (saved.begin (), saved.end (), std::back_inserter (on), [&](const QString &i) {
|
||||||
|
return exist.contains (i);
|
||||||
|
});
|
||||||
|
on = on.isEmpty () ? exist : on;
|
||||||
|
|
||||||
|
std::copy_if (exist.begin (), exist.end (), std::back_inserter (off), [&](const QString &i) {
|
||||||
|
return !on.contains (i);
|
||||||
|
});
|
||||||
|
|
||||||
|
enabled = on;
|
||||||
|
return (on + off);
|
||||||
|
#undef GET
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList TranslatorHelper::enabledTranslatorScripts () const {
|
||||||
|
QStringList enabled;
|
||||||
|
possibleTranslators (enabled);
|
||||||
|
QStringList scripts;
|
||||||
|
foreach (const QString &name, enabled) {
|
||||||
|
QFile f (translatorsDir_ + QDir::separator () + name);
|
||||||
|
if (f.open (QFile::ReadOnly)) {
|
||||||
|
QString script = QString::fromUtf8 (f.readAll ());
|
||||||
|
if (!script.isEmpty ()) {
|
||||||
|
scripts << script;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return scripts;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TranslatorHelper::loadScripts () {
|
||||||
|
scripts_ = enabledTranslatorScripts ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TranslatorHelper::newItem () {
|
||||||
|
currentIndex_ = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString TranslatorHelper::currentScript () const {
|
||||||
|
return (currentIndex_ < scripts_.size () ? scripts_.at (currentIndex_) : QString ());
|
||||||
|
}
|
||||||
|
|
||||||
|
QString TranslatorHelper::nextScript () {
|
||||||
|
++currentIndex_;
|
||||||
|
return currentScript ();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TranslatorHelper::gotScripts () const {
|
||||||
|
return !scripts_.isEmpty ();
|
||||||
|
}
|
27
TranslatorHelper.h
Normal file
27
TranslatorHelper.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef TRANSLATORHELPER_H
|
||||||
|
#define TRANSLATORHELPER_H
|
||||||
|
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
|
class TranslatorHelper {
|
||||||
|
public:
|
||||||
|
TranslatorHelper ();
|
||||||
|
|
||||||
|
QStringList possibleTranslators (QStringList &enabled) const;
|
||||||
|
QStringList enabledTranslatorScripts () const;
|
||||||
|
|
||||||
|
void setEnabledTranslators (const QStringList &enabled) const;
|
||||||
|
|
||||||
|
void loadScripts ();
|
||||||
|
void newItem ();
|
||||||
|
QString currentScript () const;
|
||||||
|
QString nextScript ();
|
||||||
|
bool gotScripts () const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString translatorsDir_;
|
||||||
|
QStringList scripts_;
|
||||||
|
int currentIndex_;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TRANSLATORHELPER_H
|
Loading…
Reference in New Issue
Block a user