ProcessingItem added
ResultDialog added
This commit is contained in:
parent
c7c9d72bd7
commit
476893a7cf
98
Manager.cpp
98
Manager.cpp
@ -23,7 +23,8 @@ Manager::Manager(QObject *parent) :
|
||||
trayIcon_ (new QSystemTrayIcon (QIcon (":/images/icon.png"), this)),
|
||||
selection_ (new SelectionDialog),
|
||||
resultDialog_ (new ResultDialog),
|
||||
captureAction_ (NULL)
|
||||
captureAction_ (NULL), repeatAction_ (NULL), clipboardAction_ (NULL),
|
||||
useResultDialog_ (true)
|
||||
{
|
||||
GlobalActionHelper::init ();
|
||||
qRegisterMetaType<ProcessingItem>();
|
||||
@ -77,6 +78,11 @@ QMenu*Manager::trayContextMenu()
|
||||
{
|
||||
QMenu* menu = new QMenu ();
|
||||
captureAction_ = menu->addAction (tr ("Захват"), this, SLOT (capture ()));
|
||||
QMenu* translateMenu = menu->addMenu (tr ("Перевод"));
|
||||
repeatAction_ = translateMenu->addAction (tr ("Повторить"), this,
|
||||
SLOT (showLast ()));
|
||||
clipboardAction_ = translateMenu->addAction (tr ("Скопировать"), this,
|
||||
SLOT (copyLastToClipboard ()));
|
||||
menu->addAction (tr ("Настройки"), this, SLOT (settings ()));
|
||||
menu->addAction (tr ("О программе"), this, SLOT (about ()));
|
||||
menu->addAction (tr ("Выход"), this, SLOT (close ()));
|
||||
@ -88,35 +94,29 @@ void Manager::applySettings()
|
||||
QSettings settings;
|
||||
settings.beginGroup (settings_names::guiGroup);
|
||||
QString captureHotkey = settings.value (settings_names::captureHotkey,
|
||||
settings_values::captureHotkey).
|
||||
toString ();
|
||||
settings_values::captureHotkey).toString ();
|
||||
Q_CHECK_PTR (captureAction_);
|
||||
GlobalActionHelper::removeGlobal (captureAction_);
|
||||
captureAction_->setShortcut (captureHotkey);
|
||||
GlobalActionHelper::makeGlobal (captureAction_);
|
||||
}
|
||||
|
||||
void Manager::processTrayAction(QSystemTrayIcon::ActivationReason reason)
|
||||
{
|
||||
if (reason == QSystemTrayIcon::Trigger)
|
||||
{
|
||||
if (!lastMessage_.isEmpty ())
|
||||
{
|
||||
trayIcon_->showMessage (tr ("Последний перевод"), lastMessage_,
|
||||
QSystemTrayIcon::Information);
|
||||
}
|
||||
}
|
||||
else if (reason == QSystemTrayIcon::MiddleClick)
|
||||
{
|
||||
if (!lastMessage_.isEmpty ())
|
||||
{
|
||||
QClipboard* clipboard = QApplication::clipboard ();
|
||||
clipboard->setText (lastMessage_);
|
||||
trayIcon_->showMessage (tr ("Последний перевод"),
|
||||
tr ("Последний перевод был скопирован в буфер обмена."),
|
||||
QSystemTrayIcon::Information);
|
||||
}
|
||||
}
|
||||
QString repeatHotkey = settings.value (settings_names::repeatHotkey,
|
||||
settings_values::repeatHotkey).toString ();
|
||||
Q_CHECK_PTR (repeatAction_);
|
||||
GlobalActionHelper::removeGlobal (repeatAction_);
|
||||
repeatAction_->setShortcut (repeatHotkey);
|
||||
GlobalActionHelper::makeGlobal (repeatAction_);
|
||||
|
||||
QString clipboardHotkey = settings.value (settings_names::clipboardHotkey,
|
||||
settings_values::clipboardHotkey).toString ();
|
||||
Q_CHECK_PTR (clipboardAction_);
|
||||
GlobalActionHelper::removeGlobal (clipboardAction_);
|
||||
clipboardAction_->setShortcut (clipboardHotkey);
|
||||
GlobalActionHelper::makeGlobal (clipboardAction_);
|
||||
|
||||
// Depends on SettingsEditor button indexes. 1==dialog
|
||||
useResultDialog_ = settings.value (settings_names::resultShowType,
|
||||
settings_values::resultShowType).toBool ();
|
||||
}
|
||||
|
||||
Manager::~Manager()
|
||||
@ -160,12 +160,52 @@ void Manager::about()
|
||||
message.exec ();
|
||||
}
|
||||
|
||||
void Manager::processTrayAction(QSystemTrayIcon::ActivationReason reason)
|
||||
{
|
||||
if (reason == QSystemTrayIcon::Trigger)
|
||||
{
|
||||
showLast ();
|
||||
}
|
||||
else if (reason == QSystemTrayIcon::MiddleClick)
|
||||
{
|
||||
copyLastToClipboard ();
|
||||
}
|
||||
}
|
||||
|
||||
void Manager::showLast()
|
||||
{
|
||||
if (lastItem_.isValid ())
|
||||
{
|
||||
showResult (lastItem_);
|
||||
}
|
||||
}
|
||||
|
||||
void Manager::copyLastToClipboard()
|
||||
{
|
||||
if (lastItem_.isValid ())
|
||||
{
|
||||
QClipboard* clipboard = QApplication::clipboard ();
|
||||
QString message = lastItem_.recognized + " - " + lastItem_.translated;
|
||||
clipboard->setText (message);
|
||||
trayIcon_->showMessage (tr ("Перевод"),
|
||||
tr ("Последний перевод был скопирован в буфер обмена."),
|
||||
QSystemTrayIcon::Information);
|
||||
}
|
||||
}
|
||||
|
||||
void Manager::showResult(ProcessingItem item)
|
||||
{
|
||||
resultDialog_->showResult (item);
|
||||
// lastMessage_ = sourceText + " - " + translatedText;
|
||||
// qDebug () << sourceText << translatedText;
|
||||
// trayIcon_->showMessage (tr ("Перевод"), lastMessage_, QSystemTrayIcon::Information);
|
||||
Q_ASSERT (item.isValid ());
|
||||
lastItem_ = item;
|
||||
if (useResultDialog_)
|
||||
{
|
||||
resultDialog_->showResult (item);
|
||||
}
|
||||
else
|
||||
{
|
||||
QString message = item.recognized + " - " + item.translated;
|
||||
trayIcon_->showMessage (tr ("Перевод"), message, QSystemTrayIcon::Information);
|
||||
}
|
||||
}
|
||||
|
||||
void Manager::showError(QString text)
|
||||
|
@ -28,6 +28,8 @@ class Manager : public QObject
|
||||
void settings ();
|
||||
void close ();
|
||||
void about ();
|
||||
void showLast ();
|
||||
void copyLastToClipboard ();
|
||||
|
||||
void applySettings ();
|
||||
|
||||
@ -44,7 +46,10 @@ class Manager : public QObject
|
||||
SelectionDialog* selection_;
|
||||
ResultDialog* resultDialog_;
|
||||
QAction* captureAction_;
|
||||
QString lastMessage_;
|
||||
QAction* repeatAction_;
|
||||
QAction* clipboardAction_;
|
||||
ProcessingItem lastItem_;
|
||||
bool useResultDialog_;
|
||||
};
|
||||
|
||||
#endif // MANAGER_H
|
||||
|
11
ProcessingItem.cpp
Normal file
11
ProcessingItem.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
#include "ProcessingItem.h"
|
||||
|
||||
bool ProcessingItem::isValid() const
|
||||
{
|
||||
bool valid = true;
|
||||
valid &= (!screenPos.isNull ());
|
||||
valid &= (!source.isNull ());
|
||||
valid &= (!recognized.isEmpty ());
|
||||
valid &= (!translated.isEmpty ());
|
||||
return valid;
|
||||
}
|
@ -9,6 +9,8 @@ struct ProcessingItem
|
||||
QPixmap source;
|
||||
QString recognized;
|
||||
QString translated;
|
||||
|
||||
bool isValid () const;
|
||||
};
|
||||
Q_DECLARE_METATYPE(ProcessingItem)
|
||||
|
||||
|
108
Recognizer.cpp
108
Recognizer.cpp
@ -1,6 +1,6 @@
|
||||
#include "Recognizer.h"
|
||||
|
||||
//#include <tesseract/baseapi.h>
|
||||
#include <tesseract/baseapi.h>
|
||||
|
||||
#include <QDebug>
|
||||
#include <QSettings>
|
||||
@ -35,67 +35,63 @@ void Recognizer::applySettings()
|
||||
|
||||
bool Recognizer::initEngine()
|
||||
{
|
||||
// if (tessDataDir_.isEmpty () || ocrLanguage_.isEmpty ())
|
||||
// {
|
||||
// emit error (tr ("Неверные параметры для OCR"));
|
||||
// return false;
|
||||
// }
|
||||
// if (engine_ != NULL)
|
||||
// {
|
||||
// delete engine_;
|
||||
// }
|
||||
// engine_ = new tesseract::TessBaseAPI();
|
||||
// int result = engine_->Init(qPrintable (tessDataDir_), qPrintable (ocrLanguage_),
|
||||
// tesseract::OEM_DEFAULT);
|
||||
// if (result != 0)
|
||||
// {
|
||||
// emit error (tr ("Ошибка инициализации OCR: %1").arg (result));
|
||||
// delete engine_;
|
||||
// engine_ = NULL;
|
||||
// return false;
|
||||
// }
|
||||
// return true;
|
||||
if (tessDataDir_.isEmpty () || ocrLanguage_.isEmpty ())
|
||||
{
|
||||
emit error (tr ("Неверные параметры для OCR"));
|
||||
return false;
|
||||
}
|
||||
if (engine_ != NULL)
|
||||
{
|
||||
delete engine_;
|
||||
}
|
||||
engine_ = new tesseract::TessBaseAPI();
|
||||
int result = engine_->Init(qPrintable (tessDataDir_), qPrintable (ocrLanguage_),
|
||||
tesseract::OEM_DEFAULT);
|
||||
if (result != 0)
|
||||
{
|
||||
emit error (tr ("Ошибка инициализации OCR: %1").arg (result));
|
||||
delete engine_;
|
||||
engine_ = NULL;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void Recognizer::recognize(ProcessingItem item)
|
||||
{
|
||||
Q_ASSERT (!item.source.isNull ());
|
||||
item.recognized = "test rec";
|
||||
emit recognized (item);
|
||||
return;
|
||||
// if (engine_ == NULL)
|
||||
// {
|
||||
// if (!initEngine ())
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
if (engine_ == NULL)
|
||||
{
|
||||
if (!initEngine ())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// QPixmap scaled = pixmap;
|
||||
// if (imageScale_ > 0)
|
||||
// {
|
||||
// scaled = pixmap.scaledToHeight (pixmap.height () * imageScale_,
|
||||
// Qt::SmoothTransformation);
|
||||
// }
|
||||
// QImage image = scaled.toImage ();
|
||||
// const int bytesPerPixel = image.depth () / 8;
|
||||
// engine_->SetImage (image.bits (), image.width (), image.height (),
|
||||
// bytesPerPixel, image.bytesPerLine ());
|
||||
QPixmap scaled = item.source;
|
||||
if (imageScale_ > 0)
|
||||
{
|
||||
scaled = scaled.scaledToHeight (scaled.height () * imageScale_,
|
||||
Qt::SmoothTransformation);
|
||||
}
|
||||
QImage image = scaled.toImage ();
|
||||
const int bytesPerPixel = image.depth () / 8;
|
||||
engine_->SetImage (image.bits (), image.width (), image.height (),
|
||||
bytesPerPixel, image.bytesPerLine ());
|
||||
|
||||
// char* outText = engine_->GetUTF8Text();
|
||||
// engine_->Clear();
|
||||
char* outText = engine_->GetUTF8Text();
|
||||
engine_->Clear();
|
||||
|
||||
// QString result (outText);
|
||||
// result = result.trimmed();
|
||||
// if (!result.isEmpty ())
|
||||
// {
|
||||
// item.recognized = result;
|
||||
// emit recognized (result);
|
||||
// emit recognized (pixmap, result);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// emit error (tr ("Текст не распознан."));
|
||||
// }
|
||||
// delete [] outText;
|
||||
QString result (outText);
|
||||
result = result.trimmed();
|
||||
if (!result.isEmpty ())
|
||||
{
|
||||
item.recognized = result;
|
||||
emit recognized (item);
|
||||
}
|
||||
else
|
||||
{
|
||||
emit error (tr ("Текст не распознан."));
|
||||
}
|
||||
delete [] outText;
|
||||
}
|
||||
|
@ -43,15 +43,22 @@ void ResultDialog::showResult(ProcessingItem item)
|
||||
|
||||
adjustSize ();
|
||||
|
||||
QDesktopWidget* desktop = QApplication::desktop ();
|
||||
Q_CHECK_PTR (desktop);
|
||||
if (isShowAtCapturePos_)
|
||||
{
|
||||
QPoint correction = QPoint (ui->frame->lineWidth (), ui->frame->lineWidth ());
|
||||
move (item.screenPos - correction);
|
||||
QRect screenRect = desktop->screenGeometry (this);
|
||||
int minY = screenRect.bottom () - height ();
|
||||
if (y () > minY)
|
||||
{
|
||||
move (x (), minY);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QDesktopWidget* desktop = QApplication::desktop ();
|
||||
Q_CHECK_PTR (desktop);
|
||||
|
||||
QRect screenRect = desktop->availableGeometry (this);
|
||||
Q_ASSERT (screenRect.isValid ());
|
||||
QPoint newPos (screenRect.width () - width (), screenRect.height () - height ());
|
||||
|
@ -11,9 +11,9 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
TARGET = ScreenTranslator
|
||||
TEMPLATE = app
|
||||
|
||||
#INCLUDEPATH += C:/build/include
|
||||
INCLUDEPATH += C:/build/include
|
||||
|
||||
#LIBS += -LC:/build/bin -ltesseract
|
||||
LIBS += -LC:/build/bin -ltesseract
|
||||
|
||||
SOURCES += main.cpp\
|
||||
Manager.cpp \
|
||||
@ -22,7 +22,8 @@ SOURCES += main.cpp\
|
||||
GlobalActionHelper.cpp \
|
||||
Recognizer.cpp \
|
||||
Translator.cpp \
|
||||
ResultDialog.cpp
|
||||
ResultDialog.cpp \
|
||||
ProcessingItem.cpp
|
||||
|
||||
HEADERS += \
|
||||
Manager.h \
|
||||
|
@ -9,6 +9,9 @@ namespace settings_names
|
||||
const QString guiGroup = "GUI";
|
||||
const QString geometry = "geometry";
|
||||
const QString captureHotkey = "captureHotkey";
|
||||
const QString repeatHotkey = "repeatHotkey";
|
||||
const QString clipboardHotkey = "clipboardHotkey";
|
||||
const QString resultShowType = "resultShowType";
|
||||
|
||||
//! Recognition
|
||||
const QString recogntionGroup = "Recognition";
|
||||
@ -29,6 +32,9 @@ namespace settings_values
|
||||
|
||||
//! UI
|
||||
const QString captureHotkey = "Ctrl+Alt+Z";
|
||||
const QString repeatHotkey = "Ctrl+Alt+X";
|
||||
const QString clipboardHotkey = "Ctrl+Alt+C";
|
||||
const QString resultShowType = "1";//dialog
|
||||
|
||||
//! Recognition
|
||||
const QString tessDataPlace = "./";
|
||||
|
@ -10,10 +10,14 @@
|
||||
|
||||
SettingsEditor::SettingsEditor(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::SettingsEditor)
|
||||
ui(new Ui::SettingsEditor),
|
||||
buttonGroup_ (new QButtonGroup (this))
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
buttonGroup_->addButton (ui->trayRadio, 0);
|
||||
buttonGroup_->addButton (ui->dialogRadio, 1);
|
||||
|
||||
connect (ui->tessdataButton, SIGNAL (clicked ()), SLOT (openTessdataDialog ()));
|
||||
connect (ui->tessdataEdit, SIGNAL (textChanged (const QString&)),
|
||||
SLOT (initOcrLangCombo ()));
|
||||
@ -44,6 +48,9 @@ void SettingsEditor::saveSettings() const
|
||||
QSettings settings;
|
||||
settings.beginGroup (settings_names::guiGroup);
|
||||
settings.setValue (settings_names::captureHotkey, ui->captureEdit->text ());
|
||||
settings.setValue (settings_names::repeatHotkey, ui->repeatEdit->text ());
|
||||
settings.setValue (settings_names::clipboardHotkey, ui->clipboardEdit->text ());
|
||||
settings.setValue (settings_names::resultShowType, buttonGroup_->checkedId ());
|
||||
settings.endGroup ();
|
||||
|
||||
|
||||
@ -82,6 +89,17 @@ void SettingsEditor::loadSettings()
|
||||
QString captureHotkey = settings.value (settings_names::captureHotkey,
|
||||
settings_values::captureHotkey).toString ();
|
||||
ui->captureEdit->setText (captureHotkey);
|
||||
QString repeatHotkey = settings.value (settings_names::repeatHotkey,
|
||||
settings_values::repeatHotkey).toString ();
|
||||
ui->repeatEdit->setText (repeatHotkey);
|
||||
QString clipboardHotkey = settings.value (settings_names::clipboardHotkey,
|
||||
settings_values::clipboardHotkey).toString ();
|
||||
ui->clipboardEdit->setText (clipboardHotkey);
|
||||
int resultShowType = settings.value (settings_names::resultShowType,
|
||||
settings_values::resultShowType).toInt ();
|
||||
QAbstractButton* button = buttonGroup_->button (resultShowType);
|
||||
Q_CHECK_PTR (button);
|
||||
button->setChecked (true);
|
||||
settings.endGroup ();
|
||||
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define SETTINGSEDITOR_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QButtonGroup>
|
||||
|
||||
namespace Ui {
|
||||
class SettingsEditor;
|
||||
@ -34,6 +35,7 @@ class SettingsEditor : public QDialog
|
||||
|
||||
private:
|
||||
Ui::SettingsEditor *ui;
|
||||
QButtonGroup* buttonGroup_;
|
||||
};
|
||||
|
||||
#endif // SETTINGSEDITOR_H
|
||||
|
@ -6,14 +6,14 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>456</width>
|
||||
<height>166</height>
|
||||
<width>435</width>
|
||||
<height>221</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Настройки</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="0" column="0">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
@ -26,20 +26,52 @@
|
||||
<string><html><head/><body><p>Сочетание клавиш для перехода в режим захвата.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Захват</string>
|
||||
<string>Захватить</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>captureEdit</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="captureEdit"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Сочетание клавиш для перехода в режим захвата.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Скопировать</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>captureEdit</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="clipboardEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Сочетание клавиш для перехода в режим захвата.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Повторить</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>captureEdit</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="repeatEdit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" rowspan="2">
|
||||
<item row="0" column="1">
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Распознавание</string>
|
||||
@ -103,7 +135,46 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QGroupBox" name="resultGroup">
|
||||
<property name="title">
|
||||
<string>Вывод результата</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="0" column="1">
|
||||
<widget class="QRadioButton" name="trayRadio">
|
||||
<property name="text">
|
||||
<string>Трей</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QRadioButton" name="dialogRadio">
|
||||
<property name="text">
|
||||
<string>Окно</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>Перевод</string>
|
||||
@ -128,33 +199,20 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>24</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<spacer name="verticalSpacer_2">
|
||||
<item row="2" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>37</height>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="3">
|
||||
<item row="3" column="1">
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
|
@ -38,9 +38,6 @@ void Translator::applySettings()
|
||||
void Translator::translate(ProcessingItem item)
|
||||
{
|
||||
Q_ASSERT (!item.recognized.isEmpty ());
|
||||
item.translated = "проверка";
|
||||
emit translated (item);
|
||||
return;
|
||||
if (translationLanguage_.isEmpty ())
|
||||
{
|
||||
emit error (tr ("Неверные парметры для перевода."));
|
||||
|
Loading…
Reference in New Issue
Block a user