def updateSampleFromPosition(self): samplePosStart = self.state.scanPosition samplePosEnd = self.state.scanPosition + self.preferences.searchScanMax cursor = self.textContent.textCursor() content = unicode(self.textContent.toPlainText()) contentSample = content[samplePosStart:samplePosEnd] if not contentSample or unicode.isspace(contentSample[0]): cursor.clearSelection() self.textContent.setTextCursor(cursor) return contentSampleFlat = contentSample.replace("\n", unicode()) definitionsMatched, lengthMatched = self.language().wordSearch( contentSampleFlat, self.preferences.searchResultMax, self.preferences.searchGroupByExp ) sentence = reader_util.findSentence(content, samplePosStart) self.state.definitions = reader_util.convertDefinitions(definitionsMatched, sentence) self.updateDefinitions() lengthSelect = 0 if lengthMatched: for c in contentSample: lengthSelect += 1 if c != "\n": lengthMatched -= 1 if lengthMatched <= 0: break cursor.setPosition(samplePosStart, QtGui.QTextCursor.MoveAnchor) cursor.setPosition(samplePosStart + lengthSelect, QtGui.QTextCursor.KeepAnchor) self.textContent.setTextCursor(cursor)
def updateSampleFromPosition(self): samplePosStart = self.state.scanPosition samplePosEnd = self.state.scanPosition + 20 #self.preferences['scanLength'] cursor = self.textCursor() content = unicode(self.toPlainText()) contentSample = content[samplePosStart:samplePosEnd] contentSampleFlat = contentSample.replace(u'\n', unicode()) if len(contentSampleFlat) == 0 or not japanese.util.isJapanese( contentSampleFlat[0]): cursor.clearSelection() self.setTextCursor(cursor) return lengthMatched = 0 if self.dockVocab.isVisible(): self.state.vocabDefs, lengthMatched = self.language.findTerm( contentSampleFlat) sentence = reader_util.findSentence(content, samplePosStart) for definition in self.state.vocabDefs: definition['sentence'] = sentence self.updateVocabDefs() if self.dockKanji.isVisible(): if lengthMatched == 0: self.state.kanjiDefs = self.language.findCharacters( contentSampleFlat[0]) if len(self.state.kanjiDefs) > 0: lengthMatched = 1 else: self.state.kanjiDefs = self.language.findCharacters( contentSampleFlat[:lengthMatched]) self.updateKanjiDefs() lengthSelect = 0 for c in contentSample: if lengthMatched <= 0: break lengthSelect += 1 if c != u'\n': lengthMatched -= 1 cursor.setPosition(samplePosStart, QtGui.QTextCursor.MoveAnchor) cursor.setPosition(samplePosStart + lengthSelect, QtGui.QTextCursor.KeepAnchor) self.setTextCursor(cursor)
def updateSampleFromPosition(self): samplePosStart = self.state.scanPosition samplePosEnd = self.state.scanPosition + self.preferences["scanLength"] cursor = self.textContent.textCursor() content = unicode(self.textContent.toPlainText()) contentSample = content[samplePosStart:samplePosEnd] contentSampleFlat = contentSample.replace(u"\n", unicode()) if len(contentSampleFlat) == 0 or not japanese.util.isJapanese(contentSampleFlat[0]): cursor.clearSelection() self.textContent.setTextCursor(cursor) return lengthMatched = 0 if self.dockVocab.isVisible(): self.state.vocabDefs, lengthMatched = self.language.findTerm(contentSampleFlat) sentence, translation = reader_util.findSentence(content, samplePosStart) for definition in self.state.vocabDefs: definition["sentence"] = sentence definition["translation"] = translation self.updateVocabDefs() if self.dockKanji.isVisible(): if lengthMatched == 0: self.state.kanjiDefs = self.language.findCharacters(contentSampleFlat[0]) if len(self.state.kanjiDefs) > 0: lengthMatched = 1 else: self.state.kanjiDefs = self.language.findCharacters(contentSampleFlat[:lengthMatched]) self.updateKanjiDefs() lengthSelect = 0 for c in contentSample: if lengthMatched <= 0: break lengthSelect += 1 if c != u"\n": lengthMatched -= 1 cursor.setPosition(samplePosStart, QtGui.QTextCursor.MoveAnchor) cursor.setPosition(samplePosStart + lengthSelect, QtGui.QTextCursor.KeepAnchor) self.textContent.setTextCursor(cursor)
def onActionCopySentence(self): content = unicode(self.textContent.toPlainText()) sentence = reader_util.findSentence(content, self.state.scanPosition) QtGui.QApplication.clipboard().setText(sentence)