📄 mainimpl.cpp
字号:
settings.setValue("m_autoCompletion", m_autoCompletion); settings.setValue("m_autobrackets", m_autobrackets); settings.setValue("m_closeButtonInTabs", m_closeButtonInTabs); settings.setValue("m_match", m_match); settings.setValue("m_highlightCurrentLine", m_highlightCurrentLine); settings.setValue("m_checkEnvironmentOnStartup", m_checkEnvironmentOnStartup); settings.setValue("m_endLine", m_endLine); settings.setValue("m_tabSpaces", m_tabSpaces); settings.setValue("m_backgroundColor", m_backgroundColor.name()); settings.setValue("m_textColor", m_textColor.name()); settings.setValue("m_currentLineColor", m_currentLineColor.name()); settings.setValue("m_matchingColor", m_matchingColor.name()); settings.setValue("m_projectsDirectory", m_projectsDirectory); settings.setValue("m_pluginsDirectory", m_pluginsDirectory); settings.setValue("m_includeDirectory", m_includeDirectory); settings.setValue("m_documentationDirectory", m_documentationDirectory); settings.setValue("m_makeOptions", m_makeOptions); settings.setValue("m_mibCodec", m_mibCodec); // settings.setValue("m_formatPreprocessorText", m_formatPreprocessorText.foreground().color().name()); settings.setValue("m_formatQtText", m_formatQtText.foreground().color().name()); settings.setValue("m_formatSingleComments", m_formatSingleComments.foreground().color().name()); settings.setValue("m_formatMultilineComments", m_formatMultilineComments.foreground().color().name()); settings.setValue("m_formatQuotationText", m_formatQuotationText.foreground().color().name()); settings.setValue("m_formatMethods", m_formatMethods.foreground().color().name()); settings.setValue("m_formatKeywords", m_formatKeywords.foreground().color().name()); settings.setValue("m_displayEditorToolbars", m_displayEditorToolbars); settings.setValue("m_displayWhiteSpaces", m_displayWhiteSpaces); settings.setValue("editorMode", actionEditor_mode->isChecked() ); settings.endGroup(); // Save shortcuts settings.beginGroup("Shortcuts"); QList<QObject*> childrens; childrens = children(); QListIterator<QObject*> iterator(childrens); while ( iterator.hasNext() ) { QObject *object = iterator.next(); QAction *action = qobject_cast<QAction*>(object); if ( (action) && (!(action->data().toString().contains( "Recent|" )))) { QString text = action->objectName(); if (!text.isEmpty()) { QString shortcut = action->shortcut(); settings.setValue( text, shortcut ); } } } settings.endGroup(); // //if ( !m_projectManager ) //return; if ( m_restoreOnStart ) { settings.beginGroup("Project"); QString projectDirectory; if ( m_projectManager ) projectDirectory = m_projectManager->absoluteNameProjectFile(treeFiles->topLevelItem(0)); settings.setValue("absoluteNameProjectFile", projectDirectory); settings.endGroup(); } // settings.beginGroup("mainwindowstate"); if (!isMinimized() && !isMaximized() && !isFullScreen()) { settings.setValue("pos", pos()); settings.setValue("size", size()); } settings.setValue("maximized", isMaximized()); settings.setValue("fullscreen", isFullScreen()); settings.setValue("geometry", saveGeometry()); // Window geometry and state (only needed for Windows!). settings.setValue("state", saveState()); // Toolbar and DockWidget state. settings.setValue("tabExplorer", tabExplorer->currentIndex()); settings.endGroup(); settings.beginGroup("editormode"); QList<QDockWidget*> dockWidgets = findChildren<QDockWidget*>(); foreach( QWidget *w, dockWidgets ) settings.setValue( w->objectName(), toolbarStatus[w] );; settings.endGroup();}//void MainImpl::slotNewProject(){ NewProjectImpl *window = new NewProjectImpl(this, m_projectsDirectory); window->labelProjetParent->setHidden( true ); window->parentProjectName->setHidden( true ); if ( window->exec() == QDialog::Accepted ) { openProject( window->absoluteProjectName() ); QTreeWidgetItem *itProject = m_projectManager->itemProject( window->filename() ); m_projectManager->setSrcDirectory(itProject, window->srcDirectory->text()); m_projectManager->setUiDirectory(itProject, window->uiDirectory->text()); } delete window;}//QString MainImpl::loadINI(){ QSettings settings(getQDevelopPath() + "qdevelop.ini", QSettings::IniFormat); QString projectName; settings.beginGroup("Options"); QString s = settings.value("m_font", m_font.toString()).toString(); m_font.fromString(s); m_tabStopWidth = settings.value("m_tabStopWidth", m_tabStopWidth).toInt(); m_cppHighlighter = settings.value("m_cppHighlighter", m_cppHighlighter).toBool(); m_automaticCompilation = settings.value("m_automaticCompilation", m_automaticCompilation).toBool(); m_lineNumbers = settings.value("m_lineNumbers", m_lineNumbers).toBool(); m_autoIndent = settings.value("m_autoIndent", m_autoIndent).toBool(); m_autoCompletion = settings.value("m_autoCompletion", m_autoCompletion).toBool(); m_autobrackets = settings.value("m_autobrackets", m_autobrackets).toBool(); m_selectionBorder = settings.value("m_selectionBorder", m_selectionBorder).toBool(); m_saveBeforeBuild = settings.value("m_saveBeforeBuild", m_saveBeforeBuild).toBool(); m_restoreOnStart = settings.value("m_restoreOnStart", m_restoreOnStart).toBool(); m_promptBeforeQuit = settings.value("m_promptBeforeQuit", m_promptBeforeQuit).toBool(); m_checkEnvironmentOnStartup = settings.value("m_checkEnvironmentOnStartup", m_checkEnvironmentOnStartup).toBool(); m_autoMaskDocks = settings.value("m_autoMaskDocks", m_autoMaskDocks).toBool(); m_endLine = (EndLine)settings.value("m_endLine", m_endLine).toInt(); m_tabSpaces = settings.value("m_tabSpaces", m_tabSpaces).toBool(); m_match = settings.value("m_match", m_match).toBool(); m_highlightCurrentLine = settings.value("m_highlightCurrentLine", m_highlightCurrentLine).toBool(); m_backgroundColor = QColor(settings.value("m_backgroundColor", m_backgroundColor).toString()); m_textColor = QColor(settings.value("m_textColor", m_textColor).toString()); m_currentLineColor = QColor(settings.value("m_currentLineColor", m_currentLineColor).toString()); m_matchingColor = QColor(settings.value("m_matchingColor", m_matchingColor).toString()); m_projectsDirectory = settings.value("m_projectsDirectory", m_projectsDirectory).toString(); m_pluginsDirectory = settings.value("m_pluginsDirectory", m_pluginsDirectory).toString(); m_includeDirectory = settings.value("m_includeDirectory", m_includeDirectory).toString(); m_documentationDirectory = settings.value("m_documentationDirectory", m_documentationDirectory).toString(); m_makeOptions = settings.value("m_makeOptions", m_makeOptions).toString(); m_showTreeClasses = settings.value("m_showTreeClasses", m_showTreeClasses).toBool(); m_closeButtonInTabs = settings.value("m_closeButtonInTabs", m_closeButtonInTabs).toBool(); m_displayEditorToolbars = settings.value("m_displayEditorToolbars", m_displayEditorToolbars).toBool(); slotUpdateOtherFileActions(); m_displayWhiteSpaces = settings.value("m_displayWhiteSpaces", m_displayWhiteSpaces).toBool(); if( !QDir().exists(m_includeDirectory) ) { QMessageBox::warning(0, "QDevelop", tr("The Qt include directory doesn't exist,\nYou can change in Options dialog."), tr("Ok") ); } setCrossButton( !m_closeButtonInTabs ); m_intervalUpdatingClasses = settings.value("m_intervalUpdatingClasses", m_intervalUpdatingClasses).toInt(); if ( m_currentLineColor == Qt::black ) m_currentLineColor = QColor(); m_mibCodec = settings.value("m_mibCodec", m_mibCodec).toInt(); // m_formatPreprocessorText.setForeground( QColor(settings.value("m_formatPreprocessorText", m_formatPreprocessorText.foreground().color().name()).toString() ) ); m_formatQtText.setForeground( QColor(settings.value("m_formatQtText", m_formatQtText.foreground().color().name()).toString() ) ); m_formatSingleComments.setForeground( QColor(settings.value("m_formatSingleComments", m_formatSingleComments.foreground().color().name()).toString() ) ); m_formatMultilineComments.setForeground( QColor(settings.value("m_formatMultilineComments", m_formatMultilineComments.foreground().color().name()).toString() ) ); m_formatQuotationText.setForeground( QColor(settings.value("m_formatQuotationText", m_formatQuotationText.foreground().color().name()).toString() ) ); m_formatMethods.setForeground( QColor(settings.value("m_formatMethods", m_formatMethods.foreground().color().name()).toString() ) ); m_formatKeywords.setForeground( QColor(settings.value("m_formatKeywords", m_formatKeywords.foreground().color().name()).toString() ) ); actionEditor_mode->setChecked( settings.value("editorMode", actionEditor_mode->isChecked()).toBool() ); settings.endGroup(); tabExplorer->setTabEnabled( 1, m_showTreeClasses ); if (!m_showTreeClasses) //ToolsOptions/General tabExplorer->setTabToolTip( 1, tr("Classes explorer is disabled, please enable it in the Options dialog") ); else tabExplorer->setTabToolTip( 1, "" ); m_assistant->setdocumentationDirectory( m_documentationDirectory ); // Load shortcuts settings.beginGroup("Shortcuts"); QList<QObject*> childrens; childrens = children(); QListIterator<QObject*> iterator(childrens); while ( iterator.hasNext() ) { QObject *object = iterator.next(); QAction *action = qobject_cast<QAction*>(object); if ( (action) && (!(action->data().toString().contains( "Recent|" ))) && (!action->objectName().isEmpty()) ) { QString text = object->objectName(); if ( !text.isEmpty() ) { QString shortcut = action->shortcut(); shortcut = settings.value(text, shortcut).toString(); action->setShortcut( shortcut ); } } } settings.endGroup(); if ( m_restoreOnStart ) { settings.beginGroup("Project"); projectName = settings.value("absoluteNameProjectFile").toString(); settings.endGroup(); } // settings.beginGroup("mainwindowstate");#ifdef Q_OS_WIN32 // Restores position, size and state for both normal and maximized/fullscreen state. Problems reported unter X11. // See Qt doc: Geometry: Restoring a Window's Geometry for details. restoreGeometry(settings.value("geometry", saveGeometry()).toByteArray()); // Window geometry and state.#else // Restores position, size and state including maximized/fullscreen. move(settings.value("pos", pos()).toPoint()); // Window position. resize(settings.value("size", size()).toSize()); // Window size. // Note: Yes, the window can be maximized and fullscreen! if (settings.value("maximized", isMaximized()).toBool()) // Window maximized. setWindowState(windowState() | Qt::WindowMaximized); if (settings.value("fullscreen", isFullScreen()).toBool()) // Window fullscreen. setWindowState(windowState() | Qt::WindowFullScreen);#endif restoreState(settings.value("state", saveState()).toByteArray()); // Toolbar and DockWidget state. tabExplorer->setCurrentIndex( settings.value("tabExplorer", 0).toInt() ); settings.endGroup(); settings.beginGroup("editormode"); QList<QDockWidget*> dockWidgets = findChildren<QDockWidget*>(); foreach( QWidget *w, dockWidgets ) toolbarStatus[w] = settings.value(w->objectName(),w->isVisible()).toBool(); settings.endGroup(); return projectName;}void MainImpl::closeEvent( QCloseEvent * event ){ int response = 0; if ( m_promptBeforeQuit ) { response = QMessageBox::question(this, "QDevelop", tr("Do you want to quit QDevelop ?"), tr("Yes"), tr("No"), QString(), 0, 1); } if ( response == 1 ) { event->ignore(); return; } saveINI(); if ( slotCloseProject(true) ) { delete m_assistant; delete m_designer; this->hide(); //give an impression of quick close event->accept(); } else event->ignore();}//bool MainImpl::slotCloseAllFiles(){ bool ok = true; foreach(Editor *editor, allEditors() ) { if ( !editor->close() ) ok = false; else delete editor; } slotUpdateOtherFileActions(); return ok;}//static QString dir;void MainImpl::slotOpen(){ static QString selectedFilter; if ( dir.isEmpty() && m_projectManager ) dir = m_projectManager->projectDirectory( treeFiles->topLevelItem ( 0 ) ); QString s = QFileDialog::getOpenFileName( this, tr("Choose a file to open"), dir, tr("Sources")+" (*.cpp *.h);;"+ tr("Projects")+" (*.pro);;"+ tr("Texts")+" (*.txt *.TXT);;"+ tr("All Files")+" (* *.*)", &selectedFilter ); if ( s.isEmpty() ) { // Cancel is clicked return; } if ( s.right(4).toLower() == ".pro" ) { openProject(s); } else openFile( QStringList( s ) ); dir = QDir().absoluteFilePath( s );}void MainImpl::slotOpenProject(){ if ( dir.isEmpty() && m_projectManager ) dir = m_projectManager->projectDirectory( treeFiles->topLevelItem ( 0 ) ); QString s = QFileDialog::getOpenFileName( this, tr("Choose a project to open"), dir, tr("Projects")+" (*.pro)" ); if ( s.isEmpty() ) { // Cancel is clicked return; } openProject(s); dir = QDir().absoluteFilePath( s );}//bool MainImpl::openProject(QString s){ s = QDir::cleanPath( s ); QFile file ( s ); if ( !file.exists() ) { QMessageBox::warning(this, "QDevelop", tr("The project %1 doesn't exist.").arg(s), tr("Cancel") ); return false; } if ( !slotCloseProject() ) return false; if ( m_completion ) delete m_completion; m_completion = new InitCompletion (this, treeClasses); QString includes; includes = m_includeDirectory;#ifdef WIN32 includes += "\" \"" + QDir::cleanPath( QFileInfo(m_qmakeName).absoluteDir().path()+"/../src" ) ;#endif m_completion->setCtagsCmdPath( ctagsName() ); m_completion->setQtInclude( includes ); configureCompletion( QFileInfo(s).absoluteDir().path() ); m_projectManager = new ProjectManager(this, treeFiles, treeClasses); m_projectManager->init(s); treeFiles->setProjectManager( m_projectManager ); treeClasses->setProjectManager( m_projectManager ); connect(actionResetExecutablesList, SIGNAL(triggered()), m_projectManager, SLOT(slotResetExecutablesList()) ); connect(actionSaveProject, SIGNAL(triggered()), m_projectManager, SLOT(slotSaveProject()) ); connect(actionAddExistingFiles, SIGNAL(triggered()), m_projectManager, SLOT(slotAddExistingFiles()) ); connect(actionAddNewItem, SIGNAL(triggered()), m_projectManager, SLOT(slotAddNewItem()) ); connect(actionAddNewClass, SIGNAL(triggered()), m_projectManager, SLOT(slotAddNewClass()) ); connect(actionAddScope, SIGNAL(triggered()), m_projectManager, SLOT(slotAddScope()) );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -