# Path: spellcheck_highlighter.py
# class SpellCheckHighlighter(QtGui.QSyntaxHighlighter):
#   def __init__(self, parent = None):
#     super(SpellCheckHighlighter, self).__init__(parent)
#     
#     self.set_language("en_US")
#     
#     self.format = QTextCharFormat()
#     self.format.setUnderlineColor(QColor(255, 0, 0))
#     self.format.setUnderlineStyle(QTextCharFormat.SpellCheckUnderline)
#     
#     self.errors = []
#   
#   def set_language(self, lang):
#     dict = enchant.DictWithPWL(lang, "data/dict/enchant.txt")
#     self.checker = SpellChecker(dict, chunkers = (HTMLChunker,))
#   
#   def get_language(self):
#     return self.checker.dict.tag
#   
#   def highlightBlock(self, text):
#     
#     # If there is no previous state, then it's -1, which makes the first line 0.
#     # And every line after that increases as expected.
#     line = self.previousBlockState() + 1
#     self.setCurrentBlockState(line)
#     
#     # Make sure our error list is long enough to hold this line.
#     for i in range(len(self.errors), line + 1):
#       self.errors.append([])
#     
#     self.errors[line] = []
#     self.checker.set_text(common.qt_to_unicode(text))
#     
#     for err in self.checker:
#       self.setFormat(err.wordpos, len(err.word), self.format)
#       self.errors[line].append((err.word, err.wordpos))
#   
#   def add(self, word):
#     self.checker.add(word)
#     self.rehighlight()
#   
#   def ignore(self, word):
#     self.checker.ignore_always(word)
#     self.rehighlight()


from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QTextCursor
from PyQt4.QtCore import QSignalMapper
from spellcheck_highlighter import SpellCheckHighlighter
  import cPickle as pickle
  import pickle
import common
          if i == MAX_SUGGESTIONS:
            break
          
          actions.append(QtGui.QAction(suggestion, None))
          
          # We can only send strings with the signal mapper, so pickle our data.
          data = pickle.dumps((word[0], line, word[1], suggestion))
          data = QtCore.QString.fromAscii(data)
          
          self.connect(actions[-1], QtCore.SIGNAL("triggered()"), suggestion_mapper, QtCore.SLOT("map()"))
          suggestion_mapper.setMapping(actions[-1], data)
        
        self.connect(suggestion_mapper, QtCore.SIGNAL("mapped(QString)"), self.__replace)
        menu.addActions(actions)
      else:
        action = QtGui.QAction("(No spelling suggestions)", None)
        action.setDisabled(True)
        menu.addAction(action)
        
      menu.addSeparator()
      
      add_mapper    = QSignalMapper(self)
      ignore_mapper = QSignalMapper(self)
      add_action = QtGui.QAction("Add to Dictionary", None)
      ignore_action = QtGui.QAction("Ignore All", None)
      
      self.connect(add_action, QtCore.SIGNAL("triggered()"), add_mapper, QtCore.SLOT("map()"))
      add_mapper.setMapping(add_action, word[0])
      self.connect(add_mapper, QtCore.SIGNAL("mapped(QString)"), self.__add)
      

# Path: spellcheck_highlighter.py
# class SpellCheckHighlighter(QtGui.QSyntaxHighlighter):
#   def __init__(self, parent = None):
#     super(SpellCheckHighlighter, self).__init__(parent)
#     
#     self.set_language("en_US")
#     
#     self.format = QTextCharFormat()
#     self.format.setUnderlineColor(QColor(255, 0, 0))
#     self.format.setUnderlineStyle(QTextCharFormat.SpellCheckUnderline)
#     
#     self.errors = []
#   
#   def set_language(self, lang):
#     dict = enchant.DictWithPWL(lang, "data/dict/enchant.txt")
#     self.checker = SpellChecker(dict, chunkers = (HTMLChunker,))
#   
#   def get_language(self):
#     return self.checker.dict.tag
#   
#   def highlightBlock(self, text):
#     
#     # If there is no previous state, then it's -1, which makes the first line 0.
#     # And every line after that increases as expected.
#     line = self.previousBlockState() + 1
#     self.setCurrentBlockState(line)
#     
#     # Make sure our error list is long enough to hold this line.
#     for i in range(len(self.errors), line + 1):
#       self.errors.append([])
#     
#     self.errors[line] = []
#     self.checker.set_text(common.qt_to_unicode(text))
#     
#     for err in self.checker:
#       self.setFormat(err.wordpos, len(err.word), self.format)
#       self.errors[line].append((err.word, err.wordpos))
#   
#   def add(self, word):
#     self.checker.add(word)
#     self.rehighlight()
#   
#   def ignore(self, word):
#     self.checker.ignore_always(word)
#     self.rehighlight()


# Path: spellcheckedit.py
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QTextCursor
from PyQt4.QtCore import QSignalMapper
from spellcheck_highlighter import SpellCheckHighlighter
  import cPickle as pickle
  import pickle
import common

          if i == MAX_SUGGESTIONS:
            break
          
          actions.append(QtGui.QAction(suggestion, None))
          
          # We can only send strings with the signal mapper, so pickle our data.
          data = pickle.dumps((word[0], line, word[1], suggestion))
          data = QtCore.QString.fromAscii(data)
          
          self.connect(actions[-1], QtCore.SIGNAL("triggered()"), suggestion_mapper, QtCore.SLOT("map()"))
          suggestion_mapper.setMapping(actions[-1], data)
        
        self.connect(suggestion_mapper, QtCore.SIGNAL("mapped(QString)"), self.__replace)
        menu.addActions(actions)
      else:
        action = QtGui.QAction("(No spelling suggestions)", None)
        action.setDisabled(True)
        menu.addAction(action)
        
      menu.addSeparator()
      
      add_mapper    = QSignalMapper(self)
      ignore_mapper = QSignalMapper(self)
      add_action = QtGui.QAction("Add to Dictionary", None)
      ignore_action = QtGui.QAction("Ignore All", None)
      
      self.connect(add_action, QtCore.SIGNAL("triggered()"), add_mapper, QtCore.SLOT("map()"))
      add_mapper.setMapping(add_action, word[0])
      self.connect(add_mapper, QtCore.SIGNAL("mapped(QString)"), self.__add)
      

      self.connect(ignore_action, QtCore.SIGNAL("triggered()"), ignore_mapper, QtCore.SLOT("map()"))