diff --git a/AboutThisBuild.cmake b/AboutThisBuild.cmake
deleted file mode 100644
index 2163ed0cb..000000000
--- a/AboutThisBuild.cmake
+++ /dev/null
@@ -1,53 +0,0 @@
-# cmakefile executed within a makefile target
-
-# If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed
-find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH)
-if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
- # we look for the git command in this paths by order of preference
- if (WIN32)
- find_program(GIT_CMD git.exe HINTS ENV Path PATH_SUFFIXES ../)
- elseif (APPLE)
- find_program(GIT_CMD git PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin")
- find_program(GIT_CMD git)
- set (SHELL "/bin/bash")
- else (WIN32) # Linux
- find_program(GIT_CMD git)
- set (SHELL "/bin/bash")
- endif (WIN32)
-
- # Fail if Git is not installed
- if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND)
- message(FATAL_ERROR "git command not found!")
- else ()
- message(STATUS "git command found: ${GIT_CMD}")
- endif ()
-
- execute_process(COMMAND ${GIT_CMD} symbolic-ref --short -q HEAD OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
- execute_process(COMMAND ${GIT_CMD} describe --tags --always OUTPUT_VARIABLE GIT_VERSION_WHOLE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
- string(REGEX REPLACE "-g.*" "" GIT_VERSION ${GIT_VERSION_WHOLE})
- string(REPLACE "-" "." GIT_VERSION ${GIT_VERSION})
- execute_process(COMMAND ${GIT_CMD} rev-parse --verify HEAD OUTPUT_VARIABLE GIT_CHANGESET OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
- string(REGEX REPLACE ".*-(.*)-g.*" "\\1" GIT_TAGDISTANCE ${GIT_VERSION_WHOLE})
- if (NOT DEFINED CACHE_NAME_SUFFIX)
- string(REGEX REPLACE "-.*" "" CACHE_NAME_SUFFIX ${GIT_VERSION_WHOLE})
- message(STATUS "CACHE_NAME_SUFFIX was not defined, it is now \"${CACHE_NAME_SUFFIX}\"")
- elseif (CACHE_NAME_SUFFIX STREQUAL "latesttag")
- string(REGEX REPLACE "-.*" "" CACHE_NAME_SUFFIX ${GIT_VERSION_WHOLE})
- message(STATUS "CACHE_NAME_SUFFIX was \"latesttag\", it is now \"${CACHE_NAME_SUFFIX}\"")
- else ()
- message(STATUS "CACHE_NAME_SUFFIX is \"${CACHE_NAME_SUFFIX}\"")
- endif ()
-else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
- include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake")
-endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
-
-if (VERSION_SUFFIX STREQUAL "")
- set (GIT_VERSION_SUFFIX "${GIT_VERSION}")
-else ()
- set (GIT_VERSION_SUFFIX "${GIT_VERSION} ${VERSION_SUFFIX}")
-endif ()
-
-# build version.h from template
-configure_file ("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h")
-# build AboutThisBuild.txt from template
-configure_file ("${PROJECT_SOURCE_DIR}/AboutThisBuild.txt.in" "${CMAKE_BINARY_DIR}/AboutThisBuild.txt")
diff --git a/AboutThisBuild.txt.in b/AboutThisBuild.txt.in
index b8ae4be1a..ea3269c09 100644
--- a/AboutThisBuild.txt.in
+++ b/AboutThisBuild.txt.in
@@ -1,6 +1,7 @@
+Version: ${GIT_DESCRIBE}
Branch: ${GIT_BRANCH}
-Version: ${GIT_VERSION_SUFFIX}
-Changeset: ${GIT_CHANGESET}
+Commit: ${GIT_COMMIT}
+Commit date: ${GIT_COMMIT_DATE}
Compiler: ${COMPILER_INFO}
Processor: ${PROC_LABEL}
System: ${SYSTEM}
@@ -11,4 +12,3 @@ Build flags: ${CXX_FLAGS}
Link flags: ${LFLAGS}
OpenMP support: ${OPTION_OMP}
MMAP support: ${WITH_MYFILE_MMAP}
-
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee54705f6..5f3546364 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -331,7 +331,7 @@ if (OUT_OF_SOURCE_BUILD)
endforeach(f)
endif ()
-## BEGIN: Generating AboutThisBuild.txt
+## BEGIN: Create AboutThisBuild.txt and other version-dependent files.
# set the bit number information of the platform
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
set(PROC_BIT_DEPTH 32 bits)
@@ -359,7 +359,6 @@ set(ABOUT_COMMAND_WITH_ARGS ${CMAKE_COMMAND}
-DPROC_LABEL:STRING="${PROC_LABEL}"
-DPROC_BIT_DEPTH:STRING="${PROC_BIT_DEPTH}"
-DBUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
- -DVERSION_SUFFIX:STRING=${VERSION_SUFFIX}
-DGTKMM_VERSION:STRING=${GTKMM_VERSION}
-DOPTION_OMP:STRING=${OPTION_OMP}
-DWITH_MYFILE_MMAP:STRING=${WITH_MYFILE_MMAP})
@@ -368,7 +367,9 @@ if (WIN32)
list(APPEND ABOUT_COMMAND_WITH_ARGS -DSYSTEM:STRING=Windows
-DCXX_FLAGS:STRING="${CXX_FLAGS}"
-DLFLAGS:STRING="${LFLAGS}"
- -DCOMPILER_INFO:STRING="${COMPILER_INFO}")
+ -DCOMPILER_INFO:STRING="${COMPILER_INFO}"
+ -DCMAKE_INSTALL_PREFIX:STRING="${CMAKE_INSTALL_PREFIX}"
+ -DBIT_DEPTH:STRING="${CMAKE_SIZEOF_VOID_P}")
elseif (APPLE)
list(APPEND ABOUT_COMMAND_WITH_ARGS -DSYSTEM:STRING=Apple
-DCXX_FLAGS:STRING=${CXX_FLAGS}
@@ -381,11 +382,11 @@ else (WIN32)
-DCOMPILER_INFO:STRING=${COMPILER_INFO})
endif (WIN32)
-list(APPEND ABOUT_COMMAND_WITH_ARGS -P "${PROJECT_SOURCE_DIR}/AboutThisBuild.cmake")
+list(APPEND ABOUT_COMMAND_WITH_ARGS -P "${PROJECT_SOURCE_DIR}/UpdateInfo.cmake")
-add_custom_target(AboutFile ALL
+add_custom_target(UpdateInfo ALL
COMMAND ${ABOUT_COMMAND_WITH_ARGS}
- COMMENT "Creating the about file")
+ COMMENT "Creating AboutThisBuild.txt and other version-dependent files")
## END: Generating AboutThisBuild.txt
diff --git a/LICENSE.txt b/LICENSE.txt
index 1e9ad695f..44a4cfcc8 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,5 +1,6 @@
RawTherapee - A powerful, cross-platform raw image processing program.
Copyright (C) 2004-2012 Gabor Horvath
+ Copyright (C) 2010-2017 RawTherapee development team.
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/README.md b/README.md
index 93dbfec59..bd30ae4df 100644
--- a/README.md
+++ b/README.md
@@ -41,4 +41,4 @@ Windows:
http://rawpedia.rawtherapee.com/Windows
OS X:
-http://rawpedia.rawtherapee.com/OS_X
+http://rawpedia.rawtherapee.com/macOS
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index da1e2152b..725844203 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -1,47 +1,71 @@
-RAWTHERAPEE DEVELOPMENT RELEASE NOTES
+RAWTHERAPEE 5 RELEASE NOTES
+---------------------------
+RawTherapee provides you with a selection of powerful tools with which you can practice the art of developing raw photos. Be sure to read RawPedia to understand how each tool works so that you may make the most of it.
+http://rawpedia.rawtherapee.com/
+A great place to start is the "Getting Started" article. Click on "Main page" in the top-left corner when you have finished reading that article to see all other articles.
-This is a development version of RawTherapee. We update the code every day, which means the smallest number in the version changes every day, and every few months when new features are finalized and known bugs are fixed we release a stable version. Every minor version in-between those stable versions is known as a "development" version, and this build is one of them.
-
-While we only commit tested and relatively stable code and so the development versions should be fairly stable, you should be aware that:
-
-- They only had limited testing, so there may be bugs unknown to us.
-
-- You should report these bugs so they get fixed for the stable release. See www.rawpedia.rawtherapee.com/How_to_write_useful_bug_reports The way new tools work in the development versions is likely to change as we tweak and tune them, so your processing profiles may produce different results when used in a future stable versions.
-
-- Bugs present in the stable versions get fixed, and until a new stable version is released these fixes are present in these development versions, thereby making the development version "more stable" than the previous stable version. At the same time, new features may introduce new bugs :) This is a trade-off you should be aware of.
+News Relevant to Photographers
+------------------------------
+- RawTherapee 5 supports most raw formats, including some unusual ones like those from cameras using Foveon and X-Trans sensors. If you're wondering whether it supports your camera's raw format, first download RawTherapee 5 and try for yourself. If a raw format is not supported it will either not open, or the preview in the Editor tab will appear black, white, or have a strong color cast - usually magenta. In that case, read the "Adding Support for New Raw Formats" RawPedia article.
In order to use RawTherapee efficiently you should know that:
-
- You can scroll all panels using the mouse scroll-wheel.
-
- You can right-click on a tool's name to automatically expand it while collapsing all others.
-
- To change slider values or drop-down list items with the mouse scroll-wheel, hold the Shift key. This is so that you can safely scroll the panels without accidentally changing a slider or other tool setting.
-
- All curves support the Shift and Ctrl keys while dragging a point. Shift+drag makes the point snap to meaningful axes (top, bottom, diagonal, other), while Ctrl+drag makes your mouse movement super-fine for precise point positioning.
+- There are many keyboard shortcuts which make working with RawTherapee much faster and give you greater control. Make sure you familiarize yourself with them on RawPedia's "Keyboard Shortcuts" page!
-- There are many keyboard shortcuts which make working with RawTherapee much faster and give you greater control, make sure you familiarize yourself with them on RawPedia's Keyboard Shortcuts page!
+New Features:
+- Wavelets tool.
+- Retinex tool.
+- Monitor profile and rendering intent support.
+- Print soft-proofing support.
+- Automatic chroma noise reduction, manual luminance noise reduction using sliders and curves.
+- The "Inspect" tab in the File Browser lets you see a 100% preview of the image whose thumbnail your mouse cursor hovers over, which is either the largest JPEG image embedded in the raw file or the image itself when hovering over non-raw images.
+- The curve pipette allows you to pick the right point of a curve by clicking in the preview, and input/output values so that you can set the desired output value for a given input value.
+- Post-resize sharpening, to give your photos that subtle crispness after resizing them.
+- Dual-illuminant DCP support with curves, base tables, look tables and baseline exposure.
+- New exposure tone curve modes "Luminance" and "Perceptual".
+- Queue processing will stop if an error is encountered while saving, e.g. if you run out of disk space.
+- The Contrast by Detail Levels tool received the "Process Locate Before/After Black-and-White" option.
+- Rec. 2020 ICC profile added.
+- The Navigator can show RGB, HSV and L*a*b* values in a range of 0-255, 0-1 or %.
+- The Lockable Color Picker allows you to place multiple sample points over the preview to measure colors and see them change in real time as you manipulate the image. They support the same ranges as the Navigator.
+- Grayscale JPEG and TIFF images are now supported.
+- 32-bit TIFF files are supported.
+- In addition to these new features, RawTherapee received over two years worth of amazing speedups, code cleanups and bug fixes, making it faster and more stable than ever before!
-Refer to RawPedia for information about RawTherapee's tools and how to use them.
+News Relevant to Package Maintainers
+------------------------------------
+- Branch "master" uses GTK2, branch "gtk3" requires GTK+ >=3.16. There are known bugs using GTK+ versions 3.20-3.22 where scrollbars may appear stuck (issue #3545) and where the Retinex tool's "Gain and Offset" panel may appear under the "Transmission" panel (issue #3525) until the user hovers the mouse cursor over a curve button. For this reason we recommend using GTK+ 3.16-3.18 if possible.
+- RawTherapee 5 requires GCC-4.9 or higher, or Clang.
+- Do not use -ffast-math
+- Use -o3
+- For stable builds (RT5) use -DCACHE_NAME_SUFFIX=""
+- For development builds use -DCACHE_NAME_SUFFIX="5-dev"
+- Windows builders should compile on a drive letter which users are most unlikely to have, such as Y:, due to the "There is no disk in the drive" error (issue #3544).
+News Relevant to Developers
+---------------------------
+- Use C++11
+- Code must be run through astyle.
+- Commits automatically trigger a compilation using Travis CI.
+Complete revision history available on GitHub:
+https://github.com/Beep6581/RawTherapee/commits/
DOCUMENTATION
-
+-------------
http://rawtherapee.com/blog/documentation
http://rawpedia.rawtherapee.com/
-
-
REPORTING BUGS
-
-Find out how to write good bug reports and get stack-backtraces here:
+--------------
+If you found a problem, don't keep it to yourself. Read the "How to write useful bug reports" article to get the problem fixed:
http://rawpedia.rawtherapee.com/How_to_write_useful_bug_reports
-
-
LIVE CHAT WITH USERS AND DEVELOPERS
-
+--------------------------------------
Network: freenode
Server: chat.freenode.net
Channel #rawtherapee
@@ -50,17 +74,12 @@ You can use freenode webchat to communicate without installing anything:
http://webchat.freenode.net/?randomnick=1&channels=rawtherapee&prompt=1
More information here: http://rawpedia.rawtherapee.com/IRC
-
-
SOCIAL NETWORKS
-
+---------------
Google+
http://plus.google.com/106783532637761598368
-
-
REVISION HISTORY
-
+----------------
The complete changelog is available at:
https://github.com/Beep6581/RawTherapee/commits/
-
diff --git a/UpdateInfo.cmake b/UpdateInfo.cmake
new file mode 100644
index 000000000..ff0f12482
--- /dev/null
+++ b/UpdateInfo.cmake
@@ -0,0 +1,112 @@
+# cmakefile executed within a makefile target
+
+# If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed
+find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH)
+if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
+ # we look for the git command in this paths by order of preference
+ if (WIN32)
+ find_program(GIT_CMD git.exe HINTS ENV Path PATH_SUFFIXES ../)
+ elseif (APPLE)
+ find_program(GIT_CMD git PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin")
+ find_program(GIT_CMD git)
+ set (SHELL "/bin/bash")
+ else (WIN32) # Linux
+ find_program(GIT_CMD git)
+ set (SHELL "/bin/bash")
+ endif (WIN32)
+
+ # Fail if Git is not installed
+ if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND)
+ message(FATAL_ERROR "git command not found!")
+ else ()
+ message(STATUS "git command found: ${GIT_CMD}")
+ endif ()
+
+ # Get version description.
+ # Depending on whether you checked out a branch (dev) or a tag (release),
+ # "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively.
+ execute_process(COMMAND ${GIT_CMD} describe --tags --always OUTPUT_VARIABLE GIT_DESCRIBE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+
+ # Get branch name.
+ # Will return empty if you checked out a commit or tag. Empty string handled later.
+ execute_process(COMMAND ${GIT_CMD} symbolic-ref --short -q HEAD OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+
+ # Get commit hash.
+ execute_process(COMMAND ${GIT_CMD} rev-parse --short --verify HEAD OUTPUT_VARIABLE GIT_COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+
+ # Get commit date, YYYY-MM-DD.
+ execute_process(COMMAND ${GIT_CMD} show -s --format=%cd --date=format:%Y-%m-%d OUTPUT_VARIABLE GIT_COMMIT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+
+ # Get number of commits since tagging. This is what "GIT_DESCRIBE" uses.
+ # Works when checking out branch, tag or commit.
+ # Get a list of all tags in repo:
+ execute_process(COMMAND ${GIT_CMD} tag --merged HEAD OUTPUT_VARIABLE GIT_TAG WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+ # Replace newlines with semicolons so that it can be split:
+ string(REPLACE "\n" ";" GIT_TAG_LIST "${GIT_TAG}")
+ execute_process(COMMAND ${GIT_CMD} rev-list --count HEAD --not ${GIT_TAG_LIST} OUTPUT_VARIABLE GIT_COMMITS_SINCE_TAG OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+
+ # Get number of commits since branching.
+ # Works when checking out branch, tag or commit.
+ execute_process(COMMAND ${GIT_CMD} rev-list --count HEAD --not --tags OUTPUT_VARIABLE GIT_COMMITS_SINCE_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+
+ # If user checked-out something which is not a branch, use the description as branch name.
+ if (GIT_BRANCH STREQUAL "")
+ set (GIT_BRANCH "${GIT_DESCRIBE}")
+ endif()
+
+ # Create numeric version.
+ # This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion.
+ # Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS).
+ if (GIT_COMMITS_SINCE_TAG STREQUAL "")
+ set (GIT_NUMERIC_VERSION_BS "0.0.0")
+ else ()
+ string(REGEX REPLACE "-.*" "" GIT_NUMERIC_VERSION_BS ${GIT_DESCRIBE})
+ set(GIT_NUMERIC_VERSION_BS "${GIT_NUMERIC_VERSION_BS}.${GIT_COMMITS_SINCE_TAG}")
+ endif ()
+
+ message(STATUS "Git checkout information:")
+ message(STATUS " Commit description: ${GIT_DESCRIBE}")
+ message(STATUS " Branch: ${GIT_BRANCH}")
+ message(STATUS " Commit: ${GIT_COMMIT}")
+ message(STATUS " Commit date: ${GIT_COMMIT_DATE}")
+ message(STATUS " Commits since tag: ${GIT_COMMITS_SINCE_TAG}")
+ message(STATUS " Commits since branch: ${GIT_COMMITS_SINCE_BRANCH}")
+ message(STATUS " Version (unreliable): ${GIT_NUMERIC_VERSION_BS}")
+
+ if (NOT DEFINED CACHE_NAME_SUFFIX)
+ set(CACHE_NAME_SUFFIX "${GIT_DESCRIBE}")
+ message(STATUS "CACHE_NAME_SUFFIX was not defined, it is now \"${CACHE_NAME_SUFFIX}\"")
+ else ()
+ message(STATUS "CACHE_NAME_SUFFIX is \"${CACHE_NAME_SUFFIX}\"")
+ endif ()
+
+else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
+ include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake")
+endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
+
+if (WIN32)
+ if (BIT_DEPTH EQUAL 4)
+ set(BUILD_BIT_DEPTH 32)
+ # 32 bits builds has to be installable on 64 bits system, to support WinXP/64.
+ set(ARCHITECTURE_ALLOWED "x86 x64 ia64")
+ # installing in 32 bits mode even on 64 bits OS and architecture
+ set(INSTALL_MODE "")
+ # set part of the output archive name
+ set(SYSTEM_NAME "WinXP")
+ elseif (BIT_DEPTH EQUAL 8)
+ set(BUILD_BIT_DEPTH 64)
+ # Restricting the 64 bits builds to 64 bits systems only
+ set(ARCHITECTURE_ALLOWED "x64 ia64")
+ # installing in 64 bits mode for all 64 bits processors, even for itanium architecture
+ set(INSTALL_MODE "x64 ia64")
+ # set part of the output archive name
+ set(SYSTEM_NAME "WinVista")
+ endif (BIT_DEPTH EQUAL 4)
+
+ configure_file ("${PROJECT_SOURCE_DIR}/tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_BINARY_DIR}/rtdata/WindowsInnoSetup.iss")
+endif (WIN32)
+
+# build version.h from template
+configure_file ("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h")
+# build AboutThisBuild.txt from template
+configure_file ("${PROJECT_SOURCE_DIR}/AboutThisBuild.txt.in" "${CMAKE_BINARY_DIR}/AboutThisBuild.txt")
diff --git a/rawtherapee.appdata.xml b/rawtherapee.appdata.xml
index 1e3af1747..3bcab8918 100644
--- a/rawtherapee.appdata.xml
+++ b/rawtherapee.appdata.xml
@@ -1,5 +1,5 @@
-
+
rawtherapee.desktop
CC-BY-SA-4.0
@@ -15,7 +15,9 @@
- http://rawtherapee.com/images/screenshots/rt-42_07-hdr-landscape.jpg
+ http://rawpedia.rawtherapee.com/images/9/99/Rt-5-misty1.jpg
+ http://rawpedia.rawtherapee.com/images/2/2f/Rt-5-cc24-lcp.jpg
+ http://rawtherapee.com/images/screenshots/rt-42_07-hdr-landscape.jpg
http://rawtherapee.com/images/screenshots/rt-42_03-macro-detail-toning.jpg
http://rawtherapee.com/images/screenshots/rt-42_05-cow-bw-toning.jpg
http://rawtherapee.com/images/screenshots/rt-42_08-fb-metadata.jpg
diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt
index ad8fe3421..b3f44a68c 100644
--- a/rtdata/CMakeLists.txt
+++ b/rtdata/CMakeLists.txt
@@ -19,45 +19,6 @@ else (WIN32)
endif (WIN32)
if (WIN32)
- if (CMAKE_SIZEOF_VOID_P EQUAL 4)
- set(BUILD_BIT_DEPTH 32)
- # 32 bits builds has to be installable on 64 bits system, to support WinXP/64.
- set(ARCHITECTURE_ALLOWED "x86 x64 ia64")
- # installing in 32 bits mode even on 64 bits OS and architecture
- set(INSTALL_MODE "")
- # set part of the output archive name
- set(SYSTEM_NAME "WinXP")
- elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(BUILD_BIT_DEPTH 64)
- # Restricting the 64 bits builds to 64 bits systems only
- set(ARCHITECTURE_ALLOWED "x64 ia64")
- # installing in 64 bits mode for all 64 bits processors, even for itanium architecture
- set(INSTALL_MODE "x64 ia64")
- # set part of the output archive name
- set(SYSTEM_NAME "WinVista")
- endif (CMAKE_SIZEOF_VOID_P EQUAL 4)
-
- # If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed
- find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH)
- if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
- # we look for the git command in this paths by order of preference
- find_file(GIT_CMD git.exe HINTS ENV Path PATH_SUFFIXES ../)
-
- # Fail if Git is not installed
- if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND)
- message(FATAL_ERROR "git command not found!")
- else ()
- message(STATUS "git command found: ${GIT_CMD}")
- endif ()
-
- execute_process(COMMAND ${GIT_CMD} describe --tags --always OUTPUT_VARIABLE GIT_VERSION_WHOLE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
- string(REGEX REPLACE "-.*" "" GIT_VERSION ${GIT_VERSION_WHOLE})
- string(REGEX REPLACE ".*-(.*)-g.*" "\\1" GIT_TAGDISTANCE ${GIT_VERSION_WHOLE})
- else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
- include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake")
- endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
-
- configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/../tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss")
install (FILES "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss" DESTINATION ${BINDIR})
endif (WIN32)
diff --git a/rtdata/dcpprofiles/Canon EOS 20D.dcp b/rtdata/dcpprofiles/Canon EOS 20D.dcp
index 0dfc1c80b..1ce4c5d0b 100644
Binary files a/rtdata/dcpprofiles/Canon EOS 20D.dcp and b/rtdata/dcpprofiles/Canon EOS 20D.dcp differ
diff --git a/rtdata/dcpprofiles/Canon EOS 40D.dcp b/rtdata/dcpprofiles/Canon EOS 40D.dcp
index 98cf8ce09..a6117dfa5 100644
Binary files a/rtdata/dcpprofiles/Canon EOS 40D.dcp and b/rtdata/dcpprofiles/Canon EOS 40D.dcp differ
diff --git a/rtdata/dcpprofiles/Canon EOS 50D.dcp b/rtdata/dcpprofiles/Canon EOS 50D.dcp
new file mode 100644
index 000000000..a99da9e61
Binary files /dev/null and b/rtdata/dcpprofiles/Canon EOS 50D.dcp differ
diff --git a/rtdata/dcpprofiles/Canon EOS 7D Mark II.dcp b/rtdata/dcpprofiles/Canon EOS 7D Mark II.dcp
new file mode 100644
index 000000000..1c153e82a
Binary files /dev/null and b/rtdata/dcpprofiles/Canon EOS 7D Mark II.dcp differ
diff --git a/rtdata/dcpprofiles/Canon EOS 7D.dcp b/rtdata/dcpprofiles/Canon EOS 7D.dcp
index f6425f3c5..dd31e64f5 100644
Binary files a/rtdata/dcpprofiles/Canon EOS 7D.dcp and b/rtdata/dcpprofiles/Canon EOS 7D.dcp differ
diff --git a/rtdata/dcpprofiles/FUJIFILM X-Pro2.dcp b/rtdata/dcpprofiles/FUJIFILM X-Pro2.dcp
index 5b448b7b1..1172b17bb 100644
Binary files a/rtdata/dcpprofiles/FUJIFILM X-Pro2.dcp and b/rtdata/dcpprofiles/FUJIFILM X-Pro2.dcp differ
diff --git a/rtdata/dcpprofiles/NIKON D600.dcp b/rtdata/dcpprofiles/NIKON D600.dcp
new file mode 100644
index 000000000..039989c2c
Binary files /dev/null and b/rtdata/dcpprofiles/NIKON D600.dcp differ
diff --git a/rtdata/dcpprofiles/NIKON D810.dcp b/rtdata/dcpprofiles/NIKON D810.dcp
new file mode 100644
index 000000000..58f90c983
Binary files /dev/null and b/rtdata/dcpprofiles/NIKON D810.dcp differ
diff --git a/rtdata/dcpprofiles/SONY SLT-A99V.dcp b/rtdata/dcpprofiles/SONY SLT-A99V.dcp
new file mode 100644
index 000000000..94a0767ed
Binary files /dev/null and b/rtdata/dcpprofiles/SONY SLT-A99V.dcp differ
diff --git a/rtdata/rt_splash_5.svg b/rtdata/images/rt_splash_5.svg
similarity index 90%
rename from rtdata/rt_splash_5.svg
rename to rtdata/images/rt_splash_5.svg
index 78620dd68..8f556f37e 100644
--- a/rtdata/rt_splash_5.svg
+++ b/rtdata/images/rt_splash_5.svg
@@ -21,7 +21,7 @@
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
RawTherapee logo white font white glow
+ id="title5575">RawTherapee Splash Screen
+ inkscape:snap-global="true"
+ showguides="true"
+ inkscape:guide-bbox="true">
+
+
+
+
+
+
+
+
+
+
+
@@ -1417,17 +1468,17 @@
image/svg+xml
- RawTherapee logo white font white glow
+ RawTherapee Splash Screen
- RawTherapee
+ Morgan Hardwood
rawtherapee
logo
- white
+ splash
www.rawtherapee.com
@@ -1647,40 +1698,11 @@
y="152.4408"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:OxygenSans;-inkscape-font-specification:OxygenSans;text-align:justify;text-anchor:start;fill:#ffffff;fill-opacity:1" />Select the desired element and apply one of the effects in the Filter Editor. You might need to ungroup the element before applying. For example to set the RT ring to have a colorful glow, select it and enable the "ring glow". You can change the flood color of the "ring shadow" effect to make it white if you want to make the logo usable on a dark background. Apply glow effects using filters. You might need to ungroup the circle elements before applying. You can change the flood color of the "ring shadow" effect to make it white if you want to make the logo usable on a dark background. For logo specifics, refer to rt_logo.svg Raw
- Therapee
- For logo specifics, refer to rt_logo.svg "Raw" font Eras-UltraBlk, 69px, -3px spacing between characters, skewed 2° to the right. "Raw": font ITC Eras Std Ultra, appears in Inkscape as "Therapee" font Eras-Medium, 68px, 4px spacing between characters, skewed 2° to the right. ITC Eras Standard - Ultra-Bold, Both have a dropshadow with an opacity of 0.40 and Gaussian blur standard deviation of 3.5. 60pt, -3px spacing between characters. Version number Eras bold 64 or less. "Therapee": font ITC Eras Std Medium, appears in Inkscape as Eras font from "freefonts-0.10": ITC Eras Standard - Medium, ftp://ftp.gimp.org/pub/gimp/fonts/ 60pt, +1px spacing between characters.Version: font ITC Eras Std Bold, appears in Inkscape as ITC Eras Standard - Bold, 64pt, skewed -3°. RawTherapee splash screen design version 1.0 from 2014-05-03 | www.rawtherapee.com
- GNU GPLv3
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6px;font-family:OxygenSans;-inkscape-font-specification:OxygenSans;letter-spacing:1px;fill:#ffcc00;fill-opacity:1">RawTherapee splash screen design version 1.1 from 2017-01-28 | www.rawtherapee.com
5
+ Raw
+ Therapee
+ GNU GPLv3
+ 5
Alt-f f
ZOOMPANEL_ZOOMIN;Přiblížit\nZkratka: +
ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
+
diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index 6a6923112..937ac0927 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -36,7 +36,7 @@ CURVEEDITOR_TYPE;Type:
DIRBROWSER_FOLDERS;Répertoires
EDITWINDOW_TITLE;Édition d'image
EDIT_OBJECT_TOOLTIP;Affiche des éléments dans la fenêtre de prévisualisation qui vous permettront d'ajuster cet outil.
-EDIT_PIPETTE_TOOLTIP;Pour ajouter un point d'ajustement de la courbe, maintenez la touche Ctrl préssée et cliquez dans l'image avec le bouton gauche.\nPour ajuster le point, pressez la touche Ctrl lors du clic-gauche sur la zone correspondande dans l'apperçu, puis relachez Ctrl (sauf si vous désirez un control plus fin) et tout en gardant le bouton gauche appuyé, déplacez le curseur vers le haut ou le bas pour ajuster la position du point.
+EDIT_PIPETTE_TOOLTIP;Pour ajouter un point d'ajustement de la courbe, maintenez la touche Ctrl pressée et cliquez dans l'image avec le bouton gauche.\nPour ajuster le point, pressez la touche Ctrl lors du clic-gauche sur la zone correspondante dans l'aperçu, puis relachez Ctrl (sauf si vous désirez un contrôle plus fin) et tout en gardant le bouton gauche appuyé, déplacez le curseur vers le haut ou le bas pour ajuster la position du point.
EXIFFILTER_APERTURE;Ouverture
EXIFFILTER_CAMERA;Appareil photo
EXIFFILTER_EXPOSURECOMPENSATION;Compensation d'exposition (EV)
@@ -79,7 +79,7 @@ EXPORT_BYPASS_SHARPENING;Ignorer la netteté
EXPORT_BYPASS_SHARPENMICRO;Ignorer netteté des microcontrastes
EXPORT_BYPASS_SH_HQ;Ignorer Ombres/Hautes lumières (HQ)
EXPORT_FASTEXPORTOPTIONS;Options d'Export Rapide
-EXPORT_INSTRUCTIONS;Les options d'Export Rapide permettent de forcer des paramètres afin d'éviter d'utiliser des outils très consommateur de temps et de ressources, et d'utiliser ces options dans la file de traitement. Cette méthode est recommandée pour la génération rapide d'images de basse résolution quand la vitesse est une priorité ou lorsqu'on désir une version redimensionnée d'une ou plusieurs images de sortie sans avoir à modifier leurs paramètres de développement.
+EXPORT_INSTRUCTIONS;Les options d'Export Rapide permettent de forcer des paramètres afin d'éviter d'utiliser des outils très consommateurs de temps et de ressources, et d'utiliser ces options dans la file de traitement. Cette méthode est recommandée pour la génération rapide d'images de basse résolution quand la vitesse est une priorité ou lorsqu'on désire une version redimensionnée d'une ou plusieurs images de sortie sans avoir à modifier leurs paramètres de développement.
EXPORT_MAXHEIGHT;Hauteur maximum:
EXPORT_MAXWIDTH;Largeur maximum:
EXPORT_PUTTOQUEUEFAST;Mettre dans la file de traitement\npour Export Rapide
@@ -168,6 +168,7 @@ FILEBROWSER_SHOWEDITEDHINT;Afficher les images éditées\nRaccourci: 7
FILEBROWSER_SHOWEDITEDNOTHINT;Afficher les images non éditées\nRaccourci: 6
FILEBROWSER_SHOWEXIFINFO;Montrer les infos EXIF.\nRaccourci: i \n\nRaccourcis dans le mode Éditeur Unique: Alt-i
FILEBROWSER_SHOWNOTTRASHHINT;Voir uniquement les images non supprimées
+FILEBROWSER_SHOWORIGINALHINT;Voir seulement les images originales.\n\nQuand plusieurs images éxistent avec le même nom de fichier mais des extensions différentes, celle considéré originale est celle dont l'extention est au plus dans la liste des extensions dans Préférences > Navigateur de fichiers > Extensions considérées.
FILEBROWSER_SHOWRANK1HINT;Voir les images 1 étoile\nRaccourci: 1
FILEBROWSER_SHOWRANK2HINT;Voir les images 2 étoiles\nRaccourci: 2
FILEBROWSER_SHOWRANK3HINT;Voir les images 3 étoiles\nRaccourci: 3
@@ -196,6 +197,7 @@ FILECHOOSER_FILTER_SAME;Même format que la photo
FILECHOOSER_FILTER_TIFF;Fichiers TIFF
GENERAL_ABOUT;À propos
GENERAL_AFTER;Après
+GENERAL_APPLY;Appliquer
GENERAL_ASIMAGE;Comme l'image
GENERAL_AUTO;Automatique
GENERAL_BEFORE;Avant
@@ -211,6 +213,7 @@ GENERAL_NA;indisponible
GENERAL_NO;Non
GENERAL_NONE;Aucun
GENERAL_OK;OK
+GENERAL_OPEN;Ouvrir
GENERAL_PORTRAIT;Portrait
GENERAL_SAVE;Enregistrer
GENERAL_UNCHANGED;(Inchangé)
@@ -320,7 +323,7 @@ HISTORY_MSG_89;Réd. de bruit
HISTORY_MSG_90;Réd. de bruit - Luminance
HISTORY_MSG_91;Réd. de bruit - Chrominance Maître
HISTORY_MSG_92;Réd. de bruit - Gamma
-HISTORY_MSG_93;Param. Contraste par niv. de détail
+HISTORY_MSG_93;CpND - Valeur
HISTORY_MSG_94;Contraste par niveau de détail
HISTORY_MSG_95;Lab - Chromaticité
HISTORY_MSG_96;Courbe 'a'
@@ -393,6 +396,7 @@ HISTORY_MSG_162;Compression Tonale
HISTORY_MSG_163;Courbes RVB - Rouge
HISTORY_MSG_164;Courbes RVB - Vert
HISTORY_MSG_165;Courbes RVB - Bleu
+HISTORY_MSG_166;Exposition - Réinit.
HISTORY_MSG_167;Algorithme de dématriçage
HISTORY_MSG_168;Courbe 'CC'
HISTORY_MSG_169;Courbe 'CT'
@@ -474,7 +478,7 @@ HISTORY_MSG_245;Vignet. - Centre
HISTORY_MSG_246;Courbe 'CL'
HISTORY_MSG_247;Courbe 'LT'
HISTORY_MSG_248;Courbe 'TT'
-HISTORY_MSG_249;Seuil Contraste par niv. de détail
+HISTORY_MSG_249;CpND - Seuil
HISTORY_MSG_250;Réd. de bruit - Amélioré
HISTORY_MSG_251;N&B - Algorithme
HISTORY_MSG_252;CpND - Tons chair
@@ -618,7 +622,7 @@ HISTORY_MSG_389;O - Résiduel - BC bleu moyen
HISTORY_MSG_390;O - Résiduel - BC vert bas
HISTORY_MSG_391;O - Résiduel - BC bleu bas
HISTORY_MSG_392;O - Résiduel - BC Réinitialiser
-HISTORY_MSG_393;DCP - Table de recherche (LUT)
+HISTORY_MSG_393;DCP - Table de corresp. (LUT)
HISTORY_MSG_394;DCP - Exposition de base
HISTORY_MSG_395;DCP - Table de base
HISTORY_MSG_396;O - Contrast
@@ -632,28 +636,89 @@ HISTORY_MSG_403;O - NB - Sensibilité des bords
HISTORY_MSG_404;O - NB - Base amplification
HISTORY_MSG_405;O - Débruitage - Niveau 4
HISTORY_MSG_406;O - NB - Pixels voisins
+HISTORY_MSG_407;Retinex - Méthode
+HISTORY_MSG_408;Retinex - Rayon
+HISTORY_MSG_409;Retinex - Contraste
+HISTORY_MSG_410;Retinex - Décalage
+HISTORY_MSG_411;Retinex - Force
+HISTORY_MSG_412;Retinex - Gradient Gaussien
+HISTORY_MSG_413;Retinex - Contraste
+HISTORY_MSG_414;Retinex - Histogramme - Lab
+HISTORY_MSG_415;Retinex - Transmission
+HISTORY_MSG_416;Retinex
+HISTORY_MSG_417;Retinex - Transmission Médiane
+HISTORY_MSG_418;Retinex - Seuil
+HISTORY_MSG_419;Retinex - Espace couleur
+HISTORY_MSG_420;Retinex - Histogramme - TSV
+HISTORY_MSG_421;Retinex - Gamma
+HISTORY_MSG_422;Retinex - Gamma
+HISTORY_MSG_423;Retinex - Pente Gamma
+HISTORY_MSG_424;Retinex - Seuille HL
+HISTORY_MSG_425;Retinex - Base Log
+HISTORY_MSG_426;Retinex - Égaliseur de teinte
+HISTORY_MSG_427;Intention de rendu de sortie
+HISTORY_MSG_428;Intention de rendu du moniteur
+HISTORY_MSG_429;Retinex - Itérations
+HISTORY_MSG_430;Retinex - Gradient de Transmission
+HISTORY_MSG_431;Retinex - Gradient de Force
+HISTORY_MSG_432;Retinex - M - Hautes lumières
+HISTORY_MSG_433;Retinex - M - Hautes lumières TW
+HISTORY_MSG_434;Retinex - M - Ombres
+HISTORY_MSG_435;Retinex - M - Ombres TW
+HISTORY_MSG_436;Retinex - M - Rayon
+HISTORY_MSG_437;Retinex - M - Méthode
+HISTORY_MSG_438;Retinex - M - Égaliseur
+HISTORY_MSG_439;Retinex - Traitement
+HISTORY_MSG_440;CpND - Méthode
+HISTORY_MSG_441;Retinex - Gain de Tansmission
+HISTORY_MSG_442;Retinex - Échelle
HISTORY_MSG_443;Compensation du Point Noir de Sortie
HISTORY_NEWSNAPSHOT;Ajouter
HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s
HISTORY_SNAPSHOT;Capture
HISTORY_SNAPSHOTS;Captures
IPTCPANEL_CATEGORY;Catégorie
+IPTCPANEL_CATEGORYHINT;Identifie le sujet de l'image selon l'opinion du fournisseur.
IPTCPANEL_CITY;Ville
+IPTCPANEL_CITYHINT;Entrez les nom de la ville photographiée dans cette image.
IPTCPANEL_COPYHINT;Copie les réglages IPTC dans le presse-papier
+IPTCPANEL_COPYRIGHT;Note de Copyright
+IPTCPANEL_COPYRIGHTHINT;Entrez une Note sur le détenteur actuelle du Copyright pour cette image (ex: ©2008 Jean Dupont).
IPTCPANEL_COUNTRY;Pays
+IPTCPANEL_COUNTRYHINT;Enterez le nom du pays photographié dans cette image.
+IPTCPANEL_CREATOR;Créateur
+IPTCPANEL_CREATORHINT;Enterez le nom de la personne qui a créé cette image.
+IPTCPANEL_CREATORJOBTITLE;Métier du créateur
+IPTCPANEL_CREATORJOBTITLEHINT;Enterez le métier et/ou la fonction de la personne indiquée dans le champs Créateur.
IPTCPANEL_CREDIT;Crédit
IPTCPANEL_CREDITHINT;Identifie le fournisseur de l'image, pas nécessairement le propriétaire/créateur (Crédit).
IPTCPANEL_DATECREATED;Date de création
+IPTCPANEL_DATECREATEDHINT;Entrez la date à laquelle la photo a été prise.
+IPTCPANEL_DESCRIPTION;Description
+IPTCPANEL_DESCRIPTIONHINT;Enterez une "légende" descrivant le qui, quoi et pourquoi de ce qui arrive dans cette image, cela peut inclure le nom des personnes, et/ou leur rôle dans l'action qui a lieu dans l'image.
+IPTCPANEL_DESCRIPTIONWRITER;Rédacteur de la description
+IPTCPANEL_DESCRIPTIONWRITERHINT;Enterez le nom de la personne impliquée dans la rédaction, édition ou correction de la description de cette image.
IPTCPANEL_EMBEDDED;Incorporés
IPTCPANEL_EMBEDDEDHINT;Réinitialise selon les données IPTC incorporées dans le fichier image
IPTCPANEL_HEADLINE;Titre
+IPTCPANEL_HEADLINEHINT;Enterez un bref synopsis publiable ou résumé du contenu de l'image.
IPTCPANEL_INSTRUCTIONS;Instructions
+IPTCPANEL_INSTRUCTIONSHINT;Enterez les informations à propos des embargos, ou autre restrictions non couvertes par le champs Copyright.
IPTCPANEL_KEYWORDS;Mots clés
+IPTCPANEL_KEYWORDSHINT;Enterez un nombre quelconque de mots clés, termes or phrases utilisés pour exprimer le sujet de l'image.
IPTCPANEL_PASTEHINT;Colle les réglages IPTC du presse-papier
+IPTCPANEL_PROVINCE;Province or État
+IPTCPANEL_PROVINCEHINT;Enterez le nom de la province ou de l'État photographiée dans cette image.
IPTCPANEL_RESET;Réinitialisation
IPTCPANEL_RESETHINT;Réinitialise selon le profil par défaut
IPTCPANEL_SOURCE;Source
+IPTCPANEL_SOURCEHINT;Enterez ou éditez le nom de la personne ou du tiers qui a un rôle dans la chaîne de transmission du contenu, comme une personne ou entité de qui vous avez reçu cette image.
+IPTCPANEL_SUPPCATEGORIES;Catégories supplémentaires
+IPTCPANEL_SUPPCATEGORIESHINT;Description approfondie du sujet de l'image.
IPTCPANEL_TITLE;Titre
+IPTCPANEL_TITLEHINT;Enterez un nom court et humainement lisible pour l'image, cela peut être le nom du fichier.
+IPTCPANEL_TRANSREFERENCE;ID du travail
+IPTCPANEL_TRANSREFERENCEHINT;Enterez un nombre ou identifiant servant au contrôle du flux de travail ou au suivi.
MAIN_BUTTON_FULLSCREEN;Plein écran
MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigue à l'image Suivante relativement à l'image ouverte dans l'Éditeur\nRaccourci: Shift-F4 \n\nPour naviguer à l'image Suivante relativement à la vignette sélectionnée dans le Navigateur de fichiers\nRaccourci: F4
MAIN_BUTTON_NAVPREV_TOOLTIP;Navigue à l'image Précédente relativement à l'image ouverte dans l'Éditeur\nRaccourci: Shift-F3 \n\nPour naviguer à l'image Précédente relativement à la vignette sélectionnée dans le Navigateur de fichiers\nRaccourci: F3
@@ -661,6 +726,7 @@ MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronise le Navigateur de fichiers avec l'Éditeu
MAIN_BUTTON_PREFERENCES;Préférences
MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Ajouter l'image courante à la file de traitement\nRaccourci: Ctrl+b
MAIN_BUTTON_SAVE_TOOLTIP;Enregistrer l'image courante\nRaccourci: Ctrl+s
+MAIN_BUTTON_SENDTOEDITOR;Éditer l'image dans un éditeur extenre
MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Éditer l'image courante dans l'éditeur externe\nRaccourci: Ctrl+e
MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Afficher/Cacher les 2 panneaux latéraux\nRaccourci: m
MAIN_BUTTON_UNFULLSCREEN;Quitter le plein écran
@@ -725,6 +791,7 @@ MAIN_TOOLTIP_SHOWHIDERP1;Afficher/Cacher le panneau droit\nRaccourci: Alt-l
MAIN_TOOLTIP_SHOWHIDETP1;Afficher/Cacher le panneau supérieur\nRaccourci: Shift-L
MAIN_TOOLTIP_THRESHOLD;Seuil
MAIN_TOOLTIP_TOGGLE;Comparaison avant/après\nRaccourci: Shift-b
+MONITOR_PROFILE_SYSTEM;Système par défaut
NAVIGATOR_B;B:
NAVIGATOR_G;V:
NAVIGATOR_H;T:
@@ -784,6 +851,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Filtrage des pixels morts
PARTIALPASTE_PREPROCESS_GREENEQUIL;Équilibrage du vert
PARTIALPASTE_PREPROCESS_HOTPIXFILT;Filtrage des pixels chauds
PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtre de bruit de ligne
+PARTIALPASTE_PRSHARPENING;Netteté post-redim.
PARTIALPASTE_RAWCACORR_AUTO;Corr. auto. de l'aberr. chromatique
PARTIALPASTE_RAWCACORR_CABLUE;Aberr. chromatique bleu
PARTIALPASTE_RAWCACORR_CARED;Aberr. chromatique rouge
@@ -797,6 +865,7 @@ PARTIALPASTE_RAW_DMETHOD;Algorithme de dématriçage
PARTIALPASTE_RAW_FALSECOLOR;Nbr d'itération des fausses couleurs
PARTIALPASTE_RAW_LMMSEITERATIONS;Niveau d'amélioration LMMSE
PARTIALPASTE_RESIZE;Redimentionnement
+PARTIALPASTE_RETINEX;Retinex
PARTIALPASTE_RGBCURVES;Courbes RVB
PARTIALPASTE_ROTATION;Rotation
PARTIALPASTE_SHADOWSHIGHLIGHTS;Ombres/Hautes lumières
@@ -933,6 +1002,8 @@ PREFERENCES_MENUOPTIONS;Options du menu
PREFERENCES_METADATA;Metadonnées
PREFERENCES_MIN;Mini (100x115)
PREFERENCES_MONINTENT;Intention de rendu par défaut
+PREFERENCES_MONITOR;Moniteur
+PREFERENCES_MONPROFILE;Profil couleur par défaut
PREFERENCES_MONPROFILE_WARNOSX;Due à des limitations de macOS, seul sRGB est supporté.
PREFERENCES_MULTITAB;Éditeurs multiple
PREFERENCES_MULTITABDUALMON;Éditeurs multiple, si possible sur un second moniteur
@@ -952,16 +1023,20 @@ PREFERENCES_PARSEDEXT;Extensions considérées
PREFERENCES_PARSEDEXTADD;Ajout de l'extension
PREFERENCES_PARSEDEXTADDHINT;Tapez une extension et cliquez ce bouton pour l'ajouter à la liste
PREFERENCES_PARSEDEXTDELHINT;Supprime de la liste les extensions sélectionnées
+PREFERENCES_PARSEDEXTDOWNHINT;Déplacer l'extension sélectionnée plus bas dans la liste.
+PREFERENCES_PARSEDEXTUPHINT;Déplacer l'extension sélectionnée plus haut dans la liste.
PREFERENCES_PREVDEMO;Méthode de Dématriçage de l'Aperçu
PREFERENCES_PREVDEMO_FAST;Rapide
PREFERENCES_PREVDEMO_LABEL;Méthode de dématriçage utilisé pour l'aperçu à un zoom <100%:
PREFERENCES_PREVDEMO_SIDECAR;Idem PP3
+PREFERENCES_PRINTER;Imprimante (Épreuvage Écran)
PREFERENCES_PROFILEHANDLING;Gestionnaire des profils de traitement
PREFERENCES_PROFILELOADPR;Priorité de chargement des profils
PREFERENCES_PROFILEPRCACHE;Profil dans le Cache
PREFERENCES_PROFILEPRFILE;Profil accolé au fichier d'entrée
PREFERENCES_PROFILESAVECACHE;Enregistrer la paramètres de traitement dans le Cache
PREFERENCES_PROFILESAVEINPUT;Enregistrer la paramètres de traitement accolé au fichier d'entrée
+PREFERENCES_PROFILE_NONE;Aucun
PREFERENCES_PROPERTY;Propriété
PREFERENCES_PRTINTENT;Intention de rendu
PREFERENCES_PRTPROFILE;Profil couleur
@@ -1006,6 +1081,7 @@ PREFERENCES_TISTD;Standard
PREFERENCES_TP_LABEL;Panneau des outils:
PREFERENCES_TP_USEICONORTEXT;Utiliser des icônes au lieu de textes
PREFERENCES_TP_VSCROLLBAR;Cacher la barre de défilement verticale
+PREFERENCES_TUNNELMETADATA;Copier les données Exif/IPTC/XMP tel quel dans le fichier de sortie
PREFERENCES_USEBUNDLEDPROFILES;Utiliser les profils fournis
PREFERENCES_USESYSTEMTHEME;Utiliser le thème système
PREFERENCES_VIEW;Point blanc du périphérique sortie (moniteur, TV, projecteur,...)
@@ -1062,6 +1138,7 @@ SAVEDLG_SUBSAMP;Sous-échantillonnage
SAVEDLG_SUBSAMP_1;Meilleure compression
SAVEDLG_SUBSAMP_2;Équilibré
SAVEDLG_SUBSAMP_3;Meilleure qualité
+SAVEDLG_SUBSAMP_TOOLTIP;Meilleurs compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma divisé par deux horizontalement et verticalement.\n\nÉquilibré:\nJ:a:b 4:2:2\nh/v 2/1\nChroma divisé par deux horizontalement.\n\nMeilleurs qualité:\nJ:a:b 4:4:4\nh/v 1/1\nPas de sous-échantillonnage chroma.
SAVEDLG_TIFFUNCOMPRESSED;TIFF non compressé
SAVEDLG_WARNFILENAME;Le fichier sera nommé
SHCSELECTOR_TOOLTIP;Cliquez le bouton droit de la souris\npour réinitialiser la position de ces 3 curseurs
@@ -1142,6 +1219,10 @@ TP_BWMIX_VAL;L
TP_CACORRECTION_BLUE;Bleu
TP_CACORRECTION_LABEL;Aberration chromatique
TP_CACORRECTION_RED;Rouge
+TP_CBDL_AFT;Après Noir-et-Blanc
+TP_CBDL_BEF;Avant Noir-et-Blanc
+TP_CBDL_METHOD;Traitement effectué
+TP_CBDL_METHOD_TOOLTIP;Choisissez selon que l'outil Contraste par Niveaux de Détail doit intervenir après l'outil Noir-et-Blanc, ce qui le fera opéré dans l'espace L*a*b*, ou avant lui, ce qui le fera opérer dans l'espace RVB.
TP_CHMIXER_BLUE;Bleu
TP_CHMIXER_GREEN;Vert
TP_CHMIXER_LABEL;Mixage des canaux
@@ -1240,6 +1321,7 @@ TP_COLORTONING_LUMAMODE_TOOLTIP;Si activé, lorsque vous changez la couleur (rou
TP_COLORTONING_METHOD;Méthode
TP_COLORTONING_METHOD_TOOLTIP;Mixage Lab - RVB courbes - RVB curseurs utilise une interpolation\nBalance couleur(ombres / tons moyens / hautes lumières)\nSaturation 2 couleurs utilise couleurs directes\nDans tous les méthodes vous pouvez activer Noir et Blanc
TP_COLORTONING_MIDTONES;Tons Moyens
+TP_COLORTONING_NEUTRAL;Réinit. curseurs
TP_COLORTONING_NEUTRAL_TIP;Réinitialise toutes les valeurs (Ombres, Tons moyens, Hautes lumières) à leur valeur par défaut.
TP_COLORTONING_OPACITY;Opacité
TP_COLORTONING_RGBCURVES;RVB - Courbes
@@ -1281,6 +1363,12 @@ TP_DARKFRAME_LABEL;Trame Noire
TP_DEFRINGE_LABEL;Aberration chromatique
TP_DEFRINGE_RADIUS;Rayon
TP_DEFRINGE_THRESHOLD;Seuil
+TP_DIRPYRDENOISE_3X3;3×3
+TP_DIRPYRDENOISE_3X3_SOFT;3×3 doux
+TP_DIRPYRDENOISE_5X5;5×5
+TP_DIRPYRDENOISE_5X5_SOFT;5×5 doux
+TP_DIRPYRDENOISE_7X7;7×7
+TP_DIRPYRDENOISE_9X9;9×9
TP_DIRPYRDENOISE_ABM;Chroma uniquement
TP_DIRPYRDENOISE_AUT;Global automatique
TP_DIRPYRDENOISE_AUTO;Global automatique
@@ -1320,10 +1408,13 @@ TP_DIRPYRDENOISE_METHOD11;Qualité
TP_DIRPYRDENOISE_METHOD11_TOOLTIP;La qualité peut être adapté à la trame du bruit. Régler sur "haut" augmentera l'effet de la réduction de bruit au prix d'un temps de traitement plus long.
TP_DIRPYRDENOISE_METHOD_TOOLTIP;Pour les images raw, les méthodes RVB ou Lab peuvent être utilisées.\n\nPour les images non-raw la méthode Lab sera utilisée, indépendamment de ce qu'indique ce bouton.
TP_DIRPYRDENOISE_METM_TOOLTIP;Lorsque vous utilisez les méthodes "Luminance seulement" et "Lab", un filtrage médian sera effectué juste après l'étape des ondelettes dans le pipeline de la réduction de bruit.\nEm mode "RVB", il sera effectué à la toute fin du pipeline de la réduction de bruit.
+TP_DIRPYRDENOISE_MET_TOOLTIP;Applique un filtre médian de la taille de "fenêtre" désirée. Plus cette taille est grande, plus cela prendra de temps.\n\n3×3 doux: traite 5 pixels dans une fenêtre de 3×3 pixels.\n3×3: traite 9 pixels dans une fenêtre de 3×3 pixels.\n5×5 doux: traite 13 pixels dans une fenêtre de 5×5 pixels.\n5×5: traite 25 pixels dans une fenêtre de 5×5 pixels.\n7×7: traite 49 pixels dans une fenêtre de 7×7 pixels.\n9×9: traite 81 pixels dans une fenêtre 9×9 pixels.\n\nIl est parfois possible d'atteindre une meilleurs qualité en appliquant plusieurs itérations d'une petite fenêtre qu'une seule itération d'une grande.
TP_DIRPYRDENOISE_NOISELABEL;Bruit de l'aperçu: Moyen=%1 Haut=%2
TP_DIRPYRDENOISE_NOISELABELEMPTY;Bruit de l'aperçu: Moyen= - Haut= -
TP_DIRPYRDENOISE_NRESID_TOOLTIP;Affiche les niveaux de bruit résiduel de la partie de l'image visible dans l'aperçu après les ondelettes.\n\n>300 Très bruité\n100-300 Bruité\n50-100 Peu bruité\n<50 Très peu bruité\n\nAttention, les valeurs diffèreront entre le mode RVB et L*a*b*. Les valeurs RVB sont moins précises car le mode RVB ne séparent pas complètement la luminance et la chrominance.
TP_DIRPYRDENOISE_PASSE;Itérations
+TP_DIRPYRDENOISE_PASSES;Itérations
+TP_DIRPYRDENOISE_PASSES_TOOLTIP;Appliquer trois itérations avec une taille de fenêtre de 3×3 aboutit souvent à de meilleurs résultats qu'une seule itération avec une taille de fenêtre de 7×7.
TP_DIRPYRDENOISE_PON;Multi-zones auto
TP_DIRPYRDENOISE_PRE;Aperçu multi-zones
TP_DIRPYRDENOISE_PREV;Aperçu
@@ -1351,6 +1442,7 @@ TP_DIRPYREQUALIZER_SKIN_TOOLTIP;A -100, les tons chairs sont ciblés.\nA 0 tous
TP_DIRPYREQUALIZER_THRESHOLD;Seuil
TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts due to the transitions between the color (hue, chroma, luma) of the skin and the rest of the image.
TP_DISTORTION_AMOUNT;Quantité
+TP_DISTORTION_AUTO_TIP;Corrige automatiquement la distortion optique dans les fichiers raw en opérant une mise en correspondance avec le fichier JPEG incorporé, si elle existe, et sur laquelle la correction de la distortion a été appliqué par le boitier.
TP_DISTORTION_LABEL;Distorsion
TP_EPD_EDGESTOPPING;Arrêt des bords
TP_EPD_GAMMA;Gamma
@@ -1386,6 +1478,7 @@ TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Standard Pondéré
TP_EXPOS_BLACKPOINT_LABEL;Points Noir Raw
TP_EXPOS_WHITEPOINT_LABEL;Points Blanc Raw
TP_FILMSIMULATION_LABEL;Simulation de Film
+TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee est configuré pour rechercher les images Hald CLUT, qui sont utilisées pour l'outil Simulation de Film, dans un dossier qui prends trop de temps à se charger.\nAllez dans Préférences > Traitement de l'image > Simulation de Film\npour voir quel dossier est utilisé. Vous devriez soit pointer RawTherapee vers un dossier qui ne contient que les images Hald CLUT et rien d'autre, ou un dossier vide si vous ne voulez pas utiliser l'outil Simulation de Film.\n\nLisez l'article Simulation de Film dans RawPedia pour plus d'information.\n\nVoulez-vous abandonner la recherche maintenant?
TP_FILMSIMULATION_STRENGTH;Force
TP_FILMSIMULATION_ZEROCLUTSFOUND;Veuillez préciser le dossier contenant\nles fichiers HaldCLUT dans les Préférences
TP_FLATFIELD_AUTOSELECT;Sélection automatique
@@ -1431,8 +1524,8 @@ TP_ICM_APPLYBASELINEEXPOSUREOFFSET;Exposition de base
TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Utilise l'offset d'exposition de base contenu dans le profil DCP. Ce réglage n'est possible que si le profil DCP sélectionné en contient un.
TP_ICM_APPLYHUESATMAP;Table de base
TP_ICM_APPLYHUESATMAP_TOOLTIP;Utilise la table de base (HueSatMap) contenu dans le profil DCP. Ce réglage n'est possible que si le profil DCP sélectionné en contient une.
-TP_ICM_APPLYLOOKTABLE;Table de recherche
-TP_ICM_APPLYLOOKTABLE_TOOLTIP;Utilise la table de recherche (LUT) contenu dans le profil DCP. Ce réglage n'est possible que si le profil DCP sélectionné en contient une.
+TP_ICM_APPLYLOOKTABLE;Table de correspondance
+TP_ICM_APPLYLOOKTABLE_TOOLTIP;Utilise la table de correspondance (LUT) contenu dans le profil DCP. Ce réglage n'est possible que si le profil DCP sélectionné en contient une.
TP_ICM_BLENDCMSMATRIX;Mélange des hautes lumières\ndu profil ICC avec la matrice
TP_ICM_BLENDCMSMATRIX_TOOLTIP;Activer la récupération des zones brûlées lorsque les profils ICC basés sur la LUT sont utilisés
TP_ICM_BPC;Compensation du Point Noir
@@ -1455,6 +1548,8 @@ TP_ICM_INPUTPROFILE;Profil d'entrée
TP_ICM_LABEL;ICM
TP_ICM_NOICM;Pas d'ICM: sortie sRGB
TP_ICM_OUTPUTPROFILE;Profil de sortie
+TP_ICM_PROFILEINTENT;Intention de Rendu
+TP_ICM_SAVEREFERENCE;Sauver Image de Référence.
TP_ICM_SAVEREFERENCE_APPLYWB;Appliquer la balance des blancs
TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Généralement, applique la balance des blancs lors de l'enregistrement d'images pour créer des profils ICC, et n'applique pas la balance des blancs pour créer des profils DCP.
TP_ICM_SAVEREFERENCE_TOOLTIP;Sauvegarde une image TIFF linéaire avant que le profil d'entrée ne soit appliqué. Le résultat peut être utilisé à des fins de calibrage, pour générer un profil APN.
@@ -1507,6 +1602,7 @@ TP_LENSPROFILE_LABEL;Profil de correction d'objectif
TP_LENSPROFILE_USECA;Corr. de l'aber. chromatique
TP_LENSPROFILE_USEDIST;Corr. de la distortion
TP_LENSPROFILE_USEVIGN;Corr. du vignettage
+TP_NEUTRAL;Réinit.
TP_NEUTRAL_TIP;Réinitialise les valeurs de l'exposition à des valeurs neutres
TP_PCVIGNETTE_FEATHER;Étendue
TP_PCVIGNETTE_FEATHER_TOOLTIP;Étendue: 0=bords uniquement, 50=mi-chemin du centre, 100=jusqu'au centre
@@ -1533,6 +1629,7 @@ TP_PRSHARPENING_TOOLTIP;Augmente la netteté de l'image après le redimentionnem
TP_RAWCACORR_AUTO;Correction automatique
TP_RAWCACORR_CABLUE;Bleu
TP_RAWCACORR_CARED;Rouge
+TP_RAWCACORR_CASTR;force
TP_RAWEXPOS_BLACKS;Niveaux de noir
TP_RAWEXPOS_BLACK_0;Vert 1 (maître)
TP_RAWEXPOS_BLACK_1;Rouge
@@ -1574,6 +1671,86 @@ TP_RESIZE_SCALE;Échelle
TP_RESIZE_SPECIFY;Préciser:
TP_RESIZE_W;L:
TP_RESIZE_WIDTH;Largeur
+TP_RETINEX_CONTEDIT_HSL;Égaliseur d'histogramme TSV
+TP_RETINEX_CONTEDIT_LAB;Égaliseur d'histogramme L*a*b*
+TP_RETINEX_CONTEDIT_LH;Égaliseur de teinte
+TP_RETINEX_CONTEDIT_MAP;Égaliseur de masque
+TP_RETINEX_CURVEEDITOR_CD;L=f(L)
+TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance en fonction de la luminance L=f(L)\nCorrige les données raw pour réduire halos et artéfacts.
+TP_RETINEX_CURVEEDITOR_LH;Force=f(T)
+TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Force en fonction de la Teinte Force=f(T)\nCette courbe agit également sur le chroma lors de l'utilisation de la méthode Retinex "Hautes Lumières".
+TP_RETINEX_CURVEEDITOR_MAP;L=f(L)
+TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;Cette courbe peut être appliquée seule ou avec un masque Gaussion ou un masque d'ondelettes.\nAttention aux artéfacts!
+TP_RETINEX_EQUAL;Égaliseur
+TP_RETINEX_FREEGAMMA;Gamma manuel
+TP_RETINEX_GAIN;Gain
+TP_RETINEX_GAINOFFS;Gain et Décalage (brillance)
+TP_RETINEX_GAINTRANSMISSION;Gain sur Transmission
+TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplifie ou réduit le canal transmission pour atteindre la luminance souhaitée.\nAbscisses: transmission ; min = 0, max = valeurs.\nOrdonnées: gain.
+TP_RETINEX_GAIN_TOOLTIP;Agit sur l'image recomposée.\n\nCeci est très différent des autres paramètres. Utilisé pour les pixels noirs et blancs, et pour aider à balancer l'histogramme.
+TP_RETINEX_GAMMA;Gamma
+TP_RETINEX_GAMMA_FREE;Manuel
+TP_RETINEX_GAMMA_HIGH;Haute
+TP_RETINEX_GAMMA_LOW;Bas
+TP_RETINEX_GAMMA_MID;Milieu
+TP_RETINEX_GAMMA_NONE;Aucun
+TP_RETINEX_GAMMA_TOOLTIP;Restaure les tonalités en appliquant une transformation gamma avant et après Retinex. Différent des courbes Retinex ou autres courbes (Lab, Exposition, etc.).
+TP_RETINEX_GRAD;Gradient de transmission
+TP_RETINEX_GRADS;Gradient de force
+TP_RETINEX_GRADS_TOOLTIP;Si curseur à 0, toutes les itérations sont identiques.\nSi > 0, la Force est réduite à chaque nouvelle itération, et inversement.
+TP_RETINEX_GRAD_TOOLTIP;Si curseur à 0, toutes les itérations sont identiques.\nSi > 0, la Variance et le Seuil sont réduit à chaque nouvelle itération, et inversement.
+TP_RETINEX_HIGH;Haut
+TP_RETINEX_HIGHLIG;Hautes-lumières
+TP_RETINEX_HIGHLIGHT;Seuil des Hautes-lumières
+TP_RETINEX_HIGHLIGHT_TOOLTIP;Augment l'action de l'algoritme "Haut".\nPeut nécessiter que vous réajustiez "Pixels environnants" et d'augmenter la "Correction du point blanc" dans l'outil Raw -> Point Blanc Raw.
+TP_RETINEX_HSLSPACE_LIN;TSV-Linéaire
+TP_RETINEX_HSLSPACE_LOG;TSV-Logarithmique
+TP_RETINEX_ITER;Itérations
+TP_RETINEX_ITERF;Compression tonale
+TP_RETINEX_ITER_TOOLTIP;Simule une compression tonale.\nLes valeurs hautes augmentent le temps de traitement.
+TP_RETINEX_LABEL;Retinex
+TP_RETINEX_LABEL_MASK;Masque
+TP_RETINEX_LABSPACE;L*a*b*
+TP_RETINEX_LOW;Bas
+TP_RETINEX_MAP;Méthode de masquage
+TP_RETINEX_MAP_GAUS;Masque gaussien
+TP_RETINEX_MAP_MAPP;Masque pointu (ondelettes partielles)
+TP_RETINEX_MAP_MAPT;Masque pointu (ondelettes totales)
+TP_RETINEX_MAP_METHOD_TOOLTIP;Utilise le masque généré par la fonction Gaussienne ci-dessus (Rayon, Méthode) pour réduire les halos et artéfacts.\n\nCourbe seulement: applique une courbe de contraste diagonale sur le masque.\nAttention aux artéfacts!\n\nMasque gaussien: génère et utilise le masque original modifié par flou gaussien.\nRapide.\n\nMasque pointu: génère et utilise une ondelette sur le masque original.\nLent.
+TP_RETINEX_MAP_NONE;Aucune
+TP_RETINEX_MEDIAN;Filtre médian
+TP_RETINEX_METHOD;Méthode
+TP_RETINEX_METHOD_TOOLTIP;Bas = Renforce les basses lumières.\nUniforme = Action uniforme.\nHaut = Renforce les hautes-lumières.\nHautes-lumières = Retire le magenta des hautes lumières.
+TP_RETINEX_MLABEL;Recomposition sans 'brume' Min=%1 Max=%2
+TP_RETINEX_MLABEL_TOOLTIP;Devrait être proche de min=0 max=32768\nImage recomposée sans mélange.
+TP_RETINEX_NEIGHBOR;Rayon
+TP_RETINEX_NEUTRAL;Réinit.
+TP_RETINEX_NEUTRAL_TIP;Réinitialise tous les curseurs et courbes à leur valeur par défaut.
+TP_RETINEX_OFFSET;Décalage (brillance)
+TP_RETINEX_SCALES;Gradient gaussien
+TP_RETINEX_SCALES_TOOLTIP;Si le curseur est à 0, toutes les itérations sont identiques.\nSi > 0, l'Échelle et le Rayon sont réduit à chaque nouvelle itération, et inversement.
+TP_RETINEX_SETTINGS;Réglages
+TP_RETINEX_SKAL;Échelle
+TP_RETINEX_SLOPE;Pente du gamma manuel
+TP_RETINEX_STRENGTH;Force
+TP_RETINEX_THRESHOLD;Seuil
+TP_RETINEX_THRESHOLD_TOOLTIP;Limite entrée/sortie.\nEntrée = image source,\nSortie = image gaussienne.
+TP_RETINEX_TLABEL;CT Min=%1 Max=%2 Moyen=%3 Sigma=%4
+TP_RETINEX_TLABEL2;CT Tm=%1 TM=%2
+TP_RETINEX_TLABEL_TOOLTIP;Résultat du calcul de transmission.\nMin et Max sont utilisés par Variance.\nMoyen et Sigma.\nTm=Min TM=Niveau maximum de transmission.
+TP_RETINEX_TRANF;Transmission
+TP_RETINEX_TRANSMISSION;Modulation du canal 'transmission'
+TP_RETINEX_TRANSMISSION_TOOLTIP;Transmission en fonction de la transmission.\nAbscisses: transmission des valeurs négatives (min), moyennes, et positives (max).\nOrdonnées: amplification ou réduction.
+TP_RETINEX_UNIFORM;Uniforme
+TP_RETINEX_VARIANCE;Contraste
+TP_RETINEX_VARIANCE_TOOLTIP;Une faible variance augmente le contraste local et la saturation, mais peut conduire à des artéfacts.
+TP_RETINEX_VIEW;Traitement
+TP_RETINEX_VIEW_MASK;Masque
+TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard: Affichage normal.\nMasque: Affiche le masque.\nMasque flou: Affiche l'image avec un masque flou à grand rayon.\nTransmission - Auto/Fixé: Affiche les données de Transmission, avant toute action sur le contraste et la brillance.\n\nAttention: le masque ne correspond pas au rendu final, mais est amplifié pour le rendre plus visible.
+TP_RETINEX_VIEW_NONE;Standard
+TP_RETINEX_VIEW_TRAN;Transmission - Auto
+TP_RETINEX_VIEW_TRAN2;Transmission - Fixé
+TP_RETINEX_VIEW_UNSHARP;Masque flou
TP_RGBCURVES_BLUE;B
TP_RGBCURVES_CHANNEL;Canal
TP_RGBCURVES_GREEN;V
@@ -1858,184 +2035,3 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: f
ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: +
ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
-!!!!!!!!!!!!!!!!!!!!!!!!!
-! Untranslated keys follow; remove the ! prefix after an entry is translated.
-!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
-!GENERAL_APPLY;Apply
-!GENERAL_OPEN;Open
-!HISTORY_MSG_166;Exposure - Reset
-!HISTORY_MSG_407;Retinex - Method
-!HISTORY_MSG_408;Retinex - Radius
-!HISTORY_MSG_409;Retinex - Contrast
-!HISTORY_MSG_410;Retinex - Offset
-!HISTORY_MSG_411;Retinex - Strength
-!HISTORY_MSG_412;Retinex - Gaussian Gradient
-!HISTORY_MSG_413;Retinex - Contrast
-!HISTORY_MSG_414;Retinex - Histogram - Lab
-!HISTORY_MSG_415;Retinex - Transmission
-!HISTORY_MSG_416;Retinex
-!HISTORY_MSG_417;Retinex - Transmission Median
-!HISTORY_MSG_418;Retinex - Threshold
-!HISTORY_MSG_419;Retinex - Color space
-!HISTORY_MSG_420;Retinex - Histogram - HSL
-!HISTORY_MSG_421;Retinex - Gamma
-!HISTORY_MSG_422;Retinex - Gamma
-!HISTORY_MSG_423;Retinex - Gamma slope
-!HISTORY_MSG_424;Retinex - HL threshold
-!HISTORY_MSG_425;Retinex - Log base
-!HISTORY_MSG_426;Retinex - Hue equalizer
-!HISTORY_MSG_427;Output rendering intent
-!HISTORY_MSG_428;Monitor rendering intent
-!HISTORY_MSG_429;Retinex - Iterations
-!HISTORY_MSG_430;Retinex - Transmission Gradient
-!HISTORY_MSG_431;Retinex - Strength Gradient
-!HISTORY_MSG_432;Retinex - M - Highlights
-!HISTORY_MSG_433;Retinex - M - Highlights TW
-!HISTORY_MSG_434;Retinex - M - Shadows
-!HISTORY_MSG_435;Retinex - M - Shadows TW
-!HISTORY_MSG_436;Retinex - M - Radius
-!HISTORY_MSG_437;Retinex - M - Method
-!HISTORY_MSG_438;Retinex - M - Equalizer
-!HISTORY_MSG_439;Retinex - Process
-!HISTORY_MSG_440;CbDL - Method
-!HISTORY_MSG_441;Retinex - Gain transmission
-!HISTORY_MSG_442;Retinex - Scale
-!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
-!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
-!IPTCPANEL_COPYRIGHT;Copyright notice
-!IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe.
-!IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image.
-!IPTCPANEL_CREATOR;Creator
-!IPTCPANEL_CREATORHINT;Enter the name of the person that created this image.
-!IPTCPANEL_CREATORJOBTITLE;Creator's job title
-!IPTCPANEL_CREATORJOBTITLEHINT;Enter the Job Title of the person listed in the Creator field.
-!IPTCPANEL_DATECREATEDHINT;Enter the Date the image was taken.
-!IPTCPANEL_DESCRIPTION;Description
-!IPTCPANEL_DESCRIPTIONHINT;Enter a "caption" describing the who, what, and why of what is happening in this image, this might include names of people, and/or their role in the action that is taking place within the image.
-!IPTCPANEL_DESCRIPTIONWRITER;Description writer
-!IPTCPANEL_DESCRIPTIONWRITERHINT;Enter the name of the person involved in writing, editing or correcting the description of the image.
-!IPTCPANEL_HEADLINEHINT;Enter a brief publishable synopsis or summary of the contents of the image.
-!IPTCPANEL_INSTRUCTIONSHINT;Enter information about embargoes, or other restrictions not covered by the Copyright field.
-!IPTCPANEL_KEYWORDSHINT;Enter any number of keywords, terms or phrases used to express the subject matter in the image.
-!IPTCPANEL_PROVINCE;Province or state
-!IPTCPANEL_PROVINCEHINT;Enter the name of the province or state pictured in this image.
-!IPTCPANEL_SOURCEHINT;Enter or edit the name of a person or party who has a role in the content supply chain, such as a person or entity from whom you received this image from.
-!IPTCPANEL_SUPPCATEGORIES;Supplemental categories
-!IPTCPANEL_SUPPCATEGORIESHINT;Further refines the subject of the image.
-!IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name.
-!IPTCPANEL_TRANSREFERENCE;Job ID
-!IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking.
-!MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor
-!MONITOR_PROFILE_SYSTEM;System default
-!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
-!PARTIALPASTE_RETINEX;Retinex
-!PREFERENCES_MONITOR;Monitor
-!PREFERENCES_MONPROFILE;Default color profile
-!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
-!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
-!PREFERENCES_PRINTER;Printer (Soft-Proofing)
-!PREFERENCES_PROFILE_NONE;None
-!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
-!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling.
-!TP_CBDL_AFT;After Black-and-White
-!TP_CBDL_BEF;Before Black-and-White
-!TP_CBDL_METHOD;Process located
-!TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space.
-!TP_COLORTONING_NEUTRAL;Reset sliders
-!TP_DIRPYRDENOISE_3X3;3×3
-!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft
-!TP_DIRPYRDENOISE_5X5;5×5
-!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft
-!TP_DIRPYRDENOISE_7X7;7×7
-!TP_DIRPYRDENOISE_9X9;9×9
-!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one.
-!TP_DIRPYRDENOISE_PASSES;Median iterations
-!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size.
-!TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera.
-!TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee is configured to look for Hald CLUT images, which are used for the Film Simulation tool, in a folder which is taking too long to load.\nGo to Preferences > Image Processing > Film Simulation\nto see which folder is being used. You should either point RawTherapee to a folder which contains only Hald CLUT images and nothing more, or to an empty folder if you don't want to use the Film Simulation tool.\n\nRead the Film Simulation article in RawPedia for more information.\n\nDo you want to cancel the scan now?
-!TP_ICM_PROFILEINTENT;Rendering Intent
-!TP_ICM_SAVEREFERENCE;Save Reference Image
-!TP_NEUTRAL;Reset
-!TP_RAWCACORR_CASTR;Strength
-!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
-!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
-!TP_RETINEX_CONTEDIT_LH;Hue equalizer
-!TP_RETINEX_CONTEDIT_MAP;Mask equalizer
-!TP_RETINEX_CURVEEDITOR_CD;L=f(L)
-!TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts.
-!TP_RETINEX_CURVEEDITOR_LH;Strength=f(H)
-!TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method.
-!TP_RETINEX_CURVEEDITOR_MAP;L=f(L)
-!TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts!
-!TP_RETINEX_EQUAL;Equalizer
-!TP_RETINEX_FREEGAMMA;Free gamma
-!TP_RETINEX_GAIN;Gain
-!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
-!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
-!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
-!TP_RETINEX_GAMMA;Gamma
-!TP_RETINEX_GAMMA_FREE;Free
-!TP_RETINEX_GAMMA_HIGH;High
-!TP_RETINEX_GAMMA_LOW;Low
-!TP_RETINEX_GAMMA_MID;Middle
-!TP_RETINEX_GAMMA_NONE;None
-!TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.).
-!TP_RETINEX_GRAD;Transmission gradient
-!TP_RETINEX_GRADS;Strength gradient
-!TP_RETINEX_GRADS_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Strength is reduced when iterations increase, and conversely.
-!TP_RETINEX_GRAD_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Variance and Threshold are reduced when iterations increase, and conversely.
-!TP_RETINEX_HIGH;High
-!TP_RETINEX_HIGHLIG;Highlight
-!TP_RETINEX_HIGHLIGHT;Highlight threshold
-!TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool.
-!TP_RETINEX_HSLSPACE_LIN;HSL-Linear
-!TP_RETINEX_HSLSPACE_LOG;HSL-Logarithmic
-!TP_RETINEX_ITER;Iterations (Tone-mapping)
-!TP_RETINEX_ITERF;Tone mapping
-!TP_RETINEX_ITER_TOOLTIP;Simulate a tone-mapping operator.\nHigh values increase the processing time.
-!TP_RETINEX_LABEL;Retinex
-!TP_RETINEX_LABEL_MASK;Mask
-!TP_RETINEX_LABSPACE;L*a*b*
-!TP_RETINEX_LOW;Low
-!TP_RETINEX_MAP;Mask method
-!TP_RETINEX_MAP_GAUS;Gaussian mask
-!TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial)
-!TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total)
-!TP_RETINEX_MAP_METHOD_TOOLTIP;Use the mask generated by the Gaussian function above (Radius, Method) to reduce halos and artifacts.\n\nCurve only: apply a diagonal contrast curve on the mask.\nBeware of artifacts!\n\nGaussian mask: generate and use a Gaussian blur of the original mask.\nQuick.\n\nSharp mask: generate and use a wavelet on the original mask.\nSlow.
-!TP_RETINEX_MAP_NONE;None
-!TP_RETINEX_MEDIAN;Transmission median filter
-!TP_RETINEX_METHOD;Method
-!TP_RETINEX_METHOD_TOOLTIP;Low = Reinforce low light.\nUniform = Equalize action.\nHigh = Reinforce high light.\nHighlights = Remove magenta in highlights.
-!TP_RETINEX_MLABEL;Restored haze-free Min=%1 Max=%2
-!TP_RETINEX_MLABEL_TOOLTIP;Should be near min=0 max=32768\nRestored image with no mixture.
-!TP_RETINEX_NEIGHBOR;Radius
-!TP_RETINEX_NEUTRAL;Reset
-!TP_RETINEX_NEUTRAL_TIP;Reset all sliders and curves to their default values.
-!TP_RETINEX_OFFSET;Offset (brightness)
-!TP_RETINEX_SCALES;Gaussian gradient
-!TP_RETINEX_SCALES_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Scale and radius are reduced when iterations increase, and conversely.
-!TP_RETINEX_SETTINGS;Settings
-!TP_RETINEX_SKAL;Scale
-!TP_RETINEX_SLOPE;Free gamma slope
-!TP_RETINEX_STRENGTH;Strength
-!TP_RETINEX_THRESHOLD;Threshold
-!TP_RETINEX_THRESHOLD_TOOLTIP;Limits in/out.\nIn = image source,\nOut = image gauss.
-!TP_RETINEX_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sigma=%4
-!TP_RETINEX_TLABEL2;TM Tm=%1 TM=%2
-!TP_RETINEX_TLABEL_TOOLTIP;Transmission map result.\nMin and Max are used by Variance.\nMean and Sigma.\nTm=Min TM=Max of transmission map.
-!TP_RETINEX_TRANF;Transmission
-!TP_RETINEX_TRANSMISSION;Transmission map
-!TP_RETINEX_TRANSMISSION_TOOLTIP;Transmission according to transmission.\nAbscissa: transmission from negative values (min), mean, and positives values (max).\nOrdinate: amplification or reduction.
-!TP_RETINEX_UNIFORM;Uniform
-!TP_RETINEX_VARIANCE;Contrast
-!TP_RETINEX_VARIANCE_TOOLTIP;Low variance increase local contrast and saturation, but can lead to artifacts.
-!TP_RETINEX_VIEW;Process
-!TP_RETINEX_VIEW_MASK;Mask
-!TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard - Normal display.\nMask - Displays the mask.\nUnsharp mask - Displays the image with a high radius unsharp mask.\nTransmission - Auto/Fixed - Displays the file transmission-map, before any action on contrast and brightness.\n\nAttention: the mask does not correspond to reality, but is amplified to make it more visible.
-!TP_RETINEX_VIEW_NONE;Standard
-!TP_RETINEX_VIEW_TRAN;Transmission - Auto
-!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
-!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
diff --git a/rtdata/rt_splash_5.png b/rtdata/rt_splash_5.png
deleted file mode 100644
index 71486b132..000000000
Binary files a/rtdata/rt_splash_5.png and /dev/null differ
diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css
index 209ff2393..a672c66d8 100644
--- a/rtdata/themes/RawTherapee-GTK3-20_.css
+++ b/rtdata/themes/RawTherapee-GTK3-20_.css
@@ -1,8 +1,8 @@
/*
This file is part of RawTherapee.
- Copyright (c) 2015 DrSlony
- Copyright (c) 2016 Hombre
+ Copyright (c) 2015-2017 DrSlony
+ Copyright (c) 2016-2017 Hombre
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,6 +18,11 @@
along with RawTherapee. If not, see .
*/
+/* Scrollbar stuck workaround */
+scrollbar:not(.overlay-indicator):hover {
+ min-width: 1px;
+}
+
* {
color: #AAAAAA;
}
diff --git a/rtdata/themes/RawTherapee-GTK3-_19.css b/rtdata/themes/RawTherapee-GTK3-_19.css
index c7caa7b63..d9d61206b 100644
--- a/rtdata/themes/RawTherapee-GTK3-_19.css
+++ b/rtdata/themes/RawTherapee-GTK3-_19.css
@@ -1,8 +1,8 @@
/*
This file is part of RawTherapee.
- Copyright (c) 2015 DrSlony
- Copyright (c) 2016 Hombre
+ Copyright (c) 2015-2017 DrSlony
+ Copyright (c) 2016-2017 Hombre
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/rtdata/themes/TooWaBlue-Dark-GTK3-20_.css b/rtdata/themes/TooWaBlue-Dark-GTK3-20_.css
index 9b1a9466f..43d9a3035 100644
--- a/rtdata/themes/TooWaBlue-Dark-GTK3-20_.css
+++ b/rtdata/themes/TooWaBlue-Dark-GTK3-20_.css
@@ -1,8 +1,8 @@
/*
This file is part of RawTherapee.
- Copyright (c) 2016 TooWaBoo
- Version 2.31 - requires RT 4.2.1445 or higher
+ Copyright (c) 2016-2017 TooWaBoo
+ Version 2.42 - requires RT 5.0
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -63,7 +63,6 @@
@define-color headline-frame rgb(210,210,210);
/***********************************************************************************************/
-
* {
color: @text-color;
text-shadow: none;
@@ -71,13 +70,24 @@
border-image: none;
transition: none;
}
+
*:disabled {
color: rgb(128,128,128);
}
+#ToolPanelNotebook {
+ min-width: 23em;
+}
+#HistoryPanel {
+ min-width: 17.83334em;
+}
+
window.background {
background-color: @bg-light-grey;
}
+window > box {
+ padding: 0.41667em;
+}
dialog {
background-color: @bg-grey;
border-radius: 0;
@@ -87,7 +97,7 @@ dialog {
-GtkDialog-action-area-border: 0;
}
dialog > box {
- padding: 8px;
+ padding: 0.66667em;
}
messagedialog {
background-color: @bg-light-grey;
@@ -96,7 +106,7 @@ messagedialog {
tooltip {
background-color: @bg-tooltip;
border: 1px solid @border-tooltip;
- border-radius: 4px;
+ border-radius: 0.33334em;
padding: 0;
margin: 0;
box-shadow: none;
@@ -111,7 +121,7 @@ paned {
/*?win*/
#PlacesPaned {
- margin: 5px 0 0;
+ margin: 0;
}
undershoot {
@@ -142,7 +152,7 @@ frame {
#BatchQueueButtonsMainContainer frame,
#MyExpander frame,
dialog frame {
- margin: 2px 6px;
+ margin: 0.16667em 0.5em;
}
/* affects selection list*/
entry > window > frame,
@@ -168,11 +178,11 @@ frame > border {
#BatchQueueButtonsMainContainer > frame > border,
#MyExpander frame > border,
dialog frame > border {
- padding: 6px;
+ padding: 0.5em;
border-radius: 0;
border: 1px solid @border-color;
background-color: transparent;
- margin: 0 -6px;
+ margin: 0 -0.5em;
}
/* affects selection list*/
entry > window > frame> border,
@@ -184,29 +194,29 @@ filechooser > frame > border {
}
#PrefNotebook box > frame > border {
padding-top: 0;
- padding-bottom: 3px;
+ padding-bottom: 0.25em;
}
#BatchQueueButtonsMainContainer frame > label,
#ToolPanelNotebook frame > label,
dialog frame > label {
margin: 0;
- padding: 2px 6px;
+ padding: 0.16667em 0.5em;
}
#BatchQueueButtonsMainContainer frame > border {
- margin-bottom: 10px;
+ margin-bottom: 0.83334em;
}
#BatchQueueButtonsMainContainer frame:nth-child(3) > border {
- padding-left: 11px;
+ padding-left: 0.91667em;
}
#BatchQueueButtons {
- margin-top: 8px;
+ margin-top: 0.66667em;
}
frame > label {
margin: 0;
- padding: 6px 0;
+ padding: 0.5em 0;
color: @headline-frame;
}
frame > checkbutton label{
@@ -218,14 +228,9 @@ frame > checkbutton label{
textview.view, treeview.view {
background-color: @bg-dark-grey;
border-color: @view-grid-border;
- padding: 1px;
+ padding: 0.16667em;
margin: 0;
}
-#RightNotebook > stack > :nth-child(3) treeview {
- border: 1px solid @bg-dark-grey;
- border-bottom: none;
-}
-#PrefNotebook textview:selected:hover, #PrefNotebook treeview:selected:hover,
textview:hover, treeview:hover {
background-color: @bg-list-hover;
}
@@ -234,43 +239,41 @@ textview:selected, treeview:selected {
background-color: @accent-color;
border-top-color: transparent;
}
-#PrefNotebook textview:selected, #PrefNotebook treeview:selected {
- color: @text-color;
- background-color: @bg-dark-grey;
+
+#RightNotebook > stack > :nth-child(3) treeview {
+ border: 1px solid @bg-dark-grey;
+ border-bottom: none;
}
-#PlacesPaned treeview {
- padding-left: 5px;
- padding-right: 0;
+#PlacesPaned > :nth-child(1) treeview {
+ padding: 0.08334em 0 0.08334em 0.5em;
-gtk-icon-style: symbolic;
}
-#HistoryPanel .view {
- padding-left: 0;
- padding-right: 0;
-}
#HistoryPanel {
- margin-top: 8px;
+ margin-top: 0.5em;
}
#HistoryPanel > border {
- margin-top: 21px;
+ margin-top: 1.75em;
}
#HistoryPanel > label {
- margin: 0 0 -15px 0;
+ margin: 0 0 -1.33334em 0;
padding: 0;
}
#Snapshots > border {
- min-height: 114px;
- margin-top: 0;
+ min-height: calc(6.5em + 36px);
}
#Snapshots > label {
margin-bottom: -4px;
}
#Snapshots button {
- margin-top: -3px;
+ margin-top: -8px;
margin-bottom: -4px;
}
+#Snapshots > box > :nth-child(1) {
+ margin-bottom: 0.41667em;
+}
#PlacesPaned > box:nth-child(3) > :nth-child(2),
#PlacesPaned > box:nth-child(1) > :nth-child(1),
@@ -280,19 +283,25 @@ textview:selected, treeview:selected {
background-color: @bg-dark-grey;
}
+/*Corrects the space for the snapshot view of the paned separator*/
+#Snapshots {
+ margin-top: -0.33334em;
+}
+/**/
+
/*** end ***************************************************************************************/
/*** Navigator *********************************************************************************/
#Navigator .drawingarea {
- border-top: 5px solid @bg-dark-grey;
- border-bottom: 2px solid @bg-dark-grey;
+ border-top: 0.41667em solid @bg-dark-grey;
+ border-bottom: 0.25em solid @bg-dark-grey;
}
#Navigator {
background-color: @bg-dark-grey;
- padding-bottom: 3px;
+ padding-bottom: 0.25em;
}
#Navigator box label {
- padding: 2px 0;
+ padding: 0.16667em 0;
}
/*** end ***************************************************************************************/
@@ -304,30 +313,33 @@ filechooser * {
filechooser #pathbarbox {
border: none;
background-color: @bg-dark-grey;
+ padding: 0.5em;
}
filechooser box {
border-color: transparent;
}
+
filechooser > box > paned > box {
border: 1px solid @bg-dark-grey;
-}
-
-filechooser placessidebar {
- padding: 0 1px;
- margin: -3px 0 0;
background-color: @bg-dark-grey;
}
+filechooser placessidebar {
+ padding: 0 1px;
+ background-color: @bg-dark-grey;
+}
+
filechooser list {
background-color: @bg-dark-grey;
border: none;
box-shadow: none;
padding: 0;
- margin: 0;
+ margin: -3px 0 0;
}
filechooser list row {
margin: 0;
- min-height: 23px;
+ padding: 0;
+ min-height: calc(1.41667em + 8px);
}
filechooser list row label{
margin: 0;
@@ -345,7 +357,7 @@ filechooser list row:selected {
/*** Histogram *********************************************************************************/
#HistogramPanel {
- margin-top: 3px;
+ margin: -2px 0;
border: none;
}
#HistogramArea,
@@ -356,7 +368,7 @@ filechooser list row:selected {
#fullButton,
#histButton {
- padding: 5px 4px;
+ padding: 0.47em 0.41667em;
margin: 0;
border-color: @bg-light-grey;
border-style: solid;
@@ -369,7 +381,7 @@ filechooser list row:selected {
border-radius: 0;
}
#fullButton {
- padding: 5px 4px 6px;
+ padding: 0.47em 0.41667em 0.58334em;
}
#EditorLeftPaned #fullButton,
#EditorLeftPaned #histButton {
@@ -377,16 +389,16 @@ filechooser list row:selected {
}
/*** end ***************************************************************************************/
-/*** Separator ***/
+/*** Separator *********************************************************************************/
separator {
background-color: transparent;
}
grid separator.horizontal, box separator.horizontal {
- margin: 2px 0;
+ margin: 0.16667em 0;
padding: 0;
}
grid separator.vertical, box separator.vertical {
- margin: 0 3px;
+ margin: 0 0.25em;
padding: 0;
}
@@ -396,33 +408,37 @@ dialog separator {
background-color: @border-color;
}
popover separator:not(:only-child) {
- margin: 0 6px;
+ margin: 0 0.5em;
background-color: @border-color;
}
paned.horizontal > separator {
background-color: transparent;
- border-left: 4px solid @bg-light-grey;
- border-right: 4px solid @bg-light-grey;
- margin: 0 -2px;
+ min-width: 0.41667em;
+ border-left: 0.25em solid @bg-light-grey;
+ border-right: 0.25em solid @bg-light-grey;
+ margin: 0 -0.25em;
padding: 0;
}
+
paned.vertical > separator {
- background-color: @bg-dark-grey;
- border-bottom: 4px solid @bg-light-grey;
- border-top: 4px solid @bg-light-grey;
- margin: -1px 0;
- padding: 1px 0;
+ background-color: @bg-light-grey;
+ min-height: 0.5em;
+ border-top: 1px solid @bg-light-grey;
+ border-bottom: 1px solid @bg-light-grey;
+ margin: 0.25em 0 0;
+ padding: 0.2em 0 0;
}
+
dialog paned.horizontal > separator {
- border-left: 3px solid @bg-light-grey;
- border-right: 3px solid @bg-light-grey;
- border-color: @bg-grey;
+ background-color: @bg-grey;
+ border-color: @bg-grey;
+ min-width: 0.33334em;
}
menu separator {
background-color: @view-grid-border;
- margin: 3px 6px;
+ margin: 0.25em 0.5em;
}
#Navigator separator {
@@ -435,13 +451,13 @@ menu separator {
#IopsPanel separator,
#FileBrowser separator {
background-color: shade(@bg-light-grey,.75);
- margin-top: 4px;
- margin-bottom: 4px;
+ margin-top: 0.33334em;
+ margin-bottom: 0.33334em;
}
#MyExpander separator {
background-color: shade(@bg-grey,.7);
- margin: 4px 8px;
+ margin: 0.33334em 0.66667em;
}
#PlacesPaned .view.separator {
@@ -453,63 +469,129 @@ menu separator {
#PartialPaste {
border-bottom: 1px solid @border-color;
border-top: 1px solid @border-color;
- padding-top: 6px;
- padding-bottom: 6px;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
}
#PartialPaste separator.vertical {
- margin: 0 4px;
+ margin: 0 0.33334em;
padding: 0;
}
#PartialPaste separator { /* Struggles with #PartialPasteHeaderSep */
background-color: @border-color;
- margin: 0 6px 1px 14px;
+ margin: 0.16667em 0.5em 0.16667em 1.16667em;
}
#PartialPasteHeaderSep.horizontal {
background-color: rgb(192,192,192);
- margin: 0 6px;
+ margin: 0.16667em 0.5em;
}
#PartialPasteHeader label {
color: @headline-frame;
}
#PartialPasteHeader {
- margin: 6px 0 0 0;
+ margin: 0.5em 0 0 0;
padding: 0;
}
/*** end ***************************************************************************************/
/*** Scrollbar *********************************************************************************/
scrollbar {
- background-color: rgba(0,0,0,.30);
- border: none;margin: 0;
+ background-color: rgba(0,0,0,.40);
+ border: none;
+ margin: 0;
+ padding: 0;
}
scrollbar slider {
background-color: @text-color;
+ padding: 0;
+ margin: 0;
+ border-color: transparent;
+ border-style: solid;
+ border-radius: 1em;
}
+
+scrollbar:not(.overlay-indicator) {
+ border-color: @bg-dark-grey;
+ border-style: solid;
+ background-color: rgba(0,0,0,.30);
+}
+scrollbar:not(.overlay-indicator).horizontal {
+ border-width: 0 1px 1px 1px;
+}
+scrollbar:not(.overlay-indicator).vertical {
+ border-width: 1px 1px 1px 0;
+}
+scrollbar:not(.overlay-indicator) slider {
+ background-color: shade(@text-color, .9);
+}
+
+scrollbar:not(.overlay-indicator).horizontal slider,
+scrollbar.horizontal.hovering slider {
+ min-height: 0.5em;
+ min-width: 2em;
+ border-width: 0.25em;
+}
+scrollbar:not(.overlay-indicator).horizontal.fine-tune slider,
+scrollbar.horizontal.hovering.fine-tune slider {
+ min-height: calc(0.5em - 2px);
+ border-width: calc(0.25em + 1px);
+ margin: 0 -1px;
+}
+scrollbar.horizontal.overlay-indicator:not(.hovering) slider {
+ min-width: 2em;
+ min-height: 0.25em;
+ border-width: 0.08334em;
+ border-radius: 0.25em;
+ margin: 0 0.16667em;
+}
+
+scrollbar:not(.overlay-indicator).vertical slider,
+scrollbar.vertical.hovering slider {
+ min-height: 2em;
+ min-width: 0.5em;
+ border-width: 0.25em;
+}
+scrollbar:not(.overlay-indicator).vertical.fine-tune slider,
+scrollbar.vertical.hovering.fine-tune slider {
+ min-width: calc(0.5em - 2px);
+ border-width: calc(0.25em + 1px);
+ margin: -1px 0;
+}
+scrollbar.vertical.overlay-indicator:not(.hovering) slider {
+ min-width: 0.25em;
+ min-height: 2em;
+ border-width: 0.08334em;
+ border-radius: 0.5em;
+ margin: 0.16667em 0;
+}
+
+scrollbar:not(.overlay-indicator) slider:hover,
scrollbar slider:hover {
background-color: shade(@accent-color2,1.12);
}
+
+/* Scrollbar stuck workaround */
+scrollbar:not(.overlay-indicator):hover {
+ min-width: 1px;
+}
+
/*** end ***************************************************************************************/
/*** Scale**************************************************************************************/
scale {
padding: 0;
- min-height: 0;
- margin: 0 3px;
-}
-#BatchQueueButtonsMainContainer scale,
-dialog scale {
- padding-top: 2px;
+ min-height: 1.83334em;
+ margin: 0 0.25em;
}
scale slider {
/* Slider size is min-width x min-height; margin have to be half of those values, but negative */
- min-width: 12px;
- min-height: 12px;
- margin: -5px;
- border-radius: 10px;
+ min-width: 1em;
+ min-height: 1em;
+ margin: calc(-0.33334em - 1px);
+ border-radius: 0.83334em;
background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85));
border: 1px solid @bg-dark-grey;
box-shadow: none;
@@ -519,23 +601,25 @@ scale slider:hover {
}
scale trough {
- margin: 6px; /* has to be half of "scale slider / min-width min-height*/
+ margin: 0.5em; /* has to be half of "scale slider / min-width min-height*/
background-color: @bg-scale-entry;
border-color: @bg-dark-grey;
box-shadow: inset 0 1px rgba(255, 255, 255, 0.11), 0 1px rgba(242, 242, 242, 0.11);
+ border-radius: 0.5em;
}
scale:not(:disabled) trough highlight {
background-color: @accent-color2;
border-color: @bg-dark-grey;
box-shadow: inset 0 1px shade(@accent-color2, 1.3);
+ border-radius: 0.5em;
}
scale.fine-tune trough {
- margin: 5px 6px;
- padding: 1px 0;
+ margin: calc(0.5em - 1px);
+ padding: 1px;
}
scale.fine-tune trough highlight {
- margin: -2px -1px;
+ margin: -2px;
}
scale:disabled slider,
@@ -550,54 +634,52 @@ scale:disabled trough {
/*** Progressbar *******************************************************************************/
progressbar.vertical {
min-width: 0;
- margin-right: 7px;
+ min-height: 9em;
}
progressbar.vertical text {
color: transparent;
- margin-right: -10px;
- min-width: 0;
}
progressbar.vertical trough {
- min-width: 6px;
+ min-width: 0.5em;
background-color: transparent;
border-width: 0;
}
progressbar.vertical trough progress {
- min-width: 6px;
+ min-width: 0.5em;
margin: 0 -1px;
background-color: @accent-color2;
border-width: 0;
- border-radius: 6px;
+ border-radius: 0.5em;
}
progressbar.horizontal trough {
- min-height: 5px;
+ min-height: 0.41667em;
background-color: transparent;
border: none;
- border-radius: 6px;
- margin-top: 7px;
+ border-radius: 0.5em;
+ margin-top: 0.58334em;
}
progressbar.horizontal trough progress {
- min-height: 5px;
+ min-height: 0.41667em;
margin: -1px 0;
background-color: @accent-color2;
border: none;
- border-radius: 6px;
+ border-radius: 0.5em;
}
#IopsPanel progressbar.horizontal trough {
- min-height: 6px;
+ min-height: 0.5em;
background-color: @bg-scale-entry;
border: 1px solid @bg-button-border;
- margin-top: 3px;
+ margin-top: 0.25em;
}
#IopsPanel progressbar.horizontal trough progress {
- min-height: 6px;
+ min-height: 0.5em;
margin: -1px 0;
background-color: @accent-color2;
border: none;
- border-radius: 6px;
+ border-radius: 0.5em;
}
/*** end ***************************************************************************************/
@@ -618,56 +700,57 @@ notebook stack {
}
notebook header {
background-color: @bg-dark-grey;
- padding: 0 5px;
+ padding: 0 0.41667em;
}
notebook header.left {
- padding: 5px 0;
+ padding: 0.41667em 0;
}
notebook tabs {
background-color: transparent;
}
notebook header tab {
background-color: transparent;
- margin: 5px;
- padding: 0 4px;
+ margin: 0.41667em 0.25em;
+ padding: 0 0.33334em;
}
notebook header.left tab {
- padding: 4px 0;
+ margin: 0.25em 0.41667em;
+ padding: 0.33334em 0;
}
notebook header tab > grid > image {
- min-height: 28px;
+ min-height: 2.33334em;
min-width: 0;
- padding: 0 2px 0 0;
+ padding: 0 0.16667em 0 0;
margin: 0;
}
notebook header.left tab > grid > image {
min-height: 0;
- min-width: 28px;
- padding: 2px 0 0;
+ min-width: 2.33334em;
+ padding: 0.16667em 0 0;
}
notebook header tab label {
- margin: 3px;
+ margin: 0.33334em;
}
notebook header tab:hover label {
color: @headline-hl;
}
notebook header tab:checked {
- box-shadow: 0 3px @accent-color2;
+ box-shadow: 0 0.25em @accent-color2;
}
notebook header.left tab:checked {
- box-shadow: 3px 0 @accent-color2;
+ box-shadow: 0.25em 0 @accent-color2;
}
notebook > header > tabs > arrow {
background-color: transparent;
- border-radius: 2px;
+ border-radius: 0.2em;
min-width: 0;
min-height: 0;
- padding: 0 2px;
- margin: 6px 0;
+ padding: 0 0.16667em;
+ margin: 0.5em 0;
}
notebook > header.left > tabs > arrow {
- padding: 2px 0;
- margin: 0 6px;
+ padding: 0.16667em 0;
+ margin: 0 0.5em;
}
notebook > header > tabs > arrow:hover {
background-color: rgba(255,255,255,.1);
@@ -682,17 +765,13 @@ notebook stack {
dialog notebook stack {
background-color: @bg-grey;
}
+
/*?win*/
-#MainNotebook > stack > :nth-child(1) {
- padding: 0 5px 5px 5px;
+#MainNotebook > stack {
+ padding: 0.41667em;
}
-/*?win*/
-#MainNotebook > stack > :nth-child(2) {
- padding: 5px;
-}
-/*?win*/
#MainNotebook > stack > :nth-child(2) > :nth-child(2) {
- margin-bottom: 4px;
+ margin-bottom: 0.33334em;
}
@@ -700,29 +779,23 @@ dialog notebook stack {
dialog.csd #PrefNotebook > header,
dialog.csd #AboutNotebook > header,
window.csd:not(.fullscreen) #MainNotebook > header.top {
- border-top: 1px solid rgba(200,200,200,.18);
+ border-top: 0.083334em solid rgba(200,200,200,.18);
}
/**/
#ToolPanelNotebook > header tabs {
- margin-bottom: 3px;
-}
-#ToolPanelNotebook > header tab {
- margin: 5px 3px;
- padding: 0 5px;
+ margin-bottom: 0.33334em;
}
+
#ToolPanelNotebook > header tab image{
- min-height: 30px;
- min-width: 0;
+ min-height: 2.5em;
+ min-width: calc(1.66667em + 6px);
padding: 0;
margin: 0;
}
-#RightNotebook {
- margin: 5px 0 0 0;
-}
#RightNotebook > header {
- margin: 0 5px 0 0;
+ margin: 0 0.41667em 0 0;
}
#RightNotebook > stack {
background-color: @bg-grey;
@@ -730,15 +803,15 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#RightNotebook > stack > :nth-child(3),
#RightNotebook > stack > :nth-child(4) {
- padding: 6px;
+ padding: 0.5em;
border: 1px solid @bg-entry-border;
}
#PrefNotebook header {
- margin: -8px -8px 4px;
+ margin: -0.66667em -0.66667em 0.33334em;
}
#AboutNotebook header {
- margin: -8px -8px 8px;
+ margin: -0.66667em -0.66667em 0.66667em;
}
#AboutNotebook stack > * > * > * {
background-color: @dark-grey;
@@ -749,14 +822,15 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MetaPanelNotebook header {
background-color: @bg-grey;
- padding: 4px;
- margin: 6px 6px 0;
+ padding: 0.33334em;
+ margin: 0 0.5em 0;
}
#MetaPanelNotebook > header > tabs {
background-color: @bg-dark-grey;
+ padding-left: 0.33334em;
}
-#MetaPanelNotebook > header > tab {
- background-color: @bg-dark-grey;
+#MetaPanelNotebook > header tab label{
+ margin: 0.08334em;
}
#MetaPanelNotebook > stack > box {
@@ -764,33 +838,30 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
background-color: @bg-grey;
border-radius: 0;
border-top-style: none;
- padding: 0 4px 3px;
- margin: 0 6px -6px;
+ padding: 0 0.33334em 0.25em;
+ margin: 0 0.5em -0.5em;
}
#MetaPanelNotebook > stack > box:nth-child(1) > scrolledwindow {
- margin: 0 0 4px;
- padding: 0;
-}
-#MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow {
- margin: 0 0 0 -2px;
+ margin: 0 0 0.33334em;
padding: 0;
}
+
#MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow > viewport.frame {
- padding: 0 0 0 10px;
+ padding: 0 0 0 1em;
}
#MetaPanelNotebook separator {
background-color: @border-color;
- margin: 2px 0;
+ margin: 0.16667em 0;
}
#MetaPanelNotebook entry, #MetaPanelNotebook button, #MetaPanelNotebook combobox button {
margin-top: 0;
margin-bottom: 0;
- min-height: 20px;
- min-width: 10px;
+ min-height: 1.66667em;
+ min-width: 0.83334em;
}
#MetaPanelNotebook entry {
- padding: 0 4px;
+ padding: 0 0.33334em;
background-color: @bg-dark-grey;
margin: 0;
border-radius: 0;
@@ -803,12 +874,12 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#MetaPanelNotebook .view {
border: 1px solid @bg-dark-grey;
- padding: 2px;
+ padding: 0.16667em;
margin: 0;
}
#MetaPanelNotebook textview.view {
background-color: @bg-dark-grey;
- padding: 1px 4px;
+ padding: 0.08334em 0.33334em;
margin: 0;
}
#MetaPanelNotebook text {
@@ -819,17 +890,17 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MetaPanelNotebook combobox + button,
#MetaPanelNotebook combobox + button + button {
- margin-left: 2px;
- min-width: 20px;
+ margin-left: 0.16667em;
+ min-width: 1.66667em;
}
#MetaPanelNotebook > stack > box > grid > button {
margin-top: 1px;
margin-bottom: 1px;
- min-height: 26px;
+ min-height: 2.16667em;
}
#MetaPanelNotebook label {
- padding: 0 2px;
+ padding: 0.08334em 0;
}
/*** end ***************************************************************************************/
@@ -842,30 +913,30 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#FileCatalog:selected {
background-color: @accent-color3;
color: @text-hl-color3;
- border: none;
}
/*?win*/
#FileBrowser {
padding: 0;
- margin: 5px 0 0;
+ margin: 0;
}
#ToolBarPanelFileBrowser {
- margin: 3px -1px;
+ margin: -2px -1px;
min-height: 0;
min-width: 0;
+ padding: 0.41667em 0;
}
#ToolBarPanelFileBrowser > box > button,
#ToolBarPanelFileBrowser > button {
- margin: 0 1px;
+ margin: 0 0.08334em;
}
#ToolBarPanelFileBrowser > box > box > button {
- min-height: 11px;
- min-width: 16px;
+ min-height: 0.91667em;
+ min-width: 1.33333em;
padding: 0;
- margin: 2px 0 0 0;
+ margin: 0.16667em 0 0 0;
border: none;
background-color: transparent;
background-image: none;
@@ -874,28 +945,29 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#ToolBarPanelFileBrowser entry + button.flat,
#FileBrowser entry + button.flat {
- min-height: 20px;
- min-width: 19px;
- margin: 0 0 0 -20px;
- border-radius: 0 2px 2px 0;
+ min-height: 1.66667em;
+ min-width: 1.66667em;
+ margin: 0 0 0 -1.66667em;
+ border-radius: 0 0.2em 0.2em 0;
border: 1px solid transparent;
+ padding: 0;
}
#ToolBarPanelFileBrowser entry,
#FileBrowser entry {
- min-height: 20px;
- min-width: 144px;
- margin: 0 -1px 0 0;
- padding: 0 24px 0 4px;
+ min-height: 1.66667em;
+ min-width: 12em;
+ margin: 0 -2px 0 0;
+ padding: 0 2em 0 0.33334em;
}
#ToolBarPanelFileBrowser label,
#FileBrowser label {
- margin: 0 4px 0 6px;
+ margin: 0 0.33334em 0 0.5em;
}
/*** end ***************************************************************************************/
/*** Image Editor ******************************************************************************/
#EditorRightPaned {
- margin: 0 5px 5px 5px;
+ margin: 0;
}
#BeforeAfterContainer {
@@ -903,7 +975,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
border: 1px solid @bg-dark-grey;
border-radius: 0;
padding: 0;
- margin: 3px 0 5px;
+ margin: 0.41667em 0;
}
#BeforeAfterContainer > box:nth-child(1) frame {
background-color: @bg-image;
@@ -922,25 +994,27 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#BeforeAfterContainer label {
- min-height: 29px;
- padding: 0 6px;
+ min-height: 2.41667em;
+ padding: 0 0.5em;
}
/* Small Lock Button */
#BeforeAfterContainer button {
- min-height: 20px;
- min-width: 20px;
- margin: 3px 0 4px;
- padding: 0 0 0 1px;
+ min-height: 1.66667em;
+ min-width: 1.66667em;
+ margin: 0.25em 0 0.33334em;
+ padding: 0 0 0 0.08334em;
}
/**/
#EditorTopPanel {
- margin: 3px -2px 0;
+ margin: -2px -2px;
padding: 0;
min-height: 0;
}
#EditorTopPanel button {
- margin: 0 1px;
+ margin: 0 0.08334em;
+ min-height: 2.16667em;
+ min-width: 2.16667em;
}
/* Removes margin from the last button. Otherwise the filmstrip will cut of the right border. */
#EditorTopPanel :last-child > button:last-child {
@@ -948,16 +1022,18 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#EditorTopPanel > box > button.image-button:not(:nth-child(6)) {
- min-width: 14px;
+ min-width: 0;
+ padding-left: 0.33334em;
+ padding-right: 0.33334em;
}
#EditorTopPanel > box > button.image-button:nth-child(6) {
-gtk-icon-shadow: none;
}
#EditorTopPanel > box > box > button {
- min-height: 0;
+ min-height: 0.625em;
min-width: 0;
- margin: 0 2px;
- padding: 2px 2px;
+ margin: 0 0.16667em;
+ padding: 0 0.16667em;
border: 1px solid transparent;
background-color: transparent;
background-image: none;
@@ -972,28 +1048,28 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#EditorTopPanel > box > box > button:checked {
background-color: transparent;
background-image: none;
- border: 1px solid @bg-dark-grey;
+ border: 1px solid @bg-button-border;
box-shadow: none;
}
/*Button editor bottom*/
#EditorZoomPanel label {
- min-width: 48px;
+ min-width: 4em;
margin: 0;
}
#IopsPanel button.Left image {
padding: 0 2px 0 3px;
}
#EditorZoomPanel button {
- margin-left: 1px;
- margin-right: 1px;
+ margin-left: 0.08334em;
+ margin-right: 0.08334em;
}
/*** end ***************************************************************************************/
/*** Toolbox ***********************************************************************************/
#ToolPanelNotebook stack {
background-color: @bg-dark-grey;
- padding: 0 0 6px 0;
+ padding: 0 0 0.5em 0;
}
/*Curve spinbutton background */
#MyExpander flowbox > flowboxchild {
@@ -1016,7 +1092,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#ToolPanelNotebook scrolledwindow viewport.frame {
- padding: 0 6px;
+ padding: 0 0.56em;
}
/* #MyExpander.withScrollbar {
padding: 0 6px;
@@ -1032,7 +1108,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
border: none;
border-radius: 0;
margin: 0;
- padding: 6px;
+ padding: 0.5em;
}
/* Sub-tool (MyExpander) */
@@ -1041,18 +1117,18 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
border: 1px solid @border-color;
border-radius: 0;
margin: 0;
- padding: 6px;
+ padding: 0.5em;
}
#MyExpanderTitle > box {
margin: 0;
- padding: 4px 0;
+ padding: 0.33334em 0;
}
#MyExpanderTitle label {
color: @headline-big;
padding: 0;
- margin: 0 3px 0 6px;
+ margin: 0 0.25em 0 0.5em;
}
#MyExpanderTitle:hover label {
@@ -1082,14 +1158,14 @@ menu > .bottom,
menu > .bottom:hover {
background-color: transparent;
border: none;
- padding: 6px;
- min-height: 24px;
+ padding: 0.5em;
+ min-height: 2em;
}
menuitem {
- padding: 0 4px;
+ padding: 0 0.33334em;
margin: 1px;
- min-height: 24px;
+ min-height: 2em;
}
menuitem:hover {
background-color: @accent-color;
@@ -1100,9 +1176,9 @@ menuitem:hover > * {
}
menu image {
- min-height: 24px;
+ min-height: 2em;
padding: 0;
- margin: 0 4px 0 0;
+ margin: 0 0.33334em 0 0;
}
/*** Selection popup list (used in filechooser) ***/
@@ -1137,14 +1213,14 @@ popover.background > box {
margin: -9px;
}
popover.background modelbutton {
- min-height: 24px;
- padding: 0 5px;
+ min-height: 2em;
+ padding: 0 0.41667em;
margin: 0;
border-radius: 0;
}
popover.background label {
- margin-right: 6px;
+ margin-right: 0.5em;
}
popover.background modelbutton:hover label,
popover.background modelbutton:hover {
@@ -1155,11 +1231,11 @@ popover.background modelbutton:hover {
/*** Buttons ***********************************************************************************/
button {
- min-height: 26px;
- min-width: 26px;
+ min-height: 2.16667em;
+ min-width: 2.16667em;
margin: 0;
padding: 0; /* x */
- border-radius: 2px;
+ border-radius: 0.2em;
border: 1px solid @bg-button-border;
background-color: transparent;
box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
@@ -1169,10 +1245,7 @@ button.flat {
padding: 0;/* x */
}
button.text-button label {
- margin: 0 6px;/* x */
-}
-combobox .combo {
- padding: 0 2px;
+ margin: 0 0.5em;/* x */
}
#MainNotebook > header > grid > button,
@@ -1185,36 +1258,40 @@ button.flat {
/* Resetbutton Queue & Save as*/
dialog scale + button.flat,
scale + button.flat {
- min-height: 16px;
- min-width: 15px;
- margin: 2px 0 1px 2px;
- padding: 0 0 0 1px;
+ min-height: 1.33334em;
+ min-width: 1.25em;
+ margin: 0.25em 0 0.16667em 0.16667em;
+ padding: 0 0 0 0.08334em;
-gtk-icon-shadow: none;
}
/* Resetbutton */
#MyExpander button.flat {
- min-height: 16px;
- min-width: 15px;
- margin: 1px 0 1px 2px;
- padding: 0 0 0 1px;
+ min-height: 1.33334em;
+ min-width: 1.25em;
+ margin: 0.08334em 0 0.08334em 0.16667em;
+ padding: 0 0 0 0.08334em;
-gtk-icon-shadow: none;
}
#MyExpander scale + button.flat {
- margin: 1px 0 1px;
+ margin: 0 0 0 0.16667em;
}
#MyExpander image + button.flat {
- margin: 1px 0 1px 4px;
+ margin: 0 0 0 0.41667em;
+}
+#MyExpander spinbutton + button.flat {
+ margin: 0 0 0 0.16667em;
+ padding-top: 0.08334em;
}
/**/
/* Buttons Curve drawingarea*/
#MyExpander button.flat + button.flat,
#MyExpander button.flat:first-child {
- min-height: 26px;
- min-width: 26px;
- margin: 1px;
+ min-height: 2.16667em;
+ min-width: 2.16667em;
+ margin: 0.08334em;
padding: 0;
}
/**/
@@ -1223,7 +1300,7 @@ scale + button.flat {
#FileBrowser entry + button:hover,
button.flat:hover,
button:hover {
- border: 1px solid @bg-button-border;
+ border-color: @bg-button-border;
box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
background-color: @bg-button-hover;
@@ -1235,8 +1312,8 @@ button.flat:active,
button.flat:checked,
button:active,
button:checked {
- border-color: black;
- box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
+ border-color: @bg-button-border;
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.08);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
background-color: @bg-button-active;
}
@@ -1244,17 +1321,18 @@ button:checked {
/* Add space between connected buttons */
button.Right,
button.MiddleH {
- margin-left: 2px;
+ margin-left: 0.16667em;
border: 1px solid @bg-button-border;
}
/**/
/* Applies special styles in main notebook */
#ProfilePanel {
- margin-bottom: 3px;
+ margin-bottom: -2px;
+ padding-bottom: 0.41667em;
}
#ProfilePanel combobox {
- margin-left: 2px;
+ margin-left: 0.16667em;
}
#PlacesPaned button.Left,
#PlacesPaned button.Right {
@@ -1269,15 +1347,15 @@ button.MiddleH {
dialog button,
#MyExpander button,
#BatchQueueButtonsMainContainer button {
- min-height: 20px;
+ min-height: 1.66667em;
min-width: 0;
- padding: 0 4px;
+ padding: 0 0.375em;
}
+combobox .combo,
dialog combobox .combo,
#ToolPanelNotebook combobox .combo,
#BatchQueueButtonsMainContainer combobox .combo {
- min-width: 0;
- padding: 0 2px;
+ padding: 0 0.208334em;
}
/**/
@@ -1289,13 +1367,13 @@ dialog combobox .combo,
#MyExpander combobox + combobox,
#MyExpander button + label,
#MyExpander combobox + label {
- margin-left: 2px;
+ margin-left: 0.16667em;
}
#MyExpander label + filechooserbutton,
#MyExpander label + * > button:not(.flat).Left,
#MyExpander label + combobox:not(:first-child):not(:only-child),
#MyExpander label + button:not(.flat):not(spinbutton) {
- margin-left: 4px;
+ margin-left: 0.33334em;
}
/* Arrow toggle combo button */
@@ -1303,8 +1381,8 @@ dialog combobox .combo,
#MyExpander button:not(.flat).Left + button:not(.flat).Right {
border-left: none;
margin-left: 0;
- padding-left: 4px;
- padding-right: 4px;
+ padding-left: 0.33334em;
+ padding-right: 0.33334em;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
@@ -1312,7 +1390,7 @@ dialog combobox .combo,
#MyExpander button:not(.flat).Left {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
- min-width: 28px;
+ min-width: 2.16667em;
}
/**/
@@ -1320,8 +1398,8 @@ dialog combobox .combo,
#PrefNotebook stack > box:nth-child(4) combobox,
#MyExpander button.flat,
#MyExpander button {
- margin-top: 1px;
- margin-bottom: 1px;
+ margin-top: 0.08334em;
+ margin-bottom: 0.08334em;
}
/**/
#MyExpander button.text-button label {
@@ -1329,10 +1407,10 @@ dialog combobox .combo,
}
/* Graduated filter big button */
#ExpanderBox > box > box:first-child > button:not(.flat):not(.text-button):first-child {
- min-height: 26px;
- min-width: 26px;
+ min-height: 2.16667em;
+ min-width: 2.16667em;
padding: 0;
- margin: 0 0 6px;
+ margin: 0 0 0.5em;
}
.popupbutton-arrow {
@@ -1340,30 +1418,31 @@ dialog combobox .combo,
}
button.color {
- padding: 3px;
+ min-height: 1.16667em;
+ padding: 0.25em;
}
/* Save, Cancel, OK ... buttons */
.dialog-action-area button {
- min-height: 26px;
- margin-top: 4px;
+ min-height: 2.16667em;
+ margin-top: 0.33334em;
}
messagedialog .dialog-action-area button {
- margin: 0 8px 8px 8px;
- min-height: 22px;
+ margin: 0 0.66667em 0.66667em 0.66667em;
+ min-height: 1.83334em;
}
messagedialog .dialog-action-area button:not(:only-child):nth-child(1) {
- margin-right: 3px;
+ margin-right: 0.25em;
}
messagedialog .dialog-action-area button:not(:only-child):nth-child(2) {
- margin-left: 3px;
+ margin-left: 0.25em;
}
/**/
/* Queue */
#BatchQueueButtons button {
- min-height: 26px;
- min-width: 120px;
+ min-height: 2.16667em;
+ min-width: 10em;
}
/**/
@@ -1373,9 +1452,9 @@ window .view button {
background-color: @bg-dark-grey;
background-image: none;
box-shadow: none;
- background-image: none;
- min-height: 24px;
- padding: 0 4px;
+ min-height: 2em;
+ min-width: 1.33334em;
+ padding: 0 0.33334em;
}
dialog .view button.text-button label,
window .view button.text-button label {
@@ -1388,10 +1467,7 @@ window .view button {
dialog .view button {
border-color: @border-color;
}
-dialog .path-bar button:first-child,
-dialog .path-bar button:last-child {
- padding: 0;
-}
+
.view button:checked label,
.view button:checked,
.view button:hover:not(:active) label,
@@ -1411,13 +1487,29 @@ window .view header button,
.path-bar button {
border-radius: 0;
}
+
+#pathbarbox button:last-child {
+ min-width: 2em;
+ margin: 0;
+ padding: 0;
+ }
.path-bar button:first-child {
- border-top-left-radius: 2px;
- border-bottom-left-radius: 2px;
+ border-top-left-radius: 0.2em;
+ border-bottom-left-radius: 0.2em;
+ min-width: 2em;
+ margin: 0;
+ padding: 0;
}
.path-bar button:last-child {
- border-top-right-radius: 2px;
- border-bottom-right-radius: 2px;
+ border-top-right-radius: 0.2em;
+ border-bottom-right-radius: 0.2em;
+ min-width: 2em;
+ margin: 0;
+ padding: 0;
+}
+.path-bar button label {
+ margin: 0;
+ padding: 0 0.33334em;
}
/**/
@@ -1429,8 +1521,8 @@ popover button.text-button {
box-shadow: none;
background-image: none;
margin: 0;
- min-height: 20px;
- padding: 0 8px;
+ min-height: 1.66667em;
+ padding: 0 0.66667em;
}
popover button.text-button label {
padding: 0;
@@ -1454,10 +1546,10 @@ popover button.text-button:active {
/* Titlebar & Notebook buttons */
#MainNotebook > header.top > grid > button {
- margin: 0 0 0 5px;
+ margin: 0 0 0 0.41667em;
}
#MainNotebook > header.left > grid > button {
- margin: 5px 0 0 0;
+ margin: 0.41667em 0 0;
}
headerbar button.titlebutton image {
@@ -1465,51 +1557,51 @@ headerbar button.titlebutton image {
margin: 0;
}
headerbar button.titlebutton {
- margin: 0 0 0 4px;
+ margin: 0 0 0 0.33334em;
background-image: none;
border: 1px solid transparent;
background-color: transparent;
box-shadow: none;
- min-width: 18px;
- min-height: 18px;
+ min-width: 1.55em;
+ min-height: 1.55em;
padding: 0;
}
messagedialog headerbar button.titlebutton {
- min-width: 0;
- min-height: 0;
+ min-width: 1.25em;
+ min-height: 1.25em;
margin: 0;
}
#MainNotebook tab #CloseButton {
padding: 0;
- margin: 4px -3px 4px 1px;
- min-height: 18px;
- min-width: 18px;
+ margin: 0.33334em -3px 0.33334em 0.08334em;
+ min-width: 1.5em;
+ min-height: 1.5em;
}
#MainNotebook > header > grid > button:hover,
#MainNotebook tab #CloseButton:hover,
headerbar button.titlebutton:hover{
border-color: rgba(0,0,0,.8);
- box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.11);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
- background-color: rgba(128, 128, 128,.15);
+ background-color: rgba(128, 128, 128,.20);
}
#MainNotebook > header > grid > button:active,
headerbar button.titlebutton:active{
border-color: rgba(0,0,0,.8);
- box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.15);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
- background-color: rgba(128, 128, 128,.30);
+ background-color: rgba(128, 128, 128,.40);
}
#MainNotebook tab #CloseButton:hover,
headerbar button.titlebutton.close:hover{
- border-color: rgba(0,0,0,.9);
+ border-color: rgba(0,0,0,.8);
background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0));
- box-shadow: inset 0 1px rgba(242, 242, 242, 0.3);
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.32);
}
#MainNotebook tab #CloseButton:active,
headerbar button.titlebutton.close:active{
- border-color: rgba(0,0,0,.9);
+ border-color: rgba(0,0,0,.8);
background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0));
box-shadow: inset 0 1px rgba(242, 242, 242, 0.4);
}
@@ -1521,42 +1613,46 @@ headerbar button.titlebutton.close:active{
checkbox {
padding:0;
margin:0;
- min-height: 16px;
+ min-height: 2em;
}
checkbutton,
radiobutton {
- padding: 4px 0;
+ padding: 0;
margin: 0;
- min-height: 16px;
+ min-height: 2em;
}
check,
radio {
- border: 1.16px solid shade(@text-color, .9);
+ border: calc(0.083334em + 0.18px) solid shade(@text-color, .9);
background-image: none;
background-color: transparent;
margin: 0;
padding: 0;
- min-height: 14px;
- min-width: 14px;
+ min-height: 1.16667em;
+ min-width: 1.16667em;
box-shadow: none;
background-repeat: no-repeat;
-gtk-icon-shadow: none;
}
radiobutton label,
checkbutton label {
- margin: 0 6px 0 6px;
+ margin: 0 0.5em;
padding: 0;
}
-check,
-check:indeterminate {
- border-radius: 2px;
+check {
+ border-radius: 0.16667em;
}
check:checked {
padding: 0 2px 0 0;
- min-width: 12px;
+ min-width: calc(1.16667em - 2px);
}
+check:indeterminate {
+ min-width: 1.16667em;
+ padding: 0;
+}
+
radio{
- border-radius: 20px;
+ border-radius: 1.16667em;
}
check:disabled,
radio:disabled {
@@ -1564,27 +1660,30 @@ radio:disabled {
}
frame > checkbutton check{
- margin-left: 6px;
+ margin-left: 0.5em;
}
#PartialPaste checkbutton:not(#PartialPasteHeader) {
- padding: 0;
- margin-left: 14px;
+ min-height: 1.4em;
+ margin-left: 1.16667em;
}
#PartialPasteHeader {
- margin-left: 6px;
+ min-height: 1.4em;
+ margin-left: 0.5em;
}
#PrefNotebook checkbutton {
- padding: 0;
+ min-height: 1.16667em;
}
-#PrefNotebook radiobutton,
#PrefNotebook stack > box:nth-child(3) checkbutton,
#PrefNotebook stack > box:nth-child(4) checkbutton {
- padding: 3px 0;
+ min-height: 2em;
+}
+#PrefNotebook radiobutton {
+ min-height: 2em;
}
#MyExpander button + checkbutton:last-child {
- margin-left: 4px;
+ margin-left: 0.33334em;
}
/*** end ***************************************************************************************/
@@ -1593,11 +1692,11 @@ frame > checkbutton check{
#MyExpander entry,
entry {
margin: 0;
- padding: 0 4px;
- min-height: 20px;
+ padding: 0 0.33334em;
+ min-height: 1.66667em;
min-width: 0;
- border-radius: 2px;
- box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242 , 242, 242, 0.1);
+ border-radius: 0.2em;
+ box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242, 242, 242, 0.1);
border: 1px solid @bg-entry-border;
background-color: @bg-scale-entry;
}
@@ -1605,31 +1704,35 @@ entry {
spinbutton {
margin: 0;
padding: 0;
- min-height: 18px;
+ min-height: 1.66667em;
min-width: 0;
- border-radius: 2px;
+ border-radius: 0.2em;
background-color: @bg-scale-entry;
border: 1px solid @bg-entry-border;
- box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242 , 242, 242, 0.1);
+ box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242, 242, 242, 0.1);
}
#MyExpander spinbutton {
- margin: 2px 0;
+ margin: 0.16667em 0;
padding: 0;
- min-height: 0;
+ min-height: 1.33334em;
min-width: 0;
- border-radius: 22px 4px 4px 22px;
+ border-top-left-radius: 1.83334em;
+ border-bottom-left-radius: 1.83334em;
background-color: shade(@bg-grey, 1.33);
border: 1px solid @bg-button-border;
color: @text-tbEntry;
- box-shadow: inset 1px 1px rgba(0, 0, 0, .12), 0 1px rgba(255 , 255, 255, 0.12);
+ box-shadow: inset 1px 1px rgba(0, 0, 0, .12), 0 1px rgba(255, 255, 255, 0.12);
}
-#MyExpander checkbutton + label + spinbutton,
#MyExpander button + label + spinbutton {
- margin: 3px 0; /* Needed for Reset & and Auto button height*/
+ margin: 0.25em 0; /* Needed for Reset & and Auto button height*/
}
+#MyExpander checkbutton + label + spinbutton {
+ margin: 0.33334em 0; /* Needed for Reset & and Auto checkbox button height*/
+}
+
#MyExpander image + spinbutton {
- margin-left: 3px;
+ margin-left: 0.25em;
}
#BatchQueueButtonsMainContainer spinbutton button,
@@ -1638,7 +1741,7 @@ spinbutton button {
padding: 0;
margin: 0;
min-height: 0;
- min-height: 0;
+ min-width: 1.33334em;
background-image: none;
background-color: transparent;
border: none;
@@ -1648,7 +1751,7 @@ spinbutton button {
}
#MyExpander spinbutton entry,
spinbutton entry {
- padding: 0 4px;
+ padding: 0 0.33334em;
margin: 0;
min-height: 0;
min-width: 0;
@@ -1657,7 +1760,7 @@ spinbutton entry {
background-color: transparent;
}
#MyExpander spinbutton entry {
- padding: 0 4px 0 9px;
+ padding: 0 0.33334em 0 0.83334em;
}
#BatchQueueButtonsMainContainer spinbutton button:hover,
@@ -1704,8 +1807,8 @@ entry:focus > selection {
.view entry {
background-color: @bg-dark-grey;
- margin: 0 -1px;
- border: none;
+ margin: 0 -2px;
+ border: 1px solid @accent-color;
box-shadow: none;
}
/* end*/
@@ -1716,22 +1819,26 @@ entry:focus > selection {
:not(.popup):not(tooltip) > decoration {
background-color: @winHeaderbar;
background-image: none;
- border-radius: 4px 4px 0 0;
+ border-radius: 0.41667em 0.41667em 0 0;
border: none;
padding: 0;
- box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey;
- margin: 10px;
+ box-shadow: 0 0.25em 0.75em 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey;
+ margin: 0.83334em;
}
headerbar {
background-color: shade(@winHeaderbar,1.12);
box-shadow: inset 0 1px rgba(200,200,200,.13);
background-image: linear-gradient(shade(@winHeaderbar,1.14), shade(@winHeaderbar,.86));
border-bottom: 1px solid @bg-dark-grey;
- border-radius: 4px 4px 0 0;
- min-height: 0;
- padding: 4px 5px 3px;
+ border-radius: 0.41667em 0.41667em 0 0;
+ min-height: 2.16667em;
+ padding: 0.08334em 0.41667em 0;
margin: 0;
}
+messagedialog headerbar {
+ min-height: 2em;
+
+}
headerbar .title{
color: @winTitle;
}
@@ -1744,7 +1851,7 @@ headerbar .title{
/* Window in background */
:not(.popup):not(tooltip) > decoration:backdrop {
- box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.3), 0 0 0 1px @bg-dark-grey;
+ box-shadow: 0 0.25em 0.75em 1px rgba(0, 0, 0, 0.3), 0 0 0 1px @bg-dark-grey;
}
headerbar:backdrop {
box-shadow: none;
@@ -1756,4 +1863,3 @@ headerbar .title:backdrop {
/**/
/*** end ***************************************************************************************/
-
diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css
index 8ba82412f..e1a7e84c2 100644
--- a/rtdata/themes/TooWaBlue-GTK3-20_.css
+++ b/rtdata/themes/TooWaBlue-GTK3-20_.css
@@ -1,8 +1,8 @@
/*
This file is part of RawTherapee.
- Copyright (c) 2016 TooWaBoo
- Version 2.31 - requires RT 4.2.1445 or higher
+ Copyright (c) 2016-2017 TooWaBoo
+ Version 2.42 - requires RT 5.0
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -63,7 +63,6 @@
@define-color headline-frame rgb(215,215,215);
/***********************************************************************************************/
-
* {
color: @text-color;
text-shadow: none;
@@ -71,13 +70,24 @@
border-image: none;
transition: none;
}
+
*:disabled {
color: rgb(128,128,128);
}
+#ToolPanelNotebook {
+ min-width: 23em;
+}
+#HistoryPanel {
+ min-width: 17.83334em;
+}
+
window.background {
background-color: @bg-light-grey;
}
+window > box {
+ padding: 0.41667em;
+}
dialog {
background-color: @bg-grey;
border-radius: 0;
@@ -87,7 +97,7 @@ dialog {
-GtkDialog-action-area-border: 0;
}
dialog > box {
- padding: 8px;
+ padding: 0.66667em;
}
messagedialog {
background-color: @bg-light-grey;
@@ -96,7 +106,7 @@ messagedialog {
tooltip {
background-color: @bg-tooltip;
border: 1px solid @border-tooltip;
- border-radius: 4px;
+ border-radius: 0.33334em;
padding: 0;
margin: 0;
box-shadow: none;
@@ -111,7 +121,7 @@ paned {
/*?win*/
#PlacesPaned {
- margin: 5px 0 0;
+ margin: 0;
}
undershoot {
@@ -142,7 +152,7 @@ frame {
#BatchQueueButtonsMainContainer frame,
#MyExpander frame,
dialog frame {
- margin: 2px 6px;
+ margin: 0.16667em 0.5em;
}
/* affects selection list*/
entry > window > frame,
@@ -168,11 +178,11 @@ frame > border {
#BatchQueueButtonsMainContainer > frame > border,
#MyExpander frame > border,
dialog frame > border {
- padding: 6px;
+ padding: 0.5em;
border-radius: 0;
border: 1px solid @border-color;
background-color: transparent;
- margin: 0 -6px;
+ margin: 0 -0.5em;
}
/* affects selection list*/
entry > window > frame> border,
@@ -184,29 +194,29 @@ filechooser > frame > border {
}
#PrefNotebook box > frame > border {
padding-top: 0;
- padding-bottom: 3px;
+ padding-bottom: 0.25em;
}
#BatchQueueButtonsMainContainer frame > label,
#ToolPanelNotebook frame > label,
dialog frame > label {
margin: 0;
- padding: 2px 6px;
+ padding: 0.16667em 0.5em;
}
#BatchQueueButtonsMainContainer frame > border {
- margin-bottom: 10px;
+ margin-bottom: 0.83334em;
}
#BatchQueueButtonsMainContainer frame:nth-child(3) > border {
- padding-left: 11px;
+ padding-left: 0.91667em;
}
#BatchQueueButtons {
- margin-top: 8px;
+ margin-top: 0.66667em;
}
frame > label {
margin: 0;
- padding: 6px 0;
+ padding: 0.5em 0;
color: @headline-frame;
}
frame > checkbutton label{
@@ -218,14 +228,9 @@ frame > checkbutton label{
textview.view, treeview.view {
background-color: @bg-dark-grey;
border-color: @view-grid-border;
- padding: 1px;
+ padding: 0.16667em;
margin: 0;
}
-#RightNotebook > stack > :nth-child(3) treeview {
- border: 1px solid @bg-dark-grey;
- border-bottom: none;
-}
-#PrefNotebook textview:selected:hover, #PrefNotebook treeview:selected:hover,
textview:hover, treeview:hover {
background-color: @bg-list-hover;
}
@@ -234,43 +239,41 @@ textview:selected, treeview:selected {
background-color: @accent-color;
border-top-color: transparent;
}
-#PrefNotebook textview:selected, #PrefNotebook treeview:selected {
- color: @text-color;
- background-color: @bg-dark-grey;
+
+#RightNotebook > stack > :nth-child(3) treeview {
+ border: 1px solid @bg-dark-grey;
+ border-bottom: none;
}
-#PlacesPaned treeview {
- padding-left: 5px;
- padding-right: 0;
+#PlacesPaned > :nth-child(1) treeview {
+ padding: 0.08334em 0 0.08334em 0.5em;
-gtk-icon-style: symbolic;
}
-#HistoryPanel .view {
- padding-left: 0;
- padding-right: 0;
-}
#HistoryPanel {
- margin-top: 8px;
+ margin-top: 0.5em;
}
#HistoryPanel > border {
- margin-top: 21px;
+ margin-top: 1.75em;
}
#HistoryPanel > label {
- margin: 0 0 -15px 0;
+ margin: 0 0 -1.33334em 0;
padding: 0;
}
#Snapshots > border {
- min-height: 114px;
- margin-top: 0;
+ min-height: calc(6.5em + 36px);
}
#Snapshots > label {
margin-bottom: -4px;
}
#Snapshots button {
- margin-top: -3px;
+ margin-top: -8px;
margin-bottom: -4px;
}
+#Snapshots > box > :nth-child(1) {
+ margin-bottom: 0.41667em;
+}
#PlacesPaned > box:nth-child(3) > :nth-child(2),
#PlacesPaned > box:nth-child(1) > :nth-child(1),
@@ -280,19 +283,25 @@ textview:selected, treeview:selected {
background-color: @bg-dark-grey;
}
+/*Corrects the space for the snapshot view of the paned separator*/
+#Snapshots {
+ margin-top: -0.33334em;
+}
+/**/
+
/*** end ***************************************************************************************/
/*** Navigator *********************************************************************************/
#Navigator .drawingarea {
- border-top: 5px solid @bg-dark-grey;
- border-bottom: 2px solid @bg-dark-grey;
+ border-top: 0.41667em solid @bg-dark-grey;
+ border-bottom: 0.25em solid @bg-dark-grey;
}
#Navigator {
background-color: @bg-dark-grey;
- padding-bottom: 3px;
+ padding-bottom: 0.25em;
}
#Navigator box label {
- padding: 2px 0;
+ padding: 0.16667em 0;
}
/*** end ***************************************************************************************/
@@ -304,30 +313,33 @@ filechooser * {
filechooser #pathbarbox {
border: none;
background-color: @bg-dark-grey;
+ padding: 0.5em;
}
filechooser box {
border-color: transparent;
}
+
filechooser > box > paned > box {
border: 1px solid @bg-dark-grey;
-}
-
-filechooser placessidebar {
- padding: 0 1px;
- margin: -3px 0 0;
background-color: @bg-dark-grey;
}
+filechooser placessidebar {
+ padding: 0 1px;
+ background-color: @bg-dark-grey;
+}
+
filechooser list {
background-color: @bg-dark-grey;
border: none;
box-shadow: none;
padding: 0;
- margin: 0;
+ margin: -3px 0 0;
}
filechooser list row {
margin: 0;
- min-height: 23px;
+ padding: 0;
+ min-height: calc(1.41667em + 8px);
}
filechooser list row label{
margin: 0;
@@ -345,7 +357,7 @@ filechooser list row:selected {
/*** Histogram *********************************************************************************/
#HistogramPanel {
- margin-top: 3px;
+ margin: -2px 0;
border: none;
}
#HistogramArea,
@@ -356,7 +368,7 @@ filechooser list row:selected {
#fullButton,
#histButton {
- padding: 5px 4px;
+ padding: 0.47em 0.41667em;
margin: 0;
border-color: @bg-light-grey;
border-style: solid;
@@ -369,7 +381,7 @@ filechooser list row:selected {
border-radius: 0;
}
#fullButton {
- padding: 5px 4px 6px;
+ padding: 0.47em 0.41667em 0.58334em;
}
#EditorLeftPaned #fullButton,
#EditorLeftPaned #histButton {
@@ -377,16 +389,16 @@ filechooser list row:selected {
}
/*** end ***************************************************************************************/
-/*** Separator ***/
+/*** Separator *********************************************************************************/
separator {
background-color: transparent;
}
grid separator.horizontal, box separator.horizontal {
- margin: 2px 0;
+ margin: 0.16667em 0;
padding: 0;
}
grid separator.vertical, box separator.vertical {
- margin: 0 3px;
+ margin: 0 0.25em;
padding: 0;
}
@@ -396,33 +408,37 @@ dialog separator {
background-color: @border-color;
}
popover separator:not(:only-child) {
- margin: 0 6px;
+ margin: 0 0.5em;
background-color: @border-color;
}
paned.horizontal > separator {
background-color: transparent;
- border-left: 4px solid @bg-light-grey;
- border-right: 4px solid @bg-light-grey;
- margin: 0 -2px;
+ min-width: 0.41667em;
+ border-left: 0.25em solid @bg-light-grey;
+ border-right: 0.25em solid @bg-light-grey;
+ margin: 0 -0.25em;
padding: 0;
}
+
paned.vertical > separator {
- background-color: @bg-dark-grey;
- border-bottom: 4px solid @bg-light-grey;
- border-top: 4px solid @bg-light-grey;
- margin: -1px 0;
- padding: 1px 0;
+ background-color: @bg-light-grey;
+ min-height: 0.5em;
+ border-top: 1px solid @bg-light-grey;
+ border-bottom: 1px solid @bg-light-grey;
+ margin: 0.25em 0 0;
+ padding: 0.2em 0 0;
}
+
dialog paned.horizontal > separator {
- border-left: 3px solid @bg-light-grey;
- border-right: 3px solid @bg-light-grey;
- border-color: @bg-grey;
+ background-color: @bg-grey;
+ border-color: @bg-grey;
+ min-width: 0.33334em;
}
menu separator {
background-color: @view-grid-border;
- margin: 3px 6px;
+ margin: 0.25em 0.5em;
}
#Navigator separator {
@@ -435,13 +451,13 @@ menu separator {
#IopsPanel separator,
#FileBrowser separator {
background-color: shade(@bg-light-grey,.75);
- margin-top: 4px;
- margin-bottom: 4px;
+ margin-top: 0.33334em;
+ margin-bottom: 0.33334em;
}
#MyExpander separator {
background-color: shade(@bg-grey,.7);
- margin: 4px 8px;
+ margin: 0.33334em 0.66667em;
}
#PlacesPaned .view.separator {
@@ -453,63 +469,129 @@ menu separator {
#PartialPaste {
border-bottom: 1px solid @border-color;
border-top: 1px solid @border-color;
- padding-top: 6px;
- padding-bottom: 6px;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
}
#PartialPaste separator.vertical {
- margin: 0 4px;
+ margin: 0 0.33334em;
padding: 0;
}
#PartialPaste separator { /* Struggles with #PartialPasteHeaderSep */
background-color: @border-color;
- margin: 0 6px 1px 14px;
+ margin: 0.16667em 0.5em 0.16667em 1.16667em;
}
#PartialPasteHeaderSep.horizontal {
background-color: rgb(192,192,192);
- margin: 0 6px;
+ margin: 0.16667em 0.5em;
}
#PartialPasteHeader label {
color: @headline-frame;
}
#PartialPasteHeader {
- margin: 6px 0 0 0;
+ margin: 0.5em 0 0 0;
padding: 0;
}
/*** end ***************************************************************************************/
/*** Scrollbar *********************************************************************************/
scrollbar {
- background-color: rgba(0,0,0,.30);
- border: none;margin: 0;
+ background-color: rgba(0,0,0,.40);
+ border: none;
+ margin: 0;
+ padding: 0;
}
scrollbar slider {
background-color: @text-color;
+ padding: 0;
+ margin: 0;
+ border-color: transparent;
+ border-style: solid;
+ border-radius: 1em;
}
+
+scrollbar:not(.overlay-indicator) {
+ border-color: @bg-dark-grey;
+ border-style: solid;
+ background-color: rgba(0,0,0,.30);
+}
+scrollbar:not(.overlay-indicator).horizontal {
+ border-width: 0 1px 1px 1px;
+}
+scrollbar:not(.overlay-indicator).vertical {
+ border-width: 1px 1px 1px 0;
+}
+scrollbar:not(.overlay-indicator) slider {
+ background-color: shade(@text-color, .9);
+}
+
+scrollbar:not(.overlay-indicator).horizontal slider,
+scrollbar.horizontal.hovering slider {
+ min-height: 0.5em;
+ min-width: 2em;
+ border-width: 0.25em;
+}
+scrollbar:not(.overlay-indicator).horizontal.fine-tune slider,
+scrollbar.horizontal.hovering.fine-tune slider {
+ min-height: calc(0.5em - 2px);
+ border-width: calc(0.25em + 1px);
+ margin: 0 -1px;
+}
+scrollbar.horizontal.overlay-indicator:not(.hovering) slider {
+ min-width: 2em;
+ min-height: 0.25em;
+ border-width: 0.08334em;
+ border-radius: 0.25em;
+ margin: 0 0.16667em;
+}
+
+scrollbar:not(.overlay-indicator).vertical slider,
+scrollbar.vertical.hovering slider {
+ min-height: 2em;
+ min-width: 0.5em;
+ border-width: 0.25em;
+}
+scrollbar:not(.overlay-indicator).vertical.fine-tune slider,
+scrollbar.vertical.hovering.fine-tune slider {
+ min-width: calc(0.5em - 2px);
+ border-width: calc(0.25em + 1px);
+ margin: -1px 0;
+}
+scrollbar.vertical.overlay-indicator:not(.hovering) slider {
+ min-width: 0.25em;
+ min-height: 2em;
+ border-width: 0.08334em;
+ border-radius: 0.5em;
+ margin: 0.16667em 0;
+}
+
+scrollbar:not(.overlay-indicator) slider:hover,
scrollbar slider:hover {
background-color: shade(@accent-color2,1.12);
}
+
+/* Scrollbar stuck workaround */
+scrollbar:not(.overlay-indicator):hover {
+ min-width: 1px;
+}
+
/*** end ***************************************************************************************/
/*** Scale**************************************************************************************/
scale {
padding: 0;
- min-height: 0;
- margin: 0 3px;
-}
-#BatchQueueButtonsMainContainer scale,
-dialog scale {
- padding-top: 2px;
+ min-height: 1.83334em;
+ margin: 0 0.25em;
}
scale slider {
/* Slider size is min-width x min-height; margin have to be half of those values, but negative */
- min-width: 12px;
- min-height: 12px;
- margin: -5px;
- border-radius: 10px;
+ min-width: 1em;
+ min-height: 1em;
+ margin: calc(-0.33334em - 1px);
+ border-radius: 0.83334em;
background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85));
border: 1px solid @bg-dark-grey;
box-shadow: none;
@@ -519,23 +601,25 @@ scale slider:hover {
}
scale trough {
- margin: 6px; /* has to be half of "scale slider / min-width min-height*/
+ margin: 0.5em; /* has to be half of "scale slider / min-width min-height*/
background-color: @bg-scale-entry;
border-color: @bg-dark-grey;
box-shadow: inset 0 1px rgba(255, 255, 255, 0.11), 0 1px rgba(242, 242, 242, 0.11);
+ border-radius: 0.5em;
}
scale:not(:disabled) trough highlight {
background-color: @accent-color2;
border-color: @bg-dark-grey;
box-shadow: inset 0 1px shade(@accent-color2, 1.3);
+ border-radius: 0.5em;
}
scale.fine-tune trough {
- margin: 5px 6px;
- padding: 1px 0;
+ margin: calc(0.5em - 1px);
+ padding: 1px;
}
scale.fine-tune trough highlight {
- margin: -2px -1px;
+ margin: -2px;
}
scale:disabled slider,
@@ -550,54 +634,52 @@ scale:disabled trough {
/*** Progressbar *******************************************************************************/
progressbar.vertical {
min-width: 0;
- margin-right: 7px;
+ min-height: 9em;
}
progressbar.vertical text {
color: transparent;
- margin-right: -10px;
- min-width: 0;
}
progressbar.vertical trough {
- min-width: 6px;
+ min-width: 0.5em;
background-color: transparent;
border-width: 0;
}
progressbar.vertical trough progress {
- min-width: 6px;
+ min-width: 0.5em;
margin: 0 -1px;
background-color: @accent-color2;
border-width: 0;
- border-radius: 6px;
+ border-radius: 0.5em;
}
progressbar.horizontal trough {
- min-height: 5px;
+ min-height: 0.41667em;
background-color: transparent;
border: none;
- border-radius: 6px;
- margin-top: 7px;
+ border-radius: 0.5em;
+ margin-top: 0.58334em;
}
progressbar.horizontal trough progress {
- min-height: 5px;
+ min-height: 0.41667em;
margin: -1px 0;
background-color: @accent-color2;
border: none;
- border-radius: 6px;
+ border-radius: 0.5em;
}
#IopsPanel progressbar.horizontal trough {
- min-height: 6px;
+ min-height: 0.5em;
background-color: @bg-scale-entry;
border: 1px solid @bg-button-border;
- margin-top: 3px;
+ margin-top: 0.25em;
}
#IopsPanel progressbar.horizontal trough progress {
- min-height: 6px;
+ min-height: 0.5em;
margin: -1px 0;
background-color: @accent-color2;
border: none;
- border-radius: 6px;
+ border-radius: 0.5em;
}
/*** end ***************************************************************************************/
@@ -618,56 +700,57 @@ notebook stack {
}
notebook header {
background-color: @bg-dark-grey;
- padding: 0 5px;
+ padding: 0 0.41667em;
}
notebook header.left {
- padding: 5px 0;
+ padding: 0.41667em 0;
}
notebook tabs {
background-color: transparent;
}
notebook header tab {
background-color: transparent;
- margin: 5px;
- padding: 0 4px;
+ margin: 0.41667em 0.25em;
+ padding: 0 0.33334em;
}
notebook header.left tab {
- padding: 4px 0;
+ margin: 0.25em 0.41667em;
+ padding: 0.33334em 0;
}
notebook header tab > grid > image {
- min-height: 28px;
+ min-height: 2.33334em;
min-width: 0;
- padding: 0 2px 0 0;
+ padding: 0 0.16667em 0 0;
margin: 0;
}
notebook header.left tab > grid > image {
min-height: 0;
- min-width: 28px;
- padding: 2px 0 0;
+ min-width: 2.33334em;
+ padding: 0.16667em 0 0;
}
notebook header tab label {
- margin: 3px;
+ margin: 0.33334em;
}
notebook header tab:hover label {
color: @headline-hl;
}
notebook header tab:checked {
- box-shadow: 0 3px @accent-color2;
+ box-shadow: 0 0.25em @accent-color2;
}
notebook header.left tab:checked {
- box-shadow: 3px 0 @accent-color2;
+ box-shadow: 0.25em 0 @accent-color2;
}
notebook > header > tabs > arrow {
background-color: transparent;
- border-radius: 2px;
+ border-radius: 0.2em;
min-width: 0;
min-height: 0;
- padding: 0 2px;
- margin: 6px 0;
+ padding: 0 0.16667em;
+ margin: 0.5em 0;
}
notebook > header.left > tabs > arrow {
- padding: 2px 0;
- margin: 0 6px;
+ padding: 0.16667em 0;
+ margin: 0 0.5em;
}
notebook > header > tabs > arrow:hover {
background-color: rgba(255,255,255,.1);
@@ -682,17 +765,13 @@ notebook stack {
dialog notebook stack {
background-color: @bg-grey;
}
+
/*?win*/
-#MainNotebook > stack > :nth-child(1) {
- padding: 0 5px 5px 5px;
+#MainNotebook > stack {
+ padding: 0.41667em;
}
-/*?win*/
-#MainNotebook > stack > :nth-child(2) {
- padding: 5px;
-}
-/*?win*/
#MainNotebook > stack > :nth-child(2) > :nth-child(2) {
- margin-bottom: 4px;
+ margin-bottom: 0.33334em;
}
@@ -700,29 +779,23 @@ dialog notebook stack {
dialog.csd #PrefNotebook > header,
dialog.csd #AboutNotebook > header,
window.csd:not(.fullscreen) #MainNotebook > header.top {
- border-top: 1px solid rgba(200,200,200,.18);
+ border-top: 0.083334em solid rgba(200,200,200,.18);
}
/**/
#ToolPanelNotebook > header tabs {
- margin-bottom: 3px;
-}
-#ToolPanelNotebook > header tab {
- margin: 5px 3px;
- padding: 0 5px;
+ margin-bottom: 0.33334em;
}
+
#ToolPanelNotebook > header tab image{
- min-height: 30px;
- min-width: 0;
+ min-height: 2.5em;
+ min-width: calc(1.66667em + 6px);
padding: 0;
margin: 0;
}
-#RightNotebook {
- margin: 5px 0 0 0;
-}
#RightNotebook > header {
- margin: 0 5px 0 0;
+ margin: 0 0.41667em 0 0;
}
#RightNotebook > stack {
background-color: @bg-grey;
@@ -730,15 +803,15 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#RightNotebook > stack > :nth-child(3),
#RightNotebook > stack > :nth-child(4) {
- padding: 6px;
+ padding: 0.5em;
border: 1px solid @bg-entry-border;
}
#PrefNotebook header {
- margin: -8px -8px 4px;
+ margin: -0.66667em -0.66667em 0.33334em;
}
#AboutNotebook header {
- margin: -8px -8px 8px;
+ margin: -0.66667em -0.66667em 0.66667em;
}
#AboutNotebook stack > * > * > * {
background-color: @dark-grey;
@@ -749,14 +822,15 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MetaPanelNotebook header {
background-color: @bg-grey;
- padding: 4px;
- margin: 6px 6px 0;
+ padding: 0.33334em;
+ margin: 0 0.5em 0;
}
#MetaPanelNotebook > header > tabs {
background-color: @bg-dark-grey;
+ padding-left: 0.33334em;
}
-#MetaPanelNotebook > header > tab {
- background-color: @bg-dark-grey;
+#MetaPanelNotebook > header tab label{
+ margin: 0.08334em;
}
#MetaPanelNotebook > stack > box {
@@ -764,33 +838,30 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
background-color: @bg-grey;
border-radius: 0;
border-top-style: none;
- padding: 0 4px 3px;
- margin: 0 6px -6px;
+ padding: 0 0.33334em 0.25em;
+ margin: 0 0.5em -0.5em;
}
#MetaPanelNotebook > stack > box:nth-child(1) > scrolledwindow {
- margin: 0 0 4px;
- padding: 0;
-}
-#MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow {
- margin: 0 0 0 -2px;
+ margin: 0 0 0.33334em;
padding: 0;
}
+
#MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow > viewport.frame {
- padding: 0 0 0 10px;
+ padding: 0 0 0 1em;
}
#MetaPanelNotebook separator {
background-color: @border-color;
- margin: 2px 0;
+ margin: 0.16667em 0;
}
#MetaPanelNotebook entry, #MetaPanelNotebook button, #MetaPanelNotebook combobox button {
margin-top: 0;
margin-bottom: 0;
- min-height: 20px;
- min-width: 10px;
+ min-height: 1.66667em;
+ min-width: 0.83334em;
}
#MetaPanelNotebook entry {
- padding: 0 4px;
+ padding: 0 0.33334em;
background-color: @bg-dark-grey;
margin: 0;
border-radius: 0;
@@ -803,12 +874,12 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#MetaPanelNotebook .view {
border: 1px solid @bg-dark-grey;
- padding: 2px;
+ padding: 0.16667em;
margin: 0;
}
#MetaPanelNotebook textview.view {
background-color: @bg-dark-grey;
- padding: 1px 4px;
+ padding: 0.08334em 0.33334em;
margin: 0;
}
#MetaPanelNotebook text {
@@ -819,17 +890,17 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MetaPanelNotebook combobox + button,
#MetaPanelNotebook combobox + button + button {
- margin-left: 2px;
- min-width: 20px;
+ margin-left: 0.16667em;
+ min-width: 1.66667em;
}
#MetaPanelNotebook > stack > box > grid > button {
margin-top: 1px;
margin-bottom: 1px;
- min-height: 26px;
+ min-height: 2.16667em;
}
#MetaPanelNotebook label {
- padding: 0 2px;
+ padding: 0.08334em 0;
}
/*** end ***************************************************************************************/
@@ -842,30 +913,30 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#FileCatalog:selected {
background-color: @accent-color3;
color: @text-hl-color3;
- border: none;
}
/*?win*/
#FileBrowser {
padding: 0;
- margin: 5px 0 0;
+ margin: 0;
}
#ToolBarPanelFileBrowser {
- margin: 3px -1px;
+ margin: -2px -1px;
min-height: 0;
min-width: 0;
+ padding: 0.41667em 0;
}
#ToolBarPanelFileBrowser > box > button,
#ToolBarPanelFileBrowser > button {
- margin: 0 1px;
+ margin: 0 0.08334em;
}
#ToolBarPanelFileBrowser > box > box > button {
- min-height: 11px;
- min-width: 16px;
+ min-height: 0.91667em;
+ min-width: 1.33333em;
padding: 0;
- margin: 2px 0 0 0;
+ margin: 0.16667em 0 0 0;
border: none;
background-color: transparent;
background-image: none;
@@ -874,28 +945,29 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#ToolBarPanelFileBrowser entry + button.flat,
#FileBrowser entry + button.flat {
- min-height: 20px;
- min-width: 19px;
- margin: 0 0 0 -20px;
- border-radius: 0 2px 2px 0;
+ min-height: 1.66667em;
+ min-width: 1.66667em;
+ margin: 0 0 0 -1.66667em;
+ border-radius: 0 0.2em 0.2em 0;
border: 1px solid transparent;
+ padding: 0;
}
#ToolBarPanelFileBrowser entry,
#FileBrowser entry {
- min-height: 20px;
- min-width: 144px;
- margin: 0 -1px 0 0;
- padding: 0 24px 0 4px;
+ min-height: 1.66667em;
+ min-width: 12em;
+ margin: 0 -2px 0 0;
+ padding: 0 2em 0 0.33334em;
}
#ToolBarPanelFileBrowser label,
#FileBrowser label {
- margin: 0 4px 0 6px;
+ margin: 0 0.33334em 0 0.5em;
}
/*** end ***************************************************************************************/
/*** Image Editor ******************************************************************************/
#EditorRightPaned {
- margin: 0 5px 5px 5px;
+ margin: 0;
}
#BeforeAfterContainer {
@@ -903,7 +975,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
border: 1px solid @bg-dark-grey;
border-radius: 0;
padding: 0;
- margin: 3px 0 5px;
+ margin: 0.41667em 0;
}
#BeforeAfterContainer > box:nth-child(1) frame {
background-color: @bg-image;
@@ -922,25 +994,27 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#BeforeAfterContainer label {
- min-height: 29px;
- padding: 0 6px;
+ min-height: 2.41667em;
+ padding: 0 0.5em;
}
/* Small Lock Button */
#BeforeAfterContainer button {
- min-height: 20px;
- min-width: 20px;
- margin: 3px 0 4px;
- padding: 0 0 0 1px;
+ min-height: 1.66667em;
+ min-width: 1.66667em;
+ margin: 0.25em 0 0.33334em;
+ padding: 0 0 0 0.08334em;
}
/**/
#EditorTopPanel {
- margin: 3px -2px 0;
+ margin: -2px -2px;
padding: 0;
min-height: 0;
}
#EditorTopPanel button {
- margin: 0 1px;
+ margin: 0 0.08334em;
+ min-height: 2.16667em;
+ min-width: 2.16667em;
}
/* Removes margin from the last button. Otherwise the filmstrip will cut of the right border. */
#EditorTopPanel :last-child > button:last-child {
@@ -948,16 +1022,18 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#EditorTopPanel > box > button.image-button:not(:nth-child(6)) {
- min-width: 14px;
+ min-width: 0;
+ padding-left: 0.33334em;
+ padding-right: 0.33334em;
}
#EditorTopPanel > box > button.image-button:nth-child(6) {
-gtk-icon-shadow: none;
}
#EditorTopPanel > box > box > button {
- min-height: 0;
+ min-height: 0.625em;
min-width: 0;
- margin: 0 2px;
- padding: 2px 2px;
+ margin: 0 0.16667em;
+ padding: 0 0.16667em;
border: 1px solid transparent;
background-color: transparent;
background-image: none;
@@ -972,28 +1048,28 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#EditorTopPanel > box > box > button:checked {
background-color: transparent;
background-image: none;
- border: 1px solid @bg-dark-grey;
+ border: 1px solid @bg-button-border;
box-shadow: none;
}
/*Button editor bottom*/
#EditorZoomPanel label {
- min-width: 48px;
+ min-width: 4em;
margin: 0;
}
#IopsPanel button.Left image {
padding: 0 2px 0 3px;
}
#EditorZoomPanel button {
- margin-left: 1px;
- margin-right: 1px;
+ margin-left: 0.08334em;
+ margin-right: 0.08334em;
}
/*** end ***************************************************************************************/
/*** Toolbox ***********************************************************************************/
#ToolPanelNotebook stack {
background-color: @bg-dark-grey;
- padding: 0 0 6px 0;
+ padding: 0 0 0.5em 0;
}
/*Curve spinbutton background */
#MyExpander flowbox > flowboxchild {
@@ -1016,7 +1092,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#ToolPanelNotebook scrolledwindow viewport.frame {
- padding: 0 6px;
+ padding: 0 0.56em;
}
/* #MyExpander.withScrollbar {
padding: 0 6px;
@@ -1032,7 +1108,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
border: none;
border-radius: 0;
margin: 0;
- padding: 6px;
+ padding: 0.5em;
}
/* Sub-tool (MyExpander) */
@@ -1041,18 +1117,18 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
border: 1px solid @border-color;
border-radius: 0;
margin: 0;
- padding: 6px;
+ padding: 0.5em;
}
#MyExpanderTitle > box {
margin: 0;
- padding: 4px 0;
+ padding: 0.33334em 0;
}
#MyExpanderTitle label {
color: @headline-big;
padding: 0;
- margin: 0 3px 0 6px;
+ margin: 0 0.25em 0 0.5em;
}
#MyExpanderTitle:hover label {
@@ -1082,14 +1158,14 @@ menu > .bottom,
menu > .bottom:hover {
background-color: transparent;
border: none;
- padding: 6px;
- min-height: 24px;
+ padding: 0.5em;
+ min-height: 2em;
}
menuitem {
- padding: 0 4px;
+ padding: 0 0.33334em;
margin: 1px;
- min-height: 24px;
+ min-height: 2em;
}
menuitem:hover {
background-color: @accent-color;
@@ -1100,9 +1176,9 @@ menuitem:hover > * {
}
menu image {
- min-height: 24px;
+ min-height: 2em;
padding: 0;
- margin: 0 4px 0 0;
+ margin: 0 0.33334em 0 0;
}
/*** Selection popup list (used in filechooser) ***/
@@ -1137,14 +1213,14 @@ popover.background > box {
margin: -9px;
}
popover.background modelbutton {
- min-height: 24px;
- padding: 0 5px;
+ min-height: 2em;
+ padding: 0 0.41667em;
margin: 0;
border-radius: 0;
}
popover.background label {
- margin-right: 6px;
+ margin-right: 0.5em;
}
popover.background modelbutton:hover label,
popover.background modelbutton:hover {
@@ -1155,11 +1231,11 @@ popover.background modelbutton:hover {
/*** Buttons ***********************************************************************************/
button {
- min-height: 26px;
- min-width: 26px;
+ min-height: 2.16667em;
+ min-width: 2.16667em;
margin: 0;
padding: 0; /* x */
- border-radius: 2px;
+ border-radius: 0.2em;
border: 1px solid @bg-button-border;
background-color: transparent;
box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
@@ -1169,10 +1245,7 @@ button.flat {
padding: 0;/* x */
}
button.text-button label {
- margin: 0 6px;/* x */
-}
-combobox .combo {
- padding: 0 2px;
+ margin: 0 0.5em;/* x */
}
#MainNotebook > header > grid > button,
@@ -1185,36 +1258,40 @@ button.flat {
/* Resetbutton Queue & Save as*/
dialog scale + button.flat,
scale + button.flat {
- min-height: 16px;
- min-width: 15px;
- margin: 2px 0 1px 2px;
- padding: 0 0 0 1px;
+ min-height: 1.33334em;
+ min-width: 1.25em;
+ margin: 0.25em 0 0.16667em 0.16667em;
+ padding: 0 0 0 0.08334em;
-gtk-icon-shadow: none;
}
/* Resetbutton */
#MyExpander button.flat {
- min-height: 16px;
- min-width: 15px;
- margin: 1px 0 1px 2px;
- padding: 0 0 0 1px;
+ min-height: 1.33334em;
+ min-width: 1.25em;
+ margin: 0.08334em 0 0.08334em 0.16667em;
+ padding: 0 0 0 0.08334em;
-gtk-icon-shadow: none;
}
#MyExpander scale + button.flat {
- margin: 1px 0 1px;
+ margin: 0 0 0 0.16667em;
}
#MyExpander image + button.flat {
- margin: 1px 0 1px 4px;
+ margin: 0 0 0 0.41667em;
+}
+#MyExpander spinbutton + button.flat {
+ margin: 0 0 0 0.16667em;
+ padding-top: 0.08334em;
}
/**/
/* Buttons Curve drawingarea*/
#MyExpander button.flat + button.flat,
#MyExpander button.flat:first-child {
- min-height: 26px;
- min-width: 26px;
- margin: 1px;
+ min-height: 2.16667em;
+ min-width: 2.16667em;
+ margin: 0.08334em;
padding: 0;
}
/**/
@@ -1223,7 +1300,7 @@ scale + button.flat {
#FileBrowser entry + button:hover,
button.flat:hover,
button:hover {
- border: 1px solid @bg-button-border;
+ border-color: @bg-button-border;
box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
background-color: @bg-button-hover;
@@ -1235,8 +1312,8 @@ button.flat:active,
button.flat:checked,
button:active,
button:checked {
- border-color: black;
- box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
+ border-color: @bg-button-border;
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.08);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
background-color: @bg-button-active;
}
@@ -1244,17 +1321,18 @@ button:checked {
/* Add space between connected buttons */
button.Right,
button.MiddleH {
- margin-left: 2px;
+ margin-left: 0.16667em;
border: 1px solid @bg-button-border;
}
/**/
/* Applies special styles in main notebook */
#ProfilePanel {
- margin-bottom: 3px;
+ margin-bottom: -2px;
+ padding-bottom: 0.41667em;
}
#ProfilePanel combobox {
- margin-left: 2px;
+ margin-left: 0.16667em;
}
#PlacesPaned button.Left,
#PlacesPaned button.Right {
@@ -1269,15 +1347,15 @@ button.MiddleH {
dialog button,
#MyExpander button,
#BatchQueueButtonsMainContainer button {
- min-height: 20px;
+ min-height: 1.66667em;
min-width: 0;
- padding: 0 4px;
+ padding: 0 0.375em;
}
+combobox .combo,
dialog combobox .combo,
#ToolPanelNotebook combobox .combo,
#BatchQueueButtonsMainContainer combobox .combo {
- min-width: 0;
- padding: 0 2px;
+ padding: 0 0.208334em;
}
/**/
@@ -1289,13 +1367,13 @@ dialog combobox .combo,
#MyExpander combobox + combobox,
#MyExpander button + label,
#MyExpander combobox + label {
- margin-left: 2px;
+ margin-left: 0.16667em;
}
#MyExpander label + filechooserbutton,
#MyExpander label + * > button:not(.flat).Left,
#MyExpander label + combobox:not(:first-child):not(:only-child),
#MyExpander label + button:not(.flat):not(spinbutton) {
- margin-left: 4px;
+ margin-left: 0.33334em;
}
/* Arrow toggle combo button */
@@ -1303,8 +1381,8 @@ dialog combobox .combo,
#MyExpander button:not(.flat).Left + button:not(.flat).Right {
border-left: none;
margin-left: 0;
- padding-left: 4px;
- padding-right: 4px;
+ padding-left: 0.33334em;
+ padding-right: 0.33334em;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
@@ -1312,7 +1390,7 @@ dialog combobox .combo,
#MyExpander button:not(.flat).Left {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
- min-width: 28px;
+ min-width: 2.16667em;
}
/**/
@@ -1320,8 +1398,8 @@ dialog combobox .combo,
#PrefNotebook stack > box:nth-child(4) combobox,
#MyExpander button.flat,
#MyExpander button {
- margin-top: 1px;
- margin-bottom: 1px;
+ margin-top: 0.08334em;
+ margin-bottom: 0.08334em;
}
/**/
#MyExpander button.text-button label {
@@ -1329,10 +1407,10 @@ dialog combobox .combo,
}
/* Graduated filter big button */
#ExpanderBox > box > box:first-child > button:not(.flat):not(.text-button):first-child {
- min-height: 26px;
- min-width: 26px;
+ min-height: 2.16667em;
+ min-width: 2.16667em;
padding: 0;
- margin: 0 0 6px;
+ margin: 0 0 0.5em;
}
.popupbutton-arrow {
@@ -1340,30 +1418,31 @@ dialog combobox .combo,
}
button.color {
- padding: 3px;
+ min-height: 1.16667em;
+ padding: 0.25em;
}
/* Save, Cancel, OK ... buttons */
.dialog-action-area button {
- min-height: 26px;
- margin-top: 4px;
+ min-height: 2.16667em;
+ margin-top: 0.33334em;
}
messagedialog .dialog-action-area button {
- margin: 0 8px 8px 8px;
- min-height: 22px;
+ margin: 0 0.66667em 0.66667em 0.66667em;
+ min-height: 1.83334em;
}
messagedialog .dialog-action-area button:not(:only-child):nth-child(1) {
- margin-right: 3px;
+ margin-right: 0.25em;
}
messagedialog .dialog-action-area button:not(:only-child):nth-child(2) {
- margin-left: 3px;
+ margin-left: 0.25em;
}
/**/
/* Queue */
#BatchQueueButtons button {
- min-height: 26px;
- min-width: 120px;
+ min-height: 2.16667em;
+ min-width: 10em;
}
/**/
@@ -1373,9 +1452,9 @@ window .view button {
background-color: @bg-dark-grey;
background-image: none;
box-shadow: none;
- background-image: none;
- min-height: 24px;
- padding: 0 4px;
+ min-height: 2em;
+ min-width: 1.33334em;
+ padding: 0 0.33334em;
}
dialog .view button.text-button label,
window .view button.text-button label {
@@ -1388,10 +1467,7 @@ window .view button {
dialog .view button {
border-color: @border-color;
}
-dialog .path-bar button:first-child,
-dialog .path-bar button:last-child {
- padding: 0;
-}
+
.view button:checked label,
.view button:checked,
.view button:hover:not(:active) label,
@@ -1411,13 +1487,29 @@ window .view header button,
.path-bar button {
border-radius: 0;
}
+
+#pathbarbox button:last-child {
+ min-width: 2em;
+ margin: 0;
+ padding: 0;
+ }
.path-bar button:first-child {
- border-top-left-radius: 2px;
- border-bottom-left-radius: 2px;
+ border-top-left-radius: 0.2em;
+ border-bottom-left-radius: 0.2em;
+ min-width: 2em;
+ margin: 0;
+ padding: 0;
}
.path-bar button:last-child {
- border-top-right-radius: 2px;
- border-bottom-right-radius: 2px;
+ border-top-right-radius: 0.2em;
+ border-bottom-right-radius: 0.2em;
+ min-width: 2em;
+ margin: 0;
+ padding: 0;
+}
+.path-bar button label {
+ margin: 0;
+ padding: 0 0.33334em;
}
/**/
@@ -1429,8 +1521,8 @@ popover button.text-button {
box-shadow: none;
background-image: none;
margin: 0;
- min-height: 20px;
- padding: 0 8px;
+ min-height: 1.66667em;
+ padding: 0 0.66667em;
}
popover button.text-button label {
padding: 0;
@@ -1454,10 +1546,10 @@ popover button.text-button:active {
/* Titlebar & Notebook buttons */
#MainNotebook > header.top > grid > button {
- margin: 0 0 0 5px;
+ margin: 0 0 0 0.41667em;
}
#MainNotebook > header.left > grid > button {
- margin: 5px 0 0 0;
+ margin: 0.41667em 0 0;
}
headerbar button.titlebutton image {
@@ -1465,51 +1557,51 @@ headerbar button.titlebutton image {
margin: 0;
}
headerbar button.titlebutton {
- margin: 0 0 0 4px;
+ margin: 0 0 0 0.33334em;
background-image: none;
border: 1px solid transparent;
background-color: transparent;
box-shadow: none;
- min-width: 18px;
- min-height: 18px;
+ min-width: 1.55em;
+ min-height: 1.55em;
padding: 0;
}
messagedialog headerbar button.titlebutton {
- min-width: 0;
- min-height: 0;
+ min-width: 1.25em;
+ min-height: 1.25em;
margin: 0;
}
#MainNotebook tab #CloseButton {
padding: 0;
- margin: 4px -3px 4px 1px;
- min-height: 18px;
- min-width: 18px;
+ margin: 0.33334em -3px 0.33334em 0.08334em;
+ min-width: 1.5em;
+ min-height: 1.5em;
}
#MainNotebook > header > grid > button:hover,
#MainNotebook tab #CloseButton:hover,
headerbar button.titlebutton:hover{
border-color: rgba(0,0,0,.8);
- box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.11);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
- background-color: rgba(128, 128, 128,.15);
+ background-color: rgba(128, 128, 128,.20);
}
#MainNotebook > header > grid > button:active,
headerbar button.titlebutton:active{
border-color: rgba(0,0,0,.8);
- box-shadow: inset 0 1px rgba(242, 242, 242, 0.1);
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.15);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
- background-color: rgba(128, 128, 128,.30);
+ background-color: rgba(128, 128, 128,.40);
}
#MainNotebook tab #CloseButton:hover,
headerbar button.titlebutton.close:hover{
- border-color: rgba(0,0,0,.9);
+ border-color: rgba(0,0,0,.8);
background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0));
- box-shadow: inset 0 1px rgba(242, 242, 242, 0.3);
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.32);
}
#MainNotebook tab #CloseButton:active,
headerbar button.titlebutton.close:active{
- border-color: rgba(0,0,0,.9);
+ border-color: rgba(0,0,0,.8);
background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0));
box-shadow: inset 0 1px rgba(242, 242, 242, 0.4);
}
@@ -1521,42 +1613,46 @@ headerbar button.titlebutton.close:active{
checkbox {
padding:0;
margin:0;
- min-height: 16px;
+ min-height: 2em;
}
checkbutton,
radiobutton {
- padding: 4px 0;
+ padding: 0;
margin: 0;
- min-height: 16px;
+ min-height: 2em;
}
check,
radio {
- border: 1.16px solid shade(@text-color, .9);
+ border: calc(0.083334em + 0.18px) solid shade(@text-color, .9);
background-image: none;
background-color: transparent;
margin: 0;
padding: 0;
- min-height: 14px;
- min-width: 14px;
+ min-height: 1.16667em;
+ min-width: 1.16667em;
box-shadow: none;
background-repeat: no-repeat;
-gtk-icon-shadow: none;
}
radiobutton label,
checkbutton label {
- margin: 0 6px 0 6px;
+ margin: 0 0.5em;
padding: 0;
}
-check,
-check:indeterminate {
- border-radius: 2px;
+check {
+ border-radius: 0.16667em;
}
check:checked {
padding: 0 2px 0 0;
- min-width: 12px;
+ min-width: calc(1.16667em - 2px);
}
+check:indeterminate {
+ min-width: 1.16667em;
+ padding: 0;
+}
+
radio{
- border-radius: 20px;
+ border-radius: 1.16667em;
}
check:disabled,
radio:disabled {
@@ -1564,27 +1660,30 @@ radio:disabled {
}
frame > checkbutton check{
- margin-left: 6px;
+ margin-left: 0.5em;
}
#PartialPaste checkbutton:not(#PartialPasteHeader) {
- padding: 0;
- margin-left: 14px;
+ min-height: 1.4em;
+ margin-left: 1.16667em;
}
#PartialPasteHeader {
- margin-left: 6px;
+ min-height: 1.4em;
+ margin-left: 0.5em;
}
#PrefNotebook checkbutton {
- padding: 0;
+ min-height: 1.16667em;
}
-#PrefNotebook radiobutton,
#PrefNotebook stack > box:nth-child(3) checkbutton,
#PrefNotebook stack > box:nth-child(4) checkbutton {
- padding: 3px 0;
+ min-height: 2em;
+}
+#PrefNotebook radiobutton {
+ min-height: 2em;
}
#MyExpander button + checkbutton:last-child {
- margin-left: 4px;
+ margin-left: 0.33334em;
}
/*** end ***************************************************************************************/
@@ -1593,11 +1692,11 @@ frame > checkbutton check{
#MyExpander entry,
entry {
margin: 0;
- padding: 0 4px;
- min-height: 20px;
+ padding: 0 0.33334em;
+ min-height: 1.66667em;
min-width: 0;
- border-radius: 2px;
- box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242 , 242, 242, 0.1);
+ border-radius: 0.2em;
+ box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242, 242, 242, 0.1);
border: 1px solid @bg-entry-border;
background-color: @bg-scale-entry;
}
@@ -1605,31 +1704,35 @@ entry {
spinbutton {
margin: 0;
padding: 0;
- min-height: 18px;
+ min-height: 1.66667em;
min-width: 0;
- border-radius: 2px;
+ border-radius: 0.2em;
background-color: @bg-scale-entry;
border: 1px solid @bg-entry-border;
- box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242 , 242, 242, 0.1);
+ box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242, 242, 242, 0.1);
}
#MyExpander spinbutton {
- margin: 2px 0;
+ margin: 0.16667em 0;
padding: 0;
- min-height: 0;
+ min-height: 1.33334em;
min-width: 0;
- border-radius: 22px 4px 4px 22px;
+ border-top-left-radius: 1.83334em;
+ border-bottom-left-radius: 1.83334em;
background-color: shade(@bg-grey, 1.33);
border: 1px solid @bg-button-border;
color: @text-tbEntry;
- box-shadow: inset 1px 1px rgba(0, 0, 0, .12), 0 1px rgba(255 , 255, 255, 0.12);
+ box-shadow: inset 1px 1px rgba(0, 0, 0, .12), 0 1px rgba(255, 255, 255, 0.12);
}
-#MyExpander checkbutton + label + spinbutton,
#MyExpander button + label + spinbutton {
- margin: 3px 0; /* Needed for Reset & and Auto button height*/
+ margin: 0.25em 0; /* Needed for Reset & and Auto button height*/
}
+#MyExpander checkbutton + label + spinbutton {
+ margin: 0.33334em 0; /* Needed for Reset & and Auto checkbox button height*/
+}
+
#MyExpander image + spinbutton {
- margin-left: 3px;
+ margin-left: 0.25em;
}
#BatchQueueButtonsMainContainer spinbutton button,
@@ -1638,7 +1741,7 @@ spinbutton button {
padding: 0;
margin: 0;
min-height: 0;
- min-height: 0;
+ min-width: 1.33334em;
background-image: none;
background-color: transparent;
border: none;
@@ -1648,7 +1751,7 @@ spinbutton button {
}
#MyExpander spinbutton entry,
spinbutton entry {
- padding: 0 4px;
+ padding: 0 0.33334em;
margin: 0;
min-height: 0;
min-width: 0;
@@ -1657,7 +1760,7 @@ spinbutton entry {
background-color: transparent;
}
#MyExpander spinbutton entry {
- padding: 0 4px 0 9px;
+ padding: 0 0.33334em 0 0.83334em;
}
#BatchQueueButtonsMainContainer spinbutton button:hover,
@@ -1704,8 +1807,8 @@ entry:focus > selection {
.view entry {
background-color: @bg-dark-grey;
- margin: 0 -1px;
- border: none;
+ margin: 0 -2px;
+ border: 1px solid @accent-color;
box-shadow: none;
}
/* end*/
@@ -1716,22 +1819,26 @@ entry:focus > selection {
:not(.popup):not(tooltip) > decoration {
background-color: @winHeaderbar;
background-image: none;
- border-radius: 4px 4px 0 0;
+ border-radius: 0.41667em 0.41667em 0 0;
border: none;
padding: 0;
- box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey;
- margin: 10px;
+ box-shadow: 0 0.25em 0.75em 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey;
+ margin: 0.83334em;
}
headerbar {
background-color: shade(@winHeaderbar,1.12);
box-shadow: inset 0 1px rgba(200,200,200,.13);
background-image: linear-gradient(shade(@winHeaderbar,1.14), shade(@winHeaderbar,.86));
border-bottom: 1px solid @bg-dark-grey;
- border-radius: 4px 4px 0 0;
- min-height: 0;
- padding: 4px 5px 3px;
+ border-radius: 0.41667em 0.41667em 0 0;
+ min-height: 2.16667em;
+ padding: 0.08334em 0.41667em 0;
margin: 0;
}
+messagedialog headerbar {
+ min-height: 2em;
+
+}
headerbar .title{
color: @winTitle;
}
@@ -1744,7 +1851,7 @@ headerbar .title{
/* Window in background */
:not(.popup):not(tooltip) > decoration:backdrop {
- box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.3), 0 0 0 1px @bg-dark-grey;
+ box-shadow: 0 0.25em 0.75em 1px rgba(0, 0, 0, 0.3), 0 0 0 1px @bg-dark-grey;
}
headerbar:backdrop {
box-shadow: none;
@@ -1756,4 +1863,3 @@ headerbar .title:backdrop {
/**/
/*** end ***************************************************************************************/
-
diff --git a/rtdata/themes/TooWaBlue-GTK3-_19.css b/rtdata/themes/TooWaBlue-GTK3-_19.css
new file mode 100644
index 000000000..24442aae3
--- /dev/null
+++ b/rtdata/themes/TooWaBlue-GTK3-_19.css
@@ -0,0 +1,881 @@
+/*
+ This file is part of RawTherapee.
+
+ Copyright (c) 2016 TooWaBoo (v1.19.4)
+ 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 .
+*/
+
+/*** 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 Tab indicator, 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 ***/
+@define-color accent-color4 rgb(35,99,166); /*** Slider knob ***/
+
+@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 rgb(180,180,180);
+@define-color text-hl-color2 rgb(192,192,192);
+@define-color text-tbEntry rgb(192,192,192);
+@define-color bg-dark-grey rgb(36,36,36);
+@define-color bg-grey rgb(70,70,70);
+@define-color bg-light-grey rgb(88,88,88);
+@define-color border-color rgba(255,255,255,.25);
+@define-color bg-list-hover rgba(255,255,255,.065);
+@define-color bg-scale-entry rgba(0,0,0,.14);
+@define-color bg-button-border rgba(0,0,0,.48);
+@define-color bg-button-border-hover rgba(0,0,0,.58);
+@define-color bg-entry-border rgba(0,0,0,.40);
+@define-color bg-button-hover rgba(0,0,0,.22);
+@define-color bg-spin-button-hover rgba(0,0,0,.25);
+@define-color bg-entry-IPTC @bg-dark-grey;
+@define-color view-grid-border rgb(64,64,64);
+
+* {
+ color: @text-color;
+ transition: none;
+ text-shadow: none;
+ icon-shadow: none;
+ box-shadow: none;
+ outline-style: none; /* removes the ugly dotted focus line */
+ border-image: none;
+ -GtkCheckButton-indicator-size: 16;
+ -GtkCheckMenuItem-indicator-size: 16;
+ -GtkCheckButton-indicator-spacing: 2;
+}
+
+.undershoot {
+ background-image: none; /* removes the dotted scrollbar line */
+}
+GtkWindow {
+ background-color: @bg-light-grey;
+}
+GtkDialog {
+ background-color: @bg-grey;
+ -GtkDialog-content-area-spacing: 7;
+ -GtkDialog-action-area-border: 0;
+ -GtkDialog-content-area-border: 8;
+}
+
+GtkFontChooser,
+GtkColorChooser {
+ -GtkDialog-action-area-border: 4;
+ -GtkDialog-content-area-border: 0;
+}
+
+.frame {
+ border: none;
+}
+#PrefNotebook > .frame {
+ border: 1px solid rgba(0,0,0,.50);
+ border-top: none;
+}
+#BatchQueueButtonsMainContainer GtkFrame {
+ padding: 4px 4px 4px 10px;
+}
+
+/*** Add space between buttons and image area***/
+#BeforeAfterContainer GtkFrame {
+ padding: 2px 0 4px;
+}
+/*** Add space between before/after image ***/
+#BeforeAfterContainer GtkContainer:nth-child(1) > GtkContainer:nth-child(2) GtkFrame {
+ padding-right: 14px;
+}
+
+/*** Menu bubble box ***/
+GtkPopover {
+ background-color: @bg-grey;
+ border: 1px solid @accent-color;
+ border-radius: 0;
+}
+
+.menu {
+ background-color: @bg-dark-grey;
+ border: 1px solid @accent-color;
+}
+.menu > .menuitem {
+ padding: 2px 4px;
+}
+.menu > .menuitem:hover {
+ background-color: @accent-color;
+}
+.menu > .menuitem:hover > * > *,
+.menu > .menuitem:hover > * {
+ color: @text-hl-color;
+}
+
+GtkNotebook {
+ padding: 4px;
+ background-color: @bg-light-grey;
+}
+GtkDialog GtkNotebook {
+ padding: 2px 0 0;
+}
+#PrefNotebook {
+ padding: 4px 8px;
+}
+#RightNotebook {
+ padding: 0 0 0 4px;
+}
+
+GtkPaned {
+ -GtkPaned-handle-size: 4px;
+ background-color: transparent;
+}
+.pane-separator {
+ background-color: @bg-light-grey;
+}
+GtkDialog .pane-separator {
+ background-color: @bg-grey;
+}
+
+/*** Separator ***/
+.separator {
+ color: @bg-light-grey;
+}
+GtkDialog .separator {
+ color: @border-color;
+}
+#RightNotebook .separator {
+ color: @bg-dark-grey;
+}
+ /*** Navigator ***/
+#Navigator .separator {
+ color: @view-grid-border;
+}
+/*** end ***/
+
+/*** Background color image area***/
+GtkDrawingArea {
+ background-color: @bg-grey;
+ border: 1px solid rgba(0,0,0,.32);
+}
+/*** Histogram ***/
+#HistogramPanel,
+#HistogramArea {
+ background-color: @bg-dark-grey;
+ border: none;
+}
+/*** Histogram RGB-Bar***/
+#HistogramRGBArea {
+ background-color: rgb(128,128,128);
+ border: none;
+}
+/*** Navigator ***/
+#Navigator GtkDrawingArea {
+ background-color: @bg-dark-grey;
+ border: 1px solid @bg-dark-grey;
+}
+#Navigator {
+ background-color: @bg-dark-grey;
+ border-top: 156px solid @bg-light-grey;
+}
+
+#RightNotebook GtkDrawingArea {
+ background-color: @bg-dark-grey;
+}
+
+/*** Label ***/
+ .label {
+ padding: 0 4px;
+}
+ /*** Increase space between labels in navigater ***/
+#Navigator .label {
+ padding: 6px 0 3px;
+}
+#Navigator GtkTable .label {
+ padding: 0 0 4px;
+}
+ /***/
+GtkDialog .label,
+#ToolPanelNotebook .label,
+.notebook tab .label {
+ padding: 0 1px;
+}
+.button .label {
+ padding: 0;
+}
+
+ /*** Add left and right space between frame and labels ***/
+.frame > .label,
+#ToolPanelNotebook .frame > .label {
+ padding: 4px;
+}
+#BatchQueueButtonsMainContainer GtkFrame:nth-child(3) > .label{
+ padding: 2px 0px 4px;
+}
+
+#MyExpanderTitle .label {
+ padding: 2px 3px;
+}
+/*** end ***/
+
+.tooltip {
+ border-radius: 0;
+ padding: 0;
+}
+.tooltip.background {
+ background-color: @bg-dark-grey;
+ border: 1px solid @accent-color;
+}
+
+/*** PartialPaste ***/
+#PartialPaste:nth-child(2) {
+ background-color: @bg-light-grey;
+ border: 1px solid rgba(0,0,0,.50);
+}
+#PartialPaste > .frame {
+ padding: 8px 10px;
+}
+#PartialPasteHeaderSep {
+ color: rgb(192,192,192);
+}
+#PartialPasteHeader .label {
+ color: rgb(213,213,213);
+}
+/*** end ***/
+
+/*** 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 {
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(242, 242, 242, 0.1);
+ -GtkRange-trough-border: 6;
+ -GtkScale-slider-length: 15;
+ -GtkRange-slider-width: 15;
+}
+.scale.trough,
+#ToolPanelNotebook .scale.trough {
+ background-color: @bg-scale-entry;
+ border-color: @bg-dark-grey;
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(242, 242, 242, 0.1);
+}
+.scale.trough.highlight,
+#ToolPanelNotebook .scale.trough.highlight {
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(242, 242, 242, 0.1);
+ background-image: none;
+ background-color: @accent-color2;
+ border: 1px solid @bg-dark-grey;
+ color: @text-hl-color2;
+}
+.scale.slider,
+#ToolPanelNotebook .scale.slider {
+ background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85));
+ border: 1px solid shade(@bg-dark-grey, 1.25);
+ box-shadow: none;
+}
+.scale.fine-tune {
+ -GtkRange-trough-border: 5;
+}
+.scale.scale-has-marks-below {
+ -GtkRange-trough-border: 6;
+ -GtkScale-slider-length: 6;
+ -GtkRange-slider-width: 19;
+}
+.scale.slider.scale-has-marks-below {
+ border-radius: 0 0 20px 20px;
+ border: 1px solid @bg-dark-grey;
+}
+.scale.fine-tune.scale-has-marks-below {
+ -GtkRange-trough-border: 5;
+}
+.scale.slider:hover,
+#ToolPanelNotebook .scale.slider:hover {
+ background-image: linear-gradient(to bottom, shade (@accent-color4,1.25), shade (@accent-color4,.95));
+}
+
+.scale.slider:active,
+#ToolPanelNotebook .scale.slider:active {
+ background-image: linear-gradient(to bottom, shade (@accent-color4,1.25), shade (@accent-color4,.95));
+}
+
+GtkProgressBar {
+ -GtkProgressBar-min-vertical-bar-width: 8;
+ -GtkProgressBar-min-horizontal-bar-height: 8;
+ -GtkProgressBar-yspacing: 4px;
+ border-radius: 10px;
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(242, 242, 242, 0.1);
+}
+.progressbar {
+ background-image: none;
+ background-color: @accent-color2;
+ border-color: @bg-dark-grey;
+}
+GtkProgressBar.trough {
+ background-image: none;
+ background-color: @bg-scale-entry;
+}
+#MainNotebook > GtkGrid GtkProgressBar {
+ box-shadow: none;
+}
+#MainNotebook > GtkGrid GtkProgressBar.trough {
+ background-image: none;
+ background-color: @bg-dark-grey;
+ border-color: @bg-dark-grey;
+}
+/*** end ***/
+
+/*** Load/Save ***/
+GtkFileChooserWidget {
+ background-color: @bg-grey;
+}
+GtkFileChooserWidget > GtkBox {
+ border-bottom-color: @bg-dark-grey;
+}
+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 ***/
+
+/*** Tab Bars ***/
+.notebook tab, .notebook.header {
+ background-color: @bg-dark-grey;
+ border-color: @bg-dark-grey;
+}
+#MainNotebook tab {
+ padding: 5px;
+}
+.notebook tab.top {
+ border-width: 0 0 5px 0;
+}
+.notebook tab.left {
+ border-width: 0 5px 0 0;
+}
+#RightNotebook tab.left,
+#PrefNotebook tab,
+GtkDialog tab {
+ padding: 9px;
+}
+#ToolPanelNotebook tab {
+ padding: 10px 4px 7px;
+}
+#MetaPanelNotebook tab {
+ padding: 8px 4px;
+}
+
+.notebook tab:active {
+ border-color: @accent-color;
+}
+
+/*** 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;
+}
+#MyExpanderTitle GtkImage{
+ padding: 0;
+}
+
+#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;
+ color: @text-color;
+}
+#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;
+}
+#MyExpanderTitle:hover .label {
+ color: @text-hl-color2;
+}
+/*** end ***/
+
+/*** View ***/
+.view {
+ background-color: @bg-dark-grey;
+ border-color: @view-grid-border;
+}
+#PrefNotebook .view {
+ background-color: @bg-grey;
+}
+#MainNotebook .view.cell:nth-child(2) {
+ padding: 1px 0px 1px 4px;
+}
+.view row:hover {
+ background-color: @bg-list-hover;
+ color: @text-hl-color2;
+}
+#PrefNotebook .view row:hover {
+ background-color: @bg-light-grey;
+ color: @text-hl-color2;
+}
+.view row:selected {
+ color: @text-hl-color;
+ background-color: @accent-color;
+}
+#PrefNotebook .view row:selected {
+ color: @text-hl-color;
+ background-color: @accent-color;
+}
+/*** end ***/
+
+/*** Metadata ***/
+#MetaPanelNotebook {
+ padding: 8px 11px 0;
+}
+#MetaPanelNotebook GtkScrolledWindow GtkViewport.frame {
+ padding: 8px 10px;
+}
+#MetaPanelNotebook.frame {
+ background-color: @bg-grey;
+ border-bottom: none;
+ border-top: 4px solid @bg-dark-grey;
+ border-left: 9px solid @bg-dark-grey;
+ border-right: 9px solid @bg-dark-grey;
+}
+#MetaPanelNotebook .separator {
+ color: @border-color;
+}
+#MetaPanelNotebook.header {
+ background-color: @bg-dark-grey;
+
+}
+#MetaPanelNotebook GtkTreeView {
+ padding: 1px;
+ background-color: @bg-grey;
+}
+#MetaPanelNotebook .frame GtkTreeView {
+ padding: 0px;
+ background-color: @bg-entry-IPTC;
+}
+#MetaPanelNotebook GtkTreeView:hover,
+#MetaPanelNotebook .frame GtkTreeView:hover {
+ background-color: @bg-list-hover;
+ color: @text-hl-color;
+}
+#MetaPanelNotebook GtkTreeView:selected,
+#MetaPanelNotebook .frame GtkTreeView:selected {
+ color: @text-hl-color;
+ background-color: @accent-color;
+}
+#MetaPanelNotebook GtkTextView {
+ color: @text-color;
+ background-color: @bg-entry-IPTC;
+ padding: 2px 4px;
+}
+/*** end ***/
+
+/*** Entry ***/
+.entry {
+ background-image: none;
+ background-color: @bg-scale-entry;
+ border: 1px solid @bg-entry-border;
+ border-radius: 0;
+ padding: 2px 4px;
+ color: @text-color;
+ box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242 , 242, 242, 0.1);
+}
+#FileBrowser .entry {
+ padding: 3px 4px;
+}
+.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-scale-entry;
+}
+#ToolPanelNotebook .entry {
+ padding: 0 4px 0 8px;
+ border-radius: 20px 0 0 20px;
+ background-color: rgba(255,255,255,.12);
+ border: 1px solid rgba(0,0,0,.46);
+ color: @text-tbEntry;
+ box-shadow: inset 1px 1px rgba(0, 0, 0, .12), 0 1px rgba(255 , 255, 255, 0.12);
+}
+#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 {
+ color: @text-color;
+ background-color: @bg-entry-IPTC;
+ border: none;
+ border-radius: 0;
+ padding: 2px 4px;
+ box-shadow: none;
+}
+#MetaPanelNotebook .entry:focused:selected {
+ color: @text-hl-color;
+ background-color: @accent-color;
+ box-shadow: none;
+}
+#MetaPanelNotebook .entry:not(:focused):not(:insensitive) {/*Workaround*/
+ color: @text-color;
+ background-color: transparent;
+ box-shadow: none;
+}
+#MetaPanelNotebook .entry:not(:selected):not(:insensitive) {
+ color: @text-color;
+ background-color: @bg-entry-IPTC;
+ box-shadow: none;
+}
+/*** end ***/
+
+/*** Buttons ***/
+.button {
+ background-color: transparent;
+ border: 1px solid @bg-button-border;
+ border-radius: 0;
+ padding: 3px 4px;
+ box-shadow: inset 0 1px rgba(242, 242, 242, 0.1), 0 1px rgba(242, 242, 242, 0.1);
+ background-image: linear-gradient(to bottom, rgba(0,0,0,.05), rgba(0,0,0,.14) 40%, rgba(0,0,0,.26));
+}
+.message-dialog .dialog-action-area .button {
+ padding: 6px;
+ }
+
+.button.Left + .button:not(.image-button).Right {
+ border-left: none;
+}
+GtkComboBox .button {
+ padding: 4px 3px;
+}
+#ToolPanelNotebook .button,
+GtkDialog .button,
+#BatchQueueButtonsMainContainer .button {
+ padding: 0px 3px;
+}
+#BatchQueueButtons .button {
+ padding-top: 6px;
+ padding-bottom: 6px
+}
+#BeforeAfterContainer .button {
+ padding: 2px;
+}
+
+ /*** Fix: Space between first Retinex Comboboxes ***/
+GtkLabel + GtkComboBox + GtkComboBox {
+ padding-left: 4px;
+}
+
+.text-button {
+ padding: 0 2px 0 0;
+}
+#PartialPaste .text-button {
+ padding: 0 8px 0 2px;
+ -GtkCheckButton-indicator-spacing: 1;
+}
+#ToolPanelNotebook GtkFrame > .text-button {
+ padding: 0 3px 0 0;
+}
+
+.button.text-button {
+ padding: 5px 12px;
+}
+#ToolPanelNotebook .button.text-button,
+#PrefNotebook .button.text-button,
+GtkFileChooserWidget .button.text-button,
+#RightNotebook .button.text-button {
+ padding: 3px 4px;
+}
+GtkPopover .button.text-button {
+ padding: 2px 4px;
+}
+
+.spinbutton .button {
+ background-image: none;
+ background-color: transparent;
+ border: none;
+ border-radius: 0;
+ padding: 2px;
+ box-shadow: none;
+}
+#ToolPanelNotebook .spinbutton .button {
+ padding: 0;
+}
+
+.button:hover {
+ background-color: rgba(0, 0, 0,.18);
+}
+#ToolPanelNotebook .spinbutton .button:hover {
+ background-color: @bg-spin-button-hover;
+}
+
+.button:active,
+.button:checked {
+ background-image: linear-gradient(to bottom, rgb(41,41,41), rgb(37,37,37) 40%, rgb(25,25,25));
+ background-color: transparent;
+ border-color: black;
+}
+
+#MainNotebook > GtkGrid .button {
+ padding: 2px;
+ border: 4px solid @bg-dark-grey;
+ background-color: transparent;
+ background-image: none;
+ box-shadow: none;
+}
+#MainNotebook tab .button {
+ padding: 1px;
+ border-top: 4px solid @bg-dark-grey;
+ border-bottom: 4px solid @bg-dark-grey;
+ border-left: none;
+ border-right: none;
+ background-color: transparent;
+ background-image: none;
+ box-shadow: none;
+}
+#MainNotebook > GtkGrid .button:hover,
+#MainNotebook tab .button:hover {
+ background-color: rgba(255,255,255,.20);
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0.12);
+ background-image: linear-gradient(to bottom, rgba(0,0,0,.05), rgba(0,0,0,.12) 40%, rgba(0,0,0,.24));
+}
+#MainNotebook > GtkGrid .button:active,
+#MainNotebook tab .button:active {
+ background-color: rgba(255,255,255,.27);
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0.12);
+ background-image: linear-gradient(to bottom, rgba(0,0,0,.05), rgba(0,0,0,.12) 40%, rgba(0,0,0,.24));
+}
+.view .button {
+ background-color: rgb(20,20,20);
+ padding: 1px 5px 2px;
+ background-image: none;
+ border-color: black;
+ box-shadow: none;
+}
+.menu .button.bottom,
+.menu .button.bottom:insensitive {
+ background-color: rgb(20,20,20);
+ border-color: @accent-color;
+ border-width: 0 1px 1px 1px;
+ background-image: none;
+ box-shadow: none;
+}
+.menu .button.top,
+.menu .button.top:insensitive {
+ background-color: rgb(20,20,20);
+ border-color: @accent-color;
+ border-width: 1px 1px 0 1px;
+ background-image: none;
+ box-shadow: none;
+}
+#fullButton,
+#histButton {
+ padding: 5px;
+ border: none;
+ background-color: @bg-dark-grey;
+ background-image: none;
+ box-shadow: none;
+}
+/*** end ***/
+
+/*** Check & Radio buttons ***/
+.check,
+.check row {
+ -gtk-icon-source: url("images/twb/checkbox-unchecked.png");
+}
+.check:checked,
+.check row:checked {
+ -gtk-icon-source: url("images/twb/checkbox-checked.png");
+}
+.check:insensitive,
+.check row:insensitive {
+ -gtk-icon-source: url("images/twb/checkbox-unchecked-disabled.png");
+}
+.check:checked:insensitive,
+.check row:checked:insensitive {
+ -gtk-icon-source: url("images/twb/checkbox-checked-disabled.png");
+}
+.check:inconsistent,
+.check row:inconsistent {
+ -gtk-icon-source: url("images/twb/checkbox-inconsistent.png");
+}
+.check:inconsistent:insensitive,
+.check row:inconsistent:insensitive {
+ -gtk-icon-source: url("images/twb/checkbox-inconsistent-disabled.png");
+}
+
+.radio,
+.radio row {
+ -gtk-icon-source: url("images/twb/radio-unchecked.png");
+}
+.radio:checked,
+.radio row:checked {
+ -gtk-icon-source: url("images/twb/radio-checked.png");
+}
+.radio:insensitive,
+.radio row:insensitive {
+ -gtk-icon-source: url("images/twb/radio-unchecked-disabled.png");
+}
+.radio:checked:insensitive,
+.radio row:checked:insensitive {
+ -gtk-icon-source: url("images/twb/radio-checked-disabled.png");
+}
+.radio:inconsistent,
+.radio row:inconsistent {
+ -gtk-icon-source: url("images/twb/radio-inconsistent.png");
+}
+.radio:inconsistent:insensitive,
+.radio row:inconsistent:insensitive {
+ -gtk-icon-source: url("images/twb/radio-inconsistent-disabled.png");
+}
+/*** end ***/
+
+/*** Disabled Items ***/
+
+*:insensitive,
+#ToolPanelNotebook *:insensitive {
+ color: rgb(128,128,128);
+ box-shadow: none;
+}
+#ToolPanelNotebook .entry:insensitive {
+ color: rgb(144,144,144);
+ background-color: rgba(255,255,255,.06);
+ box-shadow: none;
+}
+.button:insensitive {
+ background-image: none;
+ background-color: rgba(0,0,0,.10);
+ border-color: rgba(0,0,0,.30);
+ box-shadow: none;
+}
+.spinbutton .button:insensitive {
+ background-image: none;
+ background-color: transparent;
+ border: none;
+ box-shadow: none;
+}
+.scale.slider:insensitive,
+.scale.trough.highlight:insensitive,
+.scale.trough:insensitive,
+#ToolPanelNotebook .scale.slider:insensitive,
+#ToolPanelNotebook .scale.trough.highlight:insensitive,
+#ToolPanelNotebook .scale.trough:insensitive {
+ background-color: rgb(65,65,65);
+ box-shadow: none;
+ background-image: none;
+}
+/*** end ***/
diff --git a/rtdata/themes/images/svg/twb/checkbox-checked-disabled.svg b/rtdata/themes/images/svg/twb/checkbox-checked-disabled.svg
new file mode 100644
index 000000000..1103ee917
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/checkbox-checked-disabled.svg
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/checkbox-checked.svg b/rtdata/themes/images/svg/twb/checkbox-checked.svg
new file mode 100644
index 000000000..c7d28d45d
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/checkbox-checked.svg
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/checkbox-inconsistent-disabled.svg b/rtdata/themes/images/svg/twb/checkbox-inconsistent-disabled.svg
new file mode 100644
index 000000000..ee55c4f6f
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/checkbox-inconsistent-disabled.svg
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/checkbox-inconsistent.svg b/rtdata/themes/images/svg/twb/checkbox-inconsistent.svg
new file mode 100644
index 000000000..e0f5bd362
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/checkbox-inconsistent.svg
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/checkbox-unchecked-disabled.svg b/rtdata/themes/images/svg/twb/checkbox-unchecked-disabled.svg
new file mode 100644
index 000000000..635dae59b
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/checkbox-unchecked-disabled.svg
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/checkbox-unchecked.svg b/rtdata/themes/images/svg/twb/checkbox-unchecked.svg
new file mode 100644
index 000000000..0adfe66cc
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/checkbox-unchecked.svg
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/radio-checked-disabled.svg b/rtdata/themes/images/svg/twb/radio-checked-disabled.svg
new file mode 100644
index 000000000..f415b4be7
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/radio-checked-disabled.svg
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/radio-checked.svg b/rtdata/themes/images/svg/twb/radio-checked.svg
new file mode 100644
index 000000000..c6f9b4ee8
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/radio-checked.svg
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/radio-inconsistent-disabled.svg b/rtdata/themes/images/svg/twb/radio-inconsistent-disabled.svg
new file mode 100644
index 000000000..e41f3ff9c
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/radio-inconsistent-disabled.svg
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/radio-inconsistent.svg b/rtdata/themes/images/svg/twb/radio-inconsistent.svg
new file mode 100644
index 000000000..65ea2a8e8
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/radio-inconsistent.svg
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/radio-unchecked-disabled.svg b/rtdata/themes/images/svg/twb/radio-unchecked-disabled.svg
new file mode 100644
index 000000000..60098048f
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/radio-unchecked-disabled.svg
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/svg/twb/radio-unchecked.svg b/rtdata/themes/images/svg/twb/radio-unchecked.svg
new file mode 100644
index 000000000..8b448f3cf
--- /dev/null
+++ b/rtdata/themes/images/svg/twb/radio-unchecked.svg
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/rtdata/themes/images/twb/checkbox-checked-disabled.png b/rtdata/themes/images/twb/checkbox-checked-disabled.png
new file mode 100644
index 000000000..8458b5987
Binary files /dev/null and b/rtdata/themes/images/twb/checkbox-checked-disabled.png differ
diff --git a/rtdata/themes/images/twb/checkbox-checked.png b/rtdata/themes/images/twb/checkbox-checked.png
new file mode 100644
index 000000000..83d3744d3
Binary files /dev/null and b/rtdata/themes/images/twb/checkbox-checked.png differ
diff --git a/rtdata/themes/images/twb/checkbox-inconsistent-disabled.png b/rtdata/themes/images/twb/checkbox-inconsistent-disabled.png
new file mode 100644
index 000000000..96c5fbe5f
Binary files /dev/null and b/rtdata/themes/images/twb/checkbox-inconsistent-disabled.png differ
diff --git a/rtdata/themes/images/twb/checkbox-inconsistent.png b/rtdata/themes/images/twb/checkbox-inconsistent.png
new file mode 100644
index 000000000..373f218be
Binary files /dev/null and b/rtdata/themes/images/twb/checkbox-inconsistent.png differ
diff --git a/rtdata/themes/images/twb/checkbox-unchecked-disabled.png b/rtdata/themes/images/twb/checkbox-unchecked-disabled.png
new file mode 100644
index 000000000..985dd07cc
Binary files /dev/null and b/rtdata/themes/images/twb/checkbox-unchecked-disabled.png differ
diff --git a/rtdata/themes/images/twb/checkbox-unchecked.png b/rtdata/themes/images/twb/checkbox-unchecked.png
new file mode 100644
index 000000000..747a9c8c3
Binary files /dev/null and b/rtdata/themes/images/twb/checkbox-unchecked.png differ
diff --git a/rtdata/themes/images/twb/radio-checked-disabled.png b/rtdata/themes/images/twb/radio-checked-disabled.png
new file mode 100644
index 000000000..0947a5e06
Binary files /dev/null and b/rtdata/themes/images/twb/radio-checked-disabled.png differ
diff --git a/rtdata/themes/images/twb/radio-checked.png b/rtdata/themes/images/twb/radio-checked.png
new file mode 100644
index 000000000..48cfc16ae
Binary files /dev/null and b/rtdata/themes/images/twb/radio-checked.png differ
diff --git a/rtdata/themes/images/twb/radio-inconsistent-disabled.png b/rtdata/themes/images/twb/radio-inconsistent-disabled.png
new file mode 100644
index 000000000..a59b179e1
Binary files /dev/null and b/rtdata/themes/images/twb/radio-inconsistent-disabled.png differ
diff --git a/rtdata/themes/images/twb/radio-inconsistent.png b/rtdata/themes/images/twb/radio-inconsistent.png
new file mode 100644
index 000000000..abe1e28ba
Binary files /dev/null and b/rtdata/themes/images/twb/radio-inconsistent.png differ
diff --git a/rtdata/themes/images/twb/radio-unchecked-disabled.png b/rtdata/themes/images/twb/radio-unchecked-disabled.png
new file mode 100644
index 000000000..6cbc076f2
Binary files /dev/null and b/rtdata/themes/images/twb/radio-unchecked-disabled.png differ
diff --git a/rtdata/themes/images/twb/radio-unchecked.png b/rtdata/themes/images/twb/radio-unchecked.png
new file mode 100644
index 000000000..e28db04f9
Binary files /dev/null and b/rtdata/themes/images/twb/radio-unchecked.png differ
diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt
index 35e8c7e01..361c2d370 100644
--- a/rtengine/CMakeLists.txt
+++ b/rtengine/CMakeLists.txt
@@ -29,7 +29,7 @@ set (RTENGINESOURCEFILES colortemp.cc curves.cc flatcurves.cc diagonalcurves.cc
include_directories (BEFORE "${CMAKE_CURRENT_BINARY_DIR}")
add_library (rtengine ${RTENGINESOURCEFILES})
-add_dependencies (rtengine AboutFile)
+add_dependencies (rtengine UpdateInfo)
#It may be nice to store library version too
IF (BUILD_SHARED_LIBS)
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index 4a5e7f1c8..a3bd3e523 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -2011,7 +2011,7 @@ void CLASS hasselblad_correct()
{bhu-1,0},{bhu-1,bwu/2},{bhu-1,bwu-1}};
for (col = 0; col < bw; col++) {
for (i = 0; i < 9; i++) {
- ushort dist = (ushort)sqrt(abs(corners[i][0] - row) * abs(corners[i][0] - row) + abs(corners[i][1] - col) * abs(corners[i][1] - col));
+ ushort dist = (ushort)sqrt(abs((int)(corners[i][0] - row)) * abs((int)(corners[i][0] - row)) + abs((int)(corners[i][1] - col)) * abs((int)(corners[i][1] - col)));
ushort weight = dist > maxdist ? 0 : maxdist - dist;
corners_weight[9*(row*bw+col)+i] = weight;
}
diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc
index f8e257ddc..8dfd90ab3 100644
--- a/rtengine/imagedata.cc
+++ b/rtengine/imagedata.cc
@@ -46,8 +46,6 @@ ImageMetaData* ImageMetaData::fromFile (const Glib::ustring& fname, RawMetaDataL
ImageData::ImageData (Glib::ustring fname, RawMetaDataLocation* ri) : iso_speed(0), aperture(0.), shutter(0.)
{
-
- size_t dotpos = fname.find_last_of ('.');
root = nullptr;
iptc = nullptr;
@@ -72,7 +70,7 @@ ImageData::ImageData (Glib::ustring fname, RawMetaDataLocation* ri) : iso_speed(
fclose (f);
extractInfo ();
}
- } else if ((dotpos < fname.size() - 3 && !fname.casefold().compare (dotpos, 4, ".jpg")) || (dotpos < fname.size() - 4 && !fname.casefold().compare (dotpos, 5, ".jpeg"))) {
+ } else if (hasJpegExtension(fname)) {
FILE* f = g_fopen (fname.c_str (), "rb");
if (f) {
@@ -83,7 +81,7 @@ ImageData::ImageData (Glib::ustring fname, RawMetaDataLocation* ri) : iso_speed(
iptc = iptc_data_new_from_jpeg_file (ff);
fclose (ff);
}
- } else if ((dotpos < fname.size() - 3 && !fname.casefold().compare (dotpos, 4, ".tif")) || (dotpos < fname.size() - 4 && !fname.casefold().compare (dotpos, 5, ".tiff"))) {
+ } else if (hasTiffExtension(fname)) {
FILE* f = g_fopen (fname.c_str (), "rb");
if (f) {
diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc
index e886dabce..05684aaa7 100644
--- a/rtengine/imageio.cc
+++ b/rtengine/imageio.cc
@@ -909,8 +909,11 @@ int ImageIO::loadPPMFromMemory(const char* buffer, int width, int height, bool s
int ImageIO::savePNG (Glib::ustring fname, int compression, volatile int bps)
{
+ if (getW() < 1 || getH() < 1) {
+ return IMIO_HEADERERROR;
+ }
- FILE *file = g_fopen_withBinaryAndLock (fname);
+ FILE* const file = g_fopen_withBinaryAndLock (fname);
if (!file) {
return IMIO_CANNOTWRITEFILE;
@@ -1003,8 +1006,11 @@ int ImageIO::savePNG (Glib::ustring fname, int compression, volatile int bps)
// Quality 0..100, subsampling: 1=low quality, 2=medium, 3=high
int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp)
{
+ if (getW() < 1 || getH() < 1) {
+ return IMIO_HEADERERROR;
+ }
- FILE *file = g_fopen_withBinaryAndLock (fname);
+ FILE* const file = g_fopen_withBinaryAndLock (fname);
if (!file) {
return IMIO_CANNOTWRITEFILE;
@@ -1190,6 +1196,9 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp)
int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed)
{
+ if (getW() < 1 || getH() < 1) {
+ return IMIO_HEADERERROR;
+ }
//TODO: Handling 32 bits floating point output images!
bool writeOk = true;
@@ -1342,7 +1351,7 @@ int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed)
}
- TIFFSetField (out, TIFFTAG_SOFTWARE, "RawTherapee " VERSION);
+ TIFFSetField (out, TIFFTAG_SOFTWARE, "RawTherapee " RTVERSION);
TIFFSetField (out, TIFFTAG_IMAGEWIDTH, width);
TIFFSetField (out, TIFFTAG_IMAGELENGTH, height);
TIFFSetField (out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
@@ -1441,19 +1450,11 @@ void png_flush(png_structp png_ptr)
int ImageIO::load (Glib::ustring fname)
{
- size_t lastdot = fname.find_last_of ('.');
-
- if( Glib::ustring::npos == lastdot ) {
- return IMIO_FILETYPENOTSUPPORTED;
- }
-
- if (!fname.casefold().compare (lastdot, 4, ".png")) {
+ if (hasPngExtension(fname)) {
return loadPNG (fname);
- } else if (!fname.casefold().compare (lastdot, 4, ".jpg") ||
- !fname.casefold().compare (lastdot, 5, ".jpeg")) {
+ } else if (hasJpegExtension(fname)) {
return loadJPEG (fname);
- } else if (!fname.casefold().compare (lastdot, 4, ".tif") ||
- !fname.casefold().compare (lastdot, 5, ".tiff")) {
+ } else if (hasTiffExtension(fname)) {
return loadTIFF (fname);
} else {
return IMIO_FILETYPENOTSUPPORTED;
@@ -1462,20 +1463,11 @@ int ImageIO::load (Glib::ustring fname)
int ImageIO::save (Glib::ustring fname)
{
-
- size_t lastdot = fname.find_last_of ('.');
-
- if( Glib::ustring::npos == lastdot ) {
- return IMIO_FILETYPENOTSUPPORTED;
- }
-
- if (!fname.casefold().compare (lastdot, 4, ".png")) {
+ if (hasPngExtension(fname)) {
return savePNG (fname);
- } else if (!fname.casefold().compare (lastdot, 4, ".jpg") ||
- !fname.casefold().compare (lastdot, 5, ".jpeg")) {
+ } else if (hasJpegExtension(fname)) {
return saveJPEG (fname);
- } else if (!fname.casefold().compare (lastdot, 4, ".tif") ||
- !fname.casefold().compare (lastdot, 5, ".tiff")) {
+ } else if (hasTiffExtension(fname)) {
return saveTIFF (fname);
} else {
return IMIO_FILETYPENOTSUPPORTED;
diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc
index 218dbf6fe..f970e3a54 100644
--- a/rtengine/iplab2rgb.cc
+++ b/rtengine/iplab2rgb.cc
@@ -144,7 +144,6 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch,
Image8* image = new Image8 (cw, ch);
Glib::ustring profile;
- cmsHPROFILE oprof = iccStore->getProfile (profile);
bool standard_gamma;
@@ -159,6 +158,8 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch,
standard_gamma = false;
}
+ cmsHPROFILE oprof = iccStore->getProfile (profile);
+
if (oprof) {
cmsHPROFILE oprofG = oprof;
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index af5922c9f..6d0f67ff9 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -26,7 +26,7 @@
#include "../rtgui/paramsedited.h"
#include "../rtgui/options.h"
#include
-#define APPVERSION VERSION
+#define APPVERSION RTVERSION
using namespace std;
extern Options options;
@@ -6365,7 +6365,7 @@ int ProcParams::load (const Glib::ustring &fname, ParamsEdited* pedited)
}
if (keyFile.has_key ("Crop", "W")) {
- crop.w = keyFile.get_integer ("Crop", "W");
+ crop.w = std::max(keyFile.get_integer("Crop", "W"), 1);
if (pedited) {
pedited->crop.w = true;
@@ -6373,7 +6373,7 @@ int ProcParams::load (const Glib::ustring &fname, ParamsEdited* pedited)
}
if (keyFile.has_key ("Crop", "H")) {
- crop.h = keyFile.get_integer ("Crop", "H");
+ crop.h = std::max(keyFile.get_integer("Crop", "H"), 1);
if (pedited) {
pedited->crop.h = true;
diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc
index 6017a1ca6..95475e6a4 100644
--- a/rtengine/stdimagesource.cc
+++ b/rtengine/stdimagesource.cc
@@ -74,27 +74,19 @@ void StdImageSource::getSampleFormat (const Glib::ustring &fname, IIOSampleForma
sFormat = IIOSF_UNKNOWN;
sArrangement = IIOSA_UNKNOWN;
- size_t lastdot = fname.find_last_of ('.');
-
- if( Glib::ustring::npos == lastdot ) {
- return;
- }
-
- if (!fname.casefold().compare (lastdot, 4, ".jpg") ||
- !fname.casefold().compare (lastdot, 5, ".jpeg")) {
+ if (hasJpegExtension(fname)) {
// For now, png and jpeg files are converted to unsigned short by the loader itself,
// but there should be functions that read the sample format first, like the TIFF case below
sFormat = IIOSF_UNSIGNED_CHAR;
sArrangement = IIOSA_CHUNKY;
return;
- } else if (!fname.casefold().compare (lastdot, 4, ".png")) {
+ } else if (hasPngExtension(fname)) {
int result = ImageIO::getPNGSampleFormat (fname, sFormat, sArrangement);
if (result == IMIO_SUCCESS) {
return;
}
- } else if (!fname.casefold().compare (lastdot, 4, ".tif") ||
- !fname.casefold().compare (lastdot, 5, ".tiff")) {
+ } else if (hasTiffExtension(fname)) {
int result = ImageIO::getTIFFSampleFormat (fname, sFormat, sArrangement);
if (result == IMIO_SUCCESS) {
@@ -125,22 +117,19 @@ int StdImageSource::load (const Glib::ustring &fname, bool batch)
switch (sFormat) {
case (IIOSF_UNSIGNED_CHAR): {
- Image8 *img_8 = new Image8 ();
- img = img_8;
+ img = new Image8;
break;
}
case (IIOSF_UNSIGNED_SHORT): {
- Image16 *img_16 = new Image16 ();
- img = img_16;
+ img = new Image16;
break;
}
case (IIOSF_LOGLUV24):
case (IIOSF_LOGLUV32):
case (IIOSF_FLOAT): {
- Imagefloat *img_float = new Imagefloat ();
- img = img_float;
+ img = new Imagefloat;
break;
}
diff --git a/rtengine/utils.cc b/rtengine/utils.cc
index b862e290f..f5b3e496b 100644
--- a/rtengine/utils.cc
+++ b/rtengine/utils.cc
@@ -29,7 +29,7 @@ using namespace std;
namespace rtengine
{
-void poke255_uc(unsigned char* &dest, unsigned char r, unsigned char g, unsigned char b)
+void poke255_uc(unsigned char*& dest, unsigned char r, unsigned char g, unsigned char b)
{
#if __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__
*(dest++) = b;
@@ -44,7 +44,7 @@ void poke255_uc(unsigned char* &dest, unsigned char r, unsigned char g, unsigned
#endif
}
-void poke01_d(unsigned char* &dest, double r, double g, double b)
+void poke01_d(unsigned char*& dest, double r, double g, double b)
{
#if __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__
*(dest++) = (unsigned char)(b * 255.);
@@ -59,7 +59,7 @@ void poke01_d(unsigned char* &dest, double r, double g, double b)
#endif
}
-void poke01_f(unsigned char* &dest, float r, float g, float b)
+void poke01_f(unsigned char*& dest, float r, float g, float b)
{
#if __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__
*(dest++) = (unsigned char)(b * 255.f);
@@ -74,9 +74,8 @@ void poke01_f(unsigned char* &dest, float r, float g, float b)
#endif
}
-void bilinearInterp (const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh)
+void bilinearInterp(const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh)
{
-
int ix = 0;
for (int i = 0; i < dh; i++) {
@@ -132,9 +131,8 @@ void bilinearInterp (const unsigned char* src, int sw, int sh, unsigned char* ds
}
}
-void nearestInterp (const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh)
+void nearestInterp(const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh)
{
-
int ix = 0;
for (int i = 0; i < dh; i++) {
@@ -150,9 +148,8 @@ void nearestInterp (const unsigned char* src, int sw, int sh, unsigned char* dst
}
}
-void rotate (unsigned char* img, int& w, int& h, int deg)
+void rotate(unsigned char* img, int& w, int& h, int deg)
{
-
if (deg == 0) {
return;
}
@@ -186,13 +183,12 @@ void rotate (unsigned char* img, int& w, int& h, int deg)
rotated[3 * (w * (h - i - 1) + w - j - 1) + 2] = img[ix++];
}
- memcpy (img, rotated, 3 * w * h);
- delete [] rotated;
+ memcpy(img, rotated, 3 * w * h);
+ delete[] rotated;
}
-void hflip (unsigned char* img, int w, int h)
+void hflip(unsigned char* img, int w, int h)
{
-
unsigned char* flipped = new unsigned char[3 * w * h];
int ix = 0;
@@ -203,13 +199,12 @@ void hflip (unsigned char* img, int w, int h)
flipped[3 * (w * i + w - 1 - j) + 2] = img[ix++];
}
- memcpy (img, flipped, 3 * w * h);
- delete [] flipped;
+ memcpy(img, flipped, 3 * w * h);
+ delete[] flipped;
}
-void vflip (unsigned char* img, int w, int h)
+void vflip(unsigned char* img, int w, int h)
{
-
unsigned char* flipped = new unsigned char[3 * w * h];
int ix = 0;
@@ -220,10 +215,34 @@ void vflip (unsigned char* img, int w, int h)
flipped[3 * (w * (h - 1 - i) + j) + 2] = img[ix++];
}
- memcpy (img, flipped, 3 * w * h);
- delete [] flipped;
+ memcpy(img, flipped, 3 * w * h);
+ delete[] flipped;
+}
+
+Glib::ustring getFileExtension(const Glib::ustring& filename)
+{
+ const Glib::ustring::size_type lastdot_pos = filename.find_last_of('.');
+ return
+ lastdot_pos != Glib::ustring::npos
+ ? filename.substr(lastdot_pos + 1).lowercase()
+ : Glib::ustring();
+}
+
+bool hasJpegExtension(const Glib::ustring& filename)
+{
+ const Glib::ustring extension = getFileExtension(filename);
+ return extension == "jpg" || extension == "jpeg";
+}
+
+bool hasTiffExtension(const Glib::ustring& filename)
+{
+ const Glib::ustring extension = getFileExtension(filename);
+ return extension == "tif" || extension == "tiff";
+}
+
+bool hasPngExtension(const Glib::ustring& filename)
+{
+ return getFileExtension(filename) == "png";
}
}
-
-
diff --git a/rtengine/utils.h b/rtengine/utils.h
index c46999219..b2c1d16a8 100644
--- a/rtengine/utils.h
+++ b/rtengine/utils.h
@@ -19,22 +19,23 @@
#pragma once
#include
+#include
namespace rtengine
{
-// update a point of a Cairo::Surface by accessing the raw data
-void poke255_uc(unsigned char* &dest, unsigned char r, unsigned char g, unsigned char b);
-// update a point of a Cairo::Surface by accessing the raw data
-void poke01_d(unsigned char* &dest, double r, double g, double b);
-// update a point of a Cairo::Surface by accessing the raw data
-void poke01_f(unsigned char* &dest, float r, float g, float b);
+// Update a point of a Cairo::Surface by accessing the raw data
+void poke255_uc(unsigned char*& dest, unsigned char r, unsigned char g, unsigned char b);
+// Update a point of a Cairo::Surface by accessing the raw data
+void poke01_d(unsigned char*& dest, double r, double g, double b);
+// Update a point of a Cairo::Surface by accessing the raw data
+void poke01_f(unsigned char*& dest, float r, float g, float b);
-void bilinearInterp (const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh);
-void nearestInterp (const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh);
-void rotate (unsigned char* img, int& w, int& h, int deg);
-void hflip (unsigned char* img, int w, int h);
-void vflip (unsigned char* img, int w, int h);
+void bilinearInterp(const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh);
+void nearestInterp(const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh);
+void rotate(unsigned char* img, int& w, int& h, int deg);
+void hflip(unsigned char* img, int w, int h);
+void vflip(unsigned char* img, int w, int h);
template
typename std::underlying_type::type toUnderlying(ENUM value)
@@ -42,4 +43,13 @@ typename std::underlying_type::type toUnderlying(ENUM value)
return static_cast::type>(value);
}
+// Return lower case extension without the "." or "" if the given name contains no "."
+Glib::ustring getFileExtension(const Glib::ustring& filename);
+// Return true if file has .jpeg or .jpg extension (ignoring case)
+bool hasJpegExtension(const Glib::ustring& filename);
+// Return true if file has .tiff or .tif extension (ignoring case)
+bool hasTiffExtension(const Glib::ustring& filename);
+// Return true if file has .png extension (ignoring case)
+bool hasPngExtension(const Glib::ustring& filename);
+
}
diff --git a/rtexif/CMakeLists.txt b/rtexif/CMakeLists.txt
index a2e713ed7..7dad67006 100644
--- a/rtexif/CMakeLists.txt
+++ b/rtexif/CMakeLists.txt
@@ -1,5 +1,5 @@
add_library (rtexif rtexif.cc stdattribs.cc nikonattribs.cc canonattribs.cc pentaxattribs.cc fujiattribs.cc sonyminoltaattribs.cc olympusattribs.cc kodakattribs.cc)
-add_dependencies (rtexif AboutFile)
+add_dependencies (rtexif UpdateInfo)
IF (WIN32)
set_target_properties (rtexif PROPERTIES COMPILE_FLAGS " -ffast-math -fexpensive-optimizations")
diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc
index 64ddd0ee3..58b60ee3f 100644
--- a/rtexif/rtexif.cc
+++ b/rtexif/rtexif.cc
@@ -278,7 +278,7 @@ bool TagDirectory::CPBDump (const Glib::ustring &commFName, const Glib::ustring
try {
kf->set_string ("RT General", "CachePath", options.cacheBaseDir);
- kf->set_string ("RT General", "AppVersion", VERSION);
+ kf->set_string ("RT General", "AppVersion", RTVERSION);
kf->set_integer("RT General", "ProcParamsVersion", PPVERSION);
kf->set_string ("RT General", "ImageFileName", imageFName);
kf->set_string ("RT General", "OutputProfileFileName", profileFName);
@@ -2797,7 +2797,7 @@ std::vector ExifManager::getDefaultTIFFTags (TagDirectory* forthis)
defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "XResolution"), 300, RATIONAL));
defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "YResolution"), 300, RATIONAL));
defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "ResolutionUnit"), 2, SHORT));
- defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "Software"), "RawTherapee " VERSION));
+ defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "Software"), "RawTherapee " RTVERSION));
defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "Orientation"), 1, SHORT));
defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "SamplesPerPixel"), 3, SHORT));
defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "BitsPerSample"), 8, SHORT));
diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt
index ad524ae2d..7a8113c55 100644
--- a/rtgui/CMakeLists.txt
+++ b/rtgui/CMakeLists.txt
@@ -62,7 +62,7 @@ endif (WIN32)
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
add_executable (rth ${EXTRA_SRC} ${BASESOURCEFILES})
-add_dependencies (rth AboutFile)
+add_dependencies (rth UpdateInfo)
set_target_properties (rth PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME rawtherapee)
#target_link_libraries (rth rtengine ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${TIFF_LIBRARIES} ${EXTRA_LIB} ${GOBJECT_LIBRARIES} ${GTHREAD_LIBRARIES}
diff --git a/rtgui/cacheimagedata.cc b/rtgui/cacheimagedata.cc
index 220dcb2e8..34983d46a 100644
--- a/rtgui/cacheimagedata.cc
+++ b/rtgui/cacheimagedata.cc
@@ -203,7 +203,7 @@ int CacheImageData::save (const Glib::ustring& fname)
} catch (Glib::Error&) {}
keyFile.set_string ("General", "MD5", md5);
- keyFile.set_string ("General", "Version", VERSION); // Application's version
+ keyFile.set_string ("General", "Version", RTVERSION);
keyFile.set_boolean ("General", "Supported", supported);
keyFile.set_integer ("General", "Format", format);
keyFile.set_boolean ("General", "RecentlySaved", recentlySaved);
diff --git a/rtgui/crop.cc b/rtgui/crop.cc
index b18b31ea2..a69c71ed8 100644
--- a/rtgui/crop.cc
+++ b/rtgui/crop.cc
@@ -210,10 +210,10 @@ Crop::Crop (): FoldableToolPanel(this, "crop", M("TP_CROP_LABEL"), false, true)
guide->append (M("TP_CROP_GTEPASSPORT"));
guide->set_active (0);
- w->set_range (0, maxw);
- h->set_range (0, maxh);
- x->set_range (0, maxw);
- y->set_range (0, maxh);
+ w->set_range (1, maxw);
+ h->set_range (1, maxh);
+ x->set_range (0, maxw - 1);
+ y->set_range (0, maxh - 1);
x->set_digits (0);
x->set_increments (1, 100);
@@ -326,10 +326,10 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited)
guide->set_active (8);
}
- x->set_value (pp->crop.x);
- y->set_value (pp->crop.y);
- w->set_value (pp->crop.w);
- h->set_value (pp->crop.h);
+ x->set_value(pp->crop.x);
+ y->set_value(pp->crop.y);
+ w->set_value(std::max(pp->crop.w, 1));
+ h->set_value(std::max(pp->crop.h, 1));
nx = pp->crop.x;
ny = pp->crop.y;
@@ -704,10 +704,10 @@ void Crop::setDimensions (int mw, int mh)
bool wconnWasBlocked = wconn.block (true);
bool hconnWasBlocked = hconn.block (true);
- w->set_range (0, maxw);
- h->set_range (0, maxh);
- x->set_range (0, maxw);
- y->set_range (0, maxh);
+ w->set_range (1, maxw);
+ h->set_range (1, maxh);
+ x->set_range (0, maxw - 1);
+ y->set_range (0, maxh - 1);
if (!xconnWasBlocked) {
xconn.block (false);
diff --git a/rtgui/crop.h b/rtgui/crop.h
index 61eff4bd7..077903836 100644
--- a/rtgui/crop.h
+++ b/rtgui/crop.h
@@ -27,9 +27,10 @@
class CropPanelListener
{
-
public:
- virtual void cropSelectRequested () {}
+ virtual ~CropPanelListener() = default;
+
+ virtual void cropSelectRequested() = 0;
};
class CropRatio
@@ -42,7 +43,6 @@ public:
class Crop : public ToolParamBlock, public CropGUIListener, public FoldableToolPanel, public rtengine::SizeListener
{
-
protected:
Gtk::CheckButton* fixr;
MyComboBoxText* ratio;
@@ -70,7 +70,6 @@ protected:
std::vector cropratio;
public:
-
Crop ();
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc
index 555c1752e..5cbb5255b 100644
--- a/rtgui/filebrowser.cc
+++ b/rtgui/filebrowser.cc
@@ -585,7 +585,6 @@ void FileBrowser::addEntry (FileBrowserEntry* entry)
void FileBrowser::addEntry_ (FileBrowserEntry* entry)
{
- GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
entry->selected = false;
entry->drawable = false;
entry->framed = editedFiles.find (entry->filename) != editedFiles.end();
diff --git a/rtgui/main.cc b/rtgui/main.cc
index 399e705d3..55782cde4 100644
--- a/rtgui/main.cc
+++ b/rtgui/main.cc
@@ -85,11 +85,7 @@ Glib::ustring fname_to_utf8 (const char* fname)
}
// This recursive mutex will be used by gdk_threads_enter/leave instead of a simple mutex
-#ifdef WIN32
-static Glib::RecMutex myGdkRecMutex;
-#else
static Glib::Threads::RecMutex myGdkRecMutex;
-#endif
static void myGdkLockEnter()
{
@@ -209,8 +205,8 @@ int main (int argc, char **argv)
SetConsoleCtrlHandler ( NULL, true );
// Set title of console
char consoletitle[128];
- sprintf (consoletitle, "RawTherapee %s Console", VERSION);
- SetConsoleTitle (consoletitle);
+ sprintf(consoletitle, "RawTherapee %s Console", RTVERSION);
+ SetConsoleTitle(consoletitle);
// increase size of screen buffer
COORD c;
c.X = 200;
@@ -235,7 +231,7 @@ int main (int argc, char **argv)
consoleOpened = true;
// printing RT's version in every case, particularly useful for the 'verbose' mode, but also for the batch processing
- std::cout << "RawTherapee, version " << VERSION << std::endl;
+ std::cout << "RawTherapee, version " << RTVERSION << std::endl;
std::cout << "WARNING: closing this window will close RawTherapee!" << std::endl << std::endl;
}
}
@@ -258,7 +254,7 @@ int main (int argc, char **argv)
if (argc > 1 || options.rtSettings.verbose) {
// printing RT's version in all case, particularly useful for the 'verbose' mode, but also for the batch processing
- std::cout << "RawTherapee, version " << VERSION << std::endl;
+ std::cout << "RawTherapee, version " << RTVERSION << std::endl;
#ifdef WIN32
std::cout << "WARNING: closing this window will close RawTherapee!" << std::endl << std::endl;
#endif
diff --git a/rtgui/options.cc b/rtgui/options.cc
index 50e74e9ad..613f988cf 100644
--- a/rtgui/options.cc
+++ b/rtgui/options.cc
@@ -46,8 +46,7 @@ Glib::ustring Options::rtdir;
Glib::ustring Options::cacheBaseDir;
Options options;
-Glib::ustring versionString = VERSION;
-Glib::ustring versionSuffixString = VERSION_SUFFIX;
+Glib::ustring versionString = RTVERSION;
Glib::ustring paramFileExtension = ".pp3";
Options::Options ()
@@ -1922,7 +1921,7 @@ int Options::saveToFile (Glib::ustring fname)
keyFile.set_string ("General", "Language", language);
keyFile.set_boolean ("General", "LanguageAutoDetect", languageAutoDetect);
keyFile.set_string ("General", "Theme", theme);
- keyFile.set_string ("General", "Version", VERSION);
+ keyFile.set_string ("General", "Version", RTVERSION);
keyFile.set_string ("General", "DarkFramesPath", rtSettings.darkFramesPath);
keyFile.set_string ("General", "FlatFieldsPath", rtSettings.flatFieldsPath);
keyFile.set_boolean ("General", "Verbose", rtSettings.verbose);
@@ -2166,41 +2165,41 @@ int Options::saveToFile (Glib::ustring fname)
keyFile.set_double ("Sounds", "LngEditProcDoneSecs", sndLngEditProcDoneSecs);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpening" , fastexport_bypass_sharpening );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenEdge" , fastexport_bypass_sharpenEdge );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenMicro" , fastexport_bypass_sharpenMicro );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpening", fastexport_bypass_sharpening );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenEdge", fastexport_bypass_sharpenEdge );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenMicro", fastexport_bypass_sharpenMicro );
//keyFile.set_boolean ("Fast Export", "fastexport_bypass_lumaDenoise" , fastexport_bypass_lumaDenoise );
//keyFile.set_boolean ("Fast Export", "fastexport_bypass_colorDenoise" , fastexport_bypass_colorDenoise );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_defringe" , fastexport_bypass_defringe );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrDenoise" , fastexport_bypass_dirpyrDenoise );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_sh_hq" , fastexport_bypass_sh_hq );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrequalizer" , fastexport_bypass_dirpyrequalizer );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_wavelet" , fastexport_bypass_wavelet );
- keyFile.set_string ("Fast Export", "fastexport_raw_bayer_method" , fastexport_raw_bayer_method );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_defringe", fastexport_bypass_defringe );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrDenoise", fastexport_bypass_dirpyrDenoise );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_sh_hq", fastexport_bypass_sh_hq );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrequalizer", fastexport_bypass_dirpyrequalizer );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_wavelet", fastexport_bypass_wavelet );
+ keyFile.set_string ("Fast Export", "fastexport_raw_bayer_method", fastexport_raw_bayer_method );
//keyFile.set_boolean ("Fast Export", "fastexport_bypass_bayer_raw_all_enhance" , fastexport_bypass_raw_bayer_all_enhance );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations" , fastexport_bypass_raw_bayer_dcb_iterations );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance" , fastexport_bypass_raw_bayer_dcb_enhance );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations", fastexport_bypass_raw_bayer_dcb_iterations );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance", fastexport_bypass_raw_bayer_dcb_enhance );
keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations", fastexport_bypass_raw_bayer_lmmse_iterations);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_linenoise" , fastexport_bypass_raw_bayer_linenoise );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh" , fastexport_bypass_raw_bayer_greenthresh );
- keyFile.set_string ("Fast Export", "fastexport_raw_xtrans_method" , fastexport_raw_xtrans_method );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ccSteps" , fastexport_bypass_raw_ccSteps );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ca" , fastexport_bypass_raw_ca );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_df" , fastexport_bypass_raw_df );
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ff" , fastexport_bypass_raw_ff );
- keyFile.set_string ("Fast Export", "fastexport_icm_input" , fastexport_icm_input );
- keyFile.set_string ("Fast Export", "fastexport_icm_working" , fastexport_icm_working );
- keyFile.set_string ("Fast Export", "fastexport_icm_output" , fastexport_icm_output );
- keyFile.set_integer ("Fast Export", "fastexport_icm_output_intent" , fastexport_icm_outputIntent );
- keyFile.set_boolean ("Fast Export", "fastexport_icm_output_bpc" , fastexport_icm_outputBPC );
- keyFile.set_string ("Fast Export", "fastexport_icm_gamma" , fastexport_icm_gamma );
- keyFile.set_boolean ("Fast Export", "fastexport_resize_enabled" , fastexport_resize_enabled );
- keyFile.set_double ("Fast Export", "fastexport_resize_scale" , fastexport_resize_scale );
- keyFile.set_string ("Fast Export", "fastexport_resize_appliesTo" , fastexport_resize_appliesTo );
- keyFile.set_string ("Fast Export", "fastexport_resize_method" , fastexport_resize_method );
- keyFile.set_integer ("Fast Export", "fastexport_resize_dataspec" , fastexport_resize_dataspec );
- keyFile.set_integer ("Fast Export", "fastexport_resize_width" , fastexport_resize_width );
- keyFile.set_integer ("Fast Export", "fastexport_resize_height" , fastexport_resize_height );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_linenoise", fastexport_bypass_raw_bayer_linenoise );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh", fastexport_bypass_raw_bayer_greenthresh );
+ keyFile.set_string ("Fast Export", "fastexport_raw_xtrans_method", fastexport_raw_xtrans_method );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ccSteps", fastexport_bypass_raw_ccSteps );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ca", fastexport_bypass_raw_ca );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_df", fastexport_bypass_raw_df );
+ keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ff", fastexport_bypass_raw_ff );
+ keyFile.set_string ("Fast Export", "fastexport_icm_input", fastexport_icm_input );
+ keyFile.set_string ("Fast Export", "fastexport_icm_working", fastexport_icm_working );
+ keyFile.set_string ("Fast Export", "fastexport_icm_output", fastexport_icm_output );
+ keyFile.set_integer ("Fast Export", "fastexport_icm_output_intent", fastexport_icm_outputIntent );
+ keyFile.set_boolean ("Fast Export", "fastexport_icm_output_bpc", fastexport_icm_outputBPC );
+ keyFile.set_string ("Fast Export", "fastexport_icm_gamma", fastexport_icm_gamma );
+ keyFile.set_boolean ("Fast Export", "fastexport_resize_enabled", fastexport_resize_enabled );
+ keyFile.set_double ("Fast Export", "fastexport_resize_scale", fastexport_resize_scale );
+ keyFile.set_string ("Fast Export", "fastexport_resize_appliesTo", fastexport_resize_appliesTo );
+ keyFile.set_string ("Fast Export", "fastexport_resize_method", fastexport_resize_method );
+ keyFile.set_integer ("Fast Export", "fastexport_resize_dataspec", fastexport_resize_dataspec );
+ keyFile.set_integer ("Fast Export", "fastexport_resize_width", fastexport_resize_width );
+ keyFile.set_integer ("Fast Export", "fastexport_resize_height", fastexport_resize_height );
keyFile.set_string ("Dialogs", "LastIccDir", lastIccDir);
keyFile.set_string ("Dialogs", "LastDarkframeDir", lastDarkframeDir);
diff --git a/rtgui/options.h b/rtgui/options.h
index 49f1865ef..819799af1 100644
--- a/rtgui/options.h
+++ b/rtgui/options.h
@@ -348,7 +348,6 @@ extern Glib::ustring argv0;
extern Glib::ustring argv1;
extern bool simpleEditor;
extern Glib::ustring versionString;
-extern Glib::ustring versionSuffixString;
extern Glib::ustring paramFileExtension;
#endif
diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc
index 0e5b22d74..feb38b6ea 100644
--- a/rtgui/preferences.cc
+++ b/rtgui/preferences.cc
@@ -843,6 +843,7 @@ Gtk::Widget* Preferences::getColorManagementPanel ()
prtBPC->set_active (true);
row = 0;
+ gprinter->attach (*pplabel, 0, row, 1, 1);
gprinter->attach (*prtProfile, 1, row, 1, 1);
++row;
gprinter->attach (*pilabel, 0, row, 1, 1);
@@ -1915,10 +1916,14 @@ void Preferences::fillPreferences ()
if (Glib::file_test (moptions.gimpDir, Glib::FILE_TEST_IS_DIR)) {
gimpDir->set_current_folder (moptions.gimpDir);
+ } else {
+ gimpDir->set_current_folder ("");
}
if (Glib::file_test (moptions.psDir, Glib::FILE_TEST_IS_DIR)) {
psDir->set_current_folder (moptions.psDir);
+ } else {
+ psDir->set_current_folder ("");
}
#elif defined __APPLE__
diff --git a/rtgui/profilestore.cc b/rtgui/profilestore.cc
index 68321e985..6b1171d23 100644
--- a/rtgui/profilestore.cc
+++ b/rtgui/profilestore.cc
@@ -269,7 +269,6 @@ int ProfileStore::findFolderId(const Glib::ustring &path)
*/
const ProfileStoreEntry* ProfileStore::findEntryFromFullPathU(Glib::ustring path)
{
-
if (path.empty()) {
return nullptr;
}
@@ -278,12 +277,18 @@ const ProfileStoreEntry* ProfileStore::findEntryFromFullPathU(Glib::ustring path
return internalDefaultEntry;
}
- size_t lastdot = path.find_last_of ('.');
+ // consistently apply casefold() to make sure dot position is correct
+ const Glib::ustring casefolded_path = path.casefold();
+ const Glib::ustring::size_type lastdot_pos = casefolded_path.find_last_of('.');
- if (lastdot != Glib::ustring::npos && lastdot <= path.size() - 4 && !path.casefold().compare (lastdot, 4, paramFileExtension))
+ if (
+ lastdot_pos != Glib::ustring::npos
+ && lastdot_pos <= casefolded_path.size() - 4
+ && !casefolded_path.compare(lastdot_pos, 4, paramFileExtension)
+ ) {
// removing the extension
- {
- path = path.substr(0, lastdot);
+ // now use dot position without casefold()
+ path = path.substr(0, path.find_last_of('.'));
}
// dir separator may come from options file and may be \ or /, we convert them to G_DIR_SEPARATOR_S
diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc
index a466e8500..b81e8f579 100644
--- a/rtgui/retinex.cc
+++ b/rtgui/retinex.cc
@@ -863,14 +863,16 @@ void Retinex::read (const ProcParams* pp, const ParamsEdited* pedited)
skal->setValue (pp->retinex.skal);
- if(pp->retinex.iter == 1) {
- grad->set_sensitive(false);
- scal->set_sensitive(false);
- grads->set_sensitive(false);
- } else {
- grad->set_sensitive(true);
- scal->set_sensitive(true);
- grads->set_sensitive(true);
+ if (!batchMode) {
+ if(pp->retinex.iter == 1) {
+ grad->set_sensitive(false);
+ scal->set_sensitive(false);
+ grads->set_sensitive(false);
+ } else {
+ grad->set_sensitive(true);
+ scal->set_sensitive(true);
+ grads->set_sensitive(true);
+ }
}
setEnabled (pp->retinex.enabled);
@@ -1138,7 +1140,6 @@ void Retinex::mapMethodChanged()
shadows->hide();
s_tonalwidth->hide();
radius->hide();
-
}
}
@@ -1149,7 +1150,6 @@ void Retinex::mapMethodChanged()
void Retinex::viewMethodChanged()
{
-
if (!batchMode) {
if(viewMethod->get_active_row_number() == 1 || viewMethod->get_active_row_number() == 2) {
//vart->hide();
@@ -1172,7 +1172,6 @@ void Retinex::viewMethodChanged()
gain->hide();
offs->hide();
transmissionCurveEditorG->show();
-
//vart->hide();
curveEditorGH->hide();
} else {
@@ -1373,21 +1372,22 @@ void Retinex::setAdjusterBehavior (bool strAdd, bool neighAdd, bool limdAdd, boo
void Retinex::adjusterChanged (Adjuster* a, double newval)
{
+ if (a==iter && !batchMode) {
+ if(iter->getIntValue() > 1) {
+ scal->set_sensitive(true);
+ grad->set_sensitive(true);
+ grads->set_sensitive(true);
+ } else {
+ scal->set_sensitive(false);
+ grad->set_sensitive(false);
+ grads->set_sensitive(false);
+ }
+ }
+
if (!listener || !getEnabled()) {
return;
}
- if(iter->getTextValue() > "1") {
- scal->set_sensitive(true);
- grad->set_sensitive(true);
- grads->set_sensitive(true);
- } else {
- scal->set_sensitive(false);
- grad->set_sensitive(false);
- grads->set_sensitive(false);
- }
-
-
if (a == neigh) {
listener->panelChanged (EvLneigh, neigh->getTextValue());
} else if (a == str) {
diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc
index 9fc593d22..3c28cf456 100644
--- a/rtgui/rtwindow.cc
+++ b/rtgui/rtwindow.cc
@@ -120,10 +120,6 @@ RTWindow::RTWindow ()
#endif
versionStr = "RawTherapee " + versionString;
- if (!versionSuffixString.empty()) {
- versionStr += " " + versionSuffixString;
- }
-
set_title_decorated("");
set_resizable(true);
set_resize_mode(Gtk::ResizeMode::RESIZE_QUEUE);
@@ -308,30 +304,6 @@ RTWindow::~RTWindow()
}
}
-void RTWindow::findVerNumbers(int* numbers, Glib::ustring versionStr)
-{
- numbers[0] = numbers[1] = numbers[2] = numbers[3] = 0;
- int n = 0;
-
- for (unsigned int i = 0; i < versionStr.length(); i++) {
- char chr = (char)versionStr.at(i);
-
- if (chr >= '0' && chr <= '9') {
- numbers[n] *= 10;
- numbers[n] += (int)(chr - '0');
- } else {
- n++;
-
- if (n > 4) {
- printf("Error: malformed version string; \"%s\" must follow this format: xx.xx.xx.xx. Admitting it's a developer version...\n", versionStr.c_str());
- // Reseting the already found numbers
- numbers[0] = numbers[1] = numbers[2] = numbers[3] = 100;
- return;
- }
- }
- }
-}
-
void RTWindow::on_realize ()
{
Gtk::Window::on_realize ();
@@ -348,38 +320,20 @@ void RTWindow::on_realize ()
// Check if first run of this version, then display the Release Notes text
if (options.version != versionString) {
- int prevVerNbr[4];
- int currVerNbr[4];
- findVerNumbers(prevVerNbr, options.version);
- findVerNumbers(currVerNbr, versionString);
- // Now we can update the version parameter with the right value
+ // Update the version parameter with the right value
options.version = versionString;
- bool showReleaseNotes = false;
+ splash = new Splash (*this);
+ splash->set_transient_for (*this);
+ splash->signal_delete_event().connect( sigc::mem_fun(*this, &RTWindow::splashClosed) );
- // Check if the current version is newer
- if (currVerNbr[0] > prevVerNbr[0]) {
- showReleaseNotes = true;
- } else if (currVerNbr[1] > prevVerNbr[1]) {
- showReleaseNotes = true;
- } else if (currVerNbr[2] > prevVerNbr[2]) {
- showReleaseNotes = true;
- }
-
- if (showReleaseNotes) {
- // this is a first run!
- splash = new Splash (*this);
- splash->set_transient_for (*this);
- splash->signal_delete_event().connect( sigc::mem_fun(*this, &RTWindow::splashClosed) );
-
- if (splash->hasReleaseNotes()) {
- splash->showReleaseNotes();
- splash->show ();
- } else {
- delete splash;
- splash = nullptr;
- }
+ if (splash->hasReleaseNotes()) {
+ splash->showReleaseNotes();
+ splash->show ();
+ } else {
+ delete splash;
+ splash = nullptr;
}
}
}
diff --git a/rtgui/splash.cc b/rtgui/splash.cc
index 18fcc27ac..0c1c56397 100644
--- a/rtgui/splash.cc
+++ b/rtgui/splash.cc
@@ -26,7 +26,6 @@
extern Glib::ustring creditsPath;
extern Glib::ustring licensePath;
extern Glib::ustring versionString;
-extern Glib::ustring versionSuffixString;
SplashImage::SplashImage ()
{
@@ -53,10 +52,6 @@ bool SplashImage::on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr)
int w, h;
Glib::ustring versionStr(versionString);
- if (!versionSuffixString.empty()) {
- versionStr += " " + versionSuffixString;
- }
-
version = create_pango_layout (versionStr);
version->set_text(versionStr);
version->get_pixel_size (w, h);
diff --git a/rtgui/version.h.in b/rtgui/version.h.in
index 03630075b..39ecd6426 100644
--- a/rtgui/version.h.in
+++ b/rtgui/version.h.in
@@ -4,9 +4,7 @@
#ifndef _VERSION_
#define _VERSION_
-#define VERSION "${GIT_VERSION}"
-#define VERSION_SUFFIX "${VERSION_SUFFIX}"
-#define TAGDISTANCE ${GIT_TAGDISTANCE}
+#define RTVERSION "${GIT_DESCRIBE}"
#define CACHEFOLDERNAME "RawTherapee${CACHE_NAME_SUFFIX}"
#endif
diff --git a/tools/buildRT b/tools/buildRT
index 66ed43894..71370e8df 100755
--- a/tools/buildRT
+++ b/tools/buildRT
@@ -83,7 +83,7 @@ while getopts "bc:fnp:s:t:uvh?-" opt; do
" -s " \
"Suffix of destination build directory, so that if you have applied a patch, say \"dustremoval-1.patch\", and want to have RawTherapee compiled to a folder whose name ends with \"_dustremoval1\", you would set \"-s dustremoval1\" (the underscore is automated)." "" \
" -t \"\"" \
- "Suffix displayed next to the RawTherapee version in the window titlebar. It is recommended that you include the changeset of the newest public commit (the one you would see if you cloned the repository anew) so it is clear which commit you applied the patches to. E.g.:" "-t \": ee72ddbcfd4e + dustremoval-1.patch + mustafa ibrahim\"" "" \
+ "Suffix displayed next to the RawTherapee version in the window titlebar. It is recommended that you include the commit of the newest public commit (the one you would see if you cloned the repository anew) so it is clear which commit you applied the patches to. E.g.:" "-t \": ee72ddbcfd4e + dustremoval-1.patch + mustafa ibrahim\"" "" \
" -u" \
"Check for an update of buildRT on GitHub." "" \
" -v" \
@@ -193,7 +193,7 @@ if [[ ! -d "${repo}" ]]; then
currentBranch="$(git branch | grep "*" | sed -e 's/.* \+//')"
rev="$(git rev-list --all --count)"
node="$(git rev-parse --short HEAD)"
- printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Changeset: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n"
+ printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Commit: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n"
alert "Repository cloned succesfully. What would you like to do next?"
printf "%b" "Repository cloned succesfully.\n" "Press 'q' to quit or any other key to continue... "
read -r -n 1
@@ -239,7 +239,7 @@ verLatesttagdistance="$(git describe --tags | sed -e 's/.*-\([0-9]\+\)-.*/\1/')"
currentBranch="$(git branch | grep "*" | sed -e 's/.* \+//')"
rev="$(git rev-list --all --count)"
node="$(git rev-parse --short HEAD)"
-printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Changeset: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n"
+printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Commit: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n"
#--- Print the menu
branches=()
diff --git a/tools/compareRT b/tools/compareRT
index cca18bee6..d701508f7 100755
--- a/tools/compareRT
+++ b/tools/compareRT
@@ -37,8 +37,8 @@ for rtDir in "${rtDirs[@]}"; do
c=1
pp3name=${pp3%.*}
pp3name=${pp3name#*/}
- v+=("$(grep "Changeset:.*" "${rtDir}/AboutThisBuild.txt" | sed "s/Changeset: //")")
- printf "%s\n" "Developing images using RawTherapee changeset ${v[$i]} - ${rtDir}"
+ v+=("$(grep "Commit:.*" "${rtDir}/AboutThisBuild.txt" | sed "s/Commit: //")")
+ printf "%s\n" "Developing images using RawTherapee commit ${v[$i]} - ${rtDir}"
for img in "${imgs[@]}"; do
printf "%s" "${c}/${#imgs[@]} - "
"${rtDir}rawtherapee" -o "${outDir}${img%.*}_${v[i]}_${pp3%.*}.tif" -p "${pp3}" -t -Y -c "$img" | grep Processing
diff --git a/tools/generateReleaseInfo b/tools/generateReleaseInfo
index 79189ad44..ee3493e70 100755
--- a/tools/generateReleaseInfo
+++ b/tools/generateReleaseInfo
@@ -1,12 +1,76 @@
#!/usr/bin/env bash
-gitBranch="`git symbolic-ref --short -q HEAD`"
-gitVersion="`git describe --tags --always`"
-gitLatesttag="`echo $gitVersion | sed 's/-.*//'`"
-gitLatesttagdistance="`echo $gitVersion | sed 's/.*-\(.*\)-g.*/\1/'`"
-gitChangeset="`git rev-parse --verify HEAD`"
+# This script is called from tools/generateSourceTarball
+# It is used to generate a ReleaseInfo.cmake file with commit information which
+# enables compilation without needing to have git installed.
-echo "set(GIT_BRANCH $gitBranch)
-set(GIT_VERSION $gitLatesttag.$gitLatesttagdistance)
-set(GIT_CHANGESET $gitChangeset)
-set(GIT_TAGDISTANCE $gitLatesttagdistance)" > ReleaseInfo.cmake
+rm -f ReleaseInfo.cmake
+# Get version description.
+# Depending on whether you checked out a branch (dev) or a tag (release),
+# "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively.
+gitDescribe="$(git describe --tags --always)"
+
+# Get branch name.
+# Will return empty if you checked out a commit or tag. Empty string handled later.
+gitBranch="$(git symbolic-ref --short -q HEAD)"
+
+# Get commit hash.
+gitCommit="$(git rev-parse --short --verify HEAD)"
+
+# Get commit date, YYYY-MM-DD.
+gitCommitDate="$(git show -s --format=%cd --date=format:%Y-%m-%d)"
+
+# Get number of commits since tagging. This is what gitDescribe uses.
+# Works when checking out branch, tag or commit.
+gitCommitsSinceTag="$(git rev-list --count HEAD --not $(git tag --merged HEAD))"
+
+# Get number of commits since branching.
+# Works when checking out branch, tag or commit.
+gitCommitsSinceBranch="$(git rev-list --count HEAD --not --tags)"
+
+if [[ -z $gitDescribe ]]; then
+ printf '%s\n' "Failed finding commit description, aborting."
+ exit 1
+fi
+if [[ -z $gitBranch ]]; then
+ printf '%s\n' "No branch found. Using commit description as branch name."
+ gitBranch="$gitDescribe"
+fi
+if [[ -z $gitCommit ]]; then
+ printf '%s\n' "Failed finding commit hash, aborting."
+ exit 1
+fi
+if [[ -z $gitCommitDate ]]; then
+ printf '%s\n' "Failed finding commit date, aborting."
+ exit 1
+fi
+
+# Create numeric version.
+# This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion.
+# Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS).
+if [[ -z $gitCommitsSinceTag ]]; then
+ gitVersionNumericBS="0.0.0"
+else
+ gitVersionNumericBS="${gitDescribe%%-*}" # Remove everything after first hyphen.
+ gitVersionNumericBS="${gitVersionNumericBS}.${gitCommitsSinceTag}" # Remove everything until after first hyphen: 5.0
+fi
+
+cat < ReleaseInfo.cmake
+set(GIT_DESCRIBE $gitDescribe)
+set(GIT_BRANCH $gitBranch)
+set(GIT_COMMIT $gitCommit)
+set(GIT_COMMIT_DATE $gitCommitDate)
+set(GIT_COMMITS_SINCE_TAG $gitCommitsSinceTag)
+set(GIT_COMMITS_SINCE_BRANCH $gitCommitsSinceBranch)
+set(GIT_VERSION_NUMERIC_BS $gitVersionNumericBS)
+EOF
+
+printf '%s\n' "Git checkout information:" \
+ " Commit description: ${gitDescribe}" \
+ " Branch: ${gitBranch}" \
+ " Commit: ${gitCommit}" \
+ " Commit date: ${gitCommitDate}" \
+ " Commits since tag: ${gitCommitsSinceTag}" \
+ " Commits since branch: ${gitCommitsSinceBranch}" \
+ " Version (unreliable): ${gitVersionNumericBS}" \
+ ""
diff --git a/tools/generateSourceTarball b/tools/generateSourceTarball
index 98173c00f..022e5646d 100755
--- a/tools/generateSourceTarball
+++ b/tools/generateSourceTarball
@@ -1,17 +1,24 @@
#!/usr/bin/env bash
+# Run from the root of the cloned repository.
+# This script is used to generate a source code tarball which includes commit
+# metadata so that RawTherapee can be compiled without needing to install git.
+# It is meant to be used every time a release is made after creating an
+# annotated tag in git.
+# It is your job to checkout the tag before running this script.
-if [[ ! "$1" ]]; then
- printf "%s\n" "Usage: $0 " "Example: $0 4.2"
- exit
+./tools/generateReleaseInfo
+ret=$?
+if [[ $ret -ne 0 ]]; then
+ printf '%s\n' "Something went wrong while running tools/generateReleaseInfo" "Aborting."
+ exit 1
fi
+desc="$(grep GIT_DESCRIBE ReleaseInfo.cmake)" # Gets whole string: set(GIT_DESCRIBE 5.0-gtk2-1-g96bf9129)
+desc="${desc#*GIT_DESCRIBE }" # Removes front: 5.0-gtk2-1-g96bf9129)
+desc="${desc%)}" # Removes back: 5.0-gtk2-1-g96bf9129
-git checkout "$1" || exit 0
-tools/generateReleaseInfo
-mkdir rawtherapee-"$1"
-mv ReleaseInfo.cmake rawtherapee-"$1"
-#hg archive -X ".hg*" -X "rtgui/config.h" -X "rtgui/version.h" -X "rtdata/rawtherapee.desktop" rawtherapee-"$1".tar
-git archive --format=tar "$1" > rawtherapee-"$1".tar
-tar --append --file=rawtherapee-"$1".tar rawtherapee-"$1"/ReleaseInfo.cmake
-xz -z -9e rawtherapee-"$1".tar
-rm -r rawtherapee-"$1"
-git checkout
+mkdir "rawtherapee-${desc}" || exit 1
+mv ReleaseInfo.cmake "rawtherapee-${desc}" || exit 1
+git archive --format=tar --prefix="rawtherapee-${desc}/" -o "rawtherapee-${desc}.tar" HEAD || exit 1
+tar --append --file="rawtherapee-${desc}.tar" "rawtherapee-${desc}/ReleaseInfo.cmake" || exit 1
+xz -z -9e "rawtherapee-${desc}.tar" || exit 1
+rm -r "rawtherapee-${desc}"
diff --git a/tools/osx/Info.plist.in b/tools/osx/Info.plist.in
index 5b08d63a1..e78db0cc4 100644
--- a/tools/osx/Info.plist.in
+++ b/tools/osx/Info.plist.in
@@ -111,7 +111,7 @@
CFBundleExecutable
rawtherapee
CFBundleGetInfoString
- @version@, Copyright © 2004-2010 Gábor Horváth, 2010-2016 RT dev team
+ @version@, Copyright © 2004-2010 Gábor Horváth, 2010-2017 RawTherapee Development Team
CFBundleIconFile
rawtherapee.icns
CFBundleIdentifier
@@ -127,7 +127,7 @@
CFBundleSignature
????
CFBundleVersion
- @version@
+ @shortVersion@
LSExecutableArchitectures
@arch@
@@ -135,7 +135,7 @@
NSHighResolutionCapable
NSHumanReadableCopyright
- Copyright © 2004-2013 Gábor Horváth
+ Copyright © 2004-2010 Gábor Horváth, 2010-2017 RawTherapee Development Team
UTExportedTypeDeclarations
diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh
index 2803396ba..89e0c23b0 100644
--- a/tools/osx/macosx_bundle.sh
+++ b/tools/osx/macosx_bundle.sh
@@ -33,12 +33,33 @@ fi
# update project version
if test -x "$(which git)" -a -d "${PROJECT_SOURCE_DIR}/.git"; then
- # This is what the version ought to look like to be accurate in the git universe:
- PROJECT_FULL_VERSION="$(git describe --tags --always | sed 's/-g.*//')_$(git symbolic-ref --short -q HEAD)"
- # outputs: 4.2-677-g904467b_master
- # but Apple requirements https://goo.gl/eWDQv6 state we should use this:
- PROJECT_VERSION="$(git describe --tags --always | sed -e 's/-g.*//' -e 's/-/./')"
- # outputs: 4.2.677
+ ### This section is copied from tools/generateReleaseInfo
+ # Get version description.
+ # Depending on whether you checked out a branch (dev) or a tag (release),
+ # "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively.
+ gitDescribe="$(git describe --tags --always)"
+
+ # Apple requires a numeric version of the form n.n.n
+ # https://goo.gl/eWDQv6
+
+ # Get number of commits since tagging. This is what gitDescribe uses.
+ # Works when checking out branch, tag or commit.
+ gitCommitsSinceTag="$(git rev-list --count HEAD --not $(git tag --merged HEAD))"
+
+ # Create numeric version.
+ # This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion.
+ # Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS).
+ if [[ -z $gitCommitsSinceTag ]]; then
+ gitVersionNumericBS="0.0.0"
+ else
+ gitVersionNumericBS="${gitDescribe%%-*}" # Remove everything after first hyphen.
+ gitVersionNumericBS="${gitVersionNumericBS}.${gitCommitsSinceTag}" # Remove everything until after first hyphen: 5.0
+ fi
+ ### Copy end.
+
+ PROJECT_FULL_VERSION="$gitDescribe"
+ PROJECT_VERSION="$gitVersionNumericBS"
+
fi
# if not specify CMAKE_OSX_DEPLOYMENT_TARGET when compiling,
@@ -85,7 +106,7 @@ ETC="${MACOS}"/etc
EXECUTABLE="${MACOS}"/rawtherapee
message "Removing old files"
-rm -rf "${APP}" ${PROJECT_NAME}_*.dmg
+rm -rf "${APP}" "${PROJECT_NAME}_*.dmg"
message "Creating bundle container"
install -d "${RESOURCES}" \
@@ -163,7 +184,7 @@ install -m 0755 "${PROJECT_SOURCE_DATA_DIR}"/executable_loader.in "${MACOS}"/raw
cp "${PROJECT_SOURCE_DATA_DIR}"/{rawtherapee,profile}.icns "${RESOURCES}"
cp "${PROJECT_SOURCE_DATA_DIR}"/PkgInfo "${CONTENTS}"
install -m 0644 "${PROJECT_SOURCE_DATA_DIR}"/Info.plist.in "${CONTENTS}"/Info.plist
-sed -i "" -e "s|@version@|${PROJECT_VERSION}|
+sed -i "" -e "s|@version@|${PROJECT_FULL_VERSION}|
s|@shortVersion@|${PROJECT_VERSION}|
s|@arch@|${arch}|" \
"${CONTENTS}"/Info.plist
diff --git a/tools/win/InnoSetup/WindowsInnoSetup.iss.in b/tools/win/InnoSetup/WindowsInnoSetup.iss.in
index 1ba02590d..55305d5f0 100644
--- a/tools/win/InnoSetup/WindowsInnoSetup.iss.in
+++ b/tools/win/InnoSetup/WindowsInnoSetup.iss.in
@@ -1,30 +1,26 @@
-; Script initially generated by the Inno Setup Script Wizard
-; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
-
-
-
-; This script has to be used by "INNO Setup" (http://www.jrsoftware.org/) to create a setup executable.
-; When the "make install" process ends, you can double click on this file to load it into
-; INNO Setup, then execute it to create the archive. It expect to find all the dependency libs
-; in the root destination folder (the one of the 'make install' process), and the usual 'lib' directory.
-; Please note that all *.dll files will be added, so be carefull on which dll are present in the directory
-; before compiling the INNO Setup script.
+; Script initially generated by the Inno Setup Script Wizard.
+; Documentation: http://www.jrsoftware.org/ishelp/
;
-; It also search for and bundles all "rawtherapee*.exe" files, which mean that you can bundle a Release and
-; a Debug build at the same time (for conveniency), but official downloads must only contain the Release
-; version.
+; This script is used by "Inno Setup" (http://www.jrsoftware.org/) to create a
+; setup executable. When the "make install" process ends, double-click on this
+; file to load it into Inno Setup, then execute it to create the installer. It
+; expects to find all the dependency libs in the root destination folder (the
+; one from the 'make install' process), and the usual 'lib' directory.
+; Note that all *.dll files will be added, so be careful which DLLs are present
+; in the folder before running this script.
;
-; In all cases, you have to bundle at least one file named "rawtherapee.exe", which INNO Setup will require
-; as a default executable to run.
+; This script searches for and bundles all "rawtherapee*.exe" files, allowing
+; you to bundle a "release" as well as a "debug" version at the same time.
+; At least one "rawtherapee.exe" file is required.
;
-; This script is configured to check that the operating system's bit depth is the same than the executable file.
-; Please note that the ia64 architecture is not supported (is it really necessary?)
-
-
+; This script is configured to check that the operating system's bit depth is
+; the same as that of the executable file.
+;
+; The IA-64 architecture is not supported.
#define MyAppName "RawTherapee"
-#define MyAppVersion "${GIT_VERSION}"
-#define MyAppFullVersion "${GIT_VERSION}.${GIT_TAGDISTANCE}"
+#define MyAppVersion "${GIT_DESCRIBE}"
+#define MyAppVersionNumeric "${GIT_NUMERIC_VERSION_BS}"
#define MyAppPublisher "rawtherapee.com"
#define MyAppURL "http://www.rawtherapee.com/"
#define MyAppExeName "rawtherapee.exe"
@@ -39,21 +35,20 @@
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
-AppId={{128459AB-59A7-430A-8BD0-3D8803D50400}
+AppId={#MyAppName}{#MyAppVersion}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
-VersionInfoVersion={#MyAppFullVersion}
-;AppVerName={#MyAppName} {#MyAppVersion}
+VersionInfoVersion={#MyAppVersionNumeric}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
-DefaultDirName={pf}\{#MyAppName}-{#MyAppFullVersion}
-DefaultGroupName={#MyAppName} {#MyAppFullVersion}
+DefaultDirName={pf}\{#MyAppName}\{#MyAppVersion}
+DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile={#MyBuildBasePath}\LICENSE.txt
OutputDir={#MyBuildBasePath}\..\
-OutputBaseFilename={#MyAppName}_{#MySystemName}_{#MyBitDepth}_{#MyAppFullVersion}
+OutputBaseFilename={#MyAppName}_{#MyAppVersion}_{#MySystemName}_{#MyBitDepth}
SetupIconFile={#MySourceBasePath}\rtdata\icons\RT.ico
WizardImageFile={#MySourceBasePath}\tools\win\InnoSetup\installerStrip.bmp
WizardImageBackColor=$2A2A2A
@@ -79,7 +74,6 @@ Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
-Name: "nepali"; MessagesFile: "compiler:Languages\Nepali.islu"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
@@ -97,7 +91,7 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files]
-Source: "{#MyBuildBasePath}\rawtherapee.exe"; DestDir: "{app}"; Flags: ignoreversion
+Source: "{#MyBuildBasePath}\rawtherapee*.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyBuildBasePath}\camconst.json"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyBuildBasePath}\dcpprofiles\*"; DestDir: "{app}\dcpprofiles\"; Flags: ignoreversion recursesubdirs createallsubdirs
;Source: "{#MyBuildBasePath}\etc\*"; DestDir: "{app}\etc\"; Flags: ignoreversion recursesubdirs createallsubdirs
@@ -122,11 +116,11 @@ Source: "{#MyBuildBasePath}\fonts\DroidSansMonoSlashed.ttf"; DestDir: "{fonts}";
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
-Name: "{group}\{#MyAppName} {#MyAppFullVersion}"; Filename: "{app}\{#MyAppExeName}"
+Name: "{group}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
-Name: "{commondesktop}\{#MyAppName}{#MyAppFullVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
-Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName} {#MyAppFullVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
+Name: "{commondesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
+Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
diff --git a/win.cmake b/win.cmake
index b4bbc66a2..2259c144f 100644
--- a/win.cmake
+++ b/win.cmake
@@ -22,9 +22,6 @@ set(CACHE_NAME_SUFFIX "" CACHE STRING "RawTherapee's cache folder suffix (leave
# This line will let you chose the target number, and the associated processor
set(PROC_TARGET_NUMBER 0 CACHE STRING "Target Processor")
-# To add a version suffix (text) after the standard version number, e.g. for patched builds
-set(VERSION_SUFFIX "" CACHE STRING "For patched builds, use this string to add a version suffix (text); KEEP EMPTY FOR RELEASE BULDS")
-
# If you want to force the target processor name when PROC_TARGET_NUMBER = 0 or 2,
# uncomment the next line and replace labelWithoutQuotes by its value
#set (PROC_LABEL labelWithoutQuotes CACHE STRING "Target Processor label")