📄 editor.cpp
字号:
void Editor::displayEditorToolbar( bool b ){ if (m_editorToolbar) m_editorToolbar->setVisible( b );}//void Editor::toggleBreakpoint(int line, QString breakpointCondition, bool isTrue){ QTextCursor save = m_textEdit->textCursor(); int scroll = verticalScrollBar(); gotoLine( line, false ); QTextCursor cursor = m_textEdit->textCursor(); BlockUserData *blockUserData = (BlockUserData*)cursor.block().userData(); if ( !blockUserData ) { blockUserData = new BlockUserData(); blockUserData->breakpoint = false; blockUserData->bookmark = false; blockUserData->isTrue = false; } blockUserData->breakpoint = !blockUserData->breakpoint; blockUserData->breakpointCondition = breakpointCondition; blockUserData->isTrue = isTrue; cursor.block().setUserData( blockUserData ); m_textEdit->setTextCursor( cursor ); m_textEdit->setTextCursor( save ); setVerticalScrollBar( scroll ); emit breakpoint(shortFilename(), line, blockUserData); m_textEdit->lineNumbers()->update();}//void Editor::emitListBreakpoints(){ 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 ) emit breakpoint(shortFilename(), line, blockUserData); }}//QString Editor::shortFilename(){ QString name = m_filename; int pos = m_filename.lastIndexOf( "/" ); if ( pos != -1 ) name = name.mid(pos+1); return name;}//QString Editor::directory(){ return m_filename.left( m_filename.length()-shortFilename().length()-1 );}QString Editor::shortFilename(QString nomLong){ QString name = nomLong; int pos = nomLong.lastIndexOf( "/" ); if ( pos != -1 ) name = name.mid(pos+1); return name;}//QString Editor::suffixe(QString filename){ return filename.section(".", -1, -1);}//void Editor::setExecutedLine(int line){ m_textEdit->setExecutedLine(line);}//void Editor::slotModifiedEditor(bool modified){ emit editorModified(this, modified);}////void Editor::slotComboClasses(QString text){ if ( !m_comboClasses ) return; if ( text.isEmpty() ) { m_comboClasses->clear(); m_comboClasses->addItems( classes() ); m_comboClasses->setCurrentIndex(0); text = m_comboClasses->currentText(); } if ( !classes().count() || (m_comboClasses->count() == 1 && m_comboClasses->itemText(0).simplified().isEmpty() ) ) m_comboClasses->setHidden( true ); else m_comboClasses->setHidden( false ); m_comboMethods->setHidden( !classes().count() ); m_comboMethods->clear(); int width = 0; foreach(QString line, methodes(text) ) { int numLine = QString(line.section(QChar(255), -1)).toInt(); QString methode = line.left( line.indexOf(QChar(255)) ); methode.remove('\r').remove('\n'); QString typeRetour = " : " + methode.section(" ", 0, 0); if ( typeRetour.contains("::") ) typeRetour = ""; methode = methode.section("::", 1, 1); int last = methode.lastIndexOf(":"); if ( last != 1 && !inQuotations(last, methode) ) methode = methode.left( last ); methode += typeRetour; QTextBlock block; int n=1; for (block = m_textEdit->document()->begin(); block.isValid() && n != numLine; block = block.next(), n++ ) ; m_comboMethods->addItem(methode, QVariant(block.text())); width = qMax(width, fontMetrics().width( methode ) ); } m_comboMethods->setGeometry(m_comboClasses->x()+m_comboClasses->width()+6, m_comboMethods->y(), qMin(500, width+30), m_comboMethods->height()); m_comboMethods->setCurrentIndex(0);}//void Editor::slotComboMethods(int index){ m_textEdit->gotoLine(1, false); QString s = m_comboMethods->itemData(index).toString(); m_textEdit->find( s ); gotoLine( m_textEdit->currentLineNumber(), true);}//void Editor::setSyntaxColors(QTextCharFormat a, QTextCharFormat b, QTextCharFormat c, QTextCharFormat d, QTextCharFormat e, QTextCharFormat f, QTextCharFormat g){ m_textEdit->setSyntaxColors(a, b, c, d, e, f, g);}//void Editor::slotOtherFile(){ m_mainimpl->openFile( QStringList(m_nameOtherFile) );}//void Editor::setNameOtherFile(QString oldName, QString newName){ /* When a file is renamed in files browser (by a right-click the "Rename..."), this function is called on all editors to rename the other file. */ if ( oldName != m_nameOtherFile ) return; updateOtherFile(newName);}//void Editor::methodsList(){ if ( NULL == m_comboMethods ) { QApplication::beep(); } else { QLineEdit* pLineEdit = m_comboMethods->lineEdit(); pLineEdit->setSelection(0, pLineEdit->text().count()); m_comboMethods->showPopup(); m_comboMethods->setFocus(); }}//void Editor::setTextColor(QColor textColor){ m_textEdit->setTextColor(textColor);}//void Editor::slotMessagesBuild(QString list, QString directory){ /* If your language is not translated in QDevelop and if g++ display the errors and warnings in your language, modify the two strings below "error" and "warning" to adapt in your language. Also have a look at logbuild.cpp */ bool messageContainsWarnings = false; bool messageContainsErrors = false; foreach(QString message, list.split("\n")) { if ( !message.isEmpty() ) { bool error = false; message.remove( "\r" ); QString filename = message.section(":", 0, 0).replace("\\", "/").replace("//", "/"); int numLine = message.section(":", 1, 1).toInt(); if ( numLine == 0 ) continue; QString absoluteName = QDir(directory+"/"+filename).absolutePath(); if( absoluteName.endsWith("-qdeveloptmp.cpp") ) absoluteName = absoluteName.section("-qdeveloptmp.cpp", 0, 0) + ".cpp"; if( absoluteName != m_filename ) continue; if ( LogBuild::containsError(message) ) { // Error error = true; messageContainsErrors = true; if( message.toLower().contains("error") ) message = message.section("error", 1).simplified(); else if( message.toLower().contains( LogBuild::tr("error").toLower() ) ) message = message.section(LogBuild::tr("error"), 1).simplified(); } else if ( LogBuild::containsWarning(message) ) { // Warning error = false; messageContainsWarnings = true; if( message.toLower().contains("warning") ) message = message.section("warning", 1).simplified(); else if( message.toLower().contains( LogBuild::tr("warning").toLower() ) ) message = message.section(LogBuild::tr("warning"), 1).simplified(); } if( message.startsWith(":") ) message = message.section(":", 1).simplified(); int line = 1; for ( QTextBlock block = m_textEdit->document()->begin(); block.isValid(); block = block.next(), line++ ) { if( line != numLine ) continue; BlockUserData *blockUserData = (BlockUserData*)block.userData(); if ( !blockUserData ) { blockUserData = new BlockUserData(); blockUserData->breakpoint = false; blockUserData->bookmark = false; blockUserData->block = block; } if( error && !blockUserData->errorString.contains(message) ) blockUserData->errorString += message + "\n"; else if( !error && !blockUserData->warningString.contains(message) ) blockUserData->warningString += message + "\n"; block.setUserData( blockUserData ); break; } } } m_textEdit->lineNumbers()->update(); int state = 0; for ( QTextBlock block = m_textEdit->document()->begin(); block.isValid(); block = block.next() ) { BlockUserData *blockUserData = (BlockUserData*)block.userData(); if ( !blockUserData ) { blockUserData = new BlockUserData(); blockUserData->breakpoint = false; blockUserData->bookmark = false; blockUserData->block = block; } if( blockUserData && !blockUserData->errorString.isEmpty() ) { state = 2; break; } else if( blockUserData && !blockUserData->warningString.isEmpty() ) state = 1; } m_mainimpl->automaticCompilationState(this, state);}void Editor::clearErrorsAndWarnings(){ int line = 1; for ( QTextBlock block = m_textEdit->document()->begin(); block.isValid(); block = block.next(), line++ ) { BlockUserData *blockUserData = (BlockUserData*)block.userData(); if ( blockUserData ) { blockUserData->errorString = ""; blockUserData->warningString = ""; block.setUserData( blockUserData ); } } m_textEdit->lineNumbers()->update();}void Editor::slotEndBuild(){ QFile::remove( tempFilename() );}void Editor::nextWarningError(){ int line = 1; for ( QTextBlock block = m_textEdit->document()->begin(); block.isValid(); block = block.next(), line++ ) { BlockUserData *blockUserData = (BlockUserData*)block.userData(); if ( line>currentLineNumber() && blockUserData && (!blockUserData->errorString.isEmpty() || !blockUserData->warningString.isEmpty()) ) { gotoLine(line, true); break; } }}void Editor::previousWarningError(){ int line = currentLineNumber(); for ( QTextBlock block = m_textEdit->textCursor().block(); block.isValid(); block = block.previous(), line-- ) { BlockUserData *blockUserData = (BlockUserData*)block.userData(); if ( line<currentLineNumber() && blockUserData && (!blockUserData->errorString.isEmpty() || !blockUserData->warningString.isEmpty()) ) { gotoLine(line, true); break; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -