void EditorConfiguration::fromMap(const QVariantMap &map) { d->m_useGlobal = map.value(kUseGlobal, d->m_useGlobal).toBool(); const QByteArray &codecName = map.value(kCodec, d->m_textCodec->name()).toByteArray(); d->m_textCodec = QTextCodec::codecForName(codecName); if (!d->m_textCodec) d->m_textCodec = Core::EditorManager::instance()->defaultTextCodec(); const int codeStyleCount = map.value(kCodeStyleCount, 0).toInt(); for (int i = 0; i < codeStyleCount; ++i) { QVariantMap settingsIdMap = map.value(kCodeStylePrefix + QString::number(i)).toMap(); if (settingsIdMap.isEmpty()) { qWarning() << "No data for code style settings list" << i << "found!"; continue; } QString languageId = settingsIdMap.value(QLatin1String("language")).toString(); QVariantMap value = settingsIdMap.value(QLatin1String("value")).toMap(); ICodeStylePreferences *preferences = d->m_languageCodeStylePreferences.value(languageId); if (preferences) { preferences->fromMap(QString(), value); } } d->m_defaultCodeStyle->fromMap(kPrefix, map); d->m_typingSettings.fromMap(kPrefix, map); d->m_storageSettings.fromMap(kPrefix, map); d->m_behaviorSettings.fromMap(kPrefix, map); d->m_extraEncodingSettings.fromMap(kPrefix, map); }
ICodeStylePreferences *ICodeStylePreferences::currentPreferences() const { ICodeStylePreferences *prefs = (ICodeStylePreferences *)this; while (prefs->currentDelegate()) prefs = prefs->currentDelegate(); return prefs; }
void SimpleCodeStylePreferencesWidget::slotTabSettingsChanged(const TextEditor::TabSettings &settings) { if (!m_preferences) return; ICodeStylePreferences *current = m_preferences->currentPreferences(); if (!current) return; current->setTabSettings(settings); }
ICodeStylePreferences *CodeStylePool::createCodeStyle(const QByteArray &id, const TabSettings &tabSettings, const QVariant &codeStyleData, const QString &displayName) { if (!d->m_factory) return 0; ICodeStylePreferences *codeStyle = d->m_factory->createCodeStyle(); codeStyle->setId(id); codeStyle->setTabSettings(tabSettings); codeStyle->setValue(codeStyleData); codeStyle->setDisplayName(displayName); addCodeStyle(codeStyle); saveCodeStyle(codeStyle); return codeStyle; }
ICodeStylePreferences *CodeStylePool::loadCodeStyle(const Utils::FileName &fileName) { ICodeStylePreferences *codeStyle = 0; Utils::PersistentSettingsReader reader; reader.load(fileName); QVariantMap m = reader.restoreValues(); if (m.contains(QLatin1String(codeStyleDataKey))) { const QByteArray id = fileName.toFileInfo().completeBaseName().toUtf8(); const QString displayName = reader.restoreValue(QLatin1String(displayNameKey)).toString(); const QVariantMap map = reader.restoreValue(QLatin1String(codeStyleDataKey)).toMap(); if (d->m_factory) { codeStyle = d->m_factory->createCodeStyle(); codeStyle->setId(id); codeStyle->setDisplayName(displayName); codeStyle->fromMap(QString(), map); addCodeStyle(codeStyle); } } return codeStyle; }
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()); }