📄 editor.cpp
字号:
m_checksum = check; } m_timerCheckLastModified.start( 5000 ); return ret;}//bool Editor::close(){ bool ret = m_textEdit->close( m_filename ); if ( ret ) clearAllBookmarks(); return ret;}//void Editor::setSyntaxHighlight(bool activate){ if ( activate && !QString(":c:cpp:cc:h:").contains( ":"+m_filename.section(".", -1, -1).toLower()+":" ) ) return; m_textEdit->setSyntaxHighlight(activate);}//bool Editor::save(){ return m_textEdit->save( m_filename, m_lastModified);}//void Editor::gotoLine( int line, bool moveTop ){ m_textEdit->gotoLine( line, moveTop );}//void Editor::slotFindPrevious(){ m_backward = true; slotFindWidget_textChanged(uiFind.editFind->text(), true);}//void Editor::slotFindNext(){ m_backward = false; slotFindWidget_textChanged(uiFind.editFind->text(), true);}//void Editor::find(){ autoHideTimer->stop(); m_findWidget->show(); uiFind.editFind->setFocus(Qt::ShortcutFocusReason); if ( m_textEdit->textCursor().selectedText().length() ) uiFind.editFind->setText( m_textEdit->textCursor().selectedText() ); else uiFind.editFind->setText( m_textEdit->wordUnderCursor() ); uiFind.editFind->selectAll(); autoHideTimer->start();}//return current selected text or word under cursorQString Editor::selection(){ if ( m_textEdit->textCursor().selectedText().length() ) return ( m_textEdit->textCursor().selectedText() ); else return ( m_textEdit->wordUnderCursor() );}//void Editor::setFocus(){ m_findWidget->hide(); m_textEdit->setFocus(Qt::OtherFocusReason);}//void Editor::findContinue(){ //slotFindWidget_textChanged(uiFind.editFind->text(), true); slotFindNext();}//void Editor::findPrevious(){ slotFindPrevious();}//void Editor::slotFindWidget_textChanged(QString text, bool fromButton){ int options = 0; if ( m_backward ) options |= QTextDocument::FindBackward; if ( uiFind.checkWholeWords->isChecked() ) options |= QTextDocument::FindWholeWords; if ( uiFind.checkCase->isChecked() ) options |= QTextDocument::FindCaseSensitively; m_textEdit->slotFind(uiFind, text, (QTextDocument::FindFlags)options,fromButton); autoHideTimer->start();}//QStringList Editor::classes(){ QStringList liste = m_classesMethodsList.keys(); liste.sort(); return liste;}//QStringList Editor::methodes(QString classe){ QStringList liste; foreach(QString line, m_classesMethodsList.value( classe ) ) liste += QStringList(line.section("::", 1, 1)+"::"+ line.section("::", 0, 0)); liste.sort(); QStringList liste2; foreach(QString ligne2, liste) liste2 += QStringList(ligne2.section("::", 1, 1)+"::"+ ligne2.section("::", 0, 0)); return liste2;}//void Editor::slotClassesMethodsList(){ if ( !m_comboClasses ) return; int width = 0; const QList<ParsedItem> *list; list = m_mainimpl->treeClassesItems(); if ( list->isEmpty() ) return; m_comboClasses->clear(); m_classesMethodsList.clear(); for (int i = 0; i < list->size(); ++i) { ParsedItem parsedItem = list->at( i ); if ( ( parsedItem.kind == "p" || parsedItem.kind == "f" ) && parsedItem.implementation.section("|", 0, 0) == filename() ) { QString numLine = parsedItem.implementation.section("|", -1, -1); QString returnName = parsedItem.ex_cmd; if ( returnName.left( returnName.indexOf("::") ).indexOf("\t") != -1 ) returnName = returnName.left( returnName.indexOf("::") ).section("\t", 0, 0); else if ( returnName.left( returnName.indexOf("::") ).indexOf(" ") != -1 ) returnName = returnName.left( returnName.indexOf("::") ).section(" ", 0, 0); else returnName = ""; QString add = returnName+" " +parsedItem.classname+"::"+parsedItem.name+parsedItem.signature+QChar(255)+numLine; QStringList methodes = m_classesMethodsList.value(parsedItem.classname); methodes << add; if ( !parsedItem.classname.simplified().isEmpty() ) { width = qMax(width, fontMetrics().width( parsedItem.classname ) ); } m_classesMethodsList[parsedItem.classname] = methodes; } } m_comboClasses->setGeometry(m_comboClasses->x(), m_comboClasses->y(), qMin(350, width+30), m_comboClasses->height()); slotComboClasses(); return;}//bool Editor::inQuotations(int position, QString text){ int debutQuote = 0, finQuote; bool realBegin = false; do { do { debutQuote = text.indexOf("\"", debutQuote); if ( debutQuote > 0 && (text.at(debutQuote-1) == '\\' || text.at(debutQuote-1) == '\'') ) { debutQuote++; realBegin = false; } else { realBegin = true; } } while (!realBegin); finQuote = -1; if ( debutQuote != -1 ) { finQuote = debutQuote+1; bool realEnd = false; do { finQuote = text.indexOf("\"", finQuote); if ( finQuote > 0 && text.at(finQuote-1) == '\\' ) { finQuote++; realEnd = false; } else { realEnd = true; } } while (!realEnd); } if ( debutQuote!=-1 && finQuote!=-1 ) { if ( position > debutQuote && position < finQuote ) { return true; } } debutQuote = finQuote+1; } while ( debutQuote!=-1 && finQuote!=-1 ); // Idem with "'" debutQuote = 0, finQuote=0; realBegin = false; do { do { debutQuote = text.indexOf('\'', debutQuote); if ( debutQuote > 0 && (text.at(debutQuote-1) == '\\' || text.at(debutQuote-1) == '\"') ) { debutQuote++; realBegin = false; } else { realBegin = true; } } while (!realBegin); finQuote = -1; if ( debutQuote != -1 ) { finQuote = debutQuote+1; bool realEnd = false; do { finQuote = text.indexOf('\'', finQuote); if ( finQuote > 0 && (text.at(finQuote-1) == '\\' || text.at(finQuote-1) == '\"') ) { finQuote++; realEnd = false; } else { realEnd = true; } } while (!realEnd); } if ( debutQuote!=-1 && finQuote!=-1 ) { if ( position > debutQuote && position < finQuote ) { return true; } } debutQuote = finQuote+1; } while ( debutQuote!=-1 && finQuote!=-1 ); return false;}//void Editor::toggleBookmark(int line){ QTextCursor save = m_textEdit->textCursor(); int scroll = verticalScrollBar(); gotoLine( line, false ); m_textEdit->textCursor().movePosition(QTextCursor::StartOfLine, QTextCursor::MoveAnchor); m_textEdit->textCursor().movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); QString s = m_textEdit->textCursor().block().text().simplified(); // QTextCursor cursor = m_textEdit->textCursor(); bool activate; BlockUserData *blockUserData = (BlockUserData*)cursor.block().userData(); if ( !blockUserData ) { blockUserData = new BlockUserData(); blockUserData->breakpoint = false; blockUserData->bookmark = false; blockUserData->block = cursor.block(); } blockUserData->bookmark = !blockUserData->bookmark; cursor.block().setUserData( blockUserData ); activate = blockUserData->bookmark; m_textEdit->setTextCursor( cursor ); // //emit bookmark(this, s, QPair<bool,QTextBlock>(activate, cursor.block())); m_mainimpl->toggleBookmark(this, s, activate, cursor.block()); m_textEdit->setTextCursor( save ); setVerticalScrollBar( scroll ); m_textEdit->lineNumbers()->update();}//QList<int> Editor::bookmarksList(){ QList<int> list; int line = 1; for ( QTextBlock block = m_textEdit->document()->begin(); block.isValid(); block = block.next(), line++ ) { BlockUserData *blockUserData = (BlockUserData*)block.userData(); if ( blockUserData && blockUserData->bookmark ) list << line; } return list;}//QList<QTextBlock> Editor::breakpointsList(){ QList<QTextBlock> list; int line = 1; for ( QTextBlock block = m_textEdit->document()->begin(); block.isValid(); block = block.next(), line++ ) { BlockUserData *blockUserData = (BlockUserData*)block.userData(); if ( blockUserData && blockUserData->breakpoint ) list << block; } return list;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -