Merge pull request #3202 from Beep6581/theme_selection

Fixes theme selection in gtk3 and adds TooWaBlue theme
This commit is contained in:
Beep6581
2016-03-11 18:07:49 +01:00
3 changed files with 641 additions and 32 deletions

640
rtdata/themes/TooWaBlue.css Normal file
View File

@@ -0,0 +1,640 @@
/*
This file is part of RawTherapee.
Copyright (c) 2016 TooWaBoo (v1.09)
Many thanks to the RawTherapee Developer Team for this great piece of software
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
RawTherapee is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
*/
/*** Change me *** rgb(red,green,blue) *** allowed values from 0 to 255 for each color ***/
@define-color accent-color rgb(35,99,166); /*** Highlight/selected color for List, Dropdown menu, Borders ... ***/
@define-color text-hl-color rgb(210,210,210); /*** Highlight/selected text color ***/
@define-color accent-color2 rgb(35,99,166); /*** Slider, Progressbar, Scrollbar, Tab indicator ***/
@define-color accent-color3 rgb(35,99,166); /*** Selected thumbnail background color ***/
@define-color text-hl-color3 rgb(210,210,210); /*** Selected thumbnail text color ***/
/*** Change me end ************************************************************************/
@define-color text-color #B0B0B0;
@define-color text-hl-color2 #C0C0C0;
@define-color text-tbEntry #C0C0C0;
@define-color bg-dark-grey #262626;
@define-color bg-grey #474747;
@define-color bg-light-grey #595959;
@define-color border-color rgba(255,255,255,.25);
@define-color bg-list-hover rgba(255,255,255,.065);
@define-color bg-button rgba(0,0,0,.14);
@define-color bg-button-border rgba(0,0,0,.20);
@define-color bg-button-hover rgba(0,0,0,.28);
@define-color bg-button-checked @bg-dark-grey;
* {
color: @text-color;
-GtkDialog-action-area-border: 0;
-GtkDialog-content-area-border: 10;
transition: none;
text-shadow: none;
icon-shadow: none;
box-shadow: none;
outline-style: none; /* removes the ugly dotted focus line */
border-image: none;
}
.undershoot.top,
.undershoot.right,
.undershoot.bottom,
.undershoot.left {
background-image: none; /* removes the dotted scrollbar line */
}
GtkWindow {
background-color: @bg-light-grey;
}
GtkDialog {
background-color: @bg-grey;
}
GtkFrame {
border: none;
border-top: 3px solid transparent;
border-bottom: 4px solid transparent;
}
/*** Menu bubble box ***/
GtkPopover {
background-color: @bg-dark-grey;
border: 1px solid @accent-color;
border-radius: 0;
}
.menu {
background-color: @bg-dark-grey;
border: 1px solid @accent-color;
}
.menuitem {
padding: 3px 4px;
}
.menuitem:hover {
background-color: @accent-color;
}
.menuitem:hover * {
color: @text-hl-color;
}
GtkNotebook {
padding: 4px;
background-color: @bg-light-grey;
}
GtkPaned {
-GtkPaned-handle-size: 4px;
background-color: transparent;
}
.pane-separator {
background-color: @bg-light-grey;
}
.separator {
color: @bg-light-grey;
}
/*** Background color picture area***/
GtkDrawingArea {
background-color: @bg-grey;
}
/*** Histogram ***/
GtkGrid GtkContainer GtkDrawingArea:nth-child(1) {
background-color: @bg-dark-grey;
border: 1px solid #787878;
}
/*** Histogram RGB-Bar***/
GtkGrid GtkContainer GtkDrawingArea:nth-child(2) {
background-color: #787878;
border: none;
}
#RightNotebook GtkDrawingArea {
background-color: @bg-dark-grey;
border: none;
}
/*** Label ***/
.label {
padding: 0px 4px;
}
GtkDialog .label,
#ToolPanelNotebook .label,
.notebook tab .label {
padding: 0;
}
#ToolPanelNotebook .button .label {
padding: 0 0 2px;
}
.notebook tab .label {
padding: 0 2px;
}
.frame > .label,
#ToolPanelNotebook .frame > .label {
padding: 4px 5px;
}
/*** end ***/
.tooltip {
background-color: @bg-dark-grey;
border: 1px solid @accent-color;
border-radius: 0;
padding: 0;
}
#partialPasteHeaderSep {color: @accent-color;}
#partialPasteHeader * {color: @text-hl-color2;}
#RightNotebook {
padding-top: 0;
padding-right: 0;
padding-bottom: 0;
}
#RightNotebook .frame {
padding-top: 0;
padding-right: 0;
padding-bottom: 0;
border-top: none;
border-right: none;
border-bottom: none;
}
/*** Scrollbar ***/
.scrollbar.trough {
background-color: rgba(0,0,0,.38);
background-image: none;
border: none;
}
.scrollbar.slider:active {
background-color: shade(@accent-color2,1.12);
}
/*** end ***/
/*** Scale & Progressbar ***/
.scale {
-GtkRange-trough-border: 6;
-GtkScale-slider-length: 15;
-GtkRange-slider-width: 15;
}
.scale.trough {
background-color: @bg-button;
border-color: @bg-dark-grey;
}
.scale.slider, .scale.trough.highlight,
#ToolPanelNotebook .scale.slider {
background-image: none;
background-color: @accent-color2;
border-color: @bg-dark-grey;
color: @text-hl-color2;
}
.scale.slider:active {
border-color: shade (@accent-color2,.55);
}
.scale.fine-tune {
-GtkRange-trough-border: 5;
}
GtkProgressBar {
-GtkProgressBar-min-vertical-bar-width: 8;
-GtkProgressBar-min-horizontal-bar-height: 8;
-GtkProgressBar-yspacing: 6px;
border-radius: 10px;
}
.progressbar {
background-image: none;
background-color: @accent-color2;
border-color: @bg-dark-grey;
}
GtkProgressBar.trough {
background-image: none;
background-color: @bg-button;
}
#MainNotebook > GtkGrid GtkProgressBar.trough {
background-image: none;
background-color: @bg-dark-grey;
border-color: @bg-dark-grey;
}
/*** end ***/
/*** Load/Save ***/
GtkFileChooserWidget {
background-color: transparent;
}
GtkFileChooserWidget GtkBox {
background-color: transparent;
}
GtkFileChooserWidget GtkListBox * {
padding-top: 1px;
padding-bottom: 1px;
}
GtkFileChooserWidget GtkListBox {
background-color: @bg-dark-grey;
}
GtkFileChooserWidget .list-row * {
padding: 1px 4px;
}
GtkFileChooserWidget .list-row:hover {
background-color: @bg-list-hover;
}
GtkFileChooserWidget .list-row:hover * {
color: @text-hl-color2;
}
GtkFileChooserWidget .list-row:selected {
background-color: @accent-color;
}
GtkFileChooserWidget .list-row:selected * {
color: @text-hl-color;
}
/*** end ***/
/*** Metadata ***/
#MetaPanelNotebook {
background-color: @bg-grey;
}
#MetaPanelNotebook .header {
background-color: @bg-dark-grey;
}
/*** end ***/
/*** Tab Bars ***/
.notebook tab, .notebook.header {
background-color: @bg-dark-grey;
border-color: @bg-dark-grey;
}
.notebook tab.top {
border-width: 0 0 4px 0;
}
.notebook tab.left {
border-width: 0 4px 0 0;
}
#RightNotebook tab.left, GtkDialog tab {
padding: 8px;
}
#ToolPanelNotebook > tab{
padding: 10px 4px 7px;
}
#MetaPanelNotebook tab {
padding: 6px 4px;
background-color: @bg-dark-grey;
}
.notebook tab:active {
border-color: @accent-color2;
}
/*** end ***/
/*** File Browser ***/
#FileBrowser GtkDrawingArea {
background-color: @bg-grey;
}
#FileBrowser GtkDrawingArea:selected {
background-color: @accent-color3;
color: @text-hl-color3;
}
/*** end ***/
/*** Image ***/
GtkImage {
padding: 0;
}
#MainNotebook > GtkGrid GtkImage {
padding: 1px;
}
#ToolPanelNotebook GtkImage{
padding: 0 4px;
}
#ToolPanelNotebook tab GtkImage,
#ToolPanelNotebook .button GtkImage {
padding: 1px 0;
}
GtkDialog .button GtkImage{
padding: 0;
}
GtkFileChooserWidget .button GtkImage{
padding: 0 4px;
}
/*** end ***/
/*** Toolpanel ***/
#ToolPanelNotebook {
background-color: @bg-dark-grey;
padding: 0;
border-top: 4px solid @bg-dark-grey;
}
#ToolPanelNotebook GtkScrolledWindow GtkViewport.frame {
padding: 0 4px;
}
#ToolPanelNotebook .separator {
color: transparent;
}
#ToolPanelNotebook GtkFrame, #PrefNotebook GtkFrame {
border: 1px solid @border-color;
border-radius: 0;
padding: 5px;
}
#ToolPanelNotebook GtkDrawingArea {
background-color: @bg-dark-grey;
border-color: @bg-light-grey;
}
#ToolPanelNotebook GtkDrawingArea {
border-radius: 1px; /* BUG: if 0, scale mini sliders look funny */
}
#ExpanderBox #ExpanderBox, #ExpanderBox2, #ExpanderBox3 {
border: 1px solid @border-color;
}
#ExpanderBox, #ExpanderBox2, #ExpanderBox3 {
background-color: @bg-grey;
border-radius: 0;
}
#MyExpanderTitle .label {
color: @text-color;
padding: 2px 0;
}
#MyExpanderTitle:hover .label {
color: @text-hl-color2;
}
/*** end ***/
/*** View ***/
.view {
background-color: @bg-dark-grey;
}
#PrefNotebook .view {
background-color: @bg-grey;
}
#MainNotebook .view.cell:nth-child(2) {
padding: 1px 0px 1px 4px;
}
.view:hover {
background-color: @bg-list-hover;
color: @text-hl-color2;
}
#PrefNotebook .view:hover {
background-color: @bg-light-grey;
color: @text-hl-color2;
}
.view:selected {
color: @text-hl-color;
background-color: @accent-color;
}
#PrefNotebook .view:selected {
color: @text-hl-color;
background-color: @accent-color;
}
.view .button {
background-color: #181818;
padding: 2px 6px;
}
/*** end ***/
/*** Entry ***/
.entry {
background-image: none;
background-color: @bg-button;
border: 1px solid @bg-button-border;
border-radius: 0;
padding: 2px 4px;
color: @text-color;
}
.entry:focused:selected {
color: @text-hl-color;
background-color: @accent-color;
}
.entry:not(:focused):not(:insensitive) {/*Workaround*/
color: @text-color;
background-color: transparent;
}
.entry:not(:selected):not(:insensitive) {
color: @text-color;
background-color: @bg-button;
}
#ToolPanelNotebook .entry {
padding: 0 4px 0 7px;
border-radius: 20px 0 0 20px;
background-color: rgba(255,255,255,.12);
border: 1px solid rgba(0,0,0,.40);
}
#ToolPanelNotebook .entry {
color: @text-tbEntry;
}
#ToolPanelNotebook .entry:focused:selected {
color: @text-hl-color;
background-color: @accent-color;
}
#ToolPanelNotebook .entry:not(:focused):not(:insensitive) {/*Workaround*/
color: @text-tbEntry;
background-color: transparent;
}
#ToolPanelNotebook .entry:not(:selected):not(:insensitive) {
color: @text-tbEntry;
background-color: rgba(255,255,255,.12);
}
#MetaPanelNotebook .entry:not(:selected):not(:insensitive),
#MetaPanelNotebook GtkTextView {
color: @text-color;
background-color: @bg-light-grey;
border: 1px solid rgba(0,0,0,.40);
border-radius: 0;
}
/*** end ***/
/*** Buttons ***/
.button {
background-image: none;
background-color: @bg-button;
border: 1px solid @bg-button-border;
border-radius: 0;
padding: 3px 4px;margin: 1px;
}
GtkComboBox .button {
padding: 4px 3px;
}
#ToolPanelNotebook .button,
GtkDialog .button {
padding: 0px 3px;
}
#ToolPanelNotebook GtkComboBox {
padding-left: 4px; /*** Distance between label and Dropbox ***/
}
.text-button {
padding: 0 5px 0 0;
-GtkButton-child-displacement-x: 0;
-GtkButton-child-displacement-y: 0;
-GtkCheckButton-indicator-size: 16;
-GtkCheckButton-indicator-spacing: 3;
}
.button.text-button {
padding: 4px 10px;
}
#ToolPanelNotebook .button.text-button {
padding: 0px 3px;
}
GtkFileChooserWidget .button.text-button {
padding: 4px;
}
.spinbutton .button {
background-image: none;
background-color: transparent;
border: none;
border-radius: 0;
padding: 2px;
}
#ToolPanelNotebook .spinbutton .button {
padding: 0;
}
#fullButton,
#histButton {
padding: 4px;
}
.button:hover {
background-color: @bg-button-hover;
}
.button:active,
.button:checked {
background-color: @bg-button-checked;
}
#MainNotebook > GtkGrid .button {
padding: 2px;
border: 4px solid @bg-dark-grey;
background-color: transparent;
}
#MainNotebook tab .button {
padding: 2px;
border-top: 4px solid @bg-dark-grey;
border-bottom: 4px solid @bg-dark-grey;
border-left: 2px solid @bg-dark-grey;
border-right: none;
background-color: transparent;
}
#MainNotebook > GtkGrid .button:hover, #MainNotebook tab .button:hover {
background-color: rgba(255,255,255,.1);
}
#MainNotebook > GtkGrid .button:active, #MainNotebook tab .button:active {
background-color: transparent;
}
/*** end ***/
/*** Check & Radio buttons ***/
.check,
.check row {
-gtk-icon-source:
-gtk-gradient (radial,
center center, 0,
center center, 1,
color-stop (1, @bg-dark-grey));
}
.check:checked,
.check row:checked {
-gtk-icon-source:
-gtk-gradient (radial,
center center, 0,
center center, 1,
color-stop (0.22, @text-color),
color-stop (0.30, @bg-dark-grey),
color-stop (0.50, @bg-dark-grey));
}
.check:insensitive,
.check row:insensitive {
-gtk-icon-source:
-gtk-gradient (radial,
center center, 0,
center center, 1,
color-stop (1, rgba(0,0,0,.24)));
}
.check:checked:insensitive,
.check row:checked:insensitive {
-gtk-icon-source:
-gtk-gradient (radial,
center center, 0,
center center, 1,
color-stop (0.22, rgba(255,255,255,.08)),
color-stop (0.30, rgba(0,0,0,.24)),
color-stop (0.50, rgba(0,0,0,.24)));
}
.radio,
.radio row {
-gtk-icon-source:
-gtk-gradient (radial,
center center, 0,
center center, 1,
color-stop (0.44, @bg-dark-grey),
color-stop (0.5, transparent));
}
.radio:checked,
.radio row:checked {
-gtk-icon-source:
-gtk-gradient (radial,
center center, 0,
center center, 1,
color-stop (0.14, @text-color),
color-stop (0.21, @bg-dark-grey),
color-stop (0.44, @bg-dark-grey),
color-stop (0.5, transparent));
}
.radio:insensitive,
.radio row:insensitive {
-gtk-icon-source:
-gtk-gradient (radial,
center center, 0,
center center, 1,
color-stop (0.44, rgba(0,0,0,.24)),
color-stop (0.5, transparent));
}
.radio:checked:insensitive,
.radio row:checked:insensitive {
-gtk-icon-source:
-gtk-gradient (radial,
center center, 0,
center center, 1,
color-stop (0.14, rgba(255,255,255,.08)),
color-stop (0.21, rgba(0, 0, 0,.24)),
color-stop (0.44, rgba(0, 0, 0,.24)),
color-stop (0.5, transparent));
}
/*** end ***/
/*** Disabled Items ***/
*:insensitive {
color: #808080;
}
#ToolPanelNotebook .entry:insensitive {
color: #999999;
background-color: rgba(255,255,255,.04);
}
.scale.slider:insensitive, .scale.trough.highlight:insensitive, .scale.trough:insensitive {
background-color: #393939;
}
/*** end ***/

