Beep6581 / RawTherapee

A powerful cross-platform raw photo processing program
https://rawtherapee.com
GNU General Public License v3.0
2.82k stars 319 forks source link

Gtk3 theme #2911

Closed Beep6581 closed 8 years ago

Beep6581 commented 9 years ago

I cleaned up old themes and pushed a new theme to the Gtk3 branch which is to be the one and only theme. It is currently called cookiedough.css and is loaded when you enable slim mode.

Why it is as it is:

When slim mode is disabled, rtcommon.css is used. Once ready, rtcommon.css will be deleted and cookiedough.css will be renamed to rtcommon.css. The reason I haven't done this yet is that the UI in many places uses hard-coded tests for slim mode in the C++ files and then changes border widths, padding etc. accordingly - I suppose we must remove all of these from the .cc files.

Hombre57 commented 9 years ago

Yes, we should remove almost all of these, but not all, i.e. some parameters like column/row spacing can't be handled through css, or I didn't find a way to do it.

Since I prefer having a nice looking GUI over only a "decent" one, I'm against removing the slim mode. I'd put all colors related thing in rtcommon.css as well as the non slim dimensions, ans still keep the slim.css file with overriding values.

Beep6581 commented 9 years ago

My theme is nice looking, its great looking, it's not just "decent" :P

Haven't committed yet, turns out RT runs a lot of obsolete tests regarding themes and iconsets, and the safety fallbacks will cause segfaults if they are ever used. Random example from rtimage.cc:120 - there is no "Default.iconset"

        if (!safe_file_test(configFilename, Glib::FILE_TEST_EXISTS) || !keyFile.load_from_file (configFilename)) {
            // ...otherwise fallback to the iconset set in default.iconset
            configFilename = Glib::build_filename(argv0, Glib::build_filename("themes", "Default.iconset"));
Beep6581 commented 9 years ago

Committed https://github.com/Beep6581/RawTherapee/commit/ce95798fcd419890c0af6b637751064b489f9ee5

The cleanups will be invasive and will need to be done separately.

Beep6581 commented 9 years ago

Off-topic but I can't find the original, @Hombre57 you asked for the Snapshots panel to not resize below a minimal height -> done 93982b84ec9a5c3d2a10b400cfc76bdfa932bc74

Beep6581 commented 8 years ago

Commit a9aa5308b5bb3c155ecaf6ab4adea2034186b589

scrot_2015-11-17 024559

Done.

Hombre57 commented 8 years ago

Could you provide a screenshot of the file browser as well, and a screenshot of the Noise Reduction tool unfolded + a Tone Curve unfolded ? I see significant difference between my Windows build and the screenshot above. E.g. : the background of the histogram is light gray instead of black, and I don't see the thin frame around the NoteBooks.

I'm also not found of the light grey frame around the NoteBook's tab icons... neither having them separate from the tab content, but that's a matter of taste, and I'll certainly include a second theme named 'legacy' ;)

Beep6581 commented 8 years ago

As with designing a website, good use of CSS requires good use of HTML. Designing the CSS theme for RT brought up inconsistencies in the way that the UI code is structured - frames here, myexpanders there, checkboxes elsewhere.

I don't care about the border round the notebook tabs. Feel free to change that. Also feel free to justify the Editor's progress bar to the left. I'd rather we spend our combined time on one theme than having two slightly differing ones with half the man-hours put into each.

Keep in mind that Gtk+ 3 is still undergoing many changes and improvements, e.g. the file window bookmarks panel on the left that had to be hacked with C++ in 3.16 should be user-controllable in 3.18 or 3.20, etc.

A growing number of users complain about the "1:1" icon saying it's not visible enough. I must agree, either we want something to be seen, or we don't show it, so I am inclined on removing that icon's partial transparency. What do you think about it?

Beep6581 commented 8 years ago

scrot_2015-12-01 170347 scrot_2015-12-01 170425 scrot_2015-12-01 170807 scrot_2015-12-01 170832 scrot_2015-12-01 170858 scrot_2015-12-01 171129

Hombre57 commented 8 years ago

I don't care about the border round the notebook tabs.

I don't understand this sentence. All that I say is that I find quite disturbing to not see how the GUI is structured, like in the File Browser where you see buttons on the right, + buttons displayed vertically, + some kind of content, but without visible relation between them all (a notebook inside a notebook panel). Could you find a way to restore the notebook structure ?

In the Preferences window, we don't see the Frame's area through a different color like before, is it part of your new design ?

A growing number of users complain about the "1:1" icon saying it's not visible enough. I must agree, either we want something to be seen, or we don't show it, so I am inclined on removing that icon's partial transparency. What do you think about it?

Go ahead.

Beep6581 commented 8 years ago

I'm also not found of the light grey frame around the NoteBook's tab icons

I don't care about the border round the notebook tabs.

I meant that the way they are now is not special to me, feel free to change them as you like. If you mean something like this then I agree it would look more clear: http://www.usabilityfirst.com/wp-content/uploads/2009/12/tabs-c02ca91c.jpg

Could you find a way to restore the notebook structure ?

"Restore" means they were there to begin with, and that's not the case. This is what RT-gtk3 with Adwaita and no custom theme looks like: scrot_2015-12-02 153830

In the Preferences window, we don't see the Frame's area through a different color like before

This does it:

.prefNotebook GtkFrame {
    background-color: #3B3B3B;
    border: 1px solid #505050;
    border-radius: 4px;
}

scrot_2015-12-02 161251

Pushed in commit 169f4d7.

.prefNotebook .frame { won't work as expected. Instead of targetting individual (sub)frames, it affects the whole notebook as the notebook uses a frame.

Would be nice if someone took the time to go through all the UI code and applied a relevant class to every "structural element", because currently finding the right selector to target the right element is... not fun.