def __onLeftMouseDoubleClicked(self,clickedPixelPos): retuDict = self.transUserClickedPixelPosToIndexPos( clickedPixelPos ) xPos,yPos = retuDict['indexPos'] offset = retuDict['offset'] lineText = self.document().getLineText(yPos) if len(lineText) == 0: self.selectedTextManager().clearSelectedText() return prevClickedPixelPos = self.settings().getUserDataByKey('leftMouseDoubleClickedPos') if prevClickedPixelPos == clickedPixelPos: self.settings().setUserDataByKey('leftMouseDoubleClickedPos',None) self.selectedTextManager().setSelectTextIndexPos( (0,yPos),(len(lineText),yPos) ) self.cursor().setGlobalCursorPos( (len(lineText),yPos) ) else: self.settings().setUserDataByKey('leftMouseDoubleClickedPos',clickedPixelPos) if xPos == 0: length = TextDocument.skipSpaceAndWordByRight(lineText, xPos)['offset'] elif xPos == len(lineText): length = TextDocument.skipSpaceAndWordByLeft(lineText, xPos)['offset'] xPos -= length else: toLeftRetuDict = TextDocument.skipSpaceAndWordByLeft(lineText, xPos) toRightRetuDict = TextDocument.skipSpaceAndWordByRight(lineText, xPos) if toLeftRetuDict['searcher'] == toRightRetuDict['searcher'] and toLeftRetuDict['searcher'] != None: length = toLeftRetuDict['offset'] + toRightRetuDict['offset'] xPos -= toLeftRetuDict['offset'] else: if offset >= 0: length = toRightRetuDict['offset'] else: length = toLeftRetuDict['offset'] xPos -= length self.selectedTextManager().setSelectTextIndexPos( (xPos,yPos),(xPos+length,yPos) ) self.cursor().setGlobalCursorPos( (xPos+length,yPos) )
def __init__(self,font=QtGui.QFont('Consolas',11) ,parent=None): TextDocument.__init__(self, font, parent) self.__descIndexPosArr = [] self.__strIndexPosArr = [] self.__invalidPixmapAndCharWidthArrIndexs = [] self.totalLevelTextChangedSignal.connect(self.afterUserOperate) self.afterGeneratePixmapAndCharWidthArrSignal.connect(self.afterGeneratePixmapAndCharWidthArr)
def isLinePixmapAndCharWidthArrValid(self,index): retV = TextDocument.isLinePixmapAndCharWidthArrValid(self, index) if retV == True: return self.__invalidPixmapAndCharWidthArrIndexs.count(index) == 0 else: return retV