def __onDeleteKey(self,event): if self.selectedTextManager().getSelectedTextIndexPos() != None: self.deleteSelectText(True) return curCursorIndexPos = self.cursor().getCursorIndexPos() if FUF.hasModifier(event.modifiers()) == False: if event.key() == QtCore.Qt.Key_Delete: newCursorIndexPos = self.document().moveIndexPosRight(curCursorIndexPos) else: newCursorIndexPos = self.document().moveIndexPosLeft(curCursorIndexPos) elif FUF.onlyCtrlModifier(event.modifiers()): if event.key() == QtCore.Qt.Key_Delete: newCursorIndexPos = self.document().moveIndexPosRightByWord(curCursorIndexPos) else: newCursorIndexPos = self.document().moveIndexPosLeftByWord(curCursorIndexPos) else: return distance = self.document().calcIndexPosDistance(curCursorIndexPos, newCursorIndexPos, False) if distance > 0: self.cursor().setGlobalCursorPos(curCursorIndexPos) self.document().deleteText(curCursorIndexPos,distance ) elif distance < 0: self.cursor().setGlobalCursorPos(newCursorIndexPos) self.document().deleteText(newCursorIndexPos,-distance ) self.update()
def __onDirectionKey(self,event): key = event.key() modifiers = event.modifiers() oldCursorIndexPos = self.cursor().getCursorIndexPos() if ( FUF.hasModifier(modifiers) == False ) or ( FUF.hasCtrlModifier(modifiers) == False ): dictMap = { str(QtCore.Qt.Key_Left) :self.document().moveIndexPosLeft , \ str(QtCore.Qt.Key_Right):self.document().moveIndexPosRight , \ str(QtCore.Qt.Key_Up) :self.document().moveIndexPosUp , \ str(QtCore.Qt.Key_Down) :self.document().moveIndexPosDown } newCursorIndexPos = dictMap[str(key)](oldCursorIndexPos) elif FUF.hasCtrlModifier(modifiers): if key == QtCore.Qt.Key_Up: self.showLineNumberAsTop(self.settings().getStartDisLineNumber()-1) return elif key == QtCore.Qt.Key_Down: self.showLineNumberAsTop(self.settings().getStartDisLineNumber()+1) return if key == QtCore.Qt.Key_Left: newCursorIndexPos = self.document().moveIndexPosLeftByWord(oldCursorIndexPos) elif key == QtCore.Qt.Key_Right: newCursorIndexPos = self.document().moveIndexPosRightByWord(oldCursorIndexPos) self.cursor().setGlobalCursorPos(newCursorIndexPos) if FUF.hasShiftModifier(event.modifiers()) == True: self.selectedTextManager().addSelectTextIndexPos(oldCursorIndexPos, newCursorIndexPos) else: self.selectedTextManager().clearSelectedText() self.update()
def __onDisplayLetterKey(self,event): if (FUF.hasModifier(event.modifiers()) == False) or (FUF.onlyShiftModifier(event.modifiers()) == True): self.deleteSelectText(False) indexPos = self.document().insertText(self.cursor().getCursorIndexPos(), event.text()) self.cursor().setGlobalCursorPos(indexPos) self.update() elif FUF.onlyCtrlModifier(event.modifiers()): self.onQuickCtrlKeySignal.emit(event.key()) elif FUF.onlyAltModifier(event.modifiers()): self.onQuickAltKeySignal.emit(event.key())
def __onHomeEndKey(self,event): if FUF.hasModifier(event.modifiers()) == False: curIndexPos = self.cursor().getCursorIndexPos() if event.key() == QtCore.Qt.Key_Home: newIndexPos = ( 0,curIndexPos[1] ) else: newIndexPos = ( len(self.document().getLineText(curIndexPos[1])),curIndexPos[1] ) self.cursor().setGlobalCursorPos( newIndexPos ) else: if FUF.onlyCtrlModifier(event.modifiers()): if event.key() == QtCore.Qt.Key_Home: lineIndex = 0 newIndexPos = ( 0,0 ) else: lineIndex = self.calcMaxStartDisLineNumber() lineCount = self.document().getLineCount()-1 newIndexPos = ( len(self.document().getLineText(lineCount)),lineCount ) self.cursor().setGlobalCursorPos( newIndexPos ) self.showLineNumberAsTop(lineIndex)
def __onPageKey(self,event): if FUF.hasModifier(event.modifiers()) == False: if event.key() == QtCore.Qt.Key_PageUp: newLineNumber = max([ self.settings().getStartDisLineNumber()-self.calcDisLineNumber(),0 ]) elif event.key() == QtCore.Qt.Key_PageDown: newLineNumber = min([ self.settings().getStartDisLineNumber()+self.calcDisLineNumber(),self.document().getLineCount()-1 ]) else: if FUF.onlyCtrlModifier(event.modifiers()): if event.key() == QtCore.Qt.Key_PageUp: newLineNumber = 0 elif event.key() == QtCore.Qt.Key_PageDown: newLineNumber = self.calcMaxStartDisLineNumber() else: return curIndexPos = self.cursor().getCursorIndexPos() newIndexPos = self.document().formatIndexPos( (curIndexPos[0],curIndexPos[1] - (self.settings().getStartDisLineNumber() - newLineNumber)) ) self.showLineNumberAsTop( newLineNumber ) self.cursor().setGlobalCursorPos( newIndexPos )