eliot-dev
[Top][All Lists]
Advanced

[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;
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]