/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. ** ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ****************************************************************************/ #pragma once #include "projectexplorer_export.h" #include #include #include #include QT_BEGIN_NAMESPACE class QTextCodec; QT_END_NAMESPACE namespace TextEditor { class BaseTextEditor; class TextEditorWidget; class TextDocument; class TabSettings; class ICodeStylePreferences; class TypingSettings; class StorageSettings; class BehaviorSettings; class ExtraEncodingSettings; class MarginSettings; } namespace ProjectExplorer { class Project; struct EditorConfigurationPrivate; class PROJECTEXPLORER_EXPORT EditorConfiguration : public QObject { Q_OBJECT public: EditorConfiguration(); ~EditorConfiguration() override; void setUseGlobalSettings(bool use); bool useGlobalSettings() const; void cloneGlobalSettings(); // The default codec is returned in the case the project doesn't override it. QTextCodec *textCodec() const; const TextEditor::TypingSettings &typingSettings() const; const TextEditor::StorageSettings &storageSettings() const; const TextEditor::BehaviorSettings &behaviorSettings() const; const TextEditor::ExtraEncodingSettings &extraEncodingSettings() const; const TextEditor::MarginSettings &marginSettings() const; TextEditor::ICodeStylePreferences *codeStyle() const; TextEditor::ICodeStylePreferences *codeStyle(Utils::Id languageId) const; QMap codeStyles() const; void configureEditor(TextEditor::BaseTextEditor *textEditor) const; void deconfigureEditor(TextEditor::BaseTextEditor *textEditor) const; QVariantMap toMap() const; void fromMap(const QVariantMap &map); void setTypingSettings(const TextEditor::TypingSettings &settings); void setStorageSettings(const TextEditor::StorageSettings &settings); void setBehaviorSettings(const TextEditor::BehaviorSettings &settings); void setExtraEncodingSettings(const TextEditor::ExtraEncodingSettings &settings); void setMarginSettings(const TextEditor::MarginSettings &settings); void setShowWrapColumn(bool onoff); void setWrapColumn(int column); void setTextCodec(QTextCodec *textCodec); void slotAboutToRemoveProject(ProjectExplorer::Project *project); signals: void typingSettingsChanged(const TextEditor::TypingSettings &); void storageSettingsChanged(const TextEditor::StorageSettings &); void behaviorSettingsChanged(const TextEditor::BehaviorSettings &); void extraEncodingSettingsChanged(const TextEditor::ExtraEncodingSettings &); void marginSettingsChanged(const TextEditor::MarginSettings &); private: void switchSettings(TextEditor::TextEditorWidget *baseTextEditor) const; const std::unique_ptr d; }; // Return the editor settings in the case it's not null. Otherwise, try to find the project // the file belongs to and return the project settings. If the file doesn't belong to any // project return the global settings. PROJECTEXPLORER_EXPORT TextEditor::TabSettings actualTabSettings( const QString &fileName, const TextEditor::TextDocument *baseTextDocument); } // namespace ProjectExplorer