QString LatexTables::getTableText(QDocumentCursor &cur){ int result=findNextToken(cur,QStringList(),false,true); if(result!=-2) return QString(); QString line=cur.line().text(); int i=line.indexOf("\\begin"); if(i>=0) cur.setColumnNumber(i); result=findNextToken(cur,QStringList(),true,false); if(result!=-2) return QString(); line=cur.line().text(); QRegExp rx("\\\\end\\{.*\\}"); i=rx.indexIn(line); if(i>=0) cur.setColumnNumber(i+rx.cap(0).length(),QDocumentCursor::KeepAnchor); QString res=cur.selectedText(); return res; }
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()); } }