diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml
index 318a90c28..5c37486f0 100644
--- a/.github/workflows/appimage.yml
+++ b/.github/workflows/appimage.yml
@@ -35,7 +35,7 @@ jobs:
echo "Running apt update."
sudo apt update
echo "Installing dependencies with apt."
- DEBIAN_FRONTEND=noninteractive sudo apt install -y cmake libgtk-3-dev libgtkmm-3.0-dev liblensfun-dev librsvg2-dev liblcms2-dev libfftw3-dev libiptcdata0-dev libtiff5-dev libcanberra-gtk3-dev liblensfun-bin libexpat1-dev libbrotli-dev zlib1g-dev libinih-dev
+ DEBIAN_FRONTEND=noninteractive sudo apt install -y cmake libgtk-3-dev libgtkmm-3.0-dev liblensfun-dev librsvg2-dev liblcms2-dev libfftw3-dev libiptcdata0-dev libtiff5-dev libcanberra-gtk3-dev liblensfun-bin libexpat1-dev libbrotli-dev zlib1g-dev libinih-dev adwaita-icon-theme-full
- name: Install Exiv2
run: |
@@ -51,6 +51,26 @@ jobs:
echo "Building and installing."
sudo make -j$(nproc) install
+ - name: Install Librsvg required min. version
+ # Required min. version is not available for Ubuntu 20.04 LTS (but is for 22.04 LTS) so needs to be built manually
+ run: |
+ LIBRSVG2_VERSION='2.52.2'
+ echo "Cloning Librsvg2 $LIBRSVG2_VERSION."
+ git clone --depth 1 --branch "$LIBRSVG2_VERSION" https://gitlab.gnome.org/GNOME/librsvg.git ext/librsvg2
+
+ echo "Installing required dependencies with apt."
+ DEBIAN_FRONTEND=noninteractive sudo apt install -y rustc cargo gtk-doc-tools libgirepository1.0-dev
+
+ echo "Updating PATH."
+ export PATH="$PATH:/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0"
+
+ echo "Configuring build."
+ cd ext/librsvg2
+ sh autogen.sh
+
+ echo "Building and installing."
+ sudo make install
+
- name: Configure build
run: |
export REF_NAME_FILTERED="$(echo '${{github.ref_name}}' | sed 's/[^A-z0-9_.-]//g')"
@@ -107,6 +127,27 @@ jobs:
echo "Copying Lensfun database to the build directory."
cp -R ~/.local/share/lensfun/updates/* build/AppDir/usr/share/lensfun/
+ - name: Include Adwaita icon theme (partial)
+ run: |
+ mkdir build/AppDir/usr/bin/icons/Adwaita
+ icons_dir=('actions' 'devices' 'mimetypes' 'places' 'status' 'ui' 'devices')
+ for dir in "${icons_dir[@]}"; do
+ find_res=$(find /usr/share/icons/Adwaita -name "${dir}" -type d)
+ if [ -z "$find_res" ]
+ then
+ echo "-Warning: Icons folder '"${dir}"' not found in Adwaita theme."
+ else
+ new_dir=($(echo "$find_res" | awk -F/ '{print $(NF-1)"/"$NF}'))
+ for d in "${new_dir[@]}"; do
+ echo "-Copying '"${d}"' into 'AppDir/usr/bin/icons/Adwaita'."
+ mkdir -p "build/AppDir/usr/bin/icons/Adwaita/${d}"
+ cp -R "/usr/share/icons/Adwaita/${d}/." "build/AppDir/usr/bin/icons/Adwaita/${d}"
+ done
+ fi
+ done
+ echo "-Copying 'index.theme' into 'AppDir/usr/bin/icons/Adwaita'."
+ cp /usr/share/icons/Adwaita/index.theme build/AppDir/usr/bin/icons/Adwaita
+
- name: Restore AppImage tools from cache
id: appimage-tools-cache
uses: actions/cache@v3
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index f57786098..5cb91e47a 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -32,7 +32,7 @@ jobs:
steps:
- name: Checkout source
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
with:
fetch-depth: 0
@@ -77,7 +77,7 @@ jobs:
echo "REF_NAME_FILTERED=$REF_NAME_FILTERED" >> $GITHUB_ENV
- name: Initialize CodeQL
- uses: github/codeql-action/init@v2
+ uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
@@ -90,6 +90,6 @@ jobs:
mv AppDir/usr/bin/share AppDir/usr/
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
+ uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index cdd1f9f31..802b25431 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -17,6 +17,7 @@ on:
env:
publish_pre_dev_labels: '["Lawrence37:libraw-copylib"]'
+
jobs:
build:
runs-on: windows-latest
@@ -130,14 +131,6 @@ jobs:
"symbolic/ui" \
"$BUILD_DIR/share/icons/Adwaita/symbolic"
cp 'index.theme' "$BUILD_DIR/share/icons/Adwaita"
- mkdir -p "$BUILD_DIR/share/icons/Adwaita/cursors"
- cp -r \
- "cursors/plus.cur" \
- "cursors/sb_h_double_arrow.cur" \
- "cursors/sb_left_arrow.cur" \
- "cursors/sb_right_arrow.cur" \
- "cursors/sb_v_double_arrow.cur" \
- "$BUILD_DIR/share/icons/Adwaita/cursors"
cd -
echo "Copying GDK pixbuf."
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f8424acc6..0fb571f9b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -463,13 +463,9 @@ endif()
# Check for libraries:
find_package(PkgConfig)
-if(WIN32)
- pkg_check_modules(GTK REQUIRED gtk+-3.0>=3.22.24)
- pkg_check_modules(GTKMM REQUIRED gtkmm-3.0>=3.22)
-else()
- pkg_check_modules(GTK REQUIRED gtk+-3.0>=3.16)
- pkg_check_modules(GTKMM REQUIRED gtkmm-3.0>=3.16)
-endif()
+# Gtk version shall be greater than 3.24.3 for fixed Hi-DPI support
+pkg_check_modules(GTK REQUIRED gtk+-3.0>=3.24.3)
+pkg_check_modules(GTKMM REQUIRED gtkmm-3.0>=3.24)
if(GTK_VERSION VERSION_GREATER "3.24.1" AND GTK_VERSION VERSION_LESS "3.24.7")
if(GTK_VERSION VERSION_EQUAL "3.24.5")
@@ -496,7 +492,7 @@ pkg_check_modules(GTHREAD REQUIRED gthread-2.0>=2.48)
pkg_check_modules(GOBJECT REQUIRED gobject-2.0>=2.48)
pkg_check_modules(SIGC REQUIRED sigc++-2.0>=2.3.1)
pkg_check_modules(LENSFUN REQUIRED lensfun>=0.2)
-pkg_check_modules(RSVG REQUIRED librsvg-2.0>=2.40)
+pkg_check_modules(RSVG REQUIRED librsvg-2.0>=2.52)
# Require exiv2 >= 0.24 to make sure everything we need is available
#find_package(Exiv2 0.24 REQUIRED)
diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt
index eb4b5e934..7ed0d95c7 100644
--- a/rtdata/CMakeLists.txt
+++ b/rtdata/CMakeLists.txt
@@ -3,14 +3,11 @@ file(GLOB SOUNDFILES "sounds/*")
file(GLOB INPUTICCFILES "iccprofiles/input/*")
file(GLOB OUTPUTICCFILES "iccprofiles/output/*")
file(GLOB DCPFILES "dcpprofiles/*")
-file(GLOB FONTS "fonts/*")
set(PROFILESDIR "profiles")
set(THEMEDIR "themes")
-
-file(GLOB IMG_SVG LIST_DIRECTORIES false "images/svg/*")
-file(GLOB IMG_PNG LIST_DIRECTORIES false "images/png/*")
-file(GLOB IMG_ICO LIST_DIRECTORIES false "images/*")
+set(ICONTHEMEDIR "icons")
+set(IMAGESDIR "images")
if(WIN32)
set(OPTIONSFILE "options/options.win")
@@ -27,14 +24,13 @@ endif()
if(UNIX)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/rawtherapee.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop" DESTINATION ${DESKTOPDIR})
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-16.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-24.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-32.png" DESTINATION "${ICONSDIR}/hicolor/32x32/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-48.png" DESTINATION "${ICONSDIR}/hicolor/48x48/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-64.png" DESTINATION "${ICONSDIR}/hicolor/64x64/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-128.png" DESTINATION "${ICONSDIR}/hicolor/128x128/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-256.png" DESTINATION "${ICONSDIR}/hicolor/256x256/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/rt-logo.svg" DESTINATION "${ICONSDIR}/hicolor/scalable/apps" RENAME rawtherapee.svg)
+ if(BUILD_BUNDLE)
+ install(DIRECTORY "${ICONTHEMEDIR}/hicolor" DESTINATION "${ICONSDIR}")
+ else()
+ # For theme 'hicolor' (containing app icon), 'index.theme' shall not be installed for Linux build with 'BUILD_BUNDLE=OFF' option
+ # (to avoid conflict with existing 'index.theme' distro file)
+ install(DIRECTORY "${ICONTHEMEDIR}/hicolor" DESTINATION "${ICONSDIR}" PATTERN "index.theme" EXCLUDE)
+ endif()
endif()
install(FILES ${LANGUAGEFILES} DESTINATION "${DATADIR}/languages")
@@ -43,16 +39,11 @@ install(FILES ${INPUTICCFILES} DESTINATION "${DATADIR}/iccprofiles/input")
install(FILES ${OUTPUTICCFILES} DESTINATION "${DATADIR}/iccprofiles/output")
install(FILES ${DCPFILES} DESTINATION "${DATADIR}/dcpprofiles")
install(FILES ${OPTIONSFILE} DESTINATION "${DATADIR}" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ RENAME options)
-if(WIN32)
- install(FILES ${FONTS} DESTINATION "${DATADIR}/fonts")
-endif()
install(DIRECTORY "${PROFILESDIR}" DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.pp3")
install(DIRECTORY "${THEMEDIR}" DESTINATION "${DATADIR}")
-
-install(FILES ${IMG_SVG} DESTINATION "${DATADIR}/images")
-install(FILES ${IMG_PNG} DESTINATION "${DATADIR}/images")
-install(FILES ${IMG_ICO} DESTINATION "${DATADIR}/images")
+install(DIRECTORY "${ICONTHEMEDIR}/rawtherapee" DESTINATION "${DATADIR}/${ICONTHEMEDIR}")
+install(DIRECTORY "${IMAGESDIR}" DESTINATION "${DATADIR}")
if(APPLE)
# CMake escapes first item quote character. Do not remove 'DUMMY_VARIABLE='
diff --git a/rtdata/fonts/DroidSansMonoSlashed.ttf b/rtdata/fonts/DroidSansMonoSlashed.ttf
deleted file mode 100644
index 8c44b47ed..000000000
Binary files a/rtdata/fonts/DroidSansMonoSlashed.ttf and /dev/null differ
diff --git a/rtdata/images/png/rawtherapee-logo-128.png b/rtdata/icons/hicolor/128x128/apps/rawtherapee.png
similarity index 100%
rename from rtdata/images/png/rawtherapee-logo-128.png
rename to rtdata/icons/hicolor/128x128/apps/rawtherapee.png
diff --git a/rtdata/images/png/rawtherapee-logo-16.png b/rtdata/icons/hicolor/16x16/apps/rawtherapee.png
similarity index 100%
rename from rtdata/images/png/rawtherapee-logo-16.png
rename to rtdata/icons/hicolor/16x16/apps/rawtherapee.png
diff --git a/rtdata/images/png/rawtherapee-logo-24.png b/rtdata/icons/hicolor/24x24/apps/rawtherapee.png
similarity index 100%
rename from rtdata/images/png/rawtherapee-logo-24.png
rename to rtdata/icons/hicolor/24x24/apps/rawtherapee.png
diff --git a/rtdata/images/png/rawtherapee-logo-256.png b/rtdata/icons/hicolor/256x256/apps/rawtherapee.png
similarity index 100%
rename from rtdata/images/png/rawtherapee-logo-256.png
rename to rtdata/icons/hicolor/256x256/apps/rawtherapee.png
diff --git a/rtdata/images/png/rawtherapee-logo-32.png b/rtdata/icons/hicolor/32x32/apps/rawtherapee.png
similarity index 100%
rename from rtdata/images/png/rawtherapee-logo-32.png
rename to rtdata/icons/hicolor/32x32/apps/rawtherapee.png
diff --git a/rtdata/images/png/rawtherapee-logo-48.png b/rtdata/icons/hicolor/48x48/apps/rawtherapee.png
similarity index 100%
rename from rtdata/images/png/rawtherapee-logo-48.png
rename to rtdata/icons/hicolor/48x48/apps/rawtherapee.png
diff --git a/rtdata/images/png/rawtherapee-logo-64.png b/rtdata/icons/hicolor/64x64/apps/rawtherapee.png
similarity index 100%
rename from rtdata/images/png/rawtherapee-logo-64.png
rename to rtdata/icons/hicolor/64x64/apps/rawtherapee.png
diff --git a/rtdata/icons/hicolor/index.theme b/rtdata/icons/hicolor/index.theme
new file mode 100644
index 000000000..1215a9989
--- /dev/null
+++ b/rtdata/icons/hicolor/index.theme
@@ -0,0 +1,48 @@
+[Icon Theme]
+Name=Hicolor
+Comment=RawTherapee app icon
+Hidden=true
+Directories=16x16/apps,24x24/apps,32x32/apps,48x48/apps,64x64/apps,128x128/apps,256x256/apps,scalable/apps
+
+
+[16x16/apps]
+Size=16
+Context=ApplicationIcons
+Type=Threshold
+
+[24x24/apps]
+Size=24
+Context=ApplicationIcons
+Type=Threshold
+
+[32x32/apps]
+Size=32
+Context=ApplicationIcons
+Type=Threshold
+
+[48x48/apps]
+Size=48
+Context=ApplicationIcons
+Type=Threshold
+
+[64x64/apps]
+Size=64
+Context=ApplicationIcons
+Type=Threshold
+
+[128x128/apps]
+Size=128
+Context=ApplicationIcons
+Type=Threshold
+
+[256x256/apps]
+Size=256
+Context=ApplicationIcons
+Type=Threshold
+
+[scalable/apps]
+MinSize=16
+Size=128
+MaxSize=256
+Context=ApplicationIcons
+Type=Scalable
diff --git a/rtdata/images/rt-logo.svg b/rtdata/icons/hicolor/scalable/apps/rawtherapee.svg
similarity index 100%
rename from rtdata/images/rt-logo.svg
rename to rtdata/icons/hicolor/scalable/apps/rawtherapee.svg
diff --git a/rtdata/images/png/empty.png b/rtdata/icons/rawtherapee/24x24/apps/empty.png
similarity index 100%
rename from rtdata/images/png/empty.png
rename to rtdata/icons/rawtherapee/24x24/apps/empty.png
diff --git a/rtdata/icons/rawtherapee/index.theme b/rtdata/icons/rawtherapee/index.theme
new file mode 100644
index 000000000..1095b2219
--- /dev/null
+++ b/rtdata/icons/rawtherapee/index.theme
@@ -0,0 +1,18 @@
+[Icon Theme]
+Name=RawTherapee
+Comment=RawTherapee icon theme
+Inherits=Adwaita
+Directories=24x24/apps,scalable/apps
+
+
+[24x24/apps]
+Size=24
+Context=Applications
+Type=Threshold
+
+[scalable/apps]
+MinSize=16
+Size=128
+MaxSize=256
+Context=Applications
+Type=Scalable
diff --git a/rtdata/icons/rawtherapee/scalable/apps/add-small.svg b/rtdata/icons/rawtherapee/scalable/apps/add-small.svg
new file mode 100644
index 000000000..9d5cb01c6
--- /dev/null
+++ b/rtdata/icons/rawtherapee/scalable/apps/add-small.svg
@@ -0,0 +1,77 @@
+
+
+
+
diff --git a/rtdata/icons/rawtherapee/scalable/apps/add.svg b/rtdata/icons/rawtherapee/scalable/apps/add.svg
new file mode 100644
index 000000000..b8c21fdae
--- /dev/null
+++ b/rtdata/icons/rawtherapee/scalable/apps/add.svg
@@ -0,0 +1,74 @@
+
+
+
+
diff --git a/rtdata/images/svg/aperture.svg b/rtdata/icons/rawtherapee/scalable/apps/aperture.svg
similarity index 55%
rename from rtdata/images/svg/aperture.svg
rename to rtdata/icons/rawtherapee/scalable/apps/aperture.svg
index 5820ee283..c08244c62 100644
--- a/rtdata/images/svg/aperture.svg
+++ b/rtdata/icons/rawtherapee/scalable/apps/aperture.svg
@@ -2,68 +2,16 @@
diff --git a/rtdata/images/svg/arrow-down-small.svg b/rtdata/icons/rawtherapee/scalable/apps/arrow-down-small.svg
similarity index 62%
rename from rtdata/images/svg/arrow-down-small.svg
rename to rtdata/icons/rawtherapee/scalable/apps/arrow-down-small.svg
index d17ba4329..2911187fc 100644
--- a/rtdata/images/svg/arrow-down-small.svg
+++ b/rtdata/icons/rawtherapee/scalable/apps/arrow-down-small.svg
@@ -2,181 +2,122 @@