View File

@@ -16,12 +16,6 @@
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
*/
// generated 2004/6/3 19:15:32 CEST by gabor@darkstar.(none)
// using glademm V2.5.0
//
// newer (non customized) versions of this file go to raw.cc_new
// This file is for your program, I won't touch it again!
#ifdef __GNUC__
#if defined(__FAST_MATH__)
@@ -62,7 +56,6 @@ Glib::ustring creditsPath;
Glib::ustring licensePath;
Glib::ustring argv1;
bool simpleEditor;
Glib::RefPtr<Gtk::CssProvider> cssBase;
Glib::RefPtr<Gtk::CssProvider> cssForced;
Glib::RefPtr<Gtk::CssProvider> cssRT;
//Glib::Threads::Thread* mainThread;
@@ -124,11 +117,6 @@ static void myGdkLockLeave()
* -3 if at least one required procparam file was not found */
int processLineParams( int argc, char **argv );
/*
*
* M A I N
*
*/
int main(int argc, char **argv)
{
setlocale(LC_ALL, "");
@@ -321,15 +309,9 @@ int main(int argc, char **argv)
Gtk::Settings::get_for_screen(screen)->property_gtk_theme_name() = "Adwaita";
Gtk::Settings::get_for_screen(screen)->property_gtk_application_prefer_dark_theme() = true;
Glib::ustring filename = argv0 + "/themes/RawTherapee.css";
Glib::ustring filename = Glib::build_filename(argv0, "themes", options.theme + ".css");
cssRT = Gtk::CssProvider::create();
/* TODO
* Make theme selection work again. All themes should be applied below here,
* in other words after the base Adwaita Dark theme has been applied. This
* makes for smaller custom theme files.
*/
try {
cssRT->load_from_path (filename);
Gtk::StyleContext::add_provider_for_screen(screen, cssRT, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

View File

@@ -2014,19 +2014,6 @@ void Preferences::switchThemeTo(Glib::ustring newTheme)
printf("Error: Can't load css file \"%s\"\n", filename.c_str());
loaded = false;
}
// TODO remove rtcommon
if (!loaded && options.theme != "rtcommon") {
try {
printf("Trying with \"rtcommon.css\"\n");
filename = argv0 + "/themes/rtcommon.css";
css->load_from_path (filename);
} catch (Glib::Error &err) {
printf("Error: Can't load css file \"rtcommon.css\"\nMessage: %s\n", err.what().c_str());
} catch (...) {
printf("Error: Can't load css file \"%s\"\n", filename.c_str());
}
}
}
void Preferences::workflowUpdate ()