Fixed conflicts after merge with master
This commit is contained in:
commit
5b24a0fb91
40 changed files with 1319 additions and 1171 deletions
4
deps/CMakeLists.txt
vendored
4
deps/CMakeLists.txt
vendored
|
@ -49,10 +49,6 @@ find_package(Git REQUIRED)
|
|||
|
||||
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
|
||||
# C and CXX flags handed over to unix autotools projects.
|
||||
set(DEP_CFLAGS "")
|
||||
set(DEP_CXXFLAGS "")
|
||||
|
||||
function(prusaslicer_add_cmake_project projectname)
|
||||
cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN})
|
||||
|
||||
|
|
18
deps/GMP/GMP.cmake
vendored
18
deps/GMP/GMP.cmake
vendored
|
@ -17,11 +17,27 @@ if (MSVC)
|
|||
add_custom_target(dep_GMP SOURCES ${_output})
|
||||
|
||||
else ()
|
||||
set(_gmp_ccflags "-O2 -DNDEBUG -fPIC -DPIC -Wall -Wmissing-prototypes -Wpointer-arith -pedantic -fomit-frame-pointer -fno-common")
|
||||
set(_gmp_build_tgt "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||
set(_gmp_ccflags "${_gmp_ccflags} -march=armv7-a") # Works on RPi-4
|
||||
set(_gmp_build_tgt armv7)
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
set(_gmp_ccflags "${_gmp_ccflags} -mmacosx-version-min=${DEP_OSX_TARGET}")
|
||||
set(_gmp_build_tgt "--build=${_gmp_build_tgt}-apple-darwin")
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(_gmp_build_tgt "--build=${_gmp_build_tgt}-pc-linux-gnu")
|
||||
else ()
|
||||
set(_gmp_build_tgt "") # let it guess
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(dep_GMP
|
||||
# URL https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2
|
||||
URL https://gmplib.org/download/gmp/gmp-6.2.0.tar.lz
|
||||
BUILD_IN_SOURCE ON
|
||||
CONFIGURE_COMMAND env "CFLAGS=${DEP_CFLAGS}" "CXXFLAGS=${DEP_CXXFLAGS}" ./configure --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}/usr/local" --with-pic
|
||||
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}/usr/local" ${_gmp_build_tgt}
|
||||
BUILD_COMMAND make -j
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
|
2
deps/MPFR/MPFR.cmake
vendored
2
deps/MPFR/MPFR.cmake
vendored
|
@ -21,7 +21,7 @@ else ()
|
|||
ExternalProject_Add(dep_MPFR
|
||||
URL http://ftp.vim.org/ftp/gnu/mpfr/mpfr-3.1.6.tar.bz2 https://www.mpfr.org/mpfr-3.1.6/mpfr-3.1.6.tar.bz2 # mirrors are allowed
|
||||
BUILD_IN_SOURCE ON
|
||||
CONFIGURE_COMMAND env "CFLAGS=${DEP_CFLAGS}" "CXXFLAGS=${DEP_CXXFLAGS}" ./configure --prefix=${DESTDIR}/usr/local --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR}/usr/local --with-pic
|
||||
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure --prefix=${DESTDIR}/usr/local --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR}/usr/local ${_gmp_build_tgt}
|
||||
BUILD_COMMAND make -j
|
||||
INSTALL_COMMAND make install
|
||||
DEPENDS dep_GMP
|
||||
|
|
2
deps/deps-linux.cmake
vendored
2
deps/deps-linux.cmake
vendored
|
@ -31,6 +31,7 @@ ExternalProject_Add(dep_libopenssl
|
|||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND ./config
|
||||
"--prefix=${DESTDIR}/usr/local"
|
||||
"--libdir=lib"
|
||||
no-shared
|
||||
no-ssl3-method
|
||||
no-dynamic-engine
|
||||
|
@ -46,6 +47,7 @@ ExternalProject_Add(dep_libcurl
|
|||
URL_HASH SHA256=cc245bf9a1a42a45df491501d97d5593392a03f7b4f07b952793518d97666115
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND ./configure
|
||||
"--libdir=${DESTDIR}/usr/local/lib"
|
||||
--enable-static
|
||||
--disable-shared
|
||||
"--with-ssl=${DESTDIR}/usr/local"
|
||||
|
|
3
deps/deps-macos.cmake
vendored
3
deps/deps-macos.cmake
vendored
|
@ -11,9 +11,6 @@ set(DEP_CMAKE_OPTS
|
|||
"-DCMAKE_C_FLAGS=${DEP_WERRORS_SDK}"
|
||||
)
|
||||
|
||||
list(APPEND DEP_CFLAGS "-mmacosx-version-min=${DEP_OSX_TARGET} ${DEP_WERRORS_SDK}")
|
||||
list(APPEND DEP_CXXFLAGS "-mmacosx-version-min=${DEP_OSX_TARGET} ${DEP_WERRORS_SDK}")
|
||||
|
||||
include("deps-unix-common.cmake")
|
||||
|
||||
|
||||
|
|
Binary file not shown.
|
@ -1092,6 +1092,34 @@ msgstr "Ukončování..."
|
|||
msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible."
|
||||
msgstr "Nelze vypočítat šířku extrudování pro %1%: Proměnná \"%2%\" není dostupná."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3017
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"Current layer range overlaps with the next layer range."
|
||||
msgstr ""
|
||||
"Nelze vložit nový rozsah vrstev za aktuální rozsah vrstev.\n"
|
||||
"Aktuální rozsah vrstev se překrývá s dalším rozsahem vrstev."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3008
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"The next layer range is too thin to be split to two\n"
|
||||
"without violating the minimum layer height."
|
||||
msgstr ""
|
||||
"Nelze vložit nový rozsah vrstev za aktuální rozsah vrstev.\n"
|
||||
"Další rozsah vrstev je příliš tenký na to, aby byl rozdělen na dva\n"
|
||||
"bez porušení minimální výšky vrstvy."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3012
|
||||
msgid ""
|
||||
"Cannot insert a new layer range between the current and the next layer range.\n"
|
||||
"The gap between the current layer range and the next layer range\n"
|
||||
"is thinner than the minimum layer height allowed."
|
||||
msgstr ""
|
||||
"Nelze vložit nový rozsah vrstev mezi aktuální a následující rozsah vrstev.\n"
|
||||
"Mezera mezi aktuálním rozsahem vrstev a dalším rozsahem vrstev\n"
|
||||
"je tenčí, než je minimální povolená výška vrstvy."
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3073
|
||||
msgid "Cannot overwrite a system profile."
|
||||
msgstr "Nelze přepsat systémový profil."
|
||||
|
@ -2032,14 +2060,6 @@ msgstr ""
|
|||
"Vyberte ANO, pokud chcete změnit tuto hodnotu na %s%%,\n"
|
||||
"nebo NE, pokud jste si jisti, že %s %s je správná hodnota."
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1761
|
||||
msgid "Do you want to automatic select default filaments?"
|
||||
msgstr "Chcete automaticky vybrat výchozí filamenty?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1772
|
||||
msgid "Do you want to automatic select default materials?"
|
||||
msgstr "Chcete automaticky vybrat výchozí materiály?"
|
||||
|
||||
#: src/slic3r/GUI/DoubleSlider.cpp:1920
|
||||
msgid "Do you want to delete all saved tool changes?"
|
||||
msgstr "Opravdu chcete odstranit všechny uložené změny nástrojů?"
|
||||
|
@ -2056,6 +2076,14 @@ msgstr "Chcete to zkusit znovu"
|
|||
msgid "Do you want to save your manually edited support points?"
|
||||
msgstr "Chcete uložit ručně upravené podpěrné body?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1834
|
||||
msgid "Do you want to select default filaments for these FFF printer models?"
|
||||
msgstr "Chcete pro tyto modely FFF tiskáren vybrat výchozí filamenty?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1852
|
||||
msgid "Do you want to select default SLA materials for these printer models?"
|
||||
msgstr "Chcete pro tyto modely tiskáren vybrat výchozí SLA materiály?"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:3429
|
||||
msgid "Don't arrange"
|
||||
msgstr "Neuspořádávat"
|
||||
|
@ -2072,6 +2100,10 @@ msgstr "Nevytvářet podpěry pod mosty"
|
|||
msgid "Downgrade"
|
||||
msgstr "Downgrade"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1695
|
||||
msgid "Draft shield"
|
||||
msgstr "Ochranný štít"
|
||||
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369
|
||||
|
@ -3454,6 +3486,10 @@ msgstr "Pokud je povoleno, stáhne Slic3r na pozadí aktualizace vestavěných s
|
|||
msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help."
|
||||
msgstr "Pokud je tato volba povolena, bude 3D scéna vykreslena v rozlišení Retina. Pokud dochází k potížím s výkonem, zkuste tuto volbu vypnout."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1696
|
||||
msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft."
|
||||
msgstr "Pokud je tato možnost povolena, bude obrys (skirt) stejně vysoký jako nejvyšší tištěný objekt. To je užitečné k ochraně modelu při tisku z ABS nebo ASA před deformací a odlepením od tiskové podložky v důsledku průvanu."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1858
|
||||
msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print."
|
||||
msgstr "Pokud je tato možnost povolena, nebude čistící věž vytištěna ve vrstvách bez změny barvy. U vrstev s výměnou sjede extruder směrem dolů a vytiskne vrstvu čistící věže. Uživatel je odpovědný za to, že nedojde ke kolizi tiskové hlavy s tiskem."
|
||||
|
@ -5944,9 +5980,9 @@ msgstr "Odebrat označené body"
|
|||
msgid "Remove the selected object"
|
||||
msgstr "Odstranit vybraný objekt"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:438
|
||||
msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)"
|
||||
msgstr "Odstranit uživatelské profily - čistá instalace (nejprve bude provedena záloha)"
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:453
|
||||
msgid "Remove user profiles (a snapshot will be taken beforehand)"
|
||||
msgstr "Odstranit uživatelské profily (předtím bude proveden snapshot)"
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:1636
|
||||
msgid "Rename"
|
||||
|
@ -7692,6 +7728,14 @@ msgstr "První vrstva bude v rovině XY zmenšena nakonfigurovanou hodnotou, kte
|
|||
msgid "the following characters are not allowed:"
|
||||
msgstr "následující znaky nejsou povolené:"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1830
|
||||
msgid "The following FFF printer models have no filament selected:"
|
||||
msgstr "Následující modely FFF tiskáren nemají vybraný filament:"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1848
|
||||
msgid "The following SLA printer models have no materials selected:"
|
||||
msgstr "Následující modely SLA tiskáren nemají vybrané žádné materiály:"
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3461
|
||||
msgid "the following suffix is not allowed:"
|
||||
msgstr "následující přípona není povolená:"
|
||||
|
@ -9047,14 +9091,6 @@ msgstr "Nelze načíst SLA projekt s objektem na podložce, který je složený
|
|||
msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection"
|
||||
msgstr "Nemůžete použít nestejnoměrnou změnu měřítka pro více vybraných objektů/částí"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1760
|
||||
msgid "You have to select at least one filament for selected printers"
|
||||
msgstr "Pro vybrané tiskárny musíte vybrat alespoň jeden filament"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1771
|
||||
msgid "You have to select at least one material for selected printers"
|
||||
msgstr "Pro vybrané tiskárny musíte vybrat alespoň jeden materiál"
|
||||
|
||||
#: src/slic3r/GUI/GLCanvas3DManager.cpp:287
|
||||
msgid "You may need to update your graphics card driver."
|
||||
msgstr "Možná budete muset aktualizovat ovladač grafické karty."
|
||||
|
|
Binary file not shown.
|
@ -1088,6 +1088,32 @@ msgstr "Abbrechen..."
|
|||
msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible."
|
||||
msgstr "Kann die Extrusionsbreite für %1% nicht berechnen: Variable \"%2%\" nicht zugänglich."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3017
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"Current layer range overlaps with the next layer range."
|
||||
msgstr ""
|
||||
"Es kann kein neuer Schichtenbereich nach dem aktuellen Schichtenbereich eingefügt werden.\n"
|
||||
"Der aktuelle Schichtenbereich überschneidet sich mit dem nächsten Schichtenbereich."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3008
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"The next layer range is too thin to be split to two\n"
|
||||
"without violating the minimum layer height."
|
||||
msgstr ""
|
||||
"Es kann kein neuer Schichtenbereich nach dem aktuellen Schichtenbereich eingefügt werden.\n"
|
||||
"Der nächste Schichtenbereich ist zu schmal, um auf zwei Schichten aufgeteilt zu werden ohne die Mindestschichthöhe zu verletzen."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3012
|
||||
msgid ""
|
||||
"Cannot insert a new layer range between the current and the next layer range.\n"
|
||||
"The gap between the current layer range and the next layer range\n"
|
||||
"is thinner than the minimum layer height allowed."
|
||||
msgstr ""
|
||||
"Es kann kein neuer Schichtenbereich zwischen dem aktuellen und dem nächsten Schichtenbereich eingefügt werden.\n"
|
||||
"Die Lücke zwischen dem aktuellen und dem nächsten Schichtenbereich ist ist schmaler als die minimal zulässige Schichthöhe."
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3073
|
||||
msgid "Cannot overwrite a system profile."
|
||||
msgstr "Systemprofil kann nicht überschrieben werden."
|
||||
|
@ -2028,14 +2054,6 @@ msgstr ""
|
|||
"Wählen Sie JA, wenn Sie diesen Wert auf %s%% ändern möchten, \n"
|
||||
"oder NEIN, wenn Sie sicher sind, dass %s %s ein korrekter Wert ist."
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1761
|
||||
msgid "Do you want to automatic select default filaments?"
|
||||
msgstr "Möchten Sie die Standardfilamente automatisch auswählen?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1772
|
||||
msgid "Do you want to automatic select default materials?"
|
||||
msgstr "Möchten Sie automatisch Standardmaterialien auswählen?"
|
||||
|
||||
#: src/slic3r/GUI/DoubleSlider.cpp:1920
|
||||
msgid "Do you want to delete all saved tool changes?"
|
||||
msgstr "Möchten Sie alle gespeicherten Werkzeugänderungen löschen?"
|
||||
|
@ -2052,6 +2070,14 @@ msgstr "Möchten Sie es erneut versuchen"
|
|||
msgid "Do you want to save your manually edited support points?"
|
||||
msgstr "Möchten Sie Ihre manuell bearbeiteten Stützpunkte speichern?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1834
|
||||
msgid "Do you want to select default filaments for these FFF printer models?"
|
||||
msgstr "Möchten Sie Standardfilamente für diese FFF-Druckermodelle auswählen?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1852
|
||||
msgid "Do you want to select default SLA materials for these printer models?"
|
||||
msgstr "Möchten Sie Standard-SLA-Materialien für diese Druckermodelle auswählen?"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:3429
|
||||
msgid "Don't arrange"
|
||||
msgstr "Nicht Anordnen"
|
||||
|
@ -2068,6 +2094,10 @@ msgstr "Brücken nicht unterstützen"
|
|||
msgid "Downgrade"
|
||||
msgstr "Downgrade"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1695
|
||||
msgid "Draft shield"
|
||||
msgstr "Windschutz"
|
||||
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369
|
||||
|
@ -3446,6 +3476,10 @@ msgstr "Wenn aktiviert, lädt Slic3r Updates der eingebauten Systemvoreinstellun
|
|||
msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help."
|
||||
msgstr "Wenn aktiviert, wird die 3D-Szene in Retina-Auflösung gerendert. Wenn Sie Probleme mit der 3D-Leistung haben, kann es hilfreich sein, diese Option zu deaktivieren."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1696
|
||||
msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft."
|
||||
msgstr "Wenn diese Option aktiviert ist, wird die Schürze so hoch wie das höchste gedruckte Objekt sein. Dies ist nützlich, um einen ABS- oder ASA-Druck vor dem Verziehen und Ablösen vom Druckbett aufgrund von Zugluft zu schützen."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1858
|
||||
msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print."
|
||||
msgstr "Wenn aktiviert, wird der Reinigungsturm nicht auf Schichten ohne Werkzeugwechsel gedruckt. Bei Schichten mit Werkzeugwechsel fährt der Extruder nach unten, um den Reinigungsturm zu drucken. Der Benutzer ist dafür verantwortlich, dass es nicht zu einer Kollision mit dem Druck kommt."
|
||||
|
@ -5935,9 +5969,9 @@ msgstr "Ausgewählte Punkte entfernen"
|
|||
msgid "Remove the selected object"
|
||||
msgstr "Ausgewähltes Objekt entfernen"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:438
|
||||
msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)"
|
||||
msgstr "Benutzerprofile entfernen - von Grund auf neu installieren (eine Momentaufnahme wird vorab erstellt)"
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:453
|
||||
msgid "Remove user profiles (a snapshot will be taken beforehand)"
|
||||
msgstr "Benutzerprofile entfernen (eine Momentaufnahme wird vorab erstellt)"
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:1636
|
||||
msgid "Rename"
|
||||
|
@ -7686,6 +7720,14 @@ msgstr "Die erste Schicht wird in der XY-Ebene um den vorgegebenen Wert verklein
|
|||
msgid "the following characters are not allowed:"
|
||||
msgstr "die folgenden Zeichen sind nicht erlaubt:"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1830
|
||||
msgid "The following FFF printer models have no filament selected:"
|
||||
msgstr "Bei den folgenden FFF-Druckermodellen wurde kein Filament ausgewählt:"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1848
|
||||
msgid "The following SLA printer models have no materials selected:"
|
||||
msgstr "Bei den folgenden SLA-Druckermodellen wurden keine Materialien ausgewählt:"
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3461
|
||||
msgid "the following suffix is not allowed:"
|
||||
msgstr "das folgenden Suffix ist nicht erlaubt:"
|
||||
|
@ -9036,14 +9078,6 @@ msgstr "Sie können kein SLA-Projekt mit einem mehrteiligen Objekt auf das Druck
|
|||
msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection"
|
||||
msgstr "Sie können den nichtgleichmäßigen Skalierungsmodus nicht für mehrere Objekte/Teileauswahlen verwenden"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1760
|
||||
msgid "You have to select at least one filament for selected printers"
|
||||
msgstr "Sie müssen mindestens ein Filament für die ausgewählten Drucker auswählen"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1771
|
||||
msgid "You have to select at least one material for selected printers"
|
||||
msgstr "Sie müssen mindestens ein Material für die ausgewählten Drucker auswählen"
|
||||
|
||||
#: src/slic3r/GUI/GLCanvas3DManager.cpp:287
|
||||
msgid "You may need to update your graphics card driver."
|
||||
msgstr "Möglicherweise müssen Sie Ihren Grafikkartentreiber aktualisieren."
|
||||
|
|
Binary file not shown.
|
@ -1092,6 +1092,34 @@ msgstr "Cancelando..."
|
|||
msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible."
|
||||
msgstr "No se puede calcular el ancho de extrusión para %1%: Variable \"%2%\" no accesible."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3017
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"Current layer range overlaps with the next layer range."
|
||||
msgstr ""
|
||||
"No se puede insertar un nuevo rango de capas después del rango de capa actual.\n"
|
||||
"El rango de capa actual se superpone con el siguiente rango de capa."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3008
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"The next layer range is too thin to be split to two\n"
|
||||
"without violating the minimum layer height."
|
||||
msgstr ""
|
||||
"No se puede insertar un nuevo rango de capas después del rango de capa actual.\n"
|
||||
"El siguiente rango de capa es demasiado delgado para dividirse en dos\n"
|
||||
"sin violar la altura mínima de la capa."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3012
|
||||
msgid ""
|
||||
"Cannot insert a new layer range between the current and the next layer range.\n"
|
||||
"The gap between the current layer range and the next layer range\n"
|
||||
"is thinner than the minimum layer height allowed."
|
||||
msgstr ""
|
||||
"No se puede insertar un nuevo rango de capas entre el rango de capa actual y el siguiente.\n"
|
||||
"La brecha entre el rango de capa actual y el siguiente rango de capa\n"
|
||||
"es más delgada que la altura mínima de capa permitida."
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3073
|
||||
msgid "Cannot overwrite a system profile."
|
||||
msgstr "No se puede sobre-escribir un perfil del sistema."
|
||||
|
@ -2032,14 +2060,6 @@ msgstr ""
|
|||
"Escoge SI si deseas cambiar este valor a %s%%,\n"
|
||||
"o NO si estás seguro que %s %s es el valor correcto."
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1761
|
||||
msgid "Do you want to automatic select default filaments?"
|
||||
msgstr "¿Deseas seleccionar automáticamente filamentos predeterminados?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1772
|
||||
msgid "Do you want to automatic select default materials?"
|
||||
msgstr "¿Deseas seleccionar automáticamente materiales predeterminados?"
|
||||
|
||||
#: src/slic3r/GUI/DoubleSlider.cpp:1920
|
||||
msgid "Do you want to delete all saved tool changes?"
|
||||
msgstr "¿Desea eliminar todos los cambios de herramienta guardados?"
|
||||
|
@ -2056,6 +2076,14 @@ msgstr "Quieres volver a intentarlo"
|
|||
msgid "Do you want to save your manually edited support points?"
|
||||
msgstr "¿Deseas guardar tus puntos de soporte editados manualmente?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1834
|
||||
msgid "Do you want to select default filaments for these FFF printer models?"
|
||||
msgstr "¿Desea seleccionar filamentos predeterminados para estos modelos de impresoras FFF?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1852
|
||||
msgid "Do you want to select default SLA materials for these printer models?"
|
||||
msgstr "¿Desea seleccionar materiales SLA predeterminados para estos modelos de impresora?"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:3429
|
||||
msgid "Don't arrange"
|
||||
msgstr "No organizar"
|
||||
|
@ -2072,6 +2100,10 @@ msgstr "No soportar puentes"
|
|||
msgid "Downgrade"
|
||||
msgstr "Volver a una versión anterior"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1695
|
||||
msgid "Draft shield"
|
||||
msgstr "Escudo de protección"
|
||||
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369
|
||||
|
@ -3450,6 +3482,10 @@ msgstr "Si está activado, Slic3r descargará actualizaciones de los ajustes del
|
|||
msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help."
|
||||
msgstr "Si está activado, la escena 3D se mostrará en resolución Retina. Si tienes problemas de prestaciones 3D, desactivar esta opción te puede ayudar."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1696
|
||||
msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft."
|
||||
msgstr "Si está habilitado, la falda será tan alta como un objeto impreso más alto. Esto es útil para proteger una impresión ABS o ASA de la deformación y la separación de la cama de impresión debido al viento."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1858
|
||||
msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print."
|
||||
msgstr "Si está habilitado, laTorre de Limpieza no se imprimirá en capas sin cambios de herramientas. En capas con cambio de herramienta, el extrusor viajará hacia abajo para imprimir la torre de limpieza. El usuario es responsable de garantizar que no haya colisión con la impresión."
|
||||
|
@ -5941,9 +5977,9 @@ msgstr "Eliminar puntos seleccionados"
|
|||
msgid "Remove the selected object"
|
||||
msgstr "Eliminar el objeto seleccionado"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:438
|
||||
msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)"
|
||||
msgstr "Eliminar perfiles de usuario - instalar desde cero (se realizará una instantánea con anterioridad)"
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:453
|
||||
msgid "Remove user profiles (a snapshot will be taken beforehand)"
|
||||
msgstr "Eliminar perfiles de usuario (se tomará una instantánea de antemano)"
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:1636
|
||||
msgid "Rename"
|
||||
|
@ -7691,6 +7727,14 @@ msgstr "La primera capa se contraerá en el plano XY por el valor configurado pa
|
|||
msgid "the following characters are not allowed:"
|
||||
msgstr "los siguientes caracteres no están permitidos:"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1830
|
||||
msgid "The following FFF printer models have no filament selected:"
|
||||
msgstr "Los siguientes modelos de impresoras FFF no tienen filamento seleccionado:"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1848
|
||||
msgid "The following SLA printer models have no materials selected:"
|
||||
msgstr "Los siguientes modelos de impresoras SLA no tienen filamento seleccionado:"
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3461
|
||||
msgid "the following suffix is not allowed:"
|
||||
msgstr "el siguiente sufijo no está permitido:"
|
||||
|
@ -9035,14 +9079,6 @@ msgstr "No puedes cargar un proyecto SLA con varias piezas en la base"
|
|||
msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection"
|
||||
msgstr "No puedes usar el modo de escala no uniforme para la selección de múltiples objetos/partes"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1760
|
||||
msgid "You have to select at least one filament for selected printers"
|
||||
msgstr "Debes seleccionar al menos un filamento para las impresoras seleccionadas"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1771
|
||||
msgid "You have to select at least one material for selected printers"
|
||||
msgstr "Debes seleccionar al menos un material para las impresoras seleccionadas"
|
||||
|
||||
#: src/slic3r/GUI/GLCanvas3DManager.cpp:287
|
||||
msgid "You may need to update your graphics card driver."
|
||||
msgstr "Puede que necesites actualizar tu tarjeta de gráficos."
|
||||
|
|
Binary file not shown.
|
@ -1092,6 +1092,32 @@ msgstr "Annulation..."
|
|||
msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible."
|
||||
msgstr "Impossible de calculer la largeur d'extrusion pour %1% : la variable \"%2%\" n'est pas accessible."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3017
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"Current layer range overlaps with the next layer range."
|
||||
msgstr ""
|
||||
"Impossible d'insérer une nouvelle zone de couche après la zone de couche actuelle.\n"
|
||||
"La zone de couche actuelle chevauche la prochaine zone de couche."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3008
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"The next layer range is too thin to be split to two\n"
|
||||
"without violating the minimum layer height."
|
||||
msgstr ""
|
||||
"Impossible d'insérer une nouvelle zone de couche après la zone de couche actuelle.\n"
|
||||
"La zone de couche suivante est trop fine pour être séparée en deux sans enfreindre la hauteur de couche minimum."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3012
|
||||
msgid ""
|
||||
"Cannot insert a new layer range between the current and the next layer range.\n"
|
||||
"The gap between the current layer range and the next layer range\n"
|
||||
"is thinner than the minimum layer height allowed."
|
||||
msgstr ""
|
||||
"Impossible d'insérer une nouvelle zone de couche entre l'actuelle et la prochaine.\n"
|
||||
"L'espace entre la zone de couche actuelle et la prochaine est inférieur à la hauteur de couche minimum autorisée."
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3073
|
||||
msgid "Cannot overwrite a system profile."
|
||||
msgstr "Impossible d'écraser un profil système."
|
||||
|
@ -2032,14 +2058,6 @@ msgstr ""
|
|||
"Sélectionnez OUI si vous voulez changer cette valeur pour %s%%,\n"
|
||||
"ou NON si vous êtes certain que %s%s est une valeur correcte."
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1761
|
||||
msgid "Do you want to automatic select default filaments?"
|
||||
msgstr "Voulez-vous sélectionner automatiquement les filaments par défaut ?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1772
|
||||
msgid "Do you want to automatic select default materials?"
|
||||
msgstr "Voulez-vous sélectionner automatiquement les matériaux par défaut ?"
|
||||
|
||||
#: src/slic3r/GUI/DoubleSlider.cpp:1920
|
||||
msgid "Do you want to delete all saved tool changes?"
|
||||
msgstr "Voulez-vous supprimer tous les changements d'outils enregistrés ?"
|
||||
|
@ -2056,6 +2074,14 @@ msgstr "Voulez-vous réessayer"
|
|||
msgid "Do you want to save your manually edited support points?"
|
||||
msgstr "Voulez-vous sauvegarder vos points de support édités manuellement ?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1834
|
||||
msgid "Do you want to select default filaments for these FFF printer models?"
|
||||
msgstr "Voulez-vous sélectionner les filaments par défaut pour ces modèles d'imprimantes FFF ?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1852
|
||||
msgid "Do you want to select default SLA materials for these printer models?"
|
||||
msgstr "Voulez-vous sélectionner les matériaux SLA par défaut pour ces modèles d'imprimantes ?"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:3429
|
||||
msgid "Don't arrange"
|
||||
msgstr "Ne pas agencer"
|
||||
|
@ -2072,6 +2098,10 @@ msgstr "Ne pas supporter les ponts"
|
|||
msgid "Downgrade"
|
||||
msgstr "Rétrograder"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1695
|
||||
msgid "Draft shield"
|
||||
msgstr "Bouclier contre les flux d'air"
|
||||
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369
|
||||
|
@ -3454,6 +3484,10 @@ msgstr "Si activé, Slic3r télécharge les mises à jours des préréglages sys
|
|||
msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help."
|
||||
msgstr "Si ceci est activé, la scène 3D sera affichée avec la résolution Retina. Si vous rencontrez des problèmes de performance 3D, le fait de désactiver cette option vous aidera peut-être."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1696
|
||||
msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft."
|
||||
msgstr "Si elle est activée, la jupe sera aussi haute que l'objet imprimé le plus haut. Cela sert à protéger les impressions ABS ou ASA des phénomènes de déformation ou de décollement du plateau d'impression liés au flux d'air."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1858
|
||||
msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print."
|
||||
msgstr "Si elle est activée, la tour de nettoyage ne sera pas imprimée sur des couches sans changement d'outil. Sur les couches avec un changement d'outil, l'extrudeur se déplacera vers le bas pour imprimer la tour de nettoyage. C'est à l'utilisateur de s'assurer qu'il n'y a pas de collision avec l'impression."
|
||||
|
@ -5947,9 +5981,9 @@ msgstr "Retirer les points sélectionnés"
|
|||
msgid "Remove the selected object"
|
||||
msgstr "Retirer l'objet sélectionné"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:438
|
||||
msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)"
|
||||
msgstr "Supprimer les profils d'utilisateur - installation à partir de zéro (un instantané des réglages sera pris)"
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:453
|
||||
msgid "Remove user profiles (a snapshot will be taken beforehand)"
|
||||
msgstr "Supprimer les profils utilisateurs (un instantané sera pris au préalable)"
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:1636
|
||||
msgid "Rename"
|
||||
|
@ -7696,6 +7730,14 @@ msgstr "La première couche sera réduite sur le plan XY selon la valeur configu
|
|||
msgid "the following characters are not allowed:"
|
||||
msgstr "les caractères suivant ne sont pas autorisés :"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1830
|
||||
msgid "The following FFF printer models have no filament selected:"
|
||||
msgstr "Les modèles d'imprimantes FFF suivants n'ont aucun filament sélectionné :"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1848
|
||||
msgid "The following SLA printer models have no materials selected:"
|
||||
msgstr "Les modèles d'imprimantes SLA suivants n'ont aucun matériau sélectionné :"
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3461
|
||||
msgid "the following suffix is not allowed:"
|
||||
msgstr "le suffixe suivant n'est pas autorisé :"
|
||||
|
@ -9049,14 +9091,6 @@ msgstr "Vous ne pouvez pas charger un projet SLA avec un objet en plusieurs part
|
|||
msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection"
|
||||
msgstr "Vous ne pouvez pas utiliser un mode de redimensionnement non-uniforme pour une sélection d'objets/de parties multiples"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1760
|
||||
msgid "You have to select at least one filament for selected printers"
|
||||
msgstr "Vous devez sélectionner au moins un filament pour les imprimantes sélectionnées"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1771
|
||||
msgid "You have to select at least one material for selected printers"
|
||||
msgstr "Vous devez sélectionner au moins un matériau pour les imprimantes sélectionnées"
|
||||
|
||||
#: src/slic3r/GUI/GLCanvas3DManager.cpp:287
|
||||
msgid "You may need to update your graphics card driver."
|
||||
msgstr "Vous avez peut-être besoin de mettre à jour le pilote de votre carte graphique."
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -1092,6 +1092,34 @@ msgstr "Anulowanie..."
|
|||
msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible."
|
||||
msgstr "Nie można przeliczyć szerokości ekstruzji dla %1%: zmienna \"%2%\" jest niedostępna."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3017
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"Current layer range overlaps with the next layer range."
|
||||
msgstr ""
|
||||
"Nie można wstawić nowego zakresu wysokości po obecnym.\n"
|
||||
"Zakres pokrywałby się z kolejnym."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3008
|
||||
msgid ""
|
||||
"Cannot insert a new layer range after the current layer range.\n"
|
||||
"The next layer range is too thin to be split to two\n"
|
||||
"without violating the minimum layer height."
|
||||
msgstr ""
|
||||
"Nie można wstawić nowego zakresu wysokości po obecnym.\n"
|
||||
"Kolejny zakres jest zbyt niski, aby można było go podzielić\n"
|
||||
"z powodu minimalnej grubości warstwy."
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:3012
|
||||
msgid ""
|
||||
"Cannot insert a new layer range between the current and the next layer range.\n"
|
||||
"The gap between the current layer range and the next layer range\n"
|
||||
"is thinner than the minimum layer height allowed."
|
||||
msgstr ""
|
||||
"Nie można wstawić nowego zakresu wysokości pomiędzy obecne.\n"
|
||||
"Odstęp pomiędzy zakresami jest niższy \n"
|
||||
"niż dozwolona minimalna wysokość warstwy."
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3073
|
||||
msgid "Cannot overwrite a system profile."
|
||||
msgstr "Nie można nadpisać profilu systemowego."
|
||||
|
@ -2032,14 +2060,6 @@ msgstr ""
|
|||
"Kliknij TAK, jeśli chcesz zmienić wartość na %s %%,\n"
|
||||
"lub NIE, jeśli masz pewność, że %s %s jest prawidłową wartością."
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1761
|
||||
msgid "Do you want to automatic select default filaments?"
|
||||
msgstr "Czy chcesz automatycznie wybrać domyślne filamenty?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1772
|
||||
msgid "Do you want to automatic select default materials?"
|
||||
msgstr "Czy chcesz automatycznie wybrać domyślne materiały?"
|
||||
|
||||
#: src/slic3r/GUI/DoubleSlider.cpp:1920
|
||||
msgid "Do you want to delete all saved tool changes?"
|
||||
msgstr "Czy chcesz usunąć wszystkie zmiany narzędzi?"
|
||||
|
@ -2056,6 +2076,14 @@ msgstr "Czy chcesz spróbować ponownie"
|
|||
msgid "Do you want to save your manually edited support points?"
|
||||
msgstr "Czy chcesz zapisać ręcznie edytowane punkty podpór?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1834
|
||||
msgid "Do you want to select default filaments for these FFF printer models?"
|
||||
msgstr "Czy chcesz ustawić domyślne filamenty dla tych modeli drukarek FFF?"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1852
|
||||
msgid "Do you want to select default SLA materials for these printer models?"
|
||||
msgstr "Czy chcesz ustawić domyślne materiały SLA dla tych modeli drukarek?"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:3429
|
||||
msgid "Don't arrange"
|
||||
msgstr "Nie układaj"
|
||||
|
@ -2072,6 +2100,10 @@ msgstr "Nie używaj podpór pod mostami"
|
|||
msgid "Downgrade"
|
||||
msgstr "Deaktualizacja"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1695
|
||||
msgid "Draft shield"
|
||||
msgstr "Draft shield"
|
||||
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368
|
||||
#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369
|
||||
|
@ -3450,6 +3482,10 @@ msgstr "Włączenie powoduje pobieranie wbudowanych systemowych zestawów ustawi
|
|||
msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help."
|
||||
msgstr "Po włączeniu podgląd 3D będzie renderowany w rozdzielczości Retina. Wyłącz tę opcję w przypadku wystąpienia problemów z wydajnością 3D."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1696
|
||||
msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft."
|
||||
msgstr "Po włączeniu, wysokość skirt będzie taka sama, jak najwyższego modelu. Przydaje się podczas druku z ABS lub ASA - chroni wydruk przed podwijaniem się i odklejaniem od stołu przez przeciąg."
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:1858
|
||||
msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print."
|
||||
msgstr "Po włączeniu wieża czyszcząca nie będzie drukowana na warstwach, na których nie ma zmian koloru. Na kolejnych warstwach ze zmianami koloru ekstruder zjedzie w dół, aby kontynuować czyszczenie na wieży. Użytkownik musi upewnić się, że nie nastąpi kolizja głowicy z wydrukiem."
|
||||
|
@ -4029,7 +4065,7 @@ msgstr "Wczytaj kształt z STL..."
|
|||
|
||||
#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261
|
||||
msgid "Load..."
|
||||
msgstr "Załaduje..."
|
||||
msgstr "Otwórz..."
|
||||
|
||||
#: src/slic3r/GUI/WipeTowerDialog.cpp:264
|
||||
msgid "loaded"
|
||||
|
@ -5895,7 +5931,7 @@ msgstr "Niższa szczegółowość"
|
|||
|
||||
#: src/slic3r/GUI/Plater.cpp:879
|
||||
msgid "Remove device"
|
||||
msgstr "Usuń urządzenie"
|
||||
msgstr "Odłącz urządzenie"
|
||||
|
||||
#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182
|
||||
msgid "Remove extruder from sequence"
|
||||
|
@ -5942,9 +5978,9 @@ msgstr "Usuń zaznaczone punkty"
|
|||
msgid "Remove the selected object"
|
||||
msgstr "Usuń wybrany model"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:438
|
||||
msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)"
|
||||
msgstr "Usuń profile użytkownika - czysta instalacja (najpierw zostanie wykonany zrzut)"
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:453
|
||||
msgid "Remove user profiles (a snapshot will be taken beforehand)"
|
||||
msgstr "Usuń profile użytkownika (zostanie wykonany zrzut)"
|
||||
|
||||
#: src/slic3r/GUI/GUI_ObjectList.cpp:1636
|
||||
msgid "Rename"
|
||||
|
@ -7691,6 +7727,14 @@ msgstr "Pierwsza warstwa zostanie zmniejszona o tą wartość w osiach X i Y aby
|
|||
msgid "the following characters are not allowed:"
|
||||
msgstr "następujące znaki nie są dozwolone:"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1830
|
||||
msgid "The following FFF printer models have no filament selected:"
|
||||
msgstr "Następujące modele drukarek FFF nie mają przypisanych filamentów:"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1848
|
||||
msgid "The following SLA printer models have no materials selected:"
|
||||
msgstr "Następujące modele drukarek SLA nie mają przypisanych materiałów:"
|
||||
|
||||
#: src/slic3r/GUI/Tab.cpp:3461
|
||||
msgid "the following suffix is not allowed:"
|
||||
msgstr "następujący sufiks nie jest dozwolony:"
|
||||
|
@ -9044,14 +9088,6 @@ msgstr "Nie możesz wczytać projektu SLA mając na stole wieloczęściowy model
|
|||
msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection"
|
||||
msgstr "Nie możesz używać skalowania nierównomiernego dla kliku modeli/części"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1760
|
||||
msgid "You have to select at least one filament for selected printers"
|
||||
msgstr "Musisz wybrać co najmniej jeden filament dla zaznaczonych drukarek"
|
||||
|
||||
#: src/slic3r/GUI/ConfigWizard.cpp:1771
|
||||
msgid "You have to select at least one material for selected printers"
|
||||
msgstr "Musisz wybrać co najmniej jeden materiał dla zaznaczonych drukarek"
|
||||
|
||||
#: src/slic3r/GUI/GLCanvas3DManager.cpp:287
|
||||
msgid "You may need to update your graphics card driver."
|
||||
msgstr "Może być wymagana aktualizacja sterowników karty graficznej."
|
||||
|
|
5
src/imgui/README.md
Normal file
5
src/imgui/README.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
** Dear ImGui is a bloat-free graphical user interface library for C++.**
|
||||
|
||||
For more information go to https://github.com/ocornut/imgui
|
||||
|
||||
THIS DIRECTORY CONTAINS THE imgui-1.66 da3c433 SOURCE DISTRIBUTION.
|
|
@ -2880,7 +2880,8 @@ std::string GCode::extrude_path(ExtrusionPath path, std::string description, dou
|
|||
std::string GCode::extrude_perimeters(const Print &print, const std::vector<ObjectByExtruder::Island::Region> &by_region, std::unique_ptr<EdgeGrid::Grid> &lower_layer_edge_grid)
|
||||
{
|
||||
std::string gcode;
|
||||
for (const ObjectByExtruder::Island::Region ®ion : by_region) {
|
||||
for (const ObjectByExtruder::Island::Region ®ion : by_region)
|
||||
if (! region.perimeters.empty()) {
|
||||
m_config.apply(print.regions()[®ion - &by_region.front()]->config());
|
||||
for (const ExtrusionEntity *ee : region.perimeters)
|
||||
gcode += this->extrude_entity(*ee, "perimeter", -1., &lower_layer_edge_grid);
|
||||
|
@ -2892,7 +2893,8 @@ std::string GCode::extrude_perimeters(const Print &print, const std::vector<Obje
|
|||
std::string GCode::extrude_infill(const Print &print, const std::vector<ObjectByExtruder::Island::Region> &by_region)
|
||||
{
|
||||
std::string gcode;
|
||||
for (const ObjectByExtruder::Island::Region ®ion : by_region) {
|
||||
for (const ObjectByExtruder::Island::Region ®ion : by_region)
|
||||
if (! region.infills.empty()) {
|
||||
m_config.apply(print.regions()[®ion - &by_region.front()]->config());
|
||||
ExtrusionEntitiesPtr extrusions { region.infills };
|
||||
chain_and_reorder_extrusion_entities(extrusions, &m_last_pos);
|
||||
|
@ -3370,17 +3372,18 @@ const std::vector<GCode::ObjectByExtruder::Island::Region>& GCode::ObjectByExtru
|
|||
has_overrides = true;
|
||||
break;
|
||||
}
|
||||
|
||||
// Data is cleared, but the memory is not.
|
||||
by_region_per_copy_cache.clear();
|
||||
|
||||
if (! has_overrides)
|
||||
// Simple case. No need to copy the regions.
|
||||
return this->by_region;
|
||||
return wiping_entities ? by_region_per_copy_cache : this->by_region;
|
||||
|
||||
// Complex case. Some of the extrusions of some object instances are to be printed first - those are the wiping extrusions.
|
||||
// Some of the extrusions of some object instances are printed later - those are the clean print extrusions.
|
||||
// Filter out the extrusions based on the infill_overrides / perimeter_overrides:
|
||||
|
||||
// Data is cleared, but the memory is not.
|
||||
by_region_per_copy_cache.clear();
|
||||
|
||||
for (const auto& reg : by_region) {
|
||||
by_region_per_copy_cache.emplace_back(); // creates a region in the newly created Island
|
||||
|
||||
|
@ -3441,15 +3444,17 @@ void GCode::ObjectByExtruder::Island::Region::append(const Type type, const Extr
|
|||
|
||||
// First we append the entities, there are eec->entities.size() of them:
|
||||
size_t old_size = perimeters_or_infills->size();
|
||||
perimeters_or_infills->reserve(perimeters_or_infills->size() + eec->entities.size());
|
||||
size_t new_size = old_size + eec->entities.size();
|
||||
perimeters_or_infills->reserve(new_size);
|
||||
for (auto* ee : eec->entities)
|
||||
perimeters_or_infills->emplace_back(ee);
|
||||
|
||||
if (copies_extruder != nullptr) {
|
||||
perimeters_or_infills_overrides->reserve(old_size + eec->entities.size());
|
||||
// Don't reallocate overrides if not needed.
|
||||
// Missing overrides are implicitely considered non-overridden.
|
||||
perimeters_or_infills_overrides->reserve(new_size);
|
||||
perimeters_or_infills_overrides->resize(old_size, nullptr);
|
||||
for (unsigned int i = 0; i < eec->entities.size(); ++ i)
|
||||
perimeters_or_infills_overrides->emplace_back(copies_extruder);
|
||||
perimeters_or_infills_overrides->resize(new_size, copies_extruder);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -241,6 +241,7 @@ void GCodePreviewData::reset()
|
|||
ranges.width.reset();
|
||||
ranges.height.reset();
|
||||
ranges.feedrate.reset();
|
||||
ranges.fan_speed.reset();
|
||||
ranges.volumetric_rate.reset();
|
||||
extrusion.layers.clear();
|
||||
travel.polylines.clear();
|
||||
|
|
|
@ -60,6 +60,30 @@
|
|||
// while 3D mouse is connected and free camera is not selected
|
||||
#define ENABLE_AUTO_CONSTRAINED_CAMERA (1 && ENABLE_2_2_0)
|
||||
|
||||
|
||||
//==================
|
||||
// 2.2.0.final techs
|
||||
//==================
|
||||
#define ENABLE_2_2_0_FINAL 1
|
||||
|
||||
// Enable tooltips for GLCanvas3D using ImGUI
|
||||
#define ENABLE_CANVAS_TOOLTIP_USING_IMGUI (1 && ENABLE_2_2_0_FINAL)
|
||||
// Enable constraining tooltips for GLCanvas3D using ImGUI into canvas area
|
||||
#define ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI (1 && ENABLE_CANVAS_TOOLTIP_USING_IMGUI)
|
||||
// Enable delay for showing tooltips for GLCanvas3D using ImGUI
|
||||
#define ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI (1 && ENABLE_CANVAS_TOOLTIP_USING_IMGUI)
|
||||
// Enable modified mouse events handling for toolbars
|
||||
#define ENABLE_MODIFIED_TOOLBAR_MOUSE_EVENT_HANDLING (1 && ENABLE_CANVAS_TOOLTIP_USING_IMGUI)
|
||||
// Enable modified mouse events handling for gizmobar
|
||||
#define ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING (1 && ENABLE_CANVAS_TOOLTIP_USING_IMGUI)
|
||||
// Enable fix for dragging mouse event handling for gizmobar
|
||||
#define ENABLE_GIZMO_TOOLBAR_DRAGGING_FIX (1 && ENABLE_2_2_0_FINAL)
|
||||
|
||||
//============
|
||||
// 2.3.0 techs
|
||||
//============
|
||||
#define ENABLE_2_3_0 1
|
||||
|
||||
// Enable rendering of objects colored by facets' slope
|
||||
#define ENABLE_SLOPE_RENDERING (1 && ENABLE_2_2_0)
|
||||
|
||||
|
|
|
@ -61,9 +61,11 @@
|
|||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include "DoubleSlider.hpp"
|
||||
#if !ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
#if ENABLE_RENDER_STATISTICS
|
||||
#include <chrono>
|
||||
#endif // ENABLE_RENDER_STATISTICS
|
||||
#endif // !ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
|
||||
#include <imgui/imgui_internal.h>
|
||||
|
||||
|
@ -1370,6 +1372,88 @@ void GLCanvas3D::Labels::render(const std::vector<const ModelInstance*>& sorted_
|
|||
}
|
||||
}
|
||||
|
||||
#if ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
void GLCanvas3D::Tooltip::set_text(const std::string& text)
|
||||
{
|
||||
// If the mouse is inside an ImGUI dialog, then the tooltip is suppressed.
|
||||
const std::string &new_text = m_in_imgui ? std::string() : text;
|
||||
if (m_text != new_text)
|
||||
{
|
||||
if (m_text.empty())
|
||||
m_start_time = std::chrono::steady_clock::now();
|
||||
|
||||
m_text = new_text;
|
||||
}
|
||||
}
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
void GLCanvas3D::Tooltip::render(const Vec2d& mouse_position, GLCanvas3D& canvas) const
|
||||
#else
|
||||
void GLCanvas3D::Tooltip::render(const Vec2d& mouse_position) const
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
{
|
||||
#if ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI
|
||||
static ImVec2 size(0.0f, 0.0f);
|
||||
|
||||
auto validate_position = [](const Vec2d& position, const GLCanvas3D& canvas, const ImVec2& wnd_size) {
|
||||
Size cnv_size = canvas.get_canvas_size();
|
||||
float x = std::clamp((float)position(0), 0.0f, (float)cnv_size.get_width() - wnd_size.x);
|
||||
float y = std::clamp((float)position(1) + 16, 0.0f, (float)cnv_size.get_height() - wnd_size.y);
|
||||
return Vec2f(x, y);
|
||||
};
|
||||
#endif // ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI
|
||||
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
if (m_text.empty())
|
||||
return;
|
||||
|
||||
// draw the tooltip as hidden until the delay is expired
|
||||
float alpha = (std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - m_start_time).count() < 500) ? 0.0f : 1.0;
|
||||
#else
|
||||
if (m_text.empty())
|
||||
return;
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
|
||||
#if ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI
|
||||
Vec2f position = validate_position(mouse_position, canvas, size);
|
||||
#endif // ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI
|
||||
|
||||
ImGuiWrapper& imgui = *wxGetApp().imgui();
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, alpha);
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
#if ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI
|
||||
imgui.set_next_window_pos(position(0), position(1), ImGuiCond_Always, 0.0f, 0.0f);
|
||||
#else
|
||||
imgui.set_next_window_pos(mouse_position(0), mouse_position(1) + 16, ImGuiCond_Always, 0.0f, 0.0f);
|
||||
#endif // ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI
|
||||
|
||||
imgui.begin(_(L("canvas_tooltip")), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoFocusOnAppearing);
|
||||
ImGui::BringWindowToDisplayFront(ImGui::GetCurrentWindow());
|
||||
ImGui::TextUnformatted(m_text.c_str());
|
||||
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
// force re-render while the windows gets to its final size (it may take several frames) or while hidden
|
||||
if (alpha == 0.0f || ImGui::GetWindowContentRegionWidth() + 2.0f * ImGui::GetStyle().WindowPadding.x != ImGui::CalcWindowExpectedSize(ImGui::GetCurrentWindow()).x)
|
||||
canvas.request_extra_frame();
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
|
||||
#if ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI
|
||||
size = ImGui::GetWindowSize();
|
||||
#endif // ENABLE_CANVAS_CONSTRAINED_TOOLTIP_USING_IMGUI
|
||||
|
||||
imgui.end();
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
ImGui::PopStyleVar(2);
|
||||
#else
|
||||
ImGui::PopStyleVar();
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
}
|
||||
#endif // ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
|
||||
#if ENABLE_SLOPE_RENDERING
|
||||
void GLCanvas3D::Slope::render() const
|
||||
{
|
||||
|
@ -1423,7 +1507,7 @@ void GLCanvas3D::Slope::render() const
|
|||
if (modified)
|
||||
m_volumes.set_slope_z_range({ -::cos(Geometry::deg2rad(90.0f - angle_range[0])), -::cos(Geometry::deg2rad(90.0f - angle_range[1])) });
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // ENABLE_SLOPE_RENDERING
|
||||
|
||||
wxDEFINE_EVENT(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS, SimpleEvent);
|
||||
|
@ -2005,6 +2089,38 @@ void GLCanvas3D::render()
|
|||
m_camera.debug_render();
|
||||
#endif // ENABLE_CAMERA_STATISTICS
|
||||
|
||||
#if ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
std::string tooltip;
|
||||
|
||||
// Negative coordinate means out of the window, likely because the window was deactivated.
|
||||
// In that case the tooltip should be hidden.
|
||||
if (m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0.)
|
||||
{
|
||||
if (tooltip.empty())
|
||||
tooltip = m_layers_editing.get_tooltip(*this);
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_gizmos.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_main_toolbar.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_undoredo_toolbar.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_view_toolbar.get_tooltip();
|
||||
}
|
||||
|
||||
set_tooltip(tooltip);
|
||||
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
m_tooltip.render(m_mouse.position, *this);
|
||||
#else
|
||||
m_tooltip.render(m_mouse.position);
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
#endif // ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
|
||||
wxGetApp().plater()->get_mouse3d_controller().render_settings_dialog(*this);
|
||||
|
||||
wxGetApp().imgui()->render();
|
||||
|
@ -2015,6 +2131,27 @@ void GLCanvas3D::render()
|
|||
auto end_time = std::chrono::high_resolution_clock::now();
|
||||
m_render_stats.last_frame = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - start_time).count();
|
||||
#endif // ENABLE_RENDER_STATISTICS
|
||||
|
||||
#if !ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
std::string tooltip = "";
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_layers_editing.get_tooltip(*this);
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_gizmos.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_main_toolbar.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_undoredo_toolbar.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_view_toolbar.get_tooltip();
|
||||
|
||||
set_tooltip(tooltip);
|
||||
#endif // !ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
}
|
||||
|
||||
#if ENABLE_THUMBNAIL_GENERATOR
|
||||
|
@ -3277,13 +3414,21 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||
|
||||
Point pos(evt.GetX(), evt.GetY());
|
||||
|
||||
ImGuiWrapper *imgui = wxGetApp().imgui();
|
||||
ImGuiWrapper* imgui = wxGetApp().imgui();
|
||||
m_tooltip.set_in_imgui(false);
|
||||
if (imgui->update_mouse_data(evt)) {
|
||||
m_mouse.position = evt.Leaving() ? Vec2d(-1.0, -1.0) : pos.cast<double>();
|
||||
m_tooltip.set_in_imgui(true);
|
||||
render();
|
||||
#ifdef SLIC3R_DEBUG_MOUSE_EVENTS
|
||||
printf((format_mouse_event_debug_message(evt) + " - Consumed by ImGUI\n").c_str());
|
||||
#endif /* SLIC3R_DEBUG_MOUSE_EVENTS */
|
||||
// do not return if dragging or tooltip not empty to allow for tooltip update
|
||||
#if ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
if (!m_mouse.dragging && m_tooltip.is_empty())
|
||||
#else
|
||||
if (!m_mouse.dragging && m_canvas->GetToolTipText().empty())
|
||||
#endif // ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3335,6 +3480,9 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||
mouse_up_cleanup();
|
||||
|
||||
m_mouse.set_start_position_3D_as_invalid();
|
||||
#if ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
m_mouse.position = pos.cast<double>();
|
||||
#endif /// ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3662,24 +3810,6 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||
else if (evt.Moving())
|
||||
{
|
||||
m_mouse.position = pos.cast<double>();
|
||||
std::string tooltip = "";
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_layers_editing.get_tooltip(*this);
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_gizmos.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_main_toolbar.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_undoredo_toolbar.get_tooltip();
|
||||
|
||||
if (tooltip.empty())
|
||||
tooltip = m_view_toolbar.get_tooltip();
|
||||
|
||||
set_tooltip(tooltip);
|
||||
|
||||
// updates gizmos overlay
|
||||
if (m_selection.is_empty())
|
||||
|
@ -3754,20 +3884,27 @@ void GLCanvas3D::set_tooltip(const std::string& tooltip) const
|
|||
{
|
||||
if (m_canvas != nullptr)
|
||||
{
|
||||
wxToolTip* t = m_canvas->GetToolTip();
|
||||
if (t != nullptr)
|
||||
{
|
||||
if (tooltip.empty())
|
||||
m_canvas->UnsetToolTip();
|
||||
else
|
||||
t->SetTip(wxString::FromUTF8(tooltip.data()));
|
||||
}
|
||||
else if (!tooltip.empty()) // Avoid "empty" tooltips => unset of the empty tooltip leads to application crash under OSX
|
||||
m_canvas->SetToolTip(wxString::FromUTF8(tooltip.data()));
|
||||
#if ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
m_tooltip.set_text(tooltip);
|
||||
#else
|
||||
wxString txt = wxString::FromUTF8(tooltip.data());
|
||||
if (m_canvas->GetToolTipText() != txt)
|
||||
m_canvas->SetToolTip(txt);
|
||||
|
||||
// wxToolTip* t = m_canvas->GetToolTip();
|
||||
// if (t != nullptr)
|
||||
// {
|
||||
// if (tooltip.empty())
|
||||
// m_canvas->UnsetToolTip();
|
||||
// else
|
||||
// t->SetTip(wxString::FromUTF8(tooltip.data()));
|
||||
// }
|
||||
// else if (!tooltip.empty()) // Avoid "empty" tooltips => unset of the empty tooltip leads to application crash under OSX
|
||||
// m_canvas->SetToolTip(wxString::FromUTF8(tooltip.data()));
|
||||
#endif // ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void GLCanvas3D::do_move(const std::string& snapshot_type)
|
||||
{
|
||||
if (m_model == nullptr)
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
|
||||
#include <stddef.h>
|
||||
#include <memory>
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
#include <chrono>
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
|
||||
#include "3DScene.hpp"
|
||||
#include "GLToolbar.hpp"
|
||||
|
@ -389,6 +392,30 @@ private:
|
|||
void render(const std::vector<const ModelInstance*>& sorted_instances) const;
|
||||
};
|
||||
|
||||
#if ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
class Tooltip
|
||||
{
|
||||
std::string m_text;
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
std::chrono::steady_clock::time_point m_start_time;
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
// Indicator that the mouse is inside an ImGUI dialog, therefore the tooltip should be suppressed.
|
||||
bool m_in_imgui = false;
|
||||
|
||||
public:
|
||||
bool is_empty() const { return m_text.empty(); }
|
||||
#if ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
void set_text(const std::string& text);
|
||||
void render(const Vec2d& mouse_position, GLCanvas3D& canvas) const;
|
||||
#else
|
||||
void set_text(const std::string& text) { m_text = text; }
|
||||
void render(const Vec2d& mouse_position) const;
|
||||
#endif // ENABLE_CANVAS_DELAYED_TOOLTIP_USING_IMGUI
|
||||
// Indicates that the mouse is inside an ImGUI dialog, therefore the tooltip should be suppressed.
|
||||
void set_in_imgui(bool b) { m_in_imgui = b; }
|
||||
};
|
||||
#endif // ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
|
||||
#if ENABLE_SLOPE_RENDERING
|
||||
class Slope
|
||||
{
|
||||
|
@ -485,6 +512,9 @@ private:
|
|||
int m_selected_extruder;
|
||||
|
||||
Labels m_labels;
|
||||
#if ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
mutable Tooltip m_tooltip;
|
||||
#endif // ENABLE_CANVAS_TOOLTIP_USING_IMGUI
|
||||
#if ENABLE_SLOPE_RENDERING
|
||||
Slope m_slope;
|
||||
#endif // ENABLE_SLOPE_RENDERING
|
||||
|
|
|
@ -421,14 +421,60 @@ bool GLToolbar::on_mouse(wxMouseEvent& evt, GLCanvas3D& parent)
|
|||
// mouse anywhere
|
||||
if (!evt.Dragging() && !evt.Leaving() && !evt.Entering() && (m_mouse_capture.parent != nullptr))
|
||||
{
|
||||
if (m_mouse_capture.any() && (evt.LeftUp() || evt.MiddleUp() || evt.RightUp()))
|
||||
if (m_mouse_capture.any() && (evt.LeftUp() || evt.MiddleUp() || evt.RightUp())) {
|
||||
// prevents loosing selection into the scene if mouse down was done inside the toolbar and mouse up was down outside it,
|
||||
// as when switching between views
|
||||
processed = true;
|
||||
|
||||
m_mouse_capture.reset();
|
||||
if (contains_mouse(mouse_pos, parent) == -1)
|
||||
// mouse is outside the toolbar
|
||||
m_tooltip.clear();
|
||||
return true;
|
||||
}
|
||||
m_mouse_capture.reset();
|
||||
}
|
||||
|
||||
#if ENABLE_MODIFIED_TOOLBAR_MOUSE_EVENT_HANDLING
|
||||
if (evt.Moving())
|
||||
m_tooltip = update_hover_state(mouse_pos, parent);
|
||||
else if (evt.LeftUp())
|
||||
{
|
||||
if (m_mouse_capture.left)
|
||||
{
|
||||
processed = true;
|
||||
m_mouse_capture.left = false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else if (evt.MiddleUp())
|
||||
{
|
||||
if (m_mouse_capture.middle)
|
||||
{
|
||||
processed = true;
|
||||
m_mouse_capture.middle = false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else if (evt.RightUp())
|
||||
{
|
||||
if (m_mouse_capture.right)
|
||||
{
|
||||
processed = true;
|
||||
m_mouse_capture.right = false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else if (evt.Dragging())
|
||||
{
|
||||
if (m_mouse_capture.any())
|
||||
// if the button down was done on this toolbar, prevent from dragging into the scene
|
||||
processed = true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
if (evt.Moving())
|
||||
m_tooltip = update_hover_state(mouse_pos, parent);
|
||||
else if (evt.LeftUp())
|
||||
|
@ -440,6 +486,7 @@ bool GLToolbar::on_mouse(wxMouseEvent& evt, GLCanvas3D& parent)
|
|||
else if (evt.Dragging() && m_mouse_capture.any())
|
||||
// if the button down was done on this toolbar, prevent from dragging into the scene
|
||||
processed = true;
|
||||
#endif // ENABLE_MODIFIED_TOOLBAR_MOUSE_EVENT_HANDLING
|
||||
|
||||
int item_id = contains_mouse(mouse_pos, parent);
|
||||
if (item_id == -1)
|
||||
|
@ -479,8 +526,10 @@ bool GLToolbar::on_mouse(wxMouseEvent& evt, GLCanvas3D& parent)
|
|||
parent.set_as_dirty();
|
||||
}
|
||||
}
|
||||
#if !ENABLE_MODIFIED_TOOLBAR_MOUSE_EVENT_HANDLING
|
||||
else if (evt.LeftUp())
|
||||
processed = true;
|
||||
#endif // !ENABLE_MODIFIED_TOOLBAR_MOUSE_EVENT_HANDLING
|
||||
}
|
||||
|
||||
return processed;
|
||||
|
|
|
@ -262,12 +262,6 @@ void GLGizmoBase::render_grabbers_for_picking(const BoundingBoxf3& box) const
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void GLGizmoBase::set_tooltip(const std::string& tooltip) const
|
||||
{
|
||||
m_parent.set_tooltip(tooltip);
|
||||
}
|
||||
|
||||
std::string GLGizmoBase::format(float value, unsigned int decimals) const
|
||||
{
|
||||
return Slic3r::string_printf("%.*f", decimals, value);
|
||||
|
|
|
@ -100,6 +100,7 @@ protected:
|
|||
mutable std::vector<Grabber> m_grabbers;
|
||||
ImGuiWrapper* m_imgui;
|
||||
bool m_first_input_window_render;
|
||||
mutable std::string m_tooltip;
|
||||
|
||||
public:
|
||||
GLGizmoBase(GLCanvas3D& parent,
|
||||
|
@ -145,10 +146,12 @@ public:
|
|||
|
||||
void update(const UpdateData& data);
|
||||
|
||||
void render() const { on_render(); }
|
||||
void render() const { m_tooltip.clear(); on_render(); }
|
||||
void render_for_picking() const { on_render_for_picking(); }
|
||||
void render_input_window(float x, float y, float bottom_limit);
|
||||
|
||||
virtual std::string get_tooltip() const { return ""; }
|
||||
|
||||
protected:
|
||||
virtual bool on_init() = 0;
|
||||
virtual void on_load(cereal::BinaryInputArchive& ar) {}
|
||||
|
@ -174,7 +177,6 @@ protected:
|
|||
void render_grabbers(float size) const;
|
||||
void render_grabbers_for_picking(const BoundingBoxf3& box) const;
|
||||
|
||||
void set_tooltip(const std::string& tooltip) const;
|
||||
std::string format(float value, unsigned int decimals) const;
|
||||
};
|
||||
|
||||
|
|
|
@ -30,6 +30,11 @@ GLGizmoCut::GLGizmoCut(GLCanvas3D& parent, const std::string& icon_filename, uns
|
|||
, m_rotate_lower(false)
|
||||
{}
|
||||
|
||||
std::string GLGizmoCut::get_tooltip() const
|
||||
{
|
||||
return (m_hover_id == 0 || m_grabbers[0].dragging) ? "Z: " + format(m_cut_z, 2) : "";
|
||||
}
|
||||
|
||||
bool GLGizmoCut::on_init()
|
||||
{
|
||||
m_grabbers.emplace_back();
|
||||
|
@ -79,10 +84,6 @@ void GLGizmoCut::on_update(const UpdateData& data)
|
|||
|
||||
void GLGizmoCut::on_render() const
|
||||
{
|
||||
if (m_grabbers[0].dragging) {
|
||||
set_tooltip("Z: " + format(m_cut_z, 2));
|
||||
}
|
||||
|
||||
const Selection& selection = m_parent.get_selection();
|
||||
|
||||
update_max_z(selection);
|
||||
|
|
|
@ -28,6 +28,8 @@ public:
|
|||
double get_cut_z() const { return m_cut_z; }
|
||||
void set_cut_z(double cut_z) const;
|
||||
|
||||
std::string get_tooltip() const override;
|
||||
|
||||
protected:
|
||||
virtual bool on_init();
|
||||
virtual void on_load(cereal::BinaryInputArchive& ar) { ar(m_cut_z, m_keep_upper, m_keep_lower, m_rotate_lower); }
|
||||
|
|
|
@ -31,6 +31,22 @@ GLGizmoMove3D::~GLGizmoMove3D()
|
|||
::gluDeleteQuadric(m_quadric);
|
||||
}
|
||||
|
||||
std::string GLGizmoMove3D::get_tooltip() const
|
||||
{
|
||||
const Selection& selection = m_parent.get_selection();
|
||||
bool show_position = selection.is_single_full_instance();
|
||||
const Vec3d& position = selection.get_bounding_box().center();
|
||||
|
||||
if (m_hover_id == 0 || m_grabbers[0].dragging)
|
||||
return "X: " + format(show_position ? position(0) : m_displacement(0), 2);
|
||||
else if (m_hover_id == 1 || m_grabbers[1].dragging)
|
||||
return "Y: " + format(show_position ? position(1) : m_displacement(1), 2);
|
||||
else if (m_hover_id == 2 || m_grabbers[2].dragging)
|
||||
return "Z: " + format(show_position ? position(2) : m_displacement(2), 2);
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
bool GLGizmoMove3D::on_init()
|
||||
{
|
||||
for (int i = 0; i < 3; ++i)
|
||||
|
@ -85,22 +101,6 @@ void GLGizmoMove3D::on_render() const
|
|||
{
|
||||
const Selection& selection = m_parent.get_selection();
|
||||
|
||||
bool show_position = selection.is_single_full_instance();
|
||||
const Vec3d& position = selection.get_bounding_box().center();
|
||||
|
||||
if ((show_position && (m_hover_id == 0)) || m_grabbers[0].dragging)
|
||||
set_tooltip("X: " + format(show_position ? position(0) : m_displacement(0), 2));
|
||||
else if (!m_grabbers[0].dragging && (m_hover_id == 0))
|
||||
set_tooltip("X");
|
||||
else if ((show_position && (m_hover_id == 1)) || m_grabbers[1].dragging)
|
||||
set_tooltip("Y: " + format(show_position ? position(1) : m_displacement(1), 2));
|
||||
else if (!m_grabbers[1].dragging && (m_hover_id == 1))
|
||||
set_tooltip("Y");
|
||||
else if ((show_position && (m_hover_id == 2)) || m_grabbers[2].dragging)
|
||||
set_tooltip("Z: " + format(show_position ? position(2) : m_displacement(2), 2));
|
||||
else if (!m_grabbers[2].dragging && (m_hover_id == 2))
|
||||
set_tooltip("Z");
|
||||
|
||||
glsafe(::glClear(GL_DEPTH_BUFFER_BIT));
|
||||
glsafe(::glEnable(GL_DEPTH_TEST));
|
||||
|
||||
|
|
|
@ -30,6 +30,8 @@ public:
|
|||
|
||||
const Vec3d& get_displacement() const { return m_displacement; }
|
||||
|
||||
std::string get_tooltip() const override;
|
||||
|
||||
protected:
|
||||
virtual bool on_init();
|
||||
virtual std::string on_get_name() const;
|
||||
|
|
|
@ -67,6 +67,18 @@ void GLGizmoRotate::set_angle(double angle)
|
|||
m_angle = angle;
|
||||
}
|
||||
|
||||
std::string GLGizmoRotate::get_tooltip() const
|
||||
{
|
||||
std::string axis;
|
||||
switch (m_axis)
|
||||
{
|
||||
case X: { axis = "X"; break; }
|
||||
case Y: { axis = "Y"; break; }
|
||||
case Z: { axis = "Z"; break; }
|
||||
}
|
||||
return (m_hover_id == 0 || m_grabbers[0].dragging) ? axis + ": " + format((float)Geometry::rad2deg(m_angle), 4) : "";
|
||||
}
|
||||
|
||||
bool GLGizmoRotate::on_init()
|
||||
{
|
||||
m_grabbers.push_back(Grabber());
|
||||
|
@ -127,19 +139,7 @@ void GLGizmoRotate::on_render() const
|
|||
const Selection& selection = m_parent.get_selection();
|
||||
const BoundingBoxf3& box = selection.get_bounding_box();
|
||||
|
||||
std::string axis;
|
||||
switch (m_axis)
|
||||
{
|
||||
case X: { axis = "X"; break; }
|
||||
case Y: { axis = "Y"; break; }
|
||||
case Z: { axis = "Z"; break; }
|
||||
}
|
||||
|
||||
if (!m_dragging && (m_hover_id == 0))
|
||||
set_tooltip(axis);
|
||||
else if (m_dragging)
|
||||
set_tooltip(axis + ": " + format((float)Geometry::rad2deg(m_angle), 4) + "\u00B0");
|
||||
else
|
||||
if (m_hover_id != 0 && !m_grabbers[0].dragging)
|
||||
{
|
||||
m_center = box.center();
|
||||
m_radius = Offset + box.radius();
|
||||
|
|
|
@ -49,6 +49,8 @@ public:
|
|||
double get_angle() const { return m_angle; }
|
||||
void set_angle(double angle);
|
||||
|
||||
std::string get_tooltip() const override;
|
||||
|
||||
protected:
|
||||
virtual bool on_init();
|
||||
virtual std::string on_get_name() const { return ""; }
|
||||
|
@ -81,6 +83,16 @@ public:
|
|||
Vec3d get_rotation() const { return Vec3d(m_gizmos[X].get_angle(), m_gizmos[Y].get_angle(), m_gizmos[Z].get_angle()); }
|
||||
void set_rotation(const Vec3d& rotation) { m_gizmos[X].set_angle(rotation(0)); m_gizmos[Y].set_angle(rotation(1)); m_gizmos[Z].set_angle(rotation(2)); }
|
||||
|
||||
std::string get_tooltip() const override
|
||||
{
|
||||
std::string tooltip = m_gizmos[X].get_tooltip();
|
||||
if (tooltip.empty())
|
||||
tooltip = m_gizmos[Y].get_tooltip();
|
||||
if (tooltip.empty())
|
||||
tooltip = m_gizmos[Z].get_tooltip();
|
||||
return tooltip;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual bool on_init();
|
||||
virtual std::string on_get_name() const;
|
||||
|
|
|
@ -20,6 +20,38 @@ GLGizmoScale3D::GLGizmoScale3D(GLCanvas3D& parent, const std::string& icon_filen
|
|||
{
|
||||
}
|
||||
|
||||
std::string GLGizmoScale3D::get_tooltip() const
|
||||
{
|
||||
const Selection& selection = m_parent.get_selection();
|
||||
|
||||
bool single_instance = selection.is_single_full_instance();
|
||||
bool single_volume = selection.is_single_modifier() || selection.is_single_volume();
|
||||
bool single_selection = single_instance || single_volume;
|
||||
|
||||
Vec3f scale = 100.0f * Vec3f::Ones();
|
||||
if (single_instance)
|
||||
scale = 100.0f * selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_scaling_factor().cast<float>();
|
||||
else if (single_volume)
|
||||
scale = 100.0f * selection.get_volume(*selection.get_volume_idxs().begin())->get_volume_scaling_factor().cast<float>();
|
||||
|
||||
if (m_hover_id == 0 || m_hover_id == 1 || m_grabbers[0].dragging || m_grabbers[1].dragging)
|
||||
return "X: " + format(scale(0), 4) + "%";
|
||||
else if (m_hover_id == 2 || m_hover_id == 3 || m_grabbers[2].dragging || m_grabbers[3].dragging)
|
||||
return "Y: " + format(scale(1), 4) + "%";
|
||||
else if (m_hover_id == 4 || m_hover_id == 5 || m_grabbers[4].dragging || m_grabbers[5].dragging)
|
||||
return "Z: " + format(scale(2), 4) + "%";
|
||||
else if (m_hover_id == 6 || m_hover_id == 7 || m_hover_id == 8 || m_hover_id == 9 ||
|
||||
m_grabbers[6].dragging || m_grabbers[7].dragging || m_grabbers[8].dragging || m_grabbers[9].dragging)
|
||||
{
|
||||
std::string tooltip = "X: " + format(scale(0), 4) + "%\n";
|
||||
tooltip += "Y: " + format(scale(1), 4) + "%\n";
|
||||
tooltip += "Z: " + format(scale(2), 4) + "%";
|
||||
return tooltip;
|
||||
}
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
bool GLGizmoScale3D::on_init()
|
||||
{
|
||||
for (int i = 0; i < 10; ++i)
|
||||
|
@ -89,37 +121,6 @@ void GLGizmoScale3D::on_render() const
|
|||
|
||||
bool single_instance = selection.is_single_full_instance();
|
||||
bool single_volume = selection.is_single_modifier() || selection.is_single_volume();
|
||||
bool single_selection = single_instance || single_volume;
|
||||
|
||||
Vec3f scale = 100.0f * Vec3f::Ones();
|
||||
if (single_instance)
|
||||
scale = 100.0f * selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_scaling_factor().cast<float>();
|
||||
else if (single_volume)
|
||||
scale = 100.0f * selection.get_volume(*selection.get_volume_idxs().begin())->get_volume_scaling_factor().cast<float>();
|
||||
|
||||
if ((single_selection && ((m_hover_id == 0) || (m_hover_id == 1))) || m_grabbers[0].dragging || m_grabbers[1].dragging)
|
||||
set_tooltip("X: " + format(scale(0), 4) + "%");
|
||||
else if (!m_grabbers[0].dragging && !m_grabbers[1].dragging && ((m_hover_id == 0) || (m_hover_id == 1)))
|
||||
set_tooltip("X");
|
||||
else if ((single_selection && ((m_hover_id == 2) || (m_hover_id == 3))) || m_grabbers[2].dragging || m_grabbers[3].dragging)
|
||||
set_tooltip("Y: " + format(scale(1), 4) + "%");
|
||||
else if (!m_grabbers[2].dragging && !m_grabbers[3].dragging && ((m_hover_id == 2) || (m_hover_id == 3)))
|
||||
set_tooltip("Y");
|
||||
else if ((single_selection && ((m_hover_id == 4) || (m_hover_id == 5))) || m_grabbers[4].dragging || m_grabbers[5].dragging)
|
||||
set_tooltip("Z: " + format(scale(2), 4) + "%");
|
||||
else if (!m_grabbers[4].dragging && !m_grabbers[5].dragging && ((m_hover_id == 4) || (m_hover_id == 5)))
|
||||
set_tooltip("Z");
|
||||
else if ((single_selection && ((m_hover_id == 6) || (m_hover_id == 7) || (m_hover_id == 8) || (m_hover_id == 9)))
|
||||
|| m_grabbers[6].dragging || m_grabbers[7].dragging || m_grabbers[8].dragging || m_grabbers[9].dragging)
|
||||
{
|
||||
std::string tooltip = "X: " + format(scale(0), 4) + "%\n";
|
||||
tooltip += "Y: " + format(scale(1), 4) + "%\n";
|
||||
tooltip += "Z: " + format(scale(2), 4) + "%";
|
||||
set_tooltip(tooltip);
|
||||
}
|
||||
else if (!m_grabbers[6].dragging && !m_grabbers[7].dragging && !m_grabbers[8].dragging && !m_grabbers[9].dragging &&
|
||||
((m_hover_id == 6) || (m_hover_id == 7) || (m_hover_id == 8) || (m_hover_id == 9)))
|
||||
set_tooltip("X/Y/Z");
|
||||
|
||||
glsafe(::glClear(GL_DEPTH_BUFFER_BIT));
|
||||
glsafe(::glEnable(GL_DEPTH_TEST));
|
||||
|
|
|
@ -42,6 +42,8 @@ public:
|
|||
|
||||
const Vec3d& get_offset() const { return m_offset; }
|
||||
|
||||
std::string get_tooltip() const override;
|
||||
|
||||
protected:
|
||||
virtual bool on_init();
|
||||
virtual std::string on_get_name() const;
|
||||
|
|
|
@ -422,6 +422,15 @@ void GLGizmosManager::render_overlay() const
|
|||
do_render_overlay();
|
||||
}
|
||||
|
||||
std::string GLGizmosManager::get_tooltip() const
|
||||
{
|
||||
if (!m_tooltip.empty())
|
||||
return m_tooltip;
|
||||
|
||||
const GLGizmoBase* curr = get_current();
|
||||
return (curr != nullptr) ? curr->get_tooltip() : "";
|
||||
}
|
||||
|
||||
bool GLGizmosManager::on_mouse_wheel(wxMouseEvent& evt)
|
||||
{
|
||||
bool processed = false;
|
||||
|
@ -447,6 +456,7 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt)
|
|||
int selected_object_idx = selection.get_object_idx();
|
||||
bool processed = false;
|
||||
|
||||
#if !ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING
|
||||
// mouse anywhere
|
||||
if (!evt.Dragging() && !evt.Leaving() && !evt.Entering() && (m_mouse_capture.parent != nullptr))
|
||||
{
|
||||
|
@ -456,10 +466,81 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt)
|
|||
|
||||
m_mouse_capture.reset();
|
||||
}
|
||||
#endif // !ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING
|
||||
|
||||
// mouse anywhere
|
||||
if (evt.Moving())
|
||||
m_tooltip = update_hover_state(mouse_pos);
|
||||
#if ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING
|
||||
else if (evt.LeftUp())
|
||||
{
|
||||
if (m_mouse_capture.left)
|
||||
{
|
||||
processed = true;
|
||||
m_mouse_capture.left = false;
|
||||
}
|
||||
else if (is_dragging())
|
||||
{
|
||||
switch (m_current) {
|
||||
case Move: m_parent.do_move(L("Gizmo-Move")); break;
|
||||
case Scale: m_parent.do_scale(L("Gizmo-Scale")); break;
|
||||
case Rotate: m_parent.do_rotate(L("Gizmo-Rotate")); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
stop_dragging();
|
||||
update_data();
|
||||
|
||||
wxGetApp().obj_manipul()->set_dirty();
|
||||
// Let the plater know that the dragging finished, so a delayed refresh
|
||||
// of the scene with the background processing data should be performed.
|
||||
m_parent.post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED));
|
||||
// updates camera target constraints
|
||||
m_parent.refresh_camera_scene_box();
|
||||
|
||||
processed = true;
|
||||
}
|
||||
// else
|
||||
// return false;
|
||||
}
|
||||
else if (evt.MiddleUp())
|
||||
{
|
||||
if (m_mouse_capture.middle)
|
||||
{
|
||||
processed = true;
|
||||
m_mouse_capture.middle = false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else if (evt.RightUp())
|
||||
{
|
||||
if (pending_right_up)
|
||||
{
|
||||
pending_right_up = false;
|
||||
return true;
|
||||
}
|
||||
if (m_mouse_capture.right)
|
||||
{
|
||||
processed = true;
|
||||
m_mouse_capture.right = false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
#if ENABLE_GIZMO_TOOLBAR_DRAGGING_FIX
|
||||
else if (evt.Dragging() && !is_dragging())
|
||||
#else
|
||||
else if (evt.Dragging()))
|
||||
#endif // ENABLE_GIZMO_TOOLBAR_DRAGGING_FIX
|
||||
{
|
||||
if (m_mouse_capture.any())
|
||||
// if the button down was done on this toolbar, prevent from dragging into the scene
|
||||
processed = true;
|
||||
// else
|
||||
// return false;
|
||||
}
|
||||
#else
|
||||
else if (evt.LeftUp())
|
||||
m_mouse_capture.left = false;
|
||||
else if (evt.MiddleUp())
|
||||
|
@ -476,48 +557,8 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt)
|
|||
else if (evt.Dragging() && m_mouse_capture.any())
|
||||
// if the button down was done on this toolbar, prevent from dragging into the scene
|
||||
processed = true;
|
||||
|
||||
if (get_gizmo_idx_from_mouse(mouse_pos) == Undefined)
|
||||
{
|
||||
// mouse is outside the toolbar
|
||||
m_tooltip = "";
|
||||
|
||||
if (evt.LeftDown())
|
||||
{
|
||||
if ((m_current == SlaSupports || m_current == Hollow) && gizmo_event(SLAGizmoEventType::LeftDown, mouse_pos, evt.ShiftDown(), evt.AltDown(), evt.ControlDown()))
|
||||
// the gizmo got the event and took some action, there is no need to do anything more
|
||||
processed = true;
|
||||
else if (!selection.is_empty() && grabber_contains_mouse()) {
|
||||
update_data();
|
||||
selection.start_dragging();
|
||||
start_dragging();
|
||||
|
||||
if (m_current == Flatten) {
|
||||
// Rotate the object so the normal points downward:
|
||||
m_parent.do_flatten(get_flattening_normal(), L("Gizmo-Place on Face"));
|
||||
wxGetApp().obj_manipul()->set_dirty();
|
||||
}
|
||||
|
||||
m_parent.set_as_dirty();
|
||||
processed = true;
|
||||
}
|
||||
}
|
||||
else if (evt.RightDown() && (selected_object_idx != -1) && (m_current == SlaSupports || m_current == Hollow) && gizmo_event(SLAGizmoEventType::RightDown))
|
||||
{
|
||||
// we need to set the following right up as processed to avoid showing the context menu if the user release the mouse over the object
|
||||
pending_right_up = true;
|
||||
// event was taken care of by the SlaSupports gizmo
|
||||
processed = true;
|
||||
}
|
||||
else if (evt.Dragging() && (m_parent.get_move_volume_id() != -1) && (m_current == SlaSupports || m_current == Hollow))
|
||||
// don't allow dragging objects with the Sla gizmo on
|
||||
processed = true;
|
||||
else if (evt.Dragging() && (m_current == SlaSupports || m_current == Hollow) && gizmo_event(SLAGizmoEventType::Dragging, mouse_pos, evt.ShiftDown(), evt.AltDown(), evt.ControlDown()))
|
||||
{
|
||||
// the gizmo got the event and took some action, no need to do anything more here
|
||||
m_parent.set_as_dirty();
|
||||
processed = true;
|
||||
}
|
||||
#endif // ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING
|
||||
#if ENABLE_GIZMO_TOOLBAR_DRAGGING_FIX
|
||||
else if (evt.Dragging() && is_dragging())
|
||||
{
|
||||
if (!m_parent.get_wxglcanvas()->HasCapture())
|
||||
|
@ -564,6 +605,98 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt)
|
|||
m_parent.set_as_dirty();
|
||||
processed = true;
|
||||
}
|
||||
#endif // ENABLE_GIZMO_TOOLBAR_DRAGGING_FIX
|
||||
|
||||
if (get_gizmo_idx_from_mouse(mouse_pos) == Undefined)
|
||||
{
|
||||
// mouse is outside the toolbar
|
||||
m_tooltip = "";
|
||||
|
||||
if (evt.LeftDown())
|
||||
{
|
||||
if ((m_current == SlaSupports || m_current == Hollow) && gizmo_event(SLAGizmoEventType::LeftDown, mouse_pos, evt.ShiftDown(), evt.AltDown(), evt.ControlDown()))
|
||||
// the gizmo got the event and took some action, there is no need to do anything more
|
||||
processed = true;
|
||||
else if (!selection.is_empty() && grabber_contains_mouse()) {
|
||||
update_data();
|
||||
selection.start_dragging();
|
||||
start_dragging();
|
||||
|
||||
if (m_current == Flatten) {
|
||||
// Rotate the object so the normal points downward:
|
||||
m_parent.do_flatten(get_flattening_normal(), L("Gizmo-Place on Face"));
|
||||
wxGetApp().obj_manipul()->set_dirty();
|
||||
}
|
||||
|
||||
m_parent.set_as_dirty();
|
||||
processed = true;
|
||||
}
|
||||
}
|
||||
else if (evt.RightDown() && (selected_object_idx != -1) && (m_current == SlaSupports || m_current == Hollow) && gizmo_event(SLAGizmoEventType::RightDown))
|
||||
{
|
||||
// we need to set the following right up as processed to avoid showing the context menu if the user release the mouse over the object
|
||||
pending_right_up = true;
|
||||
// event was taken care of by the SlaSupports gizmo
|
||||
processed = true;
|
||||
}
|
||||
else if (evt.Dragging() && (m_parent.get_move_volume_id() != -1) && (m_current == SlaSupports || m_current == Hollow))
|
||||
// don't allow dragging objects with the Sla gizmo on
|
||||
processed = true;
|
||||
else if (evt.Dragging() && (m_current == SlaSupports || m_current == Hollow) && gizmo_event(SLAGizmoEventType::Dragging, mouse_pos, evt.ShiftDown(), evt.AltDown(), evt.ControlDown()))
|
||||
{
|
||||
// the gizmo got the event and took some action, no need to do anything more here
|
||||
m_parent.set_as_dirty();
|
||||
processed = true;
|
||||
}
|
||||
#if !ENABLE_GIZMO_TOOLBAR_DRAGGING_FIX
|
||||
else if (evt.Dragging() && is_dragging())
|
||||
{
|
||||
if (!m_parent.get_wxglcanvas()->HasCapture())
|
||||
m_parent.get_wxglcanvas()->CaptureMouse();
|
||||
|
||||
m_parent.set_mouse_as_dragging();
|
||||
update(m_parent.mouse_ray(pos), pos);
|
||||
|
||||
switch (m_current)
|
||||
{
|
||||
case Move:
|
||||
{
|
||||
// Apply new temporary offset
|
||||
selection.translate(get_displacement());
|
||||
wxGetApp().obj_manipul()->set_dirty();
|
||||
break;
|
||||
}
|
||||
case Scale:
|
||||
{
|
||||
// Apply new temporary scale factors
|
||||
TransformationType transformation_type(TransformationType::Local_Absolute_Joint);
|
||||
if (evt.AltDown())
|
||||
transformation_type.set_independent();
|
||||
selection.scale(get_scale(), transformation_type);
|
||||
if (evt.ControlDown())
|
||||
selection.translate(get_scale_offset(), true);
|
||||
wxGetApp().obj_manipul()->set_dirty();
|
||||
break;
|
||||
}
|
||||
case Rotate:
|
||||
{
|
||||
// Apply new temporary rotations
|
||||
TransformationType transformation_type(TransformationType::World_Relative_Joint);
|
||||
if (evt.AltDown())
|
||||
transformation_type.set_independent();
|
||||
selection.rotate(get_rotation(), transformation_type);
|
||||
wxGetApp().obj_manipul()->set_dirty();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
m_parent.set_as_dirty();
|
||||
processed = true;
|
||||
}
|
||||
#endif // !ENABLE_GIZMO_TOOLBAR_DRAGGING_FIX
|
||||
#if !ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING
|
||||
else if (evt.LeftUp() && is_dragging())
|
||||
{
|
||||
switch (m_current) {
|
||||
|
@ -585,6 +718,7 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt)
|
|||
|
||||
processed = true;
|
||||
}
|
||||
#endif // !ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING
|
||||
else if (evt.LeftUp() && (m_current == SlaSupports || m_current == Hollow) && !m_parent.is_mouse_dragging())
|
||||
{
|
||||
// in case SLA gizmo is selected, we just pass the LeftUp event and stop processing - neither
|
||||
|
@ -623,8 +757,10 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt)
|
|||
m_mouse_capture.right = true;
|
||||
m_mouse_capture.parent = &m_parent;
|
||||
}
|
||||
#if !ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING
|
||||
else if (evt.LeftUp())
|
||||
processed = true;
|
||||
#endif // !ENABLE_MODIFIED_GIZMOBAR_MOUSE_EVENT_HANDLING
|
||||
}
|
||||
|
||||
return processed;
|
||||
|
|
|
@ -204,7 +204,7 @@ public:
|
|||
|
||||
void render_overlay() const;
|
||||
|
||||
const std::string& get_tooltip() const { return m_tooltip; }
|
||||
std::string get_tooltip() const;
|
||||
|
||||
bool on_mouse(wxMouseEvent& evt);
|
||||
bool on_mouse_wheel(wxMouseEvent& evt);
|
||||
|
|
|
@ -441,15 +441,37 @@ bool ImGuiWrapper::want_any_input() const
|
|||
return io.WantCaptureMouse || io.WantCaptureKeyboard || io.WantTextInput;
|
||||
}
|
||||
|
||||
#ifdef __APPLE__
|
||||
static const ImWchar ranges_keyboard_shortcuts[] =
|
||||
{
|
||||
0x21E7, 0x21E7, // OSX Shift Key symbol
|
||||
0x2318, 0x2318, // OSX Command Key symbol
|
||||
0x2325, 0x2325, // OSX Option Key symbol
|
||||
0,
|
||||
};
|
||||
#endif // __APPLE__
|
||||
|
||||
void ImGuiWrapper::init_font(bool compress)
|
||||
{
|
||||
destroy_font();
|
||||
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
io.Fonts->Clear();
|
||||
//FIXME replace with io.Fonts->AddFontFromMemoryTTF(buf_decompressed_data, (int)buf_decompressed_size, m_font_size, nullptr, m_glyph_ranges);
|
||||
|
||||
// Create ranges of characters from m_glyph_ranges, possibly adding some OS specific special characters.
|
||||
ImVector<ImWchar> ranges;
|
||||
ImFontAtlas::GlyphRangesBuilder builder;
|
||||
builder.AddRanges(m_glyph_ranges);
|
||||
#ifdef __APPLE__
|
||||
if (m_font_cjk)
|
||||
// Apple keyboard shortcuts are only contained in the CJK fonts.
|
||||
builder.AddRanges(ranges_keyboard_shortcuts);
|
||||
#endif
|
||||
builder.BuildRanges(&ranges); // Build the final result (ordered ranges with all the unique characters submitted)
|
||||
|
||||
//FIXME replace with io.Fonts->AddFontFromMemoryTTF(buf_decompressed_data, (int)buf_decompressed_size, m_font_size, nullptr, ranges.Data);
|
||||
//https://github.com/ocornut/imgui/issues/220
|
||||
ImFont* font = io.Fonts->AddFontFromFileTTF((Slic3r::resources_dir() + "/fonts/" + (m_font_cjk ? "NotoSansCJK-Regular.ttc" : "NotoSans-Regular.ttf")).c_str(), m_font_size, nullptr, m_glyph_ranges);
|
||||
ImFont* font = io.Fonts->AddFontFromFileTTF((Slic3r::resources_dir() + "/fonts/" + (m_font_cjk ? "NotoSansCJK-Regular.ttc" : "NotoSans-Regular.ttf")).c_str(), m_font_size, nullptr, ranges.Data);
|
||||
if (font == nullptr) {
|
||||
font = io.Fonts->AddFontDefault();
|
||||
if (font == nullptr) {
|
||||
|
@ -457,6 +479,16 @@ void ImGuiWrapper::init_font(bool compress)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef __APPLE__
|
||||
ImFontConfig config;
|
||||
config.MergeMode = true;
|
||||
if (! m_font_cjk) {
|
||||
// Apple keyboard shortcuts are only contained in the CJK fonts.
|
||||
ImFont *font_cjk = io.Fonts->AddFontFromFileTTF((Slic3r::resources_dir() + "/fonts/NotoSansCJK-Regular.ttc").c_str(), m_font_size, &config, ranges_keyboard_shortcuts);
|
||||
assert(font_cjk != nullptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Build texture atlas
|
||||
unsigned char* pixels;
|
||||
int width, height;
|
||||
|
|
|
@ -129,8 +129,10 @@ void RemovableDriveManager::register_window_osx()
|
|||
|
||||
void RemovableDriveManager::unregister_window_osx()
|
||||
{
|
||||
if (m_impl_osx)
|
||||
if (m_impl_osx) {
|
||||
[m_impl_osx release];
|
||||
m_impl_osx = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
namespace search_for_drives_internal
|
||||
|
|
Loading…
Reference in a new issue