[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Eliot-dev] eliot dic/dic_search.cpp qt/dic_tools_widget.cpp
From: |
eliot-dev |
Subject: |
[Eliot-dev] eliot dic/dic_search.cpp qt/dic_tools_widget.cpp |
Date: |
Thu, 30 Oct 2008 19:03:08 +0000 |
CVSROOT: /cvsroot/eliot
Module name: eliot
Changes by: Olivier Teulière <ipkiss> 08/10/30 19:03:08
Modified files:
dic : dic_search.cpp
qt : dic_tools_widget.cpp
Log message:
- dic_search.cpp: Do not add twice the same word in a 7+1 search (this
can happen when using jokers)
- dic_tools_widget.cpp: Allow up to 2 jokers in the 7+1 search
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/eliot/dic/dic_search.cpp?cvsroot=eliot&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/dic_tools_widget.cpp?cvsroot=eliot&r1=1.4&r2=1.5
Patches:
Index: dic/dic_search.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/dic/dic_search.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- dic/dic_search.cpp 31 Aug 2008 11:48:13 -0000 1.11
+++ dic/dic_search.cpp 30 Oct 2008 19:03:07 -0000 1.12
@@ -112,7 +112,10 @@
{
if (edgeptr->term)
{
-
(*params->results)[params->added_char].push_back(params->search_wordtst);
+ // Add the solution
+ vector<wstring> &sols =
(*params->results)[params->added_char];
+ if (sols.empty() || sols.back() !=
params->search_wordtst)
+ sols.push_back(params->search_wordtst);
}
}
else
@@ -132,7 +135,10 @@
{
if (edgeptr->term)
{
-
(*params->results)[params->added_char].push_back(params->search_wordtst);
+ // Add the solution
+ vector<wstring> &sols =
(*params->results)[params->added_char];
+ if (sols.empty() || sols.back() !=
params->search_wordtst)
+ sols.push_back(params->search_wordtst);
}
}
else
Index: qt/dic_tools_widget.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/dic_tools_widget.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- qt/dic_tools_widget.cpp 27 Sep 2008 20:38:34 -0000 1.4
+++ qt/dic_tools_widget.cpp 30 Oct 2008 19:03:08 -0000 1.5
@@ -43,11 +43,13 @@
{
public:
explicit DicRackValidator(QObject *parent,
- const Dictionary *iDic);
+ const Dictionary *iDic,
+ bool acceptJoker = false);
virtual State validate(QString &input, int &pos) const;
private:
const Dictionary *m_dic;
+ const bool m_acceptJoker;
};
@@ -114,7 +116,7 @@
lineEditRegexp->clear();
// Create new validators
lineEditCheck->setValidator(new DicRackValidator(this, m_dic));
- lineEditPlus1->setValidator(new DicRackValidator(this, m_dic));
+ lineEditPlus1->setValidator(new DicRackValidator(this, m_dic, true));
lineEditRegexp->setValidator(new RegexpValidator(this, m_dic));
// Refresh
refreshCheck();
@@ -177,7 +179,7 @@
if (rack->text() != "")
{
map<wchar_t, vector<wstring> > wordList;
- m_dic->search7pl1(qtw(rack->text()), wordList, false);
+ m_dic->search7pl1(qtw(rack->text()), wordList, true);
int rowNum = 0;
map<wchar_t, vector<wstring> >::const_iterator it;
@@ -311,8 +313,9 @@
DicRackValidator::DicRackValidator(QObject *parent,
- const Dictionary *iDic)
- : QValidator(parent), m_dic(iDic)
+ const Dictionary *iDic,
+ bool acceptJoker)
+ : QValidator(parent), m_dic(iDic), m_acceptJoker(acceptJoker)
{
}
@@ -329,7 +332,12 @@
// The string is invalid if it contains characters not present
// in the dictionary or if it contains a '?'
- if (!m_dic->validateLetters(qtw(input)) || input.contains('?'))
+ if (!m_dic->validateLetters(qtw(input)))
+ return Invalid;
+ if (!m_acceptJoker && input.contains('?'))
+ return Invalid;
+ // Do not accept more than 2 jokers
+ if (input.count('?') > 2)
return Invalid;
return Acceptable;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Eliot-dev] eliot dic/dic_search.cpp qt/dic_tools_widget.cpp,
eliot-dev <=