CodeStyleSettingsWidget::CodeStyleSettingsWidget(Project *project) : QWidget(), m_project(project) { m_ui.setupUi(this); const EditorConfiguration *config = m_project->editorConfiguration(); QMap<Core::Id, ICodeStylePreferencesFactory *> factories = TextEditorSettings::codeStyleFactories(); QMapIterator<Core::Id, ICodeStylePreferencesFactory *> it(factories); while (it.hasNext()) { it.next(); ICodeStylePreferencesFactory *factory = it.value(); Core::Id languageId = factory->languageId(); ICodeStylePreferences *codeStylePreferences = config->codeStyle(languageId); auto preview = factory->createCodeStyleEditor(codeStylePreferences, m_ui.stackedWidget); if (preview && preview->layout()) preview->layout()->setContentsMargins(QMargins()); m_ui.stackedWidget->addWidget(preview); m_ui.languageComboBox->addItem(factory->displayName()); } connect(m_ui.languageComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), m_ui.stackedWidget, &QStackedWidget::setCurrentIndex); }
void ProjectFileWizardExtension::applyCodeStyle(GeneratedFile *file) const { if (file->isBinary() || file->contents().isEmpty()) return; // nothing to do MimeType mt = MimeDatabase::findByFile(QFileInfo(file->path())); Id languageId = TextEditorSettings::languageId(mt.type()); if (!languageId.isValid()) return; // don't modify files like *.ui *.pro FolderNode *folder = m_context->page->currentNode(); Project *baseProject = SessionManager::projectForNode(folder); ICodeStylePreferencesFactory *factory = TextEditorSettings::codeStyleFactory(languageId); Indenter *indenter = 0; if (factory) indenter = factory->createIndenter(); if (!indenter) indenter = new NormalIndenter(); ICodeStylePreferences *codeStylePrefs = codeStylePreferences(baseProject, languageId); indenter->setCodeStylePreferences(codeStylePrefs); QTextDocument doc(file->contents()); QTextCursor cursor(&doc); cursor.select(QTextCursor::Document); indenter->indent(&doc, cursor, QChar::Null, codeStylePrefs->currentTabSettings()); delete indenter; if (TextEditorSettings::storageSettings().m_cleanWhitespace) { QTextBlock block = doc.firstBlock(); while (block.isValid()) { codeStylePrefs->currentTabSettings().removeTrailingWhitespace(cursor, block); block = block.next(); } } file->setContents(doc.toPlainText()); }
CodeStyleSettingsWidget::CodeStyleSettingsWidget(Project *project) : QWidget(), m_project(project) { m_ui.setupUi(this); const EditorConfiguration *config = m_project->editorConfiguration(); QMap<Core::Id, ICodeStylePreferencesFactory *> factories = TextEditorSettings::codeStyleFactories(); QMapIterator<Core::Id, ICodeStylePreferencesFactory *> it(factories); while (it.hasNext()) { it.next(); ICodeStylePreferencesFactory *factory = it.value(); Core::Id languageId = factory->languageId(); ICodeStylePreferences *codeStylePreferences = config->codeStyle(languageId); CodeStyleEditor *preview = new CodeStyleEditor(factory, codeStylePreferences, m_ui.stackedWidget); preview->clearMargins(); m_ui.stackedWidget->addWidget(preview); m_ui.languageComboBox->addItem(factory->displayName()); } connect(m_ui.languageComboBox, SIGNAL(currentIndexChanged(int)), m_ui.stackedWidget, SLOT(setCurrentIndex(int))); }