void ScCodeEditor::gotoPreviousRegion() { QTextCursor cursor = textCursor(); int cursorPosition = cursor.position(); BracketPair prevBracketPair; BracketPair bracketPair; TokenIterator it = TokenIterator::rightOf( textDocument()->begin(), 0 ); while(it.isValid()) { nextBracketPair(it, bracketPair); if ( !bracketPair.second.isValid() || bracketPair.second.position() >= cursorPosition - 1 ) { break; } if (bracketPairDefinesRegion(bracketPair)) { prevBracketPair = bracketPair; } it = bracketPair.second; } if ( prevBracketPair.first.isValid() && prevBracketPair.second.isValid() ) { setTextCursor( cursorAt(prevBracketPair.second, 1) ); return; } cursor.movePosition(QTextCursor::Start); setTextCursor(cursor); }
void ActiveGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent* event) { if (m_active) { QPoint pointTo = (event->pos() - QPointF(0.5, 0.5)).toPoint(); QPointF pointToF = event->pos(); m_measureLine->setLine(m_pointFromF.x(), m_pointFromF.y(), pointToF.x(), pointToF.y()); m_measureLine->show(); emit measure(m_pointFrom, pointTo); emit cursorAt(pointTo, event->modifiers()); } QGraphicsItemGroup::mouseMoveEvent(event); }
void ScCodeEditor::gotoNextBlock() { QTextCursor cursor = textCursor(); TokenIterator tokenIt = TokenIterator::rightOf( cursor.block(), cursor.positionInBlock() ); if (tokenIt.type() == Token::OpeningBracket && tokenIt.block() == cursor.block() && tokenIt->positionInBlock == cursor.positionInBlock()) ++tokenIt; tokenIt = nextClosingBracket( tokenIt ); if (tokenIt.isValid()) setTextCursor( cursorAt(tokenIt, 1) ); else { cursor.movePosition( QTextCursor::End ); setTextCursor( cursor ); } }
void ScCodeEditor::gotoPreviousBlock() { QTextCursor cursor = textCursor(); TokenIterator tokenIt = TokenIterator::leftOf(cursor.block(), cursor.positionInBlock()); if (tokenIt.type() == Token::ClosingBracket && tokenIt.block() == cursor.block() && tokenIt->positionInBlock == cursor.positionInBlock() - 1) --tokenIt; tokenIt = previousOpeningBracket( tokenIt ); if (tokenIt.isValid()) setTextCursor( cursorAt(tokenIt) ); else { cursor.movePosition( QTextCursor::Start ); setTextCursor( cursor ); } }
void ScCodeEditor::gotoNextRegion() { QTextCursor cursor = textCursor(); int cursorPosition = cursor.position(); BracketPair bracketPair; TokenIterator it = TokenIterator::rightOf( textDocument()->begin(), 0 ); while (it.isValid()) { nextBracketPair(it, bracketPair); if ( bracketPair.first.isValid() && bracketPair.second.isValid() && bracketPair.first.position() > cursorPosition && bracketPairDefinesRegion(bracketPair)) { setTextCursor( cursorAt(bracketPair.first) ); return; } it = bracketPair.second; } cursor.movePosition(QTextCursor::End); setTextCursor(cursor); }
void ActiveGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent* event) { emit cursorAt((event->pos() - QPointF(0.5, 0.5)).toPoint(), event->modifiers()); QGraphicsItemGroup::hoverMoveEvent(event); }