⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainimpl.cpp

📁 用Qt4编写的linux IDE开发环境
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        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 + -