void qceEqual(const QDocumentCursor& c, const QDocumentCursor& expected, const QString& message){ QEQUAL2(c.hasSelection(),expected.hasSelection(), " got-total: "+cur2str(c)+" expected-total: "+cur2str(expected)+" more: "+message); QEQUAL2(c.anchorLineNumber(),expected.anchorLineNumber(), " got-total: "+cur2str(c)+" expected-total: "+cur2str(expected)+" more: "+message); QEQUAL2(c.anchorColumnNumber(),expected.anchorColumnNumber(), " got-total: "+cur2str(c)+" expected-total: "+cur2str(expected)+" more: "+message); QEQUAL2(c.lineNumber(),expected.lineNumber(), " got-total: "+cur2str(c)+" expected-total: "+cur2str(expected)+" more: "+message); QEQUAL2(c.columnNumber(),expected.columnNumber(), " got-total: "+cur2str(c)+" expected-total: "+cur2str(expected)+" more: "+message); }
QString cur2str(const QDocumentCursor &c){ if (c.hasSelection()) return QString("%1|%2|%3|%4").arg(c.anchorLineNumber()).arg(c.anchorColumnNumber()).arg(c.lineNumber()).arg(c.columnNumber()); return QString("%1|%2").arg(c.lineNumber()).arg(c.columnNumber()); }
void QSearchReplacePanel::on_leFind_textEdited(const QString& text) { bool hadSearch = m_search; QDocumentCursor cur = editor()->cursor(); if ( m_search ) { cur = m_search->cursor(); m_search->setSearchText(text); if ( cbCursor->isChecked() ) { QDocumentCursor c = cur; c.setColumnNumber(qMin(c.anchorColumnNumber(), c.columnNumber())); m_search->setCursor(c); } } else { // TODO : make incremental search optional init(); } if ( text.isEmpty() ) { leFind->setStyleSheet(QString()); return; } m_search->setOption(QDocumentSearch::Silent, true); find(0); m_search->setOption(QDocumentSearch::Silent, false); if ( m_search->cursor().isNull() ) { leFind->setStyleSheet("QLineEdit { background: red; color : white; }"); if ( hadSearch ) { m_search->setCursor(cur); // figure out whether other matches are availables QDocumentSearch::Options opts = m_search->options(); opts &= ~QDocumentSearch::HighlightAll; opts |= QDocumentSearch::Silent; QDocumentSearch temp(editor(), text, opts); temp.setOrigin(QDocumentCursor()); temp.setScope(m_search->scope()); temp.next(true); if ( temp.cursor().isValid() ) { // other match found from doc start leFind->setStyleSheet("QLineEdit { background: yellow; color : black; }"); m_search->setCursor(cur.document()->cursor(0,0)); find(0); } } } else { leFind->setStyleSheet(QString()); editor()->setCursor(m_search->cursor()); } }