Browse Source

Add settings for theme (on/off + 2 colors)

tags/1.9.4
falkTX 12 years ago
parent
commit
ea00f220d2
5 changed files with 273 additions and 9 deletions
  1. +103
    -4
      resources/ui/carla_settings.ui
  2. +20
    -2
      source/backend/standalone/CarlaStandalone.cpp
  3. +17
    -3
      source/carla.py
  4. +120
    -0
      source/theme/CarlaStyle.cpp
  5. +13
    -0
      source/theme/CarlaStyle.hpp

+ 103
- 4
resources/ui/carla_settings.ui View File

@@ -267,6 +267,73 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>Theme</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0" colspan="3">
<widget class="QCheckBox" name="ch_theme_pro">
<property name="text">
<string>Use Carla &quot;PRO&quot; theme (needs restart)</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Color scheme:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="cb_theme_color">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Black</string>
</property>
</item>
<item>
<property name="text">
<string>Blue</string>
</property>
</item>
<item>
<property name="text">
<string>System</string>
</property>
</item>
</widget>
</item>
<item row="1" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>138</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
@@ -1164,12 +1231,44 @@ This mode is not available for VST plugins.</string>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>385</x>
<y>227</y>
<x>227</x>
<y>34</y>
</hint>
<hint type="destinationlabel">
<x>227</x>
<y>43</y>
</hint>
</hints>
</connection>
<connection>
<sender>ch_theme_pro</sender>
<signal>toggled(bool)</signal>
<receiver>label_2</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>228</x>
<y>152</y>
</hint>
<hint type="destinationlabel">
<x>249</x>
<y>165</y>
</hint>
</hints>
</connection>
<connection>
<sender>ch_theme_pro</sender>
<signal>toggled(bool)</signal>
<receiver>cb_theme_color</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>215</x>
<y>149</y>
</hint>
<hint type="destinationlabel">
<x>385</x>
<y>299</y>
<x>314</x>
<y>167</y>
</hint>
</hints>
</connection>


+ 20
- 2
source/backend/standalone/CarlaStandalone.cpp View File

@@ -25,7 +25,7 @@
#include "CarlaNative.h"
#include "CarlaStyle.hpp"

#include <QtCore/Qt>
#include <QtCore/QSettings>

