summaryrefslogtreecommitdiff
path: root/quacker
diff options
context:
space:
mode:
authorJohn Fultz <jfultz@wolfram.com>2015-10-10 19:09:36 -0500
committerJohn Fultz <jfultz@wolfram.com>2015-10-10 19:09:36 -0500
commit69e3dcefb882c743b136df8e5c81b4182b135f6b (patch)
treefaabb8c691da11067297df8d870c0393a91c8a7f /quacker
parent81554a201cc5e0748110add6eca05cc16c18850c (diff)
Progress on the lexicon dialog.
Now prints better stats. Now loads the dictionary you're editing. Now disables the Delete button at appropriate times.
Diffstat (limited to 'quacker')
-rw-r--r--quacker/lexicondialog.cpp36
-rw-r--r--quacker/lexicondialog.h4
-rw-r--r--quacker/settings.cpp30
-rw-r--r--quacker/settings.h2
4 files changed, 57 insertions, 15 deletions
diff --git a/quacker/lexicondialog.cpp b/quacker/lexicondialog.cpp
index a7566c6..e11ae41 100644
--- a/quacker/lexicondialog.cpp
+++ b/quacker/lexicondialog.cpp
@@ -103,9 +103,21 @@ LexiconDialog::LexiconDialog(QWidget *parent, const QString &originalName) : QDi
Settings::populateComboFromFilenames(m_alphabetCombo, "alphabets", "");
alphabetChanged(m_alphabetCombo->currentText());
- updateLexiconInformation();
- // sync game board with control states and draw board
+ string dawgFileName = originalName.toStdString() + ".dawg";
+ QString dawgFullFileName;
+ if (!originalName.isEmpty())
+ dawgFullFileName = QString::fromStdString(Quackle::LexiconParameters::findDictionaryFile(dawgFileName));
+
+ if (!dawgFullFileName.isEmpty())
+ {
+ m_deleteLexicon->setEnabled(Quackle::LexiconParameters::hasUserDictionaryFile(dawgFileName));
+ addWordsFromDawgFile(dawgFullFileName);
+ }
+ else
+ m_deleteLexicon->setEnabled(false);
+
+ updateLexiconInformation();
}
LexiconDialog::~LexiconDialog()
@@ -134,9 +146,9 @@ void LexiconDialog::addWordsFromFile()
for (QList<QString>::const_iterator it = files.begin(); it != files.end(); it++)
{
if (it->endsWith(".dawg", Qt::CaseInsensitive))
- addWordsFromDawgFile(*it, m_alphabetCombo->currentText());
+ addWordsFromDawgFile(*it);
else
- addWordsFromTextFile(*it, m_alphabetCombo->currentText());
+ addWordsFromTextFile(*it);
}
updateLexiconInformation();
}
@@ -149,7 +161,7 @@ void LexiconDialog::alphabetChanged(const QString &alphabet)
m_alphabetFileName = QString::fromStdString(AlphabetParameters::findAlphabetFile(QuackleIO::Util::qstringToStdString(alphabet)));
}
-void LexiconDialog::addWordsFromDawgFile(const QString &dawgfile, const QString &alphabetfile)
+void LexiconDialog::addWordsFromDawgFile(const QString &dawgfile)
{
if (!m_wordFactory)
m_wordFactory = new DawgFactory(m_alphabetFileName);
@@ -185,7 +197,7 @@ void LexiconDialog::addWordsFromDawgRecursive(const LexiconParameters &lexParams
} while (!lastchild);
}
-void LexiconDialog::addWordsFromTextFile(const QString &textFile, const QString &alphabetfile)
+void LexiconDialog::addWordsFromTextFile(const QString &textFile)
{
if (!m_wordFactory)
m_wordFactory = new DawgFactory(m_alphabetFileName);
@@ -224,14 +236,20 @@ void LexiconDialog::accept()
void LexiconDialog::updateLexiconInformation()
{
int wordCount = m_wordFactory ? m_wordFactory->wordCount() : 0;
- QByteArray hash = m_wordFactory ? QByteArray(m_wordFactory->hashBytes(), 16).toHex() : "";
+ QByteArray hash = (m_wordFactory && wordCount) ? QByteArray(m_wordFactory->hashBytes(), 16).toHex() : "";
QString text;
+ QString lengthText;
+ if (m_wordFactory)
+ lengthText = QString::fromStdString(m_wordFactory->letterCountString());
+
text.append(tr("File name: "));
text.append(tr("\n\nFile size: "));
text.append(tr("\n\nWord count: "));
text.append(QString("%L1").arg(wordCount));
- text.append(tr("\n\nLexicon hash: "));
- text.append(hash);
+ text.append("\n");
+ text.append(lengthText);
+ text.append(tr("\nLexicon hash: "));
+ text.append(hash.left(8));
m_lexiconInformation->setText(text);
}
diff --git a/quacker/lexicondialog.h b/quacker/lexicondialog.h
index 4df6138..39cd546 100644
--- a/quacker/lexicondialog.h
+++ b/quacker/lexicondialog.h
@@ -52,9 +52,9 @@ protected slots:
void alphabetChanged(const QString &);
protected:
- void addWordsFromDawgFile(const QString &dawgfile, const QString &alphabetfile);
+ void addWordsFromDawgFile(const QString &dawgfile);
void addWordsFromDawgRecursive(const LexiconParameters &lexParams, Quackle::LetterString &word, int index);
- void addWordsFromTextFile(const QString &textFile, const QString &alphabetfile);
+ void addWordsFromTextFile(const QString &textFile);
private:
QLineEdit *m_lexiconName;
diff --git a/quacker/settings.cpp b/quacker/settings.cpp
index ce8583f..3319955 100644
--- a/quacker/settings.cpp
+++ b/quacker/settings.cpp
@@ -172,9 +172,11 @@ void Settings::createGUI()
void Settings::load()
{
m_lexiconNameCombo->setCurrentIndex(m_lexiconNameCombo->findText(QuackleIO::Util::stdStringToQString(QUACKLE_LEXICON_PARAMETERS->lexiconName())));
+ m_lastGoodLexiconValue = m_lexiconNameCombo->currentIndex();
m_alphabetNameCombo->setCurrentIndex(m_alphabetNameCombo->findText(QuackleIO::Util::stdStringToQString(QUACKLE_ALPHABET_PARAMETERS->alphabetName())));
m_themeNameCombo->setCurrentIndex(m_themeNameCombo->findText(m_themeName));
m_boardNameCombo->setCurrentIndex(m_boardNameCombo->findText(QuackleIO::Util::uvStringToQString(QUACKLE_BOARD_PARAMETERS->name())));
+ m_lastGoodBoardValue = m_boardNameCombo->currentIndex();
}
void Settings::preInitialize()
@@ -343,9 +345,13 @@ void Settings::lexiconChanged(const QString &lexiconName)
if (m_lexiconNameCombo->currentIndex() == m_lexiconNameCombo->count() - 1)
{
editLexicon();
+ if (m_lexiconNameCombo->currentIndex() == m_lexiconNameCombo->count() - 1 &&
+ m_lexiconNameCombo->currentIndex() != 0)
+ m_lexiconNameCombo->setCurrentIndex(m_lastGoodLexiconValue);
return;
}
setQuackleToUseLexiconName(lexiconName);
+ m_lastGoodLexiconValue = m_lexiconNameCombo->currentIndex();
CustomQSettings settings;
settings.setValue("quackle/settings/lexicon-name", lexiconName);
@@ -388,6 +394,9 @@ void Settings::boardChanged(const QString &boardName)
if (m_boardNameCombo->currentIndex() == m_boardNameCombo->count() - 1)
{
addBoard();
+ if (m_boardNameCombo->currentIndex() == m_boardNameCombo->count() - 1 &&
+ m_boardNameCombo->currentIndex() != 0)
+ m_boardNameCombo->setCurrentIndex(m_lastGoodBoardValue);
return;
}
CustomQSettings settings;
@@ -530,14 +539,14 @@ void Settings::populateComboFromFilenames(QComboBox* combo, const QString &path,
if (dir.cd(path))
fileList << dir.entryList(QDir::Files | QDir::Readable, QDir::Name);
- QStringListIterator i(fileList);
+ QStringList::iterator i;
QString fileName;
QStringList list;
int periodPos;
- while (i.hasNext())
+ for (i = fileList.begin(); i != fileList.end(); ++i)
{
- fileName = i.next();
+ fileName = *i;
periodPos = fileName.indexOf('.');
if (periodPos)
{
@@ -545,7 +554,20 @@ void Settings::populateComboFromFilenames(QComboBox* combo, const QString &path,
list << fileName;
}
}
- list.removeDuplicates();
+
+ for (i = fileList.begin(); i != fileList.end(); ++i)
+ {
+ QStringList::iterator j = i;
+ for (++j; j != fileList.end(); ++j)
+ {
+ if (*i == *j)
+ {
+ *i = "* " + *i;
+ list.erase(j);
+ break;
+ }
+ }
+ }
combo->addItems(list);
if (label.size() > 0)
diff --git a/quacker/settings.h b/quacker/settings.h
index fab2f3f..7c5738e 100644
--- a/quacker/settings.h
+++ b/quacker/settings.h
@@ -100,6 +100,8 @@ private:
void pushIndex(GaddagFactory &factory, Quackle::LetterString &word, int index);
static Settings *m_self;
+ int m_lastGoodLexiconValue;
+ int m_lastGoodBoardValue;
};
#endif