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