def transUserClickedPixelPosToIndexPos(self,xyClickedPixelPosTuple): x,y = xyClickedPixelPosTuple x = max([x,0]) lineIndex = self.settings().getStartDisLineNumber() + int((y-CEGD.TextYOff)/self.settings().getFontMetrics().lineSpacing()) lineIndex = FUF.calcMidNumberByRange(0, lineIndex, self.__textDocument.getLineCount()-1) charWidthArray = self.__textDocument.getLineCharWidthArrayByIndex(lineIndex) startX = 0 - self.settings().getStartDisLetterXOff() xIndex = 0 while xIndex < len(charWidthArray): charWidth = charWidthArray[xIndex] startX += charWidth + CEGD.CharDistancePixel xIndex += 1 if startX >= x: break if startX > x: if ( startX - (charWidth + CEGD.CharDistancePixel)/2 > x ): startX -= (charWidth + CEGD.CharDistancePixel) xIndex -= 1 return RetuInfo.info( indexPos = ( xIndex,lineIndex ) , offset = x-startX )
def setSelectedCode(self, code): code = FUF.calcMidNumberByRange(0, code, 0xFFFF) if code != self.__selectedCode: self.__selectedCode = code self.selectedCodeChanged.emit(code)
def setStartDisCode(self, newStartDisCode): code = FUF.calcMidNumberByRange(0, newStartDisCode, 0xFFFF) code = (code // 16) * 16 if code != self.__startDisCode: self.__startDisCode = code self.startDisCodeChanged.emit(code)
def showLineNumberAsTop(self,lineNumber,update=True): suitedLineNumber = FUF.calcMidNumberByRange( 0,lineNumber,self.document().getLineCount()-1 ) self.settings().setStartDisLineNumber(suitedLineNumber,update)