From 37deb083c57937682cbc8d51ce5921cc8367318f Mon Sep 17 00:00:00 2001 From: rfranke Date: Sun, 29 Dec 2019 16:57:41 +0100 Subject: [PATCH 1/8] Expand subfolders in directory browser, see #3198 --- rtgui/dirbrowser.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index 669528ac1..ca281f80e 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -383,8 +383,10 @@ void DirBrowser::row_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewC Glib::ustring dname = dirTreeModel->get_iter (path)->get_value (dtColumns.dirname); - if (Glib::file_test (dname, Glib::FILE_TEST_IS_DIR)) + if (Glib::file_test (dname, Glib::FILE_TEST_IS_DIR)) { dirSelectionSignal (dname, Glib::ustring()); + dirtree->expand_row(path, false); + } } Gtk::TreePath DirBrowser::expandToDir (const Glib::ustring& absDirPath) From 3020f7dba4c75eb8477e3d754957e4315c5c7fea Mon Sep 17 00:00:00 2001 From: rfranke Date: Mon, 30 Dec 2019 06:00:31 +0100 Subject: [PATCH 2/8] Expand directories without subdirectories as well This lets the triangle disappear to indicate an expanded state with no subdirectories. --- rtgui/dirbrowser.cc | 46 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index ca281f80e..10ef61566 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -293,36 +293,32 @@ void DirBrowser::row_expanded (const Gtk::TreeModel::iterator& iter, const Gtk:: auto dir = Gio::File::create_for_path (iter->get_value (dtColumns.dirname)); auto subDirs = listSubDirs (dir, options.fbShowHidden); - if (subDirs.empty()) { - dirtree->collapse_row(path); - } else { - Gtk::TreeNodeChildren children = iter->children(); - std::list forErase(children.begin(), children.end()); + Gtk::TreeNodeChildren children = iter->children(); + std::list forErase(children.begin(), children.end()); - std::sort (subDirs.begin (), subDirs.end (), [] (const Glib::ustring& firstDir, const Glib::ustring& secondDir) - { - switch (options.dirBrowserSortType) { - default: - case Gtk::SORT_ASCENDING: - return firstDir < secondDir; - case Gtk::SORT_DESCENDING: - return firstDir > secondDir; - } - }); - - for (auto it = subDirs.begin(), end = subDirs.end(); it != end; ++it) { - addDir(iter, *it); + std::sort (subDirs.begin (), subDirs.end (), [] (const Glib::ustring& firstDir, const Glib::ustring& secondDir) + { + switch (options.dirBrowserSortType) { + default: + case Gtk::SORT_ASCENDING: + return firstDir < secondDir; + case Gtk::SORT_DESCENDING: + return firstDir > secondDir; } + }); - for (auto it = forErase.begin(), end = forErase.end(); it != end; ++it) { - dirTreeModel->erase(*it); - } - - dirTreeModel->set_sort_column(prevSortColumn, prevSortType); - - expandSuccess = true; + for (auto it = subDirs.begin(), end = subDirs.end(); it != end; ++it) { + addDir(iter, *it); } + for (auto it = forErase.begin(), end = forErase.end(); it != end; ++it) { + dirTreeModel->erase(*it); + } + + dirTreeModel->set_sort_column(prevSortColumn, prevSortType); + + expandSuccess = true; + Glib::RefPtr monitor = dir->monitor_directory (); iter->set_value (dtColumns.monitor, monitor); monitor->signal_changed().connect (sigc::bind(sigc::mem_fun(*this, &DirBrowser::file_changed), iter, dir->get_parse_name())); From f23cf0808ba86d98c850101b72d28ba616fc4d15 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Sat, 4 Jan 2020 08:53:43 -0800 Subject: [PATCH 3/8] macOS: accept -DLOCAL_PREFIX and default to /usr --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d7368f115..58ae27d23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -263,7 +263,11 @@ if(APPLE) if("${NOTARY}") set(NOTARY "${NOTARY}" CACHE STRING "Notarization Identity") endif() - + if("${LOCAL_PREFIX}") + set(LOCAL_PREFIX "${LOCAL_PREFIX}" CACHE STRING "macos/gtk parent directory, ie. /usr or /opt") + else() + set(LOCAL_PREFIX "/usr") + endif() endif() # Enforce absolute paths for non-bundle builds: From f3d4d8027be0c0787cc501965a2af97d651ccafc Mon Sep 17 00:00:00 2001 From: Benitoite Date: Sat, 4 Jan 2020 08:57:06 -0800 Subject: [PATCH 4/8] macOS: use $LOCAL_PREFIX for gtk locations --- tools/osx/macosx_bundle.sh | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 3958326e8..76dbe182b 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -92,6 +92,8 @@ GTK_PREFIX: ${GTK_PREFIX} PWD: ${PWD} __EOS__ +LOCAL_PREFIX="$(cmake .. -LA -N | grep "LOCAL_PREFIX" | cut -d "=" -f2)" + APP="${PROJECT_NAME}.app" CONTENTS="${APP}/Contents" RESOURCES="${CONTENTS}/Resources" @@ -99,7 +101,7 @@ MACOS="${CONTENTS}/MacOS" LIB="${CONTENTS}/Frameworks" ETC="${RESOURCES}/etc" EXECUTABLE="${MACOS}/rawtherapee" -GDK_PREFIX="/usr/local/opt/gdk-pixbuf" +GDK_PREFIX="${LOCAL_PREFIX}/opt/gdk-pixbuf" msg "Removing old files:" rm -rf "${APP}" "${PROJECT_NAME}_*.dmg" "*zip" @@ -141,45 +143,45 @@ rm -r "${LIB}"/gdk-pixbuf-2.0 sed -i "" -e "s|${PWD}/RawTherapee.app/Contents/|/Applications/RawTherapee.app/Contents/|" "${ETC}/gtk-3.0/gdk-pixbuf.loaders" "${ETC}/gtk-3.0/gtk.immodules" mkdir -p ${RESOURCES}/share/glib-2.0 -cp -pRL {"/usr/local","${RESOURCES}"}/share/glib-2.0/schemas -"/usr/local/bin/glib-compile-schemas" "${RESOURCES}/share/glib-2.0/schemas" +cp -pRL {"${LOCAL_PREFIX}","${RESOURCES}"}/share/glib-2.0/schemas +"${LOCAL_PREFIX}/bin/glib-compile-schemas" "${RESOURCES}/share/glib-2.0/schemas" msg "Copying shared files from ${GTK_PREFIX}:" -cp -pRL {"/usr/local","${RESOURCES}"}/share/mime +cp -pRL {"${LOCAL_PREFIX}","${RESOURCES}"}/share/mime # GTK3 themes -ditto {"/usr/local","${RESOURCES}"}/share/themes/Mac/gtk-3.0/gtk-keys.css -ditto {"/usr/local","${RESOURCES}"}/share/themes/Default/gtk-3.0/gtk-keys.css +ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/themes/Mac/gtk-3.0/gtk-keys.css +ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/themes/Default/gtk-3.0/gtk-keys.css # Adwaita icons iconfolders=("16x16/actions" "16x16/devices" "16x16/mimetypes" "16x16/places" "16x16/status" "48x48/devices") for f in "${iconfolders[@]}"; do mkdir -p ${RESOURCES}/share/icons/Adwaita/${f} - cp /usr/local/share/icons/Adwaita/${f}/* "${RESOURCES}"/share/icons/Adwaita/${f} + cp ${LOCAL_PREFIX}/share/icons/Adwaita/${f}/* "${RESOURCES}"/share/icons/Adwaita/${f} done -ditto {"/usr/local","${RESOURCES}"}/share/icons/Adwaita/index.theme -"/usr/local/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" +ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/icons/Adwaita/index.theme +"${LOCAL_PREFIX}/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" # Copy libjpeg-turbo into the app bundle -cp /usr/local/lib/libjpeg.*.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/lib/libjpeg.*.dylib "${CONTENTS}/Frameworks" # Copy libexpat into the app bundle (which is keg-only) -cp /usr/local/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks" +#cp ${LOCAL_PREFIX}/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks" # Copy libz into the app bundle cp /usr/lib/libz.1.dylib "${CONTENTS}/Frameworks" # Copy libtiff into the app bundle -cp /usr/local/lib/libtiff.5.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/lib/libtiff.5.dylib "${CONTENTS}/Frameworks" # Copy the Lensfun database into the app bundle mkdir -p "${RESOURCES}/share/lensfun" -cp /usr/local/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" +cp ${LOCAL_PREFIX}/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" # Copy liblensfun to Frameworks -cp /usr/local/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks" # Copy libomp to Frameworks -cp /usr/local/lib/libomp.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/lib/libomp.dylib "${CONTENTS}/Frameworks" # Install names find -E "${CONTENTS}" -type f -regex '.*/(rawtherapee-cli|rawtherapee|.*\.(dylib|so))' | while read -r x; do From d420acddedb865707c91883b470e0b7772fb49b1 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Sat, 4 Jan 2020 12:16:55 -0800 Subject: [PATCH 5/8] macOS: /local after $LOCAL_PREFIX --- tools/osx/macosx_bundle.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 76dbe182b..776238bac 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -101,7 +101,7 @@ MACOS="${CONTENTS}/MacOS" LIB="${CONTENTS}/Frameworks" ETC="${RESOURCES}/etc" EXECUTABLE="${MACOS}/rawtherapee" -GDK_PREFIX="${LOCAL_PREFIX}/opt/gdk-pixbuf" +GDK_PREFIX="${LOCAL_PREFIX}/local/opt/gdk-pixbuf" msg "Removing old files:" rm -rf "${APP}" "${PROJECT_NAME}_*.dmg" "*zip" @@ -143,45 +143,45 @@ rm -r "${LIB}"/gdk-pixbuf-2.0 sed -i "" -e "s|${PWD}/RawTherapee.app/Contents/|/Applications/RawTherapee.app/Contents/|" "${ETC}/gtk-3.0/gdk-pixbuf.loaders" "${ETC}/gtk-3.0/gtk.immodules" mkdir -p ${RESOURCES}/share/glib-2.0 -cp -pRL {"${LOCAL_PREFIX}","${RESOURCES}"}/share/glib-2.0/schemas -"${LOCAL_PREFIX}/bin/glib-compile-schemas" "${RESOURCES}/share/glib-2.0/schemas" +cp -pRL {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/glib-2.0/schemas +"${LOCAL_PREFIX}/local/bin/glib-compile-schemas" "${RESOURCES}/share/glib-2.0/schemas" msg "Copying shared files from ${GTK_PREFIX}:" -cp -pRL {"${LOCAL_PREFIX}","${RESOURCES}"}/share/mime +cp -pRL {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/mime # GTK3 themes -ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/themes/Mac/gtk-3.0/gtk-keys.css -ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/themes/Default/gtk-3.0/gtk-keys.css +ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/themes/Mac/gtk-3.0/gtk-keys.css +ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/themes/Default/gtk-3.0/gtk-keys.css # Adwaita icons iconfolders=("16x16/actions" "16x16/devices" "16x16/mimetypes" "16x16/places" "16x16/status" "48x48/devices") for f in "${iconfolders[@]}"; do mkdir -p ${RESOURCES}/share/icons/Adwaita/${f} - cp ${LOCAL_PREFIX}/share/icons/Adwaita/${f}/* "${RESOURCES}"/share/icons/Adwaita/${f} + cp ${LOCAL_PREFIX}/local/share/icons/Adwaita/${f}/* "${RESOURCES}"/share/icons/Adwaita/${f} done -ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/icons/Adwaita/index.theme -"${LOCAL_PREFIX}/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" +ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/icons/Adwaita/index.theme +"${LOCAL_PREFIX}/local/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" # Copy libjpeg-turbo into the app bundle -cp ${LOCAL_PREFIX}/lib/libjpeg.*.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/local/local/lib/libjpeg.*.dylib "${CONTENTS}/Frameworks" # Copy libexpat into the app bundle (which is keg-only) -#cp ${LOCAL_PREFIX}/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks" +#cp ${LOCAL_PREFIX}/local/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks" # Copy libz into the app bundle cp /usr/lib/libz.1.dylib "${CONTENTS}/Frameworks" # Copy libtiff into the app bundle -cp ${LOCAL_PREFIX}/lib/libtiff.5.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/local/lib/libtiff.5.dylib "${CONTENTS}/Frameworks" # Copy the Lensfun database into the app bundle mkdir -p "${RESOURCES}/share/lensfun" -cp ${LOCAL_PREFIX}/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" +cp ${LOCAL_PREFIX}/local/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" # Copy liblensfun to Frameworks -cp ${LOCAL_PREFIX}/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/local/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks" # Copy libomp to Frameworks -cp ${LOCAL_PREFIX}/lib/libomp.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/local/lib/libomp.dylib "${CONTENTS}/Frameworks" # Install names find -E "${CONTENTS}" -type f -regex '.*/(rawtherapee-cli|rawtherapee|.*\.(dylib|so))' | while read -r x; do From 5ca8c85334a1293d483508a09f04f872166b9145 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Sat, 4 Jan 2020 12:36:28 -0800 Subject: [PATCH 6/8] macOS: one fewer /local for libjpeg --- tools/osx/macosx_bundle.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 776238bac..200e5689e 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -162,7 +162,7 @@ ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/icons/Adwaita/index.theme "${LOCAL_PREFIX}/local/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" # Copy libjpeg-turbo into the app bundle -cp ${LOCAL_PREFIX}/local/local/lib/libjpeg.*.dylib "${CONTENTS}/Frameworks" +cp ${LOCAL_PREFIX}/local/lib/libjpeg.*.dylib "${CONTENTS}/Frameworks" # Copy libexpat into the app bundle (which is keg-only) #cp ${LOCAL_PREFIX}/local/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks" From aaab85fbed1100aaff4f425a3ac0a7ae286921e9 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Sat, 4 Jan 2020 16:06:13 -0800 Subject: [PATCH 7/8] macOS: LOCAL_PREFIX default/better negative logic --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 58ae27d23..bbc129eae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -264,8 +264,8 @@ if(APPLE) set(NOTARY "${NOTARY}" CACHE STRING "Notarization Identity") endif() if("${LOCAL_PREFIX}") - set(LOCAL_PREFIX "${LOCAL_PREFIX}" CACHE STRING "macos/gtk parent directory, ie. /usr or /opt") - else() + set(LOCAL_PREFIX "${LOCAL_PREFIX}" CACHE STRING "macos/gtk parent directory ie /usr or /opt") + elseif(NOT DEFINED LOCAL_PREFIX) set(LOCAL_PREFIX "/usr") endif() endif() From 136c67f0832acf4ccfa8a481e492032081bf2558 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Fri, 17 Jan 2020 10:15:16 -0800 Subject: [PATCH 8/8] macOS: libexpat handling --- tools/osx/macosx_bundle.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 200e5689e..cb8839455 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -93,7 +93,8 @@ PWD: ${PWD} __EOS__ LOCAL_PREFIX="$(cmake .. -LA -N | grep "LOCAL_PREFIX" | cut -d "=" -f2)" - +EXPATLIB="$(cmake .. -LA -N | grep "pkgcfg_lib_EXPAT_expat" | cut -d "=" -f2)" + APP="${PROJECT_NAME}.app" CONTENTS="${APP}/Contents" RESOURCES="${CONTENTS}/Resources" @@ -165,7 +166,8 @@ ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/icons/Adwaita/index.theme cp ${LOCAL_PREFIX}/local/lib/libjpeg.*.dylib "${CONTENTS}/Frameworks" # Copy libexpat into the app bundle (which is keg-only) -#cp ${LOCAL_PREFIX}/local/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks" + +if [[ -d /usr/local/Cellar/expat ]]; then cp /usr/local/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks"; else cp "${EXPATLIB}" "${CONTENTS}/Frameworks"; fi # Copy libz into the app bundle cp /usr/lib/libz.1.dylib "${CONTENTS}/Frameworks"