#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
# include <QtWidgets/QApplication>
@@ -63,7 +63,25 @@ struct CarlaBackendStandalone {
needsInit(app == nullptr)
{
if (app != nullptr)
app->setStyle(new CarlaStyle());
{
QSettings settings;

if (settings.value("Main/UseProTheme", true).toBool())
{
CarlaStyle* const style(new CarlaStyle());
app->setStyle(style);
style->ready(app);

QString color(settings.value("Main/ProThemeColor", "Black").toString());

if (color == "Blue")
style->setColorScheme(CarlaStyle::COLOR_BLUE);
else if (color == "System")
pass(); //style->setColorScheme(CarlaStyle::COLOR_SYSTEM);
else
style->setColorScheme(CarlaStyle::COLOR_BLACK);
}
}
}

~CarlaBackendStandalone()


+ 17
- 3
source/carla.py View File

@@ -141,8 +141,18 @@ class CarlaSettingsW(QDialog):
# ---------------------------------------

self.ui.le_main_def_folder.setText(settings.value("Main/DefaultProjectFolder", HOME, type=str))
self.ui.ch_theme_pro.setChecked(settings.value("Main/UseProTheme", True, type=bool))
self.ui.sb_gui_refresh.setValue(settings.value("Main/RefreshInterval", 50, type=int))

themeColor = settings.value("Main/ProThemeColor", "Black", type=str)

if themeColor == "Blue":
self.ui.cb_theme_color.setCurrentIndex(1)
elif themeColor == "System":
self.ui.cb_theme_color.setCurrentIndex(2)
else:
self.ui.cb_theme_color.setCurrentIndex(0)

# ---------------------------------------

self.ui.cb_canvas_hide_groups.setChecked(settings.value("Canvas/AutoHideGroups", False, type=bool))
@@ -152,12 +162,12 @@ class CarlaSettingsW(QDialog):
self.ui.cb_canvas_render_aa.setCheckState(settings.value("Canvas/Antialiasing", CANVAS_ANTIALIASING_SMALL, type=int))
self.ui.cb_canvas_render_hq_aa.setChecked(settings.value("Canvas/HighQualityAntialiasing", False, type=bool))

themeName = settings.value("Canvas/Theme", patchcanvas.getDefaultThemeName(), type=str)
canvasThemeName = settings.value("Canvas/Theme", patchcanvas.getDefaultThemeName(), type=str)

for i in range(patchcanvas.Theme.THEME_MAX):
thisThemeName = patchcanvas.getThemeName(i)
self.ui.cb_canvas_theme.addItem(thisThemeName)
if thisThemeName == themeName:
if thisThemeName == canvasThemeName:
self.ui.cb_canvas_theme.setCurrentIndex(i)

# --------------------------------------------
@@ -240,8 +250,10 @@ class CarlaSettingsW(QDialog):

# ---------------------------------------

settings.setValue("Main/RefreshInterval", self.ui.sb_gui_refresh.value())
settings.setValue("Main/DefaultProjectFolder", self.ui.le_main_def_folder.text())
settings.setValue("Main/UseProTheme", self.ui.ch_theme_pro.isChecked())
settings.setValue("Main/ProThemeColor", self.ui.cb_theme_color.currentText())
settings.setValue("Main/RefreshInterval", self.ui.sb_gui_refresh.value())

# ---------------------------------------

@@ -317,6 +329,8 @@ class CarlaSettingsW(QDialog):
def slot_resetSettings(self):
if self.ui.lw_page.currentRow() == TAB_INDEX_MAIN:
self.ui.le_main_def_folder.setText(HOME)
self.ui.ch_theme_pro.setChecked(True)
self.ui.cb_theme_color.setCurrentIndex(0)
self.ui.sb_gui_refresh.setValue(50)

elif self.ui.lw_page.currentRow() == TAB_INDEX_CANVAS:


+ 120
- 0
source/theme/CarlaStyle.cpp View File

@@ -18,6 +18,8 @@

#include "CarlaStylePrivate.hpp"

#include <QtCore/QDebug>

#include <QtCore/QStringBuilder>
#include <QtGui/QPainter>
#include <QtGui/QPixmapCache>
@@ -344,6 +346,124 @@ CarlaStyle::~CarlaStyle()
{
}

void CarlaStyle::setColorScheme(ColorScheme color)
{
switch (color)
{
case COLOR_BLACK:
qApp->setPalette(fPalBlack);
break;
case COLOR_BLUE:
qApp->setPalette(fPalBlue);
break;
case COLOR_SYSTEM:
qApp->setPalette(fPalSystem);
break;
}
}

void printPalette(const QPalette& pal)
{
#define PAL "fPalBlue"

#define PAL_PRINT(ROLE) \
{ \
QColor color1(pal.color(QPalette::Disabled, ROLE)); \
QColor color2(pal.color(QPalette::Active, ROLE)); \
QColor color3(pal.color(QPalette::Inactive, ROLE)); \
printf(PAL ".setColor(QPalette::Disabled, " #ROLE ", QColor(%i, %i, %i));\n", color1.red(), color1.green(), color1.blue()); \
printf(PAL ".setColor(QPalette::Active, " #ROLE ", QColor(%i, %i, %i));\n", color2.red(), color2.green(), color2.blue()); \
printf(PAL ".setColor(QPalette::Inactive, " #ROLE ", QColor(%i, %i, %i));\n", color3.red(), color3.green(), color3.blue()); \
}

PAL_PRINT(QPalette::Window)
PAL_PRINT(QPalette::WindowText)
PAL_PRINT(QPalette::WindowText)
PAL_PRINT(QPalette::Base)
PAL_PRINT(QPalette::AlternateBase)
PAL_PRINT(QPalette::ToolTipBase)
PAL_PRINT(QPalette::ToolTipText)
PAL_PRINT(QPalette::Text)
PAL_PRINT(QPalette::Button)
PAL_PRINT(QPalette::ButtonText)
PAL_PRINT(QPalette::BrightText)

#undef PAL
}

void CarlaStyle::ready(QApplication* app)
{
fPalSystem = app->palette();

fPalBlack.setColor(QPalette::Disabled, QPalette::Window, QColor(14, 14, 14));
fPalBlack.setColor(QPalette::Active, QPalette::Window, QColor(17, 17, 17));
fPalBlack.setColor(QPalette::Inactive, QPalette::Window, QColor(17, 17, 17));
fPalBlack.setColor(QPalette::Disabled, QPalette::WindowText, QColor(83, 83, 83));
fPalBlack.setColor(QPalette::Active, QPalette::WindowText, QColor(240, 240, 240));
fPalBlack.setColor(QPalette::Inactive, QPalette::WindowText, QColor(240, 240, 240));
fPalBlack.setColor(QPalette::Disabled, QPalette::WindowText, QColor(83, 83, 83));
fPalBlack.setColor(QPalette::Active, QPalette::WindowText, QColor(240, 240, 240));
fPalBlack.setColor(QPalette::Inactive, QPalette::WindowText, QColor(240, 240, 240));
fPalBlack.setColor(QPalette::Disabled, QPalette::Base, QColor(6, 6, 6));
fPalBlack.setColor(QPalette::Active, QPalette::Base, QColor(7, 7, 7));
fPalBlack.setColor(QPalette::Inactive, QPalette::Base, QColor(7, 7, 7));
fPalBlack.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(12, 12, 12));
fPalBlack.setColor(QPalette::Active, QPalette::AlternateBase, QColor(14, 14, 14));
fPalBlack.setColor(QPalette::Inactive, QPalette::AlternateBase, QColor(14, 14, 14));
fPalBlack.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(4, 4, 4));
fPalBlack.setColor(QPalette::Active, QPalette::ToolTipBase, QColor(4, 4, 4));
fPalBlack.setColor(QPalette::Inactive, QPalette::ToolTipBase, QColor(4, 4, 4));
fPalBlack.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(230, 230, 230));
fPalBlack.setColor(QPalette::Active, QPalette::ToolTipText, QColor(230, 230, 230));
fPalBlack.setColor(QPalette::Inactive, QPalette::ToolTipText, QColor(230, 230, 230));
fPalBlack.setColor(QPalette::Disabled, QPalette::Text, QColor(74, 74, 74));
fPalBlack.setColor(QPalette::Active, QPalette::Text, QColor(230, 230, 230));
fPalBlack.setColor(QPalette::Inactive, QPalette::Text, QColor(230, 230, 230));
fPalBlack.setColor(QPalette::Disabled, QPalette::Button, QColor(24, 24, 24));
fPalBlack.setColor(QPalette::Active, QPalette::Button, QColor(28, 28, 28));
fPalBlack.setColor(QPalette::Inactive, QPalette::Button, QColor(28, 28, 28));
fPalBlack.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(90, 90, 90));
fPalBlack.setColor(QPalette::Active, QPalette::ButtonText, QColor(240, 240, 240));
fPalBlack.setColor(QPalette::Inactive, QPalette::ButtonText, QColor(240, 240, 240));
fPalBlack.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
fPalBlack.setColor(QPalette::Active, QPalette::BrightText, QColor(255, 255, 255));
fPalBlack.setColor(QPalette::Inactive, QPalette::BrightText, QColor(255, 255, 255));

fPalBlue.setColor(QPalette::Disabled, QPalette::Window, QColor(32, 35, 39));
fPalBlue.setColor(QPalette::Active, QPalette::Window, QColor(37, 40, 45));
fPalBlue.setColor(QPalette::Inactive, QPalette::Window, QColor(37, 40, 45));
fPalBlue.setColor(QPalette::Disabled, QPalette::WindowText, QColor(89, 95, 104));
fPalBlue.setColor(QPalette::Active, QPalette::WindowText, QColor(223, 237, 255));
fPalBlue.setColor(QPalette::Inactive, QPalette::WindowText, QColor(223, 237, 255));
fPalBlue.setColor(QPalette::Disabled, QPalette::WindowText, QColor(89, 95, 104));
fPalBlue.setColor(QPalette::Active, QPalette::WindowText, QColor(223, 237, 255));
fPalBlue.setColor(QPalette::Inactive, QPalette::WindowText, QColor(223, 237, 255));
fPalBlue.setColor(QPalette::Disabled, QPalette::Base, QColor(48, 53, 60));
fPalBlue.setColor(QPalette::Active, QPalette::Base, QColor(55, 61, 69));
fPalBlue.setColor(QPalette::Inactive, QPalette::Base, QColor(55, 61, 69));
fPalBlue.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(60, 64, 67));
fPalBlue.setColor(QPalette::Active, QPalette::AlternateBase, QColor(69, 73, 77));
fPalBlue.setColor(QPalette::Inactive, QPalette::AlternateBase, QColor(69, 73, 77));
fPalBlue.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(182, 193, 208));
fPalBlue.setColor(QPalette::Active, QPalette::ToolTipBase, QColor(182, 193, 208));
fPalBlue.setColor(QPalette::Inactive, QPalette::ToolTipBase, QColor(182, 193, 208));
fPalBlue.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(42, 44, 48));
fPalBlue.setColor(QPalette::Active, QPalette::ToolTipText, QColor(42, 44, 48));
fPalBlue.setColor(QPalette::Inactive, QPalette::ToolTipText, QColor(42, 44, 48));
fPalBlue.setColor(QPalette::Disabled, QPalette::Text, QColor(96, 103, 113));
fPalBlue.setColor(QPalette::Active, QPalette::Text, QColor(210, 222, 240));
fPalBlue.setColor(QPalette::Inactive, QPalette::Text, QColor(210, 222, 240));
fPalBlue.setColor(QPalette::Disabled, QPalette::Button, QColor(51, 55, 62));
fPalBlue.setColor(QPalette::Active, QPalette::Button, QColor(59, 63, 71));
fPalBlue.setColor(QPalette::Inactive, QPalette::Button, QColor(59, 63, 71));
fPalBlue.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(98, 104, 114));
fPalBlue.setColor(QPalette::Active, QPalette::ButtonText, QColor(210, 222, 240));
fPalBlue.setColor(QPalette::Inactive, QPalette::ButtonText, QColor(210, 222, 240));
fPalBlue.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
fPalBlue.setColor(QPalette::Active, QPalette::BrightText, QColor(255, 255, 255));
fPalBlue.setColor(QPalette::Inactive, QPalette::BrightText, QColor(255, 255, 255));
}

/*!
\fn void CarlaStyle::drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette,
bool enabled, const QString& text, QPalette::ColorRole textRole) const


+ 13
- 0
source/theme/CarlaStyle.hpp View File

@@ -37,6 +37,15 @@ public:
CarlaStyle();
~CarlaStyle();

enum ColorScheme {
COLOR_BLACK = 0,
COLOR_BLUE = 1,
COLOR_SYSTEM = 2
};

void ready(QApplication* app);
void setColorScheme(ColorScheme color);

QPalette standardPalette() const;
void drawPrimitive(PrimitiveElement elem,
const QStyleOption *option,
@@ -60,6 +69,10 @@ public:
void unpolish(QWidget *widget);

private:
QPalette fPalBlack;
QPalette fPalBlue;
QPalette fPalSystem;

CarlaStylePrivate* const d;
friend class CarlaStylePrivate;
};


Loading…
Cancel
Save