forked from qt-creator/qt-creator
TextEditor: Define Color Scheme entry per Theme
The TextEditor settings do not remember a global Color Scheme setting, anymore, but rather a Color Scheme ber Theme. A .creatortheme can define a default TextEditor Color Scheme (overridable in the settings). This makes switching of schemes more pleasant. Taks-number: QTCREATORBUG-15229 Change-Id: I3bd36a4dfa23feea2254be2df50fce064e8fe2af Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com> Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
[General]
|
[General]
|
||||||
ThemeName=dark
|
ThemeName=dark
|
||||||
PreferredStyles=Fusion
|
PreferredStyles=Fusion
|
||||||
|
DefaultTextEditorColorScheme=dark.xml
|
||||||
|
|
||||||
[Palette]
|
[Palette]
|
||||||
shadowBackground=ff232323
|
shadowBackground=ff232323
|
||||||
|
|||||||
@@ -83,6 +83,11 @@ QStringList Theme::preferredStyles() const
|
|||||||
return d->preferredStyles;
|
return d->preferredStyles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Theme::defaultTextEditorColorScheme() const
|
||||||
|
{
|
||||||
|
return d->defaultTextEditorColorScheme;
|
||||||
|
}
|
||||||
|
|
||||||
QString Theme::id() const
|
QString Theme::id() const
|
||||||
{
|
{
|
||||||
return d->id;
|
return d->id;
|
||||||
@@ -182,6 +187,8 @@ void Theme::readSettings(QSettings &settings)
|
|||||||
d->displayName = settings.value(QLatin1String("ThemeName"), QLatin1String("unnamed")).toString();
|
d->displayName = settings.value(QLatin1String("ThemeName"), QLatin1String("unnamed")).toString();
|
||||||
d->preferredStyles = settings.value(QLatin1String("PreferredStyles")).toStringList();
|
d->preferredStyles = settings.value(QLatin1String("PreferredStyles")).toStringList();
|
||||||
d->preferredStyles.removeAll(QLatin1String(""));
|
d->preferredStyles.removeAll(QLatin1String(""));
|
||||||
|
d->defaultTextEditorColorScheme =
|
||||||
|
settings.value(QLatin1String("DefaultTextEditorColorScheme")).toString();
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
settings.beginGroup(QLatin1String("Palette"));
|
settings.beginGroup(QLatin1String("Palette"));
|
||||||
|
|||||||
@@ -274,6 +274,7 @@ public:
|
|||||||
QGradientStops gradient(Gradient role) const;
|
QGradientStops gradient(Gradient role) const;
|
||||||
QPalette palette() const;
|
QPalette palette() const;
|
||||||
QStringList preferredStyles() const;
|
QStringList preferredStyles() const;
|
||||||
|
QString defaultTextEditorColorScheme() const;
|
||||||
|
|
||||||
QString id() const;
|
QString id() const;
|
||||||
QString filePath() const;
|
QString filePath() const;
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ public:
|
|||||||
QString fileName;
|
QString fileName;
|
||||||
QString displayName;
|
QString displayName;
|
||||||
QStringList preferredStyles;
|
QStringList preferredStyles;
|
||||||
|
QString defaultTextEditorColorScheme;
|
||||||
QVector<QPair<QColor, QString> > colors;
|
QVector<QPair<QColor, QString> > colors;
|
||||||
QVector<QString> imageFiles;
|
QVector<QString> imageFiles;
|
||||||
QVector<QGradientStops> gradients;
|
QVector<QGradientStops> gradients;
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
|
#include <utils/theme/theme.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
@@ -41,7 +42,7 @@ static const char fontFamilyKey[] = "FontFamily";
|
|||||||
static const char fontSizeKey[] = "FontSize";
|
static const char fontSizeKey[] = "FontSize";
|
||||||
static const char fontZoomKey[] = "FontZoom";
|
static const char fontZoomKey[] = "FontZoom";
|
||||||
static const char antialiasKey[] = "FontAntialias";
|
static const char antialiasKey[] = "FontAntialias";
|
||||||
static const char schemeFileNameKey[] = "ColorScheme";
|
static const char schemeFileNamesKey[] = "ColorSchemes";
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
static const bool DEFAULT_ANTIALIAS = true;
|
static const bool DEFAULT_ANTIALIAS = true;
|
||||||
@@ -85,8 +86,11 @@ void FontSettings::toSettings(const QString &category,
|
|||||||
if (m_antialias != DEFAULT_ANTIALIAS || s->contains(QLatin1String(antialiasKey)))
|
if (m_antialias != DEFAULT_ANTIALIAS || s->contains(QLatin1String(antialiasKey)))
|
||||||
s->setValue(QLatin1String(antialiasKey), m_antialias);
|
s->setValue(QLatin1String(antialiasKey), m_antialias);
|
||||||
|
|
||||||
if (m_schemeFileName != defaultSchemeFileName() || s->contains(QLatin1String(schemeFileNameKey)))
|
auto schemeFileNames = s->value(QLatin1String(schemeFileNamesKey)).toMap();
|
||||||
s->setValue(QLatin1String(schemeFileNameKey), m_schemeFileName);
|
if (m_schemeFileName != defaultSchemeFileName() || schemeFileNames.contains(Utils::creatorTheme()->id())) {
|
||||||
|
schemeFileNames.insert(Utils::creatorTheme()->id(), m_schemeFileName);
|
||||||
|
s->setValue(QLatin1String(schemeFileNamesKey), schemeFileNames);
|
||||||
|
}
|
||||||
|
|
||||||
s->endGroup();
|
s->endGroup();
|
||||||
}
|
}
|
||||||
@@ -108,13 +112,14 @@ bool FontSettings::fromSettings(const QString &category,
|
|||||||
m_fontZoom= s->value(group + QLatin1String(fontZoomKey), m_fontZoom).toInt();
|
m_fontZoom= s->value(group + QLatin1String(fontZoomKey), m_fontZoom).toInt();
|
||||||
m_antialias = s->value(group + QLatin1String(antialiasKey), DEFAULT_ANTIALIAS).toBool();
|
m_antialias = s->value(group + QLatin1String(antialiasKey), DEFAULT_ANTIALIAS).toBool();
|
||||||
|
|
||||||
if (s->contains(group + QLatin1String(schemeFileNameKey))) {
|
if (s->contains(group + QLatin1String(schemeFileNamesKey))) {
|
||||||
// Load the selected color scheme
|
// Load the selected color scheme for the current theme
|
||||||
QString scheme = s->value(group + QLatin1String(schemeFileNameKey)).toString();
|
auto schemeFileNames = s->value(group + QLatin1String(schemeFileNamesKey)).toMap();
|
||||||
if (scheme.isEmpty() || !QFile::exists(scheme))
|
if (schemeFileNames.contains(Utils::creatorTheme()->id())) {
|
||||||
scheme = defaultSchemeFileName(Utils::FileName::fromString(scheme).fileName());
|
const QString scheme = schemeFileNames.value(Utils::creatorTheme()->id()).toString();
|
||||||
loadColorScheme(scheme, descriptions);
|
loadColorScheme(scheme, descriptions);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -368,10 +373,15 @@ QString FontSettings::defaultSchemeFileName(const QString &fileName)
|
|||||||
QString defaultScheme = Core::ICore::resourcePath();
|
QString defaultScheme = Core::ICore::resourcePath();
|
||||||
defaultScheme += QLatin1String("/styles/");
|
defaultScheme += QLatin1String("/styles/");
|
||||||
|
|
||||||
if (!fileName.isEmpty() && QFile::exists(defaultScheme + fileName))
|
if (!fileName.isEmpty() && QFile::exists(defaultScheme + fileName)) {
|
||||||
defaultScheme += fileName;
|
defaultScheme += fileName;
|
||||||
|
} else {
|
||||||
|
const QString themeScheme = Utils::creatorTheme()->defaultTextEditorColorScheme();
|
||||||
|
if (!themeScheme.isEmpty() && QFile::exists(defaultScheme + themeScheme))
|
||||||
|
defaultScheme += themeScheme;
|
||||||
else
|
else
|
||||||
defaultScheme += QLatin1String("default.xml");
|
defaultScheme += QLatin1String("default.xml");
|
||||||
|
}
|
||||||
|
|
||||||
return defaultScheme;
|
return defaultScheme;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/stringutils.h>
|
#include <utils/stringutils.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/theme/theme.h>
|
||||||
|
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QFontDatabase>
|
#include <QFontDatabase>
|
||||||
@@ -346,6 +347,9 @@ QWidget *FontSettingsPage::widget()
|
|||||||
d_ptr->m_widget = new QWidget;
|
d_ptr->m_widget = new QWidget;
|
||||||
d_ptr->m_ui = new Ui::FontSettingsPage;
|
d_ptr->m_ui = new Ui::FontSettingsPage;
|
||||||
d_ptr->m_ui->setupUi(d_ptr->m_widget);
|
d_ptr->m_ui->setupUi(d_ptr->m_widget);
|
||||||
|
d_ptr->m_ui->colorSchemeGroupBox->setTitle(
|
||||||
|
tr("Color Scheme for Qt Creator Theme \"%1\"")
|
||||||
|
.arg(Utils::creatorTheme()->displayName()));
|
||||||
d_ptr->m_ui->schemeComboBox->setModel(d_ptr->m_schemeListModel);
|
d_ptr->m_ui->schemeComboBox->setModel(d_ptr->m_schemeListModel);
|
||||||
|
|
||||||
d_ptr->m_ui->fontComboBox->setCurrentFont(d_ptr->m_value.family());
|
d_ptr->m_ui->fontComboBox->setCurrentFont(d_ptr->m_value.family());
|
||||||
|
|||||||
Reference in New Issue
Block a user