void OpenEditorsModel::emitDataChanged(IEditor *editor) { int idx = findEditor(editor); if (idx < 0) return; QModelIndex mindex = index(idx, 0); emit dataChanged(mindex, mindex); }
void OpenEditorsModel::removeEditor(IEditor *editor) { m_duplicateEditors.removeAll(editor); int idx = findEditor(editor); if (idx < 0) return; beginRemoveRows(QModelIndex(), idx, idx); m_editors.removeAt(idx); endRemoveRows(); disconnect(editor, SIGNAL(changed()), this, SLOT(itemChanged())); }
void OpenEditorsModel::makeOriginal(IEditor *duplicate) { Q_ASSERT(duplicate && isDuplicate(duplicate)); IEditor *original = originalForDuplicate(duplicate); Q_ASSERT(original); int i = findEditor(original); m_editors[i].editor = duplicate; m_duplicateEditors.removeOne(duplicate); m_duplicateEditors.append(original); disconnect(original, SIGNAL(changed()), this, SLOT(itemChanged())); connect(duplicate, SIGNAL(changed()), this, SLOT(itemChanged())); }
void FindEditor::findHelper(FindOption *opt) { bool bFocus = m_findEdit->hasFocus(); LiteApi::IEditor *editor = m_liteApp->editorManager()->currentEditor(); if (!editor) { return; } LiteApi::ITextEditor *textEditor = LiteApi::getTextEditor(editor); QTextCursor find; if (textEditor) { QPlainTextEdit *ed = LiteApi::getPlainTextEdit(editor); if (ed) { find = findEditor(ed->document(),ed->textCursor(),opt); if (!find.isNull()) { ed->setTextCursor(find); } } } else { QTextBrowser *ed = LiteApi::findExtensionObject<QTextBrowser*>(editor,"LiteApi.QTextBrowser"); if (ed) { find = findEditor(ed->document(),ed->textCursor(),opt); if (!find.isNull()) { ed->setTextCursor(find); } } } if (find.isNull()) { m_status->setText(tr("Not find")); } else { m_status->setText(QString("Ln:%1 Col:%2"). arg(find.blockNumber()+1). arg(find.columnNumber()+1)); } if (bFocus) { m_findEdit->setFocus(); } else if (textEditor) { textEditor->onActive(); } }
void FindEditor::replaceHelper(LiteApi::ITextEditor *editor, FindOption *opt, int replaceCount) { bool bFocus = m_replaceEdit->hasFocus(); QPlainTextEdit *ed = LiteApi::getPlainTextEdit(editor); if (!ed) { return; } QTextCursor find; QTextCursor cursor = ed->textCursor(); int line = cursor.blockNumber(); int col = cursor.columnNumber(); Qt::CaseSensitivity cs = Qt::CaseInsensitive; if (opt->matchCase) { cs = Qt::CaseSensitive; } if ( cursor.hasSelection() ) { QString text = cursor.selectedText(); if (opt->useRegexp) { if (text.indexOf(QRegExp(opt->findText,cs),0) != -1) { find = cursor; } } else { if (text.indexOf(opt->findText,0,cs) != -1) { find = cursor; } } } int number = 0; bool wrap = opt->wrapAround; do { if (!find.isNull()) { number++; find.beginEditBlock(); QString text = find.selectedText(); if (opt->useRegexp) { text.replace(QRegExp(opt->findText,cs),opt->replaceText); } else { text.replace(opt->findText,opt->replaceText); } find.removeSelectedText(); find.insertText(text); find.endEditBlock(); ed->setTextCursor(find); } cursor = ed->textCursor(); find = findEditor(ed->document(),cursor,opt,false); if (find.isNull() && wrap) { wrap = false; find = findEditor(ed->document(),cursor,opt,true); } if (opt->wrapAround && !wrap) { if (find.blockNumber() > line || (find.blockNumber() >= line && find.columnNumber() > col) ) { break; } } if (replaceCount != -1 && number >= replaceCount) { if (!find.isNull()) { ed->setTextCursor(find); m_status->setText(QString("Ln:%1 Col:%2"). arg(find.blockNumber()+1). arg(find.columnNumber()+1)); } else { m_status->setText(tr("Not find")); } break; } } while(!find.isNull()); if (replaceCount == -1) { m_status->setText(QString("Replace:%1").arg(number)); } if (bFocus) { m_replaceEdit->setFocus(); } else if (editor) { editor->onActive(); } }