diff --git a/app/gui/qt/mainwindow.cpp b/app/gui/qt/mainwindow.cpp index b6848319e0..9901ba1686 100644 --- a/app/gui/qt/mainwindow.cpp +++ b/app/gui/qt/mainwindow.cpp @@ -2135,6 +2135,10 @@ void MainWindow::cycleThemes() piSettings->themeStyle = SonicPiTheme::HighContrastMode; } else if (piSettings->themeStyle == SonicPiTheme::HighContrastMode) + { + piSettings->themeStyle = SonicPiTheme::MildDarkMode; + } + else if (piSettings->themeStyle == SonicPiTheme::MildDarkMode) { piSettings->themeStyle = SonicPiTheme::LightMode; } @@ -2160,6 +2164,10 @@ void MainWindow::colourThemeMenuChanged(int themeID) { piSettings->themeStyle = SonicPiTheme::HighContrastMode; } + else if (themeID == 6) + { + piSettings->themeStyle = SonicPiTheme::MildDarkMode; + } else { piSettings->themeStyle = SonicPiTheme::LightMode; @@ -2231,6 +2239,8 @@ void MainWindow::updateColourTheme() proDarkThemeAct->setChecked(false); QSignalBlocker highContrastBlocker(highContrastThemeAct); highContrastThemeAct->setChecked(false); + QSignalBlocker mildDarkBlocker(mildDarkThemeAct); + mildDarkThemeAct->setChecked(false); if (piSettings->themeStyle == SonicPiTheme::LightMode) { @@ -2252,7 +2262,10 @@ void MainWindow::updateColourTheme() { highContrastThemeAct->setChecked(true); } - + else if (piSettings->themeStyle == SonicPiTheme::MildDarkMode) + { + mildDarkThemeAct->setChecked(true); + } theme->switchStyle(piSettings->themeStyle); statusBar()->showMessage(tr("Colour Theme: ") + theme->getName(), 2000); @@ -2980,6 +2993,11 @@ void MainWindow::createToolBar() highContrastThemeAct->setChecked(false); connect(highContrastThemeAct, &QAction::triggered, [this]() { colourThemeMenuChanged(5); }); + mildDarkThemeAct = new QAction(tr("Mild Dark")); + mildDarkThemeAct->setCheckable(true); + mildDarkThemeAct->setChecked(false); + connect(mildDarkThemeAct, &QAction::triggered, [this]() { colourThemeMenuChanged(6); }); + showScopeLabelsAct = new QAction(tr("Show Scope Labels")); showScopeLabelsAct->setCheckable(true); showScopeLabelsAct->setChecked(false); @@ -3001,6 +3019,7 @@ void MainWindow::createToolBar() themeMenu->addAction(proLightThemeAct); themeMenu->addAction(proDarkThemeAct); themeMenu->addAction(highContrastThemeAct); + themeMenu->addAction(mildDarkThemeAct); displayMenu->addSeparator(); displayMenu->addAction(scopeAct); displayMenu->addAction(showScopeLabelsAct); diff --git a/app/gui/qt/mainwindow.h b/app/gui/qt/mainwindow.h index ebf871455e..71a04a7a5b 100644 --- a/app/gui/qt/mainwindow.h +++ b/app/gui/qt/mainwindow.h @@ -421,7 +421,7 @@ class MainWindow : public QMainWindow SonicPiTheme *theme; QToolBar *toolBar; - QAction *exitAct, *runAct, *stopAct, *saveAsAct, *loadFileAct, *recAct, *textAlignAct, *textIncAct, *textDecAct, *scopeAct, *infoAct, *helpAct, *prefsAct, *focusEditorAct, *focusLogsAct, *focusContextAct, *focusCuesAct, *focusPreferencesAct, *focusHelpListingAct, *focusHelpDetailsAct, *focusErrorsAct, *focusBPMScrubberAct, *focusTimeWarpScrubberAct, *showLineNumbersAct, *showAutoCompletionAct, *showContextAct, *audioSafeAct, *audioTimingGuaranteesAct, *enableExternalSynthsAct, *mixerInvertStereoAct, *mixerForceMonoAct, *enableScsynthInputsAct, *midiEnabledAct, *enableOSCServerAct, *allowRemoteOSCAct, *showLogAct, *showCuesAct, *logAutoScrollAct, *logCuesAct, *logSynthsAct, *clearOutputOnRunAct, *autoIndentOnRunAct, *showButtonsAct, *showTabsAct, *fullScreenAct, *lightThemeAct, *darkThemeAct, *proLightThemeAct, *proDarkThemeAct, *highContrastThemeAct, *showScopeLabelsAct, *showTitlesAct, *hideMenuBarInFullscreenAct, *showMetroAct, *enableLinkAct, *linkTapTempoAct; + QAction *exitAct, *runAct, *stopAct, *saveAsAct, *loadFileAct, *recAct, *textAlignAct, *textIncAct, *textDecAct, *scopeAct, *infoAct, *helpAct, *prefsAct, *focusEditorAct, *focusLogsAct, *focusContextAct, *focusCuesAct, *focusPreferencesAct, *focusHelpListingAct, *focusHelpDetailsAct, *focusErrorsAct, *focusBPMScrubberAct, *focusTimeWarpScrubberAct, *showLineNumbersAct, *showAutoCompletionAct, *showContextAct, *audioSafeAct, *audioTimingGuaranteesAct, *enableExternalSynthsAct, *mixerInvertStereoAct, *mixerForceMonoAct, *enableScsynthInputsAct, *midiEnabledAct, *enableOSCServerAct, *allowRemoteOSCAct, *showLogAct, *showCuesAct, *logAutoScrollAct, *logCuesAct, *logSynthsAct, *clearOutputOnRunAct, *autoIndentOnRunAct, *showButtonsAct, *showTabsAct, *fullScreenAct, *lightThemeAct, *darkThemeAct, *proLightThemeAct, *proDarkThemeAct, *highContrastThemeAct, *mildDarkThemeAct, *showScopeLabelsAct, *showTitlesAct, *hideMenuBarInFullscreenAct, *showMetroAct, *enableLinkAct, *linkTapTempoAct; QShortcut *runSc, *stopSc, *saveAsSc, *loadFileSc, *recSc, *textAlignSc, *textIncSc, *textDecSc, *scopeSc, *infoSc, *helpSc, *prefsSc, *focusEditorSc, *focusLogsSc, *focusContextSc, *focusCuesSc, *focusPreferencesSc, *focusHelpListingSc, *focusHelpDetailsSc, *focusErrorsSc, *focusBPMScrubberSc, *focusTimeWarpScrubberSc, *linkTapTempoSc, *enableLinkSc; QActionGroup *langActionGroup; diff --git a/app/gui/qt/model/sonicpitheme.cpp b/app/gui/qt/model/sonicpitheme.cpp index 83b4468d5e..61c8172adc 100644 --- a/app/gui/qt/model/sonicpitheme.cpp +++ b/app/gui/qt/model/sonicpitheme.cpp @@ -28,6 +28,7 @@ SonicPiTheme::SonicPiTheme(QObject *parent, QString customSettingsFilename, QStr qt_app_theme_path = QDir::toNativeSeparators(rootPath + "/app/gui/qt/theme/app.qss"); + qt_browser_mild_dark_css = QDir::toNativeSeparators(rootPath + "/app/gui/qt/theme/milddark/doc-styles.css"); qt_browser_dark_css = QDir::toNativeSeparators(rootPath + "/app/gui/qt/theme/dark/doc-styles.css"); qt_browser_light_css = QDir::toNativeSeparators(rootPath + "/app/gui/qt/theme/light/doc-styles.css"); qt_browser_hc_css = QDir::toNativeSeparators(rootPath + "/app/gui/qt/theme/high_contrast/doc-styles.css"); @@ -63,8 +64,12 @@ void SonicPiTheme::switchStyle(Style style) { this->name = themeStyleToName(style); this->style = style; - if (style == SonicPiTheme::DarkMode){ - darkMode(); + if (style == SonicPiTheme::DarkMode || style == SonicPiTheme::MildDarkMode){ + if (style == SonicPiTheme::DarkMode) { + darkMode(); + } else { + mildDarkMode(); + } runIcon = &default_dark_run_icon; stopIcon = &default_dark_stop_icon; saveAsIcon = &default_dark_save_icon; @@ -191,6 +196,12 @@ QString SonicPiTheme::getName() { return this->name; } +void SonicPiTheme::mildDarkMode() +{ + this->theme = withCustomSettings(mildDarkTheme()); + this->css = ScalePxInStyleSheet(readFile(qt_browser_mild_dark_css)); +} + void SonicPiTheme::darkMode(){ this->theme = withCustomSettings(darkTheme()); this->css = ScalePxInStyleSheet(readFile(qt_browser_dark_css)); @@ -632,6 +643,213 @@ QMap SonicPiTheme::darkTheme(){ } +QMap SonicPiTheme::mildDarkTheme() +{ + QMap themeSettings; + + // Dark Theme Colour Palette + + QString dt_pink = "#ce9178"; + QString dt_white = "white"; + QString dt_lightgrey = "#d4d4d4"; + + QString dt_grey = "#5e5e5e"; // same as button background + QString dt_darkgrey = "#1e1e1e"; + QString dt_ldarkgrey = "#2e2e2e"; + QString dt_vldarkgrey = "#4d4d4d"; + QString dt_vdarkgrey = "#0d0d0d"; + QString dt_black = "#000"; + + QString dt_blue = "#9cdcfe"; + QString dt_dark_blue = "#7db0cb"; + QString dt_gold = "#FBDE2D"; + QString dt_orange = "#f1d700"; + QString dt_not_supported = "white"; + QString dt_warning = "#f44747"; + QString dt_green = "#6A9955"; + + themeSettings["Base"] = dt_darkgrey; + themeSettings["AlternateBase"] = dt_grey; + themeSettings["ToolTipBase"] = dt_grey; + themeSettings["ToolTipText"] = dt_white; + themeSettings["Button"] = dt_darkgrey; + themeSettings["ButtonBorder"] = dt_ldarkgrey; + themeSettings["PressedButton"] = dt_pink; + themeSettings["ButtonText"] = dt_lightgrey; + themeSettings["PressedButtonText"] = dt_vdarkgrey; + themeSettings["HoverButton"] = dt_dark_blue; + themeSettings["Shadow"] = dt_vdarkgrey; + themeSettings["Light"] = dt_lightgrey; + themeSettings["Midlight"] = dt_grey; + themeSettings["Mid"] = dt_darkgrey; + themeSettings["Dark"] = dt_vdarkgrey; + themeSettings["ScrollBar"] = dt_vldarkgrey; + themeSettings["ScrollBarBackground"] = dt_ldarkgrey; + themeSettings["ScrollBarBorder"] = dt_darkgrey; + themeSettings["ScrollBarHover"] = dt_dark_blue; + themeSettings["SliderBackground"] = dt_grey; + themeSettings["SliderBorder"] = dt_grey; + themeSettings["Slider"] = dt_pink; + + themeSettings["Tab"] = dt_grey; + themeSettings["TabText"] = dt_lightgrey; + themeSettings["TabSelected"] = dt_darkgrey; + themeSettings["TabSelectedText"] = dt_lightgrey; + + themeSettings["StatusBar"] = dt_darkgrey; + themeSettings["StatusBarText"] = dt_blue; + + themeSettings["Menu"] = dt_darkgrey; + themeSettings["MenuText"] = dt_lightgrey; + themeSettings["MenuSelected"] = dt_pink; + themeSettings["MenuSelectedText"] = dt_white; + themeSettings["MenuBar"] = dt_darkgrey; + + themeSettings["Foreground"] = dt_lightgrey; + themeSettings["Background"] = dt_darkgrey; + + themeSettings["HighlightedForeground"] = dt_white; + themeSettings["HighlightedBackground"] = dt_pink; + + themeSettings["WindowForeground"] = dt_lightgrey; + themeSettings["WindowBackground"] = dt_darkgrey; + + themeSettings["PaneBackground"] = dt_darkgrey; + themeSettings["WindowInternalBorder"] = dt_vdarkgrey; + themeSettings["WindowBorder"] = dt_vldarkgrey; + + themeSettings["ErrorBackground"] = dt_darkgrey; + + themeSettings["DefaultForeground"] = dt_white; + themeSettings["DefaultBackground"] = dt_darkgrey; + + themeSettings["CommentForeground"] = dt_grey; + themeSettings["CommentBackground"] = dt_darkgrey; + + themeSettings["PODForeground"] = dt_white; + themeSettings["PODBackground"] = dt_warning; + + themeSettings["NumberForeground"] = dt_dark_blue; + themeSettings["NumberBackground"] = dt_darkgrey; + + themeSettings["FunctionMethodNameForeground"] = dt_pink; + themeSettings["FunctionMethodNameBackground"] = dt_darkgrey; + + themeSettings["KeywordForeground"] = dt_gold; + themeSettings["KeywordBackground"] = dt_darkgrey; + + themeSettings["DemotedKeywordForeground"] = dt_gold; + themeSettings["DemotedKeywordBackground"] = dt_darkgrey; + + themeSettings["ClassNameForeground"] = dt_not_supported; + themeSettings["GlobalForeground"] = dt_not_supported; + + themeSettings["SymbolForeground"] = dt_pink; + themeSettings["SymbolBackground"] = dt_darkgrey; + + themeSettings["ModuleNameForeground"] = dt_not_supported; + + themeSettings["InstanceVariableForeground"] = dt_not_supported; + themeSettings["InstanceVariableBackground"] = dt_darkgrey; + + themeSettings["ClassVariableForeground"] = dt_not_supported; + + themeSettings["BackticksForeground"] = dt_warning; + themeSettings["BackticksBackground"] = dt_gold; + + themeSettings["PercentStringxForeground"] = dt_not_supported; + themeSettings["DataSectionForeground"] = dt_not_supported; + themeSettings["DataSectionBackground"] = dt_darkgrey; + + themeSettings["DoubleQuotedStringForeground"] = dt_green; + themeSettings["DoubleQuotedStringBackground"] = dt_darkgrey; + + themeSettings["SingleQuotedStringForeground"] = dt_green; + themeSettings["SingleQuotedStringBackground"] = dt_darkgrey; + + themeSettings["HereDocumentForeground"] = dt_green; + themeSettings["HereDocumentBackground"] = dt_darkgrey; + + themeSettings["PercentStringForeground"] = dt_green; + themeSettings["PercentStringQForeground"] = dt_green; + + themeSettings["RegexForeground"] = dt_green; + themeSettings["RegexBackground"] = dt_darkgrey; + + themeSettings["HereDocumentDelimiterForeground"] = dt_lightgrey; + themeSettings["HereDocumentDelimiterBackground"] = dt_darkgrey; + + themeSettings["PercentStringrForeground"] = dt_green; + themeSettings["PercentStringrBackground"] = dt_darkgrey; + + themeSettings["PercentStringwForeground"] = dt_lightgrey; + themeSettings["PercentStringwBackground"] = dt_darkgrey; + + themeSettings["MarginForeground"] = dt_grey; + themeSettings["MarginBackground"] = dt_darkgrey; + + themeSettings["MarkerBackground"] = dt_pink; + + themeSettings["SelectionForeground"] = dt_lightgrey; + themeSettings["SelectionBackground"] = dt_pink; + + themeSettings["MatchedBraceForeground"] = dt_pink; + themeSettings["MatchedBraceBackground"] = dt_lightgrey; + + themeSettings["BraceForeground"] = dt_lightgrey; + + themeSettings["CaretForeground"] = dt_pink; + themeSettings["CaretLineBackground"] = dt_vdarkgrey; + + themeSettings["IndentationGuidesForeground"] = dt_blue; + themeSettings["FoldMarginForeground"] = dt_black; + + themeSettings["StdinBackground"] = dt_darkgrey; + themeSettings["StdoutBackground"] = dt_darkgrey; + themeSettings["StderrBackground"] = dt_darkgrey; + + themeSettings["Link"] = dt_pink; + themeSettings["LinkVisited"] = dt_pink; + + themeSettings["Scope"] = dt_pink; + themeSettings["Scope_2"] = dt_blue; + + themeSettings["LogForeground"] = dt_lightgrey; + themeSettings["LogBackground"] = dt_darkgrey; + + themeSettings["LogInfoForeground"] = dt_lightgrey; + themeSettings["LogInfoBackground"] = dt_grey; + + themeSettings["LogInfoForeground_1"] = dt_darkgrey; + themeSettings["LogInfoBackground_1"] = dt_pink; + + themeSettings["LogForeground_1"] = dt_blue; + themeSettings["LogBackground_1"] = dt_darkgrey; + + themeSettings["LogForeground_2"] = dt_lightgrey; + themeSettings["LogBackground_2"] = dt_orange; + + themeSettings["LogForeground_3"] = "red"; + themeSettings["LogBackground_3"] = dt_lightgrey; + + themeSettings["LogForeground_4"] = dt_lightgrey; + themeSettings["LogBackground_4"] = dt_pink; + + themeSettings["LogForeground_5"] = dt_lightgrey; + themeSettings["LogBackground_5"] = dt_blue; + + themeSettings["LogForeground_6"] = dt_lightgrey; + themeSettings["LogBackground_6"] = dt_orange; + + themeSettings["CuePathForeground"] = dt_white; + themeSettings["CuePathBackground"] = dt_pink; + themeSettings["CueDataForeground"] = dt_white; + themeSettings["CueDataBackground"] = "#808080"; + + return themeSettings; +} + + QMap SonicPiTheme::highContrastTheme(){ QMap themeSettings; @@ -1295,6 +1513,8 @@ QString SonicPiTheme::themeStyleToName(SonicPiTheme::Style style) { return "Dark Pro"; } else if (style == HighContrastMode) { return "High Contrast"; + } else if (style == MildDarkMode) { + return "Mild Dark"; } else { return "Light"; } @@ -1311,6 +1531,8 @@ SonicPiTheme::Style SonicPiTheme::themeNameToStyle(QString name) { return DarkProMode; } else if (name == "High Contrast") { return HighContrastMode; + } else if (name == "Mild Dark") { + return MildDarkMode; } else { return LightMode; } diff --git a/app/gui/qt/model/sonicpitheme.h b/app/gui/qt/model/sonicpitheme.h index c9fd0aa3a7..d26a72cede 100644 --- a/app/gui/qt/model/sonicpitheme.h +++ b/app/gui/qt/model/sonicpitheme.h @@ -23,13 +23,14 @@ class SonicPiTheme : public QObject { Q_OBJECT public: - enum Style { LightMode, DarkMode, LightProMode, DarkProMode, HighContrastMode }; + enum Style { LightMode, DarkMode, LightProMode, DarkProMode, HighContrastMode, MildDarkMode }; explicit SonicPiTheme(QObject *parent = 0, QString customSettingsFilename="", QString rootPath = ""); ~SonicPiTheme(); QColor color(QString); QString font(QString); void darkMode(); + void mildDarkMode(); void lightMode(); void hcMode(); void updateCustomSettings(); @@ -68,6 +69,7 @@ Q_OBJECT QString rootPath; QString qt_app_theme_path; QString qt_browser_dark_css; + QString qt_browser_mild_dark_css; QString qt_browser_light_css; QString qt_browser_hc_css; @@ -75,6 +77,7 @@ Q_OBJECT QMap withCustomSettings(QMap settings); QMap lightTheme(); + QMap mildDarkTheme(); QMap darkTheme(); QMap highContrastTheme(); QMap theme; diff --git a/app/gui/qt/theme/mild_dark/doc-styles.css b/app/gui/qt/theme/mild_dark/doc-styles.css new file mode 100644 index 0000000000..704a7cd73d --- /dev/null +++ b/app/gui/qt/theme/mild_dark/doc-styles.css @@ -0,0 +1,220 @@ +body { + font-family: Helvetica Neue Light, HelveticaNeue-Light, Helvetica Neue, Liberation Sans; + font-size: large; + color: white; + background-color: black; + line-height: 110%; +} + +ul { + list-style-position: inside; +} + +ul.toc { + list-style-type: none; + +} + +a { + color: #FBDE2D; + text-decoration: none; +} + +em { + color: darkorange; + font-size: large; +} + +.asciilogo { + font-size: large; + color: #808080; +} + +.highlight { + color: deeppink; +} + +.error_description { + font-size: large; + background-color: deeppink; + color: white; +} + +.syntax_error_description { + font-size: large; + background-color: dodgerblue; + color: white; +} + + +.backtrace { + font-size: small; + color: #5e5e5e; +} + +.error_msg { + font-size: x-large; + color: deeppink; +} + +.error_line { + font-size: x-large; + color: #5e5e5e; +} + +.error_msg { + font-size: x-large; + color: deeppink; +} + + +pre { + font-family: "Hack", "Menlo", "Bitstream Vera Sans Mono", "DejaVu Sans Mono", "Liberation Mono", "DroidSansMono", "Lucida Console", Consolas, Terminal, Monaco, "Courier New", monospace; +} + +code { + font-family: "Hack", "Courier New","Menlo", "Bitstream Vera Sans Mono", "DejaVu Sans Mono", "Liberation Mono", "DroidSansMono", "Lucida Console", Consolas, Terminal, Monaco, "Courier New", monospace; + + color: deeppink; +} + +code .symbol { + color: deeppink; +} + +code .number { + color: dodgerblue; +} + +code .keyword { + color: darkorange; +} + +code .info { + color: #5e5e5e; +} + +.version { + font-size: small; +} + +.strapline { + font-size: x-large; +} + +.usage { + color: white; +} + +.usage code { + font-size: x-large; + color: white; + background-color: black; +} + +h1 { + font-size: xx-large; + font-weight: bold; + padding: 2px; + color: white; + background-color: deeppink; +} + +h2 { + font-size: x-large; + font-weight: bold; + padding: 2px; + color: white; + background-color: #5d99f3; +} + +body.info { + font-family: "Hack", "Menlo", "Bitstream Vera Sans Mono", "DejaVu Sans Mono", "Liberation Mono", "DroidSansMono", "Lucida Console", Consolas, Terminal, Monaco, "Courier New", monospace; +} + +body.info a { + color: deeppink; +} + +body.example code { + font-size: x-large; + color: deeppink; +} + +body.manual .introduced { + color: darkorange; + font-size: large; +} + +body.manual table.arguments td { + font-size: large; + padding: 2px; + font-family: "Hack", "Menlo", "Bitstream Vera Sans Mono", "DejaVu Sans Mono", "Liberation Mono", "DroidSansMono", "Lucida Console", Consolas, Terminal, Monaco, "Courier New", monospace; +} + +body.manual table.arguments td.odd, +body.manual table.arguments td.odd a { + background-color: #e8e8e8; + color: #5e5e5e; +} + +body.manual table.arguments td.even, +body.manual table.arguments td.even a { + background-color: #5e5e5e; + color: white; +} + +body.manual table.details td { + padding: 8px; +} + +body.manual table.details td.key { + font-family: "Hack", "Menlo", "Bitstream Vera Sans Mono", "DejaVu Sans Mono", "Liberation Mono", "DroidSansMono", "Lucida Console", Consolas, Terminal, Monaco, "Courier New", monospace; + font-size: x-large; +} + +body.manual table.details td.odd { + background-color: #444; +} + +body.manual table.details td.even { + background-color: #333; +} + +body.manual table.details td.odd.key { + background-color: #032c7f; +} + +body.manual table.details td.even.key { + background-color: #32517f; +} + +body.manual table.details .properties { + font-size: large; + font-style: italic; +} + +body.manual table.examples td { + padding: 8px; +} + +body.manual table.examples code { + color: #fff; + font-size: large; +} + +body.manual table.examples td.odd { + background-color: #444; +} + +body.manual table.examples td.even { + background-color: #333; +} + +body.manual table.examples td.odd.head { + background-color: #032c7f; +} + +body.manual table.examples td.even.head { + background-color: #32517f; +} diff --git a/app/gui/qt/widgets/settingswidget.cpp b/app/gui/qt/widgets/settingswidget.cpp index c1c4209801..a6f0c47ff0 100644 --- a/app/gui/qt/widgets/settingswidget.cpp +++ b/app/gui/qt/widgets/settingswidget.cpp @@ -336,11 +336,13 @@ QGroupBox* SettingsWidget::createEditorPrefsTab() { lightProModeCheck = new QCheckBox(tr("Pro Light")); darkProModeCheck = new QCheckBox(tr("Pro Dark")); highContrastModeCheck = new QCheckBox(tr("High Contrast")); + mildDarkModeCheck = new QCheckBox(tr("Mild Dark")); colourModeButtonGroup->addButton(lightModeCheck, 0); colourModeButtonGroup->addButton(darkModeCheck, 1); colourModeButtonGroup->addButton(lightProModeCheck, 2); colourModeButtonGroup->addButton(darkProModeCheck, 3); colourModeButtonGroup->addButton(highContrastModeCheck, 4); + colourModeButtonGroup->addButton(mildDarkModeCheck, 5); QVBoxLayout *editor_display_box_layout = new QVBoxLayout; QVBoxLayout *editor_show_panels_box_layout = new QVBoxLayout; @@ -369,6 +371,7 @@ QGroupBox* SettingsWidget::createEditorPrefsTab() { editor_box_look_feel_layout->addWidget(lightProModeCheck); editor_box_look_feel_layout->addWidget(darkProModeCheck); editor_box_look_feel_layout->addWidget(highContrastModeCheck); + editor_box_look_feel_layout->addWidget(mildDarkModeCheck); editor_show_panels_box->setLayout(editor_show_panels_box_layout); editor_display_box->setLayout(editor_display_box_layout); @@ -904,6 +907,7 @@ void SettingsWidget::updateSettings() { if (lightProModeCheck->isChecked()) { piSettings->themeStyle = SonicPiTheme::LightProMode; } if (darkProModeCheck->isChecked()) { piSettings->themeStyle = SonicPiTheme::DarkProMode; } if (highContrastModeCheck->isChecked()) { piSettings->themeStyle = SonicPiTheme::HighContrastMode; } + if (mildDarkModeCheck->isChecked()) { piSettings->themeStyle = SonicPiTheme::MildDarkMode; } piSettings->show_scopes = show_scopes->isChecked(); piSettings->show_scope_labels = show_scope_labels->isChecked(); @@ -965,6 +969,7 @@ void SettingsWidget::settingsChanged() { lightProModeCheck->setChecked( piSettings->themeStyle == SonicPiTheme::LightProMode ); darkProModeCheck->setChecked( piSettings->themeStyle == SonicPiTheme::DarkProMode ); highContrastModeCheck->setChecked( piSettings->themeStyle == SonicPiTheme::HighContrastMode ); + mildDarkModeCheck->setChecked(piSettings->themeStyle == SonicPiTheme::MildDarkMode); show_scopes->setChecked(piSettings->show_scopes); show_scope_labels->setChecked(piSettings->show_scope_labels); @@ -1017,6 +1022,7 @@ void SettingsWidget::connectAll() { connect(lightProModeCheck, SIGNAL(clicked()), this, SLOT(updateSettings())); connect(darkProModeCheck, SIGNAL(clicked()), this, SLOT(updateSettings())); connect(highContrastModeCheck, SIGNAL(clicked()), this, SLOT(updateSettings())); + connect(mildDarkModeCheck, SIGNAL(clicked()), this, SLOT(updateSettings())); connect(gui_transparency_slider, SIGNAL(valueChanged(int)), this, SLOT(updateSettings())); connect(show_autocompletion, SIGNAL(clicked()), this, SLOT(updateSettings())); @@ -1035,6 +1041,7 @@ void SettingsWidget::connectAll() { connect(lightProModeCheck, SIGNAL(clicked()), this, SLOT(updateColourTheme())); connect(darkProModeCheck, SIGNAL(clicked()), this, SLOT(updateColourTheme())); connect(highContrastModeCheck, SIGNAL(clicked()), this, SLOT(updateColourTheme())); + connect(mildDarkModeCheck, SIGNAL(clicked()), this, SLOT(updateColourTheme())); connect(gui_transparency_slider, SIGNAL(valueChanged(int)), this, SLOT(updateTransparency(int))); connect(show_scope_labels, SIGNAL(clicked()), this, SLOT(updateSettings())); diff --git a/app/gui/qt/widgets/settingswidget.h b/app/gui/qt/widgets/settingswidget.h index f984f0d48c..3286e3d046 100644 --- a/app/gui/qt/widgets/settingswidget.h +++ b/app/gui/qt/widgets/settingswidget.h @@ -159,6 +159,7 @@ private slots: QCheckBox *lightProModeCheck; QCheckBox *darkProModeCheck; QCheckBox *highContrastModeCheck; + QCheckBox* mildDarkModeCheck; QSignalMapper *scopeSignalMap; QCheckBox *show_scope_labels;