home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- __license__ = 'GPL v3'
- __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
- import re
- from PyQt4.QtGui import QDialog
- from calibre.gui2.dialogs.search_ui import Ui_Dialog
- from calibre.library.caches import CONTAINS_MATCH, EQUALS_MATCH
-
- class SearchDialog(QDialog, Ui_Dialog):
-
- def __init__(self, *args):
- QDialog.__init__(self, *args)
- self.setupUi(self)
- self.mc = ''
-
-
- def tokens(self, raw):
- phrases = re.findall('\\s*".*?"\\s*', raw)
- for f in phrases:
- raw = raw.replace(f, ' ')
-
- phrases = [ t.strip('" ') for t in phrases ]
- return [ '"' + self.mc + t + '"' for t in [] + [ r.strip() for r in raw.split() ] ]
-
-
- def search_string(self):
- mk = self.matchkind.currentIndex()
- if mk == CONTAINS_MATCH:
- self.mc = ''
- elif mk == EQUALS_MATCH:
- self.mc = '='
- else:
- self.mc = '~'
- (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)
- any = ' or '.join(any)
- none = ' and not '.join(none)
- ans = ''
- if phrase:
- ans += '"%s"' % phrase
-
- if all:
- None += ans if ans else '' + all
-
- if none:
- None += ans if ans else 'not ' + none
-
- if any:
- None += ans if ans else '' + any
-
- return ans
-
-
- def token(self):
- txt = unicode(self.text.text()).strip()
- if txt:
- if self.negate.isChecked():
- txt = '!' + txt
-
- tok = self.FIELDS[unicode(self.field.currentText())] + txt
- if re.search('\\s', tok):
- tok = '"%s"' % tok
-
- return tok
-
-
-