Added ability to correct recognized text.
This commit is contained in:
parent
381df69650
commit
f3c4f1c5b5
13
Manager.cpp
13
Manager.cpp
@ -10,6 +10,7 @@
|
|||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
#include <QInputDialog>
|
||||||
|
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
#include "SettingsEditor.h"
|
#include "SettingsEditor.h"
|
||||||
@ -74,6 +75,8 @@ Manager::Manager (QObject *parent) :
|
|||||||
connect (resultDialog_, SIGNAL (requestTranslate (ProcessingItem)),
|
connect (resultDialog_, SIGNAL (requestTranslate (ProcessingItem)),
|
||||||
this, SIGNAL (requestTranslate (ProcessingItem)));
|
this, SIGNAL (requestTranslate (ProcessingItem)));
|
||||||
connect (resultDialog_, SIGNAL (requestClipboard ()), SLOT (copyLastToClipboard ()));
|
connect (resultDialog_, SIGNAL (requestClipboard ()), SLOT (copyLastToClipboard ()));
|
||||||
|
connect (resultDialog_, SIGNAL (requestEdition (ProcessingItem)),
|
||||||
|
this, SLOT (editRecognized (ProcessingItem)));
|
||||||
|
|
||||||
|
|
||||||
connect (trayIcon_, SIGNAL (activated (QSystemTrayIcon::ActivationReason)),
|
connect (trayIcon_, SIGNAL (activated (QSystemTrayIcon::ActivationReason)),
|
||||||
@ -272,6 +275,16 @@ void Manager::processTrayAction (QSystemTrayIcon::ActivationReason reason) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Manager::editRecognized (ProcessingItem item) {
|
||||||
|
ST_ASSERT (item.isValid ());
|
||||||
|
QString fixed = QInputDialog::getMultiLineText (
|
||||||
|
NULL, tr ("Правка"), tr ("Исправьте распознанный текст"), item.recognized);
|
||||||
|
if (!fixed.isEmpty ()) {
|
||||||
|
item.recognized = fixed;
|
||||||
|
showResult (item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Manager::showLast () {
|
void Manager::showLast () {
|
||||||
const ProcessingItem &item = resultDialog_->item ();
|
const ProcessingItem &item = resultDialog_->item ();
|
||||||
if (item.isValid ()) {
|
if (item.isValid ()) {
|
||||||
|
@ -41,6 +41,7 @@ class Manager : public QObject {
|
|||||||
|
|
||||||
void processTrayAction (QSystemTrayIcon::ActivationReason reason);
|
void processTrayAction (QSystemTrayIcon::ActivationReason reason);
|
||||||
|
|
||||||
|
void editRecognized (ProcessingItem item);
|
||||||
void handleSelection (ProcessingItem item);
|
void handleSelection (ProcessingItem item);
|
||||||
void showResult (ProcessingItem item);
|
void showResult (ProcessingItem item);
|
||||||
void showError (QString text);
|
void showError (QString text);
|
||||||
|
@ -12,7 +12,7 @@ ResultDialog::ResultDialog (const LanguageHelper &dictionary, QWidget *parent) :
|
|||||||
ui (new Ui::ResultDialog),
|
ui (new Ui::ResultDialog),
|
||||||
dictionary_ (dictionary),
|
dictionary_ (dictionary),
|
||||||
contextMenu_ (NULL), recognizeSubMenu_ (NULL), translateSubMenu_ (NULL),
|
contextMenu_ (NULL), recognizeSubMenu_ (NULL), translateSubMenu_ (NULL),
|
||||||
clipboardAction_ (NULL) {
|
clipboardAction_ (NULL), correctAction_ (NULL) {
|
||||||
ui->setupUi (this);
|
ui->setupUi (this);
|
||||||
setWindowFlags (Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint |
|
setWindowFlags (Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint |
|
||||||
Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
|
Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
|
||||||
@ -41,6 +41,7 @@ void ResultDialog::createContextMenu () {
|
|||||||
recognizeSubMenu_ = contextMenu_->addMenu (tr ("Распознать другой язык"));
|
recognizeSubMenu_ = contextMenu_->addMenu (tr ("Распознать другой язык"));
|
||||||
translateSubMenu_ = contextMenu_->addMenu (tr ("Перевести на другой язык"));
|
translateSubMenu_ = contextMenu_->addMenu (tr ("Перевести на другой язык"));
|
||||||
clipboardAction_ = contextMenu_->addAction (tr ("Скопировать в буфер"));
|
clipboardAction_ = contextMenu_->addAction (tr ("Скопировать в буфер"));
|
||||||
|
correctAction_ = contextMenu_->addAction (tr ("Исправить распознанный текст"));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResultDialog::eventFilter (QObject *object, QEvent *event) {
|
bool ResultDialog::eventFilter (QObject *object, QEvent *event) {
|
||||||
@ -64,6 +65,11 @@ bool ResultDialog::eventFilter (QObject *object, QEvent *event) {
|
|||||||
else if (action == clipboardAction_) {
|
else if (action == clipboardAction_) {
|
||||||
emit requestClipboard ();
|
emit requestClipboard ();
|
||||||
}
|
}
|
||||||
|
else if (action == correctAction_) {
|
||||||
|
emit requestEdition (item_);
|
||||||
|
// Return because Manager calls showResult() before hide() otherwise.
|
||||||
|
return QDialog::eventFilter (object, event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
hide ();
|
hide ();
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ class ResultDialog : public QDialog {
|
|||||||
void requestRecognize (ProcessingItem item);
|
void requestRecognize (ProcessingItem item);
|
||||||
void requestTranslate (ProcessingItem item);
|
void requestTranslate (ProcessingItem item);
|
||||||
void requestClipboard (); // Assume that slot will be called immediately.
|
void requestClipboard (); // Assume that slot will be called immediately.
|
||||||
|
void requestEdition (ProcessingItem item);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const ProcessingItem &item () const;
|
const ProcessingItem &item () const;
|
||||||
@ -41,6 +42,7 @@ class ResultDialog : public QDialog {
|
|||||||
QMenu *recognizeSubMenu_;
|
QMenu *recognizeSubMenu_;
|
||||||
QMenu *translateSubMenu_;
|
QMenu *translateSubMenu_;
|
||||||
QAction *clipboardAction_;
|
QAction *clipboardAction_;
|
||||||
|
QAction *correctAction_;
|
||||||
ProcessingItem item_;
|
ProcessingItem item_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user