Update languages menu moved to LanguageHelper from SelectionDialog.
This commit is contained in:
parent
fb1d25f914
commit
5b166cba4c
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "LanguageHelper.h"
|
#include "LanguageHelper.h"
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
#include "StAssert.h"
|
||||||
|
|
||||||
LanguageHelper::LanguageHelper () {
|
LanguageHelper::LanguageHelper () {
|
||||||
init ();
|
init ();
|
||||||
@ -95,6 +96,38 @@ void LanguageHelper::updateAvailableOcrLanguages () {
|
|||||||
availableOcrLanguages_ = availableOcrLanguages (tessDataPlace);
|
availableOcrLanguages_ = availableOcrLanguages (tessDataPlace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LanguageHelper::updateMenu (QMenu *menu, const QStringList &languages, int groupSize) const {
|
||||||
|
ST_ASSERT (menu != NULL);
|
||||||
|
menu->clear ();
|
||||||
|
if (languages.isEmpty ()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (languages.size () <= groupSize) {
|
||||||
|
foreach (const QString &language, languages) {
|
||||||
|
menu->addAction (language);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
int subIndex = groupSize;
|
||||||
|
QMenu *subMenu = NULL;
|
||||||
|
QString prevLetter;
|
||||||
|
foreach (const QString &language, languages) {
|
||||||
|
QString curLetter = language.left (1);
|
||||||
|
if (++subIndex >= groupSize && prevLetter != curLetter) {
|
||||||
|
if (subMenu != NULL) {
|
||||||
|
subMenu->setTitle (subMenu->title () + " - " + prevLetter);
|
||||||
|
}
|
||||||
|
subMenu = menu->addMenu (curLetter);
|
||||||
|
subIndex = 0;
|
||||||
|
}
|
||||||
|
prevLetter = curLetter;
|
||||||
|
subMenu->addAction (language);
|
||||||
|
}
|
||||||
|
subMenu->setTitle (subMenu->title () + " - " + prevLetter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LanguageHelper::initTranslateLanguages () {
|
void LanguageHelper::initTranslateLanguages () {
|
||||||
translateLanguages_.insert (QObject::tr ("Afrikaans"),"af");
|
translateLanguages_.insert (QObject::tr ("Afrikaans"),"af");
|
||||||
translateLanguages_.insert (QObject::tr ("Albanian"),"sq");
|
translateLanguages_.insert (QObject::tr ("Albanian"),"sq");
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include <QMenu>
|
||||||
|
|
||||||
class LanguageHelper {
|
class LanguageHelper {
|
||||||
public:
|
public:
|
||||||
@ -22,6 +23,9 @@ class LanguageHelper {
|
|||||||
|
|
||||||
void updateAvailableOcrLanguages ();
|
void updateAvailableOcrLanguages ();
|
||||||
|
|
||||||
|
//! Update languages menu. Group items into submenus if needed.
|
||||||
|
void updateMenu (QMenu *menu, const QStringList &languages, int groupSize = 10) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QStringList availableOcrLanguages (const QString &path) const;
|
QStringList availableOcrLanguages (const QString &path) const;
|
||||||
void init ();
|
void init ();
|
||||||
|
@ -187,7 +187,7 @@ void Manager::capture () {
|
|||||||
SelectionDialog *selection = new SelectionDialog (*dictionary_);
|
SelectionDialog *selection = new SelectionDialog (*dictionary_);
|
||||||
selection->setWindowIcon (trayIcon_->icon ());
|
selection->setWindowIcon (trayIcon_->icon ());
|
||||||
connect (this, SIGNAL (closeSelections ()), selection, SLOT (close ()));
|
connect (this, SIGNAL (closeSelections ()), selection, SLOT (close ()));
|
||||||
connect (this, SIGNAL (settingsEdited ()), selection, SLOT (updateMenu ()));
|
connect (this, SIGNAL (settingsEdited ()), selection, SLOT (applySettings ()));
|
||||||
connect (selection, SIGNAL (selected (ProcessingItem)),
|
connect (selection, SIGNAL (selected (ProcessingItem)),
|
||||||
SLOT (handleSelection (ProcessingItem)));
|
SLOT (handleSelection (ProcessingItem)));
|
||||||
connect (selection, SIGNAL (rejected ()), SIGNAL (closeSelections ()));
|
connect (selection, SIGNAL (rejected ()), SIGNAL (closeSelections ()));
|
||||||
|
@ -19,46 +19,15 @@ SelectionDialog::SelectionDialog (const LanguageHelper &dictionary, QWidget *par
|
|||||||
ui->label->setAutoFillBackground (false);
|
ui->label->setAutoFillBackground (false);
|
||||||
ui->label->installEventFilter (this);
|
ui->label->installEventFilter (this);
|
||||||
|
|
||||||
updateMenu ();
|
applySettings ();
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectionDialog::~SelectionDialog () {
|
SelectionDialog::~SelectionDialog () {
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectionDialog::updateMenu () {
|
void SelectionDialog::applySettings () {
|
||||||
Q_CHECK_PTR (languageMenu_);
|
dictionary_.updateMenu (languageMenu_, dictionary_.availableOcrLanguagesUi ());
|
||||||
languageMenu_->clear ();
|
|
||||||
QStringList languages = dictionary_.availableOcrLanguagesUi ();
|
|
||||||
if (languages.isEmpty ()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int max = 10;
|
|
||||||
|
|
||||||
if (languages.size () <= max) {
|
|
||||||
foreach (const QString &language, languages) {
|
|
||||||
languageMenu_->addAction (language);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
int subIndex = max;
|
|
||||||
QMenu *subMenu = NULL;
|
|
||||||
QString prevLetter;
|
|
||||||
foreach (const QString &language, languages) {
|
|
||||||
QString curLetter = language.left (1);
|
|
||||||
if (++subIndex >= max && prevLetter != curLetter) {
|
|
||||||
if (subMenu != NULL) {
|
|
||||||
subMenu->setTitle (subMenu->title () + " - " + prevLetter);
|
|
||||||
}
|
|
||||||
subMenu = languageMenu_->addMenu (curLetter);
|
|
||||||
subIndex = 0;
|
|
||||||
}
|
|
||||||
prevLetter = curLetter;
|
|
||||||
subMenu->addAction (language);
|
|
||||||
}
|
|
||||||
subMenu->setTitle (subMenu->title () + " - " + prevLetter);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SelectionDialog::eventFilter (QObject *object, QEvent *event) {
|
bool SelectionDialog::eventFilter (QObject *object, QEvent *event) {
|
||||||
|
@ -28,7 +28,7 @@ class SelectionDialog : public QDialog {
|
|||||||
public slots:
|
public slots:
|
||||||
//! Show pixmap with given geometry.
|
//! Show pixmap with given geometry.
|
||||||
void setPixmap (QPixmap pixmap, const QRect &showGeometry);
|
void setPixmap (QPixmap pixmap, const QRect &showGeometry);
|
||||||
void updateMenu ();
|
void applySettings ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SelectionDialog *ui;
|
Ui::SelectionDialog *ui;
|
||||||
|
Loading…
Reference in New Issue
Block a user