mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-14 11:45:59 +08:00
Merge tag 'version_2.2.0-alpha2'
version_2.2.0-alpha2
This commit is contained in:
commit
71ba7a0367
@ -398,13 +398,27 @@ target_include_directories(cereal INTERFACE include)
|
||||
|
||||
# l10n
|
||||
set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/localization")
|
||||
add_custom_target(pot
|
||||
add_custom_target(gettext_make_pot
|
||||
COMMAND xgettext --keyword=L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --debug
|
||||
-f "${L10N_DIR}/list.txt"
|
||||
-o "${L10N_DIR}/Slic3r++.pot"
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
COMMENT "Generate pot file from strings in the source tree"
|
||||
)
|
||||
add_custom_target(gettext_po_to_mo
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
COMMENT "Generate localization po files (binary) from mo files (texts)"
|
||||
)
|
||||
file(GLOB L10N_PO_FILES "${L10N_DIR}/*/PrusaSlicer*.po")
|
||||
foreach(po_file ${L10N_PO_FILES})
|
||||
GET_FILENAME_COMPONENT(po_dir "${po_file}" DIRECTORY)
|
||||
SET(mo_file "${po_dir}/PrusaSlicer.mo")
|
||||
add_custom_command(
|
||||
TARGET gettext_po_to_mo PRE_BUILD
|
||||
COMMAND msgfmt ARGS -o ${mo_file} ${po_file}
|
||||
DEPENDS ${po_file}
|
||||
)
|
||||
endforeach()
|
||||
|
||||
find_package(NLopt 1.4 REQUIRED)
|
||||
|
||||
|
Binary file not shown.
@ -6865,7 +6865,7 @@ msgstr "Textura"
|
||||
|
||||
#: src/slic3r/GUI/ConfigManipulation.cpp:200
|
||||
msgid "The %1% infill pattern is not supposed to work at 100%% density."
|
||||
msgstr "Se supone que el patrón de relleno %1% no funciona a una densidad del 100%."
|
||||
msgstr "Se supone que el patrón de relleno %1% no funciona a una densidad del 100%%."
|
||||
|
||||
#: src/slic3r/GUI/FirmwareDialog.cpp:530
|
||||
#, possible-c-format
|
||||
|
Binary file not shown.
@ -7013,7 +7013,7 @@ msgstr "Texture"
|
||||
|
||||
#: src/slic3r/GUI/ConfigManipulation.cpp:200
|
||||
msgid "The %1% infill pattern is not supposed to work at 100%% density."
|
||||
msgstr "Le modèle de remplissage %1% n'est pas censé fonctionner avec une densité de 100%."
|
||||
msgstr "Le modèle de remplissage %1% n'est pas censé fonctionner avec une densité de 100%%."
|
||||
|
||||
#: src/slic3r/GUI/FirmwareDialog.cpp:530
|
||||
#, c-format
|
||||
|
Binary file not shown.
@ -6865,7 +6865,7 @@ msgstr "Texture"
|
||||
|
||||
#: src/slic3r/GUI/ConfigManipulation.cpp:200
|
||||
msgid "The %1% infill pattern is not supposed to work at 100%% density."
|
||||
msgstr "La trama di riempimento %1% non è fatta per lavorare con densità al 100%."
|
||||
msgstr "La trama di riempimento %1% non è fatta per lavorare con densità al 100%%."
|
||||
|
||||
#: src/slic3r/GUI/FirmwareDialog.cpp:530
|
||||
#, possible-c-format
|
||||
|
Binary file not shown.
@ -3292,7 +3292,7 @@ msgstr "這個 "
|
||||
#: src/slic3r/GUI/Tab.cpp:1309
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
" infill pattern is not supposed to work at 100% density.\n"
|
||||
" infill pattern is not supposed to work at 100%% density.\n"
|
||||
"\n"
|
||||
"Shall I switch to rectilinear fill pattern?"
|
||||
msgstr ""
|
||||
|
@ -1,4 +1,5 @@
|
||||
min_slic3r_version = 2.2.0-alpha0
|
||||
1.1.1-alpha2 Bumped up config version, so our in house customer will get updated profiles.
|
||||
1.1.0 Filament aliases, Creality profiles and other goodies for PrusaSlicer 2.2.0-alpha0
|
||||
min_slic3r_version = 2.1.1-beta0
|
||||
1.0.6 Added Prusa MINI profiles
|
||||
|
@ -8,7 +8,7 @@ technologies = FFF; SLA
|
||||
|
||||
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
||||
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
||||
config_version = 1.1.0
|
||||
config_version = 1.1.1-alpha2
|
||||
# Where to get the updates from?
|
||||
config_update_url =
|
||||
changelog_url = http://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
||||
|
@ -66,9 +66,12 @@ extern std::error_code rename_file(const std::string &from, const std::string &t
|
||||
|
||||
// Copy a file, adjust the access attributes, so that the target is writable.
|
||||
int copy_file_inner(const std::string &from, const std::string &to);
|
||||
// Copy file to a temp file first, then rename it to the final file name.
|
||||
// If with_check is true, then the content of the copied file is compared to the content
|
||||
// of the source file before renaming.
|
||||
extern int copy_file(const std::string &from, const std::string &to, const bool with_check = false);
|
||||
|
||||
// Compares two files, returns 0 if identical.
|
||||
// Compares two files, returns 0 if identical, -1 if different.
|
||||
extern int check_copy(const std::string& origin, const std::string& copy);
|
||||
|
||||
// Ignore system and hidden files, which may be created by the DropBox synchronisation process.
|
||||
|
@ -448,31 +448,45 @@ int copy_file(const std::string &from, const std::string &to, const bool with_ch
|
||||
if (with_check)
|
||||
ret_val = check_copy(from, to_temp);
|
||||
|
||||
if (ret_val == 0)
|
||||
rename_file(to_temp, to);
|
||||
if (ret_val == 0 && rename_file(to_temp, to))
|
||||
ret_val = -1;
|
||||
}
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
int check_copy(const std::string &origin, const std::string ©)
|
||||
{
|
||||
std::ifstream f1(origin, std::ifstream::binary | std::ifstream::ate);
|
||||
std::ifstream f2(copy, std::ifstream::binary | std::ifstream::ate);
|
||||
std::ifstream f1(origin, std::ifstream::in | std::ifstream::binary | std::ifstream::ate);
|
||||
std::ifstream f2(copy, std::ifstream::in | std::ifstream::binary | std::ifstream::ate);
|
||||
|
||||
if (f1.fail() || f2.fail()) {
|
||||
if (f1.fail() || f2.fail())
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (f1.tellg() != f2.tellg()) {
|
||||
std::streampos fsize = f1.tellg();
|
||||
if (fsize != f2.tellg())
|
||||
return -1;
|
||||
}
|
||||
|
||||
f1.seekg(0, std::ifstream::beg);
|
||||
f2.seekg(0, std::ifstream::beg);
|
||||
bool ident = std::equal(std::istreambuf_iterator<char>(f1.rdbuf()),
|
||||
std::istreambuf_iterator<char>(),
|
||||
std::istreambuf_iterator<char>(f2.rdbuf()));
|
||||
return(ident ? 0 : -1);
|
||||
|
||||
// Compare by reading 8 MiB buffers one at a time.
|
||||
size_t buffer_size = 8 * 1024 * 1024;
|
||||
std::vector<char> buffer_origin(buffer_size, 0);
|
||||
std::vector<char> buffer_copy(buffer_size, 0);
|
||||
do {
|
||||
f1.read(buffer_origin.data(), buffer_size);
|
||||
f2.read(buffer_copy.data(), buffer_size);
|
||||
std::streampos origin_cnt = f1.gcount();
|
||||
std::streampos copy_cnt = f2.gcount();
|
||||
if (origin_cnt != copy_cnt ||
|
||||
(origin_cnt > 0 && std::memcmp(buffer_origin.data(), buffer_copy.data(), origin_cnt) != 0))
|
||||
// Files are different.
|
||||
return -1;
|
||||
fsize -= origin_cnt;
|
||||
} while (f1.good() && f2.good());
|
||||
|
||||
// All data has been read and compared equal.
|
||||
return (f1.eof() && f2.eof() && fsize == 0) ? 0 : -1;
|
||||
}
|
||||
|
||||
// Ignore system and hidden files, which may be created by the DropBox synchronisation process.
|
||||
|
@ -8,6 +8,11 @@ add_library(Catch2 INTERFACE)
|
||||
list (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules/Catch2)
|
||||
target_include_directories(Catch2 INTERFACE ${CMAKE_CURRENT_LIST_DIR})
|
||||
add_library(Catch2::Catch2 ALIAS Catch2)
|
||||
if (APPLE)
|
||||
# OSX builds targeting OSX 10.9 do not support new std::uncought_exception()
|
||||
# see https://github.com/catchorg/Catch2/issues/1218
|
||||
target_compile_definitions(Catch2 INTERFACE -DCATCH_CONFIG_NO_CPP17_UNCAUGHT_EXCEPTIONS)
|
||||
endif()
|
||||
include(Catch)
|
||||
|
||||
set(CATCH_EXTRA_ARGS "" CACHE STRING "Extra arguments for catch2 test suites.")
|
||||
|
Loading…
x
Reference in New Issue
Block a user