📄 mainimpl.cpp
字号:
return; QString ext = "." + filename.section(".", -1, -1); QList<QTreeWidgetItem *> projectsList; m_projectManager->childsList(0, "PROJECT", projectsList); for (int nbProjects=0; nbProjects < projectsList.count(); nbProjects++) { QString projectName = projectsList.at(nbProjects)->text(0); QString projectDir = m_projectManager->findData(projectName, "projectDirectory"); QStringList files; if ( ext == ".cpp" ) m_projectManager->sources( m_projectManager->itemProject(projectName), files ); else m_projectManager->headers( m_projectManager->itemProject(projectName), files ); foreach(QString s, files) { if ( QDir::cleanPath(s) == QDir::cleanPath(filename) ) { QStringList parents = m_projectManager->parents(projectsList.at(nbProjects)); treeClasses->updateClasses(QDir::cleanPath(filename), buffer, parents, ext); } } }}//void MainImpl::slotModifiedEditor( Editor *editor, bool modified){ for (int i=0; i<m_tabEditors->count(); i++) { if ( givenEditor(i) == editor ) { if ( modified && m_tabEditors->tabText(i).left(1) != "*" ) m_tabEditors->setTabText(i, "* "+m_tabEditors->tabText(i) ); if ( !modified && m_tabEditors->tabText(i).left(1) == "*" ) m_tabEditors->setTabText(i, m_tabEditors->tabText(i).mid(2) ); return; } } foreach(Editor *e, allEditors() ) { if( e == editor ) { if ( modified && e->windowTitle().left(1) != "*" ) e->setWindowTitle("* "+e->windowTitle() ); if ( !modified && e->windowTitle().left(1) == "*" ) e->setWindowTitle( e->windowTitle().mid(2) ); } }}//void MainImpl::slotRebuild(){ slotBuild(true);}//void MainImpl::slotClean(){ slotBuild(true, false);}//void MainImpl::slotCompile(bool automaticCompilation){ if( automaticCompilation && !m_automaticCompilation ) return; Editor *editor = currentEditor(); if ( editor && Editor::suffixe( editor->filename() ).toLower() == "cpp" ) { if( automaticCompilation ) { editor->saveAsTemp(); editor->clearErrorsAndWarnings(); } if( !automaticCompilation ) { m_buildingGroup->setEnabled( false ); logBuild->clear(); dockOutputs->setVisible(true); } if ( m_saveBeforeBuild && !automaticCompilation) slotSaveAll(); if ( !automaticCompilation ) { tabOutputs->setCurrentIndex( 0 ); m_projectsDirectoriesList << editor->directory(); } QString projectDirectory = m_projectManager->fileDirectory(editor->filename() ); QString filename = editor->filename(); if( automaticCompilation ) filename = editor->tempFilename(); Build* builder = new Build(this, m_qmakeName, m_makeName, m_makeOptions, projectDirectory+"/", false, false, true, filename); connect(builder, SIGNAL(finished()), builder, SLOT(deleteLater()) ); if( automaticCompilation ) { connect(builder, SIGNAL(finished()), editor, SLOT(slotEndBuild()) ); connect(builder, SIGNAL(message(QString, QString)), editor, SLOT(slotMessagesBuild(QString, QString)) ); } else { connect(builder, SIGNAL(finished()), this, SLOT(slotEndBuild()) ); connect(builder, SIGNAL(message(QString, QString)), logBuild, SLOT(slotMessagesBuild(QString, QString)) ); } connect(logBuild, SIGNAL(incErrors()), builder, SLOT(slotIncErrors()) ); connect(logBuild, SIGNAL(incWarnings()), builder, SLOT(slotIncWarnings()) ); builder->start(); }}//void MainImpl::slotBuild(bool clean, bool build, bool forceQmake){ bool qmakeNeeded = false; if (!m_projectManager) { return; } if ( m_qmakeName.isEmpty() || m_makeName.isEmpty() ) { slotToolsControl(); return; } if ( actionDebug->text() == tr("Stop") && !slotDebug()) return; m_buildAfterDebug = false; qmakeNeeded = m_projectManager->isModifiedProject(); if ( m_projectsDirectoriesList.count() == 0 ) { foreach(Editor *editor, allEditors() ) { editor->clearErrorsAndWarnings(); } m_buildingGroup->setEnabled( false ); logBuild->clear(); dockOutputs->setVisible(true); if ( m_saveBeforeBuild ) slotSaveAll(); tabOutputs->setCurrentIndex( 0 ); // m_projectsDirectoriesList = m_projectManager->buildableProjectsDirectories(); m_clean = clean; m_build = build; } QString projectDirectory = m_projectsDirectoriesList.first(); QString projectName = m_projectManager->projectName( projectDirectory ); QString makefilePath = projectDirectory + "/Makefile"; qmakeNeeded = qmakeNeeded || !QFile::exists(makefilePath) || forceQmake; if ( qmakeNeeded ) { m_configureCompletionNeeded = true; } m_builder = new Build(this, m_qmakeName, m_makeName, m_makeOptions, projectDirectory+"/"+projectName, qmakeNeeded|m_clean, m_clean, m_build); connect(logBuild, SIGNAL(incErrors()), m_builder, SLOT(slotIncErrors()) ); connect(logBuild, SIGNAL(incWarnings()), m_builder, SLOT(slotIncWarnings()) ); connect(m_builder, SIGNAL(finished()), this, SLOT(slotEndBuild()) ); connect(m_builder, SIGNAL(finished()), m_builder, SLOT(deleteLater()) ); connect(m_builder, SIGNAL(message(QString, QString)), logBuild, SLOT(slotMessagesBuild(QString, QString)) ); foreach(Editor *editor, allEditors() ) { connect(m_builder, SIGNAL(message(QString, QString)), editor, SLOT(slotMessagesBuild(QString, QString)) ); } m_builder->start();}//void MainImpl::slotStopBuild(){ m_projectsDirectoriesList = QStringList(QString()); m_debugAfterBuild = ExecuteNone; emit stopBuild();}//void MainImpl::slotEndBuild(){ if ( m_configureCompletionNeeded ) configureCompletion(m_projectsDirectoriesList.first()); m_projectsDirectoriesList.removeFirst(); if ( m_projectsDirectoriesList.count() ) slotBuild(); else { QString msg; Build* builder = (Build *)sender(); if ( builder->nbErrors()==0 && builder->nbWarnings()==0 ) msg = tr("Build finished without error"); else msg = tr("Build finished with")+" "; if ( builder->nbErrors() ) msg += QString::number(builder->nbErrors())+" "+tr("error(s)")+ (builder->nbWarnings() ? " "+tr("and")+ " " : QString(" ")); if ( builder->nbWarnings() ) msg += QString::number(builder->nbWarnings())+" "+tr("warning(s)")+" "; logBuild->slotMessagesBuild( QString("\n---------------------- "+msg+"----------------------\n"), ""); m_buildingGroup->setEnabled( true ); if ( m_debugAfterBuild ) slotDebug( (int)m_debugAfterBuild-1 ); }}//void MainImpl::slotFindFilesActivated(QListWidgetItem *item, QListWidgetItem *){ findLines->clear(); if ( !item ) return; QStringList list = item->data(Qt::UserRole).toStringList(); findLines->addItems( list );}//void MainImpl::slotDoubleClickFindLines( QListWidgetItem *item){ QString texte = item->text(); int numLine = texte.section(":", 0, 0).section(" ", 1,1).toInt(); if ( numLine == 0 ) return; QListWidgetItem *it = findFiles->currentItem(); if ( !it ) it = findFiles->item(0); QString filename = it->data(Qt::UserRole+1).toString(); QApplication::setOverrideCursor(Qt::WaitCursor); openFile( QStringList( filename ), numLine, false, true); QApplication::restoreOverrideCursor();}//void MainImpl::slotCut(){ Editor *editor = currentEditor(); if ( editor ) editor->cut();}//void MainImpl::slotPrint(){ Editor *editor = currentEditor(); if ( editor ) editor->print();}//void MainImpl::slotCurrentTabChanged(int){ foreach(Editor *editor, allEditors() ) { editor->setActiveEditor( editor == currentEditor() ); }}//void MainImpl::slotCopy(){ Editor *editor = currentEditor(); if ( editor ) editor->copy();}//void MainImpl::slotCompleteCode(){ Editor *editor = currentEditor(); if ( editor ) editor->completeCode();}//void MainImpl::slotPaste(){ Editor *editor = currentEditor(); if ( editor ) editor->paste();}//void MainImpl::slotUndo(){ Editor *editor = currentEditor(); if ( editor ) editor->undo();}//void MainImpl::slotIndent(){ Editor *editor = currentEditor(); if ( editor ) editor->slotIndent();}//void MainImpl::slotUnindent(){ Editor *editor = currentEditor(); if ( editor ) editor->slotUnindent();}//void MainImpl::slotRedo(){ Editor *editor = currentEditor(); if ( editor ) editor->redo();}//void MainImpl::slotSelectAll(){ Editor *editor = currentEditor(); if ( editor ) editor->selectAll();}//void MainImpl::slotFind(){ Editor *editor = currentEditor(); if ( editor ) editor->find();}//void MainImpl::slotReplace(){ Editor *editor = currentEditor(); if ( editor ) editor->replace();}//void MainImpl::slotGotoLine(){ Editor *editor = currentEditor(); if ( editor ) editor->dialogGotoLine();}//void MainImpl::slotFindContinue(){ Editor *editor = currentEditor(); if ( editor ) editor->findContinue();}//void MainImpl::slotFindPrevious(){ Editor *editor = currentEditor(); if ( editor ) editor->findPrevious();}//void MainImpl::slotExecuteWithoutDebug(){ slotDebug(true);}//bool MainImpl::modifiedEditors(){ bool modified = false; foreach(Editor *editor, allEditors() ) { if ( editor ) { if ( editor->isModified() ) modified = true; } } return modified;}//bool MainImpl::slotDebug(bool executeOnly){ if (!m_projectManager) { return false; } if ( actionDebug->text() == tr("Start") && ( m
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -