#include "gui/conjugation.h"
#include <QtCore/QCoreApplication>
-#ifdef DEBUG
-#include <QDebug>
-#endif
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
#endif
ui->setupUi(this);
setupcodedUI();
- initverbiste();
}
void MainWindow::setupcodedUI()
show();
#endif
wordinput->setFocus();
+ initverbiste();
}
void MainWindow::initverbiste()
void MainWindow::startLookup()
{
+ QString input = wordinput->text().trimmed();
+ if (input.isEmpty()) {
+ return;
+ }
+
btnLookup->setText(tr("Please wait..."));
btnLookup->setEnabled(false);
clearResults();
/* Pending the lookup job to the next event loop (redraw the button right now) */
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
- QString input = wordinput->text();
/* Get input word to look up */
const std::string word = input.toLower().toUtf8().constData();
bool includePronouns = FALSE; // TODO: Will get this value from external
bool isItalian = FALSE; // TODO: Will get this value from external
+#ifndef QT_NO_DEBUG
+ timer.start();
+ qDebug() << "Start " << timer.elapsed();
+#endif
freVerbDic->deconjugate(word, infles);
resultPages->setUpdatesEnabled(false);
- std::string prevUTF8Infinitive, prevTemplateName;
+ std::string prevUTF8Infinitive, prevTemplateName; /* Remember found word
+ to avoid conjugating again */
+
for (std::vector<InflectionDesc>::const_iterator it = infles.begin();
it != infles.end(); it++)
{
const InflectionDesc &d = *it;
+
+#ifndef QT_NO_DEBUG
+ qDebug() << ">> Infinitive " << d.infinitive.c_str();
+ qDebug() << " Template " << d.templateName.c_str();
+#endif
+ /* If this infinitive has been conjugated, we skip to the next infinitive */
+ if (d.infinitive == prevUTF8Infinitive && d.templateName == prevTemplateName) {
+ continue;
+ }
+ /* FIXME:
+ * In original source (Verbiste), this checking is done later,
+ * after getConjugation(). I place it here to avoid calling again
+ * multitimes getConjugation(), which is very slow.
+ * We need to test more to see which place is more correct.
+ */
+
VVVS conjug;
- getConjugation(freVerbDic, d.infinitive, d.templateName, conjug, includePronouns);
+#ifndef QT_NO_DEBUG
+ qDebug() << " START getConjugation " << timer.elapsed();
+#endif
+ getConjugation(freVerbDic, d.infinitive, d.templateName, conjug,
+ #ifndef QT_NO_DEBUG
+ timer,
+ #endif
+ includePronouns);
+
+#ifndef QT_NO_DEBUG
+ qDebug() << " getConjugation() returns: " << timer.elapsed();
+#endif
if (conjug.size() == 0 // if no tenses
|| conjug[0].size() == 0 // if no infinitive tense
}
std::string utf8Infinitive = conjug[0][0][0];
- if (utf8Infinitive == prevUTF8Infinitive && d.templateName == prevTemplateName)
- // This result is duplicated
- continue;
+#ifndef QT_NO_DEBUG
+ qDebug() << " Infinitive " << utf8Infinitive.c_str();
+ qDebug() << " Template " << d.templateName.c_str();
+#endif
- /* Show on GUI */
+ /* Add result to GUI (not show yet) */
ResultPage *rsp = addResultPage(utf8Infinitive);
/* Get modes and tenses of the verb */
QVBoxLayout *cell = makeResultCell(*t, utf8TenseName, word, freVerbDic);
rsp->grid->addLayout(cell, row, col);
}
+
+ /* Show the result on GUI */
rsp->packContent();
prevUTF8Infinitive = utf8Infinitive;
prevTemplateName = d.templateName;
}
+
/* Enable the button again */
btnLookup->setEnabled(true);
btnLookup->setText("");