IGN:Fix minor bug in advanced search dialog if only a none term is specified

This commit is contained in:
Kovid Goyal 2009-03-28 18:08:30 -07:00
parent d6903d4def
commit b1357eae0c

View File

@ -6,13 +6,13 @@ from PyQt4.QtGui import QDialog
from calibre.gui2.dialogs.search_ui import Ui_Dialog
from calibre.gui2 import qstring_to_unicode
class SearchDialog(QDialog, Ui_Dialog):
def __init__(self, *args):
QDialog.__init__(self, *args)
self.setupUi(self)
def tokens(self, raw):
phrases = re.findall(r'\s+".*?"\s+', raw)
for f in phrases:
@ -20,7 +20,8 @@ class SearchDialog(QDialog, Ui_Dialog):
return [t.strip() for t in phrases + raw.split()]
def search_string(self):
all, any, phrase, none = map(lambda x: unicode(x.text()), (self.all, self.any, self.phrase, self.none))
all, any, phrase, none = map(lambda x: unicode(x.text()),
(self.all, self.any, self.phrase, self.none))
all, any, none = map(self.tokens, (all, any, none))
phrase = phrase.strip()
all = ' and '.join(all)
@ -32,11 +33,11 @@ class SearchDialog(QDialog, Ui_Dialog):
if all:
ans += (' and ' if ans else '') + all
if none:
ans += (' and not ' if ans else '') + none
ans += (' and not ' if ans else 'not') + none
if any:
ans += (' or ' if ans else '') + any
return ans
def token(self):
txt = qstring_to_unicode(self.text.text()).strip()
if txt:
@ -46,4 +47,4 @@ class SearchDialog(QDialog, Ui_Dialog):
if re.search(r'\s', tok):
tok = '"%s"'%tok
return tok