Added possibility to select image several times without closing SelectionDialog.
This commit is contained in:
parent
4c51e264b5
commit
fb1d25f914
13
Manager.cpp
13
Manager.cpp
@ -34,7 +34,7 @@ Manager::Manager (QObject *parent) :
|
||||
|
||||
// Recognizer
|
||||
Recognizer *recognizer = new Recognizer;
|
||||
connect (this, SIGNAL (selected (ProcessingItem)),
|
||||
connect (this, SIGNAL (requestRecognize (ProcessingItem)),
|
||||
recognizer, SLOT (recognize (ProcessingItem)));
|
||||
connect (recognizer, SIGNAL (recognized (ProcessingItem)),
|
||||
SIGNAL (recognized (ProcessingItem)));
|
||||
@ -188,8 +188,8 @@ void Manager::capture () {
|
||||
selection->setWindowIcon (trayIcon_->icon ());
|
||||
connect (this, SIGNAL (closeSelections ()), selection, SLOT (close ()));
|
||||
connect (this, SIGNAL (settingsEdited ()), selection, SLOT (updateMenu ()));
|
||||
connect (selection, SIGNAL (selected (ProcessingItem)), SIGNAL (selected (ProcessingItem)));
|
||||
connect (selection, SIGNAL (selected (ProcessingItem)), SIGNAL (closeSelections ()));
|
||||
connect (selection, SIGNAL (selected (ProcessingItem)),
|
||||
SLOT (handleSelection (ProcessingItem)));
|
||||
connect (selection, SIGNAL (rejected ()), SIGNAL (closeSelections ()));
|
||||
selections_[name] = selection;
|
||||
}
|
||||
@ -199,6 +199,13 @@ void Manager::capture () {
|
||||
updateActionsState ();
|
||||
}
|
||||
|
||||
void Manager::handleSelection (ProcessingItem item) {
|
||||
emit requestRecognize (item);
|
||||
if (!(item.modifiers & Qt::ControlModifier)) {
|
||||
emit closeSelections ();
|
||||
}
|
||||
}
|
||||
|
||||
void Manager::repeatCapture () {
|
||||
if (selections_.isEmpty ()) {
|
||||
return;
|
||||
|
@ -22,7 +22,7 @@ class Manager : public QObject {
|
||||
~Manager ();
|
||||
|
||||
signals:
|
||||
void selected (ProcessingItem item);
|
||||
void requestRecognize (ProcessingItem item);
|
||||
void recognized (ProcessingItem item);
|
||||
void requestTranslate (ProcessingItem item);
|
||||
void closeSelections ();
|
||||
@ -41,6 +41,7 @@ class Manager : public QObject {
|
||||
|
||||
void processTrayAction (QSystemTrayIcon::ActivationReason reason);
|
||||
|
||||
void handleSelection (ProcessingItem item);
|
||||
void showResult (ProcessingItem item);
|
||||
void showError (QString text);
|
||||
|
||||
|
@ -12,6 +12,8 @@ struct ProcessingItem {
|
||||
QString ocrLanguage;
|
||||
QString sourceLanguage;
|
||||
|
||||
Qt::KeyboardModifiers modifiers;
|
||||
|
||||
bool isValid () const;
|
||||
};
|
||||
Q_DECLARE_METATYPE (ProcessingItem)
|
||||
|
@ -10,7 +10,7 @@ ResultDialog::ResultDialog (QWidget *parent) :
|
||||
isShowAtCapturePos_ (true) {
|
||||
ui->setupUi (this);
|
||||
setWindowFlags (Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint |
|
||||
Qt::WindowStaysOnTopHint);
|
||||
Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
|
||||
|
||||
installEventFilter (this);
|
||||
}
|
||||
@ -21,7 +21,8 @@ ResultDialog::~ResultDialog () {
|
||||
|
||||
bool ResultDialog::eventFilter (QObject *object, QEvent *event) {
|
||||
Q_UNUSED (object);
|
||||
if (event->type () == QEvent::MouseButtonRelease) {
|
||||
if (event->type () == QEvent::MouseButtonRelease ||
|
||||
event->type () == QEvent::WindowDeactivate) {
|
||||
hide ();
|
||||
}
|
||||
return QDialog::eventFilter (object, event);
|
||||
|
@ -19,7 +19,7 @@ win32{
|
||||
linux{
|
||||
QT += x11extras
|
||||
INCLUDEPATH += ../linux/include
|
||||
LIBS += -L../linux/lib -lX11
|
||||
LIBS += -L../linux/lib -lX11 -Wl,-rpath,.
|
||||
}
|
||||
|
||||
LIBS += -ltesseract -llept
|
||||
@ -70,4 +70,5 @@ OTHER_FILES += \
|
||||
app.rc \
|
||||
images/icon.ico \
|
||||
README.md \
|
||||
uncrustify.cfg
|
||||
uncrustify.cfg\
|
||||
TODO.md
|
||||
|
@ -14,7 +14,7 @@ SelectionDialog::SelectionDialog (const LanguageHelper &dictionary, QWidget *par
|
||||
languageMenu_ (new QMenu) {
|
||||
ui->setupUi (this);
|
||||
setWindowFlags (Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint |
|
||||
Qt::WindowStaysOnTopHint);
|
||||
Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
|
||||
|
||||
ui->label->setAutoFillBackground (false);
|
||||
ui->label->installEventFilter (this);
|
||||
@ -101,6 +101,7 @@ bool SelectionDialog::eventFilter (QObject *object, QEvent *event) {
|
||||
}
|
||||
QPoint endPos = mouseEvent->pos ();
|
||||
QRect selection = QRect (startSelectPos_, endPos).normalized ();
|
||||
startSelectPos_ = currentSelectPos_ = QPoint ();
|
||||
QPixmap selectedPixmap = currentPixmap_.copy (selection);
|
||||
if (selectedPixmap.width () < 3 || selectedPixmap.height () < 3) {
|
||||
reject ();
|
||||
@ -109,6 +110,7 @@ bool SelectionDialog::eventFilter (QObject *object, QEvent *event) {
|
||||
ProcessingItem item;
|
||||
item.source = selectedPixmap;
|
||||
item.screenPos = pos () + selection.topLeft ();
|
||||
item.modifiers = mouseEvent->modifiers ();
|
||||
|
||||
if (mouseEvent->button () == Qt::RightButton &&
|
||||
!languageMenu_->children ().isEmpty ()) {
|
||||
|
Loading…
Reference in New Issue
Block a user