git: f788ec6d2e36 - main - cad/PrusaSlicer: backport fix from upstream
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 03 Dec 2022 07:05:56 UTC
The branch main has been updated by mizhka (src committer):
URL: https://cgit.FreeBSD.org/ports/commit/?id=f788ec6d2e3641a01e2207a207a797463a72b28a
commit f788ec6d2e3641a01e2207a207a797463a72b28a
Author: Michael Zhilin <mizhka@FreeBSD.org>
AuthorDate: 2022-12-03 06:59:56 +0000
Commit: Michael Zhilin <mizhka@FreeBSD.org>
CommitDate: 2022-12-03 07:05:30 +0000
cad/PrusaSlicer: backport fix from upstream
- The app is crashing when tries to set default language.
- Make QA tests a bit more happy
PR: 267883
Submitted by: michal.zielonka.8001@gmail.com
---
cad/PrusaSlicer/Makefile | 21 ++++++++++----
.../files/patch-src_slic3r_GUI_GUI__App.cpp | 32 ++++++++++++++++++++--
2 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/cad/PrusaSlicer/Makefile b/cad/PrusaSlicer/Makefile
index 8b94985334b7..92e0df80a298 100644
--- a/cad/PrusaSlicer/Makefile
+++ b/cad/PrusaSlicer/Makefile
@@ -1,4 +1,5 @@
PORTNAME= PrusaSlicer
+PORTREVISION= 1
DISTVERSIONPREFIX=version_
DISTVERSION= 2.5.0
CATEGORIES= cad
@@ -23,17 +24,27 @@ LIB_DEPENDS= libtbb.so:devel/onetbb \
libgmp.so:math/gmp \
libmpfr.so:math/mpfr \
libdbus-1.so:devel/dbus \
- libpng.so:graphics/png
+ libpng.so:graphics/png \
+ libTKXDESTEP.so:cad/opencascade \
+ libtiff.so:graphics/tiff \
+ libfontconfig.so:x11-fonts/fontconfig \
+ libfreeimage.so:graphics/freeimage \
+ libfreetype.so:print/freetype2 \
+ libavcodec.so:multimedia/ffmpeg \
+ libharfbuzz.so:print/harfbuzz
-USES= cmake cpe desktop-file-utils eigen:3 gettext gl iconv pkgconfig
+USES= cmake cpe desktop-file-utils eigen:3 gettext gl pkgconfig jpeg iconv gnome xorg
CPE_VENDOR= prusa3d
-CMAKE_ARGS+= -DwxWidgets_CONFIG_EXECUTABLE="${WX_CONFIG}" \
- -DSLIC3R_GTK=3 \
- -DSLIC3R_FHS=1
USE_GITHUB= yes
GH_ACCOUNT= prusa3d
USE_GL= gl glu glew
+USE_GNOME= gtk30 pango atk cairo gdkpixbuf2 glib20
USE_WX= 3.2
+USE_XORG= x11
+
+CMAKE_ARGS+= -DwxWidgets_CONFIG_EXECUTABLE="${WX_CONFIG}" \
+ -DSLIC3R_GTK=3 \
+ -DSLIC3R_FHS=1
PORTDATA= *
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__App.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__App.cpp
index 16c1ad89dcd4..1fa790d4d704 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__App.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__App.cpp
@@ -1,6 +1,6 @@
--- src/slic3r/GUI/GUI_App.cpp.orig 2022-09-06 07:09:19 UTC
+++ src/slic3r/GUI/GUI_App.cpp
-@@ -2072,7 +2072,7 @@ bool GUI_App::load_language(wxString language, bool in
+@@ -2072,21 +2072,24 @@ bool GUI_App::load_language(wxString language, bool in
BOOST_LOG_TRIVIAL(trace) << boost::format("System language detected (user locales and such): %1%") % m_language_info_system->CanonicalName.ToUTF8().data();
}
}
@@ -9,7 +9,35 @@
// Allocating a temporary locale will switch the default wxTranslations to its internal wxTranslations instance.
wxLocale temp_locale;
// Set the current translation's language to default, otherwise GetBestTranslation() may not work (see the wxWidgets source code).
-@@ -2096,6 +2096,7 @@ bool GUI_App::load_language(wxString language, bool in
+- wxTranslations::Get()->SetLanguage(wxLANGUAGE_DEFAULT);
+- // Let the wxFileTranslationsLoader enumerate all translation dictionaries for PrusaSlicer
+- // and try to match them with the system specific "preferred languages".
+- // There seems to be a support for that on Windows and OSX, while on Linuxes the code just returns wxLocale::GetSystemLanguage().
+- // The last parameter gets added to the list of detected dictionaries. This is a workaround
+- // for not having the English dictionary. Let's hope wxWidgets of various versions process this call the same way.
+- wxString best_language = wxTranslations::Get()->GetBestTranslation(SLIC3R_APP_KEY, wxLANGUAGE_ENGLISH);
+- if (! best_language.IsEmpty()) {
+- m_language_info_best = wxLocale::FindLanguageInfo(best_language);
+- BOOST_LOG_TRIVIAL(trace) << boost::format("Best translation language detected (may be different from user locales): %1%") % m_language_info_best->CanonicalName.ToUTF8().data();
+- }
++ wxTranslations *wx_trp = wxTranslations::Get();
++ if (wx_trp) {
++ wxTranslations::Get()->SetLanguage(wxLANGUAGE_DEFAULT);
++ // Let the wxFileTranslationsLoader enumerate all translation dictionaries for PrusaSlicer
++ // and try to match them with the system specific "preferred languages".
++ // There seems to be a support for that on Windows and OSX, while on Linuxes the code just returns wxLocale::GetSystemLanguage().
++ // The last parameter gets added to the list of detected dictionaries. This is a workaround
++ // for not having the English dictionary. Let's hope wxWidgets of various versions process this call the same way.
++ wxString best_language = wxTranslations::Get()->GetBestTranslation(SLIC3R_APP_KEY, wxLANGUAGE_ENGLISH);
++ if (! best_language.IsEmpty()) {
++ m_language_info_best = wxLocale::FindLanguageInfo(best_language);
++ BOOST_LOG_TRIVIAL(trace) << boost::format("Best translation language detected (may be different from user locales): %1%") % m_language_info_best->CanonicalName.ToUTF8().data();
++ }
++ }
+ #ifdef __linux__
+ wxString lc_all;
+ if (wxGetEnv("LC_ALL", &lc_all) && ! lc_all.IsEmpty()) {
+@@ -2096,6 +2099,7 @@ bool GUI_App::load_language(wxString language, bool in
}
#endif
}