Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--resources/localization/Slic3rPE.pot1941
-rw-r--r--resources/localization/fr_FR/Slic3rPE.mobin176879 -> 125865 bytes
-rw-r--r--resources/localization/fr_FR/Slic3rPE_fr.po5410
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/libslic3r/GCode.cpp4
-rw-r--r--src/libslic3r/GCode/WipeTowerPrusaMM.cpp21
-rw-r--r--src/libslic3r/GCode/WipeTowerPrusaMM.hpp5
-rw-r--r--src/libslic3r/Print.cpp3
-rw-r--r--src/libslic3r/PrintConfig.cpp36
-rw-r--r--src/libslic3r/Rasterizer/Rasterizer.cpp29
-rw-r--r--src/libslic3r/Rasterizer/Rasterizer.hpp23
-rw-r--r--src/libslic3r/SLA/SLASupportTree.cpp11
-rw-r--r--src/libslic3r/SLAPrint.cpp31
-rw-r--r--src/slic3r/GUI/AboutDialog.cpp58
-rw-r--r--src/slic3r/GUI/AboutDialog.hpp11
-rw-r--r--src/slic3r/GUI/BedShapeDialog.cpp19
-rw-r--r--src/slic3r/GUI/BedShapeDialog.hpp14
-rw-r--r--src/slic3r/GUI/BitmapCache.cpp5
-rw-r--r--src/slic3r/GUI/ButtonsDescription.cpp3
-rw-r--r--src/slic3r/GUI/ButtonsDescription.hpp6
-rw-r--r--src/slic3r/GUI/ConfigSnapshotDialog.cpp38
-rw-r--r--src/slic3r/GUI/ConfigSnapshotDialog.hpp8
-rw-r--r--src/slic3r/GUI/ConfigWizard.cpp98
-rw-r--r--src/slic3r/GUI/ConfigWizard.hpp8
-rw-r--r--src/slic3r/GUI/ConfigWizard_private.hpp23
-rw-r--r--src/slic3r/GUI/Field.cpp158
-rw-r--r--src/slic3r/GUI/Field.hpp69
-rw-r--r--src/slic3r/GUI/FirmwareDialog.cpp59
-rw-r--r--src/slic3r/GUI/FirmwareDialog.hpp14
-rw-r--r--src/slic3r/GUI/GLCanvas3D.cpp41
-rw-r--r--src/slic3r/GUI/GLCanvas3D.hpp9
-rw-r--r--src/slic3r/GUI/GUI_App.cpp20
-rw-r--r--src/slic3r/GUI/GUI_App.hpp3
-rw-r--r--src/slic3r/GUI/GUI_ObjectList.cpp153
-rw-r--r--src/slic3r/GUI/GUI_ObjectList.hpp41
-rw-r--r--src/slic3r/GUI/GUI_ObjectManipulation.cpp24
-rw-r--r--src/slic3r/GUI/GUI_ObjectManipulation.hpp4
-rw-r--r--src/slic3r/GUI/GUI_ObjectSettings.cpp36
-rw-r--r--src/slic3r/GUI/GUI_ObjectSettings.hpp4
-rw-r--r--src/slic3r/GUI/GUI_Preview.cpp14
-rw-r--r--src/slic3r/GUI/GUI_Preview.hpp6
-rw-r--r--src/slic3r/GUI/GUI_Utils.hpp97
-rw-r--r--src/slic3r/GUI/KBShortcutsDialog.cpp58
-rw-r--r--src/slic3r/GUI/KBShortcutsDialog.hpp20
-rw-r--r--src/slic3r/GUI/MainFrame.cpp47
-rw-r--r--src/slic3r/GUI/MainFrame.hpp1
-rw-r--r--src/slic3r/GUI/MsgDialog.cpp7
-rw-r--r--src/slic3r/GUI/OptionsGroup.cpp105
-rw-r--r--src/slic3r/GUI/OptionsGroup.hpp10
-rw-r--r--src/slic3r/GUI/Plater.cpp207
-rw-r--r--src/slic3r/GUI/Plater.hpp11
-rw-r--r--src/slic3r/GUI/Preferences.cpp26
-rw-r--r--src/slic3r/GUI/Preferences.hpp6
-rw-r--r--src/slic3r/GUI/Preset.cpp47
-rw-r--r--src/slic3r/GUI/Preset.hpp4
-rw-r--r--src/slic3r/GUI/PresetBundle.cpp34
-rw-r--r--src/slic3r/GUI/PrintHostDialogs.cpp17
-rw-r--r--src/slic3r/GUI/PrintHostDialogs.hpp8
-rw-r--r--src/slic3r/GUI/RammingChart.cpp163
-rw-r--r--src/slic3r/GUI/SysInfoDialog.cpp71
-rw-r--r--src/slic3r/GUI/SysInfoDialog.hpp16
-rw-r--r--src/slic3r/GUI/Tab.cpp290
-rw-r--r--src/slic3r/GUI/Tab.hpp66
-rw-r--r--src/slic3r/GUI/UpdateDialogs.cpp13
-rw-r--r--src/slic3r/GUI/wxExtensions.cpp992
-rw-r--r--src/slic3r/GUI/wxExtensions.hpp490
66 files changed, 6177 insertions, 5092 deletions
diff --git a/resources/localization/Slic3rPE.pot b/resources/localization/Slic3rPE.pot
index c65ea69d4..098fc7d07 100644
--- a/resources/localization/Slic3rPE.pot
+++ b/resources/localization/Slic3rPE.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-18 10:07+0200\n"
+"POT-Creation-Date: 2019-04-26 11:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,44 +22,44 @@ msgstr ""
msgid "About %s"
msgstr ""
-#: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52
+#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:52
msgid "Version"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:43
+#: src/slic3r/GUI/BedShapeDialog.cpp:60
msgid "Shape"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:51
+#: src/slic3r/GUI/BedShapeDialog.cpp:68
msgid "Rectangular"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:55
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136
-#: src/slic3r/GUI/Tab.cpp:2186
+#: src/slic3r/GUI/BedShapeDialog.cpp:72
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:137
+#: src/slic3r/GUI/Tab.cpp:2257
msgid "Size"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:56
+#: src/slic3r/GUI/BedShapeDialog.cpp:73
msgid "Size in X and Y of the rectangular plate."
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:62
+#: src/slic3r/GUI/BedShapeDialog.cpp:79
msgid "Origin"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:63
+#: src/slic3r/GUI/BedShapeDialog.cpp:80
msgid ""
"Distance of the 0,0 G-code coordinate from the front left corner of the "
"rectangle."
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:67
+#: src/slic3r/GUI/BedShapeDialog.cpp:84
msgid "Circular"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111
-#: src/slic3r/GUI/ConfigWizard.cpp:547 src/slic3r/GUI/ConfigWizard.cpp:561
+#: src/slic3r/GUI/BedShapeDialog.cpp:87 src/slic3r/GUI/ConfigWizard.cpp:118
+#: src/slic3r/GUI/ConfigWizard.cpp:561 src/slic3r/GUI/ConfigWizard.cpp:575
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115
#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84
#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66
@@ -90,47 +90,47 @@ msgstr ""
msgid "mm"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676
+#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:676
msgid "Diameter"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:72
+#: src/slic3r/GUI/BedShapeDialog.cpp:89
msgid ""
"Diameter of the print bed. It is assumed that origin (0,0) is located in the "
"center."
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239
+#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/slic3r/GUI/GUI_Preview.cpp:239
#: src/libslic3r/GCode/PreviewData.cpp:175
msgid "Custom"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:80
+#: src/slic3r/GUI/BedShapeDialog.cpp:97
msgid "Load shape from STL..."
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:126
+#: src/slic3r/GUI/BedShapeDialog.cpp:143
msgid "Settings"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:299
+#: src/slic3r/GUI/BedShapeDialog.cpp:316
msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):"
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1320
+#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1359
msgid "Error! "
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:325
+#: src/slic3r/GUI/BedShapeDialog.cpp:342
msgid "The selected file contains no geometry."
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.cpp:329
+#: src/slic3r/GUI/BedShapeDialog.cpp:346
msgid ""
"The selected file contains several disjoint areas. This is not supported."
msgstr ""
-#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:510
+#: src/slic3r/GUI/BedShapeDialog.hpp:45 src/slic3r/GUI/ConfigWizard.cpp:524
msgid "Bed Shape"
msgstr ""
@@ -162,377 +162,379 @@ msgstr ""
msgid "Finished"
msgstr ""
-#: src/slic3r/GUI/ButtonsDescription.cpp:15
+#: src/slic3r/GUI/ButtonsDescription.cpp:16
msgid "Buttons And Text Colors Description"
msgstr ""
-#: src/slic3r/GUI/ButtonsDescription.cpp:40
+#: src/slic3r/GUI/ButtonsDescription.cpp:41
msgid "Value is the same as the system value"
msgstr ""
-#: src/slic3r/GUI/ButtonsDescription.cpp:57
+#: src/slic3r/GUI/ButtonsDescription.cpp:58
msgid ""
"Value was changed and is not equal to the system value or the last saved "
"preset"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18
msgid "Upgrade"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20
msgid "Downgrade"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22
msgid "Before roll back"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24
msgid "User"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27
msgid "Unknown"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:39
msgid "Active: "
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45
msgid "slic3r version"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1252
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1274
msgid "print"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47
msgid "filaments"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1256
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:48 src/slic3r/GUI/Preset.cpp:1278
msgid "printer"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:921
msgid "vendor"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52
msgid "version"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53
msgid "min slic3r version"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55
msgid "max slic3r version"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58
msgid "model"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58
msgid "variants"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69
-msgid "Incompatible with this Slic3r"
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:70
+#, possible-c-format
+msgid "Incompatible with this %s"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:73
msgid "Activate"
msgstr ""
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:99
msgid "Configuration Snapshots"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:111
+#: src/slic3r/GUI/ConfigWizard.cpp:118
msgid "nozzle"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:115
+#: src/slic3r/GUI/ConfigWizard.cpp:122
msgid "Alternate nozzles:"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:181
+#: src/slic3r/GUI/ConfigWizard.cpp:188
msgid "All standard"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2910
+#: src/slic3r/GUI/ConfigWizard.cpp:189 src/slic3r/GUI/Tab.cpp:2986
msgid "All"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:413
+#: src/slic3r/GUI/ConfigWizard.cpp:190 src/slic3r/GUI/Plater.cpp:422
#: src/libslic3r/GCode/PreviewData.cpp:162
msgid "None"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:284
+#: src/slic3r/GUI/ConfigWizard.cpp:294
#, possible-c-format
msgid "Welcome to the %s %s"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:284
+#: src/slic3r/GUI/ConfigWizard.cpp:294
msgid "Welcome"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:632
+#: src/slic3r/GUI/ConfigWizard.cpp:298 src/slic3r/GUI/GUI_App.cpp:643
#, possible-c-format
msgid "Run %s"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:290
+#: src/slic3r/GUI/ConfigWizard.cpp:300
#, possible-c-format
msgid ""
"Hello, welcome to %s! This %s helps you with the initial configuration; just "
"a few settings and you will be ready to print."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:295
+#: src/slic3r/GUI/ConfigWizard.cpp:305
msgid ""
"Remove user profiles - install from scratch (a snapshot will be taken "
"beforehand)"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:326
+#: src/slic3r/GUI/ConfigWizard.cpp:336
#, possible-c-format
msgid "%s Family"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:363
+#: src/slic3r/GUI/ConfigWizard.cpp:373
msgid "Custom Printer Setup"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:363
+#: src/slic3r/GUI/ConfigWizard.cpp:373
msgid "Custom Printer"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:365
+#: src/slic3r/GUI/ConfigWizard.cpp:375
msgid "Define a custom printer profile"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:367
+#: src/slic3r/GUI/ConfigWizard.cpp:377
msgid "Custom profile name:"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:391
+#: src/slic3r/GUI/ConfigWizard.cpp:401
msgid "Automatic updates"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:391
+#: src/slic3r/GUI/ConfigWizard.cpp:401
msgid "Updates"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:399 src/slic3r/GUI/Preferences.cpp:59
+#: src/slic3r/GUI/ConfigWizard.cpp:409 src/slic3r/GUI/Preferences.cpp:61
msgid "Check for application updates"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:402
+#: src/slic3r/GUI/ConfigWizard.cpp:413
#, possible-c-format
msgid ""
-"If enabled, Slic3r checks for new versions of %s online. When a new version "
-"becomes available, a notification is displayed at the next application "
-"startup (never during program usage). This is only a notification "
-"mechanisms, no automatic installation is done."
+"If enabled, %s checks for new application versions online. When a new "
+"version becomes available, a notification is displayed at the next "
+"application startup (never during program usage). This is only a "
+"notification mechanisms, no automatic installation is done."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:67
+#: src/slic3r/GUI/ConfigWizard.cpp:419 src/slic3r/GUI/Preferences.cpp:69
msgid "Update built-in Presets automatically"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:411 src/slic3r/GUI/Preferences.cpp:69
+#: src/slic3r/GUI/ConfigWizard.cpp:423
+#, possible-c-format
msgid ""
-"If enabled, Slic3r downloads updates of built-in system presets in the "
-"background. These updates are downloaded into a separate temporary location. "
+"If enabled, %s downloads updates of built-in system presets in the "
+"background.These updates are downloaded into a separate temporary location."
"When a new preset version becomes available it is offered at application "
"startup."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:412
+#: src/slic3r/GUI/ConfigWizard.cpp:426
msgid ""
"Updates are never applied without user's consent and never overwrite user's "
"customized settings."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:417
+#: src/slic3r/GUI/ConfigWizard.cpp:431
msgid ""
"Additionally a backup snapshot of the whole configuration is created before "
"an update is applied."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:424
+#: src/slic3r/GUI/ConfigWizard.cpp:438
msgid "Other Vendors"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:426
+#: src/slic3r/GUI/ConfigWizard.cpp:440
#, possible-c-format
msgid "Pick another vendor supported by %s:"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:472
+#: src/slic3r/GUI/ConfigWizard.cpp:486
msgid "Firmware Type"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:472 src/slic3r/GUI/Tab.cpp:1870
+#: src/slic3r/GUI/ConfigWizard.cpp:486 src/slic3r/GUI/Tab.cpp:1920
msgid "Firmware"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:476
+#: src/slic3r/GUI/ConfigWizard.cpp:490
msgid "Choose the type of firmware used by your printer."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:510
+#: src/slic3r/GUI/ConfigWizard.cpp:524
msgid "Bed Shape and Size"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:513
+#: src/slic3r/GUI/ConfigWizard.cpp:527
msgid "Set the shape of your printer's bed."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:527
+#: src/slic3r/GUI/ConfigWizard.cpp:541
msgid "Filament and Nozzle Diameters"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:527
+#: src/slic3r/GUI/ConfigWizard.cpp:541
msgid "Print Diameters"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:543
+#: src/slic3r/GUI/ConfigWizard.cpp:557
msgid "Enter the diameter of your printer's hot end nozzle."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:546
+#: src/slic3r/GUI/ConfigWizard.cpp:560
msgid "Nozzle Diameter:"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:556
+#: src/slic3r/GUI/ConfigWizard.cpp:570
msgid "Enter the diameter of your filament."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:557
+#: src/slic3r/GUI/ConfigWizard.cpp:571
msgid ""
"Good precision is required, so use a caliper and do multiple measurements "
"along the filament, then compute the average."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:560
+#: src/slic3r/GUI/ConfigWizard.cpp:574
msgid "Filament Diameter:"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:578
+#: src/slic3r/GUI/ConfigWizard.cpp:592
msgid "Extruder and Bed Temperatures"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:578
+#: src/slic3r/GUI/ConfigWizard.cpp:592
msgid "Temperatures"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:594
+#: src/slic3r/GUI/ConfigWizard.cpp:608
msgid "Enter the temperature needed for extruding your filament."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:595
+#: src/slic3r/GUI/ConfigWizard.cpp:609
msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:598
+#: src/slic3r/GUI/ConfigWizard.cpp:612
msgid "Extrusion Temperature:"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:599 src/slic3r/GUI/ConfigWizard.cpp:613
+#: src/slic3r/GUI/ConfigWizard.cpp:613 src/slic3r/GUI/ConfigWizard.cpp:627
msgid "°C"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:608
+#: src/slic3r/GUI/ConfigWizard.cpp:622
msgid ""
"Enter the bed temperature needed for getting your filament to stick to your "
"heated bed."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:609
+#: src/slic3r/GUI/ConfigWizard.cpp:623
msgid ""
"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have "
"no heated bed."
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:612
+#: src/slic3r/GUI/ConfigWizard.cpp:626
msgid "Bed Temperature:"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1017
+#: src/slic3r/GUI/ConfigWizard.cpp:1063
msgid "Select all standard printers"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1020
+#: src/slic3r/GUI/ConfigWizard.cpp:1066
msgid "< &Back"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1021
+#: src/slic3r/GUI/ConfigWizard.cpp:1067
msgid "&Next >"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1022
+#: src/slic3r/GUI/ConfigWizard.cpp:1068
msgid "&Finish"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1023 src/slic3r/GUI/FirmwareDialog.cpp:142
+#: src/slic3r/GUI/ConfigWizard.cpp:1069 src/slic3r/GUI/FirmwareDialog.cpp:147
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37
#: src/slic3r/GUI/ProgressStatusBar.cpp:28
msgid "Cancel"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1037
+#: src/slic3r/GUI/ConfigWizard.cpp:1083
msgid "Prusa FFF Technology Printers"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1040
+#: src/slic3r/GUI/ConfigWizard.cpp:1086
msgid "Prusa MSLA Technology Printers"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1127
+#: src/slic3r/GUI/ConfigWizard.cpp:1173
msgid "Configuration Wizard"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1128
+#: src/slic3r/GUI/ConfigWizard.cpp:1174
msgid "Configuration &Wizard"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1130
+#: src/slic3r/GUI/ConfigWizard.cpp:1176
msgid "Configuration Assistant"
msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1131
+#: src/slic3r/GUI/ConfigWizard.cpp:1177
msgid "Configuration &Assistant"
msgstr ""
-#: src/slic3r/GUI/Field.cpp:111
+#: src/slic3r/GUI/Field.cpp:105
msgid "default value"
msgstr ""
-#: src/slic3r/GUI/Field.cpp:114
+#: src/slic3r/GUI/Field.cpp:108
msgid "parameter name"
msgstr ""
-#: src/slic3r/GUI/Field.cpp:142
+#: src/slic3r/GUI/Field.cpp:136
#, possible-c-format
msgid "%s doesn't support percentage"
msgstr ""
-#: src/slic3r/GUI/Field.cpp:156 src/slic3r/GUI/Field.cpp:179
+#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/Field.cpp:173
msgid "Invalid numeric input."
msgstr ""
-#: src/slic3r/GUI/Field.cpp:161
+#: src/slic3r/GUI/Field.cpp:155
msgid "Input value is out of range"
msgstr ""
-#: src/slic3r/GUI/Field.cpp:187
+#: src/slic3r/GUI/Field.cpp:181
#, possible-c-format
msgid ""
"Do you mean %d%% instead of %d %s?\n"
@@ -540,35 +542,35 @@ msgid ""
"or NO if you are sure that %d %s is a correct value."
msgstr ""
-#: src/slic3r/GUI/Field.cpp:190
+#: src/slic3r/GUI/Field.cpp:184
msgid "Parameter validation"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:141
+#: src/slic3r/GUI/FirmwareDialog.cpp:146
msgid "Flash!"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:143
+#: src/slic3r/GUI/FirmwareDialog.cpp:148
msgid "Flashing in progress. Please do not disconnect the printer!"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:187
+#: src/slic3r/GUI/FirmwareDialog.cpp:192
msgid "Flashing failed: "
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:268
+#: src/slic3r/GUI/FirmwareDialog.cpp:273
msgid "Flashing succeeded!"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:269
+#: src/slic3r/GUI/FirmwareDialog.cpp:274
msgid "Flashing failed. Please see the avrdude log below."
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:270
+#: src/slic3r/GUI/FirmwareDialog.cpp:275
msgid "Flashing cancelled."
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:308
+#: src/slic3r/GUI/FirmwareDialog.cpp:313
#, possible-c-format
msgid ""
"This firmware hex file does not match the printer model.\n"
@@ -579,13 +581,13 @@ msgid ""
"Please only continue if you are sure this is the right thing to do."
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431
+#: src/slic3r/GUI/FirmwareDialog.cpp:400 src/slic3r/GUI/FirmwareDialog.cpp:436
#, possible-c-format
msgid ""
"Multiple %s devices found. Please only connect one at a time for flashing."
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:412
+#: src/slic3r/GUI/FirmwareDialog.cpp:417
#, possible-c-format
msgid ""
"The %s device was not found.\n"
@@ -593,89 +595,89 @@ msgid ""
"connector ..."
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:525
+#: src/slic3r/GUI/FirmwareDialog.cpp:530
#, possible-c-format
msgid "The %s device could not have been found"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:603
+#: src/slic3r/GUI/FirmwareDialog.cpp:608
#, possible-c-format
msgid "Error accessing port at %s: %s"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:605
+#: src/slic3r/GUI/FirmwareDialog.cpp:610
#, possible-c-format
msgid "Error: %s"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:735
+#: src/slic3r/GUI/FirmwareDialog.cpp:740
msgid "Firmware flasher"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:762
+#: src/slic3r/GUI/FirmwareDialog.cpp:765
msgid "Firmware image:"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:766
+#: src/slic3r/GUI/FirmwareDialog.cpp:769
msgid "Serial port:"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:768
+#: src/slic3r/GUI/FirmwareDialog.cpp:771
msgid "Autodetected"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:769
+#: src/slic3r/GUI/FirmwareDialog.cpp:772
msgid "Rescan"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:776
+#: src/slic3r/GUI/FirmwareDialog.cpp:779
msgid "Progress:"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:779
+#: src/slic3r/GUI/FirmwareDialog.cpp:782
msgid "Status:"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:780
+#: src/slic3r/GUI/FirmwareDialog.cpp:783
msgid "Ready"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:800
+#: src/slic3r/GUI/FirmwareDialog.cpp:803
msgid "Advanced: Output log"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:811
-#: src/slic3r/GUI/PrintHostDialogs.cpp:161
+#: src/slic3r/GUI/FirmwareDialog.cpp:814
+#: src/slic3r/GUI/PrintHostDialogs.cpp:160
msgid "Close"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:859
+#: src/slic3r/GUI/FirmwareDialog.cpp:862
msgid ""
"Are you sure you want to cancel firmware flashing?\n"
"This could leave your printer in an unusable state!"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:860
+#: src/slic3r/GUI/FirmwareDialog.cpp:863
msgid "Confirmation"
msgstr ""
-#: src/slic3r/GUI/FirmwareDialog.cpp:863
+#: src/slic3r/GUI/FirmwareDialog.cpp:866
msgid "Cancelling..."
msgstr ""
-#: src/slic3r/GUI/GLCanvas3D.cpp:714
+#: src/slic3r/GUI/GLCanvas3D.cpp:715
msgid "Detected object outside print volume"
msgstr ""
-#: src/slic3r/GUI/GLCanvas3D.cpp:715
+#: src/slic3r/GUI/GLCanvas3D.cpp:716
msgid "Detected toolpath outside print volume"
msgstr ""
-#: src/slic3r/GUI/GLCanvas3D.cpp:716
+#: src/slic3r/GUI/GLCanvas3D.cpp:717
msgid "Some objects are not visible when editing supports"
msgstr ""
-#: src/slic3r/GUI/GLCanvas3D.cpp:718
+#: src/slic3r/GUI/GLCanvas3D.cpp:719
msgid ""
"Detected object outside print volume\n"
"Resolve a clash to continue slicing/export process correctly"
@@ -743,104 +745,128 @@ msgstr ""
msgid "Scale (%)"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:882
-msgid "Left mouse click - add point"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:883
-msgid "Right mouse click - remove point"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:884
-msgid "Shift + Left (+ drag) - select point(s)"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:891
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:892
msgid "Head diameter: "
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:903
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:905
msgid "Lock supports under new islands"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:907
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:909
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1291
msgid "Remove selected points"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:964
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:913
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:966
msgid "Remove all points"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:916
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:918
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1294
msgid "Apply changes"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:921
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:923
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1295
msgid "Discard changes"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:929
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:931
msgid "Minimal points distance: "
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:940
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:942
msgid "Support points density: "
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:954
-msgid "Auto-generate points [A]"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:960
-msgid "Manual editing [M]"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:969
-msgid "No points (will be autogenerated)"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:970
-msgid "Autogenerated points (no modifications)"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:971
-msgid "User-modified points"
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:956
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1297
+msgid "Auto-generate points"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:972
-msgid "Generation in progress..."
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:962
+msgid "Manual editing"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:980
-msgid "Reset direction [R] "
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:982
+msgid "Reset direction"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1039
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1049
msgid "SLA Support Points [L]"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1066
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1076
msgid "Do you want to save your manually edited support points ?\n"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1067
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1077
msgid "Save changes?"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220
msgid ""
"Autogeneration will erase all manually edited points.\n"
"\n"
"Are you sure you want to do it?\n"
msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 src/slic3r/GUI/GUI.cpp:288
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 src/slic3r/GUI/GUI.cpp:288
#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328
msgid "Warning"
msgstr ""
-#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2721
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1254
+msgid "SLA gizmo keyboard shortcuts"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1283
+msgid "Add point"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1284
+msgid "Remove point"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1285
+msgid "Move point"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1286
+msgid "Add point to selection"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1287
+msgid "Remove point from selection"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1288
+msgid "Select by rectangle"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1289
+msgid "Deselect by rectangle"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1290
+msgid "Select all points"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1292
+msgid "Move clipping plane"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1293
+msgid "Reset clipping plane"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1296
+msgid "Switch to editing mode"
+msgstr ""
+
+#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2796
msgid "It's impossible to print multi-part object(s) with SLA technology."
msgstr ""
@@ -848,8 +874,8 @@ msgstr ""
msgid "Please check and fix your object list."
msgstr ""
-#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:711
-#: src/slic3r/GUI/Tab.cpp:2723
+#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:728
+#: src/slic3r/GUI/Tab.cpp:2798
msgid "Attention!"
msgstr ""
@@ -857,203 +883,207 @@ msgstr ""
msgid "Notice"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:352
+#: src/slic3r/GUI/GUI_App.cpp:363
msgid "Changing of an application language"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:360 src/slic3r/GUI/GUI_App.cpp:369
+#: src/slic3r/GUI/GUI_App.cpp:371 src/slic3r/GUI/GUI_App.cpp:380
msgid "Recreating"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:373
+#: src/slic3r/GUI/GUI_App.cpp:384
msgid "Loading of current presets"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:381
+#: src/slic3r/GUI/GUI_App.cpp:392
msgid "Loading of a mode view"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:463
+#: src/slic3r/GUI/GUI_App.cpp:474
msgid "Choose one file (3MF):"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:475
+#: src/slic3r/GUI/GUI_App.cpp:486
msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:488
+#: src/slic3r/GUI/GUI_App.cpp:499
msgid "Array of language names and identifiers should have the same size."
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:498
+#: src/slic3r/GUI/GUI_App.cpp:509
msgid "Select the language"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:498
+#: src/slic3r/GUI/GUI_App.cpp:509
msgid "Language"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:568 src/slic3r/GUI/GUI_ObjectList.cpp:1135
+#: src/slic3r/GUI/GUI_App.cpp:579 src/slic3r/GUI/GUI_ObjectList.cpp:1175
#: src/libslic3r/PrintConfig.cpp:298
msgid "Default"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:635
+#: src/slic3r/GUI/GUI_App.cpp:646
msgid "&Configuration Snapshots"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:635
+#: src/slic3r/GUI/GUI_App.cpp:646
msgid "Inspect / activate configuration snapshots"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:636
+#: src/slic3r/GUI/GUI_App.cpp:647
msgid "Take Configuration &Snapshot"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:636
+#: src/slic3r/GUI/GUI_App.cpp:647
msgid "Capture a configuration snapshot"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:639
+#: src/slic3r/GUI/GUI_App.cpp:650
msgid "&Preferences"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:645
+#: src/slic3r/GUI/GUI_App.cpp:656
msgid "Application preferences"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:648 src/slic3r/GUI/wxExtensions.cpp:2457
+#: src/slic3r/GUI/GUI_App.cpp:659 src/slic3r/GUI/wxExtensions.cpp:2374
msgid "Simple"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:648
+#: src/slic3r/GUI/GUI_App.cpp:659
msgid "Simple View Mode"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:649 src/slic3r/GUI/GUI_ObjectList.cpp:76
-#: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992
-#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093
-#: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890
-#: src/slic3r/GUI/Tab.cpp:3349 src/slic3r/GUI/wxExtensions.cpp:2458
-#: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186
-#: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987
-#: src/libslic3r/PrintConfig.cpp:2173
+#: src/slic3r/GUI/GUI_App.cpp:660 src/slic3r/GUI/GUI_ObjectList.cpp:76
+#: src/slic3r/GUI/GUI_ObjectList.cpp:458 src/slic3r/GUI/Tab.cpp:1026
+#: src/slic3r/GUI/Tab.cpp:1041 src/slic3r/GUI/Tab.cpp:1139
+#: src/slic3r/GUI/Tab.cpp:1142 src/slic3r/GUI/Tab.cpp:1515
+#: src/slic3r/GUI/Tab.cpp:1940 src/slic3r/GUI/Tab.cpp:3435
+#: src/slic3r/GUI/wxExtensions.cpp:2375 src/libslic3r/PrintConfig.cpp:72
+#: src/libslic3r/PrintConfig.cpp:186 src/libslic3r/PrintConfig.cpp:349
+#: src/libslic3r/PrintConfig.cpp:987 src/libslic3r/PrintConfig.cpp:2173
msgid "Advanced"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:649
+#: src/slic3r/GUI/GUI_App.cpp:660
msgid "Advanced View Mode"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:650 src/slic3r/GUI/wxExtensions.cpp:2459
+#: src/slic3r/GUI/GUI_App.cpp:661 src/slic3r/GUI/wxExtensions.cpp:2376
msgid "Expert"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:650
+#: src/slic3r/GUI/GUI_App.cpp:661
msgid "Expert View Mode"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:655
+#: src/slic3r/GUI/GUI_App.cpp:666
msgid "Mode"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:655
-msgid "Slic3r View Mode"
+#: src/slic3r/GUI/GUI_App.cpp:666
+#, possible-c-format
+msgid "%s View Mode"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:657
+#: src/slic3r/GUI/GUI_App.cpp:668
msgid "Change Application &Language"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:659
+#: src/slic3r/GUI/GUI_App.cpp:670
msgid "Flash printer &firmware"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:659
+#: src/slic3r/GUI/GUI_App.cpp:670
msgid "Upload a firmware image into an Arduino based printer"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:671
+#: src/slic3r/GUI/GUI_App.cpp:682
msgid "Taking configuration snapshot"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:671
+#: src/slic3r/GUI/GUI_App.cpp:682
msgid "Snapshot name"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:708
+#: src/slic3r/GUI/GUI_App.cpp:725
msgid "Application will be restarted after language change."
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:709
+#: src/slic3r/GUI/GUI_App.cpp:726
msgid "3D-Scene will be cleaned."
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:710
+#: src/slic3r/GUI/GUI_App.cpp:727
msgid "Please, check your changes before."
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:738
+#: src/slic3r/GUI/GUI_App.cpp:754
msgid "&Configuration"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:758
+#: src/slic3r/GUI/GUI_App.cpp:774
msgid "You have unsaved changes "
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:758
+#: src/slic3r/GUI/GUI_App.cpp:774
msgid ". Discard changes and continue anyway?"
msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:759
+#: src/slic3r/GUI/GUI_App.cpp:775
msgid "Unsaved Presets"
msgstr ""
#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68
-#: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149
-#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437
-#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841
-#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1304
-#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551
-#: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042
+#: src/slic3r/GUI/GUI_ObjectList.cpp:450 src/libslic3r/PrintConfig.cpp:56
+#: src/libslic3r/PrintConfig.cpp:149 src/libslic3r/PrintConfig.cpp:380
+#: src/libslic3r/PrintConfig.cpp:437 src/libslic3r/PrintConfig.cpp:445
+#: src/libslic3r/PrintConfig.cpp:841 src/libslic3r/PrintConfig.cpp:1025
+#: src/libslic3r/PrintConfig.cpp:1304 src/libslic3r/PrintConfig.cpp:1370
+#: src/libslic3r/PrintConfig.cpp:1551 src/libslic3r/PrintConfig.cpp:1986
+#: src/libslic3r/PrintConfig.cpp:2042
msgid "Layers and Perimeters"
msgstr ""
#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69
-#: src/slic3r/GUI/Plater.cpp:430 src/slic3r/GUI/Tab.cpp:981
-#: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311
-#: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388
-#: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742
-#: src/libslic3r/PrintConfig.cpp:779 src/libslic3r/PrintConfig.cpp:932
-#: src/libslic3r/PrintConfig.cpp:942 src/libslic3r/PrintConfig.cpp:960
-#: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997
-#: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675
+#: src/slic3r/GUI/GUI_ObjectList.cpp:451 src/slic3r/GUI/Plater.cpp:439
+#: src/slic3r/GUI/Tab.cpp:1030 src/slic3r/GUI/Tab.cpp:1031
+#: src/slic3r/GUI/Tab.cpp:1360 src/libslic3r/PrintConfig.cpp:166
+#: src/libslic3r/PrintConfig.cpp:388 src/libslic3r/PrintConfig.cpp:728
+#: src/libslic3r/PrintConfig.cpp:742 src/libslic3r/PrintConfig.cpp:779
+#: src/libslic3r/PrintConfig.cpp:932 src/libslic3r/PrintConfig.cpp:942
+#: src/libslic3r/PrintConfig.cpp:960 src/libslic3r/PrintConfig.cpp:978
+#: src/libslic3r/PrintConfig.cpp:997 src/libslic3r/PrintConfig.cpp:1658
+#: src/libslic3r/PrintConfig.cpp:1675
msgid "Infill"
msgstr ""
#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70
-#: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010
-#: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333
-#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779
-#: src/libslic3r/PrintConfig.cpp:1785 src/libslic3r/PrintConfig.cpp:1793
-#: src/libslic3r/PrintConfig.cpp:1805 src/libslic3r/PrintConfig.cpp:1815
-#: src/libslic3r/PrintConfig.cpp:1823 src/libslic3r/PrintConfig.cpp:1838
-#: src/libslic3r/PrintConfig.cpp:1859 src/libslic3r/PrintConfig.cpp:1870
-#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:1895
-#: src/libslic3r/PrintConfig.cpp:1904 src/libslic3r/PrintConfig.cpp:1915
-#: src/libslic3r/PrintConfig.cpp:1929 src/libslic3r/PrintConfig.cpp:1937
-#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1947
-#: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969
-#: src/libslic3r/GCode/PreviewData.cpp:172
+#: src/slic3r/GUI/GUI_ObjectList.cpp:452 src/slic3r/GUI/GUI_Preview.cpp:236
+#: src/slic3r/GUI/Tab.cpp:1059 src/slic3r/GUI/Tab.cpp:1060
+#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:1431
+#: src/libslic3r/PrintConfig.cpp:1779 src/libslic3r/PrintConfig.cpp:1785
+#: src/libslic3r/PrintConfig.cpp:1793 src/libslic3r/PrintConfig.cpp:1805
+#: src/libslic3r/PrintConfig.cpp:1815 src/libslic3r/PrintConfig.cpp:1823
+#: src/libslic3r/PrintConfig.cpp:1838 src/libslic3r/PrintConfig.cpp:1859
+#: src/libslic3r/PrintConfig.cpp:1870 src/libslic3r/PrintConfig.cpp:1886
+#: src/libslic3r/PrintConfig.cpp:1895 src/libslic3r/PrintConfig.cpp:1904
+#: src/libslic3r/PrintConfig.cpp:1915 src/libslic3r/PrintConfig.cpp:1929
+#: src/libslic3r/PrintConfig.cpp:1937 src/libslic3r/PrintConfig.cpp:1938
+#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:1955
+#: src/libslic3r/PrintConfig.cpp:1969 src/libslic3r/GCode/PreviewData.cpp:172
msgid "Support material"
msgstr ""
#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72
-#: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794
-#: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953
-#: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667
-#: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877
-#: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157
+#: src/slic3r/GUI/GUI_ObjectList.cpp:454 src/slic3r/GUI/Tab.cpp:1119
+#: src/slic3r/GUI/Tab.cpp:1844 src/libslic3r/PrintConfig.cpp:455
+#: src/libslic3r/PrintConfig.cpp:953 src/libslic3r/PrintConfig.cpp:1339
+#: src/libslic3r/PrintConfig.cpp:1667 src/libslic3r/PrintConfig.cpp:1851
+#: src/libslic3r/PrintConfig.cpp:1877 src/libslic3r/PrintConfig.cpp:2149
+#: src/libslic3r/PrintConfig.cpp:2157
msgid "Extruders"
msgstr ""
@@ -1061,41 +1091,42 @@ msgstr ""
msgid "Pad and Support"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_Preview.cpp:215
-#: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198
-#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870
-#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360
-#: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646
-#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028
+#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_ObjectList.cpp:453
+#: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1084
+#: src/libslic3r/PrintConfig.cpp:198 src/libslic3r/PrintConfig.cpp:425
+#: src/libslic3r/PrintConfig.cpp:870 src/libslic3r/PrintConfig.cpp:998
+#: src/libslic3r/PrintConfig.cpp:1360 src/libslic3r/PrintConfig.cpp:1597
+#: src/libslic3r/PrintConfig.cpp:1646 src/libslic3r/PrintConfig.cpp:1697
+#: src/libslic3r/PrintConfig.cpp:2028
msgid "Speed"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/libslic3r/PrintConfig.cpp:415
-#: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829
-#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348
-#: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860
-#: src/libslic3r/PrintConfig.cpp:2017
+#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/slic3r/GUI/GUI_ObjectList.cpp:455
+#: src/libslic3r/PrintConfig.cpp:415 src/libslic3r/PrintConfig.cpp:522
+#: src/libslic3r/PrintConfig.cpp:829 src/libslic3r/PrintConfig.cpp:961
+#: src/libslic3r/PrintConfig.cpp:1348 src/libslic3r/PrintConfig.cpp:1687
+#: src/libslic3r/PrintConfig.cpp:1860 src/libslic3r/PrintConfig.cpp:2017
msgid "Extrusion Width"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/Plater.cpp:409
-#: src/slic3r/GUI/Tab.cpp:3311 src/slic3r/GUI/Tab.cpp:3312
-#: src/libslic3r/PrintConfig.cpp:2361 src/libslic3r/PrintConfig.cpp:2368
-#: src/libslic3r/PrintConfig.cpp:2377 src/libslic3r/PrintConfig.cpp:2386
-#: src/libslic3r/PrintConfig.cpp:2396 src/libslic3r/PrintConfig.cpp:2422
-#: src/libslic3r/PrintConfig.cpp:2429 src/libslic3r/PrintConfig.cpp:2440
-#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2459
-#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2478
-#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2498
-#: src/libslic3r/PrintConfig.cpp:2506
+#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/GUI_ObjectList.cpp:460
+#: src/slic3r/GUI/Plater.cpp:418 src/slic3r/GUI/Tab.cpp:3397
+#: src/slic3r/GUI/Tab.cpp:3398 src/libslic3r/PrintConfig.cpp:2361
+#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377
+#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396
+#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2429
+#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450
+#: src/libslic3r/PrintConfig.cpp:2459 src/libslic3r/PrintConfig.cpp:2469
+#: src/libslic3r/PrintConfig.cpp:2478 src/libslic3r/PrintConfig.cpp:2488
+#: src/libslic3r/PrintConfig.cpp:2498 src/libslic3r/PrintConfig.cpp:2506
msgid "Supports"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/Tab.cpp:3339
-#: src/slic3r/GUI/Tab.cpp:3340 src/libslic3r/PrintConfig.cpp:2514
-#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2535
-#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2558
-#: src/libslic3r/PrintConfig.cpp:2567
+#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/GUI_ObjectList.cpp:461
+#: src/slic3r/GUI/Tab.cpp:3425 src/slic3r/GUI/Tab.cpp:3426
+#: src/libslic3r/PrintConfig.cpp:2514 src/libslic3r/PrintConfig.cpp:2521
+#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2545
+#: src/libslic3r/PrintConfig.cpp:2558 src/libslic3r/PrintConfig.cpp:2567
msgid "Pad"
msgstr ""
@@ -1141,217 +1172,219 @@ msgstr ""
msgid "Right button click the icon to fix STL through Netfabb"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:281 src/slic3r/GUI/Tab.cpp:1430
+#: src/slic3r/GUI/GUI_ObjectList.cpp:281 src/slic3r/GUI/Tab.cpp:1479
#: src/libslic3r/PrintConfig.cpp:454
msgid "Extruder"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:751 src/slic3r/GUI/GUI_ObjectList.cpp:1031
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1037
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1267
+#: src/slic3r/GUI/GUI_ObjectList.cpp:791 src/slic3r/GUI/GUI_ObjectList.cpp:1071
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1077
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1307
#, possible-c-format
msgid "Quick Add Settings (%s)"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:814
+#: src/slic3r/GUI/GUI_ObjectList.cpp:854
msgid "Select showing settings"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:942
+#: src/slic3r/GUI/GUI_ObjectList.cpp:982
msgid "Load"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:947 src/slic3r/GUI/GUI_ObjectList.cpp:979
-#: src/slic3r/GUI/GUI_ObjectList.cpp:982
+#: src/slic3r/GUI/GUI_ObjectList.cpp:987 src/slic3r/GUI/GUI_ObjectList.cpp:1019
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1022
msgid "Box"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+#: src/slic3r/GUI/GUI_ObjectList.cpp:987
msgid "Cylinder"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+#: src/slic3r/GUI/GUI_ObjectList.cpp:987
msgid "Sphere"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+#: src/slic3r/GUI/GUI_ObjectList.cpp:987
msgid "Slab"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:958 src/slic3r/GUI/GUI_ObjectList.cpp:974
+#: src/slic3r/GUI/GUI_ObjectList.cpp:998 src/slic3r/GUI/GUI_ObjectList.cpp:1014
msgid "Add part"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:959
+#: src/slic3r/GUI/GUI_ObjectList.cpp:999
msgid "Add modifier"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:960 src/slic3r/GUI/GUI_ObjectList.cpp:978
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1000
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1018
msgid "Add support enforcer"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:961 src/slic3r/GUI/GUI_ObjectList.cpp:981
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1001
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1021
msgid "Add support blocker"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1002
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1042
msgid "Split to parts"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1010
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1050
msgid "Add settings"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1077
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1117
msgid "Change type"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1084
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1221
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1124
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1261
msgid "Set as a Separated Object"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1092
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1132
msgid "Rename"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1102
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1142
msgid "Fix through the Netfabb"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1109 src/slic3r/GUI/Plater.cpp:2883
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 src/slic3r/GUI/Plater.cpp:2927
msgid "Export as STL"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1116
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1156
msgid "Change extruder"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1141
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1181
msgid "Select new extruder for the object/part"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1147 src/slic3r/GUI/Plater.cpp:2847
-#: src/slic3r/GUI/Plater.cpp:2865 src/slic3r/GUI/Tab.cpp:2861
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1187 src/slic3r/GUI/Plater.cpp:2891
+#: src/slic3r/GUI/Plater.cpp:2909 src/slic3r/GUI/Tab.cpp:2937
msgid "Delete"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1221
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1261
msgid "Set as a Separated Objects"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1442
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1479
msgid "Generic"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1582
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1617
msgid "You can't delete the last solid part from object."
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1599
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1634
msgid "You can't delete the last intance from object."
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1626 src/slic3r/GUI/Plater.cpp:2235
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1660 src/slic3r/GUI/Plater.cpp:2279
msgid ""
"The selected object couldn't be split because it contains only one part."
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1742
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1768
msgid "Group manipulation"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1754
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1780
msgid "Object manipulation"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1764
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1790
msgid "Object Settings to modify"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1768
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1794
msgid "Part Settings to modify"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1777
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1803
msgid "Part manipulation"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1783
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1809
msgid "Instance manipulation"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2307
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2333
msgid "Object or Instance"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2307
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2333
msgid "Part"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2309
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2335
msgid "Unsupported selection"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2310
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2336
#, possible-c-format
msgid "You started your selection with %s Item."
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2311
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2337
#, possible-c-format
msgid "In this mode you can select only other %s Items%s"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2314
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2340
msgid "of a current Object"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2319
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2392 src/slic3r/GUI/Plater.cpp:117
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2345
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2418 src/slic3r/GUI/Plater.cpp:118
msgid "Info"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2433
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2459
msgid "You can't change a type of the last solid part of the object."
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2440
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2466
msgid "Select type of part"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2605
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2630
msgid "Enter new name"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2605
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2630
msgid "Renaming"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2621
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2699 src/slic3r/GUI/Tab.cpp:3192
-#: src/slic3r/GUI/Tab.cpp:3196
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2646
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2742 src/slic3r/GUI/Tab.cpp:3278
+#: src/slic3r/GUI/Tab.cpp:3282
msgid "The supplied name is not valid;"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2622
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2700 src/slic3r/GUI/Tab.cpp:3193
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2647
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2743 src/slic3r/GUI/Tab.cpp:3279
msgid "the following characters are not allowed:"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2720
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2763
msgid "Set extruder for selected items"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2721
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2764
msgid "Select extruder number for selected objects and/or parts"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2734
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2777
msgid "Select extruder number:"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2735
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2778
msgid "This extruder will be set for selected items"
msgstr ""
@@ -1364,33 +1397,33 @@ msgid "Object name"
msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:158
msgid "Position"
msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:159
msgid "Rotation"
msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:199
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219
#: src/libslic3r/PrintConfig.cpp:3075
msgid "Scale"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160
msgid "Scale factors"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:198
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218
#: src/libslic3r/PrintConfig.cpp:3060
msgid "Rotate"
msgstr ""
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:217
msgid "Translate"
msgstr ""
@@ -1402,7 +1435,7 @@ msgstr ""
msgid "View"
msgstr ""
-#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525
+#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:537
#: src/libslic3r/GCode/PreviewData.cpp:394
msgid "Feature type"
msgstr ""
@@ -1420,12 +1453,12 @@ msgid "Volumetric flow rate"
msgstr ""
#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315
-#: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525
-#: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404
+#: src/slic3r/GUI/GUI_Preview.cpp:481 src/slic3r/GUI/GUI_Preview.cpp:537
+#: src/slic3r/GUI/GUI_Preview.cpp:713 src/libslic3r/GCode/PreviewData.cpp:404
msgid "Tool"
msgstr ""
-#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523
+#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:535
#: src/libslic3r/GCode/PreviewData.cpp:406
msgid "Color Print"
msgstr ""
@@ -1473,7 +1506,7 @@ msgstr ""
msgid "Gap fill"
msgstr ""
-#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001
+#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1050
#: src/libslic3r/GCode/PreviewData.cpp:171
msgid "Skirt"
msgstr ""
@@ -1483,7 +1516,7 @@ msgstr ""
msgid "Support material interface"
msgstr ""
-#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081
+#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1130
#: src/libslic3r/GCode/PreviewData.cpp:174
msgid "Wipe tower"
msgstr ""
@@ -1504,254 +1537,254 @@ msgstr ""
msgid "Shells"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:491
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:516
msgid "Keyboard Shortcuts"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:100
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:105
msgid "Open project STL/OBJ/AMF/3MF with config, delete bed"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:101
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:106
msgid "Import STL/OBJ/AMF/3MF without config, keep bed"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:102
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:107
msgid "Load Config from .ini/amf/3mf/gcode"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:724
-#: src/slic3r/GUI/Plater.cpp:3704 src/libslic3r/PrintConfig.cpp:2962
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:733
+#: src/slic3r/GUI/Plater.cpp:3748 src/libslic3r/PrintConfig.cpp:2962
msgid "Export G-code"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:104
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:109
msgid "Save project (3MF)"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:105
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:110
msgid "Load Config from .ini/amf/3mf/gcode and merge"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:106
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:111
msgid "(Re)slice"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:107
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:112
msgid "Quick slice"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 src/slic3r/GUI/MainFrame.cpp:349
msgid "Repeat last quick slice"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:109
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:114
msgid "Select Plater Tab"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:110
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:115
msgid "Quick slice and Save as"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:111
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:116
msgid "Select Print Settings Tab"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:112
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:117
msgid "Select Filament Settings Tab"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:113
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:118
msgid "Select Printer Settings Tab"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:114
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:119
msgid "Switch to 3D"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:115
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:120
msgid "Switch to Preview"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 src/slic3r/GUI/Preferences.cpp:10
msgid "Preferences"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:117
-#: src/slic3r/GUI/PrintHostDialogs.cpp:134
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:122
+#: src/slic3r/GUI/PrintHostDialogs.cpp:135
msgid "Print host upload queue"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:118
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:123
msgid "Camera view "
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:119
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:124
msgid "Add Instance to selected object "
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:120
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:125
msgid "Remove Instance from selected object"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:121
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:126
msgid "Show keyboard shortcuts list"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:122
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:127
msgid "Select multiple object/Move multiple object"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:124
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:129
msgid "Main Shortcuts"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:130
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:135
msgid "Arrange"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:131
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:136
msgid "Select All objects"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:132
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:137
msgid "Delete selected"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:133
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:138
msgid "Delete All"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:134
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:139
msgid "Copy to clipboard"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:135
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:140
msgid "Paste from clipboard"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:136
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:141
msgid "Gizmo move"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:137
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:142
msgid "Gizmo scale"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:138
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:143
msgid "Gizmo rotate"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:139
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:144
msgid "Gizmo cut"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:140
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:145
msgid "Gizmo Place face on bed"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:141
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:146
msgid "Gizmo SLA support points"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:142
-#, possible-c-format
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:147
+#, no-c-format
msgid ""
"Press to snap by 5% in Gizmo scale\n"
"or by 1mm in Gizmo move"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:143
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:148
msgid ""
"Press to scale or rotate selected objects\n"
"around their own center"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:144
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:149
msgid "Zoom to Bed"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:145
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:150
msgid "Zoom to all objects in scene, if none selected"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:146
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:151
msgid "Zoom to selected object"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:147
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:152
msgid "Zoom in"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:148
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:153
msgid "Zoom out"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:149
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:154
msgid "Unselect gizmo, keep object selection"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:151
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:156
msgid "Plater Shortcuts"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:166
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:171
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:182
msgid "Arrow Up"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:166
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:168
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:171
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:173
msgid "Upper Layer"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:167
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:172
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:183
msgid "Arrow Down"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:167
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:169
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:172
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:174
msgid "Lower Layer"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:171
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:176
msgid "Preview Shortcuts"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:182
msgid "Move current slider thumb Up"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:183
msgid "Move current slider thumb Down"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:179
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:184
msgid "Arrow Left"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:179
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:184
msgid "Set upper thumb to current slider thumb"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:180
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:185
msgid "Arrow Right"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:180
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:185
msgid "Set lower thumb to current slider thumb"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:181
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:186
msgid "Add color change marker for current layer"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:182
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:187
msgid "Delete color change marker for current layer"
msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:184
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:189
msgid "Layers Slider Shortcuts"
msgstr ""
@@ -1764,1042 +1797,1068 @@ msgstr ""
msgid "Plater"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:273
+#: src/slic3r/GUI/MainFrame.cpp:296
msgid "&Open Project"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:273
+#: src/slic3r/GUI/MainFrame.cpp:296
msgid "Open a project file"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:275
+#: src/slic3r/GUI/MainFrame.cpp:298
msgid "&Save Project"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:275
+#: src/slic3r/GUI/MainFrame.cpp:298
msgid "Save current project file"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:277
+#: src/slic3r/GUI/MainFrame.cpp:300
msgid "Save Project &as"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:277
+#: src/slic3r/GUI/MainFrame.cpp:300
msgid "Save current project file as"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:283
+#: src/slic3r/GUI/MainFrame.cpp:306
msgid "Import STL/OBJ/AM&F/3MF"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:283
+#: src/slic3r/GUI/MainFrame.cpp:306
msgid "Load a model"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:286
+#: src/slic3r/GUI/MainFrame.cpp:309
msgid "Import &Config"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:286
+#: src/slic3r/GUI/MainFrame.cpp:309
msgid "Load exported configuration file"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:288
+#: src/slic3r/GUI/MainFrame.cpp:311
msgid "Import Config from &project"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:288
+#: src/slic3r/GUI/MainFrame.cpp:311
msgid "Load configuration from project file"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:291
+#: src/slic3r/GUI/MainFrame.cpp:314
msgid "Import Config &Bundle"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:291
+#: src/slic3r/GUI/MainFrame.cpp:314
msgid "Load presets from a bundle"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:293
+#: src/slic3r/GUI/MainFrame.cpp:316
msgid "&Import"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:296
+#: src/slic3r/GUI/MainFrame.cpp:319
msgid "Export &G-code"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:296
+#: src/slic3r/GUI/MainFrame.cpp:319
msgid "Export current plate as G-code"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:299
+#: src/slic3r/GUI/MainFrame.cpp:322
msgid "Export plate as &STL"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:299
+#: src/slic3r/GUI/MainFrame.cpp:322
msgid "Export current plate as STL"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:301
+#: src/slic3r/GUI/MainFrame.cpp:324
msgid "Export plate as &AMF"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:301
+#: src/slic3r/GUI/MainFrame.cpp:324
msgid "Export current plate as AMF"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:304
+#: src/slic3r/GUI/MainFrame.cpp:327
msgid "Export &Config"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:304
+#: src/slic3r/GUI/MainFrame.cpp:327
msgid "Export current configuration to file"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:306
+#: src/slic3r/GUI/MainFrame.cpp:329
msgid "Export Config &Bundle"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:306
+#: src/slic3r/GUI/MainFrame.cpp:329
msgid "Export all presets to file"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:308
+#: src/slic3r/GUI/MainFrame.cpp:331
msgid "&Export"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:314
+#: src/slic3r/GUI/MainFrame.cpp:337
msgid "Quick Slice"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:314
+#: src/slic3r/GUI/MainFrame.cpp:337
msgid "Slice a file into a G-code"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:320
+#: src/slic3r/GUI/MainFrame.cpp:343
msgid "Quick Slice and Save As"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:320
+#: src/slic3r/GUI/MainFrame.cpp:343
msgid "Slice a file into a G-code, save as"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:326
+#: src/slic3r/GUI/MainFrame.cpp:349
msgid "Repeat Last Quick Slice"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:334
+#: src/slic3r/GUI/MainFrame.cpp:357
msgid "(Re)Slice &Now"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:334
+#: src/slic3r/GUI/MainFrame.cpp:357
msgid "Start new slicing process"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:337
+#: src/slic3r/GUI/MainFrame.cpp:360
msgid "&Repair STL file"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:337
+#: src/slic3r/GUI/MainFrame.cpp:360
msgid "Automatically repair an STL file"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:340
+#: src/slic3r/GUI/MainFrame.cpp:363
msgid "&Quit"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:340
-msgid "Quit Slic3r"
+#: src/slic3r/GUI/MainFrame.cpp:363
+#, possible-c-format
+msgid "Quit %s"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:374
+#: src/slic3r/GUI/MainFrame.cpp:397
msgid "&Select all"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:374
+#: src/slic3r/GUI/MainFrame.cpp:397
msgid "Selects all objects"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:377
+#: src/slic3r/GUI/MainFrame.cpp:400
msgid "&Delete selected"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:377
+#: src/slic3r/GUI/MainFrame.cpp:400
msgid "Deletes the current selection"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:379
+#: src/slic3r/GUI/MainFrame.cpp:402
msgid "Delete &all"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:379
+#: src/slic3r/GUI/MainFrame.cpp:402
msgid "Deletes all objects"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:384
+#: src/slic3r/GUI/MainFrame.cpp:407
msgid "&Copy"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:384
+#: src/slic3r/GUI/MainFrame.cpp:407
msgid "Copy selection to clipboard"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:386
+#: src/slic3r/GUI/MainFrame.cpp:409
msgid "&Paste"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:386
+#: src/slic3r/GUI/MainFrame.cpp:409
msgid "Paste clipboard"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:401
+#: src/slic3r/GUI/MainFrame.cpp:424
msgid "&Plater Tab"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:401
+#: src/slic3r/GUI/MainFrame.cpp:424
msgid "Show the plater"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:408
+#: src/slic3r/GUI/MainFrame.cpp:431
msgid "P&rint Settings Tab"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:408
+#: src/slic3r/GUI/MainFrame.cpp:431
msgid "Show the print settings"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:410
+#: src/slic3r/GUI/MainFrame.cpp:433
msgid "&Filament Settings Tab"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:410
+#: src/slic3r/GUI/MainFrame.cpp:433
msgid "Show the filament settings"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:412
+#: src/slic3r/GUI/MainFrame.cpp:435
msgid "Print&er Settings Tab"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:412
+#: src/slic3r/GUI/MainFrame.cpp:435
msgid "Show the printer settings"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:416
+#: src/slic3r/GUI/MainFrame.cpp:439
msgid "3&D"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:416
+#: src/slic3r/GUI/MainFrame.cpp:439
msgid "Show the 3D editing view"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:418
+#: src/slic3r/GUI/MainFrame.cpp:441
msgid "Pre&view"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:418
+#: src/slic3r/GUI/MainFrame.cpp:441
msgid "Show the 3D slices preview"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:439
+#: src/slic3r/GUI/MainFrame.cpp:462
msgid "Print &Host Upload Queue"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:439
+#: src/slic3r/GUI/MainFrame.cpp:462
msgid "Display the Print Host Upload Queue window"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:448
+#: src/slic3r/GUI/MainFrame.cpp:471
msgid "Iso"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:448
+#: src/slic3r/GUI/MainFrame.cpp:471
msgid "Iso View"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:450 src/libslic3r/PrintConfig.cpp:2041
+#: src/slic3r/GUI/MainFrame.cpp:473
+msgid "Top"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2041
+msgctxt "Layers"
msgid "Top"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:450
+#: src/slic3r/GUI/MainFrame.cpp:473
msgid "Top View"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:451 src/libslic3r/PrintConfig.cpp:148
+#: src/slic3r/GUI/MainFrame.cpp:474
msgid "Bottom"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:451
+#: src/libslic3r/PrintConfig.cpp:148
+msgid "Bottom"
+msgctxt "Layers"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:474
msgid "Bottom View"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:452
+#: src/slic3r/GUI/MainFrame.cpp:475
msgid "Front"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:452
+#: src/slic3r/GUI/MainFrame.cpp:475
msgid "Front View"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:453 src/libslic3r/PrintConfig.cpp:1561
+#: src/slic3r/GUI/MainFrame.cpp:476 src/libslic3r/PrintConfig.cpp:1561
msgid "Rear"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:453
+#: src/slic3r/GUI/MainFrame.cpp:476
msgid "Rear View"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:454
+#: src/slic3r/GUI/MainFrame.cpp:477
msgid "Left"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:454
+#: src/slic3r/GUI/MainFrame.cpp:477
msgid "Left View"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:455
+#: src/slic3r/GUI/MainFrame.cpp:478
msgid "Right"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:455
+#: src/slic3r/GUI/MainFrame.cpp:478
msgid "Right View"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:469
+#: src/slic3r/GUI/MainFrame.cpp:492
msgid "Prusa 3D &Drivers"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:469
+#: src/slic3r/GUI/MainFrame.cpp:492
msgid "Open the Prusa3D drivers download page in your browser"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:471
+#: src/slic3r/GUI/MainFrame.cpp:494
msgid "Prusa Edition &Releases"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:471
+#: src/slic3r/GUI/MainFrame.cpp:494
msgid "Open the Prusa Edition releases page in your browser"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:477
-msgid "Slic3r &Website"
+#: src/slic3r/GUI/MainFrame.cpp:500
+#, possible-c-format
+msgid "%s &Website"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:477
-msgid "Open the Slic3r website in your browser"
+#: src/slic3r/GUI/MainFrame.cpp:501
+#, possible-c-format
+msgid "Open the %s website in your browser"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:479
-msgid "Slic3r &Manual"
+#: src/slic3r/GUI/MainFrame.cpp:503
+#, possible-c-format
+msgid "%s &Manual"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:479
-msgid "Open the Slic3r manual in your browser"
+#: src/slic3r/GUI/MainFrame.cpp:504
+#, possible-c-format
+msgid "Open the %s manual in your browser"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:482
+#: src/slic3r/GUI/MainFrame.cpp:507
msgid "System &Info"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:482
+#: src/slic3r/GUI/MainFrame.cpp:507
msgid "Show system information"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:484
+#: src/slic3r/GUI/MainFrame.cpp:509
msgid "Show &Configuration Folder"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:484
+#: src/slic3r/GUI/MainFrame.cpp:509
msgid "Show user configuration folder (datadir)"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:486
+#: src/slic3r/GUI/MainFrame.cpp:511
msgid "Report an I&ssue"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:486
+#: src/slic3r/GUI/MainFrame.cpp:511
#, possible-c-format
msgid "Report an issue on %s"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:488
+#: src/slic3r/GUI/MainFrame.cpp:513
#, possible-c-format
msgid "&About %s"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:488
+#: src/slic3r/GUI/MainFrame.cpp:513
msgid "Show about dialog"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:491
+#: src/slic3r/GUI/MainFrame.cpp:516
msgid "Show the list of the keyboard shortcuts"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:499
+#: src/slic3r/GUI/MainFrame.cpp:524
msgid "&File"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:500
+#: src/slic3r/GUI/MainFrame.cpp:525
msgid "&Edit"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:501
+#: src/slic3r/GUI/MainFrame.cpp:526
msgid "&Window"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:502
+#: src/slic3r/GUI/MainFrame.cpp:527
msgid "&View"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:505
+#: src/slic3r/GUI/MainFrame.cpp:530
msgid "&Help"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:533
+#: src/slic3r/GUI/MainFrame.cpp:558
msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:547
+#: src/slic3r/GUI/MainFrame.cpp:572
msgid "No previously sliced file."
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:548 src/slic3r/GUI/PrintHostDialogs.cpp:219
+#: src/slic3r/GUI/MainFrame.cpp:573 src/slic3r/GUI/PrintHostDialogs.cpp:230
msgid "Error"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:553
+#: src/slic3r/GUI/MainFrame.cpp:578
msgid "Previously sliced file ("
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:553
+#: src/slic3r/GUI/MainFrame.cpp:578
msgid ") not found."
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:554
+#: src/slic3r/GUI/MainFrame.cpp:579
msgid "File Not Found"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:589 src/slic3r/GUI/Tab.cpp:3153
+#: src/slic3r/GUI/MainFrame.cpp:614 src/slic3r/GUI/Tab.cpp:3239
msgid "Save "
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:589
+#: src/slic3r/GUI/MainFrame.cpp:614
msgid "SVG"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:589
+#: src/slic3r/GUI/MainFrame.cpp:614
msgid "G-code"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:589
+#: src/slic3r/GUI/MainFrame.cpp:614
msgid " file as:"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:604
+#: src/slic3r/GUI/MainFrame.cpp:629
msgid "Save zip file as:"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:616 src/slic3r/GUI/Plater.cpp:2368
-#: src/slic3r/GUI/Plater.cpp:3498 src/slic3r/GUI/Tab.cpp:1110
-#: src/slic3r/GUI/Tab.cpp:3350
+#: src/slic3r/GUI/MainFrame.cpp:641 src/slic3r/GUI/Plater.cpp:2412
+#: src/slic3r/GUI/Plater.cpp:3542 src/slic3r/GUI/Tab.cpp:1159
+#: src/slic3r/GUI/Tab.cpp:3436
msgid "Slicing"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:616
+#: src/slic3r/GUI/MainFrame.cpp:641
msgid "Processing "
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:639
+#: src/slic3r/GUI/MainFrame.cpp:664
msgid " was successfully sliced."
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:641
+#: src/slic3r/GUI/MainFrame.cpp:666
msgid "Slicing Done!"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:656
+#: src/slic3r/GUI/MainFrame.cpp:681
msgid "Select the STL file to repair:"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:669
+#: src/slic3r/GUI/MainFrame.cpp:694
msgid "Save OBJ file (less prone to coordinate errors than STL) as:"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:684
+#: src/slic3r/GUI/MainFrame.cpp:709
msgid "Your file was repaired."
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:684 src/libslic3r/PrintConfig.cpp:3056
+#: src/slic3r/GUI/MainFrame.cpp:709 src/libslic3r/PrintConfig.cpp:3056
msgid "Repair"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:698
+#: src/slic3r/GUI/MainFrame.cpp:723
msgid "Save configuration as:"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:718 src/slic3r/GUI/MainFrame.cpp:782
+#: src/slic3r/GUI/MainFrame.cpp:743 src/slic3r/GUI/MainFrame.cpp:807
msgid "Select configuration to load:"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:755
+#: src/slic3r/GUI/MainFrame.cpp:780
msgid "Save presets bundle as:"
msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:806
+#: src/slic3r/GUI/MainFrame.cpp:831
#, possible-c-format
msgid "%d presets successfully imported."
msgstr ""
-#: src/slic3r/GUI/MsgDialog.cpp:71
-msgid "Slic3r error"
+#: src/slic3r/GUI/MsgDialog.cpp:73
+#, possible-c-format
+msgid "%s error"
msgstr ""
-#: src/slic3r/GUI/MsgDialog.cpp:71
-msgid "Slic3r has encountered an error"
+#: src/slic3r/GUI/MsgDialog.cpp:74
+#, possible-c-format
+msgid "%s has encountered an error"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:137
+#: src/slic3r/GUI/Plater.cpp:138
msgid "Volume"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:138
+#: src/slic3r/GUI/Plater.cpp:139
msgid "Facets"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:139
+#: src/slic3r/GUI/Plater.cpp:140
msgid "Materials"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:142
+#: src/slic3r/GUI/Plater.cpp:143
msgid "Manifold"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:187
+#: src/slic3r/GUI/Plater.cpp:193
msgid "Sliced Info"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:206 src/slic3r/GUI/Plater.cpp:998
+#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1042
msgid "Used Filament (m)"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:207
+#: src/slic3r/GUI/Plater.cpp:213
msgid "Used Filament (mm³)"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:208
+#: src/slic3r/GUI/Plater.cpp:214
msgid "Used Filament (g)"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:209
+#: src/slic3r/GUI/Plater.cpp:215
msgid "Used Material (unit)"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:210 src/slic3r/GUI/Plater.cpp:1013
+#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1057
#: src/libslic3r/PrintConfig.cpp:716
msgid "Cost"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:985
-#: src/slic3r/GUI/Plater.cpp:1027
+#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1029
+#: src/slic3r/GUI/Plater.cpp:1071
msgid "Estimated printing time"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:212
+#: src/slic3r/GUI/Plater.cpp:218
msgid "Number of tool changes"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:289
+#: src/slic3r/GUI/Plater.cpp:292
msgid "Click to edit preset"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:412
+#: src/slic3r/GUI/Plater.cpp:421
msgid "Select what kind of support do you need"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:414 src/libslic3r/PrintConfig.cpp:1814
+#: src/slic3r/GUI/Plater.cpp:423 src/libslic3r/PrintConfig.cpp:1814
#: src/libslic3r/PrintConfig.cpp:2421
msgid "Support on build plate only"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:415
+#: src/slic3r/GUI/Plater.cpp:424
msgid "Everywhere"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:437 src/slic3r/GUI/Tab.cpp:1007
+#: src/slic3r/GUI/Plater.cpp:446 src/slic3r/GUI/Tab.cpp:1056
msgid "Brim"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:439
+#: src/slic3r/GUI/Plater.cpp:448
msgid ""
"This flag enables the brim that will be printed around each object on the "
"first layer."
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:447
+#: src/slic3r/GUI/Plater.cpp:456
msgid "Purging volumes"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:672
+#: src/slic3r/GUI/Plater.cpp:681
msgid "Print settings"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:673 src/slic3r/GUI/Tab.cpp:1421
-#: src/slic3r/GUI/Tab.cpp:1422
+#: src/slic3r/GUI/Plater.cpp:682 src/slic3r/GUI/Tab.cpp:1470
+#: src/slic3r/GUI/Tab.cpp:1471
msgid "Filament"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Preset.cpp:1254
+#: src/slic3r/GUI/Plater.cpp:683 src/slic3r/GUI/Preset.cpp:1276
msgid "SLA print"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1255
+#: src/slic3r/GUI/Plater.cpp:684 src/slic3r/GUI/Preset.cpp:1277
msgid "SLA material"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:676
+#: src/slic3r/GUI/Plater.cpp:685
msgid "Printer"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:706 src/slic3r/GUI/Plater.cpp:3705
+#: src/slic3r/GUI/Plater.cpp:731 src/slic3r/GUI/Plater.cpp:3749
msgid "Send to printer"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:726 src/slic3r/GUI/Plater.cpp:2368
-#: src/slic3r/GUI/Plater.cpp:3501
+#: src/slic3r/GUI/Plater.cpp:734 src/slic3r/GUI/Plater.cpp:2412
+#: src/slic3r/GUI/Plater.cpp:3545
msgid "Slice now"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:860
+#: src/slic3r/GUI/Plater.cpp:873
msgid "Hold Shift to Slice & Export G-code"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:931
+#: src/slic3r/GUI/Plater.cpp:975
#, possible-c-format
msgid "%d (%d shells)"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:936
+#: src/slic3r/GUI/Plater.cpp:980
#, possible-c-format
msgid "Auto-repaired (%d errors)"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:939
+#: src/slic3r/GUI/Plater.cpp:983
#, possible-c-format
msgid ""
"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d "
"facets reversed, %d backwards edges"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:949
+#: src/slic3r/GUI/Plater.cpp:993
msgid "Yes"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:972
+#: src/slic3r/GUI/Plater.cpp:1016
msgid "Used Material (ml)"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:975
+#: src/slic3r/GUI/Plater.cpp:1019
msgid "object(s)"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:975
+#: src/slic3r/GUI/Plater.cpp:1019
msgid "supports and pad"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015
+#: src/slic3r/GUI/Plater.cpp:1044 src/slic3r/GUI/Plater.cpp:1059
msgid "objects"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015
+#: src/slic3r/GUI/Plater.cpp:1044 src/slic3r/GUI/Plater.cpp:1059
msgid "wipe tower"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1030
+#: src/slic3r/GUI/Plater.cpp:1074
msgid "normal mode"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1034
+#: src/slic3r/GUI/Plater.cpp:1078
msgid "silent mode"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1546
+#: src/slic3r/GUI/Plater.cpp:1590
msgid "Loading"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1556
+#: src/slic3r/GUI/Plater.cpp:1600
#, possible-c-format
msgid "Processing input file %s\n"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1614
+#: src/slic3r/GUI/Plater.cpp:1658
msgid ""
"This file contains several objects positioned at multiple heights. Instead "
"of considering them as multiple objects, should I consider\n"
"this file as a single object having multiple parts?\n"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1617 src/slic3r/GUI/Plater.cpp:1725
+#: src/slic3r/GUI/Plater.cpp:1661 src/slic3r/GUI/Plater.cpp:1769
msgid "Multi-part object detected"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1668
+#: src/slic3r/GUI/Plater.cpp:1712
msgid ""
"This file cannot be loaded in a simple mode. Do you want to switch to an "
"advanced mode?\n"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1669
+#: src/slic3r/GUI/Plater.cpp:1713
msgid "Detected advanced data"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1702
+#: src/slic3r/GUI/Plater.cpp:1746
#, possible-c-format
msgid ""
"You can't to add the object(s) from %s because of one or some of them "
"is(are) multi-part"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1722
+#: src/slic3r/GUI/Plater.cpp:1766
msgid ""
"Multiple objects were loaded for a multi-material printer.\n"
"Instead of considering them as multiple objects, should I consider\n"
"these files to represent a single object having multiple parts?\n"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1738
+#: src/slic3r/GUI/Plater.cpp:1782
msgid "Loaded"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1830
+#: src/slic3r/GUI/Plater.cpp:1874
msgid ""
"Your object appears to be too large, so it was automatically scaled down to "
"fit your print bed."
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1831
+#: src/slic3r/GUI/Plater.cpp:1875
msgid "Object too large?"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1881
+#: src/slic3r/GUI/Plater.cpp:1925
msgid "Export STL file:"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1888
+#: src/slic3r/GUI/Plater.cpp:1932
msgid "Export AMF file:"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1894
+#: src/slic3r/GUI/Plater.cpp:1938
msgid "Save file as:"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2059
+#: src/slic3r/GUI/Plater.cpp:2103
msgid "Arranging canceled"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2062
+#: src/slic3r/GUI/Plater.cpp:2106
msgid "Arranging"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2096
+#: src/slic3r/GUI/Plater.cpp:2140
msgid "Could not arrange model objects! Some geometries may be invalid."
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2100
+#: src/slic3r/GUI/Plater.cpp:2144
msgid "Arranging done."
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2141
+#: src/slic3r/GUI/Plater.cpp:2185
msgid "Orientation search canceled"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2146
+#: src/slic3r/GUI/Plater.cpp:2190
msgid "Searching for optimal orientation"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2207
+#: src/slic3r/GUI/Plater.cpp:2251
msgid "Orientation found."
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2227
+#: src/slic3r/GUI/Plater.cpp:2271
msgid ""
"The selected object can't be split because it contains more than one volume/"
"material."
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2353
+#: src/slic3r/GUI/Plater.cpp:2397
msgid "Invalid data"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2362
+#: src/slic3r/GUI/Plater.cpp:2406
msgid "Ready to slice"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/PrintHostDialogs.cpp:220
+#: src/slic3r/GUI/Plater.cpp:2444 src/slic3r/GUI/PrintHostDialogs.cpp:231
msgid "Cancelling"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2417
+#: src/slic3r/GUI/Plater.cpp:2461
msgid "Another export job is currently running."
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2678
+#: src/slic3r/GUI/Plater.cpp:2722
msgid "Export failed"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2683 src/slic3r/GUI/PrintHostDialogs.cpp:221
+#: src/slic3r/GUI/Plater.cpp:2727 src/slic3r/GUI/PrintHostDialogs.cpp:232
msgid "Cancelled"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2769 src/slic3r/GUI/Plater.cpp:2781
-#: src/slic3r/GUI/Plater.cpp:2853
+#: src/slic3r/GUI/Plater.cpp:2813 src/slic3r/GUI/Plater.cpp:2825
+#: src/slic3r/GUI/Plater.cpp:2897
msgid "Increase copies"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2847 src/slic3r/GUI/Plater.cpp:2865
+#: src/slic3r/GUI/Plater.cpp:2891 src/slic3r/GUI/Plater.cpp:2909
msgid "Remove the selected object"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2853
+#: src/slic3r/GUI/Plater.cpp:2897
msgid "Place one more copy of the selected object"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2855
+#: src/slic3r/GUI/Plater.cpp:2899
msgid "Decrease copies"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2855
+#: src/slic3r/GUI/Plater.cpp:2899
msgid "Remove one copy of the selected object"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2857
+#: src/slic3r/GUI/Plater.cpp:2901
msgid "Set number of copies"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2857
+#: src/slic3r/GUI/Plater.cpp:2901
msgid "Change the number of copies of the selected object"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2880
+#: src/slic3r/GUI/Plater.cpp:2924
msgid "Reload from Disk"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2880
+#: src/slic3r/GUI/Plater.cpp:2924
msgid "Reload the selected file from Disk"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2883
+#: src/slic3r/GUI/Plater.cpp:2927
msgid "Export the selected object as STL file"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2895
+#: src/slic3r/GUI/Plater.cpp:2939
msgid "Along X axis"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2895
+#: src/slic3r/GUI/Plater.cpp:2939
msgid "Mirror the selected object along the X axis"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2897
+#: src/slic3r/GUI/Plater.cpp:2941
msgid "Along Y axis"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2897
+#: src/slic3r/GUI/Plater.cpp:2941
msgid "Mirror the selected object along the Y axis"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2899
+#: src/slic3r/GUI/Plater.cpp:2943
msgid "Along Z axis"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2899
+#: src/slic3r/GUI/Plater.cpp:2943
msgid "Mirror the selected object along the Z axis"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2902
+#: src/slic3r/GUI/Plater.cpp:2946
msgid "Mirror"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2902
+#: src/slic3r/GUI/Plater.cpp:2946
msgid "Mirror the selected object"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2920
+#: src/slic3r/GUI/Plater.cpp:2964
msgid "To objects"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2920 src/slic3r/GUI/Plater.cpp:2942
+#: src/slic3r/GUI/Plater.cpp:2964 src/slic3r/GUI/Plater.cpp:2986
msgid "Split the selected object into individual objects"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2922
+#: src/slic3r/GUI/Plater.cpp:2966
msgid "To parts"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2922 src/slic3r/GUI/Plater.cpp:2962
+#: src/slic3r/GUI/Plater.cpp:2966 src/slic3r/GUI/Plater.cpp:3006
msgid "Split the selected object into individual sub-parts"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2925 src/slic3r/GUI/Plater.cpp:2942
-#: src/slic3r/GUI/Plater.cpp:2962 src/libslic3r/PrintConfig.cpp:3080
+#: src/slic3r/GUI/Plater.cpp:2969 src/slic3r/GUI/Plater.cpp:2986
+#: src/slic3r/GUI/Plater.cpp:3006 src/libslic3r/PrintConfig.cpp:3080
msgid "Split"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2925
+#: src/slic3r/GUI/Plater.cpp:2969
msgid "Split the selected object"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2948
+#: src/slic3r/GUI/Plater.cpp:2992
msgid "Optimize orientation"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2948
+#: src/slic3r/GUI/Plater.cpp:2992
msgid "Optimize the rotation of the object for better print results."
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3373
+#: src/slic3r/GUI/Plater.cpp:3417
msgid "Save G-code file as:"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3373
+#: src/slic3r/GUI/Plater.cpp:3417
msgid "Save SL1 file as:"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3428
+#: src/slic3r/GUI/Plater.cpp:3472
#, possible-c-format
msgid "STL file exported to %s"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3444
+#: src/slic3r/GUI/Plater.cpp:3488
#, possible-c-format
msgid "AMF file exported to %s"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3447
+#: src/slic3r/GUI/Plater.cpp:3491
#, possible-c-format
msgid "Error exporting AMF file %s"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3473
+#: src/slic3r/GUI/Plater.cpp:3517
#, possible-c-format
msgid "3MF file exported to %s"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3476
+#: src/slic3r/GUI/Plater.cpp:3520
#, possible-c-format
msgid "Error exporting 3MF file %s"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3704
+#: src/slic3r/GUI/Plater.cpp:3748
msgid "Export"
msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3705
+#: src/slic3r/GUI/Plater.cpp:3749
msgid "Send G-code"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762
-#: src/slic3r/GUI/Tab.cpp:1963
+#: src/slic3r/GUI/Preferences.cpp:19 src/slic3r/GUI/Tab.cpp:1812
+#: src/slic3r/GUI/Tab.cpp:2013
msgid "General"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:34
+#: src/slic3r/GUI/Preferences.cpp:36
msgid "Remember output directory"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:36
+#: src/slic3r/GUI/Preferences.cpp:38
msgid ""
"If this is enabled, Slic3r will prompt the last output directory instead of "
"the one containing the input files."
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:42
+#: src/slic3r/GUI/Preferences.cpp:44
msgid "Auto-center parts"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:44
+#: src/slic3r/GUI/Preferences.cpp:46
msgid ""
"If this is enabled, Slic3r will auto-center objects around the print bed "
"center."
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:50
+#: src/slic3r/GUI/Preferences.cpp:52
msgid "Background processing"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:52
+#: src/slic3r/GUI/Preferences.cpp:54
msgid ""
"If this is enabled, Slic3r will pre-process objects as soon as they're "
"loaded in order to save time when exporting G-code."
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:61
+#: src/slic3r/GUI/Preferences.cpp:63
msgid "If enabled, Slic3r checks for new versions of "
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:74
-msgid "Suppress \" - default - \" presets"
+#: src/slic3r/GUI/Preferences.cpp:71
+msgid ""
+"If enabled, Slic3r downloads updates of built-in system presets in the "
+"background. These updates are downloaded into a separate temporary location. "
+"When a new preset version becomes available it is offered at application "
+"startup."
msgstr ""
#: src/slic3r/GUI/Preferences.cpp:76
+msgid "Suppress \" - default - \" presets"
+msgstr ""
+
+#: src/slic3r/GUI/Preferences.cpp:78
msgid ""
"Suppress \" - default - \" presets in the Print / Filament / Printer "
"selections once there are any other valid presets available."
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:82
+#: src/slic3r/GUI/Preferences.cpp:84
msgid "Show incompatible print and filament presets"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:84
+#: src/slic3r/GUI/Preferences.cpp:86
msgid ""
"When checked, the print and filament presets are shown in the preset editor "
"even if they are marked as incompatible with the active printer"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:91
+#: src/slic3r/GUI/Preferences.cpp:93
msgid "Use legacy OpenGL 1.1 rendering"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:93
+#: src/slic3r/GUI/Preferences.cpp:95
msgid ""
"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may "
"try to check this checkbox. This will disable the layer height editing and "
"anti aliasing, so it is likely better to upgrade your graphics driver."
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:101
+#: src/slic3r/GUI/Preferences.cpp:103
msgid "Use Retina resolution for the 3D scene"
msgstr ""
-#: src/slic3r/GUI/Preferences.cpp:103
+#: src/slic3r/GUI/Preferences.cpp:105
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 ""
-#: src/slic3r/GUI/Preferences.cpp:126
-msgid "You need to restart Slic3r to make the changes effective."
+#: src/slic3r/GUI/Preferences.cpp:130
+#, possible-c-format
+msgid "You need to restart %s to make the changes effective."
msgstr ""
#: src/slic3r/GUI/Preset.cpp:207
msgid "modified"
msgstr ""
-#: src/slic3r/GUI/Preset.cpp:920 src/slic3r/GUI/Preset.cpp:960
-#: src/slic3r/GUI/Preset.cpp:1013 src/slic3r/GUI/Preset.cpp:1045
-#: src/slic3r/GUI/PresetBundle.cpp:1470 src/slic3r/GUI/PresetBundle.cpp:1523
+#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:970
+#: src/slic3r/GUI/Preset.cpp:1035 src/slic3r/GUI/Preset.cpp:1067
+#: src/slic3r/GUI/PresetBundle.cpp:1478 src/slic3r/GUI/PresetBundle.cpp:1543
msgid "System presets"
msgstr ""
-#: src/slic3r/GUI/Preset.cpp:964 src/slic3r/GUI/Preset.cpp:1049
-#: src/slic3r/GUI/PresetBundle.cpp:1528
+#: src/slic3r/GUI/Preset.cpp:974 src/slic3r/GUI/Preset.cpp:1071
+#: src/slic3r/GUI/PresetBundle.cpp:1548
msgid "User presets"
msgstr ""
-#: src/slic3r/GUI/Preset.cpp:993 src/slic3r/GUI/Tab.cpp:247
+#: src/slic3r/GUI/Preset.cpp:1003 src/slic3r/GUI/Tab.cpp:237
msgid "Add a new printer"
msgstr ""
-#: src/slic3r/GUI/Preset.cpp:1253
+#: src/slic3r/GUI/Preset.cpp:1275
msgid "filament"
msgstr ""
@@ -2929,44 +2988,44 @@ msgstr ""
msgid "%d lines: %.2lf mm"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:32
+#: src/slic3r/GUI/PrintHostDialogs.cpp:33
msgid "Send G-Code to printer host"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:32
+#: src/slic3r/GUI/PrintHostDialogs.cpp:33
msgid "Upload to Printer Host with the following filename:"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:34
+#: src/slic3r/GUI/PrintHostDialogs.cpp:35
msgid "Start printing after upload"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:41
+#: src/slic3r/GUI/PrintHostDialogs.cpp:42
msgid "Use forward slashes ( / ) as a directory separator if needed."
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:157
+#: src/slic3r/GUI/PrintHostDialogs.cpp:156
msgid "Cancel selected"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:159
+#: src/slic3r/GUI/PrintHostDialogs.cpp:158
msgid "Show error message"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:198
-#: src/slic3r/GUI/PrintHostDialogs.cpp:217
+#: src/slic3r/GUI/PrintHostDialogs.cpp:197
+#: src/slic3r/GUI/PrintHostDialogs.cpp:228
msgid "Enqueued"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:218
+#: src/slic3r/GUI/PrintHostDialogs.cpp:229
msgid "Uploading"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:222
+#: src/slic3r/GUI/PrintHostDialogs.cpp:233
msgid "Completed"
msgstr ""
-#: src/slic3r/GUI/PrintHostDialogs.cpp:260
+#: src/slic3r/GUI/PrintHostDialogs.cpp:271
msgid "Error uploading to print host:"
msgstr ""
@@ -3010,195 +3069,195 @@ msgstr ""
msgid "Select the print profiles this profile is compatible with."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:132
+#: src/slic3r/GUI/Tab.cpp:130
msgid "Save current "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:133
+#: src/slic3r/GUI/Tab.cpp:131
msgid "Delete this preset"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:145
+#: src/slic3r/GUI/Tab.cpp:136
msgid ""
"Hover the cursor over buttons to find more information \n"
"or click this button."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:858
+#: src/slic3r/GUI/Tab.cpp:907
msgid "It's a default preset."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:859
+#: src/slic3r/GUI/Tab.cpp:908
msgid "It's a system preset."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:860
+#: src/slic3r/GUI/Tab.cpp:909
msgid "Current preset is inherited from "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:865
+#: src/slic3r/GUI/Tab.cpp:914
msgid "It can't be deleted or modified. "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:866
+#: src/slic3r/GUI/Tab.cpp:915
msgid ""
"Any modifications should be saved as a new preset inherited from this one. "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:867
+#: src/slic3r/GUI/Tab.cpp:916
msgid "To do that please specify a new name for the preset."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:871
+#: src/slic3r/GUI/Tab.cpp:920
msgid "Additional information:"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:877
+#: src/slic3r/GUI/Tab.cpp:926
msgid "printer model"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:885
+#: src/slic3r/GUI/Tab.cpp:934
msgid "default print profile"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:888
+#: src/slic3r/GUI/Tab.cpp:937
msgid "default filament profile"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:902
+#: src/slic3r/GUI/Tab.cpp:951
msgid "default SLA material profile"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:906
+#: src/slic3r/GUI/Tab.cpp:955
msgid "default SLA print profile"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3305
+#: src/slic3r/GUI/Tab.cpp:997 src/slic3r/GUI/Tab.cpp:3391
msgid "Layers and perimeters"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55
+#: src/slic3r/GUI/Tab.cpp:998 src/libslic3r/PrintConfig.cpp:55
msgid "Layer height"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:953
+#: src/slic3r/GUI/Tab.cpp:1002
msgid "Vertical shells"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:964
+#: src/slic3r/GUI/Tab.cpp:1013
msgid "Horizontal shells"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709
+#: src/slic3r/GUI/Tab.cpp:1014 src/libslic3r/PrintConfig.cpp:1709
msgid "Solid layers"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:970
+#: src/slic3r/GUI/Tab.cpp:1019
msgid "Quality (slower slicing)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:988
+#: src/slic3r/GUI/Tab.cpp:1037
msgid "Reducing printing time"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1000
+#: src/slic3r/GUI/Tab.cpp:1049
msgid "Skirt and brim"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1017
+#: src/slic3r/GUI/Tab.cpp:1066
msgid "Raft"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1021
+#: src/slic3r/GUI/Tab.cpp:1070
msgid "Options for support material and raft"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1036
+#: src/slic3r/GUI/Tab.cpp:1085
msgid "Speed for print moves"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1048
+#: src/slic3r/GUI/Tab.cpp:1097
msgid "Speed for non-print moves"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1051
+#: src/slic3r/GUI/Tab.cpp:1100
msgid "Modifiers"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1054
+#: src/slic3r/GUI/Tab.cpp:1103
msgid "Acceleration control (advanced)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1061
+#: src/slic3r/GUI/Tab.cpp:1110
msgid "Autospeed (advanced)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1069
+#: src/slic3r/GUI/Tab.cpp:1118
msgid "Multiple Extruders"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1077
+#: src/slic3r/GUI/Tab.cpp:1126
msgid "Ooze prevention"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1094
+#: src/slic3r/GUI/Tab.cpp:1143
msgid "Extrusion width"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1104
+#: src/slic3r/GUI/Tab.cpp:1153
msgid "Overlap"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1107
+#: src/slic3r/GUI/Tab.cpp:1156
msgid "Flow"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1116
+#: src/slic3r/GUI/Tab.cpp:1165
msgid "Other"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3353
+#: src/slic3r/GUI/Tab.cpp:1168 src/slic3r/GUI/Tab.cpp:3439
msgid "Output options"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1120
+#: src/slic3r/GUI/Tab.cpp:1169
msgid "Sequential printing"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1122
+#: src/slic3r/GUI/Tab.cpp:1171
msgid "Extruder clearance (mm)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3354
+#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:3440
msgid "Output file"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382
+#: src/slic3r/GUI/Tab.cpp:1187 src/libslic3r/PrintConfig.cpp:1382
msgid "Post-processing scripts"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145
-#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528
-#: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936
-#: src/slic3r/GUI/Tab.cpp:2028 src/slic3r/GUI/Tab.cpp:2029
-#: src/slic3r/GUI/Tab.cpp:3242 src/slic3r/GUI/Tab.cpp:3243
+#: src/slic3r/GUI/Tab.cpp:1193 src/slic3r/GUI/Tab.cpp:1194
+#: src/slic3r/GUI/Tab.cpp:1576 src/slic3r/GUI/Tab.cpp:1577
+#: src/slic3r/GUI/Tab.cpp:1985 src/slic3r/GUI/Tab.cpp:1986
+#: src/slic3r/GUI/Tab.cpp:2079 src/slic3r/GUI/Tab.cpp:2080
+#: src/slic3r/GUI/Tab.cpp:3328 src/slic3r/GUI/Tab.cpp:3329
msgid "Notes"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535
-#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2035
-#: src/slic3r/GUI/Tab.cpp:3250 src/slic3r/GUI/Tab.cpp:3359
+#: src/slic3r/GUI/Tab.cpp:1200 src/slic3r/GUI/Tab.cpp:1584
+#: src/slic3r/GUI/Tab.cpp:1992 src/slic3r/GUI/Tab.cpp:2086
+#: src/slic3r/GUI/Tab.cpp:3336 src/slic3r/GUI/Tab.cpp:3445
msgid "Dependencies"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536
-#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2036
-#: src/slic3r/GUI/Tab.cpp:3251 src/slic3r/GUI/Tab.cpp:3360
+#: src/slic3r/GUI/Tab.cpp:1201 src/slic3r/GUI/Tab.cpp:1585
+#: src/slic3r/GUI/Tab.cpp:1993 src/slic3r/GUI/Tab.cpp:2087
+#: src/slic3r/GUI/Tab.cpp:3337 src/slic3r/GUI/Tab.cpp:3446
msgid "Profile dependencies"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1198
-#, possible-c-format
+#: src/slic3r/GUI/Tab.cpp:1247
+#, no-c-format
msgid ""
"The Spiral Vase mode requires:\n"
"- one perimeter\n"
@@ -3210,11 +3269,11 @@ msgid ""
"Shall I adjust those settings in order to enable Spiral Vase?"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1205
+#: src/slic3r/GUI/Tab.cpp:1254
msgid "Spiral Vase"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1228
+#: src/slic3r/GUI/Tab.cpp:1277
msgid ""
"The Wipe Tower currently supports the non-soluble supports only\n"
"if they are printed with the current extruder without triggering a tool "
@@ -3225,11 +3284,11 @@ msgid ""
"Shall I adjust those settings in order to enable the Wipe Tower?"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249
+#: src/slic3r/GUI/Tab.cpp:1281 src/slic3r/GUI/Tab.cpp:1298
msgid "Wipe Tower"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1246
+#: src/slic3r/GUI/Tab.cpp:1295
msgid ""
"For the Wipe Tower to work with the soluble supports, the support layers\n"
"need to be synchronized with the object layers.\n"
@@ -3237,7 +3296,7 @@ msgid ""
"Shall I synchronize support layers in order to enable the Wipe Tower?"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1264
+#: src/slic3r/GUI/Tab.cpp:1313
msgid ""
"Supports work better, if the following feature is enabled:\n"
"- Detect bridging perimeters\n"
@@ -3245,194 +3304,195 @@ msgid ""
"Shall I adjust those settings for supports?"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1267
+#: src/slic3r/GUI/Tab.cpp:1316
msgid "Support Generator"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1309
+#: src/slic3r/GUI/Tab.cpp:1358
msgid "The "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1309
-#, possible-c-format
+#: src/slic3r/GUI/Tab.cpp:1358
+#, no-c-format
msgid ""
" infill pattern is not supposed to work at 100% density.\n"
"\n"
"Shall I switch to rectilinear fill pattern?"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1429
+#: src/slic3r/GUI/Tab.cpp:1478
msgid "Temperature "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1435
+#: src/slic3r/GUI/Tab.cpp:1484
msgid "Bed"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1440
+#: src/slic3r/GUI/Tab.cpp:1489
msgid "Cooling"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285
+#: src/slic3r/GUI/Tab.cpp:1490 src/libslic3r/PrintConfig.cpp:1285
#: src/libslic3r/PrintConfig.cpp:2097
msgid "Enable"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1452
+#: src/slic3r/GUI/Tab.cpp:1501
msgid "Fan settings"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1453
+#: src/slic3r/GUI/Tab.cpp:1502
msgid "Fan speed"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1461
+#: src/slic3r/GUI/Tab.cpp:1510
msgid "Cooling thresholds"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1467
+#: src/slic3r/GUI/Tab.cpp:1516
msgid "Filament properties"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1471
+#: src/slic3r/GUI/Tab.cpp:1520
msgid "Print speed override"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1481
+#: src/slic3r/GUI/Tab.cpp:1530
msgid "Toolchange parameters with single extruder MM printers"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1496
+#: src/slic3r/GUI/Tab.cpp:1545
msgid "Ramming settings"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898
+#: src/slic3r/GUI/Tab.cpp:1563 src/slic3r/GUI/Tab.cpp:1948
msgid "Custom G-code"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899
+#: src/slic3r/GUI/Tab.cpp:1564 src/slic3r/GUI/Tab.cpp:1949
#: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750
msgid "Start G-code"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905
+#: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:1955
#: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368
msgid "End G-code"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689
+#: src/slic3r/GUI/Tab.cpp:1681 src/slic3r/GUI/Tab.cpp:1737
msgid " Browse "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838
+#: src/slic3r/GUI/Tab.cpp:1700 src/slic3r/GUI/Tab.cpp:1888
msgid "Test"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1662
+#: src/slic3r/GUI/Tab.cpp:1710
msgid "Could not get a valid Printer Host reference"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851
+#: src/slic3r/GUI/Tab.cpp:1716 src/slic3r/GUI/Tab.cpp:1901
msgid "Success!"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1683
+#: src/slic3r/GUI/Tab.cpp:1731
msgid ""
"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-"
"signed certificate."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1696
+#: src/slic3r/GUI/Tab.cpp:1744
msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1697
+#: src/slic3r/GUI/Tab.cpp:1745
msgid "Open CA certificate file"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1725
+#: src/slic3r/GUI/Tab.cpp:1773
+#, possible-c-format
msgid ""
"HTTPS CA File:\n"
-"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate "
+" \tOn this system, %s uses HTTPS certificates from the system Certificate "
"Store or Keychain.\n"
-"\tTo use a custom CA file, please import your CA file into Certificate "
+" \tTo use a custom CA file, please import your CA file into Certificate "
"Store / Keychain."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964
+#: src/slic3r/GUI/Tab.cpp:1813 src/slic3r/GUI/Tab.cpp:2014
msgid "Size and coordinates"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968
-#: src/slic3r/GUI/Tab.cpp:2912
+#: src/slic3r/GUI/Tab.cpp:1818 src/slic3r/GUI/Tab.cpp:2019
+#: src/slic3r/GUI/Tab.cpp:2988
msgid " Set "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1790
+#: src/slic3r/GUI/Tab.cpp:1840
msgid "Capabilities"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1795
+#: src/slic3r/GUI/Tab.cpp:1845
msgid "Number of extruders of the printer."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1823
+#: src/slic3r/GUI/Tab.cpp:1873
msgid "USB/Serial connection"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590
+#: src/slic3r/GUI/Tab.cpp:1874 src/libslic3r/PrintConfig.cpp:1590
msgid "Serial port"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1829
+#: src/slic3r/GUI/Tab.cpp:1879
msgid "Rescan serial ports"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1851
+#: src/slic3r/GUI/Tab.cpp:1901
msgid "Connection to printer works correctly."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1854
+#: src/slic3r/GUI/Tab.cpp:1904
msgid "Connection failed."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2023
+#: src/slic3r/GUI/Tab.cpp:1917 src/slic3r/GUI/Tab.cpp:2074
msgid "Print Host upload"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128
+#: src/slic3r/GUI/Tab.cpp:1961 src/libslic3r/PrintConfig.cpp:128
msgid "Before layer change G-code"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030
+#: src/slic3r/GUI/Tab.cpp:1967 src/libslic3r/PrintConfig.cpp:1030
msgid "After layer change G-code"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005
+#: src/slic3r/GUI/Tab.cpp:1973 src/libslic3r/PrintConfig.cpp:2005
msgid "Tool change G-code"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1929
+#: src/slic3r/GUI/Tab.cpp:1979
msgid "Between objects G-code (for sequential printing)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:1990
+#: src/slic3r/GUI/Tab.cpp:2041
msgid "Display"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2001
+#: src/slic3r/GUI/Tab.cpp:2052
msgid "Tilt"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2002
+#: src/slic3r/GUI/Tab.cpp:2053
msgid "Tilt time"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3224
+#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:3310
msgid "Corrections"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2075 src/slic3r/GUI/Tab.cpp:2137
+#: src/slic3r/GUI/Tab.cpp:2136 src/slic3r/GUI/Tab.cpp:2209
#: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086
#: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109
#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131
@@ -3440,173 +3500,173 @@ msgstr ""
msgid "Machine limits"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2089
+#: src/slic3r/GUI/Tab.cpp:2150
msgid "Values in this column are for Full Power mode"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2090
+#: src/slic3r/GUI/Tab.cpp:2151
msgid "Full Power"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2095
+#: src/slic3r/GUI/Tab.cpp:2156
msgid "Values in this column are for Silent mode"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2096
+#: src/slic3r/GUI/Tab.cpp:2157
msgid "Silent"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2104
+#: src/slic3r/GUI/Tab.cpp:2165
msgid "Maximum feedrates"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2109
+#: src/slic3r/GUI/Tab.cpp:2170
msgid "Maximum accelerations"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2116
+#: src/slic3r/GUI/Tab.cpp:2177
msgid "Jerk limits"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2121
+#: src/slic3r/GUI/Tab.cpp:2182
msgid "Minimum feedrates"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2159 src/slic3r/GUI/Tab.cpp:2167
+#: src/slic3r/GUI/Tab.cpp:2231 src/slic3r/GUI/Tab.cpp:2239
msgid "Single extruder MM setup"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2168
+#: src/slic3r/GUI/Tab.cpp:2240
msgid "Single extruder multimaterial parameters"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/GCode/PreviewData.cpp:475
+#: src/slic3r/GUI/Tab.cpp:2253 src/libslic3r/GCode/PreviewData.cpp:475
#, possible-c-format
msgid "Extruder %d"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2189
+#: src/slic3r/GUI/Tab.cpp:2260
msgid "Layer height limits"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2194
+#: src/slic3r/GUI/Tab.cpp:2265
msgid "Position (for multi-extruder printers)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2197
+#: src/slic3r/GUI/Tab.cpp:2268
msgid "Retraction"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2200
+#: src/slic3r/GUI/Tab.cpp:2271
msgid "Only lift Z"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2213
+#: src/slic3r/GUI/Tab.cpp:2284
msgid ""
"Retraction when tool is disabled (advanced settings for multi-extruder "
"setups)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2217
+#: src/slic3r/GUI/Tab.cpp:2288
msgid "Preview"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2353
+#: src/slic3r/GUI/Tab.cpp:2429
msgid ""
"The Wipe option is not available when using the Firmware Retraction mode.\n"
"\n"
"Shall I disable it in order to enable Firmware Retraction?"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2355
+#: src/slic3r/GUI/Tab.cpp:2431
msgid "Firmware Retraction"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2682
+#: src/slic3r/GUI/Tab.cpp:2757
#, possible-c-format
msgid "Default preset (%s)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2683
+#: src/slic3r/GUI/Tab.cpp:2758
#, possible-c-format
msgid "Preset (%s)"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2700
+#: src/slic3r/GUI/Tab.cpp:2775
msgid "has the following unsaved changes:"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2703
+#: src/slic3r/GUI/Tab.cpp:2778
msgid "is not compatible with printer"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2704
+#: src/slic3r/GUI/Tab.cpp:2779
msgid "is not compatible with print profile"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2706
+#: src/slic3r/GUI/Tab.cpp:2781
msgid "and it has the following unsaved changes:"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2709
+#: src/slic3r/GUI/Tab.cpp:2784
msgid "Discard changes and continue anyway?"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2710
+#: src/slic3r/GUI/Tab.cpp:2785
msgid "Unsaved Changes"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2722
+#: src/slic3r/GUI/Tab.cpp:2797
msgid "Please check your object list before preset changing."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2802
+#: src/slic3r/GUI/Tab.cpp:2878
msgid "Copy"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2824
+#: src/slic3r/GUI/Tab.cpp:2900
msgid "The supplied name is empty. It can't be saved."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2829
+#: src/slic3r/GUI/Tab.cpp:2905
msgid "Cannot overwrite a system profile."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2833
+#: src/slic3r/GUI/Tab.cpp:2909
msgid "Cannot overwrite an external profile."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2859
+#: src/slic3r/GUI/Tab.cpp:2935
msgid "remove"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2859
+#: src/slic3r/GUI/Tab.cpp:2935
msgid "delete"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2860
+#: src/slic3r/GUI/Tab.cpp:2936
msgid "Are you sure you want to "
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2860
+#: src/slic3r/GUI/Tab.cpp:2936
msgid " the selected preset?"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2861
+#: src/slic3r/GUI/Tab.cpp:2937
msgid "Remove"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2862
+#: src/slic3r/GUI/Tab.cpp:2938
msgid " Preset"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2990
+#: src/slic3r/GUI/Tab.cpp:3064
msgid ""
"LOCKED LOCK;indicates that the settings are the same as the system values "
"for the current option group"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2993
+#: src/slic3r/GUI/Tab.cpp:3067
msgid ""
"UNLOCKED LOCK;indicates that some settings were changed and are not equal to "
"the system values for the current option group.\n"
@@ -3614,13 +3674,13 @@ msgid ""
"to the system values."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2999
+#: src/slic3r/GUI/Tab.cpp:3073
msgid ""
"WHITE BULLET;for the left button: \tindicates a non-system preset,\n"
"for the right button: \tindicates that the settings hasn't been modified."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3003
+#: src/slic3r/GUI/Tab.cpp:3077
msgid ""
"BACK ARROW;indicates that the settings were changed and are not equal to the "
"last saved preset for the current option group.\n"
@@ -3628,30 +3688,30 @@ msgid ""
"to the last saved preset."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3029
+#: src/slic3r/GUI/Tab.cpp:3103
msgid ""
"LOCKED LOCK icon indicates that the settings are the same as the system "
"values for the current option group"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3031
+#: src/slic3r/GUI/Tab.cpp:3105
msgid ""
"UNLOCKED LOCK icon indicates that some settings were changed and are not "
"equal to the system values for the current option group.\n"
"Click to reset all settings for current option group to the system values."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3034
+#: src/slic3r/GUI/Tab.cpp:3108
msgid "WHITE BULLET icon indicates a non system preset."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3037
+#: src/slic3r/GUI/Tab.cpp:3111
msgid ""
"WHITE BULLET icon indicates that the settings are the same as in the last "
"saved preset for the current option group."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3039
+#: src/slic3r/GUI/Tab.cpp:3113
msgid ""
"BACK ARROW icon indicates that the settings were changed and are not equal "
"to the last saved preset for the current option group.\n"
@@ -3659,104 +3719,104 @@ msgid ""
"preset."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3045
+#: src/slic3r/GUI/Tab.cpp:3119
msgid ""
"LOCKED LOCK icon indicates that the value is the same as the system value."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3046
+#: src/slic3r/GUI/Tab.cpp:3120
msgid ""
"UNLOCKED LOCK icon indicates that the value was changed and is not equal to "
"the system value.\n"
"Click to reset current value to the system value."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3052
+#: src/slic3r/GUI/Tab.cpp:3126
msgid ""
"WHITE BULLET icon indicates that the value is the same as in the last saved "
"preset."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3053
+#: src/slic3r/GUI/Tab.cpp:3127
msgid ""
"BACK ARROW icon indicates that the value was changed and is not equal to the "
"last saved preset.\n"
"Click to reset current value to the last saved preset."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3153
+#: src/slic3r/GUI/Tab.cpp:3239
msgid " as:"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3197
+#: src/slic3r/GUI/Tab.cpp:3283
msgid "the following postfix are not allowed:"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3201
+#: src/slic3r/GUI/Tab.cpp:3287
msgid "The supplied name is not available."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3214
+#: src/slic3r/GUI/Tab.cpp:3300
msgid "Material"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3216 src/slic3r/GUI/Tab.cpp:3307
+#: src/slic3r/GUI/Tab.cpp:3302 src/slic3r/GUI/Tab.cpp:3393
msgid "Layers"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3220
+#: src/slic3r/GUI/Tab.cpp:3306
msgid "Exposure"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3315
+#: src/slic3r/GUI/Tab.cpp:3401
msgid "Support head"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3320
+#: src/slic3r/GUI/Tab.cpp:3406
msgid "Support pillar"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3330
+#: src/slic3r/GUI/Tab.cpp:3416
msgid "Connection of the support sticks and junctions"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3335
+#: src/slic3r/GUI/Tab.cpp:3421
msgid "Automatic generation"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3397
+#: src/slic3r/GUI/Tab.cpp:3483
msgid "Head penetration should not be greater than the head width."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3398
+#: src/slic3r/GUI/Tab.cpp:3484
msgid "Invalid Head penetration"
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3410
+#: src/slic3r/GUI/Tab.cpp:3496
msgid "Pinhead diameter should be smaller than the pillar diameter."
msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3411
+#: src/slic3r/GUI/Tab.cpp:3497
msgid "Invalid pinhead diameter"
msgstr ""
-#: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395
+#: src/slic3r/GUI/Tab.hpp:317 src/slic3r/GUI/Tab.hpp:405
msgid "Print Settings"
msgstr ""
-#: src/slic3r/GUI/Tab.hpp:325
+#: src/slic3r/GUI/Tab.hpp:335
msgid "Filament Settings"
msgstr ""
-#: src/slic3r/GUI/Tab.hpp:358
+#: src/slic3r/GUI/Tab.hpp:368
msgid "Printer Settings"
msgstr ""
-#: src/slic3r/GUI/Tab.hpp:381
+#: src/slic3r/GUI/Tab.hpp:391
msgid "Material Settings"
msgstr ""
-#: src/slic3r/GUI/Tab.hpp:407
+#: src/slic3r/GUI/Tab.hpp:417
msgid "Save preset"
msgstr ""
@@ -3785,7 +3845,7 @@ msgstr ""
msgid "Don't notify about new releases any more"
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:167
+#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:168
msgid "Configuration update"
msgstr ""
@@ -3804,14 +3864,16 @@ msgid ""
msgstr ""
#: src/slic3r/GUI/UpdateDialogs.cpp:112
-msgid "Slic3r incompatibility"
+#, possible-c-format
+msgid "%s incompatibility"
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:112
-msgid "Slic3r configuration is incompatible"
+#: src/slic3r/GUI/UpdateDialogs.cpp:113
+#, possible-c-format
+msgid "%s configuration is incompatible"
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:117
+#: src/slic3r/GUI/UpdateDialogs.cpp:118
#, possible-c-format
msgid ""
"This version of %s is not compatible with currently installed configuration "
@@ -3819,29 +3881,30 @@ msgid ""
"This probably happened as a result of running an older %s after using a "
"newer one.\n"
"\n"
-"You may either exit Slic3r and try again with a newer version, or you may re-"
-"run the initial configuration. Doing so will create a backup snapshot of the "
-"existing configuration before installing files compatible with this Slic3r.\n"
+"You may either exit %s and try again with a newer version, or you may re-run "
+"the initial configuration. Doing so will create a backup snapshot of the "
+"existing configuration before installing files compatible with this %s.\n"
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:126
+#: src/slic3r/GUI/UpdateDialogs.cpp:127
#, possible-c-format
msgid "This %s version: %s"
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:131
+#: src/slic3r/GUI/UpdateDialogs.cpp:132
msgid "Incompatible bundles:"
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:147
-msgid "Exit Slic3r"
+#: src/slic3r/GUI/UpdateDialogs.cpp:148
+#, possible-c-format
+msgid "Exit %s"
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:150
+#: src/slic3r/GUI/UpdateDialogs.cpp:151
msgid "Re-configure"
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:171
+#: src/slic3r/GUI/UpdateDialogs.cpp:172
#, possible-c-format
msgid ""
"%s now uses an updated configuration structure.\n"
@@ -3857,7 +3920,7 @@ msgid ""
"choose whether to enable automatic preset updates."
msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:187
+#: src/slic3r/GUI/UpdateDialogs.cpp:188
msgid "For more information please visit our wiki page:"
msgstr ""
@@ -3950,12 +4013,12 @@ msgstr ""
msgid "Show advanced settings"
msgstr ""
-#: src/slic3r/GUI/wxExtensions.cpp:2409
+#: src/slic3r/GUI/wxExtensions.cpp:2328
#, possible-c-format
msgid "Switch to the %s mode"
msgstr ""
-#: src/slic3r/GUI/wxExtensions.cpp:2410
+#: src/slic3r/GUI/wxExtensions.cpp:2329
#, possible-c-format
msgid "Current mode is %s"
msgstr ""
@@ -4229,87 +4292,87 @@ msgstr ""
msgid "Error with zip archive"
msgstr ""
-#: src/libslic3r/Print.cpp:1136
+#: src/libslic3r/Print.cpp:1135
msgid "All objects are outside of the print volume."
msgstr ""
-#: src/libslic3r/Print.cpp:1165
+#: src/libslic3r/Print.cpp:1162
msgid "Some objects are too close; your extruder will collide with them."
msgstr ""
-#: src/libslic3r/Print.cpp:1180
+#: src/libslic3r/Print.cpp:1177
msgid ""
"Some objects are too tall and cannot be printed without extruder collisions."
msgstr ""
-#: src/libslic3r/Print.cpp:1190
+#: src/libslic3r/Print.cpp:1187
msgid "The Spiral Vase option can only be used when printing a single object."
msgstr ""
-#: src/libslic3r/Print.cpp:1192
+#: src/libslic3r/Print.cpp:1189
msgid ""
"The Spiral Vase option can only be used when printing single material "
"objects."
msgstr ""
-#: src/libslic3r/Print.cpp:1198
+#: src/libslic3r/Print.cpp:1195
msgid ""
"All extruders must have the same diameter for single extruder multimaterial "
"printer."
msgstr ""
-#: src/libslic3r/Print.cpp:1203
+#: src/libslic3r/Print.cpp:1200
msgid ""
"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter "
"and Repetier G-code flavors."
msgstr ""
-#: src/libslic3r/Print.cpp:1205
+#: src/libslic3r/Print.cpp:1202
msgid ""
"The Wipe Tower is currently only supported with the relative extruder "
"addressing (use_relative_e_distances=1)."
msgstr ""
-#: src/libslic3r/Print.cpp:1226
+#: src/libslic3r/Print.cpp:1223
msgid ""
"The Wipe Tower is only supported for multiple objects if they have equal "
"layer heigths"
msgstr ""
-#: src/libslic3r/Print.cpp:1228
+#: src/libslic3r/Print.cpp:1225
msgid ""
"The Wipe Tower is only supported for multiple objects if they are printed "
"over an equal number of raft layers"
msgstr ""
-#: src/libslic3r/Print.cpp:1230
+#: src/libslic3r/Print.cpp:1227
msgid ""
"The Wipe Tower is only supported for multiple objects if they are printed "
"with the same support_material_contact_distance"
msgstr ""
-#: src/libslic3r/Print.cpp:1232
+#: src/libslic3r/Print.cpp:1229
msgid ""
"The Wipe Tower is only supported for multiple objects if they are sliced "
"equally."
msgstr ""
-#: src/libslic3r/Print.cpp:1261
+#: src/libslic3r/Print.cpp:1258
msgid ""
"The Wipe tower is only supported if all objects have the same layer height "
"profile"
msgstr ""
-#: src/libslic3r/Print.cpp:1271
+#: src/libslic3r/Print.cpp:1268
msgid "The supplied settings will cause an empty print."
msgstr ""
-#: src/libslic3r/Print.cpp:1288
+#: src/libslic3r/Print.cpp:1285
msgid ""
"One or more object were assigned an extruder that the printer does not have."
msgstr ""
-#: src/libslic3r/Print.cpp:1298
+#: src/libslic3r/Print.cpp:1294
msgid ""
"Printing with multiple extruders of differing nozzle diameters. If support "
"is to be printed with the current extruder (support_material_extruder == 0 "
@@ -4317,13 +4380,13 @@ msgid ""
"same diameter."
msgstr ""
-#: src/libslic3r/Print.cpp:1306
+#: src/libslic3r/Print.cpp:1302
msgid ""
"For the Wipe Tower to work with the soluble supports, the support layers "
"need to be synchronized with the object layers."
msgstr ""
-#: src/libslic3r/Print.cpp:1310
+#: src/libslic3r/Print.cpp:1306
msgid ""
"The Wipe Tower currently supports the non-soluble supports only if they are "
"printed with the current extruder without triggering a tool change. (both "
@@ -4331,15 +4394,15 @@ msgid ""
"set to 0)."
msgstr ""
-#: src/libslic3r/Print.cpp:1317
+#: src/libslic3r/Print.cpp:1313
msgid "first_layer_height"
msgstr ""
-#: src/libslic3r/Print.cpp:1332
+#: src/libslic3r/Print.cpp:1328
msgid "First layer height can't be greater than nozzle diameter"
msgstr ""
-#: src/libslic3r/Print.cpp:1336
+#: src/libslic3r/Print.cpp:1332
msgid "Layer height can't be greater than nozzle diameter"
msgstr ""
@@ -4347,7 +4410,7 @@ msgstr ""
msgid "Slicing model"
msgstr ""
-#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:804
+#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:810
msgid "Generating support points"
msgstr ""
@@ -4371,27 +4434,27 @@ msgstr ""
msgid "Rasterizing layers"
msgstr ""
-#: src/libslic3r/SLAPrint.cpp:606
+#: src/libslic3r/SLAPrint.cpp:612
msgid ""
"Cannot proceed without support points! Add support points or disable support "
"generation."
msgstr ""
-#: src/libslic3r/SLAPrint.cpp:618
+#: src/libslic3r/SLAPrint.cpp:624
msgid "Elevation is too low for object."
msgstr ""
#. TRN To be shown at the status bar on SLA slicing error.
-#: src/libslic3r/SLAPrint.cpp:701
+#: src/libslic3r/SLAPrint.cpp:707
msgid "Slicing had to be stopped due to an internal error."
msgstr ""
-#: src/libslic3r/SLAPrint.cpp:852 src/libslic3r/SLAPrint.cpp:862
-#: src/libslic3r/SLAPrint.cpp:910
+#: src/libslic3r/SLAPrint.cpp:858 src/libslic3r/SLAPrint.cpp:868
+#: src/libslic3r/SLAPrint.cpp:916
msgid "Visualizing supports"
msgstr ""
-#: src/libslic3r/SLAPrint.cpp:1452
+#: src/libslic3r/SLAPrint.cpp:1458
msgid "Slicing done"
msgstr ""
@@ -4607,7 +4670,7 @@ msgstr ""
#: src/libslic3r/PrintConfig.cpp:216
msgid ""
-"When printing multi-material objects, this settings will make slic3r to clip "
+"When printing multi-material objects, this settings will make Slic3r to clip "
"the overlapping object parts one by the other (2nd part will be clipped by "
"the 1st, 3rd part will be clipped by the 1st and 2nd etc)."
msgstr ""
@@ -4867,7 +4930,7 @@ msgid "Extra perimeters if needed"
msgstr ""
#: src/libslic3r/PrintConfig.cpp:446
-#, possible-c-format
+#, no-c-format
msgid ""
"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r "
"keeps adding perimeters, until more than 70% of the loop immediately above "
@@ -5515,7 +5578,7 @@ msgid "This setting represents the maximum speed of your fan."
msgstr ""
#: src/libslic3r/PrintConfig.cpp:1161
-#, possible-c-format
+#, no-c-format
msgid ""
"This is the highest printable layer height for this extruder, used to cap "
"the variable layer height and support layer height. Maximum recommended "
@@ -6930,7 +6993,7 @@ msgid ""
msgstr ""
#: src/libslic3r/PrintConfig.cpp:2929
-msgid "Export SVG"
+msgid "Export OBJ"
msgstr ""
#: src/libslic3r/PrintConfig.cpp:2930
diff --git a/resources/localization/fr_FR/Slic3rPE.mo b/resources/localization/fr_FR/Slic3rPE.mo
index ba1966d28..0a2409281 100644
--- a/resources/localization/fr_FR/Slic3rPE.mo
+++ b/resources/localization/fr_FR/Slic3rPE.mo
Binary files differ
diff --git a/resources/localization/fr_FR/Slic3rPE_fr.po b/resources/localization/fr_FR/Slic3rPE_fr.po
index 9e5335586..af9255cf5 100644
--- a/resources/localization/fr_FR/Slic3rPE_fr.po
+++ b/resources/localization/fr_FR/Slic3rPE_fr.po
@@ -1,25 +1,22 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-09 14:34+0200\n"
-"PO-Revision-Date: 2019-04-09 15:04+0200\n"
-"Language: en\n"
+"POT-Creation-Date: 2019-04-18 10:07+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Oleksandra Iushchenko <yusanka@gmail.com>\n"
+"Language-Team: \n"
+"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Last-Translator: Oleksandra Iushchenko <yusanka@gmail.com>\n"
-"Language-Team: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.0.8\n"
#: src/slic3r/GUI/AboutDialog.cpp:35
-msgid "About Slic3r"
-msgstr "About Slic3r"
+#, c-format
+msgid "About %s"
+msgstr "A propos de %s"
#: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52
msgid "Version"
@@ -27,40 +24,40 @@ msgstr "Version"
#: src/slic3r/GUI/BedShapeDialog.cpp:43
msgid "Shape"
-msgstr "Shape"
+msgstr "Forme"
#: src/slic3r/GUI/BedShapeDialog.cpp:51
msgid "Rectangular"
-msgstr "Rectangular"
+msgstr "Rectangle"
#: src/slic3r/GUI/BedShapeDialog.cpp:55
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136
-#: src/slic3r/GUI/Tab.cpp:2185
+#: src/slic3r/GUI/Tab.cpp:2186
msgid "Size"
-msgstr "Size"
+msgstr "Taille"
#: src/slic3r/GUI/BedShapeDialog.cpp:56
msgid "Size in X and Y of the rectangular plate."
-msgstr "Size in X and Y of the rectangular plate."
+msgstr "Taille en X et Y du plateau rectangulaire."
#: src/slic3r/GUI/BedShapeDialog.cpp:62
msgid "Origin"
-msgstr "Origin"
+msgstr "Origine"
#: src/slic3r/GUI/BedShapeDialog.cpp:63
msgid ""
"Distance of the 0,0 G-code coordinate from the front left corner of the "
"rectangle."
msgstr ""
-"Distance of the 0,0 G-code coordinate from the front left corner of the "
+"Distance des coordonnées 0,0 du G-code depuis le coin avant gauche du "
"rectangle."
#: src/slic3r/GUI/BedShapeDialog.cpp:67
msgid "Circular"
-msgstr "Circular"
+msgstr "Circulaire"
#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111
-#: src/slic3r/GUI/ConfigWizard.cpp:544 src/slic3r/GUI/ConfigWizard.cpp:558
+#: src/slic3r/GUI/ConfigWizard.cpp:547 src/slic3r/GUI/ConfigWizard.cpp:561
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115
#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84
#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66
@@ -80,151 +77,154 @@ msgstr "Circular"
#: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2123
#: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2137
#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2177
-#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2293
-#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377
-#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396
-#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450
-#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2479
-#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2506
-#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2532
-#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2555
+#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2295
+#: src/libslic3r/PrintConfig.cpp:2370 src/libslic3r/PrintConfig.cpp:2379
+#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2398
+#: src/libslic3r/PrintConfig.cpp:2442 src/libslic3r/PrintConfig.cpp:2452
+#: src/libslic3r/PrintConfig.cpp:2471 src/libslic3r/PrintConfig.cpp:2481
+#: src/libslic3r/PrintConfig.cpp:2490 src/libslic3r/PrintConfig.cpp:2508
+#: src/libslic3r/PrintConfig.cpp:2523 src/libslic3r/PrintConfig.cpp:2537
+#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2560
msgid "mm"
msgstr "mm"
#: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676
msgid "Diameter"
-msgstr "Diameter"
+msgstr "Diamètre"
#: src/slic3r/GUI/BedShapeDialog.cpp:72
msgid ""
"Diameter of the print bed. It is assumed that origin (0,0) is located in the "
"center."
msgstr ""
-"Diameter of the print bed. It is assumed that origin (0,0) is located in the "
-"center."
+"Diamètre du plateau d'impression. Il est supposé que l'origine (0,0) est "
+"située au centre."
#: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239
#: src/libslic3r/GCode/PreviewData.cpp:175
msgid "Custom"
-msgstr "Custom"
+msgstr "Personnalisé"
#: src/slic3r/GUI/BedShapeDialog.cpp:80
msgid "Load shape from STL..."
-msgstr "Load shape from STL..."
+msgstr "Charger une forme depuis un STL..."
#: src/slic3r/GUI/BedShapeDialog.cpp:126
msgid "Settings"
-msgstr "Settings"
+msgstr "Réglages"
#: src/slic3r/GUI/BedShapeDialog.cpp:299
msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):"
-msgstr "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):"
+msgstr ""
+"Choisir un fichier à partir duquel importer la forme du plateau (STL/OBJ/"
+"AMF/3MF/PRUSA) :"
-#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1252
+#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1320
msgid "Error! "
-msgstr "Error! "
+msgstr "Erreur ! "
#: src/slic3r/GUI/BedShapeDialog.cpp:325
msgid "The selected file contains no geometry."
-msgstr "The selected file contains no geometry."
+msgstr "Le fichier sélectionné ne contient aucune géométrie."
#: src/slic3r/GUI/BedShapeDialog.cpp:329
msgid ""
"The selected file contains several disjoint areas. This is not supported."
msgstr ""
-"The selected file contains several disjoint areas. This is not supported."
+"Le fichier sélectionné contient plusieurs zones disjointes. Cela n'est pas "
+"utilisable."
-#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:507
+#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:510
msgid "Bed Shape"
-msgstr "Bed Shape"
+msgstr "Forme du plateau"
#: src/slic3r/GUI/BonjourDialog.cpp:55
msgid "Network lookup"
-msgstr "Network lookup"
+msgstr "Recherche réseau"
#: src/slic3r/GUI/BonjourDialog.cpp:72
msgid "Address"
-msgstr "Address"
+msgstr "Adresse"
#: src/slic3r/GUI/BonjourDialog.cpp:73
msgid "Hostname"
-msgstr "Hostname"
+msgstr "Nom d'hôte"
#: src/slic3r/GUI/BonjourDialog.cpp:74
msgid "Service name"
-msgstr "Service name"
+msgstr "Nom du service"
#: src/slic3r/GUI/BonjourDialog.cpp:76
msgid "OctoPrint version"
-msgstr "OctoPrint version"
+msgstr "Version d'OctoPrint"
#: src/slic3r/GUI/BonjourDialog.cpp:218
msgid "Searching for devices"
-msgstr "Searching for devices"
+msgstr "Recherche des dispositifs"
#: src/slic3r/GUI/BonjourDialog.cpp:225
msgid "Finished"
-msgstr "Finished"
+msgstr "Terminé"
#: src/slic3r/GUI/ButtonsDescription.cpp:15
msgid "Buttons And Text Colors Description"
-msgstr "Buttons And Text Colors Description"
+msgstr "Description des Boutons et des Couleurs de Texte"
#: src/slic3r/GUI/ButtonsDescription.cpp:40
msgid "Value is the same as the system value"
-msgstr "Value is the same as the system value"
+msgstr "La valeur est identique à la valeur du système"
#: src/slic3r/GUI/ButtonsDescription.cpp:57
msgid ""
"Value was changed and is not equal to the system value or the last saved "
"preset"
msgstr ""
-"Value was changed and is not equal to the system value or the last saved "
-"preset"
+"La valeur a été changée et n'est pas égale à la valeur du système ou au "
+"dernier préréglage sauvegardé"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17
msgid "Upgrade"
-msgstr "Upgrade"
+msgstr "Mise à jour"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19
msgid "Downgrade"
-msgstr "Downgrade"
+msgstr "Rétrograder"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21
msgid "Before roll back"
-msgstr "Before roll back"
+msgstr "Avant le retour en arrière"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23
msgid "User"
-msgstr "User"
+msgstr "Utilisateur"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26
msgid "Unknown"
-msgstr "Unknown"
+msgstr "Inconnu"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38
msgid "Active: "
-msgstr "Active: "
+msgstr "Actif : "
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44
msgid "slic3r version"
-msgstr "slic3r version"
+msgstr "version de slic3r"
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1250
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1252
msgid "print"
-msgstr "print"
+msgstr "imprimer"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46
msgid "filaments"
msgstr "filaments"
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1254
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1256
msgid "printer"
-msgstr "printer"
+msgstr "imprimer"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872
msgid "vendor"
-msgstr "vendor"
+msgstr "fabriquant"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51
msgid "version"
@@ -232,63 +232,63 @@ msgstr "version"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52
msgid "min slic3r version"
-msgstr "min slic3r version"
+msgstr "version minimale de slic3r"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54
msgid "max slic3r version"
-msgstr "max slic3r version"
+msgstr "version maximale de slic3r"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57
msgid "model"
-msgstr "model"
+msgstr "modèle"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57
msgid "variants"
-msgstr "variants"
+msgstr "variantes"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69
msgid "Incompatible with this Slic3r"
-msgstr "Incompatible with this Slic3r"
+msgstr "Incompatible avec ce Slic3r"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72
msgid "Activate"
-msgstr "Activate"
+msgstr "Activer"
#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98
msgid "Configuration Snapshots"
-msgstr "Configuration Snapshots"
+msgstr "Instantanés de Configuration"
#: src/slic3r/GUI/ConfigWizard.cpp:111
msgid "nozzle"
-msgstr "nozzle"
+msgstr "buse"
#: src/slic3r/GUI/ConfigWizard.cpp:115
msgid "Alternate nozzles:"
-msgstr "Alternate nozzles:"
+msgstr ""
#: src/slic3r/GUI/ConfigWizard.cpp:181
msgid "All standard"
-msgstr "All standard"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2909
+#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2910
msgid "All"
-msgstr "All"
+msgstr "Tous"
-#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:414
+#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:413
#: src/libslic3r/GCode/PreviewData.cpp:162
msgid "None"
-msgstr "None"
+msgstr "Aucun"
#: src/slic3r/GUI/ConfigWizard.cpp:284
#, c-format
-msgid "Welcome to the Slic3r %s"
-msgstr "Welcome to the Slic3r %s"
+msgid "Welcome to the %s %s"
+msgstr ""
#: src/slic3r/GUI/ConfigWizard.cpp:284
msgid "Welcome"
-msgstr "Welcome"
+msgstr "Bienvenue"
-#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:600
+#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:632
#, c-format
msgid "Run %s"
msgstr "Run %s"
@@ -296,306 +296,304 @@ msgstr "Run %s"
#: src/slic3r/GUI/ConfigWizard.cpp:290
#, c-format
msgid ""
-"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial "
-"configuration; just a few settings and you will be ready to print."
+"Hello, welcome to %s! This %s helps you with the initial configuration; just "
+"a few settings and you will be ready to print."
msgstr ""
-"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial "
-"configuration; just a few settings and you will be ready to print."
-#: src/slic3r/GUI/ConfigWizard.cpp:294
+#: src/slic3r/GUI/ConfigWizard.cpp:295
msgid ""
"Remove user profiles - install from scratch (a snapshot will be taken "
"beforehand)"
msgstr ""
-"Remove user profiles - install from scratch (a snapshot will be taken "
-"beforehand)"
+"Supprimer les profils d'utilisateur - installation à partir de zéro (un "
+"snapshot sera fait avant)"
-#: src/slic3r/GUI/ConfigWizard.cpp:325
+#: src/slic3r/GUI/ConfigWizard.cpp:326
#, c-format
msgid "%s Family"
-msgstr "%s Family"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:362
+#: src/slic3r/GUI/ConfigWizard.cpp:363
msgid "Custom Printer Setup"
-msgstr "Custom Printer Setup"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:362
+#: src/slic3r/GUI/ConfigWizard.cpp:363
msgid "Custom Printer"
-msgstr "Custom Printer"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:364
+#: src/slic3r/GUI/ConfigWizard.cpp:365
msgid "Define a custom printer profile"
-msgstr "Define a custom printer profile"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:366
+#: src/slic3r/GUI/ConfigWizard.cpp:367
msgid "Custom profile name:"
-msgstr "Custom profile name:"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:390
+#: src/slic3r/GUI/ConfigWizard.cpp:391
msgid "Automatic updates"
-msgstr "Automatic updates"
+msgstr "Mises à jour automatiques"
-#: src/slic3r/GUI/ConfigWizard.cpp:390
+#: src/slic3r/GUI/ConfigWizard.cpp:391
msgid "Updates"
-msgstr "Updates"
+msgstr "Mises à jour"
-#: src/slic3r/GUI/ConfigWizard.cpp:398 src/slic3r/GUI/Preferences.cpp:59
+#: src/slic3r/GUI/ConfigWizard.cpp:399 src/slic3r/GUI/Preferences.cpp:59
msgid "Check for application updates"
-msgstr "Check for application updates"
+msgstr "Vérifier les mises à jour de l'application"
-#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61
+#: src/slic3r/GUI/ConfigWizard.cpp:402
+#, c-format
msgid ""
-"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new "
-"version becomes available a notification is displayed at the next "
-"application startup (never during program usage). This is only a "
-"notification mechanisms, no automatic installation is done."
+"If enabled, Slic3r checks for new versions of %s online. When a new version "
+"becomes available, a notification is displayed at the next application "
+"startup (never during program usage). This is only a notification "
+"mechanisms, no automatic installation is done."
msgstr ""
-"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new "
-"version becomes available a notification is displayed at the next "
-"application startup (never during program usage). This is only a "
-"notification mechanisms, no automatic installation is done."
-#: src/slic3r/GUI/ConfigWizard.cpp:405 src/slic3r/GUI/Preferences.cpp:67
+#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:67
msgid "Update built-in Presets automatically"
-msgstr "Update built-in Presets automatically"
+msgstr "Mettre à jour automatiquement les Préréglages intégrés"
-#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:69
+#: src/slic3r/GUI/ConfigWizard.cpp:411 src/slic3r/GUI/Preferences.cpp:69
msgid ""
"If enabled, Slic3r downloads updates of built-in system presets in the "
"background. These updates are downloaded into a separate temporary location. "
"When a new preset version becomes available it is offered at application "
"startup."
msgstr ""
-"If enabled, Slic3r downloads updates of built-in system presets in the "
-"background. These updates are downloaded into a separate temporary location. "
-"When a new preset version becomes available it is offered at application "
-"startup."
+"Si activé, Slic3r télécharge les mises à jours des préréglages système "
+"intégrés en arrière-plan. Ces mises à jour sont téléchargées dans un "
+"répertoire temporaire séparé. Lorsqu'une nouvelle version de préréglages est "
+"disponible, elle est proposée au démarrage de l'application."
-#: src/slic3r/GUI/ConfigWizard.cpp:409
+#: src/slic3r/GUI/ConfigWizard.cpp:412
msgid ""
"Updates are never applied without user's consent and never overwrite user's "
"customized settings."
msgstr ""
-"Updates are never applied without user's consent and never overwrite user's "
-"customized settings."
+"Les mises à jour ne sont jamais appliquées sans l'accord de l'utilisateur et "
+"n'annulent jamais les réglages personnalisés de l'utilisateur."
-#: src/slic3r/GUI/ConfigWizard.cpp:414
+#: src/slic3r/GUI/ConfigWizard.cpp:417
msgid ""
"Additionally a backup snapshot of the whole configuration is created before "
"an update is applied."
msgstr ""
-"Additionally a backup snapshot of the whole configuration is created before "
-"an update is applied."
+"De plus, un instantané de sauvegarde de l'ensemble de la configuration est "
+"créé avant qu'une mise à jour ne soit appliquée."
-#: src/slic3r/GUI/ConfigWizard.cpp:421
+#: src/slic3r/GUI/ConfigWizard.cpp:424
msgid "Other Vendors"
-msgstr "Other Vendors"
+msgstr "Autres Fabriquants"
-#: src/slic3r/GUI/ConfigWizard.cpp:423
-msgid "Pick another vendor supported by Slic3r PE:"
-msgstr "Pick another vendor supported by Slic3r PE:"
+#: src/slic3r/GUI/ConfigWizard.cpp:426
+#, c-format
+msgid "Pick another vendor supported by %s:"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:469
+#: src/slic3r/GUI/ConfigWizard.cpp:472
msgid "Firmware Type"
-msgstr "Firmware Type"
+msgstr "Type de Firmware"
-#: src/slic3r/GUI/ConfigWizard.cpp:469 src/slic3r/GUI/Tab.cpp:1870
+#: src/slic3r/GUI/ConfigWizard.cpp:472 src/slic3r/GUI/Tab.cpp:1870
msgid "Firmware"
msgstr "Firmware"
-#: src/slic3r/GUI/ConfigWizard.cpp:473
+#: src/slic3r/GUI/ConfigWizard.cpp:476
msgid "Choose the type of firmware used by your printer."
-msgstr "Choose the type of firmware used by your printer."
+msgstr "Choisissez le type de firmware utilisé par votre imprimante."
-#: src/slic3r/GUI/ConfigWizard.cpp:507
+#: src/slic3r/GUI/ConfigWizard.cpp:510
msgid "Bed Shape and Size"
-msgstr "Bed Shape and Size"
+msgstr "Forme du Plateau et Taille"
-#: src/slic3r/GUI/ConfigWizard.cpp:510
+#: src/slic3r/GUI/ConfigWizard.cpp:513
msgid "Set the shape of your printer's bed."
-msgstr "Set the shape of your printer's bed."
+msgstr "Réglez la forme du plateau de votre imprimante."
-#: src/slic3r/GUI/ConfigWizard.cpp:524
+#: src/slic3r/GUI/ConfigWizard.cpp:527
msgid "Filament and Nozzle Diameters"
-msgstr "Filament and Nozzle Diameters"
+msgstr "Diamètres du Filament et de la Buse"
-#: src/slic3r/GUI/ConfigWizard.cpp:524
+#: src/slic3r/GUI/ConfigWizard.cpp:527
msgid "Print Diameters"
-msgstr "Print Diameters"
+msgstr "Diamètres d'Impression"
-#: src/slic3r/GUI/ConfigWizard.cpp:540
+#: src/slic3r/GUI/ConfigWizard.cpp:543
msgid "Enter the diameter of your printer's hot end nozzle."
-msgstr "Enter the diameter of your printer's hot end nozzle."
+msgstr ""
+"Entrez le diamètre de la buse de la tête d'impression de votre imprimante."
-#: src/slic3r/GUI/ConfigWizard.cpp:543
+#: src/slic3r/GUI/ConfigWizard.cpp:546
msgid "Nozzle Diameter:"
-msgstr "Nozzle Diameter:"
+msgstr "Diamètre de la Buse :"
-#: src/slic3r/GUI/ConfigWizard.cpp:553
+#: src/slic3r/GUI/ConfigWizard.cpp:556
msgid "Enter the diameter of your filament."
-msgstr "Enter the diameter of your filament."
+msgstr "Entrez le diamètre de votre filament."
-#: src/slic3r/GUI/ConfigWizard.cpp:554
+#: src/slic3r/GUI/ConfigWizard.cpp:557
msgid ""
"Good precision is required, so use a caliper and do multiple measurements "
"along the filament, then compute the average."
msgstr ""
-"Good precision is required, so use a caliper and do multiple measurements "
-"along the filament, then compute the average."
+"Une bonne précision est requise, utilisez un pied à coulisse et calculez la "
+"moyenne de plusieurs mesures le long du filament."
-#: src/slic3r/GUI/ConfigWizard.cpp:557
+#: src/slic3r/GUI/ConfigWizard.cpp:560
msgid "Filament Diameter:"
-msgstr "Filament Diameter:"
+msgstr "Diamètre du Filament :"
-#: src/slic3r/GUI/ConfigWizard.cpp:575
+#: src/slic3r/GUI/ConfigWizard.cpp:578
msgid "Extruder and Bed Temperatures"
-msgstr "Extruder and Bed Temperatures"
+msgstr "Températures de l'Extrudeur et du Lit"
-#: src/slic3r/GUI/ConfigWizard.cpp:575
+#: src/slic3r/GUI/ConfigWizard.cpp:578
msgid "Temperatures"
-msgstr "Temperatures"
+msgstr "Températures"
-#: src/slic3r/GUI/ConfigWizard.cpp:591
+#: src/slic3r/GUI/ConfigWizard.cpp:594
msgid "Enter the temperature needed for extruding your filament."
-msgstr "Enter the temperature needed for extruding your filament."
+msgstr "Entrez la température nécessaire pour extruder votre filament."
-#: src/slic3r/GUI/ConfigWizard.cpp:592
+#: src/slic3r/GUI/ConfigWizard.cpp:595
msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."
-msgstr "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."
+msgstr ""
+"La règle générale est 160 à 230 °C pour le PLA et 215 à 250 °C pour l'ABS."
-#: src/slic3r/GUI/ConfigWizard.cpp:595
+#: src/slic3r/GUI/ConfigWizard.cpp:598
msgid "Extrusion Temperature:"
-msgstr "Extrusion Temperature:"
+msgstr "Température d'Extrusion :"
-#: src/slic3r/GUI/ConfigWizard.cpp:596 src/slic3r/GUI/ConfigWizard.cpp:610
+#: src/slic3r/GUI/ConfigWizard.cpp:599 src/slic3r/GUI/ConfigWizard.cpp:613
msgid "°C"
msgstr "°C"
-#: src/slic3r/GUI/ConfigWizard.cpp:605
+#: src/slic3r/GUI/ConfigWizard.cpp:608
msgid ""
"Enter the bed temperature needed for getting your filament to stick to your "
"heated bed."
msgstr ""
-"Enter the bed temperature needed for getting your filament to stick to your "
-"heated bed."
+"Entrez la température du lit nécessaire pour que votre filament colle à "
+"votre lit chauffant."
-#: src/slic3r/GUI/ConfigWizard.cpp:606
+#: src/slic3r/GUI/ConfigWizard.cpp:609
msgid ""
"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have "
"no heated bed."
msgstr ""
-"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have "
-"no heated bed."
+"La règle générale est 60 °C pour le PLA et 110 °C pour l'ABS. Laissez à zéro "
+"si vous n'avez pas de lit chauffant."
-#: src/slic3r/GUI/ConfigWizard.cpp:609
+#: src/slic3r/GUI/ConfigWizard.cpp:612
msgid "Bed Temperature:"
-msgstr "Bed Temperature:"
+msgstr "Température du Plateau :"
-#: src/slic3r/GUI/ConfigWizard.cpp:1001
+#: src/slic3r/GUI/ConfigWizard.cpp:1017
msgid "Select all standard printers"
-msgstr "Select all standard printers"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1004
+#: src/slic3r/GUI/ConfigWizard.cpp:1020
msgid "< &Back"
-msgstr "< &Back"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1005
+#: src/slic3r/GUI/ConfigWizard.cpp:1021
msgid "&Next >"
-msgstr "&Next >"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1006
+#: src/slic3r/GUI/ConfigWizard.cpp:1022
msgid "&Finish"
-msgstr "&Finish"
+msgstr "&Fin"
-#: src/slic3r/GUI/ConfigWizard.cpp:1007 src/slic3r/GUI/FirmwareDialog.cpp:142
+#: src/slic3r/GUI/ConfigWizard.cpp:1023 src/slic3r/GUI/FirmwareDialog.cpp:142
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37
#: src/slic3r/GUI/ProgressStatusBar.cpp:28
msgid "Cancel"
-msgstr "Cancel"
+msgstr "Annuler"
-#: src/slic3r/GUI/ConfigWizard.cpp:1021
+#: src/slic3r/GUI/ConfigWizard.cpp:1037
msgid "Prusa FFF Technology Printers"
-msgstr "Prusa FFF Technology Printers"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1024
+#: src/slic3r/GUI/ConfigWizard.cpp:1040
msgid "Prusa MSLA Technology Printers"
-msgstr "Prusa MSLA Technology Printers"
+msgstr ""
-#: src/slic3r/GUI/ConfigWizard.cpp:1111
+#: src/slic3r/GUI/ConfigWizard.cpp:1127
msgid "Configuration Wizard"
-msgstr "Configuration Wizard"
+msgstr "Assistant de Configuration"
-#: src/slic3r/GUI/ConfigWizard.cpp:1112
+#: src/slic3r/GUI/ConfigWizard.cpp:1128
msgid "Configuration &Wizard"
-msgstr "Configuration &Wizard"
+msgstr "&Assistant de Configuration"
-#: src/slic3r/GUI/ConfigWizard.cpp:1114
+#: src/slic3r/GUI/ConfigWizard.cpp:1130
msgid "Configuration Assistant"
-msgstr "Configuration Assistant"
+msgstr "Assistant de Configuration"
-#: src/slic3r/GUI/ConfigWizard.cpp:1115
+#: src/slic3r/GUI/ConfigWizard.cpp:1131
msgid "Configuration &Assistant"
-msgstr "Configuration &Assistant"
+msgstr "&Assistant de Configuration"
-#: src/slic3r/GUI/Field.cpp:112
+#: src/slic3r/GUI/Field.cpp:111
msgid "default value"
-msgstr "default value"
+msgstr ""
-#: src/slic3r/GUI/Field.cpp:115
+#: src/slic3r/GUI/Field.cpp:114
msgid "parameter name"
-msgstr "parameter name"
+msgstr ""
-#: src/slic3r/GUI/Field.cpp:143
+#: src/slic3r/GUI/Field.cpp:142
#, c-format
msgid "%s doesn't support percentage"
-msgstr "%s doesn't support percentage"
+msgstr "%s ne supporte pas un pourcentage"
-#: src/slic3r/GUI/Field.cpp:157 src/slic3r/GUI/Field.cpp:180
+#: src/slic3r/GUI/Field.cpp:156 src/slic3r/GUI/Field.cpp:179
msgid "Invalid numeric input."
-msgstr "Invalid numeric input."
+msgstr ""
-#: src/slic3r/GUI/Field.cpp:162
+#: src/slic3r/GUI/Field.cpp:161
msgid "Input value is out of range"
-msgstr "Input value is out of range"
+msgstr "La valeur entrée est hors plage"
-#: src/slic3r/GUI/Field.cpp:188
+#: src/slic3r/GUI/Field.cpp:187
#, c-format
msgid ""
"Do you mean %d%% instead of %d %s?\n"
"Select YES if you want to change this value to %d%%, \n"
"or NO if you are sure that %d %s is a correct value."
msgstr ""
-"Do you mean %d%% instead of %d %s?\n"
-"Select YES if you want to change this value to %d%%, \n"
-"or NO if you are sure that %d %s is a correct value."
-#: src/slic3r/GUI/Field.cpp:191
+#: src/slic3r/GUI/Field.cpp:190
msgid "Parameter validation"
-msgstr "Parameter validation"
+msgstr ""
#: src/slic3r/GUI/FirmwareDialog.cpp:141
msgid "Flash!"
-msgstr "Flash!"
+msgstr "Flash !"
#: src/slic3r/GUI/FirmwareDialog.cpp:143
msgid "Flashing in progress. Please do not disconnect the printer!"
-msgstr "Flashing in progress. Please do not disconnect the printer!"
+msgstr ""
+"Processus de flash en cours. Veuillez ne pas déconnecter l'imprimante !"
#: src/slic3r/GUI/FirmwareDialog.cpp:187
msgid "Flashing failed: "
-msgstr "Flashing failed: "
+msgstr ""
#: src/slic3r/GUI/FirmwareDialog.cpp:268
msgid "Flashing succeeded!"
-msgstr "Flashing succeeded!"
+msgstr "Flash effectué avec succès !"
#: src/slic3r/GUI/FirmwareDialog.cpp:269
msgid "Flashing failed. Please see the avrdude log below."
-msgstr "Flashing failed. Please see the avrdude log below."
+msgstr ""
+"Le processus de flash a échoué. Veuillez consulter le journal avrdude ci-"
+"dessous."
#: src/slic3r/GUI/FirmwareDialog.cpp:270
msgid "Flashing cancelled."
-msgstr "Flashing cancelled."
+msgstr "Processus de flash annulé."
#: src/slic3r/GUI/FirmwareDialog.cpp:308
#, c-format
@@ -607,19 +605,12 @@ msgid ""
"Do you want to continue and flash this hex file anyway?\n"
"Please only continue if you are sure this is the right thing to do."
msgstr ""
-"This firmware hex file does not match the printer model.\n"
-"The hex file is intended for: %s\n"
-"Printer reported: %s\n"
-"\n"
-"Do you want to continue and flash this hex file anyway?\n"
-"Please only continue if you are sure this is the right thing to do."
#: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431
#, c-format
msgid ""
"Multiple %s devices found. Please only connect one at a time for flashing."
msgstr ""
-"Multiple %s devices found. Please only connect one at a time for flashing."
#: src/slic3r/GUI/FirmwareDialog.cpp:412
#, c-format
@@ -628,73 +619,70 @@ msgid ""
"If the device is connected, please press the Reset button next to the USB "
"connector ..."
msgstr ""
-"The %s device was not found.\n"
-"If the device is connected, please press the Reset button next to the USB "
-"connector ..."
#: src/slic3r/GUI/FirmwareDialog.cpp:525
#, c-format
msgid "The %s device could not have been found"
-msgstr "The %s device could not have been found"
+msgstr ""
#: src/slic3r/GUI/FirmwareDialog.cpp:603
#, c-format
msgid "Error accessing port at %s: %s"
-msgstr "Error accessing port at %s: %s"
+msgstr ""
#: src/slic3r/GUI/FirmwareDialog.cpp:605
#, c-format
msgid "Error: %s"
-msgstr "Error: %s"
+msgstr ""
#: src/slic3r/GUI/FirmwareDialog.cpp:735
msgid "Firmware flasher"
-msgstr "Firmware flasher"
+msgstr "Outil de flash du firmware"
#: src/slic3r/GUI/FirmwareDialog.cpp:762
msgid "Firmware image:"
-msgstr "Firmware image:"
+msgstr "Image du firmware :"
#: src/slic3r/GUI/FirmwareDialog.cpp:766
msgid "Serial port:"
-msgstr "Serial port:"
+msgstr "Port série :"
#: src/slic3r/GUI/FirmwareDialog.cpp:768
msgid "Autodetected"
-msgstr "Autodetected"
+msgstr ""
#: src/slic3r/GUI/FirmwareDialog.cpp:769
msgid "Rescan"
-msgstr "Rescan"
+msgstr "Scanner à nouveau"
#: src/slic3r/GUI/FirmwareDialog.cpp:776
msgid "Progress:"
-msgstr "Progress:"
+msgstr "Progression :"
#: src/slic3r/GUI/FirmwareDialog.cpp:779
msgid "Status:"
-msgstr "Status:"
+msgstr "État :"
#: src/slic3r/GUI/FirmwareDialog.cpp:780
msgid "Ready"
-msgstr "Ready"
+msgstr "Prêt"
#: src/slic3r/GUI/FirmwareDialog.cpp:800
msgid "Advanced: Output log"
-msgstr "Advanced: Output log"
+msgstr ""
#: src/slic3r/GUI/FirmwareDialog.cpp:811
#: src/slic3r/GUI/PrintHostDialogs.cpp:161
msgid "Close"
-msgstr "Close"
+msgstr ""
#: src/slic3r/GUI/FirmwareDialog.cpp:859
msgid ""
"Are you sure you want to cancel firmware flashing?\n"
"This could leave your printer in an unusable state!"
msgstr ""
-"Are you sure you want to cancel firmware flashing?\n"
-"This could leave your printer in an unusable state!"
+"Êtes-vous certain de vouloir annuler le processus de flash du firmware ?\n"
+"Cela pourrait rendre votre imprimante inutilisable !"
#: src/slic3r/GUI/FirmwareDialog.cpp:860
msgid "Confirmation"
@@ -702,340 +690,357 @@ msgstr "Confirmation"
#: src/slic3r/GUI/FirmwareDialog.cpp:863
msgid "Cancelling..."
-msgstr "Cancelling..."
+msgstr ""
-#: src/slic3r/GUI/GLCanvas3D.cpp:709
+#: src/slic3r/GUI/GLCanvas3D.cpp:714
msgid "Detected object outside print volume"
-msgstr "Detected object outside print volume"
+msgstr ""
-#: src/slic3r/GUI/GLCanvas3D.cpp:710
+#: src/slic3r/GUI/GLCanvas3D.cpp:715
msgid "Detected toolpath outside print volume"
-msgstr "Detected toolpath outside print volume"
+msgstr ""
-#: src/slic3r/GUI/GLCanvas3D.cpp:711
+#: src/slic3r/GUI/GLCanvas3D.cpp:716
msgid "Some objects are not visible when editing supports"
-msgstr "Some objects are not visible when editing supports"
+msgstr ""
-#: src/slic3r/GUI/GLCanvas3D.cpp:713
+#: src/slic3r/GUI/GLCanvas3D.cpp:718
msgid ""
"Detected object outside print volume\n"
"Resolve a clash to continue slicing/export process correctly"
msgstr ""
-"Detected object outside print volume\n"
-"Resolve a clash to continue slicing/export process correctly"
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195
msgid "Rotate lower part upwards"
-msgstr "Rotate lower part upwards"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198
msgid "Perform cut"
-msgstr "Perform cut"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43
msgid "Cut object:"
-msgstr "Cut object:"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88
msgid "Cut [C]"
-msgstr "Cut [C]"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3006
+#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3011
msgid "Cut"
-msgstr "Cut"
+msgstr "Couper"
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193
msgid "Keep upper part"
-msgstr "Keep upper part"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194
msgid "Keep lower part"
-msgstr "Keep lower part"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32
msgid "Place on face [F]"
-msgstr "Place on face [F]"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51
msgid "Move [M]"
-msgstr "Move [M]"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176
+#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177
msgid "Position (mm)"
-msgstr "Position (mm)"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176
+#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177
msgid "Displacement (mm)"
-msgstr "Displacement (mm)"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458
msgid "Rotate [R]"
-msgstr "Rotate [R]"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491
msgid "Rotation (deg)"
-msgstr "Rotation (deg)"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51
msgid "Scale [S]"
-msgstr "Scale [S]"
+msgstr ""
#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276
msgid "Scale (%)"
-msgstr "Scale (%)"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:882
msgid "Left mouse click - add point"
-msgstr "Left mouse click - add point"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:883
msgid "Right mouse click - remove point"
-msgstr "Right mouse click - remove point"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:884
msgid "Shift + Left (+ drag) - select point(s)"
-msgstr "Shift + Left (+ drag) - select point(s)"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:606
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:891
msgid "Head diameter: "
-msgstr "Head diameter: "
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:618
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:903
msgid "Lock supports under new islands"
-msgstr "Lock supports under new islands"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:622
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:907
msgid "Remove selected points"
-msgstr "Remove selected points"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:626
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:679
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:964
msgid "Remove all points"
-msgstr "Remove all points"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:916
msgid "Apply changes"
-msgstr "Apply changes"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:636
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:921
msgid "Discard changes"
-msgstr "Discard changes"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:644
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:929
msgid "Minimal points distance: "
-msgstr "Minimal points distance: "
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:655
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:940
msgid "Support points density: "
-msgstr "Support points density: "
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:954
msgid "Auto-generate points [A]"
-msgstr "Auto-generate points [A]"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:960
msgid "Manual editing [M]"
-msgstr "Manual editing [M]"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:969
+msgid "No points (will be autogenerated)"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:970
+msgid "Autogenerated points (no modifications)"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:971
+msgid "User-modified points"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:972
+msgid "Generation in progress..."
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:980
+msgid "Reset direction [R] "
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:738
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1039
msgid "SLA Support Points [L]"
-msgstr "SLA Support Points [L]"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:767
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1066
msgid "Do you want to save your manually edited support points ?\n"
-msgstr "Do you want to save your manually edited support points ?\n"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:768
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1067
msgid "Save changes?"
-msgstr "Save changes?"
+msgstr ""
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210
msgid ""
"Autogeneration will erase all manually edited points.\n"
"\n"
"Are you sure you want to do it?\n"
msgstr ""
-"Autogeneration will erase all manually edited points.\n"
-"\n"
-"Are you sure you want to do it?\n"
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:899 src/slic3r/GUI/GUI.cpp:288
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 src/slic3r/GUI/GUI.cpp:288
#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328
msgid "Warning"
-msgstr "Warning"
+msgstr "Alerte"
-#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2720
+#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2721
msgid "It's impossible to print multi-part object(s) with SLA technology."
-msgstr "It's impossible to print multi-part object(s) with SLA technology."
+msgstr ""
#: src/slic3r/GUI/GUI.cpp:148
msgid "Please check and fix your object list."
-msgstr "Please check and fix your object list."
+msgstr ""
-#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:679
-#: src/slic3r/GUI/Tab.cpp:2722
+#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:711
+#: src/slic3r/GUI/Tab.cpp:2723
msgid "Attention!"
-msgstr "Attention!"
+msgstr "Attention !"
#: src/slic3r/GUI/GUI.cpp:282
msgid "Notice"
-msgstr "Notice"
+msgstr "Remarque"
-#: src/slic3r/GUI/GUI_App.cpp:318
+#: src/slic3r/GUI/GUI_App.cpp:352
msgid "Changing of an application language"
-msgstr "Changing of an application language"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:326 src/slic3r/GUI/GUI_App.cpp:335
+#: src/slic3r/GUI/GUI_App.cpp:360 src/slic3r/GUI/GUI_App.cpp:369
msgid "Recreating"
-msgstr "Recreating"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:339
-msgid "Loading of a current presets"
-msgstr "Loading of a current presets"
+#: src/slic3r/GUI/GUI_App.cpp:373
+msgid "Loading of current presets"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:347
+#: src/slic3r/GUI/GUI_App.cpp:381
msgid "Loading of a mode view"
-msgstr "Loading of a mode view"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:429
+#: src/slic3r/GUI/GUI_App.cpp:463
msgid "Choose one file (3MF):"
-msgstr "Choose one file (3MF):"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:441
+#: src/slic3r/GUI/GUI_App.cpp:475
msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"
-msgstr "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"
+msgstr "Choisir un ou plusieurs fichiers (STL/OBJ/AMF/3MF/PRUSA) :"
-#: src/slic3r/GUI/GUI_App.cpp:454
+#: src/slic3r/GUI/GUI_App.cpp:488
msgid "Array of language names and identifiers should have the same size."
-msgstr "Array of language names and identifiers should have the same size."
+msgstr ""
+"Les tableaux de noms et d'identifiants de langue doivent avoir la même "
+"taille."
-#: src/slic3r/GUI/GUI_App.cpp:464
+#: src/slic3r/GUI/GUI_App.cpp:498
msgid "Select the language"
-msgstr "Select the language"
+msgstr "Sélectionner la langue"
-#: src/slic3r/GUI/GUI_App.cpp:464
+#: src/slic3r/GUI/GUI_App.cpp:498
msgid "Language"
-msgstr "Language"
+msgstr "Langue"
-#: src/slic3r/GUI/GUI_App.cpp:534 src/slic3r/GUI/GUI_ObjectList.cpp:1067
+#: src/slic3r/GUI/GUI_App.cpp:568 src/slic3r/GUI/GUI_ObjectList.cpp:1135
#: src/libslic3r/PrintConfig.cpp:298
msgid "Default"
-msgstr "Default"
+msgstr "Défaut"
-#: src/slic3r/GUI/GUI_App.cpp:603
+#: src/slic3r/GUI/GUI_App.cpp:635
msgid "&Configuration Snapshots"
-msgstr "&Configuration Snapshots"
+msgstr "Instantanés de &Configuration"
-#: src/slic3r/GUI/GUI_App.cpp:603
+#: src/slic3r/GUI/GUI_App.cpp:635
msgid "Inspect / activate configuration snapshots"
-msgstr "Inspect / activate configuration snapshots"
+msgstr "Inspecter / activer les instantanés de configuration"
-#: src/slic3r/GUI/GUI_App.cpp:604
+#: src/slic3r/GUI/GUI_App.cpp:636
msgid "Take Configuration &Snapshot"
-msgstr "Take Configuration &Snapshot"
+msgstr "Prendre un &snapshot de la configuration"
-#: src/slic3r/GUI/GUI_App.cpp:604
+#: src/slic3r/GUI/GUI_App.cpp:636
msgid "Capture a configuration snapshot"
-msgstr "Capture a configuration snapshot"
+msgstr "Capturer un instantané de la configuration"
-#: src/slic3r/GUI/GUI_App.cpp:607
+#: src/slic3r/GUI/GUI_App.cpp:639
msgid "&Preferences"
-msgstr "&Preferences"
+msgstr "&Préférences"
-#: src/slic3r/GUI/GUI_App.cpp:613
+#: src/slic3r/GUI/GUI_App.cpp:645
msgid "Application preferences"
-msgstr "Application preferences"
+msgstr "Préférences de l'application"
-#: src/slic3r/GUI/GUI_App.cpp:616 src/slic3r/GUI/wxExtensions.cpp:2446
+#: src/slic3r/GUI/GUI_App.cpp:648 src/slic3r/GUI/wxExtensions.cpp:2457
msgid "Simple"
-msgstr "Simple"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:616
+#: src/slic3r/GUI/GUI_App.cpp:648
msgid "Simple View Mode"
-msgstr "Simple View Mode"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:73
+#: src/slic3r/GUI/GUI_App.cpp:649 src/slic3r/GUI/GUI_ObjectList.cpp:76
#: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992
#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093
#: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890
-#: src/slic3r/GUI/Tab.cpp:3347 src/slic3r/GUI/wxExtensions.cpp:2447
+#: src/slic3r/GUI/Tab.cpp:3349 src/slic3r/GUI/wxExtensions.cpp:2458
#: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186
#: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987
#: src/libslic3r/PrintConfig.cpp:2173
msgid "Advanced"
-msgstr "Advanced"
+msgstr "Avancé"
-#: src/slic3r/GUI/GUI_App.cpp:617
+#: src/slic3r/GUI/GUI_App.cpp:649
msgid "Advanced View Mode"
-msgstr "Advanced View Mode"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:618 src/slic3r/GUI/wxExtensions.cpp:2448
+#: src/slic3r/GUI/GUI_App.cpp:650 src/slic3r/GUI/wxExtensions.cpp:2459
msgid "Expert"
-msgstr "Expert"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:618
+#: src/slic3r/GUI/GUI_App.cpp:650
msgid "Expert View Mode"
-msgstr "Expert View Mode"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:623
+#: src/slic3r/GUI/GUI_App.cpp:655
msgid "Mode"
-msgstr "Mode"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:623
+#: src/slic3r/GUI/GUI_App.cpp:655
msgid "Slic3r View Mode"
-msgstr "Slic3r View Mode"
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:625
+#: src/slic3r/GUI/GUI_App.cpp:657
msgid "Change Application &Language"
-msgstr "Change Application &Language"
+msgstr "Changer la &langue de l'application"
-#: src/slic3r/GUI/GUI_App.cpp:627
+#: src/slic3r/GUI/GUI_App.cpp:659
msgid "Flash printer &firmware"
-msgstr "Flash printer &firmware"
+msgstr "Flasher le &firmware de l'imprimante"
-#: src/slic3r/GUI/GUI_App.cpp:627
+#: src/slic3r/GUI/GUI_App.cpp:659
msgid "Upload a firmware image into an Arduino based printer"
-msgstr "Upload a firmware image into an Arduino based printer"
+msgstr "Charger un firmware dans une imprimante basée sur un Arduino"
-#: src/slic3r/GUI/GUI_App.cpp:639
+#: src/slic3r/GUI/GUI_App.cpp:671
msgid "Taking configuration snapshot"
-msgstr "Taking configuration snapshot"
+msgstr "Snapshot de la configuration en cours"
-#: src/slic3r/GUI/GUI_App.cpp:639
+#: src/slic3r/GUI/GUI_App.cpp:671
msgid "Snapshot name"
-msgstr "Snapshot name"
+msgstr "Nom du snapshot"
-#: src/slic3r/GUI/GUI_App.cpp:676
+#: src/slic3r/GUI/GUI_App.cpp:708
msgid "Application will be restarted after language change."
-msgstr "Application will be restarted after language change."
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:677
+#: src/slic3r/GUI/GUI_App.cpp:709
msgid "3D-Scene will be cleaned."
-msgstr "3D-Scene will be cleaned."
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:678
+#: src/slic3r/GUI/GUI_App.cpp:710
msgid "Please, check your changes before."
-msgstr "Please, check your changes before."
+msgstr ""
-#: src/slic3r/GUI/GUI_App.cpp:706
+#: src/slic3r/GUI/GUI_App.cpp:738
msgid "&Configuration"
msgstr "&Configuration"
-#: src/slic3r/GUI/GUI_App.cpp:726
+#: src/slic3r/GUI/GUI_App.cpp:758
msgid "You have unsaved changes "
-msgstr "You have unsaved changes "
+msgstr "Les modifications n'ont pas été sauvegardées "
-#: src/slic3r/GUI/GUI_App.cpp:726
+#: src/slic3r/GUI/GUI_App.cpp:758
msgid ". Discard changes and continue anyway?"
-msgstr ". Discard changes and continue anyway?"
+msgstr ". Annuler les changements et continuer malgré tout ?"
-#: src/slic3r/GUI/GUI_App.cpp:727
+#: src/slic3r/GUI/GUI_App.cpp:759
msgid "Unsaved Presets"
-msgstr "Unsaved Presets"
+msgstr "Préréglages Non Sauvegardés"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:65
+#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68
#: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149
#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437
#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841
@@ -1043,10 +1048,10 @@ msgstr "Unsaved Presets"
#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551
#: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042
msgid "Layers and Perimeters"
-msgstr "Layers and Perimeters"
+msgstr "Couches et Périmètres"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:66
-#: src/slic3r/GUI/Plater.cpp:431 src/slic3r/GUI/Tab.cpp:981
+#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69
+#: src/slic3r/GUI/Plater.cpp:430 src/slic3r/GUI/Tab.cpp:981
#: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311
#: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388
#: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742
@@ -1055,9 +1060,9 @@ msgstr "Layers and Perimeters"
#: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997
#: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675
msgid "Infill"
-msgstr "Infill"
+msgstr "Remplissage"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:67
+#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70
#: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010
#: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333
#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779
@@ -1072,1209 +1077,1233 @@ msgstr "Infill"
#: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969
#: src/libslic3r/GCode/PreviewData.cpp:172
msgid "Support material"
-msgstr "Support material"
+msgstr "Support"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:69
+#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72
#: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794
#: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953
#: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667
#: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877
#: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157
msgid "Extruders"
-msgstr "Extruders"
+msgstr "Extrudeurs"
#: src/slic3r/GUI/GUI_ObjectList.cpp:39
msgid "Pad and Support"
-msgstr "Pad and Support"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:68 src/slic3r/GUI/GUI_Preview.cpp:215
+#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_Preview.cpp:215
#: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198
#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870
#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360
#: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646
#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028
msgid "Speed"
-msgstr "Speed"
+msgstr "Vitesse"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:70 src/libslic3r/PrintConfig.cpp:415
+#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/libslic3r/PrintConfig.cpp:415
#: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829
#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348
#: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860
#: src/libslic3r/PrintConfig.cpp:2017
msgid "Extrusion Width"
-msgstr "Extrusion Width"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:75 src/slic3r/GUI/Plater.cpp:410
-#: src/slic3r/GUI/Tab.cpp:3309 src/slic3r/GUI/Tab.cpp:3310
-#: src/libslic3r/PrintConfig.cpp:2359 src/libslic3r/PrintConfig.cpp:2366
-#: src/libslic3r/PrintConfig.cpp:2375 src/libslic3r/PrintConfig.cpp:2384
-#: src/libslic3r/PrintConfig.cpp:2394 src/libslic3r/PrintConfig.cpp:2420
-#: src/libslic3r/PrintConfig.cpp:2427 src/libslic3r/PrintConfig.cpp:2438
-#: src/libslic3r/PrintConfig.cpp:2448 src/libslic3r/PrintConfig.cpp:2457
-#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2476
-#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496
-#: src/libslic3r/PrintConfig.cpp:2504
+msgstr "Largeur d'Extrusion"
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/Plater.cpp:409
+#: src/slic3r/GUI/Tab.cpp:3311 src/slic3r/GUI/Tab.cpp:3312
+#: src/libslic3r/PrintConfig.cpp:2361 src/libslic3r/PrintConfig.cpp:2368
+#: src/libslic3r/PrintConfig.cpp:2377 src/libslic3r/PrintConfig.cpp:2386
+#: src/libslic3r/PrintConfig.cpp:2396 src/libslic3r/PrintConfig.cpp:2422
+#: src/libslic3r/PrintConfig.cpp:2429 src/libslic3r/PrintConfig.cpp:2440
+#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2459
+#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2478
+#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2498
+#: src/libslic3r/PrintConfig.cpp:2506
msgid "Supports"
-msgstr "Supports"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:76 src/slic3r/GUI/Tab.cpp:3337
-#: src/slic3r/GUI/Tab.cpp:3338 src/libslic3r/PrintConfig.cpp:2512
-#: src/libslic3r/PrintConfig.cpp:2519 src/libslic3r/PrintConfig.cpp:2530
-#: src/libslic3r/PrintConfig.cpp:2540 src/libslic3r/PrintConfig.cpp:2553
-#: src/libslic3r/PrintConfig.cpp:2562
+#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/Tab.cpp:3339
+#: src/slic3r/GUI/Tab.cpp:3340 src/libslic3r/PrintConfig.cpp:2514
+#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2535
+#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2558
+#: src/libslic3r/PrintConfig.cpp:2567
msgid "Pad"
-msgstr "Pad"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:173
+#: src/slic3r/GUI/GUI_ObjectList.cpp:176
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:45
msgid "Name"
-msgstr "Name"
+msgstr "Nom"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:201
+#: src/slic3r/GUI/GUI_ObjectList.cpp:204
msgid "Right button click the icon to change the object settings"
-msgstr "Right button click the icon to change the object settings"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:209
+#: src/slic3r/GUI/GUI_ObjectList.cpp:212
#, c-format
msgid "Auto-repaired (%d errors):\n"
-msgstr "Auto-repaired (%d errors):\n"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:212
+#: src/slic3r/GUI/GUI_ObjectList.cpp:215
msgid "degenerate facets"
-msgstr "degenerate facets"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:213
+#: src/slic3r/GUI/GUI_ObjectList.cpp:216
msgid "edges fixed"
-msgstr "edges fixed"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:214
+#: src/slic3r/GUI/GUI_ObjectList.cpp:217
msgid "facets removed"
-msgstr "facets removed"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:215
+#: src/slic3r/GUI/GUI_ObjectList.cpp:218
msgid "facets added"
-msgstr "facets added"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:216
+#: src/slic3r/GUI/GUI_ObjectList.cpp:219
msgid "facets reversed"
-msgstr "facets reversed"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:217
+#: src/slic3r/GUI/GUI_ObjectList.cpp:220
msgid "backwards edges"
-msgstr "backwards edges"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:231
+#: src/slic3r/GUI/GUI_ObjectList.cpp:234
msgid "Right button click the icon to fix STL through Netfabb"
-msgstr "Right button click the icon to fix STL through Netfabb"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1430
+#: src/slic3r/GUI/GUI_ObjectList.cpp:281 src/slic3r/GUI/Tab.cpp:1430
#: src/libslic3r/PrintConfig.cpp:454
msgid "Extruder"
-msgstr "Extruder"
+msgstr "Extrudeur"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:683 src/slic3r/GUI/GUI_ObjectList.cpp:963
-#: src/slic3r/GUI/GUI_ObjectList.cpp:969 src/slic3r/GUI/GUI_ObjectList.cpp:1199
+#: src/slic3r/GUI/GUI_ObjectList.cpp:751 src/slic3r/GUI/GUI_ObjectList.cpp:1031
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1037
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1267
#, c-format
msgid "Quick Add Settings (%s)"
-msgstr "Quick Add Settings (%s)"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:746
+#: src/slic3r/GUI/GUI_ObjectList.cpp:814
msgid "Select showing settings"
-msgstr "Select showing settings"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:874
+#: src/slic3r/GUI/GUI_ObjectList.cpp:942
msgid "Load"
-msgstr "Load"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:879 src/slic3r/GUI/GUI_ObjectList.cpp:911
-#: src/slic3r/GUI/GUI_ObjectList.cpp:914
+#: src/slic3r/GUI/GUI_ObjectList.cpp:947 src/slic3r/GUI/GUI_ObjectList.cpp:979
+#: src/slic3r/GUI/GUI_ObjectList.cpp:982
msgid "Box"
-msgstr "Box"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:879
+#: src/slic3r/GUI/GUI_ObjectList.cpp:947
msgid "Cylinder"
-msgstr "Cylinder"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:879
+#: src/slic3r/GUI/GUI_ObjectList.cpp:947
msgid "Sphere"
-msgstr "Sphere"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:879
+#: src/slic3r/GUI/GUI_ObjectList.cpp:947
msgid "Slab"
-msgstr "Slab"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:890 src/slic3r/GUI/GUI_ObjectList.cpp:906
+#: src/slic3r/GUI/GUI_ObjectList.cpp:958 src/slic3r/GUI/GUI_ObjectList.cpp:974
msgid "Add part"
-msgstr "Add part"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:891
+#: src/slic3r/GUI/GUI_ObjectList.cpp:959
msgid "Add modifier"
-msgstr "Add modifier"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:892 src/slic3r/GUI/GUI_ObjectList.cpp:910
+#: src/slic3r/GUI/GUI_ObjectList.cpp:960 src/slic3r/GUI/GUI_ObjectList.cpp:978
msgid "Add support enforcer"
-msgstr "Add support enforcer"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:893 src/slic3r/GUI/GUI_ObjectList.cpp:913
+#: src/slic3r/GUI/GUI_ObjectList.cpp:961 src/slic3r/GUI/GUI_ObjectList.cpp:981
msgid "Add support blocker"
-msgstr "Add support blocker"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:934
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1002
msgid "Split to parts"
-msgstr "Split to parts"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:942
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1010
msgid "Add settings"
-msgstr "Add settings"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1009
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1077
msgid "Change type"
-msgstr "Change type"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1016
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1153
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1084
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1221
msgid "Set as a Separated Object"
-msgstr "Set as a Separated Object"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1024
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1092
msgid "Rename"
-msgstr "Rename"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1034
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1102
msgid "Fix through the Netfabb"
-msgstr "Fix through the Netfabb"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1041 src/slic3r/GUI/Plater.cpp:2861
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1109 src/slic3r/GUI/Plater.cpp:2883
msgid "Export as STL"
-msgstr "Export as STL"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1048
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1116
msgid "Change extruder"
-msgstr "Change extruder"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1073
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1141
msgid "Select new extruder for the object/part"
-msgstr "Select new extruder for the object/part"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1079 src/slic3r/GUI/Plater.cpp:2825
-#: src/slic3r/GUI/Plater.cpp:2843 src/slic3r/GUI/Tab.cpp:2860
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1147 src/slic3r/GUI/Plater.cpp:2847
+#: src/slic3r/GUI/Plater.cpp:2865 src/slic3r/GUI/Tab.cpp:2861
msgid "Delete"
-msgstr "Delete"
+msgstr "Supprimer"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1153
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1221
msgid "Set as a Separated Objects"
-msgstr "Set as a Separated Objects"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1374
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1442
msgid "Generic"
-msgstr "Generic"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1516
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1582
msgid "You can't delete the last solid part from object."
-msgstr "You can't delete the last solid part from object."
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1533
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1599
msgid "You can't delete the last intance from object."
-msgstr "You can't delete the last intance from object."
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1560 src/slic3r/GUI/Plater.cpp:2219
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1626 src/slic3r/GUI/Plater.cpp:2235
msgid ""
"The selected object couldn't be split because it contains only one part."
msgstr ""
-"The selected object couldn't be split because it contains only one part."
+"L'objet sélectionné n'a pu être scindé car il ne contient qu'une seule pièce."
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1676
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1742
msgid "Group manipulation"
-msgstr "Group manipulation"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1688
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1754
msgid "Object manipulation"
-msgstr "Object manipulation"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1698
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1764
msgid "Object Settings to modify"
-msgstr "Object Settings to modify"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1702
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1768
msgid "Part Settings to modify"
-msgstr "Part Settings to modify"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1711
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1777
msgid "Part manipulation"
-msgstr "Part manipulation"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1717
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1783
msgid "Instance manipulation"
-msgstr "Instance manipulation"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2240
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2307
msgid "Object or Instance"
-msgstr "Object or Instance"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2240
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2307
msgid "Part"
-msgstr "Part"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2242
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2309
msgid "Unsupported selection"
-msgstr "Unsupported selection"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2243
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2310
#, c-format
msgid "You started your selection with %s Item."
-msgstr "You started your selection with %s Item."
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2244
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2311
#, c-format
msgid "In this mode you can select only other %s Items%s"
-msgstr "In this mode you can select only other %s Items%s"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2247
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2314
msgid "of a current Object"
-msgstr "of a current Object"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2252
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2325 src/slic3r/GUI/Plater.cpp:117
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2319
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2392 src/slic3r/GUI/Plater.cpp:117
msgid "Info"
msgstr "Info"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2366
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2433
msgid "You can't change a type of the last solid part of the object."
-msgstr "You can't change a type of the last solid part of the object."
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2373
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2440
msgid "Select type of part"
-msgstr "Select type of part"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2538
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2605
msgid "Enter new name"
-msgstr "Enter new name"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2538
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2605
msgid "Renaming"
-msgstr "Renaming"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2554
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2632 src/slic3r/GUI/Tab.cpp:3191
-#: src/slic3r/GUI/Tab.cpp:3195
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2621
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2699 src/slic3r/GUI/Tab.cpp:3192
+#: src/slic3r/GUI/Tab.cpp:3196
msgid "The supplied name is not valid;"
msgstr "The supplied name is not valid;"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2555
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2633 src/slic3r/GUI/Tab.cpp:3192
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2622
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2700 src/slic3r/GUI/Tab.cpp:3193
msgid "the following characters are not allowed:"
msgstr "the following characters are not allowed:"
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2653
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2720
msgid "Set extruder for selected items"
-msgstr "Set extruder for selected items"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2654
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2721
msgid "Select extruder number for selected objects and/or parts"
-msgstr "Select extruder number for selected objects and/or parts"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2667
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2734
msgid "Select extruder number:"
-msgstr "Select extruder number:"
+msgstr ""
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2668
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2735
msgid "This extruder will be set for selected items"
-msgstr "This extruder will be set for selected items"
+msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:25
msgid "Object Manipulation"
-msgstr "Object Manipulation"
+msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:47
msgid "Object name"
-msgstr "Object name"
+msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160
msgid "Position"
-msgstr "Position"
+msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161
msgid "Rotation"
-msgstr "Rotation"
+msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221
-#: src/libslic3r/PrintConfig.cpp:3070
+#: src/libslic3r/PrintConfig.cpp:3075
msgid "Scale"
-msgstr "Scale"
+msgstr "Redimensionner"
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162
msgid "Scale factors"
-msgstr "Scale factors"
+msgstr ""
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220
-#: src/libslic3r/PrintConfig.cpp:3055
+#: src/libslic3r/PrintConfig.cpp:3060
msgid "Rotate"
-msgstr "Rotate"
+msgstr "Pivoter"
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219
msgid "Translate"
-msgstr "Translate"
+msgstr ""
#: src/slic3r/GUI/GUI_ObjectSettings.cpp:58
msgid "Additional Settings"
-msgstr "Additional Settings"
+msgstr ""
#: src/slic3r/GUI/GUI_Preview.cpp:209
msgid "View"
-msgstr "View"
+msgstr "Vue"
#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525
#: src/libslic3r/GCode/PreviewData.cpp:394
msgid "Feature type"
-msgstr "Feature type"
+msgstr "Type de fonctionnalité"
#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:467
msgid "Height"
-msgstr "Height"
+msgstr "Hauteur"
#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2135
msgid "Width"
-msgstr "Width"
+msgstr "Largeur"
#: src/slic3r/GUI/GUI_Preview.cpp:216
msgid "Volumetric flow rate"
-msgstr "Volumetric flow rate"
+msgstr "Débit volumétrique"
#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315
#: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525
#: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404
msgid "Tool"
-msgstr "Tool"
+msgstr "Outil"
#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523
#: src/libslic3r/GCode/PreviewData.cpp:406
msgid "Color Print"
-msgstr "Color Print"
+msgstr ""
#: src/slic3r/GUI/GUI_Preview.cpp:221
msgid "Show"
-msgstr "Show"
+msgstr "Afficher"
#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225
msgid "Feature types"
-msgstr "Feature types"
+msgstr "Types de fonctionnalité"
#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163
msgid "Perimeter"
-msgstr "Perimeter"
+msgstr "Périmètre"
#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164
msgid "External perimeter"
-msgstr "External perimeter"
+msgstr "Périmètre externe"
#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165
msgid "Overhang perimeter"
-msgstr "Overhang perimeter"
+msgstr "Périmètre en surplomb"
#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166
msgid "Internal infill"
-msgstr "Internal infill"
+msgstr "Remplissage interne"
#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1686
#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/GCode/PreviewData.cpp:167
msgid "Solid infill"
-msgstr "Solid infill"
+msgstr "Remplissage solide"
#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2016
#: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/GCode/PreviewData.cpp:168
msgid "Top solid infill"
-msgstr "Top solid infill"
+msgstr "Remplissage solide supérieur"
#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169
msgid "Bridge infill"
-msgstr "Bridge infill"
+msgstr "Remplissage du pont"
#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:869
#: src/libslic3r/GCode/PreviewData.cpp:170
msgid "Gap fill"
-msgstr "Gap fill"
+msgstr "Remplissage des trous"
#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001
#: src/libslic3r/GCode/PreviewData.cpp:171
msgid "Skirt"
-msgstr "Skirt"
+msgstr "Jupe"
#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1903
#: src/libslic3r/GCode/PreviewData.cpp:173
msgid "Support material interface"
-msgstr "Support material interface"
+msgstr "Interface des supports"
#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081
#: src/libslic3r/GCode/PreviewData.cpp:174
msgid "Wipe tower"
-msgstr "Wipe tower"
+msgstr "Tour de nettoyage"
#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2049
msgid "Travel"
-msgstr "Travel"
+msgstr "Déplacement"
#: src/slic3r/GUI/GUI_Preview.cpp:244
msgid "Retractions"
-msgstr "Retractions"
+msgstr "Rétractations"
#: src/slic3r/GUI/GUI_Preview.cpp:245
msgid "Unretractions"
-msgstr "Unretractions"
+msgstr "Dérétractation"
#: src/slic3r/GUI/GUI_Preview.cpp:246
msgid "Shells"
-msgstr "Shells"
+msgstr "Coques"
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:13
-msgid "Slic3r Prusa Edition - Keyboard Shortcuts"
-msgstr "Slic3r Prusa Edition - Keyboard Shortcuts"
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:491
+msgid "Keyboard Shortcuts"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:100
msgid "Open project STL/OBJ/AMF/3MF with config, delete bed"
-msgstr "Open project STL/OBJ/AMF/3MF with config, delete bed"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:101
msgid "Import STL/OBJ/AMF/3MF without config, keep bed"
-msgstr "Import STL/OBJ/AMF/3MF without config, keep bed"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:102
msgid "Load Config from .ini/amf/3mf/gcode"
-msgstr "Load Config from .ini/amf/3mf/gcode"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:725
-#: src/slic3r/GUI/Plater.cpp:3673 src/libslic3r/PrintConfig.cpp:2957
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:724
+#: src/slic3r/GUI/Plater.cpp:3704 src/libslic3r/PrintConfig.cpp:2962
msgid "Export G-code"
-msgstr "Export G-code"
+msgstr "Exporter le G-code"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:104
msgid "Save project (3MF)"
-msgstr "Save project (3MF)"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:105
msgid "Load Config from .ini/amf/3mf/gcode and merge"
-msgstr "Load Config from .ini/amf/3mf/gcode and merge"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:106
msgid "(Re)slice"
-msgstr "(Re)slice"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:107
msgid "Quick slice"
-msgstr "Quick slice"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326
msgid "Repeat last quick slice"
-msgstr "Repeat last quick slice"
+msgstr "Répéter le dernier découpage rapide"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:109
msgid "Select Plater Tab"
-msgstr "Select Plater Tab"
+msgstr "Sélectionner l'Onglet du Plateau"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:110
msgid "Quick slice and Save as"
-msgstr "Quick slice and Save as"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:111
msgid "Select Print Settings Tab"
-msgstr "Select Print Settings Tab"
+msgstr "Sélectionner l'Onglet des Réglages d'Impression"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:112
msgid "Select Filament Settings Tab"
-msgstr "Select Filament Settings Tab"
+msgstr "Sélectionner l'Onglet des Réglages du Filament"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:113
msgid "Select Printer Settings Tab"
-msgstr "Select Printer Settings Tab"
+msgstr "Sélectionner l'Onglet des Réglages de l'Imprimante"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:114
msgid "Switch to 3D"
-msgstr "Switch to 3D"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:115
msgid "Switch to Preview"
-msgstr "Switch to Preview"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10
msgid "Preferences"
-msgstr "Preferences"
+msgstr "Préférences"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:117
#: src/slic3r/GUI/PrintHostDialogs.cpp:134
msgid "Print host upload queue"
-msgstr "Print host upload queue"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:118
msgid "Camera view "
-msgstr "Camera view "
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:119
msgid "Add Instance to selected object "
-msgstr "Add Instance to selected object "
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:120
msgid "Remove Instance from selected object"
-msgstr "Remove Instance from selected object"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:121
msgid "Show keyboard shortcuts list"
-msgstr "Show keyboard shortcuts list"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:122
msgid "Select multiple object/Move multiple object"
-msgstr "Select multiple object/Move multiple object"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:124
msgid "Main Shortcuts"
-msgstr "Main Shortcuts"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:130
msgid "Arrange"
-msgstr "Arrange"
+msgstr "Agencer"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:131
msgid "Select All objects"
-msgstr "Select All objects"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:132
msgid "Delete selected"
-msgstr "Delete selected"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:133
msgid "Delete All"
-msgstr "Delete All"
+msgstr "Tout Supprimer"
#: src/slic3r/GUI/KBShortcutsDialog.cpp:134
-msgid "Gizmo move"
-msgstr "Gizmo move"
+msgid "Copy to clipboard"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:135
-msgid "Gizmo scale"
-msgstr "Gizmo scale"
+msgid "Paste from clipboard"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:136
-msgid "Gizmo rotate"
-msgstr "Gizmo rotate"
+msgid "Gizmo move"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:137
-msgid "Gizmo cut"
-msgstr "Gizmo cut"
+msgid "Gizmo scale"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:138
-msgid "Gizmo Place face on bed"
-msgstr "Gizmo Place face on bed"
+msgid "Gizmo rotate"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:139
-msgid "Gizmo SLA support points"
-msgstr "Gizmo SLA support points"
+msgid "Gizmo cut"
+msgstr ""
#: src/slic3r/GUI/KBShortcutsDialog.cpp:140
-#, no-c-format
+msgid "Gizmo Place face on bed"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:141
+msgid "Gizmo SLA support points"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:142
+#, c-format
msgid ""
"Press to snap by 5% in Gizmo scale\n"
"or by 1mm in Gizmo move"
msgstr ""
-"Press to snap by 5% in Gizmo scale\n"
-"or by 1mm in Gizmo move"
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:141
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:143
msgid ""
"Press to scale or rotate selected objects\n"
"around their own center"
msgstr ""
-"Press to scale or rotate selected objects\n"
-"around their own center"
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:142
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:144
msgid "Zoom to Bed"
-msgstr "Zoom to Bed"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:143
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:145
msgid "Zoom to all objects in scene, if none selected"
-msgstr "Zoom to all objects in scene, if none selected"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:144
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:146
msgid "Zoom to selected object"
-msgstr "Zoom to selected object"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:145
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:147
msgid "Zoom in"
-msgstr "Zoom in"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:146
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:148
msgid "Zoom out"
-msgstr "Zoom out"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:147
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:149
msgid "Unselect gizmo, keep object selection"
-msgstr "Unselect gizmo, keep object selection"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:149
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:151
msgid "Plater Shortcuts"
-msgstr "Plater Shortcuts"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:164
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:175
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:166
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
msgid "Arrow Up"
-msgstr "Arrow Up"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:164
#: src/slic3r/GUI/KBShortcutsDialog.cpp:166
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:168
msgid "Upper Layer"
-msgstr "Upper Layer"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:165
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:176
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:167
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
msgid "Arrow Down"
-msgstr "Arrow Down"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:165
#: src/slic3r/GUI/KBShortcutsDialog.cpp:167
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:169
msgid "Lower Layer"
-msgstr "Lower Layer"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:169
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:171
msgid "Preview Shortcuts"
-msgstr "Preview Shortcuts"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:175
-msgid "Move current slider thump Up"
-msgstr "Move current slider thump Up"
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
+msgid "Move current slider thumb Up"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:176
-msgid "Move current slider thump Down"
-msgstr "Move current slider thump Down"
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
+msgid "Move current slider thumb Down"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:179
msgid "Arrow Left"
-msgstr "Arrow Left"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:179
msgid "Set upper thumb to current slider thumb"
-msgstr "Set upper thumb to current slider thumb"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:180
msgid "Arrow Right"
-msgstr "Arrow Right"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:180
msgid "Set lower thumb to current slider thumb"
-msgstr "Set lower thumb to current slider thumb"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:179
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:181
msgid "Add color change marker for current layer"
-msgstr "Add color change marker for current layer"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:180
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:182
msgid "Delete color change marker for current layer"
-msgstr "Delete color change marker for current layer"
+msgstr ""
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:182
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:184
msgid "Layers Slider Shortcuts"
-msgstr "Layers Slider Shortcuts"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:54
msgid ""
" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases"
msgstr ""
-" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases"
+" - Pensez à vérifier les mises à jours sur http://github.com/prusa3d/slic3r/"
+"releases"
#: src/slic3r/GUI/MainFrame.cpp:160
msgid "Plater"
-msgstr "Plater"
+msgstr "Plateau"
#: src/slic3r/GUI/MainFrame.cpp:273
msgid "&Open Project"
-msgstr "&Open Project"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:273
msgid "Open a project file"
-msgstr "Open a project file"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:275
msgid "&Save Project"
-msgstr "&Save Project"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:275
msgid "Save current project file"
-msgstr "Save current project file"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:277
msgid "Save Project &as"
-msgstr "Save Project &as"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:277
msgid "Save current project file as"
-msgstr "Save current project file as"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:283
msgid "Import STL/OBJ/AM&F/3MF"
-msgstr "Import STL/OBJ/AM&F/3MF"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:283
msgid "Load a model"
-msgstr "Load a model"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:286
msgid "Import &Config"
-msgstr "Import &Config"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:286
msgid "Load exported configuration file"
-msgstr "Load exported configuration file"
+msgstr "Charger le fichier de configuration exporté"
#: src/slic3r/GUI/MainFrame.cpp:288
msgid "Import Config from &project"
-msgstr "Import Config from &project"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:288
msgid "Load configuration from project file"
-msgstr "Load configuration from project file"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:291
msgid "Import Config &Bundle"
-msgstr "Import Config &Bundle"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:291
msgid "Load presets from a bundle"
-msgstr "Load presets from a bundle"
+msgstr "Charger les préréglages à partir d'un lot"
#: src/slic3r/GUI/MainFrame.cpp:293
msgid "&Import"
-msgstr "&Import"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:296
msgid "Export &G-code"
-msgstr "Export &G-code"
+msgstr "Exporter le &G-code"
#: src/slic3r/GUI/MainFrame.cpp:296
msgid "Export current plate as G-code"
-msgstr "Export current plate as G-code"
+msgstr "Exporter le plateau courant en G-code"
#: src/slic3r/GUI/MainFrame.cpp:299
msgid "Export plate as &STL"
-msgstr "Export plate as &STL"
+msgstr "Exporter le plateau en &STL"
#: src/slic3r/GUI/MainFrame.cpp:299
msgid "Export current plate as STL"
-msgstr "Export current plate as STL"
+msgstr "Exporter le plateau courant en STL"
#: src/slic3r/GUI/MainFrame.cpp:301
msgid "Export plate as &AMF"
-msgstr "Export plate as &AMF"
+msgstr "Exporter le plateau en &AMF"
#: src/slic3r/GUI/MainFrame.cpp:301
msgid "Export current plate as AMF"
-msgstr "Export current plate as AMF"
+msgstr "Exporter le plateau courant en AMF"
#: src/slic3r/GUI/MainFrame.cpp:304
msgid "Export &Config"
-msgstr "Export &Config"
+msgstr "Exporter la &configuration"
#: src/slic3r/GUI/MainFrame.cpp:304
msgid "Export current configuration to file"
-msgstr "Export current configuration to file"
+msgstr "Exporter la configuration actuelle vers un fichier"
#: src/slic3r/GUI/MainFrame.cpp:306
msgid "Export Config &Bundle"
-msgstr "Export Config &Bundle"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:306
msgid "Export all presets to file"
-msgstr "Export all presets to file"
+msgstr "Exporter tous les préréglage vers un fichier"
#: src/slic3r/GUI/MainFrame.cpp:308
msgid "&Export"
-msgstr "&Export"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:314
msgid "Quick Slice"
-msgstr "Quick Slice"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:314
msgid "Slice a file into a G-code"
-msgstr "Slice a file into a G-code"
+msgstr "Découper un fichier en G-code"
#: src/slic3r/GUI/MainFrame.cpp:320
msgid "Quick Slice and Save As"
-msgstr "Quick Slice and Save As"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:320
msgid "Slice a file into a G-code, save as"
-msgstr "Slice a file into a G-code, save as"
+msgstr "Découper un fichier en G-code, enregistrer sous"
#: src/slic3r/GUI/MainFrame.cpp:326
msgid "Repeat Last Quick Slice"
-msgstr "Repeat Last Quick Slice"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:334
msgid "(Re)Slice &Now"
-msgstr "(Re)Slice &Now"
+msgstr "(Re)Découper mai&ntenant"
#: src/slic3r/GUI/MainFrame.cpp:334
msgid "Start new slicing process"
-msgstr "Start new slicing process"
+msgstr "Démarrer un nouveau processus de découpe"
#: src/slic3r/GUI/MainFrame.cpp:337
msgid "&Repair STL file"
-msgstr "&Repair STL file"
+msgstr "&Réparer le fichier STL"
#: src/slic3r/GUI/MainFrame.cpp:337
msgid "Automatically repair an STL file"
-msgstr "Automatically repair an STL file"
+msgstr "Réparer automatiquement un fichier STL"
#: src/slic3r/GUI/MainFrame.cpp:340
msgid "&Quit"
-msgstr "&Quit"
+msgstr "&Quitter"
#: src/slic3r/GUI/MainFrame.cpp:340
msgid "Quit Slic3r"
-msgstr "Quit Slic3r"
+msgstr "Quitter Slic3r"
#: src/slic3r/GUI/MainFrame.cpp:374
msgid "&Select all"
-msgstr "&Select all"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:374
msgid "Selects all objects"
-msgstr "Selects all objects"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:377
msgid "&Delete selected"
-msgstr "&Delete selected"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:377
msgid "Deletes the current selection"
-msgstr "Deletes the current selection"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:379
msgid "Delete &all"
-msgstr "Delete &all"
+msgstr ""
#: src/slic3r/GUI/MainFrame.cpp:379
msgid "Deletes all objects"
-msgstr "Deletes all objects"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:392
+#: src/slic3r/GUI/MainFrame.cpp:384
+msgid "&Copy"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:384
+msgid "Copy selection to clipboard"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:386
+msgid "&Paste"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:386
+msgid "Paste clipboard"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:401
msgid "&Plater Tab"
-msgstr "&Plater Tab"
+msgstr "L'Onglet du &Plateau"
-#: src/slic3r/GUI/MainFrame.cpp:392
+#: src/slic3r/GUI/MainFrame.cpp:401
msgid "Show the plater"
-msgstr "Show the plater"
+msgstr "Afficher le plateau"
-#: src/slic3r/GUI/MainFrame.cpp:399
+#: src/slic3r/GUI/MainFrame.cpp:408
msgid "P&rint Settings Tab"
-msgstr "P&rint Settings Tab"
+msgstr "L'Onglet des Réglages d'&Impression"
-#: src/slic3r/GUI/MainFrame.cpp:399
+#: src/slic3r/GUI/MainFrame.cpp:408
msgid "Show the print settings"
-msgstr "Show the print settings"
+msgstr "Afficher les réglages d'impression"
-#: src/slic3r/GUI/MainFrame.cpp:401
+#: src/slic3r/GUI/MainFrame.cpp:410
msgid "&Filament Settings Tab"
-msgstr "&Filament Settings Tab"
+msgstr "L'Onglet des Réglages du &Filament"
-#: src/slic3r/GUI/MainFrame.cpp:401
+#: src/slic3r/GUI/MainFrame.cpp:410
msgid "Show the filament settings"
-msgstr "Show the filament settings"
+msgstr "Afficher les réglages de filament"
-#: src/slic3r/GUI/MainFrame.cpp:403
+#: src/slic3r/GUI/MainFrame.cpp:412
msgid "Print&er Settings Tab"
-msgstr "Print&er Settings Tab"
+msgstr "L'Onglet des Réglages de l'Impri&mante"
-#: src/slic3r/GUI/MainFrame.cpp:403
+#: src/slic3r/GUI/MainFrame.cpp:412
msgid "Show the printer settings"
-msgstr "Show the printer settings"
+msgstr "Afficher les réglages de l'imprimante"
-#: src/slic3r/GUI/MainFrame.cpp:407
+#: src/slic3r/GUI/MainFrame.cpp:416
msgid "3&D"
-msgstr "3&D"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:407
+#: src/slic3r/GUI/MainFrame.cpp:416
msgid "Show the 3D editing view"
-msgstr "Show the 3D editing view"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:409
+#: src/slic3r/GUI/MainFrame.cpp:418
msgid "Pre&view"
-msgstr "Pre&view"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:409
+#: src/slic3r/GUI/MainFrame.cpp:418
msgid "Show the 3D slices preview"
-msgstr "Show the 3D slices preview"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:430
+#: src/slic3r/GUI/MainFrame.cpp:439
msgid "Print &Host Upload Queue"
-msgstr "Print &Host Upload Queue"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:430
+#: src/slic3r/GUI/MainFrame.cpp:439
msgid "Display the Print Host Upload Queue window"
-msgstr "Display the Print Host Upload Queue window"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:439
+#: src/slic3r/GUI/MainFrame.cpp:448
msgid "Iso"
-msgstr "Iso"
+msgstr "Isométrique"
-#: src/slic3r/GUI/MainFrame.cpp:439
+#: src/slic3r/GUI/MainFrame.cpp:448
msgid "Iso View"
-msgstr "Iso View"
+msgstr "Vue Isométrique"
-#: src/slic3r/GUI/MainFrame.cpp:441
+#: src/slic3r/GUI/MainFrame.cpp:450
msgid "Top"
-msgstr "Top"
+msgstr "du Dessus"
#: src/libslic3r/PrintConfig.cpp:2041
msgctxt "Layers"
msgid "Top"
-msgstr "Top"
+msgstr "Haut"
-#: src/slic3r/GUI/MainFrame.cpp:441
+#: src/slic3r/GUI/MainFrame.cpp:450
msgid "Top View"
-msgstr "Top View"
+msgstr "Vue du Dessus"
-#: src/slic3r/GUI/MainFrame.cpp:442
+#: src/slic3r/GUI/MainFrame.cpp:451
msgid "Bottom"
-msgstr "Bottom"
+msgstr "du Dessous"
#: src/libslic3r/PrintConfig.cpp:148
msgctxt "Layers"
msgid "Bottom"
-msgstr "Bottom"
+msgstr "Dessous"
-#: src/slic3r/GUI/MainFrame.cpp:442
+#: src/slic3r/GUI/MainFrame.cpp:451
msgid "Bottom View"
-msgstr "Bottom View"
+msgstr "Vue du Dessous"
-#: src/slic3r/GUI/MainFrame.cpp:443
+#: src/slic3r/GUI/MainFrame.cpp:452
msgid "Front"
-msgstr "Front"
+msgstr "Avant"
-#: src/slic3r/GUI/MainFrame.cpp:443
+#: src/slic3r/GUI/MainFrame.cpp:452
msgid "Front View"
-msgstr "Front View"
+msgstr "Vue Avant"
-#: src/slic3r/GUI/MainFrame.cpp:444 src/libslic3r/PrintConfig.cpp:1561
+#: src/slic3r/GUI/MainFrame.cpp:453 src/libslic3r/PrintConfig.cpp:1561
msgid "Rear"
-msgstr "Rear"
+msgstr "Arrière"
-#: src/slic3r/GUI/MainFrame.cpp:444
+#: src/slic3r/GUI/MainFrame.cpp:453
msgid "Rear View"
-msgstr "Rear View"
+msgstr "Vue Arrière"
-#: src/slic3r/GUI/MainFrame.cpp:445
+#: src/slic3r/GUI/MainFrame.cpp:454
msgid "Left"
-msgstr "Left"
+msgstr "Gauche"
-#: src/slic3r/GUI/MainFrame.cpp:445
+#: src/slic3r/GUI/MainFrame.cpp:454
msgid "Left View"
-msgstr "Left View"
+msgstr "Vue Gauche"
-#: src/slic3r/GUI/MainFrame.cpp:446
+#: src/slic3r/GUI/MainFrame.cpp:455
msgid "Right"
-msgstr "Right"
+msgstr "Droite"
-#: src/slic3r/GUI/MainFrame.cpp:446
+#: src/slic3r/GUI/MainFrame.cpp:455
msgid "Right View"
-msgstr "Right View"
+msgstr "Vue Droite"
-#: src/slic3r/GUI/MainFrame.cpp:460
+#: src/slic3r/GUI/MainFrame.cpp:469
msgid "Prusa 3D &Drivers"
-msgstr "Prusa 3D &Drivers"
+msgstr "&Drivers Prusa 3D"
-#: src/slic3r/GUI/MainFrame.cpp:460
+#: src/slic3r/GUI/MainFrame.cpp:469
msgid "Open the Prusa3D drivers download page in your browser"
-msgstr "Open the Prusa3D drivers download page in your browser"
+msgstr ""
+"Ouvrir la page de téléchargement des drivers Prusa3D dans votre navigateur"
-#: src/slic3r/GUI/MainFrame.cpp:462
+#: src/slic3r/GUI/MainFrame.cpp:471
msgid "Prusa Edition &Releases"
-msgstr "Prusa Edition &Releases"
+msgstr "&Publication de la Prusa Edition"
-#: src/slic3r/GUI/MainFrame.cpp:462
+#: src/slic3r/GUI/MainFrame.cpp:471
msgid "Open the Prusa Edition releases page in your browser"
-msgstr "Open the Prusa Edition releases page in your browser"
+msgstr ""
+"Ouvrir la page des publications de la Prusa Edition dans votre navigateur"
-#: src/slic3r/GUI/MainFrame.cpp:468
+#: src/slic3r/GUI/MainFrame.cpp:477
msgid "Slic3r &Website"
-msgstr "Slic3r &Website"
+msgstr "Site &Web de Slic3r"
-#: src/slic3r/GUI/MainFrame.cpp:468
+#: src/slic3r/GUI/MainFrame.cpp:477
msgid "Open the Slic3r website in your browser"
-msgstr "Open the Slic3r website in your browser"
+msgstr "Ouvrir le site web de Slic3r dans votre navigateur"
-#: src/slic3r/GUI/MainFrame.cpp:470
+#: src/slic3r/GUI/MainFrame.cpp:479
msgid "Slic3r &Manual"
-msgstr "Slic3r &Manual"
+msgstr "&Manuel de Slic3r"
-#: src/slic3r/GUI/MainFrame.cpp:470
+#: src/slic3r/GUI/MainFrame.cpp:479
msgid "Open the Slic3r manual in your browser"
-msgstr "Open the Slic3r manual in your browser"
+msgstr "Ouvrir la manuel de Slic3r dans votre navigateur"
-#: src/slic3r/GUI/MainFrame.cpp:473
+#: src/slic3r/GUI/MainFrame.cpp:482
msgid "System &Info"
-msgstr "System &Info"
+msgstr "&Informations sur le Système"
-#: src/slic3r/GUI/MainFrame.cpp:473
+#: src/slic3r/GUI/MainFrame.cpp:482
msgid "Show system information"
-msgstr "Show system information"
+msgstr "Afficher les informations système"
-#: src/slic3r/GUI/MainFrame.cpp:475
+#: src/slic3r/GUI/MainFrame.cpp:484
msgid "Show &Configuration Folder"
-msgstr "Show &Configuration Folder"
+msgstr "Afficher le Répertoire de &Configuration"
-#: src/slic3r/GUI/MainFrame.cpp:475
+#: src/slic3r/GUI/MainFrame.cpp:484
msgid "Show user configuration folder (datadir)"
-msgstr "Show user configuration folder (datadir)"
+msgstr "Afficher le répertoire de configuration utilisateur (datadir)"
-#: src/slic3r/GUI/MainFrame.cpp:477
+#: src/slic3r/GUI/MainFrame.cpp:486
msgid "Report an I&ssue"
-msgstr "Report an I&ssue"
+msgstr "Signaler un p&roblème"
-#: src/slic3r/GUI/MainFrame.cpp:477
-msgid "Report an issue on the Slic3r Prusa Edition"
-msgstr "Report an issue on the Slic3r Prusa Edition"
+#: src/slic3r/GUI/MainFrame.cpp:486
+#, c-format
+msgid "Report an issue on %s"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:479
-msgid "&About Slic3r"
-msgstr "&About Slic3r"
+#: src/slic3r/GUI/MainFrame.cpp:488
+#, c-format
+msgid "&About %s"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:479
+#: src/slic3r/GUI/MainFrame.cpp:488
msgid "Show about dialog"
-msgstr "Show about dialog"
-
-#: src/slic3r/GUI/MainFrame.cpp:482
-msgid "Keyboard Shortcuts"
-msgstr "Keyboard Shortcuts"
+msgstr "Afficher la boîte de dialogue à propos"
-#: src/slic3r/GUI/MainFrame.cpp:482
+#: src/slic3r/GUI/MainFrame.cpp:491
msgid "Show the list of the keyboard shortcuts"
-msgstr "Show the list of the keyboard shortcuts"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:490
+#: src/slic3r/GUI/MainFrame.cpp:499
msgid "&File"
-msgstr "&File"
+msgstr "&Fichier"
-#: src/slic3r/GUI/MainFrame.cpp:491
+#: src/slic3r/GUI/MainFrame.cpp:500
msgid "&Edit"
-msgstr "&Edit"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:492
+#: src/slic3r/GUI/MainFrame.cpp:501
msgid "&Window"
-msgstr "&Window"
+msgstr "Fe&nêtre"
-#: src/slic3r/GUI/MainFrame.cpp:493
+#: src/slic3r/GUI/MainFrame.cpp:502
msgid "&View"
-msgstr "&View"
+msgstr "&Vue"
-#: src/slic3r/GUI/MainFrame.cpp:496
+#: src/slic3r/GUI/MainFrame.cpp:505
msgid "&Help"
-msgstr "&Help"
+msgstr "&Aide"
-#: src/slic3r/GUI/MainFrame.cpp:524
+#: src/slic3r/GUI/MainFrame.cpp:533
msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):"
-msgstr "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):"
+msgstr "Choisir un fichier à découper (STL/OBJ/AMF/3MF/PRUSA) :"
-#: src/slic3r/GUI/MainFrame.cpp:538
+#: src/slic3r/GUI/MainFrame.cpp:547
msgid "No previously sliced file."
-msgstr "No previously sliced file."
+msgstr "Aucun fichier précédemment découpé."
-#: src/slic3r/GUI/MainFrame.cpp:539 src/slic3r/GUI/PrintHostDialogs.cpp:219
+#: src/slic3r/GUI/MainFrame.cpp:548 src/slic3r/GUI/PrintHostDialogs.cpp:219
msgid "Error"
-msgstr "Error"
+msgstr "Erreur"
-#: src/slic3r/GUI/MainFrame.cpp:544
+#: src/slic3r/GUI/MainFrame.cpp:553
msgid "Previously sliced file ("
-msgstr "Previously sliced file ("
+msgstr "Fichier précédemment découpé ("
-#: src/slic3r/GUI/MainFrame.cpp:544
+#: src/slic3r/GUI/MainFrame.cpp:553
msgid ") not found."
-msgstr ") not found."
+msgstr ") non trouvé."
-#: src/slic3r/GUI/MainFrame.cpp:545
+#: src/slic3r/GUI/MainFrame.cpp:554
msgid "File Not Found"
-msgstr "File Not Found"
+msgstr "Fichier non trouvé"
-#: src/slic3r/GUI/MainFrame.cpp:580 src/slic3r/GUI/Tab.cpp:3152
+#: src/slic3r/GUI/MainFrame.cpp:589 src/slic3r/GUI/Tab.cpp:3153
msgid "Save "
-msgstr "Save "
+msgstr "Enregistrer "
-#: src/slic3r/GUI/MainFrame.cpp:580
+#: src/slic3r/GUI/MainFrame.cpp:589
msgid "SVG"
msgstr "SVG"
-#: src/slic3r/GUI/MainFrame.cpp:580
+#: src/slic3r/GUI/MainFrame.cpp:589
msgid "G-code"
msgstr "G-code"
-#: src/slic3r/GUI/MainFrame.cpp:580
+#: src/slic3r/GUI/MainFrame.cpp:589
msgid " file as:"
-msgstr " file as:"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:595
+#: src/slic3r/GUI/MainFrame.cpp:604
msgid "Save zip file as:"
-msgstr "Save zip file as:"
+msgstr ""
-#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:2352
-#: src/slic3r/GUI/Plater.cpp:3467 src/slic3r/GUI/Tab.cpp:1110
-#: src/slic3r/GUI/Tab.cpp:3348
+#: src/slic3r/GUI/MainFrame.cpp:616 src/slic3r/GUI/Plater.cpp:2368
+#: src/slic3r/GUI/Plater.cpp:3498 src/slic3r/GUI/Tab.cpp:1110
+#: src/slic3r/GUI/Tab.cpp:3350
msgid "Slicing"
-msgstr "Slicing"
+msgstr "Découpe en cours"
-#: src/slic3r/GUI/MainFrame.cpp:607
+#: src/slic3r/GUI/MainFrame.cpp:616
msgid "Processing "
-msgstr "Processing "
+msgstr "Traitement "
-#: src/slic3r/GUI/MainFrame.cpp:630
+#: src/slic3r/GUI/MainFrame.cpp:639
msgid " was successfully sliced."
-msgstr " was successfully sliced."
+msgstr " a été découpé avec succès."
-#: src/slic3r/GUI/MainFrame.cpp:632
+#: src/slic3r/GUI/MainFrame.cpp:641
msgid "Slicing Done!"
-msgstr "Slicing Done!"
+msgstr "Découpe Effectuée !"
-#: src/slic3r/GUI/MainFrame.cpp:647
+#: src/slic3r/GUI/MainFrame.cpp:656
msgid "Select the STL file to repair:"
-msgstr "Select the STL file to repair:"
+msgstr "Sélectionner le fichier STL à réparer :"
-#: src/slic3r/GUI/MainFrame.cpp:661
+#: src/slic3r/GUI/MainFrame.cpp:669
msgid "Save OBJ file (less prone to coordinate errors than STL) as:"
-msgstr "Save OBJ file (less prone to coordinate errors than STL) as:"
+msgstr ""
+"Enregistrer le fichier OBJ (moins enclin aux erreurs de coordonnées que le "
+"STL) sous :"
-#: src/slic3r/GUI/MainFrame.cpp:676
+#: src/slic3r/GUI/MainFrame.cpp:684
msgid "Your file was repaired."
-msgstr "Your file was repaired."
+msgstr "Votre fichier a été réparé."
-#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:3051
+#: src/slic3r/GUI/MainFrame.cpp:684 src/libslic3r/PrintConfig.cpp:3056
msgid "Repair"
-msgstr "Repair"
+msgstr "Réparer"
-#: src/slic3r/GUI/MainFrame.cpp:690
+#: src/slic3r/GUI/MainFrame.cpp:698
msgid "Save configuration as:"
-msgstr "Save configuration as:"
+msgstr "Enregistrer la configuration sous :"
-#: src/slic3r/GUI/MainFrame.cpp:710 src/slic3r/GUI/MainFrame.cpp:774
+#: src/slic3r/GUI/MainFrame.cpp:718 src/slic3r/GUI/MainFrame.cpp:782
msgid "Select configuration to load:"
-msgstr "Select configuration to load:"
+msgstr "Sélectionner la configuration à charger :"
-#: src/slic3r/GUI/MainFrame.cpp:747
+#: src/slic3r/GUI/MainFrame.cpp:755
msgid "Save presets bundle as:"
-msgstr "Save presets bundle as:"
+msgstr "Enregistrer le lot de préréglages sous :"
-#: src/slic3r/GUI/MainFrame.cpp:798
+#: src/slic3r/GUI/MainFrame.cpp:806
#, c-format
msgid "%d presets successfully imported."
-msgstr "%d presets successfully imported."
+msgstr "%d préréglages importés avec succès."
#: src/slic3r/GUI/MsgDialog.cpp:71
msgid "Slic3r error"
-msgstr "Slic3r error"
+msgstr "Erreur de Slic3r"
#: src/slic3r/GUI/MsgDialog.cpp:71
msgid "Slic3r has encountered an error"
-msgstr "Slic3r has encountered an error"
+msgstr "Slic3r a rencontré une erreur"
#: src/slic3r/GUI/Plater.cpp:137
msgid "Volume"
@@ -2282,126 +2311,126 @@ msgstr "Volume"
#: src/slic3r/GUI/Plater.cpp:138
msgid "Facets"
-msgstr "Facets"
+msgstr "Faces"
#: src/slic3r/GUI/Plater.cpp:139
msgid "Materials"
-msgstr "Materials"
+msgstr "Matériaux"
#: src/slic3r/GUI/Plater.cpp:142
msgid "Manifold"
-msgstr "Manifold"
+msgstr "Variété"
-#: src/slic3r/GUI/Plater.cpp:188
+#: src/slic3r/GUI/Plater.cpp:187
msgid "Sliced Info"
-msgstr "Sliced Info"
+msgstr "Informations de découpage"
-#: src/slic3r/GUI/Plater.cpp:207 src/slic3r/GUI/Plater.cpp:998
+#: src/slic3r/GUI/Plater.cpp:206 src/slic3r/GUI/Plater.cpp:998
msgid "Used Filament (m)"
-msgstr "Used Filament (m)"
+msgstr "Filament Utilisé (m)"
-#: src/slic3r/GUI/Plater.cpp:208
+#: src/slic3r/GUI/Plater.cpp:207
msgid "Used Filament (mm³)"
-msgstr "Used Filament (mm³)"
+msgstr "Filament Utilisé (mm³)"
-#: src/slic3r/GUI/Plater.cpp:209
+#: src/slic3r/GUI/Plater.cpp:208
msgid "Used Filament (g)"
-msgstr "Used Filament (g)"
+msgstr "Filament Utilisé (g)"
-#: src/slic3r/GUI/Plater.cpp:210
+#: src/slic3r/GUI/Plater.cpp:209
msgid "Used Material (unit)"
-msgstr "Used Material (unit)"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:1013
+#: src/slic3r/GUI/Plater.cpp:210 src/slic3r/GUI/Plater.cpp:1013
#: src/libslic3r/PrintConfig.cpp:716
msgid "Cost"
-msgstr "Cost"
+msgstr "Coût"
-#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:985
+#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:985
#: src/slic3r/GUI/Plater.cpp:1027
msgid "Estimated printing time"
-msgstr "Estimated printing time"
+msgstr "Temps d'impression estimé"
-#: src/slic3r/GUI/Plater.cpp:213
+#: src/slic3r/GUI/Plater.cpp:212
msgid "Number of tool changes"
-msgstr "Number of tool changes"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:290
+#: src/slic3r/GUI/Plater.cpp:289
msgid "Click to edit preset"
-msgstr "Click to edit preset"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:413
+#: src/slic3r/GUI/Plater.cpp:412
msgid "Select what kind of support do you need"
-msgstr "Select what kind of support do you need"
+msgstr "Choisissez le type de support dont vous avez besoin"
-#: src/slic3r/GUI/Plater.cpp:415 src/libslic3r/PrintConfig.cpp:1814
-#: src/libslic3r/PrintConfig.cpp:2419
+#: src/slic3r/GUI/Plater.cpp:414 src/libslic3r/PrintConfig.cpp:1814
+#: src/libslic3r/PrintConfig.cpp:2421
msgid "Support on build plate only"
-msgstr "Support on build plate only"
+msgstr "Support sur le plateau uniquement"
-#: src/slic3r/GUI/Plater.cpp:416
+#: src/slic3r/GUI/Plater.cpp:415
msgid "Everywhere"
-msgstr "Everywhere"
+msgstr "Partout"
-#: src/slic3r/GUI/Plater.cpp:438 src/slic3r/GUI/Tab.cpp:1007
+#: src/slic3r/GUI/Plater.cpp:437 src/slic3r/GUI/Tab.cpp:1007
msgid "Brim"
-msgstr "Brim"
+msgstr "Bordure"
-#: src/slic3r/GUI/Plater.cpp:440
+#: src/slic3r/GUI/Plater.cpp:439
msgid ""
"This flag enables the brim that will be printed around each object on the "
"first layer."
msgstr ""
-"This flag enables the brim that will be printed around each object on the "
-"first layer."
+"Cette option permet l'impression de la bordure qui entoure chaque objet lors "
+"de la première couche."
-#: src/slic3r/GUI/Plater.cpp:448
+#: src/slic3r/GUI/Plater.cpp:447
msgid "Purging volumes"
-msgstr "Purging volumes"
+msgstr "Volumes de purge"
-#: src/slic3r/GUI/Plater.cpp:673
+#: src/slic3r/GUI/Plater.cpp:672
msgid "Print settings"
-msgstr "Print settings"
+msgstr "Réglages d'impression"
-#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Tab.cpp:1421
+#: src/slic3r/GUI/Plater.cpp:673 src/slic3r/GUI/Tab.cpp:1421
#: src/slic3r/GUI/Tab.cpp:1422
msgid "Filament"
msgstr "Filament"
-#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1252
+#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Preset.cpp:1254
msgid "SLA print"
-msgstr "SLA print"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:676 src/slic3r/GUI/Preset.cpp:1253
+#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1255
msgid "SLA material"
-msgstr "SLA material"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:677
+#: src/slic3r/GUI/Plater.cpp:676
msgid "Printer"
-msgstr "Printer"
+msgstr "Imprimante"
-#: src/slic3r/GUI/Plater.cpp:707 src/slic3r/GUI/Plater.cpp:3674
+#: src/slic3r/GUI/Plater.cpp:706 src/slic3r/GUI/Plater.cpp:3705
msgid "Send to printer"
-msgstr "Send to printer"
+msgstr "Envoyer à l'imprimante"
-#: src/slic3r/GUI/Plater.cpp:727 src/slic3r/GUI/Plater.cpp:2352
-#: src/slic3r/GUI/Plater.cpp:3470
+#: src/slic3r/GUI/Plater.cpp:726 src/slic3r/GUI/Plater.cpp:2368
+#: src/slic3r/GUI/Plater.cpp:3501
msgid "Slice now"
-msgstr "Slice now"
+msgstr "Découper maintenant"
#: src/slic3r/GUI/Plater.cpp:860
msgid "Hold Shift to Slice & Export G-code"
-msgstr "Hold Shift to Slice & Export G-code"
+msgstr ""
#: src/slic3r/GUI/Plater.cpp:931
#, c-format
msgid "%d (%d shells)"
-msgstr "%d (%d shells)"
+msgstr "%d (%d coques)"
#: src/slic3r/GUI/Plater.cpp:936
#, c-format
msgid "Auto-repaired (%d errors)"
-msgstr "Auto-repaired (%d errors)"
+msgstr "Réparé automatiquement (%d erreurs)"
#: src/slic3r/GUI/Plater.cpp:939
#, c-format
@@ -2409,398 +2438,401 @@ msgid ""
"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d "
"facets reversed, %d backwards edges"
msgstr ""
-"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d "
-"facets reversed, %d backwards edges"
+"%d faces invalides, %d arrêtes corrigées, %d faces retirées, %d faces "
+"ajoutées, %d faces inversées, %d arrêtes à l'envers"
#: src/slic3r/GUI/Plater.cpp:949
msgid "Yes"
-msgstr "Yes"
+msgstr "Oui"
#: src/slic3r/GUI/Plater.cpp:972
msgid "Used Material (ml)"
-msgstr "Used Material (ml)"
+msgstr ""
#: src/slic3r/GUI/Plater.cpp:975
msgid "object(s)"
-msgstr "object(s)"
+msgstr ""
#: src/slic3r/GUI/Plater.cpp:975
msgid "supports and pad"
-msgstr "supports and pad"
+msgstr ""
#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015
msgid "objects"
-msgstr "objects"
+msgstr ""
#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015
msgid "wipe tower"
-msgstr "wipe tower"
+msgstr ""
#: src/slic3r/GUI/Plater.cpp:1030
msgid "normal mode"
-msgstr "normal mode"
+msgstr ""
#: src/slic3r/GUI/Plater.cpp:1034
msgid "silent mode"
-msgstr "silent mode"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1544
+#: src/slic3r/GUI/Plater.cpp:1546
msgid "Loading"
-msgstr "Loading"
+msgstr "Chargement"
-#: src/slic3r/GUI/Plater.cpp:1554
+#: src/slic3r/GUI/Plater.cpp:1556
#, c-format
msgid "Processing input file %s\n"
-msgstr "Processing input file %s\n"
+msgstr "Traitement du fichier d'entrée %s\n"
-#: src/slic3r/GUI/Plater.cpp:1612
+#: src/slic3r/GUI/Plater.cpp:1614
msgid ""
"This file contains several objects positioned at multiple heights. Instead "
"of considering them as multiple objects, should I consider\n"
"this file as a single object having multiple parts?\n"
msgstr ""
-"This file contains several objects positioned at multiple heights. Instead "
-"of considering them as multiple objects, should I consider\n"
-"this file as a single object having multiple parts?\n"
+"Ce fichier contient plusieurs objets positionnés à différentes hauteurs. Au "
+"lieu de les considérer comme des objets distincts, voulez-vous que je "
+"considère\n"
+"ce fichier comme un seul objet en plusieurs parties?\n"
-#: src/slic3r/GUI/Plater.cpp:1615 src/slic3r/GUI/Plater.cpp:1707
+#: src/slic3r/GUI/Plater.cpp:1617 src/slic3r/GUI/Plater.cpp:1725
msgid "Multi-part object detected"
-msgstr "Multi-part object detected"
+msgstr "Objet multi-pièces détecté"
-#: src/slic3r/GUI/Plater.cpp:1650
+#: src/slic3r/GUI/Plater.cpp:1668
msgid ""
-"This file cannot be loaded in simple mode. Do you want to switch to expert "
-"mode?\n"
+"This file cannot be loaded in a simple mode. Do you want to switch to an "
+"advanced mode?\n"
msgstr ""
-"This file cannot be loaded in simple mode. Do you want to switch to expert "
-"mode?\n"
-#: src/slic3r/GUI/Plater.cpp:1651
+#: src/slic3r/GUI/Plater.cpp:1669
msgid "Detected advanced data"
-msgstr "Detected advanced data"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1684
+#: src/slic3r/GUI/Plater.cpp:1702
#, c-format
msgid ""
"You can't to add the object(s) from %s because of one or some of them "
"is(are) multi-part"
msgstr ""
-"You can't to add the object(s) from %s because of one or some of them "
-"is(are) multi-part"
-#: src/slic3r/GUI/Plater.cpp:1704
+#: src/slic3r/GUI/Plater.cpp:1722
msgid ""
"Multiple objects were loaded for a multi-material printer.\n"
"Instead of considering them as multiple objects, should I consider\n"
"these files to represent a single object having multiple parts?\n"
msgstr ""
-"Multiple objects were loaded for a multi-material printer.\n"
-"Instead of considering them as multiple objects, should I consider\n"
-"these files to represent a single object having multiple parts?\n"
+"Plusieurs objets ont été chargés pour une imprimante multi-matériaux.\n"
+"Au lieu de les considérer comme plusieurs objets, dois-je considérer\n"
+"ces fichiers comment représentant un objets ayant plusieurs pièces ?\n"
-#: src/slic3r/GUI/Plater.cpp:1720
+#: src/slic3r/GUI/Plater.cpp:1738
msgid "Loaded"
-msgstr "Loaded"
+msgstr "Chargé"
-#: src/slic3r/GUI/Plater.cpp:1812
+#: src/slic3r/GUI/Plater.cpp:1830
msgid ""
"Your object appears to be too large, so it was automatically scaled down to "
"fit your print bed."
msgstr ""
-"Your object appears to be too large, so it was automatically scaled down to "
-"fit your print bed."
+"Votre objet semble être trop grand, il a donc été automatiquement réduit "
+"afin de l'adapter à votre plateau d'impression."
-#: src/slic3r/GUI/Plater.cpp:1813
+#: src/slic3r/GUI/Plater.cpp:1831
msgid "Object too large?"
-msgstr "Object too large?"
+msgstr "Objet trop grand ?"
-#: src/slic3r/GUI/Plater.cpp:1863
+#: src/slic3r/GUI/Plater.cpp:1881
msgid "Export STL file:"
-msgstr "Export STL file:"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1870
+#: src/slic3r/GUI/Plater.cpp:1888
msgid "Export AMF file:"
-msgstr "Export AMF file:"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:1876
+#: src/slic3r/GUI/Plater.cpp:1894
msgid "Save file as:"
-msgstr "Save file as:"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2042
+#: src/slic3r/GUI/Plater.cpp:2059
msgid "Arranging canceled"
-msgstr "Arranging canceled"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2045
+#: src/slic3r/GUI/Plater.cpp:2062
msgid "Arranging"
-msgstr "Arranging"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2079
+#: src/slic3r/GUI/Plater.cpp:2096
msgid "Could not arrange model objects! Some geometries may be invalid."
-msgstr "Could not arrange model objects! Some geometries may be invalid."
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2083
+#: src/slic3r/GUI/Plater.cpp:2100
msgid "Arranging done."
-msgstr "Arranging done."
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2124
+#: src/slic3r/GUI/Plater.cpp:2141
msgid "Orientation search canceled"
-msgstr "Orientation search canceled"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2129
+#: src/slic3r/GUI/Plater.cpp:2146
msgid "Searching for optimal orientation"
-msgstr "Searching for optimal orientation"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2190
+#: src/slic3r/GUI/Plater.cpp:2207
msgid "Orientation found."
-msgstr "Orientation found."
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2211
+#: src/slic3r/GUI/Plater.cpp:2227
msgid ""
"The selected object can't be split because it contains more than one volume/"
"material."
msgstr ""
-"The selected object can't be split because it contains more than one volume/"
-"material."
+"L'objet sélectionné ne peut être scindé car il contient plus d'un volume/"
+"matériau."
-#: src/slic3r/GUI/Plater.cpp:2337
+#: src/slic3r/GUI/Plater.cpp:2353
msgid "Invalid data"
-msgstr "Invalid data"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2346
+#: src/slic3r/GUI/Plater.cpp:2362
msgid "Ready to slice"
-msgstr "Ready to slice"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2379 src/slic3r/GUI/PrintHostDialogs.cpp:220
+#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/PrintHostDialogs.cpp:220
msgid "Cancelling"
-msgstr "Cancelling"
+msgstr "Annulation"
-#: src/slic3r/GUI/Plater.cpp:2396
+#: src/slic3r/GUI/Plater.cpp:2417
msgid "Another export job is currently running."
-msgstr "Another export job is currently running."
+msgstr "Une autre tâche d'export est actuellement en cours."
-#: src/slic3r/GUI/Plater.cpp:2656
+#: src/slic3r/GUI/Plater.cpp:2678
msgid "Export failed"
-msgstr "Export failed"
+msgstr "L'export a échoué"
-#: src/slic3r/GUI/Plater.cpp:2661 src/slic3r/GUI/PrintHostDialogs.cpp:221
+#: src/slic3r/GUI/Plater.cpp:2683 src/slic3r/GUI/PrintHostDialogs.cpp:221
msgid "Cancelled"
-msgstr "Cancelled"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2747 src/slic3r/GUI/Plater.cpp:2759
-#: src/slic3r/GUI/Plater.cpp:2831
+#: src/slic3r/GUI/Plater.cpp:2769 src/slic3r/GUI/Plater.cpp:2781
+#: src/slic3r/GUI/Plater.cpp:2853
msgid "Increase copies"
-msgstr "Increase copies"
+msgstr "Augmenter les copies"
-#: src/slic3r/GUI/Plater.cpp:2825 src/slic3r/GUI/Plater.cpp:2843
+#: src/slic3r/GUI/Plater.cpp:2847 src/slic3r/GUI/Plater.cpp:2865
msgid "Remove the selected object"
-msgstr "Remove the selected object"
+msgstr "Retirer l'objet sélectionné"
-#: src/slic3r/GUI/Plater.cpp:2831
+#: src/slic3r/GUI/Plater.cpp:2853
msgid "Place one more copy of the selected object"
-msgstr "Place one more copy of the selected object"
+msgstr "Placer une copie supplémentaire de l'objet sélectionné"
-#: src/slic3r/GUI/Plater.cpp:2833
+#: src/slic3r/GUI/Plater.cpp:2855
msgid "Decrease copies"
-msgstr "Decrease copies"
+msgstr "Réduire les copies"
-#: src/slic3r/GUI/Plater.cpp:2833
+#: src/slic3r/GUI/Plater.cpp:2855
msgid "Remove one copy of the selected object"
-msgstr "Remove one copy of the selected object"
+msgstr "Retirer une copie de l'objet sélectionné"
-#: src/slic3r/GUI/Plater.cpp:2835
+#: src/slic3r/GUI/Plater.cpp:2857
msgid "Set number of copies"
-msgstr "Set number of copies"
+msgstr "Choisir le nombre de copies"
-#: src/slic3r/GUI/Plater.cpp:2835
+#: src/slic3r/GUI/Plater.cpp:2857
msgid "Change the number of copies of the selected object"
-msgstr "Change the number of copies of the selected object"
+msgstr "Changer le nombre de copies de l'objet sélectionné"
-#: src/slic3r/GUI/Plater.cpp:2858
+#: src/slic3r/GUI/Plater.cpp:2880
msgid "Reload from Disk"
-msgstr "Reload from Disk"
+msgstr "Recharger depuis le Disque"
-#: src/slic3r/GUI/Plater.cpp:2858
+#: src/slic3r/GUI/Plater.cpp:2880
msgid "Reload the selected file from Disk"
-msgstr "Reload the selected file from Disk"
+msgstr "Recharger le fichier sélectionné depuis le Disque"
-#: src/slic3r/GUI/Plater.cpp:2861
+#: src/slic3r/GUI/Plater.cpp:2883
msgid "Export the selected object as STL file"
-msgstr "Export the selected object as STL file"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2873
+#: src/slic3r/GUI/Plater.cpp:2895
msgid "Along X axis"
-msgstr "Along X axis"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2873
+#: src/slic3r/GUI/Plater.cpp:2895
msgid "Mirror the selected object along the X axis"
-msgstr "Mirror the selected object along the X axis"
+msgstr "Symétriser l'objet sélectionné selon l'axe X"
-#: src/slic3r/GUI/Plater.cpp:2875
+#: src/slic3r/GUI/Plater.cpp:2897
msgid "Along Y axis"
-msgstr "Along Y axis"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2875
+#: src/slic3r/GUI/Plater.cpp:2897
msgid "Mirror the selected object along the Y axis"
-msgstr "Mirror the selected object along the Y axis"
+msgstr "Symétriser l'objet sélectionné selon l'axe Y"
-#: src/slic3r/GUI/Plater.cpp:2877
+#: src/slic3r/GUI/Plater.cpp:2899
msgid "Along Z axis"
-msgstr "Along Z axis"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2877
+#: src/slic3r/GUI/Plater.cpp:2899
msgid "Mirror the selected object along the Z axis"
-msgstr "Mirror the selected object along the Z axis"
+msgstr "Symétriser l'objet sélectionné selon l'axe Z"
-#: src/slic3r/GUI/Plater.cpp:2880
+#: src/slic3r/GUI/Plater.cpp:2902
msgid "Mirror"
-msgstr "Mirror"
+msgstr "Symétrie"
-#: src/slic3r/GUI/Plater.cpp:2880
+#: src/slic3r/GUI/Plater.cpp:2902
msgid "Mirror the selected object"
-msgstr "Mirror the selected object"
+msgstr "Symétriser l'objet sélectionné"
-#: src/slic3r/GUI/Plater.cpp:2898
+#: src/slic3r/GUI/Plater.cpp:2920
msgid "To objects"
-msgstr "To objects"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2898 src/slic3r/GUI/Plater.cpp:2920
+#: src/slic3r/GUI/Plater.cpp:2920 src/slic3r/GUI/Plater.cpp:2942
msgid "Split the selected object into individual objects"
-msgstr "Split the selected object into individual objects"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2900
+#: src/slic3r/GUI/Plater.cpp:2922
msgid "To parts"
-msgstr "To parts"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2900 src/slic3r/GUI/Plater.cpp:2940
+#: src/slic3r/GUI/Plater.cpp:2922 src/slic3r/GUI/Plater.cpp:2962
msgid "Split the selected object into individual sub-parts"
-msgstr "Split the selected object into individual sub-parts"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2903 src/slic3r/GUI/Plater.cpp:2920
-#: src/slic3r/GUI/Plater.cpp:2940 src/libslic3r/PrintConfig.cpp:3075
+#: src/slic3r/GUI/Plater.cpp:2925 src/slic3r/GUI/Plater.cpp:2942
+#: src/slic3r/GUI/Plater.cpp:2962 src/libslic3r/PrintConfig.cpp:3080
msgid "Split"
-msgstr "Split"
+msgstr "Scinder"
-#: src/slic3r/GUI/Plater.cpp:2903
+#: src/slic3r/GUI/Plater.cpp:2925
msgid "Split the selected object"
-msgstr "Split the selected object"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2926
+#: src/slic3r/GUI/Plater.cpp:2948
msgid "Optimize orientation"
-msgstr "Optimize orientation"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:2926
+#: src/slic3r/GUI/Plater.cpp:2948
msgid "Optimize the rotation of the object for better print results."
-msgstr "Optimize the rotation of the object for better print results."
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3342
+#: src/slic3r/GUI/Plater.cpp:3373
msgid "Save G-code file as:"
-msgstr "Save G-code file as:"
+msgstr "Sauvegarder le fichier G-code en tant que :"
-#: src/slic3r/GUI/Plater.cpp:3342
+#: src/slic3r/GUI/Plater.cpp:3373
msgid "Save SL1 file as:"
-msgstr "Save SL1 file as:"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3397
+#: src/slic3r/GUI/Plater.cpp:3428
#, c-format
msgid "STL file exported to %s"
-msgstr "STL file exported to %s"
+msgstr "Fichier STL exporté vers %s"
-#: src/slic3r/GUI/Plater.cpp:3413
+#: src/slic3r/GUI/Plater.cpp:3444
#, c-format
msgid "AMF file exported to %s"
-msgstr "AMF file exported to %s"
+msgstr "Fichier AMF exporté vers %s"
-#: src/slic3r/GUI/Plater.cpp:3416
+#: src/slic3r/GUI/Plater.cpp:3447
#, c-format
msgid "Error exporting AMF file %s"
-msgstr "Error exporting AMF file %s"
+msgstr "Erreur d'export du fichier AMF %s"
-#: src/slic3r/GUI/Plater.cpp:3442
+#: src/slic3r/GUI/Plater.cpp:3473
#, c-format
msgid "3MF file exported to %s"
-msgstr "3MF file exported to %s"
+msgstr "Fichier 3MF exporté vers %s"
-#: src/slic3r/GUI/Plater.cpp:3445
+#: src/slic3r/GUI/Plater.cpp:3476
#, c-format
msgid "Error exporting 3MF file %s"
-msgstr "Error exporting 3MF file %s"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3673
+#: src/slic3r/GUI/Plater.cpp:3704
msgid "Export"
-msgstr "Export"
+msgstr ""
-#: src/slic3r/GUI/Plater.cpp:3674
+#: src/slic3r/GUI/Plater.cpp:3705
msgid "Send G-code"
-msgstr "Send G-code"
+msgstr ""
#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762
#: src/slic3r/GUI/Tab.cpp:1963
msgid "General"
-msgstr "General"
+msgstr "Général"
#: src/slic3r/GUI/Preferences.cpp:34
msgid "Remember output directory"
-msgstr "Remember output directory"
+msgstr "Se souvenir du répertoire de sortie"
#: src/slic3r/GUI/Preferences.cpp:36
msgid ""
"If this is enabled, Slic3r will prompt the last output directory instead of "
"the one containing the input files."
msgstr ""
-"If this is enabled, Slic3r will prompt the last output directory instead of "
-"the one containing the input files."
+"Si ceci est activé, Slic3r affichera le dernier répertoire de sortie au lieu "
+"de celui contenant les fichiers d'entrée."
#: src/slic3r/GUI/Preferences.cpp:42
msgid "Auto-center parts"
-msgstr "Auto-center parts"
+msgstr "Centrer automatiquement les pièces"
#: src/slic3r/GUI/Preferences.cpp:44
msgid ""
"If this is enabled, Slic3r will auto-center objects around the print bed "
"center."
msgstr ""
-"If this is enabled, Slic3r will auto-center objects around the print bed "
-"center."
+"Si ceci est activé, Slic3r centrera automatique les objets autour du centre "
+"du plateau d'impression."
#: src/slic3r/GUI/Preferences.cpp:50
msgid "Background processing"
-msgstr "Background processing"
+msgstr "Tâche en arrière plan"
#: src/slic3r/GUI/Preferences.cpp:52
msgid ""
"If this is enabled, Slic3r will pre-process objects as soon as they're "
"loaded in order to save time when exporting G-code."
msgstr ""
-"If this is enabled, Slic3r will pre-process objects as soon as they're "
-"loaded in order to save time when exporting G-code."
+"Si ceci est activé, Slic3r va pré-calculer les objets dès qu'ils sont "
+"chargés pour gagner du temps lors de l'export du G-code."
+
+#: src/slic3r/GUI/Preferences.cpp:61
+msgid "If enabled, Slic3r checks for new versions of "
+msgstr ""
#: src/slic3r/GUI/Preferences.cpp:74
msgid "Suppress \" - default - \" presets"
-msgstr "Suppress \" - default - \" presets"
+msgstr "Supprimer les préréglages \" - par défaut - \""
#: src/slic3r/GUI/Preferences.cpp:76
msgid ""
"Suppress \" - default - \" presets in the Print / Filament / Printer "
"selections once there are any other valid presets available."
msgstr ""
-"Suppress \" - default - \" presets in the Print / Filament / Printer "
-"selections once there are any other valid presets available."
+"Supprimer les préréglages \" - par défaut - \" dans les choix Impression / "
+"Filament / Imprimante une fois qu'il y a d'autres préréglages valides "
+"disponibles."
#: src/slic3r/GUI/Preferences.cpp:82
msgid "Show incompatible print and filament presets"
-msgstr "Show incompatible print and filament presets"
+msgstr "Afficher les préréglages d'impression et de filament incompatibles"
#: src/slic3r/GUI/Preferences.cpp:84
msgid ""
"When checked, the print and filament presets are shown in the preset editor "
"even if they are marked as incompatible with the active printer"
msgstr ""
-"When checked, the print and filament presets are shown in the preset editor "
-"even if they are marked as incompatible with the active printer"
+"Lorsqu'ils sont sélectionnés, les préréglages de l'imprimante et du filament "
+"sont visibles dans l'éditeur de préréglage même s'ils sont désignés comme "
+"incompatibles avec l'imprimante en cours d'utilisation"
#: src/slic3r/GUI/Preferences.cpp:91
msgid "Use legacy OpenGL 1.1 rendering"
-msgstr "Use legacy OpenGL 1.1 rendering"
+msgstr "Utiliser le rendu de legacy OpenGL 1.1"
#: src/slic3r/GUI/Preferences.cpp:93
msgid ""
@@ -2808,48 +2840,48 @@ msgid ""
"try to check this checkbox. This will disable the layer height editing and "
"anti aliasing, so it is likely better to upgrade your graphics driver."
msgstr ""
-"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may "
-"try to check this checkbox. This will disable the layer height editing and "
-"anti aliasing, so it is likely better to upgrade your graphics driver."
+"Si vous avez des soucis de rendu causés par un driver OpenGL 2.0 bogué, vous "
+"pouvez essayer de cocher cette case. Ceci désactivera l'édition de la "
+"hauteur de couche et l'anti-aliasing, vous avez donc intérêt à mettre à jour "
+"vos drivers graphiques."
#: src/slic3r/GUI/Preferences.cpp:101
msgid "Use Retina resolution for the 3D scene"
-msgstr "Use Retina resolution for the 3D scene"
+msgstr ""
#: src/slic3r/GUI/Preferences.cpp:103
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 ""
-"If enabled, the 3D scene will be rendered in Retina resolution. If you are "
-"experiencing 3D performance problems, disabling this option may help."
#: src/slic3r/GUI/Preferences.cpp:126
msgid "You need to restart Slic3r to make the changes effective."
-msgstr "You need to restart Slic3r to make the changes effective."
+msgstr ""
+"Vous devez redémarrer Slic3r afin que les modifications soient appliquées."
#: src/slic3r/GUI/Preset.cpp:207
msgid "modified"
-msgstr "modified"
+msgstr ""
-#: src/slic3r/GUI/Preset.cpp:918 src/slic3r/GUI/Preset.cpp:958
-#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1043
-#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1537
+#: src/slic3r/GUI/Preset.cpp:920 src/slic3r/GUI/Preset.cpp:960
+#: src/slic3r/GUI/Preset.cpp:1013 src/slic3r/GUI/Preset.cpp:1045
+#: src/slic3r/GUI/PresetBundle.cpp:1470 src/slic3r/GUI/PresetBundle.cpp:1523
msgid "System presets"
-msgstr "System presets"
+msgstr "Préréglages système"
-#: src/slic3r/GUI/Preset.cpp:962 src/slic3r/GUI/Preset.cpp:1047
-#: src/slic3r/GUI/PresetBundle.cpp:1542
+#: src/slic3r/GUI/Preset.cpp:964 src/slic3r/GUI/Preset.cpp:1049
+#: src/slic3r/GUI/PresetBundle.cpp:1528
msgid "User presets"
-msgstr "User presets"
+msgstr "Préréglages utilisateur"
-#: src/slic3r/GUI/Preset.cpp:991 src/slic3r/GUI/Tab.cpp:247
+#: src/slic3r/GUI/Preset.cpp:993 src/slic3r/GUI/Tab.cpp:247
msgid "Add a new printer"
-msgstr "Add a new printer"
+msgstr ""
-#: src/slic3r/GUI/Preset.cpp:1251
+#: src/slic3r/GUI/Preset.cpp:1253
msgid "filament"
-msgstr "filament"
+msgstr ""
#: src/slic3r/GUI/PresetHints.cpp:28
#, c-format
@@ -2858,9 +2890,10 @@ msgid ""
"will be reduced so that no less than %ds are spent on that layer (however, "
"speed will never be reduced below %dmm/s)."
msgstr ""
-"If estimated layer time is below ~%ds, fan will run at %d%% and print speed "
-"will be reduced so that no less than %ds are spent on that layer (however, "
-"speed will never be reduced below %dmm/s)."
+"Si le temps de couche estimé est inférieur à ~%d s, le ventilateur tournera "
+"à %d%% et la vitesse d'impression sera réduite pour qu'au moins %d s soient "
+"passées sur cette couche (cependant, la vitesse ne sera jamais réduite en-"
+"dessous de %d mm/s)."
#: src/slic3r/GUI/PresetHints.cpp:32
#, c-format
@@ -2870,8 +2903,9 @@ msgid ""
"proportionally decreasing speed between %d%% and %d%%."
msgstr ""
"\n"
-"If estimated layer time is greater, but still below ~%ds, fan will run at a "
-"proportionally decreasing speed between %d%% and %d%%."
+"Si le temps estimé pour la couche est supérieur, mais cependant inférieur à ~"
+"%ds, le ventilateur tournera à une vitesse proportionnellement décroissante "
+"entre %d%% et %d%%."
#: src/slic3r/GUI/PresetHints.cpp:36
msgid ""
@@ -2879,49 +2913,49 @@ msgid ""
"During the other layers, fan "
msgstr ""
"\n"
-"During the other layers, fan "
+"Pendant les autres couches, le ventilateur "
#: src/slic3r/GUI/PresetHints.cpp:38
msgid "Fan "
-msgstr "Fan "
+msgstr "Ventilateur "
#: src/slic3r/GUI/PresetHints.cpp:43
#, c-format
msgid "will always run at %d%% "
-msgstr "will always run at %d%% "
+msgstr "fonctionnera toujours à %d%% "
#: src/slic3r/GUI/PresetHints.cpp:46
#, c-format
msgid "except for the first %d layers"
-msgstr "except for the first %d layers"
+msgstr "sauf pour les %d première couches"
#: src/slic3r/GUI/PresetHints.cpp:50
msgid "except for the first layer"
-msgstr "except for the first layer"
+msgstr "sauf pour la première couche"
#: src/slic3r/GUI/PresetHints.cpp:52
msgid "will be turned off."
-msgstr "will be turned off."
+msgstr "sera désactivé."
#: src/slic3r/GUI/PresetHints.cpp:153
msgid "external perimeters"
-msgstr "external perimeters"
+msgstr "périmètres externes"
#: src/slic3r/GUI/PresetHints.cpp:162
msgid "perimeters"
-msgstr "perimeters"
+msgstr "périmètres"
#: src/slic3r/GUI/PresetHints.cpp:171
msgid "infill"
-msgstr "infill"
+msgstr "remplissage"
#: src/slic3r/GUI/PresetHints.cpp:181
msgid "solid infill"
-msgstr "solid infill"
+msgstr "remplissage solide"
#: src/slic3r/GUI/PresetHints.cpp:189
msgid "top solid infill"
-msgstr "top solid infill"
+msgstr "remplissage solide supérieur"
#: src/slic3r/GUI/PresetHints.cpp:200
msgid "support"
@@ -2929,35 +2963,35 @@ msgstr "support"
#: src/slic3r/GUI/PresetHints.cpp:210
msgid "support interface"
-msgstr "support interface"
+msgstr "interface du support"
#: src/slic3r/GUI/PresetHints.cpp:216
msgid "First layer volumetric"
-msgstr "First layer volumetric"
+msgstr "Volume de la première couche"
#: src/slic3r/GUI/PresetHints.cpp:216
msgid "Bridging volumetric"
-msgstr "Bridging volumetric"
+msgstr "Volumétrie des ponts"
#: src/slic3r/GUI/PresetHints.cpp:216
msgid "Volumetric"
-msgstr "Volumetric"
+msgstr "Volumétrique"
#: src/slic3r/GUI/PresetHints.cpp:217
msgid " flow rate is maximized "
-msgstr " flow rate is maximized "
+msgstr " le débit est maximisé "
#: src/slic3r/GUI/PresetHints.cpp:220
msgid "by the print profile maximum"
-msgstr "by the print profile maximum"
+msgstr "par le maximum du profil de l'imprimante"
#: src/slic3r/GUI/PresetHints.cpp:221
msgid "when printing "
-msgstr "when printing "
+msgstr "pendant l'impression des "
#: src/slic3r/GUI/PresetHints.cpp:222
msgid " with a volumetric rate "
-msgstr " with a volumetric rate "
+msgstr " avec un débit volumétrique "
#: src/slic3r/GUI/PresetHints.cpp:226
#, c-format
@@ -2967,299 +3001,302 @@ msgstr "%3.2f mm³/s"
#: src/slic3r/GUI/PresetHints.cpp:228
#, c-format
msgid " at filament speed %3.2f mm/s."
-msgstr " at filament speed %3.2f mm/s."
+msgstr " à une vitesse de filament de %3.2f mm/s."
#: src/slic3r/GUI/PresetHints.cpp:247
msgid ""
"Recommended object thin wall thickness: Not available due to invalid layer "
"height."
msgstr ""
-"Recommended object thin wall thickness: Not available due to invalid layer "
-"height."
+"Épaisseur des parois fines de l'objet recommandée : Non disponible car la "
+"hauteur de couche est invalide."
#: src/slic3r/GUI/PresetHints.cpp:264
#, c-format
msgid "Recommended object thin wall thickness for layer height %.2f and "
-msgstr "Recommended object thin wall thickness for layer height %.2f and "
+msgstr ""
+"Épaisseur des parois fines de l'objet recommandée pour la hauteur de couche "
+"%.2f et "
#: src/slic3r/GUI/PresetHints.cpp:271
#, c-format
msgid "%d lines: %.2lf mm"
-msgstr "%d lines: %.2lf mm"
+msgstr "%d lignes : %.2lf mm"
#: src/slic3r/GUI/PrintHostDialogs.cpp:32
msgid "Send G-Code to printer host"
-msgstr "Send G-Code to printer host"
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:32
msgid "Upload to Printer Host with the following filename:"
-msgstr "Upload to Printer Host with the following filename:"
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:34
msgid "Start printing after upload"
-msgstr "Start printing after upload"
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:41
msgid "Use forward slashes ( / ) as a directory separator if needed."
-msgstr "Use forward slashes ( / ) as a directory separator if needed."
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:157
msgid "Cancel selected"
-msgstr "Cancel selected"
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:159
msgid "Show error message"
-msgstr "Show error message"
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:198
#: src/slic3r/GUI/PrintHostDialogs.cpp:217
msgid "Enqueued"
-msgstr "Enqueued"
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:218
msgid "Uploading"
-msgstr "Uploading"
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:222
msgid "Completed"
-msgstr "Completed"
+msgstr ""
#: src/slic3r/GUI/PrintHostDialogs.cpp:260
msgid "Error uploading to print host:"
-msgstr "Error uploading to print host:"
+msgstr ""
#: src/slic3r/GUI/RammingChart.cpp:23
msgid "NO RAMMING AT ALL"
-msgstr "NO RAMMING AT ALL"
+msgstr "PAS D'EXPULSION DU TOUT"
#: src/slic3r/GUI/RammingChart.cpp:76
msgid "Time"
-msgstr "Time"
+msgstr "Durée"
#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81
#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:611
#: src/libslic3r/PrintConfig.cpp:655 src/libslic3r/PrintConfig.cpp:670
#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2250
-#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2315
+#: src/libslic3r/PrintConfig.cpp:2310 src/libslic3r/PrintConfig.cpp:2317
msgid "s"
msgstr "s"
#: src/slic3r/GUI/RammingChart.cpp:81
msgid "Volumetric speed"
-msgstr "Volumetric speed"
+msgstr "Vitesse volumétrique"
#: src/slic3r/GUI/SysInfoDialog.cpp:44
-msgid "Slic3r Prusa Edition - System Information"
-msgstr "Slic3r Prusa Edition - System Information"
+msgid "System Information"
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:228
msgid "Compatible printers"
-msgstr "Compatible printers"
+msgstr "Imprimantes compatibles"
#: src/slic3r/GUI/Tab.cpp:51
msgid "Select the printers this profile is compatible with."
-msgstr "Select the printers this profile is compatible with."
+msgstr "Sélectionner les imprimantes avec lesquelles ce profil est compatible."
#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:243
msgid "Compatible print profiles"
-msgstr "Compatible print profiles"
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:57
msgid "Select the print profiles this profile is compatible with."
-msgstr "Select the print profiles this profile is compatible with."
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:132
msgid "Save current "
-msgstr "Save current "
+msgstr "Enregistrer l'état actuel "
#: src/slic3r/GUI/Tab.cpp:133
msgid "Delete this preset"
-msgstr "Delete this preset"
+msgstr "Supprimer ce préréglage"
#: src/slic3r/GUI/Tab.cpp:145
msgid ""
"Hover the cursor over buttons to find more information \n"
"or click this button."
msgstr ""
-"Hover the cursor over buttons to find more information \n"
-"or click this button."
+"Passez le curseur au dessus des boutons pour obtenir plus d'informations\n"
+"ou cliquez sur ce bouton."
#: src/slic3r/GUI/Tab.cpp:858
msgid "It's a default preset."
-msgstr "It's a default preset."
+msgstr "C'est un préréglage par défaut."
#: src/slic3r/GUI/Tab.cpp:859
msgid "It's a system preset."
-msgstr "It's a system preset."
+msgstr "C'est un préréglage système."
#: src/slic3r/GUI/Tab.cpp:860
msgid "Current preset is inherited from "
-msgstr "Current preset is inherited from "
+msgstr "Le préréglage en cours a hérité de "
#: src/slic3r/GUI/Tab.cpp:865
msgid "It can't be deleted or modified. "
-msgstr "It can't be deleted or modified. "
+msgstr "Il ne peut être supprimé ou modifié. "
#: src/slic3r/GUI/Tab.cpp:866
msgid ""
"Any modifications should be saved as a new preset inherited from this one. "
msgstr ""
-"Any modifications should be saved as a new preset inherited from this one. "
+"Toute modification doit être enregistrée comme un nouveau préréglage hérité "
+"de celui-ci. "
#: src/slic3r/GUI/Tab.cpp:867
msgid "To do that please specify a new name for the preset."
-msgstr "To do that please specify a new name for the preset."
+msgstr "Pour faire cela veuillez spécifier un nouveau nom pour le préréglage."
#: src/slic3r/GUI/Tab.cpp:871
msgid "Additional information:"
-msgstr "Additional information:"
+msgstr "Informations complémentaires :"
#: src/slic3r/GUI/Tab.cpp:877
msgid "printer model"
-msgstr "printer model"
+msgstr "modèle de l'imprimante"
#: src/slic3r/GUI/Tab.cpp:885
msgid "default print profile"
-msgstr "default print profile"
+msgstr "profil d'impression par défaut"
#: src/slic3r/GUI/Tab.cpp:888
msgid "default filament profile"
-msgstr "default filament profile"
+msgstr "profil du filament par défaut"
#: src/slic3r/GUI/Tab.cpp:902
msgid "default SLA material profile"
-msgstr "default SLA material profile"
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:906
msgid "default SLA print profile"
-msgstr "default SLA print profile"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3303
+#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3305
msgid "Layers and perimeters"
-msgstr "Layers and perimeters"
+msgstr "Couches et périmètres"
#: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55
msgid "Layer height"
-msgstr "Layer height"
+msgstr "Hauteur de couche"
#: src/slic3r/GUI/Tab.cpp:953
msgid "Vertical shells"
-msgstr "Vertical shells"
+msgstr "Parois verticales"
#: src/slic3r/GUI/Tab.cpp:964
msgid "Horizontal shells"
-msgstr "Horizontal shells"
+msgstr "Coques horizontales"
#: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709
msgid "Solid layers"
-msgstr "Solid layers"
+msgstr "Couches solides"
#: src/slic3r/GUI/Tab.cpp:970
msgid "Quality (slower slicing)"
-msgstr "Quality (slower slicing)"
+msgstr "Qualité (découpage plus lent)"
#: src/slic3r/GUI/Tab.cpp:988
msgid "Reducing printing time"
-msgstr "Reducing printing time"
+msgstr "Réduction du temps d'impression"
#: src/slic3r/GUI/Tab.cpp:1000
msgid "Skirt and brim"
-msgstr "Skirt and brim"
+msgstr "Jupe et bordure"
#: src/slic3r/GUI/Tab.cpp:1017
msgid "Raft"
-msgstr "Raft"
+msgstr "Radeau"
#: src/slic3r/GUI/Tab.cpp:1021
msgid "Options for support material and raft"
-msgstr "Options for support material and raft"
+msgstr "Options pour le matériau de support et le radeau"
#: src/slic3r/GUI/Tab.cpp:1036
msgid "Speed for print moves"
-msgstr "Speed for print moves"
+msgstr "Vitesse pour les déplacements d'impression"
#: src/slic3r/GUI/Tab.cpp:1048
msgid "Speed for non-print moves"
-msgstr "Speed for non-print moves"
+msgstr "Vitesse pour les déplacements sans impression"
#: src/slic3r/GUI/Tab.cpp:1051
msgid "Modifiers"
-msgstr "Modifiers"
+msgstr "Modificateurs"
#: src/slic3r/GUI/Tab.cpp:1054
msgid "Acceleration control (advanced)"
-msgstr "Acceleration control (advanced)"
+msgstr "Contrôle de l'accélération (avancé)"
#: src/slic3r/GUI/Tab.cpp:1061
msgid "Autospeed (advanced)"
-msgstr "Autospeed (advanced)"
+msgstr "Vitesse automatique (avancé)"
#: src/slic3r/GUI/Tab.cpp:1069
msgid "Multiple Extruders"
-msgstr "Multiple Extruders"
+msgstr "Extrudeurs Multiples"
#: src/slic3r/GUI/Tab.cpp:1077
msgid "Ooze prevention"
-msgstr "Ooze prevention"
+msgstr "Prévention des coulures"
#: src/slic3r/GUI/Tab.cpp:1094
msgid "Extrusion width"
-msgstr "Extrusion width"
+msgstr "Largeur d'extrusion"
#: src/slic3r/GUI/Tab.cpp:1104
msgid "Overlap"
-msgstr "Overlap"
+msgstr "Chevauchement"
#: src/slic3r/GUI/Tab.cpp:1107
msgid "Flow"
-msgstr "Flow"
+msgstr "Flux"
#: src/slic3r/GUI/Tab.cpp:1116
msgid "Other"
-msgstr "Other"
+msgstr "Autre"
-#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3351
+#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3353
msgid "Output options"
-msgstr "Output options"
+msgstr "Options de sortie"
#: src/slic3r/GUI/Tab.cpp:1120
msgid "Sequential printing"
-msgstr "Sequential printing"
+msgstr "Impression séquentielle"
#: src/slic3r/GUI/Tab.cpp:1122
msgid "Extruder clearance (mm)"
-msgstr "Extruder clearance (mm)"
+msgstr "Dégagement de l'extrudeur (mm)"
-#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3352
+#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3354
msgid "Output file"
-msgstr "Output file"
+msgstr "Fichier de sortie"
#: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382
msgid "Post-processing scripts"
-msgstr "Post-processing scripts"
+msgstr "Scripts de post-traitement"
#: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145
#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528
#: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936
-#: src/slic3r/GUI/Tab.cpp:2027 src/slic3r/GUI/Tab.cpp:2028
-#: src/slic3r/GUI/Tab.cpp:3240 src/slic3r/GUI/Tab.cpp:3241
+#: src/slic3r/GUI/Tab.cpp:2028 src/slic3r/GUI/Tab.cpp:2029
+#: src/slic3r/GUI/Tab.cpp:3242 src/slic3r/GUI/Tab.cpp:3243
msgid "Notes"
msgstr "Notes"
#: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535
-#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2034
-#: src/slic3r/GUI/Tab.cpp:3248 src/slic3r/GUI/Tab.cpp:3357
+#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2035
+#: src/slic3r/GUI/Tab.cpp:3250 src/slic3r/GUI/Tab.cpp:3359
msgid "Dependencies"
-msgstr "Dependencies"
+msgstr "Dépendances"
#: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536
-#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2035
-#: src/slic3r/GUI/Tab.cpp:3249 src/slic3r/GUI/Tab.cpp:3358
+#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2036
+#: src/slic3r/GUI/Tab.cpp:3251 src/slic3r/GUI/Tab.cpp:3360
msgid "Profile dependencies"
-msgstr "Profile dependencies"
+msgstr "Dépendances du profil"
#: src/slic3r/GUI/Tab.cpp:1198
-#, no-c-format
+#, fuzzy, c-format
msgid ""
"The Spiral Vase mode requires:\n"
"- one perimeter\n"
@@ -3270,18 +3307,18 @@ msgid ""
"\n"
"Shall I adjust those settings in order to enable Spiral Vase?"
msgstr ""
-"The Spiral Vase mode requires:\n"
-"- one perimeter\n"
-"- no top solid layers\n"
-"- 0% fill density\n"
-"- no support material\n"
-"- no ensure_vertical_shell_thickness\n"
+"Le mode Vase Spiral requiert :\n"
+"-Un périmètre\n"
+"-Pas de couches solides supérieures\n"
+"-Une densité de remplissage de 0%\n"
+"-Pas de supports\n"
+"-Pas de ensure_vertical_shell_thickness\n"
"\n"
-"Shall I adjust those settings in order to enable Spiral Vase?"
+"Voulez-vous que je modifie ces réglages afin d'activer le Vase Spirale?"
#: src/slic3r/GUI/Tab.cpp:1205
msgid "Spiral Vase"
-msgstr "Spiral Vase"
+msgstr "Vase Spiral"
#: src/slic3r/GUI/Tab.cpp:1228
msgid ""
@@ -3293,17 +3330,18 @@ msgid ""
"\n"
"Shall I adjust those settings in order to enable the Wipe Tower?"
msgstr ""
-"The Wipe Tower currently supports the non-soluble supports only\n"
-"if they are printed with the current extruder without triggering a tool "
-"change.\n"
-"(both support_material_extruder and support_material_interface_extruder need "
-"to be set to 0).\n"
+"A l'heure actuelle la Tour de Nettoyage ne tolère les supports non-"
+"solubles \n"
+"que s'ils sont imprimés avec l'extrudeur en cours d'utilisation sans "
+"déclencher un changement d'outil.\n"
+"(support_material_extruder de même que support_material_interface_extruder "
+"doivent être réglés sur 0).\n"
"\n"
-"Shall I adjust those settings in order to enable the Wipe Tower?"
+"Voulez-vous que je modifie ces réglages pour activer la Tour de Nettoyage ?"
#: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249
msgid "Wipe Tower"
-msgstr "Wipe Tower"
+msgstr "Tour de Nettoyage"
#: src/slic3r/GUI/Tab.cpp:1246
msgid ""
@@ -3312,10 +3350,12 @@ msgid ""
"\n"
"Shall I synchronize support layers in order to enable the Wipe Tower?"
msgstr ""
-"For the Wipe Tower to work with the soluble supports, the support layers\n"
-"need to be synchronized with the object layers.\n"
+"Pour que la tour de nettoyage fonctionne avec des supports solubles, les "
+"couches de support\n"
+"doivent être synchronisées avec les couches de l'objet.\n"
"\n"
-"Shall I synchronize support layers in order to enable the Wipe Tower?"
+"Dois-je synchroniser les couches de support pour pouvoir activer la tour de "
+"nettoyage ?"
#: src/slic3r/GUI/Tab.cpp:1264
msgid ""
@@ -3324,92 +3364,97 @@ msgid ""
"\n"
"Shall I adjust those settings for supports?"
msgstr ""
-"Supports work better, if the following feature is enabled:\n"
-"- Detect bridging perimeters\n"
+"Les supports sont plus efficaces, si la fonctionnalité suivante est "
+"activée :\n"
+"-Détection des périmètres de pont\n"
"\n"
-"Shall I adjust those settings for supports?"
+"Voulez-vous que que je modifie les réglages des supports ?"
#: src/slic3r/GUI/Tab.cpp:1267
msgid "Support Generator"
-msgstr "Support Generator"
+msgstr "Générateur de Support"
+# Used in context: _("The ") + str_fill_pattern + _(" infill pattern is not supposed to work at 100% density.\n")
#: src/slic3r/GUI/Tab.cpp:1309
msgid "The "
-msgstr "The "
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:1309
-#, no-c-format
+#, fuzzy, c-format
msgid ""
" infill pattern is not supposed to work at 100% density.\n"
"\n"
"Shall I switch to rectilinear fill pattern?"
msgstr ""
-" infill pattern is not supposed to work at 100% density.\n"
+" le motif de remplissage n'est pas supposé fonctionner à une densité de "
+"100%.\n"
"\n"
-"Shall I switch to rectilinear fill pattern?"
+"Dois-je passer au motif de remplissage rectiligne ?"
#: src/slic3r/GUI/Tab.cpp:1429
msgid "Temperature "
-msgstr "Temperature "
+msgstr "Température "
#: src/slic3r/GUI/Tab.cpp:1435
msgid "Bed"
-msgstr "Bed"
+msgstr "Plateau"
#: src/slic3r/GUI/Tab.cpp:1440
msgid "Cooling"
-msgstr "Cooling"
+msgstr "Refroidissement"
#: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285
#: src/libslic3r/PrintConfig.cpp:2097
msgid "Enable"
-msgstr "Enable"
+msgstr "Activer"
#: src/slic3r/GUI/Tab.cpp:1452
msgid "Fan settings"
-msgstr "Fan settings"
+msgstr "Réglages du ventilateur"
#: src/slic3r/GUI/Tab.cpp:1453
msgid "Fan speed"
-msgstr "Fan speed"
+msgstr "Vitesse du ventilateur"
#: src/slic3r/GUI/Tab.cpp:1461
msgid "Cooling thresholds"
-msgstr "Cooling thresholds"
+msgstr "Seuils de refroidissement"
#: src/slic3r/GUI/Tab.cpp:1467
msgid "Filament properties"
-msgstr "Filament properties"
+msgstr "Propriétés du filament"
#: src/slic3r/GUI/Tab.cpp:1471
msgid "Print speed override"
-msgstr "Print speed override"
+msgstr "Contournement de la vitesse d'impression"
#: src/slic3r/GUI/Tab.cpp:1481
msgid "Toolchange parameters with single extruder MM printers"
-msgstr "Toolchange parameters with single extruder MM printers"
+msgstr ""
+"Paramètres de changement d'outil pour les imprimantes multi-matériaux mono-"
+"extrudeur"
#: src/slic3r/GUI/Tab.cpp:1496
msgid "Ramming settings"
-msgstr "Ramming settings"
+msgstr "Réglages de l'expulsion"
#: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898
msgid "Custom G-code"
-msgstr "Custom G-code"
+msgstr "G-code personnalisé"
#: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899
#: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750
msgid "Start G-code"
-msgstr "Start G-code"
+msgstr "G-code de début"
#: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905
#: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368
msgid "End G-code"
-msgstr "End G-code"
+msgstr "G-code de fin"
#: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689
msgid " Browse "
-msgstr " Browse "
+msgstr " Parcourir "
#: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838
msgid "Test"
@@ -3417,27 +3462,28 @@ msgstr "Test"
#: src/slic3r/GUI/Tab.cpp:1662
msgid "Could not get a valid Printer Host reference"
-msgstr "Could not get a valid Printer Host reference"
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851
msgid "Success!"
-msgstr "Success!"
+msgstr "Réussi !"
#: src/slic3r/GUI/Tab.cpp:1683
msgid ""
"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-"
"signed certificate."
msgstr ""
-"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-"
-"signed certificate."
+"Le fichier HTTPS CA est optionnel. Il est uniquement requis si vous utilisez "
+"le HTTPS avec un certificat auto-signé."
#: src/slic3r/GUI/Tab.cpp:1696
msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"
-msgstr "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"
+msgstr ""
+"Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*"
#: src/slic3r/GUI/Tab.cpp:1697
msgid "Open CA certificate file"
-msgstr "Open CA certificate file"
+msgstr "Ouvrir le fichier de certificat CA"
#: src/slic3r/GUI/Tab.cpp:1725
msgid ""
@@ -3447,483 +3493,485 @@ msgid ""
"\tTo use a custom CA file, please import your CA file into Certificate "
"Store / Keychain."
msgstr ""
-"HTTPS CA File:\n"
-"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate "
-"Store or Keychain.\n"
-"\tTo use a custom CA file, please import your CA file into Certificate "
-"Store / Keychain."
#: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964
msgid "Size and coordinates"
-msgstr "Size and coordinates"
+msgstr "Taille et coordonnées"
#: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968
-#: src/slic3r/GUI/Tab.cpp:2911
+#: src/slic3r/GUI/Tab.cpp:2912
msgid " Set "
-msgstr " Set "
+msgstr " Appliquer "
#: src/slic3r/GUI/Tab.cpp:1790
msgid "Capabilities"
-msgstr "Capabilities"
+msgstr "Fonctionnalités"
#: src/slic3r/GUI/Tab.cpp:1795
msgid "Number of extruders of the printer."
-msgstr "Number of extruders of the printer."
+msgstr "Nombre d'extrudeurs de l'imprimante."
#: src/slic3r/GUI/Tab.cpp:1823
msgid "USB/Serial connection"
-msgstr "USB/Serial connection"
+msgstr "Port USB/Série"
#: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590
msgid "Serial port"
-msgstr "Serial port"
+msgstr "Port série"
#: src/slic3r/GUI/Tab.cpp:1829
msgid "Rescan serial ports"
-msgstr "Rescan serial ports"
+msgstr "Rescanner les ports série"
#: src/slic3r/GUI/Tab.cpp:1851
msgid "Connection to printer works correctly."
-msgstr "Connection to printer works correctly."
+msgstr "La connexion avec l'imprimante fonctionne correctement."
#: src/slic3r/GUI/Tab.cpp:1854
msgid "Connection failed."
-msgstr "Connection failed."
+msgstr "La connexion a échoué."
-#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2022
+#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2023
msgid "Print Host upload"
-msgstr "Print Host upload"
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128
msgid "Before layer change G-code"
-msgstr "Before layer change G-code"
+msgstr "G-Code avant changement de couche"
#: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030
msgid "After layer change G-code"
-msgstr "After layer change G-code"
+msgstr "G-Code après changement de couche"
#: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005
msgid "Tool change G-code"
-msgstr "Tool change G-code"
+msgstr "G-code de changement d'outil"
#: src/slic3r/GUI/Tab.cpp:1929
msgid "Between objects G-code (for sequential printing)"
-msgstr "Between objects G-code (for sequential printing)"
+msgstr "Entre le G-code des objets (pour une impression séquentielle)"
#: src/slic3r/GUI/Tab.cpp:1990
msgid "Display"
-msgstr "Display"
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:2001
msgid "Tilt"
-msgstr "Tilt"
+msgstr ""
#: src/slic3r/GUI/Tab.cpp:2002
msgid "Tilt time"
-msgstr "Tilt time"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3223
+#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3224
msgid "Corrections"
-msgstr "Corrections"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2074 src/slic3r/GUI/Tab.cpp:2136
+#: src/slic3r/GUI/Tab.cpp:2075 src/slic3r/GUI/Tab.cpp:2137
#: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086
#: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109
#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131
#: src/libslic3r/PrintConfig.cpp:1142
msgid "Machine limits"
-msgstr "Machine limits"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2088
+#: src/slic3r/GUI/Tab.cpp:2089
msgid "Values in this column are for Full Power mode"
-msgstr "Values in this column are for Full Power mode"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2089
+#: src/slic3r/GUI/Tab.cpp:2090
msgid "Full Power"
-msgstr "Full Power"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2094
+#: src/slic3r/GUI/Tab.cpp:2095
msgid "Values in this column are for Silent mode"
-msgstr "Values in this column are for Silent mode"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2095
+#: src/slic3r/GUI/Tab.cpp:2096
msgid "Silent"
-msgstr "Silent"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2103
+#: src/slic3r/GUI/Tab.cpp:2104
msgid "Maximum feedrates"
-msgstr "Maximum feedrates"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2108
+#: src/slic3r/GUI/Tab.cpp:2109
msgid "Maximum accelerations"
-msgstr "Maximum accelerations"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2115
+#: src/slic3r/GUI/Tab.cpp:2116
msgid "Jerk limits"
-msgstr "Jerk limits"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2120
+#: src/slic3r/GUI/Tab.cpp:2121
msgid "Minimum feedrates"
-msgstr "Minimum feedrates"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2158 src/slic3r/GUI/Tab.cpp:2166
+#: src/slic3r/GUI/Tab.cpp:2159 src/slic3r/GUI/Tab.cpp:2167
msgid "Single extruder MM setup"
-msgstr "Single extruder MM setup"
+msgstr "Réglage MM pour extrudeur unique"
-#: src/slic3r/GUI/Tab.cpp:2167
+#: src/slic3r/GUI/Tab.cpp:2168
msgid "Single extruder multimaterial parameters"
-msgstr "Single extruder multimaterial parameters"
+msgstr "Paramètres multimatériaux pour extrudeur unique"
-#: src/slic3r/GUI/Tab.cpp:2181 src/libslic3r/GCode/PreviewData.cpp:475
+#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/GCode/PreviewData.cpp:475
#, c-format
msgid "Extruder %d"
-msgstr "Extruder %d"
+msgstr "Extrudeur %d"
-#: src/slic3r/GUI/Tab.cpp:2188
+#: src/slic3r/GUI/Tab.cpp:2189
msgid "Layer height limits"
-msgstr "Layer height limits"
+msgstr "Limites de hauteur de couche"
-#: src/slic3r/GUI/Tab.cpp:2193
+#: src/slic3r/GUI/Tab.cpp:2194
msgid "Position (for multi-extruder printers)"
-msgstr "Position (for multi-extruder printers)"
+msgstr "Position (pour les imprimantes multi-extrudeurs)"
-#: src/slic3r/GUI/Tab.cpp:2196
+#: src/slic3r/GUI/Tab.cpp:2197
msgid "Retraction"
-msgstr "Retraction"
+msgstr "Rétraction"
-#: src/slic3r/GUI/Tab.cpp:2199
+#: src/slic3r/GUI/Tab.cpp:2200
msgid "Only lift Z"
-msgstr "Only lift Z"
+msgstr "Lever Z seulement"
-#: src/slic3r/GUI/Tab.cpp:2212
+#: src/slic3r/GUI/Tab.cpp:2213
msgid ""
"Retraction when tool is disabled (advanced settings for multi-extruder "
"setups)"
msgstr ""
-"Retraction when tool is disabled (advanced settings for multi-extruder "
-"setups)"
+"Rétractation lorsque l'outil est désactivé (réglages avancés pour les "
+"configurations multi-extrudeurs)"
-#: src/slic3r/GUI/Tab.cpp:2216
+#: src/slic3r/GUI/Tab.cpp:2217
msgid "Preview"
-msgstr "Preview"
+msgstr "Aperçu"
-#: src/slic3r/GUI/Tab.cpp:2352
+#: src/slic3r/GUI/Tab.cpp:2353
msgid ""
"The Wipe option is not available when using the Firmware Retraction mode.\n"
"\n"
"Shall I disable it in order to enable Firmware Retraction?"
msgstr ""
-"The Wipe option is not available when using the Firmware Retraction mode.\n"
+"L'option Nettoyage n'est pas disponible lorsque vous utilisez le mode "
+"Rétractation du Firmware.\n"
"\n"
-"Shall I disable it in order to enable Firmware Retraction?"
+"Voulez-vous que je la désactive pour permettre la Rétractation du Firmware ?"
-#: src/slic3r/GUI/Tab.cpp:2354
+#: src/slic3r/GUI/Tab.cpp:2355
msgid "Firmware Retraction"
-msgstr "Firmware Retraction"
+msgstr "Rétraction du Firmware"
-#: src/slic3r/GUI/Tab.cpp:2681
+#: src/slic3r/GUI/Tab.cpp:2682
#, c-format
msgid "Default preset (%s)"
-msgstr "Default preset (%s)"
+msgstr "Préréglages par défaut (%s)"
-#: src/slic3r/GUI/Tab.cpp:2682
+#: src/slic3r/GUI/Tab.cpp:2683
#, c-format
msgid "Preset (%s)"
-msgstr "Preset (%s)"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2699
+#: src/slic3r/GUI/Tab.cpp:2700
msgid "has the following unsaved changes:"
-msgstr "has the following unsaved changes:"
+msgstr "a les changements suivants non-enregistrés :"
-#: src/slic3r/GUI/Tab.cpp:2702
+#: src/slic3r/GUI/Tab.cpp:2703
msgid "is not compatible with printer"
-msgstr "is not compatible with printer"
+msgstr "n'est pas compatible avec l'imprimante"
-#: src/slic3r/GUI/Tab.cpp:2703
+#: src/slic3r/GUI/Tab.cpp:2704
msgid "is not compatible with print profile"
-msgstr "is not compatible with print profile"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2705
+#: src/slic3r/GUI/Tab.cpp:2706
msgid "and it has the following unsaved changes:"
-msgstr "and it has the following unsaved changes:"
+msgstr "et il y a les changements non sauvegardés suivants :"
-#: src/slic3r/GUI/Tab.cpp:2708
+#: src/slic3r/GUI/Tab.cpp:2709
msgid "Discard changes and continue anyway?"
-msgstr "Discard changes and continue anyway?"
+msgstr "Annuler les changements et continuer malgré tout ?"
-#: src/slic3r/GUI/Tab.cpp:2709
+#: src/slic3r/GUI/Tab.cpp:2710
msgid "Unsaved Changes"
-msgstr "Unsaved Changes"
+msgstr "Changements Non Sauvegardés"
-#: src/slic3r/GUI/Tab.cpp:2721
+#: src/slic3r/GUI/Tab.cpp:2722
msgid "Please check your object list before preset changing."
-msgstr "Please check your object list before preset changing."
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2801
+#: src/slic3r/GUI/Tab.cpp:2802
msgid "Copy"
-msgstr "Copy"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:2823
+#: src/slic3r/GUI/Tab.cpp:2824
msgid "The supplied name is empty. It can't be saved."
-msgstr "The supplied name is empty. It can't be saved."
+msgstr "Le nom proposé est vide. Sauvegarde impossible."
-#: src/slic3r/GUI/Tab.cpp:2828
+#: src/slic3r/GUI/Tab.cpp:2829
msgid "Cannot overwrite a system profile."
-msgstr "Cannot overwrite a system profile."
+msgstr "Impossible d'écraser un profil système."
-#: src/slic3r/GUI/Tab.cpp:2832
+#: src/slic3r/GUI/Tab.cpp:2833
msgid "Cannot overwrite an external profile."
-msgstr "Cannot overwrite an external profile."
+msgstr "Impossible d'écraser un profil externe."
-#: src/slic3r/GUI/Tab.cpp:2858
+#: src/slic3r/GUI/Tab.cpp:2859
msgid "remove"
-msgstr "remove"
+msgstr "retirer"
-#: src/slic3r/GUI/Tab.cpp:2858
+#: src/slic3r/GUI/Tab.cpp:2859
msgid "delete"
-msgstr "delete"
+msgstr "supprimer"
-#: src/slic3r/GUI/Tab.cpp:2859
+#: src/slic3r/GUI/Tab.cpp:2860
msgid "Are you sure you want to "
-msgstr "Are you sure you want to "
+msgstr "Êtes-vous sûr de vouloir "
-#: src/slic3r/GUI/Tab.cpp:2859
+#: src/slic3r/GUI/Tab.cpp:2860
msgid " the selected preset?"
-msgstr " the selected preset?"
+msgstr " le préréglage sélectionné ?"
-#: src/slic3r/GUI/Tab.cpp:2860
+#: src/slic3r/GUI/Tab.cpp:2861
msgid "Remove"
-msgstr "Remove"
+msgstr "Retirer"
-#: src/slic3r/GUI/Tab.cpp:2861
+#: src/slic3r/GUI/Tab.cpp:2862
msgid " Preset"
-msgstr " Preset"
+msgstr " Préréglage"
-#: src/slic3r/GUI/Tab.cpp:2989
+#: src/slic3r/GUI/Tab.cpp:2990
msgid ""
"LOCKED LOCK;indicates that the settings are the same as the system values "
"for the current option group"
msgstr ""
-"LOCKED LOCK;indicates that the settings are the same as the system values "
-"for the current option group"
+"VERROU VERROUILLE;indique que les paramètres sont les mêmes que les valeurs "
+"système pour le groupe d'options en cours"
-#: src/slic3r/GUI/Tab.cpp:2992
+#: src/slic3r/GUI/Tab.cpp:2993
msgid ""
"UNLOCKED LOCK;indicates that some settings were changed and are not equal to "
"the system values for the current option group.\n"
"Click the UNLOCKED LOCK icon to reset all settings for current option group "
"to the system values."
msgstr ""
-"UNLOCKED LOCK;indicates that some settings were changed and are not equal to "
-"the system values for the current option group.\n"
-"Click the UNLOCKED LOCK icon to reset all settings for current option group "
-"to the system values."
+"CADENAS OUVERT;indique que certains paramètres ont été modifiés et ne sont "
+"pas égaux aux valeurs du système pour le groupe d'options actuel.\n"
+"Cliquez sur l'icône CADENAS OUVERT pour régler tous les paramètres pour le "
+"groupe d'options actuel sur les valeurs du système."
-#: src/slic3r/GUI/Tab.cpp:2998
+#: src/slic3r/GUI/Tab.cpp:2999
msgid ""
"WHITE BULLET;for the left button: \tindicates a non-system preset,\n"
"for the right button: \tindicates that the settings hasn't been modified."
msgstr ""
-"WHITE BULLET;for the left button: \tindicates a non-system preset,\n"
-"for the right button: \tindicates that the settings hasn't been modified."
+"PUCE BLANCHE;pour le bouton gauche : indique un préréglage non-système, pour "
+"le bouton droit : indique que le réglage n'a pas été modifié."
-#: src/slic3r/GUI/Tab.cpp:3002
+#: src/slic3r/GUI/Tab.cpp:3003
msgid ""
"BACK ARROW;indicates that the settings were changed and are not equal to the "
"last saved preset for the current option group.\n"
"Click the BACK ARROW icon to reset all settings for the current option group "
"to the last saved preset."
msgstr ""
-"BACK ARROW;indicates that the settings were changed and are not equal to the "
-"last saved preset for the current option group.\n"
-"Click the BACK ARROW icon to reset all settings for the current option group "
-"to the last saved preset."
+"FLÈCHE ARRIÈRE;indique que les paramètres ont été changés et qu'ils ne sont "
+"pas identiques au dernier préréglage enregistré du groupe d'options en "
+"cours.\n"
+"Cliquez sur l'icône FLÈCHE ARRIÈRE pour restaurer tous les paramètres du "
+"groupe d'options en cours avec les valeurs du dernier préréglage enregistré."
-#: src/slic3r/GUI/Tab.cpp:3028
+#: src/slic3r/GUI/Tab.cpp:3029
msgid ""
"LOCKED LOCK icon indicates that the settings are the same as the system "
"values for the current option group"
msgstr ""
-"LOCKED LOCK icon indicates that the settings are the same as the system "
-"values for the current option group"
+"L'icône VERROU VERROUILLE indique que les paramètres sont les mêmes que les "
+"valeurs système pour le groupe d'options en cours"
-#: src/slic3r/GUI/Tab.cpp:3030
+#: src/slic3r/GUI/Tab.cpp:3031
msgid ""
"UNLOCKED LOCK icon indicates that some settings were changed and are not "
"equal to the system values for the current option group.\n"
"Click to reset all settings for current option group to the system values."
msgstr ""
-"UNLOCKED LOCK icon indicates that some settings were changed and are not "
-"equal to the system values for the current option group.\n"
-"Click to reset all settings for current option group to the system values."
+"L'icône CADENAS OUVERT indique que certains paramètres ont été modifiés et "
+"ne sont pas égaux aux valeurs du système pour le groupe d'options actuel.\n"
+"Cliquez pour régler tous les paramètres pour le groupe d'options actuel sur "
+"les valeurs du système."
-#: src/slic3r/GUI/Tab.cpp:3033
+#: src/slic3r/GUI/Tab.cpp:3034
msgid "WHITE BULLET icon indicates a non system preset."
-msgstr "WHITE BULLET icon indicates a non system preset."
+msgstr "L'icône en forme de PUCE BLANCHE indique un préréglage non-système."
-#: src/slic3r/GUI/Tab.cpp:3036
+#: src/slic3r/GUI/Tab.cpp:3037
msgid ""
"WHITE BULLET icon indicates that the settings are the same as in the last "
"saved preset for the current option group."
msgstr ""
-"WHITE BULLET icon indicates that the settings are the same as in the last "
-"saved preset for the current option group."
+"L'icône en forme de PUCE BLANCHE indique que les réglages sont identiques au "
+"dernier préréglage sauvegardé pour le groupe d'options actuel."
-#: src/slic3r/GUI/Tab.cpp:3038
+#: src/slic3r/GUI/Tab.cpp:3039
msgid ""
"BACK ARROW icon indicates that the settings were changed and are not equal "
"to the last saved preset for the current option group.\n"
"Click to reset all settings for the current option group to the last saved "
"preset."
msgstr ""
-"BACK ARROW icon indicates that the settings were changed and are not equal "
-"to the last saved preset for the current option group.\n"
-"Click to reset all settings for the current option group to the last saved "
-"preset."
+"L'icône FLÈCHE ARRIÈRE indique que les paramètres ont été changés et qu'ils "
+"ne sont pas identiques au dernier préréglage enregistré du groupe d'options "
+"en cours.\n"
+"Cliquez pour restaurer tous les paramètres du groupe d'options en cours avec "
+"les valeurs du dernier préréglage enregistré."
-#: src/slic3r/GUI/Tab.cpp:3044
+#: src/slic3r/GUI/Tab.cpp:3045
msgid ""
"LOCKED LOCK icon indicates that the value is the same as the system value."
msgstr ""
-"LOCKED LOCK icon indicates that the value is the same as the system value."
+"L'icône VERROU VERROUILLE indique que la valeur est la même que la valeur "
+"système."
-#: src/slic3r/GUI/Tab.cpp:3045
+#: src/slic3r/GUI/Tab.cpp:3046
msgid ""
"UNLOCKED LOCK icon indicates that the value was changed and is not equal to "
"the system value.\n"
"Click to reset current value to the system value."
msgstr ""
-"UNLOCKED LOCK icon indicates that the value was changed and is not equal to "
-"the system value.\n"
-"Click to reset current value to the system value."
+"L'icône CADENAS OUVERT indique que la valeur a été changée et n'est pas "
+"égale à la valeur du système.\n"
+"Cliquez pour régler la valeur actuelle sur les valeurs du système."
-#: src/slic3r/GUI/Tab.cpp:3051
+#: src/slic3r/GUI/Tab.cpp:3052
msgid ""
"WHITE BULLET icon indicates that the value is the same as in the last saved "
"preset."
msgstr ""
-"WHITE BULLET icon indicates that the value is the same as in the last saved "
-"preset."
+"L'icône PUCE BLANCHE indique que la valeur est la même que pour le dernier "
+"préréglage sauvegardé."
-#: src/slic3r/GUI/Tab.cpp:3052
+#: src/slic3r/GUI/Tab.cpp:3053
msgid ""
"BACK ARROW icon indicates that the value was changed and is not equal to the "
"last saved preset.\n"
"Click to reset current value to the last saved preset."
msgstr ""
-"BACK ARROW icon indicates that the value was changed and is not equal to the "
-"last saved preset.\n"
-"Click to reset current value to the last saved preset."
+"L'icône FLÈCHE ARRIÈRE indique que la valeur a été changée et qu'elle n'est "
+"pas identique au dernier préréglage enregistré.\n"
+"Cliquez pour restaurer la valeur à celle du dernier préréglage enregistré."
-#: src/slic3r/GUI/Tab.cpp:3152
+# Used in this context: _("Save ") + title + _(" as:")
+#: src/slic3r/GUI/Tab.cpp:3153
msgid " as:"
-msgstr " as:"
+msgstr " sous :"
-#: src/slic3r/GUI/Tab.cpp:3196
+#: src/slic3r/GUI/Tab.cpp:3197
msgid "the following postfix are not allowed:"
-msgstr "the following postfix are not allowed:"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3200
+#: src/slic3r/GUI/Tab.cpp:3201
msgid "The supplied name is not available."
-msgstr "The supplied name is not available."
+msgstr "Le nom proposé n'est pas disponible."
-#: src/slic3r/GUI/Tab.cpp:3213
+#: src/slic3r/GUI/Tab.cpp:3214
msgid "Material"
-msgstr "Material"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3215 src/slic3r/GUI/Tab.cpp:3305
+#: src/slic3r/GUI/Tab.cpp:3216 src/slic3r/GUI/Tab.cpp:3307
msgid "Layers"
-msgstr "Layers"
+msgstr "Couches"
-#: src/slic3r/GUI/Tab.cpp:3219
+#: src/slic3r/GUI/Tab.cpp:3220
msgid "Exposure"
-msgstr "Exposure"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3313
+#: src/slic3r/GUI/Tab.cpp:3315
msgid "Support head"
-msgstr "Support head"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3318
+#: src/slic3r/GUI/Tab.cpp:3320
msgid "Support pillar"
-msgstr "Support pillar"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3328
+#: src/slic3r/GUI/Tab.cpp:3330
msgid "Connection of the support sticks and junctions"
-msgstr "Connection of the support sticks and junctions"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3333
+#: src/slic3r/GUI/Tab.cpp:3335
msgid "Automatic generation"
-msgstr "Automatic generation"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3395
+#: src/slic3r/GUI/Tab.cpp:3397
msgid "Head penetration should not be greater than the head width."
-msgstr "Head penetration should not be greater than the head width."
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3396
+#: src/slic3r/GUI/Tab.cpp:3398
msgid "Invalid Head penetration"
-msgstr "Invalid Head penetration"
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3408
+#: src/slic3r/GUI/Tab.cpp:3410
msgid "Pinhead diameter should be smaller than the pillar diameter."
-msgstr "Pinhead diameter should be smaller than the pillar diameter."
+msgstr ""
-#: src/slic3r/GUI/Tab.cpp:3409
+#: src/slic3r/GUI/Tab.cpp:3411
msgid "Invalid pinhead diameter"
-msgstr "Invalid pinhead diameter"
+msgstr ""
#: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395
msgid "Print Settings"
-msgstr "Print Settings"
+msgstr "Réglages d'Impression"
#: src/slic3r/GUI/Tab.hpp:325
msgid "Filament Settings"
-msgstr "Filament Settings"
+msgstr "Réglages du filament"
#: src/slic3r/GUI/Tab.hpp:358
msgid "Printer Settings"
-msgstr "Printer Settings"
+msgstr "Réglages de l'Imprimante"
#: src/slic3r/GUI/Tab.hpp:381
msgid "Material Settings"
-msgstr "Material Settings"
+msgstr ""
#: src/slic3r/GUI/Tab.hpp:407
msgid "Save preset"
-msgstr "Save preset"
+msgstr "Enregistrer le préréglage"
-#: src/slic3r/GUI/UpdateDialogs.cpp:29
+#: src/slic3r/GUI/UpdateDialogs.cpp:30
msgid "Update available"
-msgstr "Update available"
+msgstr "Mise à jour disponible"
-#: src/slic3r/GUI/UpdateDialogs.cpp:29
-msgid "New version of Slic3r PE is available"
-msgstr "New version of Slic3r PE is available"
+#: src/slic3r/GUI/UpdateDialogs.cpp:30
+#, c-format
+msgid "New version of %s is available"
+msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:36
+#: src/slic3r/GUI/UpdateDialogs.cpp:37
msgid "To download, follow the link below."
-msgstr "To download, follow the link below."
+msgstr "Pour télécharger, suivez le lien ci-dessous."
-#: src/slic3r/GUI/UpdateDialogs.cpp:44
+#: src/slic3r/GUI/UpdateDialogs.cpp:45
msgid "Current version:"
-msgstr "Current version:"
+msgstr "Version actuelle :"
-#: src/slic3r/GUI/UpdateDialogs.cpp:46
+#: src/slic3r/GUI/UpdateDialogs.cpp:47
msgid "New version:"
-msgstr "New version:"
+msgstr "Nouvelle version :"
-#: src/slic3r/GUI/UpdateDialogs.cpp:54
+#: src/slic3r/GUI/UpdateDialogs.cpp:55
msgid "Don't notify about new releases any more"
-msgstr "Don't notify about new releases any more"
+msgstr "Ne plus me notifier au sujet des nouvelles publications"
-#: src/slic3r/GUI/UpdateDialogs.cpp:72 src/slic3r/GUI/UpdateDialogs.cpp:164
+#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:167
msgid "Configuration update"
-msgstr "Configuration update"
+msgstr "Mise à jour de la configuration"
-#: src/slic3r/GUI/UpdateDialogs.cpp:72
+#: src/slic3r/GUI/UpdateDialogs.cpp:73
msgid "Configuration update is available"
-msgstr "Configuration update is available"
+msgstr "Une mise à jour de la configuration est disponible"
-#: src/slic3r/GUI/UpdateDialogs.cpp:75
+#: src/slic3r/GUI/UpdateDialogs.cpp:76
msgid ""
"Would you like to install it?\n"
"\n"
@@ -3932,62 +3980,56 @@ msgid ""
"\n"
"Updated configuration bundles:"
msgstr ""
-"Would you like to install it?\n"
+"Voulez-vous l'installer ?\n"
"\n"
-"Note that a full configuration snapshot will be created first. It can then "
-"be restored at any time should there be a problem with the new version.\n"
+"Notez qu'un snapshot complet de la configuration sera sauvegardé d'abord. "
+"Elle peut être restaurée à tout moment si vous rencontrez un problème avec "
+"la nouvelle version.\n"
"\n"
-"Updated configuration bundles:"
+"Ensembles de configuration mis à jour :"
-#: src/slic3r/GUI/UpdateDialogs.cpp:111
+#: src/slic3r/GUI/UpdateDialogs.cpp:112
msgid "Slic3r incompatibility"
-msgstr "Slic3r incompatibility"
+msgstr "Incompatibilité avec Slic3r"
-#: src/slic3r/GUI/UpdateDialogs.cpp:111
+#: src/slic3r/GUI/UpdateDialogs.cpp:112
msgid "Slic3r configuration is incompatible"
-msgstr "Slic3r configuration is incompatible"
+msgstr "La configuration de Slic3r n'est pas compatible"
-#: src/slic3r/GUI/UpdateDialogs.cpp:114
+#: src/slic3r/GUI/UpdateDialogs.cpp:117
+#, c-format
msgid ""
-"This version of Slic3r PE is not compatible with currently installed "
-"configuration bundles.\n"
-"This probably happened as a result of running an older Slic3r PE after using "
-"a newer one.\n"
+"This version of %s is not compatible with currently installed configuration "
+"bundles.\n"
+"This probably happened as a result of running an older %s after using a "
+"newer one.\n"
"\n"
"You may either exit Slic3r and try again with a newer version, or you may re-"
"run the initial configuration. Doing so will create a backup snapshot of the "
"existing configuration before installing files compatible with this Slic3r.\n"
msgstr ""
-"This version of Slic3r PE is not compatible with currently installed "
-"configuration bundles.\n"
-"This probably happened as a result of running an older Slic3r PE after using "
-"a newer one.\n"
-"\n"
-"You may either exit Slic3r and try again with a newer version, or you may re-"
-"run the initial configuration. Doing so will create a backup snapshot of the "
-"existing configuration before installing files compatible with this Slic3r.\n"
-#: src/slic3r/GUI/UpdateDialogs.cpp:123
+#: src/slic3r/GUI/UpdateDialogs.cpp:126
#, c-format
-msgid "This Slic3r PE version: %s"
-msgstr "This Slic3r PE version: %s"
+msgid "This %s version: %s"
+msgstr ""
-#: src/slic3r/GUI/UpdateDialogs.cpp:128
+#: src/slic3r/GUI/UpdateDialogs.cpp:131
msgid "Incompatible bundles:"
-msgstr "Incompatible bundles:"
+msgstr "Lots incompatibles :"
-#: src/slic3r/GUI/UpdateDialogs.cpp:144
+#: src/slic3r/GUI/UpdateDialogs.cpp:147
msgid "Exit Slic3r"
-msgstr "Exit Slic3r"
+msgstr "Quitter Slic3r"
-#: src/slic3r/GUI/UpdateDialogs.cpp:147
+#: src/slic3r/GUI/UpdateDialogs.cpp:150
msgid "Re-configure"
-msgstr "Re-configure"
+msgstr "Reconfigurer"
-#: src/slic3r/GUI/UpdateDialogs.cpp:168
+#: src/slic3r/GUI/UpdateDialogs.cpp:171
#, c-format
msgid ""
-"Slic3r PE now uses an updated configuration structure.\n"
+"%s now uses an updated configuration structure.\n"
"\n"
"So called 'System presets' have been introduced, which hold the built-in "
"default settings for various printers. These System presets cannot be "
@@ -3999,25 +4041,14 @@ msgid ""
"Please proceed with the %s that follows to set up the new presets and to "
"choose whether to enable automatic preset updates."
msgstr ""
-"Slic3r PE now uses an updated configuration structure.\n"
-"\n"
-"So called 'System presets' have been introduced, which hold the built-in "
-"default settings for various printers. These System presets cannot be "
-"modified, instead, users now may create their own presets inheriting "
-"settings from one of the System presets.\n"
-"An inheriting preset may either inherit a particular value from its parent "
-"or override it with a customized value.\n"
-"\n"
-"Please proceed with the %s that follows to set up the new presets and to "
-"choose whether to enable automatic preset updates."
-#: src/slic3r/GUI/UpdateDialogs.cpp:184
+#: src/slic3r/GUI/UpdateDialogs.cpp:187
msgid "For more information please visit our wiki page:"
-msgstr "For more information please visit our wiki page:"
+msgstr "Pour plus d'informations, merci de visiter notre page wiki :"
#: src/slic3r/GUI/WipeTowerDialog.cpp:14
msgid "Ramming customization"
-msgstr "Ramming customization"
+msgstr "Personnalisation de l'expulsion"
#: src/slic3r/GUI/WipeTowerDialog.cpp:40
msgid ""
@@ -4031,75 +4062,77 @@ msgid ""
"This is an expert-level setting, incorrect adjustment will likely lead to "
"jams, extruder wheel grinding into filament etc."
msgstr ""
-"Ramming denotes the rapid extrusion just before a tool change in a single-"
-"extruder MM printer. Its purpose is to properly shape the end of the "
-"unloaded filament so it does not prevent insertion of the new filament and "
-"can itself be reinserted later. This phase is important and different "
-"materials can require different extrusion speeds to get the good shape. For "
-"this reason, the extrusion rates during ramming are adjustable.\n"
+"L'Expulsion décrit l'extrusion rapide qui a lieu juste avant un changement "
+"d'outil sur une imprimante MM à extrudeur unique. Le but est de donner une "
+"forme correcte au filament déchargé afin qu'il n'empêche pas l'insertion du "
+"nouveau filament et puisse être réinséré lui-même plus tard. Cette phase est "
+"importante et des matériaux différents peuvent nécessiter des vitesses "
+"d'extrusion différentes pour obtenir la bonne forme. De ce fait, les débits "
+"d'extrusion pendant l'expulsion sont ajustables.\n"
"\n"
-"This is an expert-level setting, incorrect adjustment will likely lead to "
-"jams, extruder wheel grinding into filament etc."
+"Ceci est un paramétrage de niveau expert, et un mauvais ajustement "
+"provoquera probablement des blocages, des accrochages de la roue de "
+"l'extrudeur sur le filament , etc ..."
#: src/slic3r/GUI/WipeTowerDialog.cpp:82
msgid "Total ramming time"
-msgstr "Total ramming time"
+msgstr "Durée totale de l'expulsion"
#: src/slic3r/GUI/WipeTowerDialog.cpp:84
msgid "Total rammed volume"
-msgstr "Total rammed volume"
+msgstr "Volume total expulsé"
#: src/slic3r/GUI/WipeTowerDialog.cpp:88
msgid "Ramming line width"
-msgstr "Ramming line width"
+msgstr "Largeur de la ligne d'expulsion"
#: src/slic3r/GUI/WipeTowerDialog.cpp:90
msgid "Ramming line spacing"
-msgstr "Ramming line spacing"
+msgstr "Espacement de la ligne de ramming"
#: src/slic3r/GUI/WipeTowerDialog.cpp:141
msgid "Wipe tower - Purging volume adjustment"
-msgstr "Wipe tower - Purging volume adjustment"
+msgstr "Tour de nettoyage - Ajustement du volume de purge"
#: src/slic3r/GUI/WipeTowerDialog.cpp:225
msgid ""
"Here you can adjust required purging volume (mm³) for any given pair of "
"tools."
msgstr ""
-"Here you can adjust required purging volume (mm³) for any given pair of "
-"tools."
+"Ici vous pouvez ajuster le volume de purge nécessaire (mm³) pour une paire "
+"d'outils donnée."
#: src/slic3r/GUI/WipeTowerDialog.cpp:226
msgid "Extruder changed to"
-msgstr "Extruder changed to"
+msgstr "Extrudeur changé à"
#: src/slic3r/GUI/WipeTowerDialog.cpp:234
msgid "unloaded"
-msgstr "unloaded"
+msgstr "déchargé"
#: src/slic3r/GUI/WipeTowerDialog.cpp:235
msgid "loaded"
-msgstr "loaded"
+msgstr "chargé"
#: src/slic3r/GUI/WipeTowerDialog.cpp:240
msgid "Tool #"
-msgstr "Tool #"
+msgstr "Outil #"
#: src/slic3r/GUI/WipeTowerDialog.cpp:247
msgid ""
"Total purging volume is calculated by summing two values below, depending on "
"which tools are loaded/unloaded."
msgstr ""
-"Total purging volume is calculated by summing two values below, depending on "
-"which tools are loaded/unloaded."
+"Le volume de purge total est calculé en additionnant les deux valeurs ci-"
+"dessous, en fonction des outils qui sont chargés/déchargés."
#: src/slic3r/GUI/WipeTowerDialog.cpp:248
msgid "Volume to purge (mm³) when the filament is being"
-msgstr "Volume to purge (mm³) when the filament is being"
+msgstr "Volume à purger (mm³) lorsque le filament est"
#: src/slic3r/GUI/WipeTowerDialog.cpp:262
msgid "From"
-msgstr "From"
+msgstr "De"
#: src/slic3r/GUI/WipeTowerDialog.cpp:327
msgid ""
@@ -4108,570 +4141,501 @@ msgid ""
"\n"
"Do you want to proceed?"
msgstr ""
-"Switching to simple settings will discard changes done in the advanced "
-"mode!\n"
+"Basculer vers les réglages simples annulera les changements effectués en "
+"mode avancé !\n"
"\n"
-"Do you want to proceed?"
+"Voulez-vous continuer ?"
#: src/slic3r/GUI/WipeTowerDialog.cpp:339
msgid "Show simplified settings"
-msgstr "Show simplified settings"
+msgstr "Afficher les réglages simplifiés"
#: src/slic3r/GUI/WipeTowerDialog.cpp:339
msgid "Show advanced settings"
-msgstr "Show advanced settings"
+msgstr "Afficher les réglages avancés"
-#: src/slic3r/GUI/wxExtensions.cpp:2398
+#: src/slic3r/GUI/wxExtensions.cpp:2409
#, c-format
msgid "Switch to the %s mode"
-msgstr "Switch to the %s mode"
+msgstr ""
-#: src/slic3r/GUI/wxExtensions.cpp:2399
+#: src/slic3r/GUI/wxExtensions.cpp:2410
#, c-format
msgid "Current mode is %s"
-msgstr "Current mode is %s"
+msgstr ""
#: src/slic3r/Utils/Duet.cpp:51
msgid "Connection to Duet works correctly."
-msgstr "Connection to Duet works correctly."
+msgstr ""
#: src/slic3r/Utils/Duet.cpp:56
msgid "Could not connect to Duet"
-msgstr "Could not connect to Duet"
+msgstr ""
#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154
msgid "Unknown error occured"
-msgstr "Unknown error occured"
+msgstr ""
#: src/slic3r/Utils/Duet.cpp:148
msgid "Wrong password"
-msgstr "Wrong password"
+msgstr ""
#: src/slic3r/Utils/Duet.cpp:151
msgid "Could not get resources to create a new connection"
-msgstr "Could not get resources to create a new connection"
+msgstr ""
#: src/slic3r/Utils/OctoPrint.cpp:69
#, c-format
msgid "Mismatched type of print host: %s"
-msgstr "Mismatched type of print host: %s"
+msgstr ""
#: src/slic3r/Utils/OctoPrint.cpp:84
msgid "Connection to OctoPrint works correctly."
-msgstr "Connection to OctoPrint works correctly."
+msgstr "La connexion avec OctoPrint fonctionne correctement."
#: src/slic3r/Utils/OctoPrint.cpp:90
msgid "Could not connect to OctoPrint"
-msgstr "Could not connect to OctoPrint"
+msgstr "Impossible de se connecter à OctoPrint"
#: src/slic3r/Utils/OctoPrint.cpp:90
msgid "Note: OctoPrint version at least 1.1.0 is required."
-msgstr "Note: OctoPrint version at least 1.1.0 is required."
+msgstr ""
+"Note : une version d'Octoprint supérieure ou égale à 1.1.0 est requise."
#: src/slic3r/Utils/OctoPrint.cpp:195
msgid "Connection to Prusa SLA works correctly."
-msgstr "Connection to Prusa SLA works correctly."
+msgstr ""
#: src/slic3r/Utils/OctoPrint.cpp:200
msgid "Could not connect to Prusa SLA"
-msgstr "Could not connect to Prusa SLA"
+msgstr ""
#: src/slic3r/Utils/PresetUpdater.cpp:583
#, c-format
msgid "requires min. %s and max. %s"
-msgstr "requires min. %s and max. %s"
+msgstr "nécessite min. %s et max. %s"
#: src/slic3r/Utils/PresetUpdater.cpp:588
#, c-format
msgid "requires min. %s"
-msgstr "requires min. %s"
+msgstr ""
#: src/slic3r/Utils/PresetUpdater.cpp:590
#, c-format
msgid "requires max. %s"
-msgstr "requires max. %s"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:219
#: src/slic3r/Utils/FixModelByWin10.cpp:359
msgid "Exporting source model"
-msgstr "Exporting source model"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:235
msgid "Failed loading the input model."
-msgstr "Failed loading the input model."
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:242
msgid "Repairing model by the Netfabb service"
-msgstr "Repairing model by the Netfabb service"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:248
msgid "Mesh repair failed."
-msgstr "Mesh repair failed."
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:251
#: src/slic3r/Utils/FixModelByWin10.cpp:378
msgid "Loading repaired model"
-msgstr "Loading repaired model"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:263
#: src/slic3r/Utils/FixModelByWin10.cpp:270
#: src/slic3r/Utils/FixModelByWin10.cpp:302
msgid "Saving mesh into the 3MF container failed."
-msgstr "Saving mesh into the 3MF container failed."
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:340
msgid "Model fixing"
-msgstr "Model fixing"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:341
msgid "Exporting model..."
-msgstr "Exporting model..."
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:368
msgid "Export of a temporary 3mf file failed"
-msgstr "Export of a temporary 3mf file failed"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:383
msgid "Import of the repaired 3mf file failed"
-msgstr "Import of the repaired 3mf file failed"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:385
msgid "Repaired 3MF file does not contain any object"
-msgstr "Repaired 3MF file does not contain any object"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:387
msgid "Repaired 3MF file contains more than one object"
-msgstr "Repaired 3MF file contains more than one object"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:389
msgid "Repaired 3MF file does not contain any volume"
-msgstr "Repaired 3MF file does not contain any volume"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:391
msgid "Repaired 3MF file contains more than one volume"
-msgstr "Repaired 3MF file contains more than one volume"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:400
msgid "Model repair finished"
-msgstr "Model repair finished"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:406
msgid "Model repair canceled"
-msgstr "Model repair canceled"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:423
msgid "Model repaired successfully"
-msgstr "Model repaired successfully"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:423
#: src/slic3r/Utils/FixModelByWin10.cpp:426
msgid "Model Repair by the Netfabb service"
-msgstr "Model Repair by the Netfabb service"
+msgstr ""
#: src/slic3r/Utils/FixModelByWin10.cpp:426
msgid "Model repair failed: \n"
-msgstr "Model repair failed: \n"
+msgstr ""
#: src/libslic3r/Zipper.cpp:35
msgid "undefined error"
-msgstr "undefined error"
+msgstr ""
#: src/libslic3r/Zipper.cpp:37
msgid "too many files"
-msgstr "too many files"
+msgstr ""
#: src/libslic3r/Zipper.cpp:39
msgid "file too large"
-msgstr "file too large"
+msgstr ""
#: src/libslic3r/Zipper.cpp:41
msgid "unsupported method"
-msgstr "unsupported method"
+msgstr ""
#: src/libslic3r/Zipper.cpp:43
msgid "unsupported encryption"
-msgstr "unsupported encryption"
+msgstr ""
#: src/libslic3r/Zipper.cpp:45
msgid "unsupported feature"
-msgstr "unsupported feature"
+msgstr ""
#: src/libslic3r/Zipper.cpp:47
msgid "failed finding central directory"
-msgstr "failed finding central directory"
+msgstr ""
#: src/libslic3r/Zipper.cpp:49
msgid "not a ZIP archive"
-msgstr "not a ZIP archive"
+msgstr ""
#: src/libslic3r/Zipper.cpp:51
msgid "invalid header or archive is corrupted"
-msgstr "invalid header or archive is corrupted"
+msgstr ""
#: src/libslic3r/Zipper.cpp:53
msgid "unsupported multidisk archive"
-msgstr "unsupported multidisk archive"
+msgstr ""
#: src/libslic3r/Zipper.cpp:55
msgid "decompression failed or archive is corrupted"
-msgstr "decompression failed or archive is corrupted"
+msgstr ""
#: src/libslic3r/Zipper.cpp:57
msgid "compression failed"
-msgstr "compression failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:59
msgid "unexpected decompressed size"
-msgstr "unexpected decompressed size"
+msgstr ""
#: src/libslic3r/Zipper.cpp:61
msgid "CRC-32 check failed"
-msgstr "CRC-32 check failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:63
msgid "unsupported central directory size"
-msgstr "unsupported central directory size"
+msgstr ""
#: src/libslic3r/Zipper.cpp:65
msgid "allocation failed"
-msgstr "allocation failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:67
msgid "file open failed"
-msgstr "file open failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:69
msgid "file create failed"
-msgstr "file create failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:71
msgid "file write failed"
-msgstr "file write failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:73
msgid "file read failed"
-msgstr "file read failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:75
msgid "file close failed"
-msgstr "file close failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:77
msgid "file seek failed"
-msgstr "file seek failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:79
msgid "file stat failed"
-msgstr "file stat failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:81
msgid "invalid parameter"
-msgstr "invalid parameter"
+msgstr ""
#: src/libslic3r/Zipper.cpp:83
msgid "invalid filename"
-msgstr "invalid filename"
+msgstr ""
#: src/libslic3r/Zipper.cpp:85
msgid "buffer too small"
-msgstr "buffer too small"
+msgstr ""
#: src/libslic3r/Zipper.cpp:87
msgid "internal error"
-msgstr "internal error"
+msgstr ""
#: src/libslic3r/Zipper.cpp:89
msgid "file not found"
-msgstr "file not found"
+msgstr ""
#: src/libslic3r/Zipper.cpp:91
msgid "archive is too large"
-msgstr "archive is too large"
+msgstr ""
#: src/libslic3r/Zipper.cpp:93
msgid "validation failed"
-msgstr "validation failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:95
msgid "write calledback failed"
-msgstr "write calledback failed"
+msgstr ""
#: src/libslic3r/Zipper.cpp:105
msgid "Error with zip archive"
-msgstr "Error with zip archive"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2153
-msgid "Starting"
-msgstr "Starting"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2154
-msgid "Filtering"
-msgstr "Filtering"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2155
-msgid "Generate pinheads"
-msgstr "Generate pinheads"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2156
-msgid "Classification"
-msgstr "Classification"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2157
-msgid "Routing to ground"
-msgstr "Routing to ground"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2158
-msgid "Routing supports to model surface"
-msgstr "Routing supports to model surface"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2159
-msgid "Cascading pillars"
-msgstr "Cascading pillars"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2160
-msgid "Processing small holes"
-msgstr "Processing small holes"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2161
-msgid "Done"
-msgstr "Done"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2162
-msgid "Abort"
-msgstr "Abort"
+msgstr ""
#: src/libslic3r/Print.cpp:1136
msgid "All objects are outside of the print volume."
-msgstr "All objects are outside of the print volume."
+msgstr ""
#: src/libslic3r/Print.cpp:1165
msgid "Some objects are too close; your extruder will collide with them."
-msgstr "Some objects are too close; your extruder will collide with them."
+msgstr ""
#: src/libslic3r/Print.cpp:1180
msgid ""
"Some objects are too tall and cannot be printed without extruder collisions."
msgstr ""
-"Some objects are too tall and cannot be printed without extruder collisions."
#: src/libslic3r/Print.cpp:1190
msgid "The Spiral Vase option can only be used when printing a single object."
-msgstr "The Spiral Vase option can only be used when printing a single object."
+msgstr ""
#: src/libslic3r/Print.cpp:1192
msgid ""
"The Spiral Vase option can only be used when printing single material "
"objects."
msgstr ""
-"The Spiral Vase option can only be used when printing single material "
-"objects."
#: src/libslic3r/Print.cpp:1198
msgid ""
"All extruders must have the same diameter for single extruder multimaterial "
"printer."
msgstr ""
-"All extruders must have the same diameter for single extruder multimaterial "
-"printer."
#: src/libslic3r/Print.cpp:1203
msgid ""
"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter "
"and Repetier G-code flavors."
msgstr ""
-"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter "
-"and Repetier G-code flavors."
#: src/libslic3r/Print.cpp:1205
msgid ""
"The Wipe Tower is currently only supported with the relative extruder "
"addressing (use_relative_e_distances=1)."
msgstr ""
-"The Wipe Tower is currently only supported with the relative extruder "
-"addressing (use_relative_e_distances=1)."
#: src/libslic3r/Print.cpp:1226
msgid ""
"The Wipe Tower is only supported for multiple objects if they have equal "
"layer heigths"
msgstr ""
-"The Wipe Tower is only supported for multiple objects if they have equal "
-"layer heigths"
#: src/libslic3r/Print.cpp:1228
msgid ""
"The Wipe Tower is only supported for multiple objects if they are printed "
"over an equal number of raft layers"
msgstr ""
-"The Wipe Tower is only supported for multiple objects if they are printed "
-"over an equal number of raft layers"
#: src/libslic3r/Print.cpp:1230
msgid ""
"The Wipe Tower is only supported for multiple objects if they are printed "
"with the same support_material_contact_distance"
msgstr ""
-"The Wipe Tower is only supported for multiple objects if they are printed "
-"with the same support_material_contact_distance"
#: src/libslic3r/Print.cpp:1232
msgid ""
"The Wipe Tower is only supported for multiple objects if they are sliced "
"equally."
msgstr ""
-"The Wipe Tower is only supported for multiple objects if they are sliced "
-"equally."
#: src/libslic3r/Print.cpp:1261
msgid ""
"The Wipe tower is only supported if all objects have the same layer height "
"profile"
msgstr ""
-"The Wipe tower is only supported if all objects have the same layer height "
-"profile"
#: src/libslic3r/Print.cpp:1271
msgid "The supplied settings will cause an empty print."
-msgstr "The supplied settings will cause an empty print."
+msgstr ""
#: src/libslic3r/Print.cpp:1288
msgid ""
"One or more object were assigned an extruder that the printer does not have."
msgstr ""
-"One or more object were assigned an extruder that the printer does not have."
-#: src/libslic3r/Print.cpp:1297
+#: src/libslic3r/Print.cpp:1298
msgid ""
"Printing with multiple extruders of differing nozzle diameters. If support "
"is to be printed with the current extruder (support_material_extruder == 0 "
"or support_material_interface_extruder == 0), all nozzles have to be of the "
"same diameter."
msgstr ""
-"Printing with multiple extruders of differing nozzle diameters. If support "
-"is to be printed with the current extruder (support_material_extruder == 0 "
-"or support_material_interface_extruder == 0), all nozzles have to be of the "
-"same diameter."
-#: src/libslic3r/Print.cpp:1305
+#: src/libslic3r/Print.cpp:1306
msgid ""
"For the Wipe Tower to work with the soluble supports, the support layers "
"need to be synchronized with the object layers."
msgstr ""
-"For the Wipe Tower to work with the soluble supports, the support layers "
-"need to be synchronized with the object layers."
-#: src/libslic3r/Print.cpp:1309
+#: src/libslic3r/Print.cpp:1310
msgid ""
"The Wipe Tower currently supports the non-soluble supports only if they are "
"printed with the current extruder without triggering a tool change. (both "
"support_material_extruder and support_material_interface_extruder need to be "
"set to 0)."
msgstr ""
-"The Wipe Tower currently supports the non-soluble supports only if they are "
-"printed with the current extruder without triggering a tool change. (both "
-"support_material_extruder and support_material_interface_extruder need to be "
-"set to 0)."
-#: src/libslic3r/Print.cpp:1316
+#: src/libslic3r/Print.cpp:1317
msgid "first_layer_height"
-msgstr "first_layer_height"
+msgstr ""
-#: src/libslic3r/Print.cpp:1331
+#: src/libslic3r/Print.cpp:1332
msgid "First layer height can't be greater than nozzle diameter"
-msgstr "First layer height can't be greater than nozzle diameter"
+msgstr ""
-#: src/libslic3r/Print.cpp:1335
+#: src/libslic3r/Print.cpp:1336
msgid "Layer height can't be greater than nozzle diameter"
-msgstr "Layer height can't be greater than nozzle diameter"
+msgstr ""
#: src/libslic3r/SLAPrint.cpp:55
msgid "Slicing model"
-msgstr "Slicing model"
+msgstr ""
-#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:801
+#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:804
msgid "Generating support points"
-msgstr "Generating support points"
+msgstr ""
#: src/libslic3r/SLAPrint.cpp:57
msgid "Generating support tree"
-msgstr "Generating support tree"
+msgstr ""
#: src/libslic3r/SLAPrint.cpp:58
msgid "Generating pad"
-msgstr "Generating pad"
+msgstr ""
#: src/libslic3r/SLAPrint.cpp:59
msgid "Slicing supports"
-msgstr "Slicing supports"
+msgstr ""
#: src/libslic3r/SLAPrint.cpp:71
msgid "Merging slices and calculating statistics"
-msgstr "Merging slices and calculating statistics"
+msgstr ""
#: src/libslic3r/SLAPrint.cpp:72
msgid "Rasterizing layers"
-msgstr "Rasterizing layers"
+msgstr ""
-#: src/libslic3r/SLAPrint.cpp:605
+#: src/libslic3r/SLAPrint.cpp:606
msgid ""
"Cannot proceed without support points! Add support points or disable support "
"generation."
msgstr ""
-"Cannot proceed without support points! Add support points or disable support "
-"generation."
-#: src/libslic3r/SLAPrint.cpp:617
+#: src/libslic3r/SLAPrint.cpp:618
msgid "Elevation is too low for object."
-msgstr "Elevation is too low for object."
+msgstr ""
-#: src/libslic3r/SLAPrint.cpp:699
+#. TRN To be shown at the status bar on SLA slicing error.
+#: src/libslic3r/SLAPrint.cpp:701
msgid "Slicing had to be stopped due to an internal error."
-msgstr "Slicing had to be stopped due to an internal error."
+msgstr ""
-#: src/libslic3r/SLAPrint.cpp:849 src/libslic3r/SLAPrint.cpp:859
-#: src/libslic3r/SLAPrint.cpp:907
+#: src/libslic3r/SLAPrint.cpp:852 src/libslic3r/SLAPrint.cpp:862
+#: src/libslic3r/SLAPrint.cpp:910
msgid "Visualizing supports"
-msgstr "Visualizing supports"
+msgstr ""
-#: src/libslic3r/SLAPrint.cpp:1449
+#: src/libslic3r/SLAPrint.cpp:1452
msgid "Slicing done"
-msgstr "Slicing done"
+msgstr ""
#: src/libslic3r/PrintBase.cpp:65
msgid "Failed processing of the output_filename_format template."
-msgstr "Failed processing of the output_filename_format template."
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43
msgid "Printer technology"
-msgstr "Printer technology"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:50
msgid "Bed shape"
-msgstr "Bed shape"
+msgstr "Forme du plateau"
#: src/libslic3r/PrintConfig.cpp:57
msgid ""
"This setting controls the height (and thus the total number) of the slices/"
"layers. Thinner layers give better accuracy but take more time to print."
msgstr ""
-"This setting controls the height (and thus the total number) of the slices/"
-"layers. Thinner layers give better accuracy but take more time to print."
+"Cette option contrôle l'épaisseur (et donc le nombre total) des couches. Des "
+"couches plus fines donneront une meilleure précision mais l'impression sera "
+"plus longue."
#: src/libslic3r/PrintConfig.cpp:64
msgid "Max print height"
-msgstr "Max print height"
+msgstr "Hauteur maximale d'impression"
#: src/libslic3r/PrintConfig.cpp:65
msgid ""
"Set this to the maximum height that can be reached by your extruder while "
"printing."
msgstr ""
-"Set this to the maximum height that can be reached by your extruder while "
-"printing."
+"Réglez cette valeur sur la hauteur maximum que peut atteindre votre "
+"extrudeur au cours de l'impression."
#: src/libslic3r/PrintConfig.cpp:71
msgid "Slice gap closing radius"
-msgstr "Slice gap closing radius"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:73
msgid ""
@@ -4679,37 +4643,30 @@ msgid ""
"triangle mesh slicing. The gap closing operation may reduce the final print "
"resolution, therefore it is advisable to keep the value reasonably low."
msgstr ""
-"Cracks smaller than 2x gap closing radius are being filled during the "
-"triangle mesh slicing. The gap closing operation may reduce the final print "
-"resolution, therefore it is advisable to keep the value reasonably low."
#: src/libslic3r/PrintConfig.cpp:81
msgid "Hostname, IP or URL"
-msgstr "Hostname, IP or URL"
+msgstr "Nom d'hôte, IP ou URL"
#: src/libslic3r/PrintConfig.cpp:82
msgid ""
"Slic3r can upload G-code files to a printer host. This field should contain "
"the hostname, IP address or URL of the printer host instance."
msgstr ""
-"Slic3r can upload G-code files to a printer host. This field should contain "
-"the hostname, IP address or URL of the printer host instance."
#: src/libslic3r/PrintConfig.cpp:88
msgid "API Key / Password"
-msgstr "API Key / Password"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:89
msgid ""
"Slic3r can upload G-code files to a printer host. This field should contain "
"the API Key or the password required for authentication."
msgstr ""
-"Slic3r can upload G-code files to a printer host. This field should contain "
-"the API Key or the password required for authentication."
#: src/libslic3r/PrintConfig.cpp:111
msgid "Avoid crossing perimeters"
-msgstr "Avoid crossing perimeters"
+msgstr "Éviter de traverser les périmètres"
#: src/libslic3r/PrintConfig.cpp:112
msgid ""
@@ -4717,25 +4674,27 @@ msgid ""
"is mostly useful with Bowden extruders which suffer from oozing. This "
"feature slows down both the print and the G-code generation."
msgstr ""
-"Optimize travel moves in order to minimize the crossing of perimeters. This "
-"is mostly useful with Bowden extruders which suffer from oozing. This "
-"feature slows down both the print and the G-code generation."
+"Optimiser les déplacements afin de minimiser le franchissement de "
+"périmètres. Ceci est surtout utile avec les extruder Bowden qui sont sujets "
+"aux coulures. Cette fonctionnalité ralentit l'impression et la génération du "
+"G-code."
#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1976
msgid "Other layers"
-msgstr "Other layers"
+msgstr "Autres couches"
#: src/libslic3r/PrintConfig.cpp:120
msgid ""
"Bed temperature for layers after the first one. Set this to zero to disable "
"bed temperature control commands in the output."
msgstr ""
-"Bed temperature for layers after the first one. Set this to zero to disable "
-"bed temperature control commands in the output."
+"Température du plateau pour les couches après la première. Mettez ceci à "
+"zéro pour désactiver les commandes de contrôle de température du plateau "
+"dans la sortie."
#: src/libslic3r/PrintConfig.cpp:122
msgid "Bed temperature"
-msgstr "Bed temperature"
+msgstr "Température du plateau"
#: src/libslic3r/PrintConfig.cpp:129
msgid ""
@@ -4743,13 +4702,13 @@ msgid ""
"Note that you can use placeholder variables for all Slic3r settings as well "
"as [layer_num] and [layer_z]."
msgstr ""
-"This custom code is inserted at every layer change, right before the Z move. "
-"Note that you can use placeholder variables for all Slic3r settings as well "
-"as [layer_num] and [layer_z]."
+"Ce code personnalisé est inséré à chaque changement de couche, juste avant "
+"le mouvement en Z. Notez que vous pouvez utiliser des variables génériques "
+"pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]."
#: src/libslic3r/PrintConfig.cpp:139
msgid "Between objects G-code"
-msgstr "Between objects G-code"
+msgstr "Entre le G-code des objets"
#: src/libslic3r/PrintConfig.cpp:140
msgid ""
@@ -4760,32 +4719,34 @@ msgid ""
"variables for all Slic3r settings, so you can put a \"M109 "
"S[first_layer_temperature]\" command wherever you want."
msgstr ""
-"This code is inserted between objects when using sequential printing. By "
-"default extruder and bed temperature are reset using non-wait command; "
-"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r "
-"will not add temperature commands. Note that you can use placeholder "
-"variables for all Slic3r settings, so you can put a \"M109 "
-"S[first_layer_temperature]\" command wherever you want."
+"Ce code est inséré entre des objets lorsque vous utilisez l'impression "
+"séquentielle. Par défaut la température de l'extrudeur et du plateau est "
+"réinitialisée et utilise la commande sans-attente ; toutefois si des "
+"commandes M104, M109, M140 ou M190 sont détectées dans ce code personnalisé, "
+"Slic3r n'ajoutera pas de commandes de température. Notez que vous pouvez "
+"utiliser des variables génériques pour tous les réglages de Slic3r, donc "
+"vous pouvez entrer une commande \"M109S[first_layer_temperature]\" où vous "
+"le souhaitez."
#: src/libslic3r/PrintConfig.cpp:150
msgid "Number of solid layers to generate on bottom surfaces."
-msgstr "Number of solid layers to generate on bottom surfaces."
+msgstr "Nombre de couches solides à générer sur les surfaces inférieures."
#: src/libslic3r/PrintConfig.cpp:151
msgid "Bottom solid layers"
-msgstr "Bottom solid layers"
+msgstr "Couches solides inférieures"
#: src/libslic3r/PrintConfig.cpp:156
msgid "Bridge"
-msgstr "Bridge"
+msgstr "Pont"
#: src/libslic3r/PrintConfig.cpp:157
msgid ""
"This is the acceleration your printer will use for bridges. Set zero to "
"disable acceleration control for bridges."
msgstr ""
-"This is the acceleration your printer will use for bridges. Set zero to "
-"disable acceleration control for bridges."
+"L'accélération qui sera utilisée par votre imprimante pour les ponts. Régler "
+"sur zéro pour désactiver l'accélération pour les ponts."
#: src/libslic3r/PrintConfig.cpp:159 src/libslic3r/PrintConfig.cpp:302
#: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:935
@@ -4796,7 +4757,7 @@ msgstr "mm/s²"
#: src/libslic3r/PrintConfig.cpp:165
msgid "Bridging angle"
-msgstr "Bridging angle"
+msgstr "Angle du pont"
#: src/libslic3r/PrintConfig.cpp:167
msgid ""
@@ -4804,35 +4765,36 @@ msgid ""
"calculated automatically. Otherwise the provided angle will be used for all "
"bridges. Use 180° for zero angle."
msgstr ""
-"Bridging angle override. If left to zero, the bridging angle will be "
-"calculated automatically. Otherwise the provided angle will be used for all "
-"bridges. Use 180° for zero angle."
+"Contournement de l'angle du pont. Si laissé à zéro, l'angle du pont sera "
+"calculé automatiquement. Sinon, l'angle fourni sera utilisé pour tous les "
+"ponts. Utilisez 180° pour un angle nul."
#: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:732
#: src/libslic3r/PrintConfig.cpp:1569 src/libslic3r/PrintConfig.cpp:1579
#: src/libslic3r/PrintConfig.cpp:1807 src/libslic3r/PrintConfig.cpp:1961
-#: src/libslic3r/PrintConfig.cpp:2459
+#: src/libslic3r/PrintConfig.cpp:2461
msgid "°"
msgstr "°"
#: src/libslic3r/PrintConfig.cpp:176
msgid "Bridges fan speed"
-msgstr "Bridges fan speed"
+msgstr "Vitesse du ventilateur pour les ponts"
#: src/libslic3r/PrintConfig.cpp:177
msgid "This fan speed is enforced during all bridges and overhangs."
-msgstr "This fan speed is enforced during all bridges and overhangs."
+msgstr ""
+"Cette vitesse de ventilateur sera utilisée pour les ponts et les surplombs."
#: src/libslic3r/PrintConfig.cpp:178 src/libslic3r/PrintConfig.cpp:744
#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1216
#: src/libslic3r/PrintConfig.cpp:1461 src/libslic3r/PrintConfig.cpp:2258
-#: src/libslic3r/PrintConfig.cpp:2498
+#: src/libslic3r/PrintConfig.cpp:2500
msgid "%"
msgstr "%"
#: src/libslic3r/PrintConfig.cpp:185
msgid "Bridge flow ratio"
-msgstr "Bridge flow ratio"
+msgstr "Ratio de flux pour les ponts"
#: src/libslic3r/PrintConfig.cpp:187
msgid ""
@@ -4841,18 +4803,18 @@ msgid ""
"settings are usually good and you should experiment with cooling (use a fan) "
"before tweaking this."
msgstr ""
-"This factor affects the amount of plastic for bridging. You can decrease it "
-"slightly to pull the extrudates and prevent sagging, although default "
-"settings are usually good and you should experiment with cooling (use a fan) "
-"before tweaking this."
+"Ce facteur affecte la quantité de plastique utilisée pour les ponts. Vous "
+"pouvez le diminuer légèrement pour éviter l'affaissement. La valeur par "
+"défaut est généralement suffisante et vous devriez expérimenter le "
+"refroidissement (utiliser un ventilateur) avant de modifier ceci."
#: src/libslic3r/PrintConfig.cpp:197
msgid "Bridges"
-msgstr "Bridges"
+msgstr "Ponts"
#: src/libslic3r/PrintConfig.cpp:199
msgid "Speed for printing bridges."
-msgstr "Speed for printing bridges."
+msgstr "Vitesse d'impression des ponts."
#: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:576
#: src/libslic3r/PrintConfig.cpp:584 src/libslic3r/PrintConfig.cpp:593
@@ -4869,19 +4831,19 @@ msgstr "mm/s"
#: src/libslic3r/PrintConfig.cpp:207
msgid "Brim width"
-msgstr "Brim width"
+msgstr "Largeur de la bordure"
#: src/libslic3r/PrintConfig.cpp:208
msgid ""
"Horizontal width of the brim that will be printed around each object on the "
"first layer."
msgstr ""
-"Horizontal width of the brim that will be printed around each object on the "
-"first layer."
+"Largeur horizontale de la bordure qui sera imprimée autour de chaque objet "
+"sur la première couche."
#: src/libslic3r/PrintConfig.cpp:215
msgid "Clip multi-part objects"
-msgstr "Clip multi-part objects"
+msgstr "Dissocier les objets multi-pièces"
#: src/libslic3r/PrintConfig.cpp:216
msgid ""
@@ -4889,21 +4851,22 @@ msgid ""
"the overlapping object parts one by the other (2nd part will be clipped by "
"the 1st, 3rd part will be clipped by the 1st and 2nd etc)."
msgstr ""
-"When printing multi-material objects, this settings will make slic3r to clip "
-"the overlapping object parts one by the other (2nd part will be clipped by "
-"the 1st, 3rd part will be clipped by the 1st and 2nd etc)."
+"Lorsque vous imprimez des objets multi-matériaux, ce réglage fera en sorte "
+"que Slic3r rattache ensemble les parties de l'objet qui se superposent (la "
+"2e partie sera rattachée à la 1ere, la 3e partie sera rattachée à la 1ere et "
+"la 2e, etc...)."
#: src/libslic3r/PrintConfig.cpp:223
msgid "Colorprint height"
-msgstr "Colorprint height"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:224
msgid "Heights at which a filament change is to occur. "
-msgstr "Heights at which a filament change is to occur. "
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:234
msgid "Compatible printers condition"
-msgstr "Compatible printers condition"
+msgstr "Condition de compatibilité des imprimantes"
#: src/libslic3r/PrintConfig.cpp:235
msgid ""
@@ -4911,13 +4874,13 @@ msgid ""
"profile. If this expression evaluates to true, this profile is considered "
"compatible with the active printer profile."
msgstr ""
-"A boolean expression using the configuration values of an active printer "
-"profile. If this expression evaluates to true, this profile is considered "
-"compatible with the active printer profile."
+"Une expression booléenne utilisant les valeurs de configuration d'un profil "
+"d'imprimante actif. Si cette expression est évaluée comme vraie, ce profil "
+"est considéré comme compatible avec le profil d'imprimante actif."
#: src/libslic3r/PrintConfig.cpp:249
msgid "Compatible print profiles condition"
-msgstr "Compatible print profiles condition"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:250
msgid ""
@@ -4925,13 +4888,10 @@ msgid ""
"profile. If this expression evaluates to true, this profile is considered "
"compatible with the active print profile."
msgstr ""
-"A boolean expression using the configuration values of an active print "
-"profile. If this expression evaluates to true, this profile is considered "
-"compatible with the active print profile."
#: src/libslic3r/PrintConfig.cpp:267
msgid "Complete individual objects"
-msgstr "Complete individual objects"
+msgstr "Compléter les objets individuels"
#: src/libslic3r/PrintConfig.cpp:268
msgid ""
@@ -4940,39 +4900,44 @@ msgid ""
"This feature is useful to avoid the risk of ruined prints. Slic3r should "
"warn and prevent you from extruder collisions, but beware."
msgstr ""
-"When printing multiple objects or copies, this feature will complete each "
-"object before moving onto next one (and starting it from its bottom layer). "
-"This feature is useful to avoid the risk of ruined prints. Slic3r should "
-"warn and prevent you from extruder collisions, but beware."
+"Lorsque vous imprimez plusieurs objets ou copies, ce réglage permet de "
+"terminer un objet avant de passer au suivant (en repartant de sa première "
+"couche). Cette fonction est utile pour éviter les risques d'impressions "
+"gâchées. Slic3r doit vous avertir et éviter les collisions entre les objets "
+"et l'extrudeur, mais soyez vigilant."
#: src/libslic3r/PrintConfig.cpp:276
msgid "Enable auto cooling"
-msgstr "Enable auto cooling"
+msgstr "Activer le refroidissement automatique"
#: src/libslic3r/PrintConfig.cpp:277
msgid ""
"This flag enables the automatic cooling logic that adjusts print speed and "
"fan speed according to layer printing time."
msgstr ""
-"This flag enables the automatic cooling logic that adjusts print speed and "
-"fan speed according to layer printing time."
+"Cette option active la logique de refroidissement automatique, qui ajuste la "
+"vitesse d'impression et celle du ventilateur en fonction du temps "
+"d'impression de la couche."
#: src/libslic3r/PrintConfig.cpp:282
msgid "Cooling tube position"
-msgstr "Cooling tube position"
+msgstr "Position du tube de refroidissement"
#: src/libslic3r/PrintConfig.cpp:283
msgid "Distance of the center-point of the cooling tube from the extruder tip "
msgstr ""
-"Distance of the center-point of the cooling tube from the extruder tip "
+"Distance entre le point central du tube de refroidissement et la pointe de "
+"l'extrudeur. "
#: src/libslic3r/PrintConfig.cpp:290
msgid "Cooling tube length"
-msgstr "Cooling tube length"
+msgstr "Longueur du tube de refroidissement"
#: src/libslic3r/PrintConfig.cpp:291
msgid "Length of the cooling tube to limit space for cooling moves inside it "
-msgstr "Length of the cooling tube to limit space for cooling moves inside it "
+msgstr ""
+"Longueur du tube de refroidissement pour limiter l'espace pour les "
+"déplacements de refroidissement à l'intérieur de celui-ci "
#: src/libslic3r/PrintConfig.cpp:299
msgid ""
@@ -4980,13 +4945,13 @@ msgid ""
"specific acceleration values are used (perimeter/infill). Set zero to "
"prevent resetting acceleration at all."
msgstr ""
-"This is the acceleration your printer will be reset to after the role-"
-"specific acceleration values are used (perimeter/infill). Set zero to "
-"prevent resetting acceleration at all."
+"Accélération à laquelle votre imprimante sera réinitialisée suite à une "
+"modification de l'accélération des fonctions spécifiques (périmètre/"
+"remplissage). Régler sur zéro pour ne pas réinitialiser l'accélération."
#: src/libslic3r/PrintConfig.cpp:308
msgid "Default filament profile"
-msgstr "Default filament profile"
+msgstr "Profil de filament par défaut"
#: src/libslic3r/PrintConfig.cpp:309
msgid ""
@@ -4994,83 +4959,85 @@ msgid ""
"selection of the current printer profile, this filament profile will be "
"activated."
msgstr ""
-"Default filament profile associated with the current printer profile. On "
-"selection of the current printer profile, this filament profile will be "
-"activated."
+"Profil de filament par défaut associé au profil d'imprimante courant. En "
+"sélectionnant le profil d'imprimante courant, ce profil de filament sera "
+"activé."
#: src/libslic3r/PrintConfig.cpp:315
msgid "Default print profile"
-msgstr "Default print profile"
+msgstr "Profil de filament par défaut"
-#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2337
-#: src/libslic3r/PrintConfig.cpp:2348
+#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2339
+#: src/libslic3r/PrintConfig.cpp:2350
msgid ""
"Default print profile associated with the current printer profile. On "
"selection of the current printer profile, this print profile will be "
"activated."
msgstr ""
-"Default print profile associated with the current printer profile. On "
-"selection of the current printer profile, this print profile will be "
-"activated."
+"Profil de filament par défaut associé au profil d'imprimante courant. En "
+"sélectionnant le profil d'imprimante courant, ce profil de filament sera "
+"activé."
#: src/libslic3r/PrintConfig.cpp:322
msgid "Disable fan for the first"
-msgstr "Disable fan for the first"
+msgstr "Désactiver le ventilateur pour le(s) première(s)"
#: src/libslic3r/PrintConfig.cpp:323
msgid ""
"You can set this to a positive value to disable fan at all during the first "
"layers, so that it does not make adhesion worse."
msgstr ""
-"You can set this to a positive value to disable fan at all during the first "
-"layers, so that it does not make adhesion worse."
+"Vous pouvez régler ce paramètre sur une valeur positive pour désactiver "
+"complètement le ventilateur pendant les premières couches, afin de ne pas "
+"rendre l'adhérence plus difficile."
#: src/libslic3r/PrintConfig.cpp:325 src/libslic3r/PrintConfig.cpp:945
#: src/libslic3r/PrintConfig.cpp:1434 src/libslic3r/PrintConfig.cpp:1619
#: src/libslic3r/PrintConfig.cpp:1680 src/libslic3r/PrintConfig.cpp:1843
#: src/libslic3r/PrintConfig.cpp:1888
msgid "layers"
-msgstr "layers"
+msgstr "couches"
#: src/libslic3r/PrintConfig.cpp:332
msgid "Don't support bridges"
-msgstr "Don't support bridges"
+msgstr "Ne pas supporter les ponts"
#: src/libslic3r/PrintConfig.cpp:334
msgid ""
"Experimental option for preventing support material from being generated "
"under bridged areas."
msgstr ""
-"Experimental option for preventing support material from being generated "
-"under bridged areas."
+"Option expérimentale pour empêcher la génération de support sous les ponts."
#: src/libslic3r/PrintConfig.cpp:340
msgid "Distance between copies"
-msgstr "Distance between copies"
+msgstr "Distance entre les copies"
#: src/libslic3r/PrintConfig.cpp:341
msgid "Distance used for the auto-arrange feature of the plater."
-msgstr "Distance used for the auto-arrange feature of the plater."
+msgstr "Distance utilisée par la fonction d'agencement automatique du plateau."
#: src/libslic3r/PrintConfig.cpp:348
msgid "Elephant foot compensation"
-msgstr "Elephant foot compensation"
+msgstr "Compensation de l'effet patte d'éléphant"
#: src/libslic3r/PrintConfig.cpp:350
msgid ""
"The first layer will be shrunk in the XY plane by the configured value to "
"compensate for the 1st layer squish aka an Elephant Foot effect."
msgstr ""
-"The first layer will be shrunk in the XY plane by the configured value to "
-"compensate for the 1st layer squish aka an Elephant Foot effect."
+"La première couche sera réduite sur le plan XY selon la valeur configurée "
+"afin de compenser l'écrasement de la première couche également connu sous le "
+"nom d'effet Pied d'Éléphant."
#: src/libslic3r/PrintConfig.cpp:359
msgid ""
"This end procedure is inserted at the end of the output file. Note that you "
"can use placeholder variables for all Slic3r settings."
msgstr ""
-"This end procedure is inserted at the end of the output file. Note that you "
-"can use placeholder variables for all Slic3r settings."
+"Cette procédure de fin est insérée à la fin du fichier de sortie. Notez que "
+"vous pouvez utiliser des variables génériques pour tous les réglages de "
+"Slic3r."
#: src/libslic3r/PrintConfig.cpp:369
msgid ""
@@ -5079,71 +5046,68 @@ msgid ""
"Slic3r settings. If you have multiple extruders, the gcode is processed in "
"extruder order."
msgstr ""
-"This end procedure is inserted at the end of the output file, before the "
-"printer end gcode. Note that you can use placeholder variables for all "
-"Slic3r settings. If you have multiple extruders, the gcode is processed in "
-"extruder order."
+"Cette procédure de fin est insérée à la fin du fichier de sortie, avant le "
+"gcode de fin de l'imprimante. Notez que vous pouvez utiliser des variables "
+"génériques pour tous les réglages de Slic3r. Si vous avez plusieurs "
+"extrudeurs, le gcode sera traité suivant l'ordre des extrudeurs."
#: src/libslic3r/PrintConfig.cpp:379
msgid "Ensure vertical shell thickness"
-msgstr "Ensure vertical shell thickness"
+msgstr "S'assurer de l'épaisseur de la coque verticale"
#: src/libslic3r/PrintConfig.cpp:381
msgid ""
"Add solid infill near sloping surfaces to guarantee the vertical shell "
"thickness (top+bottom solid layers)."
msgstr ""
-"Add solid infill near sloping surfaces to guarantee the vertical shell "
-"thickness (top+bottom solid layers)."
+"Ajouter un remplissage plein à proximité des surfaces inclinées pour "
+"garantir une épaisseur de coque verticale (couches solides supérieures"
+"+inférieures)."
#: src/libslic3r/PrintConfig.cpp:387
msgid "Top fill pattern"
-msgstr "Top fill pattern"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:389
msgid ""
"Fill pattern for top infill. This only affects the top visible layer, and "
"not its adjacent solid shells."
msgstr ""
-"Fill pattern for top infill. This only affects the top visible layer, and "
-"not its adjacent solid shells."
#: src/libslic3r/PrintConfig.cpp:397 src/libslic3r/PrintConfig.cpp:795
#: src/libslic3r/PrintConfig.cpp:1921
msgid "Rectilinear"
-msgstr "Rectilinear"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:801
msgid "Concentric"
-msgstr "Concentric"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:805
msgid "Hilbert Curve"
-msgstr "Hilbert Curve"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806
msgid "Archimedean Chords"
-msgstr "Archimedean Chords"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807
msgid "Octagram Spiral"
-msgstr "Octagram Spiral"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:408
msgid "Bottom fill pattern"
-msgstr "Bottom fill pattern"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:409
msgid ""
"Fill pattern for bottom infill. This only affects the bottom external "
"visible layer, and not its adjacent solid shells."
msgstr ""
-"Fill pattern for bottom infill. This only affects the bottom external "
-"visible layer, and not its adjacent solid shells."
#: src/libslic3r/PrintConfig.cpp:414 src/libslic3r/PrintConfig.cpp:424
msgid "External perimeters"
-msgstr "External perimeters"
+msgstr "Périmètres externes"
#: src/libslic3r/PrintConfig.cpp:416
msgid ""
@@ -5152,17 +5116,19 @@ msgid ""
"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage "
"(for example 200%), it will be computed over layer height."
msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for external "
-"perimeters. If left zero, default extrusion width will be used if set, "
-"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage "
-"(for example 200%), it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour les périmètres extérieurs. Si la valeur reste sur "
+"zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la "
+"valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée "
+"en pourcentage (par exemple : 200%), elle sera calculée par rapport à la "
+"hauteur de couche."
#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:834
#: src/libslic3r/PrintConfig.cpp:966 src/libslic3r/PrintConfig.cpp:1353
#: src/libslic3r/PrintConfig.cpp:1691 src/libslic3r/PrintConfig.cpp:1864
#: src/libslic3r/PrintConfig.cpp:2022
msgid "mm or % (leave 0 for default)"
-msgstr "mm or % (leave 0 for default)"
+msgstr "mm ou % (laissez à 0 pour la valeur par défaut)"
#: src/libslic3r/PrintConfig.cpp:426
msgid ""
@@ -5170,42 +5136,43 @@ msgid ""
"visible ones). If expressed as percentage (for example: 80%) it will be "
"calculated on the perimeters speed setting above. Set to zero for auto."
msgstr ""
-"This separate setting will affect the speed of external perimeters (the "
-"visible ones). If expressed as percentage (for example: 80%) it will be "
-"calculated on the perimeters speed setting above. Set to zero for auto."
+"Ce réglage distinct affectera la vitesse des périmètres extérieurs (ceux qui "
+"sont visibles). Si cette valeur est exprimée en pourcentage (par exemple: "
+"80%) elle sera calculée d'après le réglage de la vitesse de périmètre "
+"susmentionnée. Réglez sur zéro pour un ajustement automatique."
#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855
#: src/libslic3r/PrintConfig.cpp:1650 src/libslic3r/PrintConfig.cpp:1701
#: src/libslic3r/PrintConfig.cpp:1907 src/libslic3r/PrintConfig.cpp:2034
msgid "mm/s or %"
-msgstr "mm/s or %"
+msgstr "mm/s ou %"
#: src/libslic3r/PrintConfig.cpp:436
msgid "External perimeters first"
-msgstr "External perimeters first"
+msgstr "Périmètres externes en premier"
#: src/libslic3r/PrintConfig.cpp:438
msgid ""
"Print contour perimeters from the outermost one to the innermost one instead "
"of the default inverse order."
msgstr ""
-"Print contour perimeters from the outermost one to the innermost one instead "
-"of the default inverse order."
+"Imprimer les périmètres de l'extérieur vers l'intérieur au lieu de l'ordre "
+"par défaut qui est inversé."
#: src/libslic3r/PrintConfig.cpp:444
msgid "Extra perimeters if needed"
-msgstr "Extra perimeters if needed"
+msgstr "Périmètres supplémentaires si nécessaire"
#: src/libslic3r/PrintConfig.cpp:446
-#, no-c-format
+#, fuzzy, c-format
msgid ""
"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r "
"keeps adding perimeters, until more than 70% of the loop immediately above "
"is supported."
msgstr ""
-"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r "
-"keeps adding perimeters, until more than 70% of the loop immediately above "
-"is supported."
+"Ajouter plus de périmètres si nécessaire pour éviter des trous dans les "
+"parois inclinées. Slic3r ajoute des périmètres, jusqu'à ce que plus de "
+"70% de la boucle immédiatement au-dessus soit supportée."
#: src/libslic3r/PrintConfig.cpp:456
msgid ""
@@ -5213,9 +5180,9 @@ msgid ""
"This value overrides perimeter and infill extruders, but not the support "
"extruders."
msgstr ""
-"The extruder to use (unless more specific extruder settings are specified). "
-"This value overrides perimeter and infill extruders, but not the support "
-"extruders."
+"L'extrudeur à utiliser (à moins que d'autres réglages d'extrudeur plus "
+"spécifiques soient spécifiés). Cette valeur se substitue aux extrudeurs de "
+"périmètre et de remplissage, mais pas aux extrudeurs de support."
#: src/libslic3r/PrintConfig.cpp:468
msgid ""
@@ -5224,14 +5191,15 @@ msgid ""
"cylinder around your extruder, and it represents the maximum depth the "
"extruder can peek before colliding with other printed objects."
msgstr ""
-"Set this to the vertical distance between your nozzle tip and (usually) the "
-"X carriage rods. In other words, this is the height of the clearance "
-"cylinder around your extruder, and it represents the maximum depth the "
-"extruder can peek before colliding with other printed objects."
+"Paramétrez ceci avec la distance verticale entre la pointe de la buse et "
+"(habituellement) les tiges du chariot de l'axe X. En d'autres termes, il "
+"s'agit de la hauteur du cylindre de dégagement autour de l'extrudeur, et "
+"elle représente la profondeur maximum à laquelle peut descendre l'extrudeur "
+"avant d'entrer en collision avec d'autres objets imprimés."
#: src/libslic3r/PrintConfig.cpp:478
msgid "Radius"
-msgstr "Radius"
+msgstr "Rayon"
#: src/libslic3r/PrintConfig.cpp:479
msgid ""
@@ -5239,21 +5207,24 @@ msgid ""
"not centered, choose the largest value for safety. This setting is used to "
"check for collisions and to display the graphical preview in the plater."
msgstr ""
-"Set this to the clearance radius around your extruder. If the extruder is "
-"not centered, choose the largest value for safety. This setting is used to "
-"check for collisions and to display the graphical preview in the plater."
+"Paramétrez ceci avec le rayon de dégagement autour de l'extrudeur. Si "
+"l'extrudeur n'est pas centré, choisissez la plus grande valeur par sécurité. "
+"Ce réglage est utilisé pour vérifier les collisions et afficher l'aperçu "
+"graphique sur le plateau."
#: src/libslic3r/PrintConfig.cpp:489
msgid "Extruder Color"
-msgstr "Extruder Color"
+msgstr "Couleur de l'extrudeur"
#: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:550
msgid "This is only used in the Slic3r interface as a visual help."
-msgstr "This is only used in the Slic3r interface as a visual help."
+msgstr ""
+"Ceci est uniquement utilisé dans l'interface de Slic3r comme indication "
+"visuelle."
#: src/libslic3r/PrintConfig.cpp:496
msgid "Extruder offset"
-msgstr "Extruder offset"
+msgstr "Décalage de l'extrudeur"
#: src/libslic3r/PrintConfig.cpp:497
msgid ""
@@ -5262,26 +5233,26 @@ msgid ""
"of each extruder with respect to the first one. It expects positive "
"coordinates (they will be subtracted from the XY coordinate)."
msgstr ""
-"If your firmware doesn't handle the extruder displacement you need the G-"
-"code to take it into account. This option lets you specify the displacement "
-"of each extruder with respect to the first one. It expects positive "
-"coordinates (they will be subtracted from the XY coordinate)."
+"Si le firmware de votre imprimante ne gère pas le décalage de l'extrudeur, "
+"c'est au G-code d'en tenir compte. Cette option vous permet de spécifier le "
+"décalage de chaque extrudeur par rapport au premier. Des valeurs positives "
+"sont attendues (elles seront soustraites des coordonnées XY)."
#: src/libslic3r/PrintConfig.cpp:506
msgid "Extrusion axis"
-msgstr "Extrusion axis"
+msgstr "Axe d'extrusion"
#: src/libslic3r/PrintConfig.cpp:507
msgid ""
"Use this option to set the axis letter associated to your printer's extruder "
"(usually E but some printers use A)."
msgstr ""
-"Use this option to set the axis letter associated to your printer's extruder "
-"(usually E but some printers use A)."
+"Utiliser cette option pour indiquer la lettre utilisée par l'extrudeur de "
+"votre imprimante (habituellement E, mais certaines imprimantes utilisent A)."
#: src/libslic3r/PrintConfig.cpp:512
msgid "Extrusion multiplier"
-msgstr "Extrusion multiplier"
+msgstr "Multiplicateur d'extrusion"
#: src/libslic3r/PrintConfig.cpp:513
msgid ""
@@ -5290,14 +5261,15 @@ msgid ""
"Usual values are between 0.9 and 1.1. If you think you need to change this "
"more, check filament diameter and your firmware E steps."
msgstr ""
-"This factor changes the amount of flow proportionally. You may need to tweak "
-"this setting to get nice surface finish and correct single wall widths. "
-"Usual values are between 0.9 and 1.1. If you think you need to change this "
-"more, check filament diameter and your firmware E steps."
+"Ce facteur modifie proportionnellement le flux d'extrusion. Vous pouvez "
+"avoir besoin de modifier ceci afin d'obtenir un rendu de surface net et une "
+"largeur correcte pour les murs uniques. Les valeurs habituelles vont de 0.9 "
+"à 1.1. Si vous pensez devoir changer davantage cette valeur, vérifiez le "
+"diamètre de votre filament et les E Steps dans le firmware."
#: src/libslic3r/PrintConfig.cpp:521
msgid "Default extrusion width"
-msgstr "Default extrusion width"
+msgstr "Largeur d'extrusion par défaut"
#: src/libslic3r/PrintConfig.cpp:523
msgid ""
@@ -5307,31 +5279,33 @@ msgid ""
"expressed as percentage (for example: 230%), it will be computed over layer "
"height."
msgstr ""
-"Set this to a non-zero value to allow a manual extrusion width. If left to "
-"zero, Slic3r derives extrusion widths from the nozzle diameter (see the "
-"tooltips for perimeter extrusion width, infill extrusion width etc). If "
-"expressed as percentage (for example: 230%), it will be computed over layer "
-"height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion. Si la valeur reste sur zéro, Slic3r calcule la largeur "
+"d’extrusion en se basant sur le diamètre de la buse (voir l’info-bulle "
+"concernant la largeur d’extrusion du périmètre, la largeur d’extrusion du "
+"remplissage, etc…). Si la valeur est exprimée en pourcentage (par exemple : "
+"230%), elle sera calculée par rapport à la hauteur de couche."
#: src/libslic3r/PrintConfig.cpp:527
msgid "mm or % (leave 0 for auto)"
-msgstr "mm or % (leave 0 for auto)"
+msgstr "mm ou % (laissez à 0 pour le mode automatique)"
#: src/libslic3r/PrintConfig.cpp:532
msgid "Keep fan always on"
-msgstr "Keep fan always on"
+msgstr "Garder le ventilateur toujours actif"
#: src/libslic3r/PrintConfig.cpp:533
msgid ""
"If this is enabled, fan will never be disabled and will be kept running at "
"least at its minimum speed. Useful for PLA, harmful for ABS."
msgstr ""
-"If this is enabled, fan will never be disabled and will be kept running at "
-"least at its minimum speed. Useful for PLA, harmful for ABS."
+"Si ceci est activé, le ventilateur ne sera jamais désactivé et sera maintenu "
+"au moins à sa vitesse minimum. Utile pour le PLA, mais risqué pour l'ABS."
#: src/libslic3r/PrintConfig.cpp:538
msgid "Enable fan if layer print time is below"
-msgstr "Enable fan if layer print time is below"
+msgstr ""
+"Activer le ventilateur si le temps d'impression de la couche est inférieur à"
#: src/libslic3r/PrintConfig.cpp:539
msgid ""
@@ -5339,29 +5313,29 @@ msgid ""
"enabled and its speed will be calculated by interpolating the minimum and "
"maximum speeds."
msgstr ""
-"If layer print time is estimated below this number of seconds, fan will be "
-"enabled and its speed will be calculated by interpolating the minimum and "
-"maximum speeds."
+"Si le temps d'impression estimé de la couche est inférieur à ce nombre de "
+"secondes, le ventilateur sera activé et sa vitesse calculée par "
+"interpolation des vitesses minimum et maximum."
#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:1637
msgid "approximate seconds"
-msgstr "approximate seconds"
+msgstr "secondes approximatives"
#: src/libslic3r/PrintConfig.cpp:549
msgid "Color"
-msgstr "Color"
+msgstr "Couleur"
#: src/libslic3r/PrintConfig.cpp:555
msgid "Filament notes"
-msgstr "Filament notes"
+msgstr "Notes du filament"
#: src/libslic3r/PrintConfig.cpp:556
msgid "You can put your notes regarding the filament here."
-msgstr "You can put your notes regarding the filament here."
+msgstr "Vous pouvez saisir vos remarques concernant le filament ici."
#: src/libslic3r/PrintConfig.cpp:564 src/libslic3r/PrintConfig.cpp:1181
msgid "Max volumetric speed"
-msgstr "Max volumetric speed"
+msgstr "Vitesse volumétrique maximale"
#: src/libslic3r/PrintConfig.cpp:565
msgid ""
@@ -5369,9 +5343,9 @@ msgid ""
"volumetric speed of a print to the minimum of print and filament volumetric "
"speed. Set to zero for no limit."
msgstr ""
-"Maximum volumetric speed allowed for this filament. Limits the maximum "
-"volumetric speed of a print to the minimum of print and filament volumetric "
-"speed. Set to zero for no limit."
+"Vitesse volumétrique maximale autorisée pour ce filament. Limite la vitesse "
+"volumétrique d'une impression au minimum des vitesses volumétriques "
+"d'impression et de filament. Mettez à zéro pour enlever la limite."
#: src/libslic3r/PrintConfig.cpp:568 src/libslic3r/PrintConfig.cpp:1184
msgid "mm³/s"
@@ -5379,45 +5353,44 @@ msgstr "mm³/s"
#: src/libslic3r/PrintConfig.cpp:574
msgid "Loading speed"
-msgstr "Loading speed"
+msgstr "Vitesse de chargement"
#: src/libslic3r/PrintConfig.cpp:575
msgid "Speed used for loading the filament on the wipe tower. "
-msgstr "Speed used for loading the filament on the wipe tower. "
+msgstr "Vitesse utilisée pour charger le filament sur la tour de nettoyage. "
#: src/libslic3r/PrintConfig.cpp:582
msgid "Loading speed at the start"
-msgstr "Loading speed at the start"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:583
msgid "Speed used at the very beginning of loading phase. "
-msgstr "Speed used at the very beginning of loading phase. "
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:590
msgid "Unloading speed"
-msgstr "Unloading speed"
+msgstr "Vitesse de déchargement"
#: src/libslic3r/PrintConfig.cpp:591
msgid ""
"Speed used for unloading the filament on the wipe tower (does not affect "
"initial part of unloading just after ramming). "
msgstr ""
-"Speed used for unloading the filament on the wipe tower (does not affect "
-"initial part of unloading just after ramming). "
+"Vitesse utilisée pour décharger le filament sur la tour de nettoyage "
+"(n'affecte pas l'étape initiale de déchargement juste après l'expulsion). "
#: src/libslic3r/PrintConfig.cpp:599
msgid "Unloading speed at the start"
-msgstr "Unloading speed at the start"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:600
msgid ""
"Speed used for unloading the tip of the filament immediately after ramming. "
msgstr ""
-"Speed used for unloading the tip of the filament immediately after ramming. "
#: src/libslic3r/PrintConfig.cpp:607
msgid "Delay after unloading"
-msgstr "Delay after unloading"
+msgstr "Délai après le déchargement"
#: src/libslic3r/PrintConfig.cpp:608
msgid ""
@@ -5425,33 +5398,31 @@ msgid ""
"toolchanges with flexible materials that may need more time to shrink to "
"original dimensions. "
msgstr ""
-"Time to wait after the filament is unloaded. May help to get reliable "
-"toolchanges with flexible materials that may need more time to shrink to "
-"original dimensions. "
+"Temps d'attente nécessaire après que le filament ait été déchargé. Peut "
+"aider à obtenir des changements d'outils fiables avec des matériaux flexible "
+"qui ont besoin de plus de temps pour revenir à leurs dimensions originales. "
#: src/libslic3r/PrintConfig.cpp:617
msgid "Number of cooling moves"
-msgstr "Number of cooling moves"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:618
msgid ""
"Filament is cooled by being moved back and forth in the cooling tubes. "
"Specify desired number of these moves "
msgstr ""
-"Filament is cooled by being moved back and forth in the cooling tubes. "
-"Specify desired number of these moves "
#: src/libslic3r/PrintConfig.cpp:626
msgid "Speed of the first cooling move"
-msgstr "Speed of the first cooling move"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:627
msgid "Cooling moves are gradually accelerating beginning at this speed. "
-msgstr "Cooling moves are gradually accelerating beginning at this speed. "
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:634
msgid "Minimal purge on wipe tower"
-msgstr "Minimal purge on wipe tower"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:635
msgid ""
@@ -5461,27 +5432,22 @@ msgid ""
"object, Slic3r will always prime this amount of material into the wipe tower "
"to produce successive infill or sacrificial object extrusions reliably."
msgstr ""
-"After a tool change, the exact position of the newly loaded filament inside "
-"the nozzle may not be known, and the filament pressure is likely not yet "
-"stable. Before purging the print head into an infill or a sacrificial "
-"object, Slic3r will always prime this amount of material into the wipe tower "
-"to produce successive infill or sacrificial object extrusions reliably."
#: src/libslic3r/PrintConfig.cpp:639
msgid "mm³"
-msgstr "mm³"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:645
msgid "Speed of the last cooling move"
-msgstr "Speed of the last cooling move"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:646
msgid "Cooling moves are gradually accelerating towards this speed. "
-msgstr "Cooling moves are gradually accelerating towards this speed. "
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:653
msgid "Filament load time"
-msgstr "Filament load time"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:654
msgid ""
@@ -5489,25 +5455,22 @@ msgid ""
"filament during a tool change (when executing the T code). This time is "
"added to the total print time by the G-code time estimator."
msgstr ""
-"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new "
-"filament during a tool change (when executing the T code). This time is "
-"added to the total print time by the G-code time estimator."
#: src/libslic3r/PrintConfig.cpp:661
msgid "Ramming parameters"
-msgstr "Ramming parameters"
+msgstr "Paramètres de l'expulsion"
#: src/libslic3r/PrintConfig.cpp:662
msgid ""
"This string is edited by RammingDialog and contains ramming specific "
"parameters "
msgstr ""
-"This string is edited by RammingDialog and contains ramming specific "
-"parameters "
+"Cette chaine est éditée par RammingDialog et contient les paramètres "
+"spécifiques d'expulsion "
#: src/libslic3r/PrintConfig.cpp:668
msgid "Filament unload time"
-msgstr "Filament unload time"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:669
msgid ""
@@ -5515,9 +5478,6 @@ msgid ""
"filament during a tool change (when executing the T code). This time is "
"added to the total print time by the G-code time estimator."
msgstr ""
-"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a "
-"filament during a tool change (when executing the T code). This time is "
-"added to the total print time by the G-code time estimator."
#: src/libslic3r/PrintConfig.cpp:677
msgid ""
@@ -5525,13 +5485,13 @@ msgid ""
"caliper and do multiple measurements along the filament, then compute the "
"average."
msgstr ""
-"Enter your filament diameter here. Good precision is required, so use a "
-"caliper and do multiple measurements along the filament, then compute the "
-"average."
+"Entrez le diamètre de votre filament ici. Une bonne précision est requise, "
+"utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le "
+"long du filament."
#: src/libslic3r/PrintConfig.cpp:684
msgid "Density"
-msgstr "Density"
+msgstr "Densité"
#: src/libslic3r/PrintConfig.cpp:685
msgid ""
@@ -5540,10 +5500,11 @@ msgid ""
"the length to volume. Better is to calculate the volume directly through "
"displacement."
msgstr ""
-"Enter your filament density here. This is only for statistical information. "
-"A decent way is to weigh a known length of filament and compute the ratio of "
-"the length to volume. Better is to calculate the volume directly through "
-"displacement."
+"Entrez ici la densité de votre filament. Ceci est uniquement pour des "
+"informations statistiques. Un bon moyen d'obtenir cette valeur est de peser "
+"un morceau de filament d'une longueur connue et de calculer le rapport de sa "
+"longueur par son poids. Le mieux est de calculer le volume directement par "
+"déplacement."
#: src/libslic3r/PrintConfig.cpp:688
msgid "g/cm³"
@@ -5551,35 +5512,36 @@ msgstr "g/cm³"
#: src/libslic3r/PrintConfig.cpp:693
msgid "Filament type"
-msgstr "Filament type"
+msgstr "Type de filament"
#: src/libslic3r/PrintConfig.cpp:694
msgid "The filament material type for use in custom G-codes."
-msgstr "The filament material type for use in custom G-codes."
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:710
msgid "Soluble material"
-msgstr "Soluble material"
+msgstr "Matériau soluble"
#: src/libslic3r/PrintConfig.cpp:711
msgid "Soluble material is most likely used for a soluble support."
-msgstr "Soluble material is most likely used for a soluble support."
+msgstr ""
+"Il est probable qu'un matériau soluble soit utilisé pour un support soluble."
#: src/libslic3r/PrintConfig.cpp:717
msgid ""
"Enter your filament cost per kg here. This is only for statistical "
"information."
msgstr ""
-"Enter your filament cost per kg here. This is only for statistical "
-"information."
+"Entrez le coût par Kg de votre filament. Ceci est uniquement pour "
+"l'information statistique."
#: src/libslic3r/PrintConfig.cpp:718
msgid "money/kg"
-msgstr "money/kg"
+msgstr "€/kg"
#: src/libslic3r/PrintConfig.cpp:727
msgid "Fill angle"
-msgstr "Fill angle"
+msgstr "Angle du remplissage"
#: src/libslic3r/PrintConfig.cpp:729
msgid ""
@@ -5587,78 +5549,80 @@ msgid ""
"this. Bridges will be infilled using the best direction Slic3r can detect, "
"so this setting does not affect them."
msgstr ""
-"Default base angle for infill orientation. Cross-hatching will be applied to "
-"this. Bridges will be infilled using the best direction Slic3r can detect, "
-"so this setting does not affect them."
+"Angle de base par défaut pour l'orientation du remplissage. Des croisements "
+"seront appliqués à cette valeur. Les ponts seront remplis avec la meilleure "
+"direction que Slic3r peut détecter, ce réglage ne les affecteront donc pas."
#: src/libslic3r/PrintConfig.cpp:741
msgid "Fill density"
-msgstr "Fill density"
+msgstr "Densité du remplissage"
#: src/libslic3r/PrintConfig.cpp:743
msgid "Density of internal infill, expressed in the range 0% - 100%."
-msgstr "Density of internal infill, expressed in the range 0% - 100%."
+msgstr "Densité du remplissage interne, exprimée en pourcentage de 0% à 100%."
#: src/libslic3r/PrintConfig.cpp:778
msgid "Fill pattern"
-msgstr "Fill pattern"
+msgstr "Motif de remplissage"
#: src/libslic3r/PrintConfig.cpp:780
msgid "Fill pattern for general low-density infill."
-msgstr "Fill pattern for general low-density infill."
+msgstr "Motif pour les remplissages de faible densité."
#: src/libslic3r/PrintConfig.cpp:796
msgid "Grid"
-msgstr "Grid"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:797
msgid "Triangles"
-msgstr "Triangles"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:798
msgid "Stars"
-msgstr "Stars"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:799
msgid "Cubic"
-msgstr "Cubic"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:800
msgid "Line"
-msgstr "Line"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:802 src/libslic3r/PrintConfig.cpp:1923
msgid "Honeycomb"
-msgstr "Honeycomb"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:803
msgid "3D Honeycomb"
-msgstr "3D Honeycomb"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:804
msgid "Gyroid"
-msgstr "Gyroid"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:811 src/libslic3r/PrintConfig.cpp:820
#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:861
msgid "First layer"
-msgstr "First layer"
+msgstr "Première couche"
#: src/libslic3r/PrintConfig.cpp:812
msgid ""
"This is the acceleration your printer will use for first layer. Set zero to "
"disable acceleration control for first layer."
msgstr ""
-"This is the acceleration your printer will use for first layer. Set zero to "
-"disable acceleration control for first layer."
+"L'accélération que l'imprimante utilisera pour la première couche. Régler "
+"sur zéro afin de désactiver le contrôle de l'accélération pour la première "
+"couche."
#: src/libslic3r/PrintConfig.cpp:821
msgid ""
"Heated build plate temperature for the first layer. Set this to zero to "
"disable bed temperature control commands in the output."
msgstr ""
-"Heated build plate temperature for the first layer. Set this to zero to "
-"disable bed temperature control commands in the output."
+"Température du plateau chauffant pour la première couche. Mettez ceci à zéro "
+"pour désactiver les commandes de contrôle de température du plateau dans la "
+"sortie."
#: src/libslic3r/PrintConfig.cpp:830
msgid ""
@@ -5667,14 +5631,16 @@ msgid ""
"expressed as percentage (for example 120%) it will be computed over first "
"layer height. If set to zero, it will use the default extrusion width."
msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for first "
-"layer. You can use this to force fatter extrudates for better adhesion. If "
-"expressed as percentage (for example 120%) it will be computed over first "
-"layer height. If set to zero, it will use the default extrusion width."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour la première couche. Vous pouvez procéder ainsi pour "
+"obtenir des extrudats plus épais afin d’avoir une meilleure adhérence. Si la "
+"valeur est exprimée en pourcentage (par exemple : 120%), elle sera calculée "
+"par rapport à la hauteur de la première couche. Si elle est réglée sur zéro, "
+"elle utilisera la largeur d’extrusion par défaut."
#: src/libslic3r/PrintConfig.cpp:840
msgid "First layer height"
-msgstr "First layer height"
+msgstr "Hauteur de la première couche"
#: src/libslic3r/PrintConfig.cpp:842
msgid ""
@@ -5683,19 +5649,20 @@ msgid ""
"plates. This can be expressed as an absolute value or as a percentage (for "
"example: 150%) over the default layer height."
msgstr ""
-"When printing with very low layer heights, you might still want to print a "
-"thicker bottom layer to improve adhesion and tolerance for non perfect build "
-"plates. This can be expressed as an absolute value or as a percentage (for "
-"example: 150%) over the default layer height."
+"Lors d'une impression avec de très faibles épaisseurs de couche, vous pouvez "
+"choisir d'imprimer une première couche plus épaisse pour améliorer "
+"l'adhérence et la tolérance aux plateaux imparfaits. Ce réglage peut être "
+"exprimé comme une valeur absolue ou un pourcentage (par exemple 150%) par "
+"rapport à l'épaisseur de couche par défaut."
#: src/libslic3r/PrintConfig.cpp:846 src/libslic3r/PrintConfig.cpp:991
#: src/libslic3r/PrintConfig.cpp:1796
msgid "mm or %"
-msgstr "mm or %"
+msgstr "mm ou %"
#: src/libslic3r/PrintConfig.cpp:851
msgid "First layer speed"
-msgstr "First layer speed"
+msgstr "Vitesse de la première couche"
#: src/libslic3r/PrintConfig.cpp:852
msgid ""
@@ -5703,9 +5670,10 @@ msgid ""
"the print moves of the first layer, regardless of their type. If expressed "
"as a percentage (for example: 40%) it will scale the default speeds."
msgstr ""
-"If expressed as absolute value in mm/s, this speed will be applied to all "
-"the print moves of the first layer, regardless of their type. If expressed "
-"as a percentage (for example: 40%) it will scale the default speeds."
+"Si exprimée avec une valeur absolue en mm/s, cette vitesse sera appliquée à "
+"tous les déplacements d'impression de la première couche, quel que soit leur "
+"type. Si exprimée comme un pourcentage (par exemple 40%), cela modulera la "
+"vitesse par défaut."
#: src/libslic3r/PrintConfig.cpp:862
msgid ""
@@ -5713,9 +5681,10 @@ msgid ""
"manually during print, set this to zero to disable temperature control "
"commands in the output file."
msgstr ""
-"Extruder temperature for first layer. If you want to control temperature "
-"manually during print, set this to zero to disable temperature control "
-"commands in the output file."
+"Température de l’extrudeur pour la première couche. Si vous voulez contrôler "
+"manuellement la température au cours de l’impression, mettez à zéro pour "
+"désactiver les commandes de contrôle de température dans le fichier de "
+"sortie."
#: src/libslic3r/PrintConfig.cpp:871
msgid ""
@@ -5723,13 +5692,14 @@ msgid ""
"low to avoid too much shaking and resonance issues. Set zero to disable gaps "
"filling."
msgstr ""
-"Speed for filling small gaps using short zigzag moves. Keep this reasonably "
-"low to avoid too much shaking and resonance issues. Set zero to disable gaps "
-"filling."
+"Vitesse pour combler de petits interstices avec de courts mouvements en "
+"zigzag. Gardez un réglage relativement lent afin d'éviter les problèmes de "
+"vibration et de résonance. Réglez sur zéro pour désactiver le remplissage "
+"d'interstices."
#: src/libslic3r/PrintConfig.cpp:879
msgid "Verbose G-code"
-msgstr "Verbose G-code"
+msgstr "G-code commenté"
#: src/libslic3r/PrintConfig.cpp:880
msgid ""
@@ -5737,13 +5707,14 @@ msgid ""
"descriptive text. If you print from SD card, the additional weight of the "
"file could make your firmware slow down."
msgstr ""
-"Enable this to get a commented G-code file, with each line explained by a "
-"descriptive text. If you print from SD card, the additional weight of the "
-"file could make your firmware slow down."
+"Activez ceci pour obtenir un fichier G-code commenté, avec chaque ligne "
+"expliquée par un texte descriptif. Si vous imprimez depuis une carte SD, le "
+"poids supplémentaire du fichier pourrait ralentir le firmware de votre "
+"imprimante."
#: src/libslic3r/PrintConfig.cpp:887
msgid "G-code flavor"
-msgstr "G-code flavor"
+msgstr "Version du G-code"
#: src/libslic3r/PrintConfig.cpp:888
msgid ""
@@ -5752,18 +5723,18 @@ msgid ""
"output. The \"No extrusion\" flavor prevents Slic3r from exporting any "
"extrusion value at all."
msgstr ""
-"Some G/M-code commands, including temperature control and others, are not "
-"universal. Set this option to your printer's firmware to get a compatible "
-"output. The \"No extrusion\" flavor prevents Slic3r from exporting any "
-"extrusion value at all."
+"Certaines commandes G/M-code, dont le contrôle de température et autres, ne "
+"sont pas universelles. Paramétrez cette option avec le firmware de votre "
+"imprimante pour obtenir une sortie compatible. La version \"sans extrusion\" "
+"empêche Slic3r d'exporter toute valeur d'extrusion."
#: src/libslic3r/PrintConfig.cpp:911
msgid "No extrusion"
-msgstr "No extrusion"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:924
msgid "High extruder current on filament swap"
-msgstr "High extruder current on filament swap"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:925
msgid ""
@@ -5771,41 +5742,40 @@ msgid ""
"filament exchange sequence to allow for rapid ramming feed rates and to "
"overcome resistance when loading a filament with an ugly shaped tip."
msgstr ""
-"It may be beneficial to increase the extruder motor current during the "
-"filament exchange sequence to allow for rapid ramming feed rates and to "
-"overcome resistance when loading a filament with an ugly shaped tip."
#: src/libslic3r/PrintConfig.cpp:933
msgid ""
"This is the acceleration your printer will use for infill. Set zero to "
"disable acceleration control for infill."
msgstr ""
-"This is the acceleration your printer will use for infill. Set zero to "
-"disable acceleration control for infill."
+"Il s'agit de l'accélération que votre imprimante utilisera pour le "
+"remplissage. Régler sur zéro afin de désactiver le contrôle de "
+"l'accélération pour le remplissage."
#: src/libslic3r/PrintConfig.cpp:941
msgid "Combine infill every"
-msgstr "Combine infill every"
+msgstr "Combiner le remplissage toutes les"
#: src/libslic3r/PrintConfig.cpp:943
msgid ""
"This feature allows to combine infill and speed up your print by extruding "
"thicker infill layers while preserving thin perimeters, thus accuracy."
msgstr ""
-"This feature allows to combine infill and speed up your print by extruding "
-"thicker infill layers while preserving thin perimeters, thus accuracy."
+"Cette fonction permet de combiner le remplissage afin d'accélérer "
+"l'impression en extrudant des couches de remplissage plus épaisses tout en "
+"conservant des périmètres fins, avec plus de précision."
#: src/libslic3r/PrintConfig.cpp:946
msgid "Combine infill every n layers"
-msgstr "Combine infill every n layers"
+msgstr "Combiner le remplissage toutes les n couches"
#: src/libslic3r/PrintConfig.cpp:952
msgid "Infill extruder"
-msgstr "Infill extruder"
+msgstr "Extrudeur pour le remplissage"
#: src/libslic3r/PrintConfig.cpp:954
msgid "The extruder to use when printing infill."
-msgstr "The extruder to use when printing infill."
+msgstr "L'extrudeur à utiliser pour imprimer le remplissage."
#: src/libslic3r/PrintConfig.cpp:962
msgid ""
@@ -5815,27 +5785,29 @@ msgid ""
"up the infill and make your parts stronger. If expressed as percentage (for "
"example 90%) it will be computed over layer height."
msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for infill. If "
-"left zero, default extrusion width will be used if set, otherwise 1.125 x "
-"nozzle diameter will be used. You may want to use fatter extrudates to speed "
-"up the infill and make your parts stronger. If expressed as percentage (for "
-"example 90%) it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour le remplissage. Si la valeur reste sur zéro, la "
+"largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur "
+"1.125 x diamètre de la buse sera utilisée. Vous voudrez peut-être utiliser "
+"des extrudats plus épais pour accélérer le remplissage et rendre vos pièces "
+"plus solides. Si la valeur est exprimée en pourcentage (par exemple : 90%), "
+"elle sera calculée par rapport à la hauteur de couche."
#: src/libslic3r/PrintConfig.cpp:971
msgid "Infill before perimeters"
-msgstr "Infill before perimeters"
+msgstr "Remplissage avant les périmètres"
#: src/libslic3r/PrintConfig.cpp:972
msgid ""
"This option will switch the print order of perimeters and infill, making the "
"latter first."
msgstr ""
-"This option will switch the print order of perimeters and infill, making the "
-"latter first."
+"Cette option inverse l'ordre d'impression des périmètres et du remplissage, "
+"ce dernier étant alors imprimé en premier."
#: src/libslic3r/PrintConfig.cpp:977
msgid "Only infill where needed"
-msgstr "Only infill where needed"
+msgstr "Remplissage seulement où cela est nécessaire"
#: src/libslic3r/PrintConfig.cpp:979
msgid ""
@@ -5843,13 +5815,14 @@ msgid ""
"ceilings (it will act as internal support material). If enabled, slows down "
"the G-code generation due to the multiple checks involved."
msgstr ""
-"This option will limit infill to the areas actually needed for supporting "
-"ceilings (it will act as internal support material). If enabled, slows down "
-"the G-code generation due to the multiple checks involved."
+"Cette option limitera le remplissage aux zones nécessaires pour soutenir les "
+"couches supérieures (cela agira comme un support interne). Si activé, la "
+"génération du G-Code prendra plus de temps à cause des calculs "
+"supplémentaires requis."
#: src/libslic3r/PrintConfig.cpp:986
msgid "Infill/perimeters overlap"
-msgstr "Infill/perimeters overlap"
+msgstr "Chevauchement remplissage/périmètres"
#: src/libslic3r/PrintConfig.cpp:988
msgid ""
@@ -5858,26 +5831,29 @@ msgid ""
"cause gaps. If expressed as percentage (example: 15%) it is calculated over "
"perimeter extrusion width."
msgstr ""
-"This setting applies an additional overlap between infill and perimeters for "
-"better bonding. Theoretically this shouldn't be needed, but backlash might "
-"cause gaps. If expressed as percentage (example: 15%) it is calculated over "
-"perimeter extrusion width."
+"Cette option applique un chevauchement supplémentaire entre les périmètres "
+"et le remplissage pour une meilleur fusion. En théorie, cela ne devrait pas "
+"être nécessaire, mais le jeu mécanique peut générer des espacements. Si "
+"exprimé en pourcentage (par exemple 15%), la valeur sera calculée en "
+"fonction de la largeur d'extrusion du périmètre."
#: src/libslic3r/PrintConfig.cpp:999
msgid "Speed for printing the internal fill. Set to zero for auto."
-msgstr "Speed for printing the internal fill. Set to zero for auto."
+msgstr ""
+"Vitesse pour imprimer le remplissage interne. Réglez sur zéro pour un "
+"ajustement automatique."
#: src/libslic3r/PrintConfig.cpp:1007
msgid "Inherits profile"
-msgstr "Inherits profile"
+msgstr "Hérite du profil"
#: src/libslic3r/PrintConfig.cpp:1008
msgid "Name of the profile, from which this profile inherits."
-msgstr "Name of the profile, from which this profile inherits."
+msgstr "Nom du profil, duquel hérite ce profil."
#: src/libslic3r/PrintConfig.cpp:1021
msgid "Interface shells"
-msgstr "Interface shells"
+msgstr "Coques d'interface"
#: src/libslic3r/PrintConfig.cpp:1022
msgid ""
@@ -5885,9 +5861,9 @@ msgid ""
"Useful for multi-extruder prints with translucent materials or manual "
"soluble support material."
msgstr ""
-"Force the generation of solid shells between adjacent materials/volumes. "
-"Useful for multi-extruder prints with translucent materials or manual "
-"soluble support material."
+"Force la génération de coques solides entre des volumes/matériaux adjacents. "
+"Utile pour des impressions multi-extrudeurs avec des matériaux translucides "
+"ou avec un support manuel soluble."
#: src/libslic3r/PrintConfig.cpp:1031
msgid ""
@@ -5896,14 +5872,14 @@ msgid ""
"use placeholder variables for all Slic3r settings as well as [layer_num] and "
"[layer_z]."
msgstr ""
-"This custom code is inserted at every layer change, right after the Z move "
-"and before the extruder moves to the first layer point. Note that you can "
-"use placeholder variables for all Slic3r settings as well as [layer_num] and "
-"[layer_z]."
+"Ce code personnalisé est inséré à chaque changement de couche, juste après "
+"le mouvement Z et avant le déplacement de l'extrudeur au point de départ de "
+"la couche suivante. Notez que vous pouvez utiliser des variables génériques "
+"pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]."
#: src/libslic3r/PrintConfig.cpp:1042
msgid "Supports remaining times"
-msgstr "Supports remaining times"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1043
msgid ""
@@ -5912,83 +5888,80 @@ msgid ""
"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 "
"firmware supports M73 Qxx Sxx for the silent mode."
msgstr ""
-"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute "
-"intervals into the G-code to let the firmware show accurate remaining time. "
-"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 "
-"firmware supports M73 Qxx Sxx for the silent mode."
#: src/libslic3r/PrintConfig.cpp:1051
msgid "Supports silent mode"
-msgstr "Supports silent mode"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1052
msgid "Set silent mode for the G-code flavor"
-msgstr "Set silent mode for the G-code flavor"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1075
msgid "Maximum feedrate %1%"
-msgstr "Maximum feedrate %1%"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1077
msgid "Maximum feedrate of the %1% axis"
-msgstr "Maximum feedrate of the %1% axis"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1085
msgid "Maximum acceleration %1%"
-msgstr "Maximum acceleration %1%"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1087
msgid "Maximum acceleration of the %1% axis"
-msgstr "Maximum acceleration of the %1% axis"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1095
msgid "Maximum jerk %1%"
-msgstr "Maximum jerk %1%"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1097
msgid "Maximum jerk of the %1% axis"
-msgstr "Maximum jerk of the %1% axis"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1110
msgid "Minimum feedrate when extruding"
-msgstr "Minimum feedrate when extruding"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1121
msgid "Minimum travel feedrate"
-msgstr "Minimum travel feedrate"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1132
msgid "Maximum acceleration when extruding"
-msgstr "Maximum acceleration when extruding"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1141 src/libslic3r/PrintConfig.cpp:1143
msgid "Maximum acceleration when retracting"
-msgstr "Maximum acceleration when retracting"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1151 src/libslic3r/PrintConfig.cpp:1160
msgid "Max"
-msgstr "Max"
+msgstr "Maximum"
#: src/libslic3r/PrintConfig.cpp:1152
msgid "This setting represents the maximum speed of your fan."
-msgstr "This setting represents the maximum speed of your fan."
+msgstr "Cette option représente la vitesse maximum du ventilateur."
#: src/libslic3r/PrintConfig.cpp:1161
-#, no-c-format
+#, fuzzy, c-format
msgid ""
"This is the highest printable layer height for this extruder, used to cap "
"the variable layer height and support layer height. Maximum recommended "
"layer height is 75% of the extrusion width to achieve reasonable inter-layer "
"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter."
msgstr ""
-"This is the highest printable layer height for this extruder, used to cap "
-"the variable layer height and support layer height. Maximum recommended "
-"layer height is 75% of the extrusion width to achieve reasonable inter-layer "
-"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter."
+"Ceci est la hauteur de couche imprimable maximum pour cet extrudeur, "
+"utilisée pour plafonner la hauteur de couche variable et la hauteur de "
+"couche des supports. La hauteur de couche maximum recommandée est 75% de la "
+"largeur d'extrusion afin d'obtenir une adhésion inter-couches correcte. Si "
+"réglée sur 0, la hauteur de couche est limitée à 75% du diamètre de la buse."
#: src/libslic3r/PrintConfig.cpp:1171
msgid "Max print speed"
-msgstr "Max print speed"
+msgstr "Vitesse d'impression maximale"
#: src/libslic3r/PrintConfig.cpp:1172
msgid ""
@@ -5996,21 +5969,22 @@ msgid ""
"speed in order to keep constant extruder pressure. This experimental setting "
"is used to set the highest print speed you want to allow."
msgstr ""
-"When setting other speed settings to 0 Slic3r will autocalculate the optimal "
-"speed in order to keep constant extruder pressure. This experimental setting "
-"is used to set the highest print speed you want to allow."
+"Lorsque vous réglez les autres vitesses à 0, Slic3r calculera "
+"automatiquement la vitesse optimale de façon à garder une pression constante "
+"dans l'extrudeur. Cette fonction expérimentale est utilisée pour régler la "
+"plus haute vitesse que vous souhaitez autoriser."
#: src/libslic3r/PrintConfig.cpp:1182
msgid ""
"This experimental setting is used to set the maximum volumetric speed your "
"extruder supports."
msgstr ""
-"This experimental setting is used to set the maximum volumetric speed your "
-"extruder supports."
+"Ce réglage expérimental est utilisé pour paramétrer la vitesse volumétrique "
+"maximum tolérée par votre extrudeur."
#: src/libslic3r/PrintConfig.cpp:1191
msgid "Max volumetric slope positive"
-msgstr "Max volumetric slope positive"
+msgstr "Pente volumétrique positive maximum"
#: src/libslic3r/PrintConfig.cpp:1192 src/libslic3r/PrintConfig.cpp:1203
msgid ""
@@ -6019,10 +5993,11 @@ msgid ""
"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/"
"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds."
msgstr ""
-"This experimental setting is used to limit the speed of change in extrusion "
-"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate "
-"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/"
-"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds."
+"Ce réglage expérimental sert à limiter la vitesse de changement dans le flux "
+"d'extrusion. Une valeur de 1.8 mm³/s² garantit qu'un changement de flux "
+"d'extrusion de 1.8 mm³/s (largeur d'extrusion 0.45mm, hauteur d'extrusion "
+"0.2mm, alimentation 20 mm/s) à 5.4 mm³/s (alimentation 60 mm/s) prendra au "
+"moins 2 secondes."
#: src/libslic3r/PrintConfig.cpp:1196 src/libslic3r/PrintConfig.cpp:1207
msgid "mm³/s²"
@@ -6030,15 +6005,17 @@ msgstr "mm³/s²"
#: src/libslic3r/PrintConfig.cpp:1202
msgid "Max volumetric slope negative"
-msgstr "Max volumetric slope negative"
+msgstr "Pente volumétrique négative maximum"
#: src/libslic3r/PrintConfig.cpp:1214 src/libslic3r/PrintConfig.cpp:1223
msgid "Min"
-msgstr "Min"
+msgstr "Minimum"
#: src/libslic3r/PrintConfig.cpp:1215
msgid "This setting represents the minimum PWM your fan needs to work."
-msgstr "This setting represents the minimum PWM your fan needs to work."
+msgstr ""
+"Cette option représente le PWM minimum dont votre ventilateur a besoin pour "
+"tourner."
#: src/libslic3r/PrintConfig.cpp:1224
msgid ""
@@ -6046,21 +6023,21 @@ msgid ""
"resolution for variable layer height. Typical values are between 0.05 mm and "
"0.1 mm."
msgstr ""
-"This is the lowest printable layer height for this extruder and limits the "
-"resolution for variable layer height. Typical values are between 0.05 mm and "
-"0.1 mm."
+"Cette valeur est la hauteur de couche imprimable minimum pour cet extrudeur "
+"et elle limite la résolution pour la hauteur de couche variable. Les valeurs "
+"type se situent entre 0.05 mm et 0.1 mm."
#: src/libslic3r/PrintConfig.cpp:1232
msgid "Min print speed"
-msgstr "Min print speed"
+msgstr "Vitesse d'impression minimale"
#: src/libslic3r/PrintConfig.cpp:1233
msgid "Slic3r will not scale speed down below this speed."
-msgstr "Slic3r will not scale speed down below this speed."
+msgstr "Slic3r ne descendra pas en-dessous de cette vitesse."
#: src/libslic3r/PrintConfig.cpp:1240
msgid "Minimal filament extrusion length"
-msgstr "Minimal filament extrusion length"
+msgstr "Longueur minimale d'extrusion de filament"
#: src/libslic3r/PrintConfig.cpp:1241
msgid ""
@@ -6068,55 +6045,55 @@ msgid ""
"specified amount of filament on the bottom layer. For multi-extruder "
"machines, this minimum applies to each extruder."
msgstr ""
-"Generate no less than the number of skirt loops required to consume the "
-"specified amount of filament on the bottom layer. For multi-extruder "
-"machines, this minimum applies to each extruder."
+"Nombre minimum de contours à générer afin de consommer la quantité de "
+"filament spécifiée sur la couche inférieure. Pour les machines multi-"
+"extrudeurs, ce minimum s'applique à chaque extrudeur."
#: src/libslic3r/PrintConfig.cpp:1250
msgid "Configuration notes"
-msgstr "Configuration notes"
+msgstr "Notes de configuration"
#: src/libslic3r/PrintConfig.cpp:1251
msgid ""
"You can put here your personal notes. This text will be added to the G-code "
"header comments."
msgstr ""
-"You can put here your personal notes. This text will be added to the G-code "
-"header comments."
+"Vous pouvez inscrire ici vos commentaires personnels. Ce texte sera ajouté "
+"au commentaire en entête du G-Code."
#: src/libslic3r/PrintConfig.cpp:1260
msgid "Nozzle diameter"
-msgstr "Nozzle diameter"
+msgstr "Diamètre de la buse"
#: src/libslic3r/PrintConfig.cpp:1261
msgid ""
"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)"
msgstr ""
-"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)"
+"Il s'agit du diamètre de la buse de votre extrudeur (par exemple: 0.5, 0.35, "
+"etc.)"
#: src/libslic3r/PrintConfig.cpp:1266
msgid "Host Type"
-msgstr "Host Type"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1267
msgid ""
"Slic3r can upload G-code files to a printer host. This field must contain "
"the kind of the host."
msgstr ""
-"Slic3r can upload G-code files to a printer host. This field must contain "
-"the kind of the host."
#: src/libslic3r/PrintConfig.cpp:1278
msgid "Only retract when crossing perimeters"
-msgstr "Only retract when crossing perimeters"
+msgstr "Rétracter uniquement lors du franchissement de périmètres"
#: src/libslic3r/PrintConfig.cpp:1279
msgid ""
"Disables retraction when the travel path does not exceed the upper layer's "
"perimeters (and thus any ooze will be probably invisible)."
msgstr ""
-"Disables retraction when the travel path does not exceed the upper layer's "
-"perimeters (and thus any ooze will be probably invisible)."
+"Désactiver la rétraction lorsque le chemin de déplacement ne franchit pas "
+"les périmètres des couches supérieures (et donc les coulures seront "
+"probablement invisibles)."
#: src/libslic3r/PrintConfig.cpp:1286
msgid ""
@@ -6124,13 +6101,14 @@ msgid ""
"oozing. It will enable a tall skirt automatically and move extruders outside "
"such skirt when changing temperatures."
msgstr ""
-"This option will drop the temperature of the inactive extruders to prevent "
-"oozing. It will enable a tall skirt automatically and move extruders outside "
-"such skirt when changing temperatures."
+"Cette option abaissera la température des extrudeurs inutilisés pour "
+"prévenir le oozing (suintement). Cela active automatiquement la génération "
+"d'une grande jupe et le déplacement des extrudeurs hors de cette jupe lors "
+"des changements de température."
#: src/libslic3r/PrintConfig.cpp:1293
msgid "Output filename format"
-msgstr "Output filename format"
+msgstr "Format du nom de fichier de sortie"
#: src/libslic3r/PrintConfig.cpp:1294
msgid ""
@@ -6139,38 +6117,40 @@ msgid ""
"[year], [month], [day], [hour], [minute], [second], [version], "
"[input_filename], [input_filename_base]."
msgstr ""
-"You can use all configuration options as variables inside this template. For "
-"example: [layer_height], [fill_density] etc. You can also use [timestamp], "
-"[year], [month], [day], [hour], [minute], [second], [version], "
-"[input_filename], [input_filename_base]."
+"Vous pouvez utiliser toutes les options de configuration comme variables "
+"dans ce modèle. Par exemple : [layer_height], [fill_density] etc. Vous "
+"pouvez aussi utiliser [timestamp], [year], [month], [day], [hour], [minute], "
+"[second], [version], [input_filename], [input_filename_base]."
#: src/libslic3r/PrintConfig.cpp:1303
msgid "Detect bridging perimeters"
-msgstr "Detect bridging perimeters"
+msgstr "Détecter les périmètres faisant des ponts"
#: src/libslic3r/PrintConfig.cpp:1305
msgid ""
"Experimental option to adjust flow for overhangs (bridge flow will be used), "
"to apply bridge speed to them and enable fan."
msgstr ""
-"Experimental option to adjust flow for overhangs (bridge flow will be used), "
-"to apply bridge speed to them and enable fan."
+"Option expérimentale qui ajuste le flux pour les surplombs (le flux pour les "
+"ponts sera utilisé), leur applique la vitesse pour les ponts et active le "
+"ventilateur."
#: src/libslic3r/PrintConfig.cpp:1311
msgid "Filament parking position"
-msgstr "Filament parking position"
+msgstr "Position d'attente du filament"
#: src/libslic3r/PrintConfig.cpp:1312
msgid ""
"Distance of the extruder tip from the position where the filament is parked "
"when unloaded. This should match the value in printer firmware. "
msgstr ""
-"Distance of the extruder tip from the position where the filament is parked "
-"when unloaded. This should match the value in printer firmware. "
+"Distance entre la pointe de l'extrudeur et la position où le filament est "
+"positionné en attente lorsqu'il est déchargé. Cela doit correspondre à la "
+"valeur dans le firmware de l'imprimante. "
#: src/libslic3r/PrintConfig.cpp:1320
msgid "Extra loading distance"
-msgstr "Extra loading distance"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1321
msgid ""
@@ -6179,15 +6159,11 @@ msgid ""
"positive, it is loaded further, if negative, the loading move is shorter "
"than unloading. "
msgstr ""
-"When set to zero, the distance the filament is moved from parking position "
-"during load is exactly the same as it was moved back during unload. When "
-"positive, it is loaded further, if negative, the loading move is shorter "
-"than unloading. "
#: src/libslic3r/PrintConfig.cpp:1329 src/libslic3r/PrintConfig.cpp:1347
#: src/libslic3r/PrintConfig.cpp:1359 src/libslic3r/PrintConfig.cpp:1369
msgid "Perimeters"
-msgstr "Perimeters"
+msgstr "Périmètres"
#: src/libslic3r/PrintConfig.cpp:1330
msgid ""
@@ -6195,19 +6171,21 @@ msgid ""
"like 9000 usually gives good results if your hardware is up to the job. Set "
"zero to disable acceleration control for perimeters."
msgstr ""
-"This is the acceleration your printer will use for perimeters. A high value "
-"like 9000 usually gives good results if your hardware is up to the job. Set "
-"zero to disable acceleration control for perimeters."
+"L'accélération que votre imprimante utilisera pour les périmètres. Une "
+"valeur élevée comme 9000 donne généralement de bons résultats si votre "
+"matériel le permet. Régler sur zéro afin de désactiver le contrôle de "
+"l'accélération pour les périmètres."
#: src/libslic3r/PrintConfig.cpp:1338
msgid "Perimeter extruder"
-msgstr "Perimeter extruder"
+msgstr "Extrudeur pour les périmètres"
#: src/libslic3r/PrintConfig.cpp:1340
msgid ""
"The extruder to use when printing perimeters and brim. First extruder is 1."
msgstr ""
-"The extruder to use when printing perimeters and brim. First extruder is 1."
+"L'extrudeur à utiliser pour imprimer les périmètres et la bordure. Le "
+"premier extrudeur a le numéro 1."
#: src/libslic3r/PrintConfig.cpp:1349
msgid ""
@@ -6217,17 +6195,20 @@ msgid ""
"nozzle diameter will be used. If expressed as percentage (for example 200%) "
"it will be computed over layer height."
msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for perimeters. "
-"You may want to use thinner extrudates to get more accurate surfaces. If "
-"left zero, default extrusion width will be used if set, otherwise 1.125 x "
-"nozzle diameter will be used. If expressed as percentage (for example 200%) "
-"it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement une "
+"largeur d’extrusion pour les périmètres. Vous voudrez peut-être utiliser des "
+"extrudats plus fin pour obtenir des surfaces plus nettes. Si la valeur reste "
+"sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon "
+"la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est "
+"exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport "
+"à la hauteur de couche."
#: src/libslic3r/PrintConfig.cpp:1361
msgid ""
"Speed for perimeters (contours, aka vertical shells). Set to zero for auto."
msgstr ""
-"Speed for perimeters (contours, aka vertical shells). Set to zero for auto."
+"Vitesse pour les périmètres (contours, parois verticales). Réglez sur zéro "
+"pour un ajustement automatique."
#: src/libslic3r/PrintConfig.cpp:1371
msgid ""
@@ -6236,10 +6217,10 @@ msgid ""
"surfaces which benefit from a higher number of perimeters if the Extra "
"Perimeters option is enabled."
msgstr ""
-"This option sets the number of perimeters to generate for each layer. Note "
-"that Slic3r may increase this number automatically when it detects sloping "
-"surfaces which benefit from a higher number of perimeters if the Extra "
-"Perimeters option is enabled."
+"Cette option définit le nombre de périmètres à générer pour chaque couche. "
+"Notez que Slic3r peut augmenter cette valeur automatiquement si il détecte "
+"une surface inclinée qui nécessite un plus grand nombre de périmètres, si "
+"l'option \"Périmètres supplémentaires\" est sélectionnée."
#: src/libslic3r/PrintConfig.cpp:1375
msgid "(minimum)"
@@ -6253,63 +6234,63 @@ msgid ""
"argument, and they can access the Slic3r config settings by reading "
"environment variables."
msgstr ""
-"If you want to process the output G-code through custom scripts, just list "
-"their absolute paths here. Separate multiple scripts with a semicolon. "
-"Scripts will be passed the absolute path to the G-code file as the first "
-"argument, and they can access the Slic3r config settings by reading "
-"environment variables."
+"Si vous voulez traiter le G-code de sortie à l'aide de scripts "
+"personnalisés, listez simplement leurs chemins absolus ici. Séparez les "
+"divers scripts avec un point virgule. Les scripts vont recevoir en premier "
+"argument le chemin absolu du fichier G-code, et ils peuvent accéder aux "
+"réglages de configuration de Slic3r en lisant des variables d'environnement."
#: src/libslic3r/PrintConfig.cpp:1395
msgid "Printer type"
-msgstr "Printer type"
+msgstr "Type d'imprimante"
#: src/libslic3r/PrintConfig.cpp:1396
msgid "Type of the printer."
-msgstr "Type of the printer."
+msgstr "Type d'imprimante."
#: src/libslic3r/PrintConfig.cpp:1401
msgid "Printer notes"
-msgstr "Printer notes"
+msgstr "Notes de l'imprimante"
#: src/libslic3r/PrintConfig.cpp:1402
msgid "You can put your notes regarding the printer here."
-msgstr "You can put your notes regarding the printer here."
+msgstr "Vous pouvez saisir ici vos observations concernant l'imprimante."
#: src/libslic3r/PrintConfig.cpp:1410
msgid "Printer vendor"
-msgstr "Printer vendor"
+msgstr "Fabriquant de l'imprimante"
#: src/libslic3r/PrintConfig.cpp:1411
msgid "Name of the printer vendor."
-msgstr "Name of the printer vendor."
+msgstr "Nom du fabriquant de l'imprimante."
#: src/libslic3r/PrintConfig.cpp:1416
msgid "Printer variant"
-msgstr "Printer variant"
+msgstr "Variante d'imprimante"
#: src/libslic3r/PrintConfig.cpp:1417
msgid ""
"Name of the printer variant. For example, the printer variants may be "
"differentiated by a nozzle diameter."
msgstr ""
-"Name of the printer variant. For example, the printer variants may be "
-"differentiated by a nozzle diameter."
+"Nom de la variante d'imprimante. Par exemple, la variante d'imprimante peut "
+"être différenciée par un diamètre de buse."
#: src/libslic3r/PrintConfig.cpp:1430
msgid "Raft layers"
-msgstr "Raft layers"
+msgstr "Couches du radeau"
#: src/libslic3r/PrintConfig.cpp:1432
msgid ""
"The object will be raised by this number of layers, and support material "
"will be generated under it."
msgstr ""
-"The object will be raised by this number of layers, and support material "
-"will be generated under it."
+"L'objet sera surélevé de ce nombre de couches, et du support sera généré en "
+"dessous."
#: src/libslic3r/PrintConfig.cpp:1440
msgid "Resolution"
-msgstr "Resolution"
+msgstr "Résolution"
#: src/libslic3r/PrintConfig.cpp:1441
msgid ""
@@ -6318,48 +6299,50 @@ msgid ""
"carry more detail than printers can render. Set to zero to disable any "
"simplification and use full resolution from input."
msgstr ""
-"Minimum detail resolution, used to simplify the input file for speeding up "
-"the slicing job and reducing memory usage. High-resolution models often "
-"carry more detail than printers can render. Set to zero to disable any "
-"simplification and use full resolution from input."
+"Résolution minimale pour les détails, utilisée pour simplifier le fichier "
+"d'entrée afin d'accélérer le découpage et de réduire l'utilisation de la "
+"mémoire. Les modèles haute-résolution possèdent souvent plus de détails que "
+"ce que les imprimantes peuvent produire. Mettez à zéro pour désactiver toute "
+"simplification et utiliser la résolution complète de l'entrée."
#: src/libslic3r/PrintConfig.cpp:1451
msgid "Minimum travel after retraction"
-msgstr "Minimum travel after retraction"
+msgstr "Trajet minimal après une rétraction"
#: src/libslic3r/PrintConfig.cpp:1452
msgid ""
"Retraction is not triggered when travel moves are shorter than this length."
msgstr ""
-"Retraction is not triggered when travel moves are shorter than this length."
+"La rétraction n'est pas déclenchée lorsque les déplacements sont plus courts "
+"que cette distance."
#: src/libslic3r/PrintConfig.cpp:1458
msgid "Retract amount before wipe"
-msgstr "Retract amount before wipe"
+msgstr "Quantité de rétractation avant essuyage"
#: src/libslic3r/PrintConfig.cpp:1459
msgid ""
"With bowden extruders, it may be wise to do some amount of quick retract "
"before doing the wipe movement."
msgstr ""
-"With bowden extruders, it may be wise to do some amount of quick retract "
-"before doing the wipe movement."
+"Avec les extrudeurs bowden, il est conseillé d'effectuer une rétractation "
+"rapide avant de réaliser le mouvement de nettoyage."
#: src/libslic3r/PrintConfig.cpp:1466
msgid "Retract on layer change"
-msgstr "Retract on layer change"
+msgstr "Rétracter lors des changements de couche"
#: src/libslic3r/PrintConfig.cpp:1467
msgid "This flag enforces a retraction whenever a Z move is done."
-msgstr "This flag enforces a retraction whenever a Z move is done."
+msgstr "Cette option active la rétractation lors d'un déplacement sur l'axe Z."
#: src/libslic3r/PrintConfig.cpp:1472 src/libslic3r/PrintConfig.cpp:1480
msgid "Length"
-msgstr "Length"
+msgstr "Longueur"
#: src/libslic3r/PrintConfig.cpp:1473
msgid "Retraction Length"
-msgstr "Retraction Length"
+msgstr "Longueur de Rétractation"
#: src/libslic3r/PrintConfig.cpp:1474
msgid ""
@@ -6367,17 +6350,17 @@ msgid ""
"amount (the length is measured on raw filament, before it enters the "
"extruder)."
msgstr ""
-"When retraction is triggered, filament is pulled back by the specified "
-"amount (the length is measured on raw filament, before it enters the "
-"extruder)."
+"Lorsque la rétractation est déclenchée, le filament est tiré en arrière de "
+"la longueur indiquée (la longueur est mesurée sur le filament brut, avant "
+"qu'il entre dans l'extrudeur)."
#: src/libslic3r/PrintConfig.cpp:1476 src/libslic3r/PrintConfig.cpp:1485
msgid "mm (zero to disable)"
-msgstr "mm (zero to disable)"
+msgstr "mm (zéro pour désactiver)"
#: src/libslic3r/PrintConfig.cpp:1481
msgid "Retraction Length (Toolchange)"
-msgstr "Retraction Length (Toolchange)"
+msgstr "Longueur de Rétractation (changement d'outil)"
#: src/libslic3r/PrintConfig.cpp:1482
msgid ""
@@ -6385,13 +6368,13 @@ msgid ""
"by the specified amount (the length is measured on raw filament, before it "
"enters the extruder)."
msgstr ""
-"When retraction is triggered before changing tool, filament is pulled back "
-"by the specified amount (the length is measured on raw filament, before it "
-"enters the extruder)."
+"Lorsque la rétractation est déclenchée avant un changement d'outil, le "
+"filament est retiré de la longueur indiquée (la longueur est mesurée sur le "
+"filament brut, avant qu'il entre dans l'extrudeur)."
#: src/libslic3r/PrintConfig.cpp:1490
msgid "Lift Z"
-msgstr "Lift Z"
+msgstr "Levage de l'axe Z"
#: src/libslic3r/PrintConfig.cpp:1491
msgid ""
@@ -6399,17 +6382,17 @@ msgid ""
"retraction is triggered. When using multiple extruders, only the setting for "
"the first extruder will be considered."
msgstr ""
-"If you set this to a positive value, Z is quickly raised every time a "
-"retraction is triggered. When using multiple extruders, only the setting for "
-"the first extruder will be considered."
+"Si vous indiquez une valeur positive, l'axe Z est rapidement élevé à chaque "
+"rétraction. Lorsque vous utilisez plusieurs extrudeurs, seul le réglage du "
+"premier extrudeur sera pris en compte."
#: src/libslic3r/PrintConfig.cpp:1498
msgid "Above Z"
-msgstr "Above Z"
+msgstr "Au-delà de Z"
#: src/libslic3r/PrintConfig.cpp:1499
msgid "Only lift Z above"
-msgstr "Only lift Z above"
+msgstr "Lever Z seulement au-dessus de"
#: src/libslic3r/PrintConfig.cpp:1500
msgid ""
@@ -6417,17 +6400,17 @@ msgid ""
"specified absolute Z. You can tune this setting for skipping lift on the "
"first layers."
msgstr ""
-"If you set this to a positive value, Z lift will only take place above the "
-"specified absolute Z. You can tune this setting for skipping lift on the "
-"first layers."
+"Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché "
+"qu'à partir de la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier "
+"ce réglage pour éviter le levage de l'axe Z sur les premières couches."
#: src/libslic3r/PrintConfig.cpp:1507
msgid "Below Z"
-msgstr "Below Z"
+msgstr "En-deçà de Z"
#: src/libslic3r/PrintConfig.cpp:1508
msgid "Only lift Z below"
-msgstr "Only lift Z below"
+msgstr "Lever Z seulement en-dessous de"
#: src/libslic3r/PrintConfig.cpp:1509
msgid ""
@@ -6435,41 +6418,43 @@ msgid ""
"specified absolute Z. You can tune this setting for limiting lift to the "
"first layers."
msgstr ""
-"If you set this to a positive value, Z lift will only take place below the "
-"specified absolute Z. You can tune this setting for limiting lift to the "
-"first layers."
+"Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché "
+"que jusqu'à la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce "
+"réglage pour limiter le levage de l'axe Z aux premières couches."
#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1525
msgid "Extra length on restart"
-msgstr "Extra length on restart"
+msgstr "Longueur supplémentaire à la reprise"
#: src/libslic3r/PrintConfig.cpp:1518
msgid ""
"When the retraction is compensated after the travel move, the extruder will "
"push this additional amount of filament. This setting is rarely needed."
msgstr ""
-"When the retraction is compensated after the travel move, the extruder will "
-"push this additional amount of filament. This setting is rarely needed."
+"Lorsque la rétractation est compensée après un déplacement, l'extruder "
+"exprimera cette quantité de filament en plus. Ce réglage est rarement "
+"nécessaire."
#: src/libslic3r/PrintConfig.cpp:1526
msgid ""
"When the retraction is compensated after changing tool, the extruder will "
"push this additional amount of filament."
msgstr ""
-"When the retraction is compensated after changing tool, the extruder will "
-"push this additional amount of filament."
+"Lorsque la rétractation est compensée après un changement d'outil, "
+"l'extrudeur exprimera cette quantité de filament en plus."
#: src/libslic3r/PrintConfig.cpp:1533 src/libslic3r/PrintConfig.cpp:1534
msgid "Retraction Speed"
-msgstr "Retraction Speed"
+msgstr "Vitesse de Rétractation"
#: src/libslic3r/PrintConfig.cpp:1535
msgid "The speed for retractions (it only applies to the extruder motor)."
-msgstr "The speed for retractions (it only applies to the extruder motor)."
+msgstr ""
+"La vitesse des rétractations (ne s'applique qu'au moteur de l'extrudeur)."
#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1542
msgid "Deretraction Speed"
-msgstr "Deretraction Speed"
+msgstr "Vitesse de Réinsertion"
#: src/libslic3r/PrintConfig.cpp:1543
msgid ""
@@ -6477,29 +6462,29 @@ msgid ""
"applies to the extruder motor). If left to zero, the retraction speed is "
"used."
msgstr ""
-"The speed for loading of a filament into extruder after retraction (it only "
-"applies to the extruder motor). If left to zero, the retraction speed is "
-"used."
+"La vitesse de chargement d'un filament dans l'extrudeur après une "
+"rétractation (ne s'applique qu'au moteur de l'extrudeur). Si cette valeur "
+"reste sur zéro, la vitesse de rétraction est utilisée."
#: src/libslic3r/PrintConfig.cpp:1550
msgid "Seam position"
-msgstr "Seam position"
+msgstr "Position de la jointure"
#: src/libslic3r/PrintConfig.cpp:1552
msgid "Position of perimeters starting points."
-msgstr "Position of perimeters starting points."
+msgstr "Position des points de départ des périmètres."
#: src/libslic3r/PrintConfig.cpp:1558
msgid "Random"
-msgstr "Random"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1559
msgid "Nearest"
-msgstr "Nearest"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1560
msgid "Aligned"
-msgstr "Aligned"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1568
msgid "Direction"
@@ -6507,67 +6492,67 @@ msgstr "Direction"
#: src/libslic3r/PrintConfig.cpp:1570
msgid "Preferred direction of the seam"
-msgstr "Preferred direction of the seam"
+msgstr "Direction préférée de la jointure"
#: src/libslic3r/PrintConfig.cpp:1571
msgid "Seam preferred direction"
-msgstr "Seam preferred direction"
+msgstr "Direction préférée de la jointure"
#: src/libslic3r/PrintConfig.cpp:1578
msgid "Jitter"
-msgstr "Jitter"
+msgstr "Gigue"
#: src/libslic3r/PrintConfig.cpp:1580
msgid "Seam preferred direction jitter"
-msgstr "Seam preferred direction jitter"
+msgstr "Gigue de la direction préférée de la jointure"
#: src/libslic3r/PrintConfig.cpp:1581
msgid "Preferred direction of the seam - jitter"
-msgstr "Preferred direction of the seam - jitter"
+msgstr "Direction préférée de la jointure - gigue"
#: src/libslic3r/PrintConfig.cpp:1591
msgid "USB/serial port for printer connection."
-msgstr "USB/serial port for printer connection."
+msgstr "Port USB/Série pour la connexion de l'imprimante."
#: src/libslic3r/PrintConfig.cpp:1598
msgid "Serial port speed"
-msgstr "Serial port speed"
+msgstr "Vitesse du port série"
#: src/libslic3r/PrintConfig.cpp:1599
msgid "Speed (baud) of USB/serial port for printer connection."
-msgstr "Speed (baud) of USB/serial port for printer connection."
+msgstr "Vitesse (baud) du port USB/série pour la connexion à l'imprimante."
#: src/libslic3r/PrintConfig.cpp:1608
msgid "Distance from object"
-msgstr "Distance from object"
+msgstr "Distance de l'objet"
#: src/libslic3r/PrintConfig.cpp:1609
msgid ""
"Distance between skirt and object(s). Set this to zero to attach the skirt "
"to the object(s) and get a brim for better adhesion."
msgstr ""
-"Distance between skirt and object(s). Set this to zero to attach the skirt "
-"to the object(s) and get a brim for better adhesion."
+"Distance entre le ou les objet(s) et la jupe. Mettez zéro pour attacher la "
+"jupe a(ux) objet(s) et obtenir une bordure pour une meilleure adhésion."
#: src/libslic3r/PrintConfig.cpp:1616
msgid "Skirt height"
-msgstr "Skirt height"
+msgstr "Hauteur de la jupe"
#: src/libslic3r/PrintConfig.cpp:1617
msgid ""
"Height of skirt expressed in layers. Set this to a tall value to use skirt "
"as a shield against drafts."
msgstr ""
-"Height of skirt expressed in layers. Set this to a tall value to use skirt "
-"as a shield against drafts."
+"Hauteur de la jupe exprimée en couches. Mettez une valeur élevée pour "
+"utiliser la jupe comme un bouclier contre les flux d'airs."
#: src/libslic3r/PrintConfig.cpp:1624
msgid "Loops (minimum)"
-msgstr "Loops (minimum)"
+msgstr "Boucles (minimum)"
#: src/libslic3r/PrintConfig.cpp:1625
msgid "Skirt Loops"
-msgstr "Skirt Loops"
+msgstr "Boucles de la Jupe"
#: src/libslic3r/PrintConfig.cpp:1626
msgid ""
@@ -6575,25 +6560,26 @@ msgid ""
"set, the number of loops might be greater than the one configured here. Set "
"this to zero to disable skirt completely."
msgstr ""
-"Number of loops for the skirt. If the Minimum Extrusion Length option is "
-"set, the number of loops might be greater than the one configured here. Set "
-"this to zero to disable skirt completely."
+"Nombre de boucles pour la jupe. Si la Longueur Minimale d'Extrusion est "
+"paramétrée, le nombre de boucles minimal sera plus grand que celui configuré "
+"ici. Mettez à zéro pour désactiver complètement la jupe."
#: src/libslic3r/PrintConfig.cpp:1634
msgid "Slow down if layer print time is below"
-msgstr "Slow down if layer print time is below"
+msgstr "Ralentir si le temps d'impression de la couche est inférieur à"
#: src/libslic3r/PrintConfig.cpp:1635
msgid ""
"If layer print time is estimated below this number of seconds, print moves "
"speed will be scaled down to extend duration to this value."
msgstr ""
-"If layer print time is estimated below this number of seconds, print moves "
-"speed will be scaled down to extend duration to this value."
+"Si le temps d'impression estimé de la couche est inférieur à ce nombre de "
+"secondes, la vitesse des déplacements d'impression sera réduite afin "
+"d'atteindre cette valeur."
#: src/libslic3r/PrintConfig.cpp:1645
msgid "Small perimeters"
-msgstr "Small perimeters"
+msgstr "Périmètres courts"
#: src/libslic3r/PrintConfig.cpp:1647
msgid ""
@@ -6601,21 +6587,23 @@ msgid ""
"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will "
"be calculated on the perimeters speed setting above. Set to zero for auto."
msgstr ""
-"This separate setting will affect the speed of perimeters having radius <= "
-"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will "
-"be calculated on the perimeters speed setting above. Set to zero for auto."
+"Ce réglage distinct affectera la vitesse des périmètre ayant un rayon <= "
+"6.5mm (les trous habituellement). Si cette valeur est exprimée en "
+"pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la "
+"vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement "
+"automatique."
#: src/libslic3r/PrintConfig.cpp:1657
msgid "Solid infill threshold area"
-msgstr "Solid infill threshold area"
+msgstr "Surface de seuil pour le remplissage solide"
#: src/libslic3r/PrintConfig.cpp:1659
msgid ""
"Force solid infill for regions having a smaller area than the specified "
"threshold."
msgstr ""
-"Force solid infill for regions having a smaller area than the specified "
-"threshold."
+"Forcer un remplissage solide pour les zones ayant une surface plus petite "
+"que la valeur indiquée."
#: src/libslic3r/PrintConfig.cpp:1660
msgid "mm²"
@@ -6623,15 +6611,15 @@ msgstr "mm²"
#: src/libslic3r/PrintConfig.cpp:1666
msgid "Solid infill extruder"
-msgstr "Solid infill extruder"
+msgstr "Extrudeur pour le remplissage solide"
#: src/libslic3r/PrintConfig.cpp:1668
msgid "The extruder to use when printing solid infill."
-msgstr "The extruder to use when printing solid infill."
+msgstr "L'extrudeur à utiliser pour imprimer les remplissages solides."
#: src/libslic3r/PrintConfig.cpp:1674
msgid "Solid infill every"
-msgstr "Solid infill every"
+msgstr "Remplissage solide toutes les"
#: src/libslic3r/PrintConfig.cpp:1676
msgid ""
@@ -6640,10 +6628,11 @@ msgid ""
"will automatically choose the maximum possible number of layers to combine "
"according to nozzle diameter and layer height."
msgstr ""
-"This feature allows to force a solid layer every given number of layers. "
-"Zero to disable. You can set this to any value (for example 9999); Slic3r "
-"will automatically choose the maximum possible number of layers to combine "
-"according to nozzle diameter and layer height."
+"Cette fonction permet de forcer l'impression d'une couche solide après le "
+"nombre de couches indiqué. Réglez sur zéro pour la désactiver. Vous pouvez "
+"indiquer n'importe quelle valeur (par exemple 9999); Slic3r choisira "
+"automatiquement le nombre maximum de couches a combiner en fonction du "
+"diamètre de la buse et de l'épaisseur des couches."
#: src/libslic3r/PrintConfig.cpp:1688
msgid ""
@@ -6652,10 +6641,12 @@ msgid ""
"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage "
"(for example 90%) it will be computed over layer height."
msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for infill for "
-"solid surfaces. If left zero, default extrusion width will be used if set, "
-"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage "
-"(for example 90%) it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour le remplissage ou les surfaces solides. Si la "
+"valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si "
+"définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la "
+"valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée "
+"par rapport à la hauteur de couche."
#: src/libslic3r/PrintConfig.cpp:1698
msgid ""
@@ -6663,17 +6654,20 @@ msgid ""
"This can be expressed as a percentage (for example: 80%) over the default "
"infill speed above. Set to zero for auto."
msgstr ""
-"Speed for printing solid regions (top/bottom/internal horizontal shells). "
-"This can be expressed as a percentage (for example: 80%) over the default "
-"infill speed above. Set to zero for auto."
+"Vitesse pour imprimer des zones solides (supérieures/inférieures/parois "
+"horizontales internes). Peut être exprimée en pourcentage (par exemple: 80%) "
+"de la vitesse de remplissage par défaut susmentionnée. Réglez sur zéro pour "
+"un ajustement automatique."
#: src/libslic3r/PrintConfig.cpp:1710
msgid "Number of solid layers to generate on top and bottom surfaces."
-msgstr "Number of solid layers to generate on top and bottom surfaces."
+msgstr ""
+"Nombre de couches solides à générer sur les surfaces supérieures et "
+"inférieures."
#: src/libslic3r/PrintConfig.cpp:1716
msgid "Spiral vase"
-msgstr "Spiral vase"
+msgstr "Vase spiral"
#: src/libslic3r/PrintConfig.cpp:1717
msgid ""
@@ -6683,15 +6677,16 @@ msgid ""
"any number of bottom solid layers as well as skirt/brim loops. It won't work "
"when printing more than an object."
msgstr ""
-"This feature will raise Z gradually while printing a single-walled object in "
-"order to remove any visible seam. This option requires a single perimeter, "
-"no infill, no top solid layers and no support material. You can still set "
-"any number of bottom solid layers as well as skirt/brim loops. It won't work "
-"when printing more than an object."
+"Cette fonction élèvera le Z graduellement en cas d'impression d'un objet à "
+"paroi unique, afin de rendre invisibles les jointures. Cette option "
+"nécessite de n'avoir qu'un seul périmètre, de ne pas avoir de remplissage, "
+"ni de surface solide supérieure, ni de support. Vous pouvez toujours choisir "
+"le nombre de surface solides inférieures de même que les boucles des jupes "
+"et des bordures. Cela ne fonctionnera pas si vous imprimez plus d'un objet."
#: src/libslic3r/PrintConfig.cpp:1725
msgid "Temperature variation"
-msgstr "Temperature variation"
+msgstr "Variation de température"
#: src/libslic3r/PrintConfig.cpp:1726
msgid ""
@@ -6699,9 +6694,9 @@ msgid ""
"a full-height \"sacrificial\" skirt on which the nozzles are periodically "
"wiped."
msgstr ""
-"Temperature difference to be applied when an extruder is not active. Enables "
-"a full-height \"sacrificial\" skirt on which the nozzles are periodically "
-"wiped."
+"Différence de température devant être appliquée quand un extrudeur n'est pas "
+"actif. Permet la génération d'un contour complet \"sacrificiel\" sur lequel "
+"les buses sont nettoyées régulièrement."
#: src/libslic3r/PrintConfig.cpp:1736
msgid ""
@@ -6713,13 +6708,15 @@ msgid ""
"you can use placeholder variables for all Slic3r settings, so you can put a "
"\"M109 S[first_layer_temperature]\" command wherever you want."
msgstr ""
-"This start procedure is inserted at the beginning, after bed has reached the "
-"target temperature and extruder just started heating, and before extruder "
-"has finished heating. If Slic3r detects M104 or M190 in your custom codes, "
-"such commands will not be prepended automatically so you're free to "
-"customize the order of heating commands and other custom actions. Note that "
-"you can use placeholder variables for all Slic3r settings, so you can put a "
-"\"M109 S[first_layer_temperature]\" command wherever you want."
+"Cette procédure de démarrage est insérée au début, après que le plateau a "
+"atteint la température ciblée et lorsque l'extrudeur vient juste de "
+"commencer à chauffer, et avant que l'extrudeur ait terminé de chauffer. Si "
+"Slic3r détecte des commandes M104 ou M190 dans vos codes personnalisés, ces "
+"commandes ne seront pas ajoutées automatiquement ainsi vous serez libre de "
+"personnaliser l'ordre des commandes de chauffe et autres actions "
+"personnalisées. Notez que vous pouvez utiliser des variables génériques pour "
+"tous les réglages de Slic3r, donc vous pouvez mettre une commande "
+"\"M109S[first_layer_temperature]\" où vous le souhaitez."
#: src/libslic3r/PrintConfig.cpp:1751
msgid ""
@@ -6732,46 +6729,46 @@ msgid ""
"S[first_layer_temperature]\" command wherever you want. If you have multiple "
"extruders, the gcode is processed in extruder order."
msgstr ""
-"This start procedure is inserted at the beginning, after any printer start "
-"gcode. This is used to override settings for a specific filament. If Slic3r "
-"detects M104, M109, M140 or M190 in your custom codes, such commands will "
-"not be prepended automatically so you're free to customize the order of "
-"heating commands and other custom actions. Note that you can use placeholder "
-"variables for all Slic3r settings, so you can put a \"M109 "
-"S[first_layer_temperature]\" command wherever you want. If you have multiple "
-"extruders, the gcode is processed in extruder order."
+"Cette procédure de démarrage est insérée au début, après un gcode de "
+"démarrage de l'imprimante. Elle est utilisée pour remplacer les réglages "
+"pour un filament spécifique. Si Slic3r détecte des commandes M104, M109, "
+"M140 ou M190 dans vos codes personnalisés ces commandes ne seront pas "
+"ajoutées automatiquement, de cette manière vous pouvez personnaliser la "
+"procédure de chauffe et autres actions. Notez que vous pouvez utiliser des "
+"variables génériques pour tous les réglages de Slic3r, donc vous pouvez "
+"saisir une commande \"M109 S[first_layer_temperature]\" où vous voulez. Si "
+"vous avez plusieurs extrudeurs, le G-Code sera exécuté dans l'ordre des "
+"extrudeurs."
#: src/libslic3r/PrintConfig.cpp:1766
msgid "Single Extruder Multi Material"
-msgstr "Single Extruder Multi Material"
+msgstr "Extrudeur Unique Multi-Matériaux"
#: src/libslic3r/PrintConfig.cpp:1767
msgid "The printer multiplexes filaments into a single hot end."
-msgstr "The printer multiplexes filaments into a single hot end."
+msgstr "L'imprimante multiplexe les filaments vers une seule tête d'extrusion."
#: src/libslic3r/PrintConfig.cpp:1772
msgid "Prime all printing extruders"
-msgstr "Prime all printing extruders"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1773
msgid ""
"If enabled, all printing extruders will be primed at the front edge of the "
"print bed at the start of the print."
msgstr ""
-"If enabled, all printing extruders will be primed at the front edge of the "
-"print bed at the start of the print."
#: src/libslic3r/PrintConfig.cpp:1778
msgid "Generate support material"
-msgstr "Generate support material"
+msgstr "Générer des supports"
#: src/libslic3r/PrintConfig.cpp:1780
msgid "Enable support material generation."
-msgstr "Enable support material generation."
+msgstr "Activer la génération des supports."
#: src/libslic3r/PrintConfig.cpp:1784
msgid "Auto generated supports"
-msgstr "Auto generated supports"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1786
msgid ""
@@ -6779,45 +6776,42 @@ msgid ""
"threshold value. If unchecked, supports will be generated inside the "
"\"Support Enforcer\" volumes only."
msgstr ""
-"If checked, supports will be generated automatically based on the overhang "
-"threshold value. If unchecked, supports will be generated inside the "
-"\"Support Enforcer\" volumes only."
#: src/libslic3r/PrintConfig.cpp:1792
msgid "XY separation between an object and its support"
-msgstr "XY separation between an object and its support"
+msgstr "Séparation XY entre un objet et son support"
#: src/libslic3r/PrintConfig.cpp:1794
msgid ""
"XY separation between an object and its support. If expressed as percentage "
"(for example 50%), it will be calculated over external perimeter width."
msgstr ""
-"XY separation between an object and its support. If expressed as percentage "
-"(for example 50%), it will be calculated over external perimeter width."
+"Séparation XY entre un objet et son support. Si la valeur est exprimée en "
+"pourcentage (par exemple 50%), elle sera calculée à partir de la largeur du "
+"périmètre extérieur."
#: src/libslic3r/PrintConfig.cpp:1804
msgid "Pattern angle"
-msgstr "Pattern angle"
+msgstr "Angle du motif"
#: src/libslic3r/PrintConfig.cpp:1806
msgid ""
"Use this setting to rotate the support material pattern on the horizontal "
"plane."
msgstr ""
-"Use this setting to rotate the support material pattern on the horizontal "
-"plane."
+"Utiliser ce réglage pour orienter le motif du support sur le plan horizontal."
-#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2421
+#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2423
msgid ""
"Only create support if it lies on a build plate. Don't create support on a "
"print."
msgstr ""
-"Only create support if it lies on a build plate. Don't create support on a "
-"print."
+"Créer uniquement des supports reposant sur le plateau. Ne pas créer pas de "
+"supports sur une impression."
#: src/libslic3r/PrintConfig.cpp:1822
msgid "Contact Z distance"
-msgstr "Contact Z distance"
+msgstr "Distance de contact Z"
#: src/libslic3r/PrintConfig.cpp:1824
msgid ""
@@ -6825,21 +6819,21 @@ msgid ""
"this to 0 will also prevent Slic3r from using bridge flow and speed for the "
"first object layer."
msgstr ""
-"The vertical distance between object and support material interface. Setting "
-"this to 0 will also prevent Slic3r from using bridge flow and speed for the "
-"first object layer."
+"Distance verticale entre l'objet et l'intercalaire du support. Régler cette "
+"valeur sur zéro empêchera Slic3r d'utiliser la vitesse et le débit des ponts "
+"pour la première couche de l'objet."
#: src/libslic3r/PrintConfig.cpp:1831
msgid "soluble"
-msgstr "soluble"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1832
msgid "detachable"
-msgstr "detachable"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1837
msgid "Enforce support for the first"
-msgstr "Enforce support for the first"
+msgstr "Renforcer le support sur le(s) première(s)"
#: src/libslic3r/PrintConfig.cpp:1839
msgid ""
@@ -6848,26 +6842,26 @@ msgid ""
"regardless of any angle threshold. This is useful for getting more adhesion "
"of objects having a very thin or poor footprint on the build plate."
msgstr ""
-"Generate support material for the specified number of layers counting from "
-"bottom, regardless of whether normal support material is enabled or not and "
-"regardless of any angle threshold. This is useful for getting more adhesion "
-"of objects having a very thin or poor footprint on the build plate."
+"Générer des supports pour le nombre de couches spécifié à partir du bas, que "
+"les supports normaux soient activés ou non et sans tenir compte de seuils "
+"d'inclinaison. Ceci est utile pour obtenir une meilleure adhésion pour des "
+"objets ayant une surface de contact très fine ou limitée sur le plateau."
#: src/libslic3r/PrintConfig.cpp:1844
msgid "Enforce support for the first n layers"
-msgstr "Enforce support for the first n layers"
+msgstr "Renforcer le support pour les n premières couches"
#: src/libslic3r/PrintConfig.cpp:1850
msgid "Support material/raft/skirt extruder"
-msgstr "Support material/raft/skirt extruder"
+msgstr "Extrudeur pour support/raft/jupe"
#: src/libslic3r/PrintConfig.cpp:1852
msgid ""
"The extruder to use when printing support material, raft and skirt (1+, 0 to "
"use the current extruder to minimize tool changes)."
msgstr ""
-"The extruder to use when printing support material, raft and skirt (1+, 0 to "
-"use the current extruder to minimize tool changes)."
+"L'extrudeur à utiliser pour imprimer des supports, du raft ou des contours "
+"(1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil)."
#: src/libslic3r/PrintConfig.cpp:1861
msgid ""
@@ -6876,52 +6870,56 @@ msgid ""
"otherwise nozzle diameter will be used. If expressed as percentage (for "
"example 90%) it will be computed over layer height."
msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for support "
-"material. If left zero, default extrusion width will be used if set, "
-"otherwise nozzle diameter will be used. If expressed as percentage (for "
-"example 90%) it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour les supports. Si la valeur reste sur zéro, la "
+"largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre "
+"de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par "
+"exemple : 90%), elle sera calculée par rapport à la hauteur de couche."
#: src/libslic3r/PrintConfig.cpp:1869
msgid "Interface loops"
-msgstr "Interface loops"
+msgstr "Boucles d'interface"
#: src/libslic3r/PrintConfig.cpp:1871
msgid ""
"Cover the top contact layer of the supports with loops. Disabled by default."
msgstr ""
-"Cover the top contact layer of the supports with loops. Disabled by default."
+"Recouvrir la couche de contact supérieure des supports avec des boucles. "
+"Désactivé par défaut."
#: src/libslic3r/PrintConfig.cpp:1876
msgid "Support material/raft interface extruder"
-msgstr "Support material/raft interface extruder"
+msgstr "Extrudeur pour l'interface des supports/du radeau"
#: src/libslic3r/PrintConfig.cpp:1878
msgid ""
"The extruder to use when printing support material interface (1+, 0 to use "
"the current extruder to minimize tool changes). This affects raft too."
msgstr ""
-"The extruder to use when printing support material interface (1+, 0 to use "
-"the current extruder to minimize tool changes). This affects raft too."
+"L'extrudeur à utiliser pour imprimer les intercalaires du support (1+,0 pour "
+"utiliser l'extrudeur actuel et limiter les changements d'outil). Cela "
+"affecte également le raft."
#: src/libslic3r/PrintConfig.cpp:1885
msgid "Interface layers"
-msgstr "Interface layers"
+msgstr "Couches d'interface"
#: src/libslic3r/PrintConfig.cpp:1887
msgid ""
"Number of interface layers to insert between the object(s) and support "
"material."
msgstr ""
-"Number of interface layers to insert between the object(s) and support "
-"material."
+"Nombre de couches d'interface à insérer entre le(s) objet(s) et les supports."
#: src/libslic3r/PrintConfig.cpp:1894
msgid "Interface pattern spacing"
-msgstr "Interface pattern spacing"
+msgstr "Espacement du motif d'interface"
#: src/libslic3r/PrintConfig.cpp:1896
msgid "Spacing between interface lines. Set zero to get a solid interface."
-msgstr "Spacing between interface lines. Set zero to get a solid interface."
+msgstr ""
+"Espacement entre les lignes d'interface. Mettez à zéro pour obtenir une "
+"interface solide."
#: src/libslic3r/PrintConfig.cpp:1905
msgid ""
@@ -6929,49 +6927,50 @@ msgid ""
"percentage (for example 50%) it will be calculated over support material "
"speed."
msgstr ""
-"Speed for printing support material interface layers. If expressed as "
-"percentage (for example 50%) it will be calculated over support material "
-"speed."
+"Vitesse d'impression des couches d'interface des supports. Si exprimée en "
+"pourcentage (par exemple 50%), elle sera calculée à partir de la vitesse "
+"d'impression des supports."
#: src/libslic3r/PrintConfig.cpp:1914
msgid "Pattern"
-msgstr "Pattern"
+msgstr "Motif"
#: src/libslic3r/PrintConfig.cpp:1916
msgid "Pattern used to generate support material."
-msgstr "Pattern used to generate support material."
+msgstr "Motif utilisé pour générer les supports."
#: src/libslic3r/PrintConfig.cpp:1922
msgid "Rectilinear grid"
-msgstr "Rectilinear grid"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:1928
msgid "Pattern spacing"
-msgstr "Pattern spacing"
+msgstr "Espacement du motif"
#: src/libslic3r/PrintConfig.cpp:1930
msgid "Spacing between support material lines."
-msgstr "Spacing between support material lines."
+msgstr "Espacement entre les lignes des supports."
#: src/libslic3r/PrintConfig.cpp:1939
msgid "Speed for printing support material."
-msgstr "Speed for printing support material."
+msgstr "Vitesse d'impression du support."
#: src/libslic3r/PrintConfig.cpp:1946
msgid "Synchronize with object layers"
-msgstr "Synchronize with object layers"
+msgstr "Synchroniser avec les couches de l'objet"
#: src/libslic3r/PrintConfig.cpp:1948
msgid ""
"Synchronize support layers with the object print layers. This is useful with "
"multi-material printers, where the extruder switch is expensive."
msgstr ""
-"Synchronize support layers with the object print layers. This is useful with "
-"multi-material printers, where the extruder switch is expensive."
+"Synchroniser les couches du support avec les couches d'impression de "
+"l'objet. Cela est utile pour les imprimantes multi-matériaux, pour "
+"lesquelles le changement d'extrudeur est onéreux."
#: src/libslic3r/PrintConfig.cpp:1954
msgid "Overhang threshold"
-msgstr "Overhang threshold"
+msgstr "Seuil de surplomb"
#: src/libslic3r/PrintConfig.cpp:1956
msgid ""
@@ -6981,47 +6980,49 @@ msgid ""
"that you can print without support material. Set to zero for automatic "
"detection (recommended)."
msgstr ""
-"Support material will not be generated for overhangs whose slope angle (90° "
-"= vertical) is above the given threshold. In other words, this value "
-"represent the most horizontal slope (measured from the horizontal plane) "
-"that you can print without support material. Set to zero for automatic "
-"detection (recommended)."
+"Le support ne sera pas généré pour les surplombs dont l'inclinaison (90° = "
+"vertical) dépasse le seuil défini. Autrement dit, cette valeur représente "
+"l'inclinaison horizontale maximum (mesurée à partir du plan horizontal) que "
+"vous pouvez imprimer sans support. Réglez sur zéro pour une détection "
+"automatique (recommandé)."
#: src/libslic3r/PrintConfig.cpp:1968
msgid "With sheath around the support"
-msgstr "With sheath around the support"
+msgstr "Avec une enveloppe autour du support"
#: src/libslic3r/PrintConfig.cpp:1970
msgid ""
"Add a sheath (a single perimeter line) around the base support. This makes "
"the support more reliable, but also more difficult to remove."
msgstr ""
-"Add a sheath (a single perimeter line) around the base support. This makes "
-"the support more reliable, but also more difficult to remove."
+"Ajouter une enveloppe (une ligne unique de périmètre) autour de la base du "
+"support. Ceci rend le support plus fiable, mais aussi plus difficile à "
+"retirer."
#: src/libslic3r/PrintConfig.cpp:1977
msgid ""
"Extruder temperature for layers after the first one. Set this to zero to "
"disable temperature control commands in the output."
msgstr ""
-"Extruder temperature for layers after the first one. Set this to zero to "
-"disable temperature control commands in the output."
+"Température de l'extrudeur pour les couches après la première. Mettez zéro "
+"pour désactiver les commandes de contrôle de la température dans le fichier "
+"de sortie."
#: src/libslic3r/PrintConfig.cpp:1979
msgid "Temperature"
-msgstr "Temperature"
+msgstr "Température"
#: src/libslic3r/PrintConfig.cpp:1985
msgid "Detect thin walls"
-msgstr "Detect thin walls"
+msgstr "Détecter les parois fines"
#: src/libslic3r/PrintConfig.cpp:1987
msgid ""
"Detect single-width walls (parts where two extrusions don't fit and we need "
"to collapse them into a single trace)."
msgstr ""
-"Detect single-width walls (parts where two extrusions don't fit and we need "
-"to collapse them into a single trace)."
+"Détecter les parois de largeur unique (où deux extrusions côte à côte ne "
+"rentrent pas et doivent êtres fusionnées en un seul trait)."
#: src/libslic3r/PrintConfig.cpp:1993
msgid "Threads"
@@ -7032,8 +7033,9 @@ msgid ""
"Threads are used to parallelize long-running tasks. Optimal threads number "
"is slightly above the number of available cores/processors."
msgstr ""
-"Threads are used to parallelize long-running tasks. Optimal threads number "
-"is slightly above the number of available cores/processors."
+"Les threads sont utilisés pour paralléliser les calculs longs. Le nombre "
+"optimal de threads est légèrement supérieur au nombre de coeurs/processeurs "
+"disponibles."
#: src/libslic3r/PrintConfig.cpp:2006
msgid ""
@@ -7041,9 +7043,9 @@ msgid ""
"you can use placeholder variables for all Slic3r settings as well as "
"[previous_extruder] and [next_extruder]."
msgstr ""
-"This custom code is inserted right before every extruder change. Note that "
-"you can use placeholder variables for all Slic3r settings as well as "
-"[previous_extruder] and [next_extruder]."
+"Ce code personnalisé est inséré juste avant chaque changement d'extrudeur. "
+"Notez que vous pouvez utiliser des variables génériques pour tous les "
+"réglages de Slic3r de même que [previous_extruder] et [next_extruder]."
#: src/libslic3r/PrintConfig.cpp:2018
msgid ""
@@ -7053,11 +7055,14 @@ msgid ""
"will be used if set, otherwise nozzle diameter will be used. If expressed as "
"percentage (for example 90%) it will be computed over layer height."
msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for infill for "
-"top surfaces. You may want to use thinner extrudates to fill all narrow "
-"regions and get a smoother finish. If left zero, default extrusion width "
-"will be used if set, otherwise nozzle diameter will be used. If expressed as "
-"percentage (for example 90%) it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour le remplissage ou les surfaces supérieures. Vous "
+"voudrez peut-être utiliser des extrudats plus fins pour remplir les zones "
+"les plus étroites et obtenir des finitions plus lisses. Si la valeur reste "
+"sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon "
+"le diamètre de la buse sera utilisé. Si la valeur est exprimée en "
+"pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur "
+"de couche."
#: src/libslic3r/PrintConfig.cpp:2029
msgid ""
@@ -7067,51 +7072,56 @@ msgid ""
"percentage (for example: 80%) over the solid infill speed above. Set to zero "
"for auto."
msgstr ""
-"Speed for printing top solid layers (it only applies to the uppermost "
-"external layers and not to their internal solid layers). You may want to "
-"slow down this to get a nicer surface finish. This can be expressed as a "
-"percentage (for example: 80%) over the solid infill speed above. Set to zero "
-"for auto."
+"Vitesse pour imprimer les couches solides supérieures (ne s'applique qu'aux "
+"couches externes les plus hautes et pas aux couches internes solides). Vous "
+"voudrez peut-être abaisser cette vitesse afin d'avoir une finition de "
+"surface plus nette. Peut être exprimé en pourcentage (par exemple: 80%) de "
+"la vitesse de remplissage solide susmentionnée. Réglez sur zéro pour un "
+"ajustement automatique."
#: src/libslic3r/PrintConfig.cpp:2043
msgid "Number of solid layers to generate on top surfaces."
-msgstr "Number of solid layers to generate on top surfaces."
+msgstr "Nombre de couches solides à générer sur les surfaces supérieures."
#: src/libslic3r/PrintConfig.cpp:2044
msgid "Top solid layers"
-msgstr "Top solid layers"
+msgstr "Couches supérieures solides"
#: src/libslic3r/PrintConfig.cpp:2050
msgid "Speed for travel moves (jumps between distant extrusion points)."
-msgstr "Speed for travel moves (jumps between distant extrusion points)."
+msgstr ""
+"Vitesse pour les déplacements (trajet entre deux points d'extrusion "
+"distants)."
#: src/libslic3r/PrintConfig.cpp:2058
msgid "Use firmware retraction"
-msgstr "Use firmware retraction"
+msgstr "Utiliser la rétractation du firmware"
#: src/libslic3r/PrintConfig.cpp:2059
msgid ""
"This experimental setting uses G10 and G11 commands to have the firmware "
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
-"This experimental setting uses G10 and G11 commands to have the firmware "
-"handle the retraction. This is only supported in recent Marlin."
+"Ce réglage expérimental utilise les commandes G10 et G11 pour laisser le "
+"firmware gérer la rétractation. Utilisable seulement par les versions "
+"récentes de Marlin."
#: src/libslic3r/PrintConfig.cpp:2065
msgid "Use relative E distances"
-msgstr "Use relative E distances"
+msgstr "Utiliser des valeurs E relatives"
#: src/libslic3r/PrintConfig.cpp:2066
msgid ""
"If your firmware requires relative E values, check this, otherwise leave it "
"unchecked. Most firmwares use absolute values."
msgstr ""
-"If your firmware requires relative E values, check this, otherwise leave it "
-"unchecked. Most firmwares use absolute values."
+"Si votre firmware requiert des valeurs relatives pour E, cochez cette case, "
+"sinon laissez-la décochée. La plupart des firmwares utilisent des valeurs "
+"absolues."
#: src/libslic3r/PrintConfig.cpp:2072
msgid "Use volumetric E"
-msgstr "Use volumetric E"
+msgstr "E Volumétrique"
#: src/libslic3r/PrintConfig.cpp:2073
msgid ""
@@ -7122,48 +7132,51 @@ msgid ""
"filament diameter associated to the filament selected in Slic3r. This is "
"only supported in recent Marlin."
msgstr ""
-"This experimental setting uses outputs the E values in cubic millimeters "
-"instead of linear millimeters. If your firmware doesn't already know "
-"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] "
-"T0' in your start G-code in order to turn volumetric mode on and use the "
-"filament diameter associated to the filament selected in Slic3r. This is "
-"only supported in recent Marlin."
+"Cette fonction expérimentale génère des valeurs de E en millimètres cubiques "
+"au lieu de millimètres linéaires. Si votre firmware ne connait pas déjà le "
+"diamètre du filament, vous pouvez saisir une commande comme 'M200 "
+"D[filament_diameter_0] T0' dans votre G-Code de début pour activer le mode "
+"volumétrique, et utiliser le diamètre de filament associé au filament choisi "
+"dans Slic3r. Cette fonction n'est utilisable que dans les versions récentes "
+"de Marlin."
#: src/libslic3r/PrintConfig.cpp:2083
msgid "Enable variable layer height feature"
-msgstr "Enable variable layer height feature"
+msgstr "Activer la fonction de hauteur de couche variable"
#: src/libslic3r/PrintConfig.cpp:2084
msgid ""
"Some printers or printer setups may have difficulties printing with a "
"variable layer height. Enabled by default."
msgstr ""
-"Some printers or printer setups may have difficulties printing with a "
-"variable layer height. Enabled by default."
+"Certaines imprimantes ou certains réglages d'imprimante peuvent rencontrer "
+"des difficultés pour imprimer avec une hauteur de couche variable. Activé "
+"par défaut."
#: src/libslic3r/PrintConfig.cpp:2090
msgid "Wipe while retracting"
-msgstr "Wipe while retracting"
+msgstr "Nettoyer lors des rétractations"
#: src/libslic3r/PrintConfig.cpp:2091
msgid ""
"This flag will move the nozzle while retracting to minimize the possible "
"blob on leaky extruders."
msgstr ""
-"This flag will move the nozzle while retracting to minimize the possible "
-"blob on leaky extruders."
+"Cette option déplace la buse lors des rétractations, limitant ainsi "
+"l'apparition d'amas sur les extrudeurs ayant tendance à couler."
#: src/libslic3r/PrintConfig.cpp:2098
msgid ""
"Multi material printers may need to prime or purge extruders on tool "
"changes. Extrude the excess material into the wipe tower."
msgstr ""
-"Multi material printers may need to prime or purge extruders on tool "
-"changes. Extrude the excess material into the wipe tower."
+"Les imprimantes multi-matériaux peuvent avoir besoin de préparer ou de "
+"purger leurs extrudeurs lors d'un changement d'outil. Extruder le matériau "
+"en excès dans la tour de nettoyage."
#: src/libslic3r/PrintConfig.cpp:2104
msgid "Purging volumes - load/unload volumes"
-msgstr "Purging volumes - load/unload volumes"
+msgstr "Volumes de purge - volumes de chargement/déchargement"
#: src/libslic3r/PrintConfig.cpp:2105
msgid ""
@@ -7171,21 +7184,22 @@ msgid ""
"wipe tower. These values are used to simplify creation of the full purging "
"volumes below. "
msgstr ""
-"This vector saves required volumes to change from/to each tool used on the "
-"wipe tower. These values are used to simplify creation of the full purging "
-"volumes below. "
+"Ce vecteur enregistre les volumes requis pour changer l'outil utilisé pour "
+"la tour de nettoyage. Ces valeurs sont utilisées pour simplifier la création "
+"des volumes de purge complets ci-dessous. "
#: src/libslic3r/PrintConfig.cpp:2111
msgid "Purging volumes - matrix"
-msgstr "Purging volumes - matrix"
+msgstr "Volumes de purge - matrice"
#: src/libslic3r/PrintConfig.cpp:2112
msgid ""
"This matrix describes volumes (in cubic milimetres) required to purge the "
"new filament on the wipe tower for any given pair of tools. "
msgstr ""
-"This matrix describes volumes (in cubic milimetres) required to purge the "
-"new filament on the wipe tower for any given pair of tools. "
+"Cette matrice décrit les volumes (en millimètres cube) nécessaires pour "
+"purger le nouveau filament dans la tour de nettoyage pour une paire d'outils "
+"donnée. "
#: src/libslic3r/PrintConfig.cpp:2121
msgid "Position X"
@@ -7193,7 +7207,7 @@ msgstr "Position X"
#: src/libslic3r/PrintConfig.cpp:2122
msgid "X coordinate of the left front corner of a wipe tower"
-msgstr "X coordinate of the left front corner of a wipe tower"
+msgstr "Coordonnée X du coin avant gauche d'une tour de nettoyage"
#: src/libslic3r/PrintConfig.cpp:2128
msgid "Position Y"
@@ -7201,27 +7215,27 @@ msgstr "Position Y"
#: src/libslic3r/PrintConfig.cpp:2129
msgid "Y coordinate of the left front corner of a wipe tower"
-msgstr "Y coordinate of the left front corner of a wipe tower"
+msgstr "Coordonnée Y du coin avant gauche d'une tour de nettoyage"
#: src/libslic3r/PrintConfig.cpp:2136
msgid "Width of a wipe tower"
-msgstr "Width of a wipe tower"
+msgstr "Largeur d'une tour de nettoyage"
#: src/libslic3r/PrintConfig.cpp:2142
msgid "Wipe tower rotation angle"
-msgstr "Wipe tower rotation angle"
+msgstr "Angle de rotation de la tour de nettoyage"
#: src/libslic3r/PrintConfig.cpp:2143
msgid "Wipe tower rotation angle with respect to x-axis "
-msgstr "Wipe tower rotation angle with respect to x-axis "
+msgstr "Angle de rotation de la tour de nettoyage par rapport à l'axe X "
-#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2565
+#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2570
msgid "degrees"
-msgstr "degrees"
+msgstr "degrés"
#: src/libslic3r/PrintConfig.cpp:2150
msgid "Wipe into this object's infill"
-msgstr "Wipe into this object's infill"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2151
msgid ""
@@ -7229,13 +7243,10 @@ msgid ""
"the amount of waste but may result in longer print time due to additional "
"travel moves."
msgstr ""
-"Purging after toolchange will done inside this object's infills. This lowers "
-"the amount of waste but may result in longer print time due to additional "
-"travel moves."
#: src/libslic3r/PrintConfig.cpp:2158
msgid "Wipe into this object"
-msgstr "Wipe into this object"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2159
msgid ""
@@ -7243,21 +7254,19 @@ msgid ""
"that would otherwise end up in the wipe tower and decrease print time. "
"Colours of the objects will be mixed as a result."
msgstr ""
-"Object will be used to purge the nozzle after a toolchange to save material "
-"that would otherwise end up in the wipe tower and decrease print time. "
-"Colours of the objects will be mixed as a result."
#: src/libslic3r/PrintConfig.cpp:2165
msgid "Maximal bridging distance"
-msgstr "Maximal bridging distance"
+msgstr "Distance maximale de pont"
#: src/libslic3r/PrintConfig.cpp:2166
msgid "Maximal distance between supports on sparse infill sections. "
-msgstr "Maximal distance between supports on sparse infill sections. "
+msgstr ""
+"Distance maximale entre les supports sur les sections de remplissage épars. "
#: src/libslic3r/PrintConfig.cpp:2172
msgid "XY Size Compensation"
-msgstr "XY Size Compensation"
+msgstr "Compensation de Taille XY"
#: src/libslic3r/PrintConfig.cpp:2174
msgid ""
@@ -7265,13 +7274,13 @@ msgid ""
"(negative = inwards, positive = outwards). This might be useful for fine-"
"tuning hole sizes."
msgstr ""
-"The object will be grown/shrunk in the XY plane by the configured value "
-"(negative = inwards, positive = outwards). This might be useful for fine-"
-"tuning hole sizes."
+"L'objet sera agrandi/réduit sur les plans XY selon la valeur indiquée "
+"(négatif = réduit, positif = agrandi). Ce réglage peut être utile pour un "
+"réglage fin des tailles de trous."
#: src/libslic3r/PrintConfig.cpp:2182
msgid "Z offset"
-msgstr "Z offset"
+msgstr "Décalage Z"
#: src/libslic3r/PrintConfig.cpp:2183
msgid ""
@@ -7280,42 +7289,43 @@ msgid ""
"example, if your endstop zero actually leaves the nozzle 0.3mm far from the "
"print bed, set this to -0.3 (or fix your endstop)."
msgstr ""
-"This value will be added (or subtracted) from all the Z coordinates in the "
-"output G-code. It is used to compensate for bad Z endstop position: for "
-"example, if your endstop zero actually leaves the nozzle 0.3mm far from the "
-"print bed, set this to -0.3 (or fix your endstop)."
+"Cette valeur sera ajoutée (ou soustraite) de toutes les coordonnées Z dans "
+"le G-Code de sortie. Elle est utilisée pour compenser une mauvaise position "
+"de fin de course Z: par exemple si votre fin de course place votre buse à "
+"0.3mm au dessus du plateau, réglez cette valeur sur -0.3 (ou corrigez votre "
+"fin de course)."
#: src/libslic3r/PrintConfig.cpp:2200
msgid "Display width"
-msgstr "Display width"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2201
msgid "Width of the display"
-msgstr "Width of the display"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2206
msgid "Display height"
-msgstr "Display height"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2207
msgid "Height of the display"
-msgstr "Height of the display"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2212
msgid "Number of pixels in"
-msgstr "Number of pixels in"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2214
msgid "Number of pixels in X"
-msgstr "Number of pixels in X"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2220
msgid "Number of pixels in Y"
-msgstr "Number of pixels in Y"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2225
msgid "Display orientation"
-msgstr "Display orientation"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2226
msgid ""
@@ -7323,45 +7333,42 @@ msgid ""
"will flip the meaning of display width and height parameters and the output "
"images will be rotated by 90 degrees."
msgstr ""
-"Set the actual LCD display orientation inside the SLA printer. Portrait mode "
-"will flip the meaning of display width and height parameters and the output "
-"images will be rotated by 90 degrees."
#: src/libslic3r/PrintConfig.cpp:2232
msgid "Landscape"
-msgstr "Landscape"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2233
msgid "Portrait"
-msgstr "Portrait"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2238
msgid "Fast"
-msgstr "Fast"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2239
msgid "Fast tilt"
-msgstr "Fast tilt"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2240
msgid "Time of the fast tilt"
-msgstr "Time of the fast tilt"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2247
msgid "Slow"
-msgstr "Slow"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2248
msgid "Slow tilt"
-msgstr "Slow tilt"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2249
msgid "Time of the slow tilt"
-msgstr "Time of the slow tilt"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2256
msgid "Area fill"
-msgstr "Area fill"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2257
msgid ""
@@ -7369,572 +7376,551 @@ msgid ""
"If the print area exceeds the specified value, \n"
"then a slow tilt will be used, otherwise - a fast tilt"
msgstr ""
-"The percentage of the bed area. \n"
-"If the print area exceeds the specified value, \n"
-"then a slow tilt will be used, otherwise - a fast tilt"
#: src/libslic3r/PrintConfig.cpp:2264 src/libslic3r/PrintConfig.cpp:2265
#: src/libslic3r/PrintConfig.cpp:2266
msgid "Printer scaling correction"
-msgstr "Printer scaling correction"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2273
msgid "Printer absolute correction"
-msgstr "Printer absolute correction"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2274
msgid ""
"Will inflate or deflate the sliced 2D polygons according to the sign of the "
"correction."
msgstr ""
-"Will inflate or deflate the sliced 2D polygons according to the sign of the "
-"correction."
#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2281
msgid "Printer gamma correction"
-msgstr "Printer gamma correction"
+msgstr ""
#: src/libslic3r/PrintConfig.cpp:2282
-msgid "This will apply a gamm correction to the rasterized 2D polygons."
-msgstr "This will apply a gamm correction to the rasterized 2D polygons."
+msgid ""
+"This will apply a gamma correction to the rasterized 2D polygons. A gamma "
+"value of zero means thresholding with the threshold in the middle. This "
+"behaviour eliminates antialiasing without losing holes in polygons."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292
+#: src/libslic3r/PrintConfig.cpp:2293 src/libslic3r/PrintConfig.cpp:2294
msgid "Initial layer height"
-msgstr "Initial layer height"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2298
+#: src/libslic3r/PrintConfig.cpp:2300
msgid "Faded layers"
-msgstr "Faded layers"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2299
+#: src/libslic3r/PrintConfig.cpp:2301
msgid ""
"Number of the layers needed for the exposure time fade from initial exposure "
"time to the exposure time"
msgstr ""
-"Number of the layers needed for the exposure time fade from initial exposure "
-"time to the exposure time"
-#: src/libslic3r/PrintConfig.cpp:2306 src/libslic3r/PrintConfig.cpp:2307
+#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2309
msgid "Exposure time"
-msgstr "Exposure time"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2313 src/libslic3r/PrintConfig.cpp:2314
+#: src/libslic3r/PrintConfig.cpp:2315 src/libslic3r/PrintConfig.cpp:2316
msgid "Initial exposure time"
-msgstr "Initial exposure time"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321
+#: src/libslic3r/PrintConfig.cpp:2322 src/libslic3r/PrintConfig.cpp:2323
msgid "Correction for expansion"
-msgstr "Correction for expansion"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2327
+#: src/libslic3r/PrintConfig.cpp:2329
msgid "SLA print material notes"
-msgstr "SLA print material notes"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2328
+#: src/libslic3r/PrintConfig.cpp:2330
msgid "You can put your notes regarding the SLA print material here."
-msgstr "You can put your notes regarding the SLA print material here."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2336 src/libslic3r/PrintConfig.cpp:2347
+#: src/libslic3r/PrintConfig.cpp:2338 src/libslic3r/PrintConfig.cpp:2349
msgid "Default SLA material profile"
-msgstr "Default SLA material profile"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2358
+#: src/libslic3r/PrintConfig.cpp:2360
msgid "Generate supports"
-msgstr "Generate supports"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2360
+#: src/libslic3r/PrintConfig.cpp:2362
msgid "Generate supports for the models"
-msgstr "Generate supports for the models"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2365
+#: src/libslic3r/PrintConfig.cpp:2367
msgid "Support head front diameter"
-msgstr "Support head front diameter"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2367
+#: src/libslic3r/PrintConfig.cpp:2369
msgid "Diameter of the pointing side of the head"
-msgstr "Diameter of the pointing side of the head"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2374
+#: src/libslic3r/PrintConfig.cpp:2376
msgid "Support head penetration"
-msgstr "Support head penetration"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2376
+#: src/libslic3r/PrintConfig.cpp:2378
msgid "How much the pinhead has to penetrate the model surface"
-msgstr "How much the pinhead has to penetrate the model surface"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2383
+#: src/libslic3r/PrintConfig.cpp:2385
msgid "Support head width"
-msgstr "Support head width"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2385
+#: src/libslic3r/PrintConfig.cpp:2387
msgid "Width from the back sphere center to the front sphere center"
-msgstr "Width from the back sphere center to the front sphere center"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2393
+#: src/libslic3r/PrintConfig.cpp:2395
msgid "Support pillar diameter"
-msgstr "Support pillar diameter"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2395
+#: src/libslic3r/PrintConfig.cpp:2397
msgid "Diameter in mm of the support pillars"
-msgstr "Diameter in mm of the support pillars"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2403
+#: src/libslic3r/PrintConfig.cpp:2405
msgid "Support pillar connection mode"
-msgstr "Support pillar connection mode"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2404
+#: src/libslic3r/PrintConfig.cpp:2406
msgid ""
"Controls the bridge type between two neigboring pillars. Can be zig-zag, "
"cross (double zig-zag) or dynamic which will automatically switch between "
"the first two depending on the distance of the two pillars."
msgstr ""
-"Controls the bridge type between two neigboring pillars. Can be zig-zag, "
-"cross (double zig-zag) or dynamic which will automatically switch between "
-"the first two depending on the distance of the two pillars."
-#: src/libslic3r/PrintConfig.cpp:2412
+#: src/libslic3r/PrintConfig.cpp:2414
msgid "Zig-Zag"
-msgstr "Zig-Zag"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2413
+#: src/libslic3r/PrintConfig.cpp:2415
msgid "Cross"
-msgstr "Cross"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2414
+#: src/libslic3r/PrintConfig.cpp:2416
msgid "Dynamic"
-msgstr "Dynamic"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2426
+#: src/libslic3r/PrintConfig.cpp:2428
msgid "Pillar widening factor"
-msgstr "Pillar widening factor"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2428
+#: src/libslic3r/PrintConfig.cpp:2430
msgid ""
"Merging bridges or pillars into another pillars can increase the radius. "
"Zero means no increase, one means full increase."
msgstr ""
-"Merging bridges or pillars into another pillars can increase the radius. "
-"Zero means no increase, one means full increase."
-#: src/libslic3r/PrintConfig.cpp:2437
+#: src/libslic3r/PrintConfig.cpp:2439
msgid "Support base diameter"
-msgstr "Support base diameter"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2439
+#: src/libslic3r/PrintConfig.cpp:2441
msgid "Diameter in mm of the pillar base"
-msgstr "Diameter in mm of the pillar base"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2447
+#: src/libslic3r/PrintConfig.cpp:2449
msgid "Support base height"
-msgstr "Support base height"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2449
+#: src/libslic3r/PrintConfig.cpp:2451
msgid "The height of the pillar base cone"
-msgstr "The height of the pillar base cone"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2456
+#: src/libslic3r/PrintConfig.cpp:2458
msgid "Critical angle"
-msgstr "Critical angle"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2458
+#: src/libslic3r/PrintConfig.cpp:2460
msgid "The default angle for connecting support sticks and junctions."
-msgstr "The default angle for connecting support sticks and junctions."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2466
+#: src/libslic3r/PrintConfig.cpp:2468
msgid "Max bridge length"
-msgstr "Max bridge length"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2468
+#: src/libslic3r/PrintConfig.cpp:2470
msgid "The max length of a bridge"
-msgstr "The max length of a bridge"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2475
+#: src/libslic3r/PrintConfig.cpp:2477
msgid "Max pillar linking distance"
-msgstr "Max pillar linking distance"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2477
+#: src/libslic3r/PrintConfig.cpp:2479
msgid ""
"The max distance of two pillars to get linked with each other. A zero value "
"will prohibit pillar cascading."
msgstr ""
-"The max distance of two pillars to get linked with each other. A zero value "
-"will prohibit pillar cascading."
-#: src/libslic3r/PrintConfig.cpp:2485
+#: src/libslic3r/PrintConfig.cpp:2487
msgid "Object elevation"
-msgstr "Object elevation"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2487
+#: src/libslic3r/PrintConfig.cpp:2489
msgid "How much the supports should lift up the supported object."
-msgstr "How much the supports should lift up the supported object."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2495
+#: src/libslic3r/PrintConfig.cpp:2497
msgid "Support points density"
-msgstr "Support points density"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2497
+#: src/libslic3r/PrintConfig.cpp:2499
msgid "This is a relative measure of support points density."
-msgstr "This is a relative measure of support points density."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2503
+#: src/libslic3r/PrintConfig.cpp:2505
msgid "Minimal distance of the support points"
-msgstr "Minimal distance of the support points"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2505
+#: src/libslic3r/PrintConfig.cpp:2507
msgid "No support points will be placed closer than this threshold."
-msgstr "No support points will be placed closer than this threshold."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2511
+#: src/libslic3r/PrintConfig.cpp:2513
msgid "Use pad"
-msgstr "Use pad"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2513
+#: src/libslic3r/PrintConfig.cpp:2515
msgid "Add a pad underneath the supported model"
-msgstr "Add a pad underneath the supported model"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2518
+#: src/libslic3r/PrintConfig.cpp:2520
msgid "Pad wall thickness"
-msgstr "Pad wall thickness"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2520
+#: src/libslic3r/PrintConfig.cpp:2522
msgid "The thickness of the pad and its optional cavity walls."
-msgstr "The thickness of the pad and its optional cavity walls."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2528
+#: src/libslic3r/PrintConfig.cpp:2530
msgid "Pad wall height"
-msgstr "Pad wall height"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2529
-msgid "Defines the cavity depth. Set to zero to disable the cavity."
-msgstr "Defines the cavity depth. Set to zero to disable the cavity."
+#: src/libslic3r/PrintConfig.cpp:2531
+msgid ""
+"Defines the pad cavity depth. Set to zero to disable the cavity. Be careful "
+"when enabling this feature, as some resins may produce an extreme suction "
+"effect inside the cavity, which makes pealing the print off the vat foil "
+"difficult."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2539
+#: src/libslic3r/PrintConfig.cpp:2544
msgid "Max merge distance"
-msgstr "Max merge distance"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2541
+#: src/libslic3r/PrintConfig.cpp:2546
msgid ""
"Some objects can get along with a few smaller pads instead of a single big "
"one. This parameter defines how far the center of two smaller pads should "
"be. If theyare closer, they will get merged into one pad."
msgstr ""
-"Some objects can get along with a few smaller pads instead of a single big "
-"one. This parameter defines how far the center of two smaller pads should "
-"be. If theyare closer, they will get merged into one pad."
-#: src/libslic3r/PrintConfig.cpp:2552
+#: src/libslic3r/PrintConfig.cpp:2557
msgid "Pad edge radius"
-msgstr "Pad edge radius"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2561
+#: src/libslic3r/PrintConfig.cpp:2566
msgid "Pad wall slope"
-msgstr "Pad wall slope"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2563
+#: src/libslic3r/PrintConfig.cpp:2568
msgid ""
"The slope of the pad wall relative to the bed plane. 90 degrees means "
"straight walls."
msgstr ""
-"The slope of the pad wall relative to the bed plane. 90 degrees means "
-"straight walls."
-#: src/libslic3r/PrintConfig.cpp:2924
+#: src/libslic3r/PrintConfig.cpp:2929
msgid "Export SVG"
-msgstr "Export SVG"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2925
+#: src/libslic3r/PrintConfig.cpp:2930
msgid "Export the model(s) as OBJ."
-msgstr "Export the model(s) as OBJ."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2936
+#: src/libslic3r/PrintConfig.cpp:2941
msgid "Export SLA"
-msgstr "Export SLA"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2937
+#: src/libslic3r/PrintConfig.cpp:2942
msgid "Slice the model and export SLA printing layers as PNG."
-msgstr "Slice the model and export SLA printing layers as PNG."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2942
+#: src/libslic3r/PrintConfig.cpp:2947
msgid "Export 3MF"
-msgstr "Export 3MF"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2943
+#: src/libslic3r/PrintConfig.cpp:2948
msgid "Export the model(s) as 3MF."
-msgstr "Export the model(s) as 3MF."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2947
+#: src/libslic3r/PrintConfig.cpp:2952
msgid "Export AMF"
-msgstr "Export AMF"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2948
+#: src/libslic3r/PrintConfig.cpp:2953
msgid "Export the model(s) as AMF."
-msgstr "Export the model(s) as AMF."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2952
+#: src/libslic3r/PrintConfig.cpp:2957
msgid "Export STL"
-msgstr "Export STL"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2953
+#: src/libslic3r/PrintConfig.cpp:2958
msgid "Export the model(s) as STL."
-msgstr "Export the model(s) as STL."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2958
+#: src/libslic3r/PrintConfig.cpp:2963
msgid "Slice the model and export toolpaths as G-code."
-msgstr "Slice the model and export toolpaths as G-code."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2963
+#: src/libslic3r/PrintConfig.cpp:2968
msgid "Slice"
-msgstr "Slice"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2964
+#: src/libslic3r/PrintConfig.cpp:2969
msgid ""
"Slice the model as FFF or SLA based on the printer_technology configuration "
"value."
msgstr ""
-"Slice the model as FFF or SLA based on the printer_technology configuration "
-"value."
-#: src/libslic3r/PrintConfig.cpp:2969
+#: src/libslic3r/PrintConfig.cpp:2974
msgid "Help"
-msgstr "Help"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2970
+#: src/libslic3r/PrintConfig.cpp:2975
msgid "Show this help."
-msgstr "Show this help."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2975
+#: src/libslic3r/PrintConfig.cpp:2980
msgid "Help (FFF options)"
-msgstr "Help (FFF options)"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2976
+#: src/libslic3r/PrintConfig.cpp:2981
msgid "Show the full list of print/G-code configuration options."
-msgstr "Show the full list of print/G-code configuration options."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2980
+#: src/libslic3r/PrintConfig.cpp:2985
msgid "Help (SLA options)"
-msgstr "Help (SLA options)"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2981
+#: src/libslic3r/PrintConfig.cpp:2986
msgid "Show the full list of SLA print configuration options."
-msgstr "Show the full list of SLA print configuration options."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2985
+#: src/libslic3r/PrintConfig.cpp:2990
msgid "Output Model Info"
-msgstr "Output Model Info"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2986
+#: src/libslic3r/PrintConfig.cpp:2991
msgid "Write information about the model to the console."
-msgstr "Write information about the model to the console."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2990
+#: src/libslic3r/PrintConfig.cpp:2995
msgid "Save config file"
-msgstr "Save config file"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:2991
+#: src/libslic3r/PrintConfig.cpp:2996
msgid "Save configuration to the specified file."
-msgstr "Save configuration to the specified file."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3001
+#: src/libslic3r/PrintConfig.cpp:3006
msgid "Align XY"
-msgstr "Align XY"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3002
+#: src/libslic3r/PrintConfig.cpp:3007
msgid "Align the model to the given point."
-msgstr "Align the model to the given point."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3007
+#: src/libslic3r/PrintConfig.cpp:3012
msgid "Cut model at the given Z."
-msgstr "Cut model at the given Z."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3028
+#: src/libslic3r/PrintConfig.cpp:3033
msgid "Center"
-msgstr "Center"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3029
+#: src/libslic3r/PrintConfig.cpp:3034
msgid "Center the print around the given center."
-msgstr "Center the print around the given center."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3033
+#: src/libslic3r/PrintConfig.cpp:3038
msgid "Don't arrange"
-msgstr "Don't arrange"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3034
+#: src/libslic3r/PrintConfig.cpp:3039
msgid ""
"Do not rearrange the given models before merging and keep their original XY "
"coordinates."
msgstr ""
-"Do not rearrange the given models before merging and keep their original XY "
-"coordinates."
-#: src/libslic3r/PrintConfig.cpp:3037
+#: src/libslic3r/PrintConfig.cpp:3042
msgid "Duplicate"
-msgstr "Duplicate"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3038
+#: src/libslic3r/PrintConfig.cpp:3043
msgid "Multiply copies by this factor."
-msgstr "Multiply copies by this factor."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3042
+#: src/libslic3r/PrintConfig.cpp:3047
msgid "Duplicate by grid"
-msgstr "Duplicate by grid"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3043
+#: src/libslic3r/PrintConfig.cpp:3048
msgid "Multiply copies by creating a grid."
-msgstr "Multiply copies by creating a grid."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3046
+#: src/libslic3r/PrintConfig.cpp:3051
msgid "Merge"
-msgstr "Merge"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3047
+#: src/libslic3r/PrintConfig.cpp:3052
msgid ""
"Arrange the supplied models in a plate and merge them in a single model in "
"order to perform actions once."
msgstr ""
-"Arrange the supplied models in a plate and merge them in a single model in "
-"order to perform actions once."
-#: src/libslic3r/PrintConfig.cpp:3052
+#: src/libslic3r/PrintConfig.cpp:3057
msgid ""
"Try to repair any non-manifold meshes (this option is implicitly added "
"whenever we need to slice the model to perform the requested action)."
msgstr ""
-"Try to repair any non-manifold meshes (this option is implicitly added "
-"whenever we need to slice the model to perform the requested action)."
-#: src/libslic3r/PrintConfig.cpp:3056
+#: src/libslic3r/PrintConfig.cpp:3061
msgid "Rotation angle around the Z axis in degrees."
-msgstr "Rotation angle around the Z axis in degrees."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3060
+#: src/libslic3r/PrintConfig.cpp:3065
msgid "Rotate around X"
-msgstr "Rotate around X"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3061
+#: src/libslic3r/PrintConfig.cpp:3066
msgid "Rotation angle around the X axis in degrees."
-msgstr "Rotation angle around the X axis in degrees."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3065
+#: src/libslic3r/PrintConfig.cpp:3070
msgid "Rotate around Y"
-msgstr "Rotate around Y"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3066
+#: src/libslic3r/PrintConfig.cpp:3071
msgid "Rotation angle around the Y axis in degrees."
-msgstr "Rotation angle around the Y axis in degrees."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3071
+#: src/libslic3r/PrintConfig.cpp:3076
msgid "Scaling factor or percentage."
-msgstr "Scaling factor or percentage."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3076
+#: src/libslic3r/PrintConfig.cpp:3081
msgid ""
"Detect unconnected parts in the given model(s) and split them into separate "
"objects."
msgstr ""
-"Detect unconnected parts in the given model(s) and split them into separate "
-"objects."
-#: src/libslic3r/PrintConfig.cpp:3079
+#: src/libslic3r/PrintConfig.cpp:3084
msgid "Scale to Fit"
-msgstr "Scale to Fit"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3080
+#: src/libslic3r/PrintConfig.cpp:3085
msgid "Scale to fit the given volume."
-msgstr "Scale to fit the given volume."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3089
+#: src/libslic3r/PrintConfig.cpp:3094
msgid "Ignore non-existent config files"
-msgstr "Ignore non-existent config files"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3090
+#: src/libslic3r/PrintConfig.cpp:3095
msgid "Do not fail if a file supplied to --load does not exist."
-msgstr "Do not fail if a file supplied to --load does not exist."
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3093
+#: src/libslic3r/PrintConfig.cpp:3098
msgid "Load config file"
-msgstr "Load config file"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3094
+#: src/libslic3r/PrintConfig.cpp:3099
msgid ""
"Load configuration from the specified file. It can be used more than once to "
"load options from multiple files."
msgstr ""
-"Load configuration from the specified file. It can be used more than once to "
-"load options from multiple files."
-#: src/libslic3r/PrintConfig.cpp:3097
+#: src/libslic3r/PrintConfig.cpp:3102
msgid "Output File"
-msgstr "Output File"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3098
+#: src/libslic3r/PrintConfig.cpp:3103
msgid ""
"The file where the output will be written (if not specified, it will be "
"based on the input file)."
msgstr ""
-"The file where the output will be written (if not specified, it will be "
-"based on the input file)."
-#: src/libslic3r/PrintConfig.cpp:3108
+#: src/libslic3r/PrintConfig.cpp:3113
msgid "Data directory"
-msgstr "Data directory"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3109
+#: src/libslic3r/PrintConfig.cpp:3114
msgid ""
"Load and store settings at the given directory. This is useful for "
"maintaining different profiles or including configurations from a network "
"storage."
msgstr ""
-"Load and store settings at the given directory. This is useful for "
-"maintaining different profiles or including configurations from a network "
-"storage."
-#: src/libslic3r/PrintConfig.cpp:3112
+#: src/libslic3r/PrintConfig.cpp:3117
msgid "Logging level"
-msgstr "Logging level"
+msgstr ""
-#: src/libslic3r/PrintConfig.cpp:3113
+#: src/libslic3r/PrintConfig.cpp:3118
msgid ""
"Messages with severity lower or eqal to the loglevel will be printed out. 0:"
"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal"
msgstr ""
-"Messages with severity lower or eqal to the loglevel will be printed out. 0:"
-"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal"
+
+#: src/libslic3r/PrintConfig.cpp:3123
+msgid "Render with a software renderer"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3124
+msgid ""
+"Render with a software renderer. The bundled MESA software renderer is "
+"loaded instead of the default OpenGL driver."
+msgstr ""
#: src/libslic3r/GCode/PreviewData.cpp:176
msgid "Mixed"
-msgstr "Mixed"
+msgstr ""
#: src/libslic3r/GCode/PreviewData.cpp:396
msgid "Height (mm)"
-msgstr "Height (mm)"
+msgstr "Hauteur (mm)"
#: src/libslic3r/GCode/PreviewData.cpp:398
msgid "Width (mm)"
-msgstr "Width (mm)"
+msgstr "Largeur (mm)"
#: src/libslic3r/GCode/PreviewData.cpp:400
msgid "Speed (mm/s)"
-msgstr "Speed (mm/s)"
+msgstr "Vitesse (mm/s)"
#: src/libslic3r/GCode/PreviewData.cpp:402
msgid "Volumetric flow rate (mm3/s)"
-msgstr "Volumetric flow rate (mm3/s)"
+msgstr "Débit volumétrique (mm3/s)"
#: src/libslic3r/GCode/PreviewData.cpp:491
msgid "Default print color"
-msgstr "Default print color"
+msgstr ""
#: src/libslic3r/GCode/PreviewData.cpp:495
#, c-format
msgid "up to %.2f mm"
-msgstr "up to %.2f mm"
+msgstr ""
#: src/libslic3r/GCode/PreviewData.cpp:499
#, c-format
msgid "above %.2f mm"
-msgstr "above %.2f mm"
+msgstr ""
#: src/libslic3r/GCode/PreviewData.cpp:504
#, c-format
msgid "%.2f - %.2f mm"
-msgstr "%.2f - %.2f mm"
+msgstr ""
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0dc1facb2..f5099c8bb 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -12,7 +12,6 @@ add_subdirectory(poly2tri)
add_subdirectory(qhull)
add_subdirectory(Shiny)
add_subdirectory(semver)
-add_subdirectory(imgui)
# Adding libnest2d project for bin packing...
set(LIBNEST2D_UNITTESTS ON CACHE BOOL "Force generating unittests for libnest2d")
@@ -24,6 +23,8 @@ include_directories(${LIBDIR}/qhull/src)
add_subdirectory(libslic3r)
if (SLIC3R_GUI)
+ add_subdirectory(imgui)
+
if(WIN32)
message(STATUS "WXWIN environment set to: $ENV{WXWIN}")
elseif(UNIX)
diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp
index c06d19cb9..bf1d24e8a 100644
--- a/src/libslic3r/GCode.cpp
+++ b/src/libslic3r/GCode.cpp
@@ -184,7 +184,7 @@ std::string WipeTowerIntegration::append_tcr(GCode &gcodegen, const WipeTower::T
// Disable linear advance for the wipe tower operations.
- gcode += "M900 K0\n";
+ gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n"));
// Move over the wipe tower.
// Retract for a tool change, using the toolchange retract value and setting the priming extra length.
gcode += gcodegen.retract(true);
@@ -289,7 +289,7 @@ std::string WipeTowerIntegration::prime(GCode &gcodegen)
if (&m_priming != nullptr && ! m_priming.extrusions.empty()) {
// Disable linear advance for the wipe tower operations.
- gcode += "M900 K0\n";
+ gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n"));
// Let the tool change be executed by the wipe tower class.
// Inform the G-code writer about the changes done behind its back.
gcode += m_priming.gcode;
diff --git a/src/libslic3r/GCode/WipeTowerPrusaMM.cpp b/src/libslic3r/GCode/WipeTowerPrusaMM.cpp
index 829fe1bb9..34065a491 100644
--- a/src/libslic3r/GCode/WipeTowerPrusaMM.cpp
+++ b/src/libslic3r/GCode/WipeTowerPrusaMM.cpp
@@ -40,7 +40,7 @@ namespace PrusaMultiMaterial {
class Writer
{
public:
- Writer(float layer_height, float line_width) :
+ Writer(float layer_height, float line_width, GCodeFlavor flavor) :
m_current_pos(std::numeric_limits<float>::max(), std::numeric_limits<float>::max()),
m_current_z(0.f),
m_current_feedrate(0.f),
@@ -48,7 +48,8 @@ public:
m_extrusion_flow(0.f),
m_preview_suppressed(false),
m_elapsed_time(0.f),
- m_default_analyzer_line_width(line_width)
+ m_default_analyzer_line_width(line_width),
+ m_gcode_flavor(flavor)
{
// adds tag for analyzer:
char buf[64];
@@ -333,7 +334,10 @@ public:
Writer& set_extruder_trimpot(int current)
{
char buf[128];
- sprintf(buf, "M907 E%d\n", current);
+ if (m_gcode_flavor == gcfRepRap)
+ sprintf(buf, "M906 E%d\n", current);
+ else
+ sprintf(buf, "M907 E%d\n", current);
m_gcode += buf;
return *this;
};
@@ -407,6 +411,7 @@ private:
int current_temp = -1;
const float m_default_analyzer_line_width;
float m_used_filament_length = 0.f;
+ GCodeFlavor m_gcode_flavor;
std::string set_format_X(float x)
{
@@ -510,7 +515,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::prime(
const float prime_section_width = std::min(240.f / tools.size(), 60.f);
box_coordinates cleaning_box(xy(5.f, 0.01f + m_perimeter_width/2.f), prime_section_width, 100.f);
- PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
+ PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor);
writer.set_extrusion_flow(m_extrusion_flow)
.set_z(m_z_pos)
.set_initial_tool(m_current_tool)
@@ -612,7 +617,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo
(tool != (unsigned int)(-1) ? /*m_layer_info->depth*/wipe_area+m_depth_traversed-0.5*m_perimeter_width
: m_wipe_tower_depth-m_perimeter_width));
- PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
+ PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor);
writer.set_extrusion_flow(m_extrusion_flow)
.set_z(m_z_pos)
.set_initial_tool(m_current_tool)
@@ -631,7 +636,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo
// Increase the extruder driver current to allow fast ramming.
if (m_set_extruder_trimpot)
- writer.set_extruder_trimpot(550);
+ writer.set_extruder_trimpot(750);
// Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool.
if (tool != (unsigned int)-1){ // This is not the last change.
@@ -693,7 +698,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(bool sideOnly, flo
m_wipe_tower_width,
m_wipe_tower_depth);
- PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
+ PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor);
writer.set_extrusion_flow(m_extrusion_flow * 1.1f)
.set_z(m_z_pos) // Let the writer know the current Z position as a base for Z-hop.
.set_initial_tool(m_current_tool)
@@ -1022,7 +1027,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::finish_layer()
// Otherwise the caller would likely travel to the wipe tower in vain.
assert(! this->layer_finished());
- PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
+ PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor);
writer.set_extrusion_flow(m_extrusion_flow)
.set_z(m_z_pos)
.set_initial_tool(m_current_tool)
diff --git a/src/libslic3r/GCode/WipeTowerPrusaMM.hpp b/src/libslic3r/GCode/WipeTowerPrusaMM.hpp
index 2b5fa2241..90f50b57a 100644
--- a/src/libslic3r/GCode/WipeTowerPrusaMM.hpp
+++ b/src/libslic3r/GCode/WipeTowerPrusaMM.hpp
@@ -8,6 +8,7 @@
#include <algorithm>
#include "WipeTower.hpp"
+#include "PrintConfig.hpp"
namespace Slic3r
@@ -46,7 +47,7 @@ public:
// wipe_area -- space available for one toolchange in mm
WipeTowerPrusaMM(float x, float y, float width, float rotation_angle, float cooling_tube_retraction,
float cooling_tube_length, float parking_pos_retraction, float extra_loading_move,
- float bridging, bool set_extruder_trimpot,
+ float bridging, bool set_extruder_trimpot, GCodeFlavor flavor,
const std::vector<std::vector<float>>& wiping_matrix, unsigned int initial_tool) :
m_wipe_tower_pos(x, y),
m_wipe_tower_width(width),
@@ -60,6 +61,7 @@ public:
m_extra_loading_move(extra_loading_move),
m_bridging(bridging),
m_set_extruder_trimpot(set_extruder_trimpot),
+ m_gcode_flavor(flavor),
m_current_tool(initial_tool),
wipe_volumes(wiping_matrix)
{}
@@ -223,6 +225,7 @@ private:
bool m_set_extruder_trimpot = false;
bool m_retain_speed_override = true;
bool m_adhesion = true;
+ GCodeFlavor m_gcode_flavor;
float m_perimeter_width = 0.4f * Width_To_Nozzle_Ratio; // Width of an extrusion line, also a perimeter spacing for 100% infill.
float m_extrusion_flow = 0.038f; //0.029f;// Extrusion flow is derived from m_perimeter_width, layer height and filament diameter.
diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp
index 0637ba7f0..d743a9b23 100644
--- a/src/libslic3r/Print.cpp
+++ b/src/libslic3r/Print.cpp
@@ -126,7 +126,6 @@ bool Print::invalidate_state_by_config_options(const std::vector<t_config_option
"first_layer_bed_temperature",
"first_layer_speed",
"gcode_comments",
- "gcode_flavor",
"gcode_label_objects",
"infill_acceleration",
"layer_gcode",
@@ -1777,7 +1776,7 @@ void Print::_make_wipe_tower()
float(m_config.wipe_tower_rotation_angle.value), float(m_config.cooling_tube_retraction.value),
float(m_config.cooling_tube_length.value), float(m_config.parking_pos_retraction.value),
float(m_config.extra_loading_move.value), float(m_config.wipe_tower_bridging),
- m_config.high_current_on_filament_swap.value, wipe_volumes,
+ m_config.high_current_on_filament_swap.value, m_config.gcode_flavor, wipe_volumes,
m_wipe_tower_data.tool_ordering.first_extruder());
//wipe_tower.set_retract();
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp
index ec5acf43b..a143051e0 100644
--- a/src/libslic3r/PrintConfig.cpp
+++ b/src/libslic3r/PrintConfig.cpp
@@ -131,7 +131,7 @@ void PrintConfigDef::init_fff_params()
"as [layer_num] and [layer_z].");
def->multiline = true;
def->full_width = true;
- def->height = 50;
+ def->height = 5;
def->mode = comExpert;
def->default_value = new ConfigOptionString("");
@@ -140,7 +140,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want.");
def->multiline = true;
def->full_width = true;
- def->height = 120;
+ def->height = 12;
def->mode = comExpert;
def->default_value = new ConfigOptionString("");
@@ -213,7 +213,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("clip_multipart_objects", coBool);
def->label = L("Clip multi-part objects");
- def->tooltip = L("When printing multi-material objects, this settings will make slic3r "
+ def->tooltip = L("When printing multi-material objects, this settings will make Slic3r "
"to clip the overlapping object parts one by the other "
"(2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc).");
def->mode = comExpert;
@@ -360,7 +360,7 @@ void PrintConfigDef::init_fff_params()
"Note that you can use placeholder variables for all Slic3r settings.");
def->multiline = true;
def->full_width = true;
- def->height = 120;
+ def->height = 12;
def->mode = comExpert;
def->default_value = new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n");
@@ -539,7 +539,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("If layer print time is estimated below this number of seconds, fan will be enabled "
"and its speed will be calculated by interpolating the minimum and maximum speeds.");
def->sidetext = L("approximate seconds");
- def->width = 60;
+ def->width = 6;
def->min = 0;
def->max = 1000;
def->mode = comExpert;
@@ -556,7 +556,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("You can put your notes regarding the filament here.");
def->multiline = true;
def->full_width = true;
- def->height = 130;
+ def->height = 13;
def->mode = comAdvanced;
def->default_value = new ConfigOptionStrings { "" };
@@ -1007,7 +1007,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Inherits profile");
def->tooltip = L("Name of the profile, from which this profile inherits.");
def->full_width = true;
- def->height = 50;
+ def->height = 5;
def->default_value = new ConfigOptionString();
def->cli = ConfigOptionDef::nocli;
@@ -1034,7 +1034,7 @@ void PrintConfigDef::init_fff_params()
def->cli = "after-layer-gcode|layer-gcode";
def->multiline = true;
def->full_width = true;
- def->height = 50;
+ def->height = 5;
def->mode = comExpert;
def->default_value = new ConfigOptionString("");
@@ -1053,7 +1053,7 @@ void PrintConfigDef::init_fff_params()
def->mode = comExpert;
def->default_value = new ConfigOptionBool(true);
- const int machine_limits_opt_width = 70;
+ const int machine_limits_opt_width = 7;
{
struct AxisDefault {
std::string name;
@@ -1252,7 +1252,7 @@ void PrintConfigDef::init_fff_params()
"header comments.");
def->multiline = true;
def->full_width = true;
- def->height = 130;
+ def->height = 13;
def->mode = comAdvanced;
def->default_value = new ConfigOptionString("");
@@ -1387,7 +1387,7 @@ void PrintConfigDef::init_fff_params()
def->gui_flags = "serialized";
def->multiline = true;
def->full_width = true;
- def->height = 60;
+ def->height = 6;
def->mode = comExpert;
def->default_value = new ConfigOptionStrings();
@@ -1402,7 +1402,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("You can put your notes regarding the printer here.");
def->multiline = true;
def->full_width = true;
- def->height = 130;
+ def->height = 13;
def->mode = comAdvanced;
def->default_value = new ConfigOptionString("");
@@ -1589,7 +1589,7 @@ void PrintConfigDef::init_fff_params()
def->label = "";
def->full_label = L("Serial port");
def->tooltip = L("USB/serial port for printer connection.");
- def->width = 200;
+ def->width = 20;
def->default_value = new ConfigOptionString("");
def = this->add("serial_speed", coInt);
@@ -1635,7 +1635,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("If layer print time is estimated below this number of seconds, print moves "
"speed will be scaled down to extend duration to this value.");
def->sidetext = L("approximate seconds");
- def->width = 60;
+ def->width = 6;
def->min = 0;
def->max = 1000;
def->mode = comExpert;
@@ -1742,7 +1742,7 @@ void PrintConfigDef::init_fff_params()
"a \"M109 S[first_layer_temperature]\" command wherever you want.");
def->multiline = true;
def->full_width = true;
- def->height = 120;
+ def->height = 12;
def->mode = comExpert;
def->default_value = new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n");
@@ -1758,7 +1758,7 @@ void PrintConfigDef::init_fff_params()
"in extruder order.");
def->multiline = true;
def->full_width = true;
- def->height = 120;
+ def->height = 12;
def->mode = comExpert;
def->default_value = new ConfigOptionStrings { "; Filament gcode\n" };
@@ -2008,7 +2008,7 @@ void PrintConfigDef::init_fff_params()
"as [previous_extruder] and [next_extruder].");
def->multiline = true;
def->full_width = true;
- def->height = 50;
+ def->height = 5;
def->mode = comExpert;
def->default_value = new ConfigOptionString("");
@@ -2330,7 +2330,7 @@ void PrintConfigDef::init_sla_params()
def->tooltip = L("You can put your notes regarding the SLA print material here.");
def->multiline = true;
def->full_width = true;
- def->height = 130;
+ def->height = 13;
def->mode = comAdvanced;
def->default_value = new ConfigOptionString("");
diff --git a/src/libslic3r/Rasterizer/Rasterizer.cpp b/src/libslic3r/Rasterizer/Rasterizer.cpp
index 8eb721b43..6384a241f 100644
--- a/src/libslic3r/Rasterizer/Rasterizer.cpp
+++ b/src/libslic3r/Rasterizer/Rasterizer.cpp
@@ -248,20 +248,21 @@ RawBytes Raster::save(Raster::Compression comp)
{
assert(m_impl);
- std::uint8_t *ptr = nullptr; size_t s = 0;
+ std::vector<std::uint8_t> data; size_t s = 0;
switch(comp) {
case Compression::PNG: {
-
void *rawdata = tdefl_write_image_to_png_file_in_memory(
m_impl->buffer().data(),
int(resolution().width_px),
int(resolution().height_px), 1, &s);
if(rawdata == nullptr) break;
-
- ptr = static_cast<std::uint8_t*>(rawdata);
-
+ auto ptr = static_cast<std::uint8_t*>(rawdata);
+
+ data.reserve(s); std::copy(ptr, ptr + s, std::back_inserter(data));
+
+ MZ_FREE(rawdata);
break;
}
case Compression::RAW: {
@@ -270,21 +271,19 @@ RawBytes Raster::save(Raster::Compression comp)
std::to_string(m_impl->resolution().height_px) + " " + "255 ";
auto sz = m_impl->buffer().size()*sizeof(Impl::TBuffer::value_type);
-
s = sz + header.size();
- ptr = static_cast<std::uint8_t*>(MZ_MALLOC(s));
-
+
+ data.reserve(s);
+
auto buff = reinterpret_cast<std::uint8_t*>(m_impl->buffer().data());
- std::copy(buff, buff+sz, ptr + header.size());
+ std::copy(header.begin(), header.end(), std::back_inserter(data));
+ std::copy(buff, buff+sz, std::back_inserter(data));
+
+ break;
}
}
- return {ptr, s};
-}
-
-void RawBytes::MinzDeleter::operator()(uint8_t *rawptr)
-{
- MZ_FREE(rawptr);
+ return {std::move(data)};
}
}
diff --git a/src/libslic3r/Rasterizer/Rasterizer.hpp b/src/libslic3r/Rasterizer/Rasterizer.hpp
index d4d2277c4..3fffe1a36 100644
--- a/src/libslic3r/Rasterizer/Rasterizer.hpp
+++ b/src/libslic3r/Rasterizer/Rasterizer.hpp
@@ -15,34 +15,25 @@ class ExPolygon;
// Raw byte buffer paired with its size. Suitable for compressed PNG data.
class RawBytes {
- class MinzDeleter {
- public:
- void operator()(std::uint8_t *rawptr);
- };
-
- std::unique_ptr<std::uint8_t, MinzDeleter> m_buffer = nullptr;
- size_t m_size = 0;
-
+ std::vector<std::uint8_t> m_buffer;
public:
RawBytes() = default;
- RawBytes(std::uint8_t *rawptr, size_t s): m_buffer(rawptr), m_size(s) {}
-
- size_t size() const { return m_size; }
- const uint8_t * data() { return m_buffer.get(); }
+ RawBytes(std::vector<std::uint8_t>&& data): m_buffer(std::move(data)) {}
+
+ size_t size() const { return m_buffer.size(); }
+ const uint8_t * data() { return m_buffer.data(); }
// /////////////////////////////////////////////////////////////////////////
// FIXME: the following is needed for MSVC2013 compatibility
// /////////////////////////////////////////////////////////////////////////
RawBytes(const RawBytes&) = delete;
- RawBytes(RawBytes&& mv):
- m_buffer(std::move(mv.m_buffer)), m_size(mv.m_size) {}
+ RawBytes(RawBytes&& mv) : m_buffer(std::move(mv.m_buffer)) {}
RawBytes& operator=(const RawBytes&) = delete;
RawBytes& operator=(RawBytes&& mv) {
- m_buffer.swap(mv.m_buffer);
- m_size = mv.m_size;
+ m_buffer = std::move(mv.m_buffer);
return *this;
}
diff --git a/src/libslic3r/SLA/SLASupportTree.cpp b/src/libslic3r/SLA/SLASupportTree.cpp
index 75f9b0140..1e139ebfb 100644
--- a/src/libslic3r/SLA/SLASupportTree.cpp
+++ b/src/libslic3r/SLA/SLASupportTree.cpp
@@ -846,6 +846,16 @@ public:
if(!meshcache_valid) merged_mesh();
return model_height;
}
+
+ // Intended to be called after the generation is fully complete
+ void clear_support_data() {
+ merged_mesh(); // in case the mesh is not generated, it should be...
+ m_heads.clear();
+ m_pillars.clear();
+ m_junctions.clear();
+ m_bridges.clear();
+ m_compact_bridges.clear();
+ }
};
@@ -2285,6 +2295,7 @@ SLASupportTree::SLASupportTree(const std::vector<SupportPoint> &points,
{
m_impl->ground_level = emesh.ground_level() - cfg.object_elevation_mm;
generate(points, emesh, cfg, ctl);
+ m_impl->clear_support_data();
}
SLASupportTree::SLASupportTree(const SLASupportTree &c):
diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp
index 284073ca4..3122beece 100644
--- a/src/libslic3r/SLAPrint.cpp
+++ b/src/libslic3r/SLAPrint.cpp
@@ -436,6 +436,12 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf
if (new_objects)
update_apply_status(false);
}
+
+ if(m_objects.empty()) {
+ m_printer.release();
+ m_printer_input.clear();
+ m_print_statistics.clear();
+ }
#ifdef _DEBUG
check_model_ids_equal(m_model, model);
@@ -668,8 +674,8 @@ void SLAPrint::process()
// Slicing the model object. This method is oversimplified and needs to
// be compared with the fff slicing algorithm for verification
- auto slice_model = [this, ilhs, ilh](SLAPrintObject& po) {
- TriangleMesh mesh = po.transformed_mesh();
+ auto slice_model = [this, ilhs, ilh, ilhd](SLAPrintObject& po) {
+ const TriangleMesh& mesh = po.transformed_mesh();
// We need to prepare the slice index...
@@ -685,13 +691,15 @@ void SLAPrint::process()
auto maxZs = coord_t(maxZ / SCALING_FACTOR);
po.m_slice_index.clear();
- po.m_slice_index.reserve(size_t(maxZs - (minZs + ilhs) / lhs) + 1);
- po.m_slice_index.emplace_back(minZs + ilhs, float(minZ) + ilh / 2.f, ilh);
-
- for(coord_t h = minZs + ilhs + lhs; h <= maxZs; h += lhs) {
- po.m_slice_index.emplace_back(h, float(h*SCALING_FACTOR) - lh / 2.f, lh);
- }
+
+ size_t cap = size_t(1 + (maxZs - minZs - ilhs) / lhs);
+ po.m_slice_index.reserve(cap);
+
+ po.m_slice_index.emplace_back(minZs + ilhs, minZ + ilhd / 2.0, ilh);
+ for(coord_t h = minZs + ilhs + lhs; h <= maxZs; h += lhs)
+ po.m_slice_index.emplace_back(h, h*SCALING_FACTOR - lhd / 2.0, lh);
+
// Just get the first record that is form the model:
auto slindex_it =
po.closest_slice_record(po.m_slice_index, float(bb3d.min(Z)));
@@ -704,11 +712,8 @@ void SLAPrint::process()
po.m_model_height_levels.clear();
po.m_model_height_levels.reserve(po.m_slice_index.size());
for(auto it = slindex_it; it != po.m_slice_index.end(); ++it)
- {
po.m_model_height_levels.emplace_back(it->slice_level());
- }
- mesh.require_shared_vertices(); // TriangleMeshSlicer needs this
TriangleMeshSlicer slicer(&mesh);
po.m_model_slices.clear();
@@ -1534,7 +1539,7 @@ SLAPrintObject::SLAPrintObject(SLAPrint *print, ModelObject *model_object):
Inherited(print, model_object),
m_stepmask(slaposCount, true),
m_transformed_rmesh( [this](TriangleMesh& obj){
- obj = m_model_object->raw_mesh(); obj.transform(m_trafo);
+ obj = m_model_object->raw_mesh(); obj.transform(m_trafo); obj.require_shared_vertices();
})
{
}
@@ -1823,7 +1828,7 @@ void SLAPrint::StatusReporter::operator()(
SLAPrint &p, double st, const std::string &msg, unsigned flags)
{
m_st = st;
- BOOST_LOG_TRIVIAL(info) << st << "% " << msg;
+ BOOST_LOG_TRIVIAL(info) << st << "% " << msg << log_memory_info();
p.set_status(int(std::round(st)), msg, flags);
}
diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp
index 86b12a95f..b1a2556e7 100644
--- a/src/slic3r/GUI/AboutDialog.cpp
+++ b/src/slic3r/GUI/AboutDialog.cpp
@@ -32,8 +32,11 @@ void AboutDialogLogo::onRepaint(wxEvent &event)
}
AboutDialog::AboutDialog()
- : wxDialog(NULL, wxID_ANY, wxString::Format(_(L("About %s")), SLIC3R_APP_NAME), wxDefaultPosition, wxDefaultSize, wxCAPTION)
+ : DPIDialog(NULL, wxID_ANY, wxString::Format(_(L("About %s")), SLIC3R_APP_NAME), wxDefaultPosition,
+ wxDefaultSize, /*wxCAPTION*/wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
{
+ SetFont(wxGetApp().normal_font());
+
wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
SetBackgroundColour(bgr_clr);
wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL);
@@ -42,8 +45,9 @@ AboutDialog::AboutDialog()
main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20);
// logo
- auto *logo = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap(this, "Slic3r_192px.png", 192));
- hsizer->Add(logo, 1, wxALIGN_CENTER_VERTICAL);
+ m_logo_bitmap = ScalableBitmap(this, "Slic3r_192px.png", 192);
+ m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp());
+ hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL);
wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL);
hsizer->Add(vsizer, 2, wxEXPAND|wxLEFT, 20);
@@ -51,8 +55,7 @@ AboutDialog::AboutDialog()
// title
{
wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize);
- wxFont title_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
- title_font.SetWeight(wxFONTWEIGHT_BOLD);
+ wxFont title_font = GUI::wxGetApp().bold_font();
title_font.SetFamily(wxFONTFAMILY_ROMAN);
title_font.SetPointSize(24);
title->SetFont(title_font);
@@ -63,9 +66,9 @@ AboutDialog::AboutDialog()
{
auto version_string = _(L("Version"))+ " " + std::string(SLIC3R_VERSION);
wxStaticText* version = new wxStaticText(this, wxID_ANY, version_string.c_str(), wxDefaultPosition, wxDefaultSize);
- wxFont version_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+ wxFont version_font = GetFont();
#ifdef __WXMSW__
- version_font.SetPointSize(9);
+ version_font.SetPointSize(version_font.GetPointSize()-1);
#else
version_font.SetPointSize(11);
#endif
@@ -74,18 +77,18 @@ AboutDialog::AboutDialog()
}
// text
- wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO/*NEVER*/);
+ m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO/*NEVER*/);
{
- html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
- wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+ m_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
+ wxFont font = GetFont();
const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
const int fs = font.GetPointSize()-1;
int size[] = {fs,fs,fs,fs,fs,fs,fs};
- html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
- html->SetBorders(2);
+ m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
+ m_html->SetBorders(2);
const auto text = wxString::Format(
"<html>"
"<body bgcolor= %s link= %s>"
@@ -101,9 +104,9 @@ AboutDialog::AboutDialog()
"</font>"
"</body>"
"</html>", bgr_clr_str, text_clr_str, text_clr_str);
- html->SetPage(text);
- vsizer->Add(html, 1, wxEXPAND | wxBOTTOM, 10);
- html->Bind(wxEVT_HTML_LINK_CLICKED, &AboutDialog::onLinkClicked, this);
+ m_html->SetPage(text);
+ vsizer->Add(m_html, 1, wxEXPAND | wxBOTTOM, 10);
+ m_html->Bind(wxEVT_HTML_LINK_CLICKED, &AboutDialog::onLinkClicked, this);
}
wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxCLOSE);
@@ -118,6 +121,31 @@ AboutDialog::AboutDialog()
main_sizer->SetSizeHints(this);
}
+void AboutDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+ m_logo_bitmap.msw_rescale();
+ m_logo->SetBitmap(m_logo_bitmap.bmp());
+
+ const wxFont& font = GetFont();
+ const int fs = font.GetPointSize() - 1;
+ int font_size[] = { fs, fs, fs, fs, fs, fs, fs };
+ m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size);
+
+ const int& em = em_unit();
+
+ msw_buttons_rescale(this, em, { wxID_CLOSE });
+
+ m_html->SetMinSize(wxSize(-1, 16 * em));
+ m_html->Refresh();
+
+ const wxSize& size = wxSize(65 * em, 30 * em);
+
+ SetMinSize(size);
+ Fit();
+
+ Refresh();
+}
+
void AboutDialog::onLinkClicked(wxHtmlLinkEvent &event)
{
wxLaunchDefaultBrowser(event.GetLinkInfo().GetHref());
diff --git a/src/slic3r/GUI/AboutDialog.hpp b/src/slic3r/GUI/AboutDialog.hpp
index 01f7564c5..7019b21f6 100644
--- a/src/slic3r/GUI/AboutDialog.hpp
+++ b/src/slic3r/GUI/AboutDialog.hpp
@@ -7,6 +7,9 @@
#include <wx/intl.h>
#include <wx/html/htmlwin.h>
+#include "GUI_Utils.hpp"
+#include "wxExtensions.hpp"
+
namespace Slic3r {
namespace GUI {
@@ -20,10 +23,16 @@ private:
void onRepaint(wxEvent &event);
};
-class AboutDialog : public wxDialog
+class AboutDialog : public DPIDialog
{
+ ScalableBitmap m_logo_bitmap;
+ wxHtmlWindow* m_html;
+ wxStaticBitmap* m_logo;
public:
AboutDialog();
+
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override;
private:
void onLinkClicked(wxHtmlLinkEvent &event);
diff --git a/src/slic3r/GUI/BedShapeDialog.cpp b/src/slic3r/GUI/BedShapeDialog.cpp
index 7bbf1ac7f..00ebf117c 100644
--- a/src/slic3r/GUI/BedShapeDialog.cpp
+++ b/src/slic3r/GUI/BedShapeDialog.cpp
@@ -18,6 +18,7 @@ namespace GUI {
void BedShapeDialog::build_dialog(ConfigOptionPoints* default_pt)
{
+ SetFont(wxGetApp().normal_font());
m_panel = new BedShapePanel(this);
m_panel->build_panel(default_pt);
@@ -36,6 +37,22 @@ void BedShapeDialog::build_dialog(ConfigOptionPoints* default_pt)
}));
}
+void BedShapeDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+ const int& em = em_unit();
+ m_panel->m_shape_options_book->SetMinSize(wxSize(25 * em, -1));
+
+ for (auto og : m_panel->m_optgroups)
+ og->msw_rescale();
+
+ const wxSize& size = wxSize(50 * em, -1);
+
+ SetMinSize(size);
+ SetSize(size);
+
+ Refresh();
+}
+
void BedShapePanel::build_panel(ConfigOptionPoints* default_pt)
{
// on_change(nullptr);
@@ -125,7 +142,7 @@ ConfigOptionsGroupShp BedShapePanel::init_shape_options_page(wxString title)
ConfigOptionsGroupShp optgroup;
optgroup = std::make_shared<ConfigOptionsGroup>(panel, _(L("Settings")));
- optgroup->label_width = 10*wxGetApp().em_unit();//100;
+ optgroup->label_width = 10;
optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) {
update_shape();
};
diff --git a/src/slic3r/GUI/BedShapeDialog.hpp b/src/slic3r/GUI/BedShapeDialog.hpp
index 538fccc34..72e50a05d 100644
--- a/src/slic3r/GUI/BedShapeDialog.hpp
+++ b/src/slic3r/GUI/BedShapeDialog.hpp
@@ -16,11 +16,8 @@ namespace GUI {
using ConfigOptionsGroupShp = std::shared_ptr<ConfigOptionsGroup>;
class BedShapePanel : public wxPanel
{
- wxChoicebook* m_shape_options_book;
Bed_2D* m_canvas;
- std::vector <ConfigOptionsGroupShp> m_optgroups;
-
public:
BedShapePanel(wxWindow* parent) : wxPanel(parent, wxID_ANY) {}
~BedShapePanel() {}
@@ -35,18 +32,25 @@ public:
// Returns the resulting bed shape polygon. This value will be stored to the ini file.
std::vector<Vec2d> GetValue() { return m_canvas->m_bed_shape; }
+
+ wxChoicebook* m_shape_options_book;
+ std::vector <ConfigOptionsGroupShp> m_optgroups;
+
};
-class BedShapeDialog : public wxDialog
+class BedShapeDialog : public DPIDialog
{
BedShapePanel* m_panel;
public:
- BedShapeDialog(wxWindow* parent) : wxDialog(parent, wxID_ANY, _(L("Bed Shape")),
+ BedShapeDialog(wxWindow* parent) : DPIDialog(parent, wxID_ANY, _(L("Bed Shape")),
wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) {}
~BedShapeDialog() {}
void build_dialog(ConfigOptionPoints* default_pt);
std::vector<Vec2d> GetValue() { return m_panel->GetValue(); }
+
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override;
};
} // GUI
diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp
index bb4145107..db116a5dd 100644
--- a/src/slic3r/GUI/BitmapCache.cpp
+++ b/src/slic3r/GUI/BitmapCache.cpp
@@ -23,6 +23,8 @@ void BitmapCache::clear()
{
for (std::pair<const std::string, wxBitmap*> &bitmap : m_map)
delete bitmap.second;
+
+ m_map.clear();
}
static wxBitmap wxImage_to_wxBitmap_with_alpha(wxImage &&image, float scale = 1.0f)
@@ -259,9 +261,6 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_
wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency)
{
- width = width * 0.1f * Slic3r::GUI::wxGetApp().em_unit() + 0.5f;
- height = height * 0.1f * Slic3r::GUI::wxGetApp().em_unit() + 0.5f;
-
wxImage image(width, height);
image.InitAlpha();
unsigned char* imgdata = image.GetData();
diff --git a/src/slic3r/GUI/ButtonsDescription.cpp b/src/slic3r/GUI/ButtonsDescription.cpp
index fb4c24286..9def34749 100644
--- a/src/slic3r/GUI/ButtonsDescription.cpp
+++ b/src/slic3r/GUI/ButtonsDescription.cpp
@@ -7,6 +7,7 @@
#include "GUI.hpp"
#include "GUI_App.hpp"
#include "I18N.hpp"
+#include "wxExtensions.hpp"
namespace Slic3r {
namespace GUI {
@@ -23,7 +24,7 @@ ButtonsDescription::ButtonsDescription(wxWindow* parent, t_icon_descriptions* ic
// Icon description
for (auto pair : *m_icon_descriptions)
{
- auto icon = new wxStaticBitmap(this, wxID_ANY, *pair.first);
+ auto icon = new wxStaticBitmap(this, wxID_ANY, /***/pair.first->bmp());
grid_sizer->Add(icon, -1, wxALIGN_CENTRE_VERTICAL);
std::istringstream f(pair.second);
diff --git a/src/slic3r/GUI/ButtonsDescription.hpp b/src/slic3r/GUI/ButtonsDescription.hpp
index 81baaf191..69005d2a5 100644
--- a/src/slic3r/GUI/ButtonsDescription.hpp
+++ b/src/slic3r/GUI/ButtonsDescription.hpp
@@ -4,10 +4,12 @@
#include <wx/dialog.h>
#include <vector>
+class ScalableBitmap;
+
namespace Slic3r {
namespace GUI {
-using t_icon_descriptions = std::vector<std::pair<wxBitmap*, std::string>>;
+using t_icon_descriptions = std::vector<std::pair<ScalableBitmap*, std::string>>;
class ButtonsDescription : public wxDialog
{
@@ -15,8 +17,6 @@ class ButtonsDescription : public wxDialog
public:
ButtonsDescription(wxWindow* parent, t_icon_descriptions* icon_descriptions);
~ButtonsDescription() {}
-
-
};
} // GUI
diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.cpp b/src/slic3r/GUI/ConfigSnapshotDialog.cpp
index 205e84f57..bdf80c27c 100644
--- a/src/slic3r/GUI/ConfigSnapshotDialog.cpp
+++ b/src/slic3r/GUI/ConfigSnapshotDialog.cpp
@@ -6,6 +6,7 @@
#include "libslic3r/Utils.hpp"
#include "GUI_App.hpp"
+#include "wxExtensions.hpp"
namespace Slic3r {
namespace GUI {
@@ -66,7 +67,7 @@ static wxString generate_html_row(const Config::Snapshot &snapshot, bool row_eve
}
if (! compatible) {
- text += "<p align=\"right\">" + _(L("Incompatible with this Slic3r")) + "</p>";
+ text += "<p align=\"right\">" + wxString::Format(_(L("Incompatible with this %s")), SLIC3R_APP_NAME) + "</p>";
}
else if (! snapshot_active)
text += "<p align=\"right\"><a href=\"" + snapshot.id + "\">" + _(L("Activate")) + "</a></p>";
@@ -95,21 +96,26 @@ static wxString generate_html_page(const Config::SnapshotDB &snapshot_db, const
}
ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db, const wxString &on_snapshot)
- : wxDialog(NULL, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition,
+ : DPIDialog(NULL, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition,
wxSize(45 * wxGetApp().em_unit(), 40 * wxGetApp().em_unit()),
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX)
{
+ this->SetFont(wxGetApp().normal_font());
this->SetBackgroundColour(*wxWHITE);
wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL);
this->SetSizer(vsizer);
// text
- wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
+ html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
{
- wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+ wxFont font = wxGetApp().normal_font();//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
#ifdef __WXMSW__
- int size[] = {8,8,8,8,11,11,11};
+ const int fs = font.GetPointSize();
+ const int fs1 = static_cast<int>(0.8f*fs);
+ const int fs2 = static_cast<int>(1.1f*fs);
+ int size[] = {fs1, fs1, fs1, fs1, fs2, fs2, fs2};
+// int size[] = {8,8,8,8,11,11,11};
#else
int size[] = {11,11,11,11,14,14,14};
#endif
@@ -127,6 +133,28 @@ ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db
vsizer->Add(buttons, 0, wxEXPAND | wxRIGHT | wxBOTTOM, 3);
}
+void ConfigSnapshotDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+ wxFont font = GetFont();
+ const int fs = font.GetPointSize();
+ const int fs1 = static_cast<int>(0.8f*fs);
+ const int fs2 = static_cast<int>(1.1f*fs);
+ int font_size[] = { fs1, fs1, fs1, fs1, fs2, fs2, fs2 };
+
+ html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size);
+ html->Refresh();
+
+ const int& em = em_unit();
+
+ msw_buttons_rescale(this, em, { wxID_CLOSE});
+
+ const wxSize& size = wxSize(45 * em, 40 * em);
+ SetMinSize(size);
+ Fit();
+
+ Refresh();
+}
+
void ConfigSnapshotDialog::onLinkClicked(wxHtmlLinkEvent &event)
{
m_snapshot_to_activate = event.GetLinkInfo().GetHref();
diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.hpp b/src/slic3r/GUI/ConfigSnapshotDialog.hpp
index f43fb8ed1..9b8b69ecf 100644
--- a/src/slic3r/GUI/ConfigSnapshotDialog.hpp
+++ b/src/slic3r/GUI/ConfigSnapshotDialog.hpp
@@ -2,6 +2,7 @@
#define slic3r_GUI_ConfigSnapshotDialog_hpp_
#include "GUI.hpp"
+#include "GUI_Utils.hpp"
#include <wx/wx.h>
#include <wx/intl.h>
@@ -14,18 +15,23 @@ namespace Config {
class SnapshotDB;
}
-class ConfigSnapshotDialog : public wxDialog
+class ConfigSnapshotDialog : public DPIDialog
{
public:
ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db, const wxString &id);
const std::string& snapshot_to_activate() const { return m_snapshot_to_activate; }
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override;
+
private:
void onLinkClicked(wxHtmlLinkEvent &event);
void onCloseDialog(wxEvent &);
// If set, it contains a snapshot ID to be restored after the dialog closes.
std::string m_snapshot_to_activate;
+
+ wxHtmlWindow* html;
};
} // namespace GUI
diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp
index 5da320830..93cf1c73f 100644
--- a/src/slic3r/GUI/ConfigWizard.cpp
+++ b/src/slic3r/GUI/ConfigWizard.cpp
@@ -18,6 +18,7 @@
#include <wx/dataview.h>
#include <wx/notebook.h>
#include <wx/display.h>
+#include <wx/filefn.h>
#include <wx/debug.h>
#include "libslic3r/Utils.hpp"
@@ -81,11 +82,17 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt
for (const auto &model : models) {
if (! filter(model)) { continue; }
- wxBitmap bitmap(GUI::from_u8(Slic3r::var((boost::format("printers/%1%_%2%.png") % vendor.id % model.id).str())), wxBITMAP_TYPE_PNG);
+ wxBitmap bitmap;
+ int bitmap_width = 0;
+ const wxString bitmap_file = GUI::from_u8(Slic3r::var((boost::format("printers/%1%_%2%.png") % vendor.id % model.id).str()));
+ if (wxFileExists(bitmap_file)) {
+ bitmap.LoadFile(bitmap_file, wxBITMAP_TYPE_PNG);
+ bitmap_width = bitmap.GetWidth();
+ }
auto *title = new wxStaticText(this, wxID_ANY, model.name, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
title->SetFont(font_name);
- const int wrap_width = std::max((int)MODEL_MIN_WRAP, bitmap.GetWidth());
+ const int wrap_width = std::max((int)MODEL_MIN_WRAP, bitmap_width);
title->Wrap(wrap_width);
current_row_width += wrap_width;
@@ -187,6 +194,9 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt
title_sizer->Add(sel_all_std, 0, wxRIGHT, BTN_SPACING);
title_sizer->Add(sel_all, 0, wxRIGHT, BTN_SPACING);
title_sizer->Add(sel_none);
+
+ // fill button indexes used later for buttons rescaling
+ m_button_indexes = { sel_all_std->GetId(), sel_all->GetId(), sel_none->GetId() };
}
sizer->Add(title_sizer, 0, wxEXPAND | wxBOTTOM, BTN_SPACING);
@@ -399,16 +409,20 @@ PageUpdate::PageUpdate(ConfigWizard *parent)
auto *box_slic3r = new wxCheckBox(this, wxID_ANY, _(L("Check for application updates")));
box_slic3r->SetValue(app_config->get("version_check") == "1");
append(box_slic3r);
- append_text(wxString::Format(_(L("If enabled, Slic3r checks for new versions of %s online. When a new version becomes available, "
- "a notification is displayed at the next application startup (never during program usage). "
- "This is only a notification mechanisms, no automatic installation is done.")), SLIC3R_APP_NAME));
+ append_text(wxString::Format(_(L(
+ "If enabled, %s checks for new application versions online. When a new version becomes available, "
+ "a notification is displayed at the next application startup (never during program usage). "
+ "This is only a notification mechanisms, no automatic installation is done.")), SLIC3R_APP_NAME));
append_spacer(VERTICAL_SPACING);
auto *box_presets = new wxCheckBox(this, wxID_ANY, _(L("Update built-in Presets automatically")));
box_presets->SetValue(app_config->get("preset_update") == "1");
append(box_presets);
- append_text(_(L("If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup.")));
+ append_text(wxString::Format(_(L(
+ "If enabled, %s downloads updates of built-in system presets in the background."
+ "These updates are downloaded into a separate temporary location."
+ "When a new preset version becomes available it is offered at application startup.")), SLIC3R_APP_NAME));
const auto text_bold = _(L("Updates are never applied without user's consent and never overwrite user's customized settings."));
auto *label_bold = new wxStaticText(this, wxID_ANY, text_bold);
label_bold->SetFont(boldfont);
@@ -635,19 +649,24 @@ void PageTemperatures::apply_custom_config(DynamicPrintConfig &config)
ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent)
: wxPanel(parent)
- // XXX: use create_scaled_bitmap:
+ /* #ys_FIXME_delete_after_testing by VK
, bg(GUI::from_u8(Slic3r::var("Slic3r_192px_transparent.png")), wxBITMAP_TYPE_PNG)
, bullet_black(GUI::from_u8(Slic3r::var("bullet_black.png")), wxBITMAP_TYPE_PNG)
, bullet_blue(GUI::from_u8(Slic3r::var("bullet_blue.png")), wxBITMAP_TYPE_PNG)
, bullet_white(GUI::from_u8(Slic3r::var("bullet_white.png")), wxBITMAP_TYPE_PNG)
+ */
+ , bg(ScalableBitmap(parent, "Slic3r_192px_transparent.png", 192))
+ , bullet_black(ScalableBitmap(parent, "bullet_black.png"))
+ , bullet_blue(ScalableBitmap(parent, "bullet_blue.png"))
+ , bullet_white(ScalableBitmap(parent, "bullet_white.png"))
, item_active(0)
, item_hover(-1)
, last_page((size_t)-1)
{
- SetMinSize(bg.GetSize());
+ SetMinSize(bg.bmp().GetSize());
const wxSize size = GetTextExtent("m");
- em = size.x;
+ em_w = size.x;
em_h = size.y;
// Add logo bitmap.
@@ -656,7 +675,10 @@ ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent)
// In some cases it didn't work at all. And so wxStaticBitmap is used here instead,
// because it has all the platform quirks figured out.
auto *sizer = new wxBoxSizer(wxVERTICAL);
+ /* #ys_FIXME_delete_after_testing by VK
auto *logo = new wxStaticBitmap(this, wxID_ANY, bg);
+ */
+ logo = new wxStaticBitmap(this, wxID_ANY, bg.bmp());
sizer->AddStretchSpacer();
sizer->Add(logo);
SetSizer(sizer);
@@ -764,8 +786,12 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt)
wxPaintDC dc(this);
+ /* #ys_FIXME_delete_after_testing by VK
const auto bullet_w = bullet_black.GetSize().GetWidth();
const auto bullet_h = bullet_black.GetSize().GetHeight();
+ */
+ const auto bullet_w = bullet_black.bmp().GetSize().GetWidth();
+ const auto bullet_h = bullet_black.bmp().GetSize().GetHeight();
const int yoff_icon = bullet_h < em_h ? (em_h - bullet_h) / 2 : 0;
const int yoff_text = bullet_h > em_h ? (bullet_h - em_h) / 2 : 0;
const int yinc = item_height();
@@ -775,15 +801,21 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt)
unsigned y = 0;
for (size_t i = 0; i < items.size(); i++) {
const Item& item = items[i];
- unsigned x = em/2 + item.indent * em;
+ unsigned x = em_w/2 + item.indent * em_w;
if (i == item_active || item_hover >= 0 && i == (size_t)item_hover) {
+ /*#ys_FIXME_delete_after_testing by VK
dc.DrawBitmap(bullet_blue, x, y + yoff_icon, false);
}
else if (i < item_active) { dc.DrawBitmap(bullet_black, x, y + yoff_icon, false); }
else if (i > item_active) { dc.DrawBitmap(bullet_white, x, y + yoff_icon, false); }
+ */
+ dc.DrawBitmap(bullet_blue.bmp(), x, y + yoff_icon, false);
+ }
+ else if (i < item_active) { dc.DrawBitmap(bullet_black.bmp(), x, y + yoff_icon, false); }
+ else if (i > item_active) { dc.DrawBitmap(bullet_white.bmp(), x, y + yoff_icon, false); }
- x += + bullet_w + em/2;
+ x += + bullet_w + em_w/2;
const auto text_size = dc.GetTextExtent(item.label);
dc.DrawText(item.label, x, y + yoff_text);
@@ -794,6 +826,7 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt)
if (GetMinSize().x < index_width) {
CallAfter([this, index_width]() {
SetMinSize(wxSize(index_width, GetMinSize().y));
+ Refresh();
});
}
}
@@ -813,6 +846,18 @@ void ConfigWizardIndex::on_mouse_move(wxMouseEvent &evt)
evt.Skip();
}
+void ConfigWizardIndex::msw_rescale()
+{
+ bg.msw_rescale();
+ SetMinSize(bg.bmp().GetSize());
+ logo->SetBitmap(bg.bmp());
+
+ bullet_black.msw_rescale();
+ bullet_blue.msw_rescale();
+ bullet_white.msw_rescale();
+ Refresh();
+}
+
// priv
@@ -987,9 +1032,10 @@ void ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese
// Public
ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason)
- : wxDialog(parent, wxID_ANY, _(name().ToStdString()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+ : DPIDialog(parent, wxID_ANY, _(name().ToStdString()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
, p(new priv(this))
{
+ this->SetFont(wxGetApp().normal_font());
p->run_reason = reason;
p->load_vendors();
@@ -1014,8 +1060,8 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason)
topsizer->AddSpacer(INDEX_MARGIN);
topsizer->Add(p->hscroll, 1, wxEXPAND);
- auto *btn_sel_all = new wxButton(this, wxID_ANY, _(L("Select all standard printers")));
- p->btnsizer->Add(btn_sel_all);
+ p->btn_sel_all = new wxButton(this, wxID_ANY, _(L("Select all standard printers")));
+ p->btnsizer->Add(p->btn_sel_all);
p->btn_prev = new wxButton(this, wxID_ANY, _(L("< &Back")));
p->btn_next = new wxButton(this, wxID_ANY, _(L("&Next >")));
@@ -1073,7 +1119,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason)
9*disp_rect.width / 10,
9*disp_rect.height / 10);
- const int width_hint = p->index->GetSize().GetWidth() + p->page_fff->get_width() + 300; // XXX: magic constant, I found no better solution
+ const int width_hint = p->index->GetSize().GetWidth() + p->page_fff->get_width() + 30 * p->em(); // XXX: magic constant, I found no better solution
if (width_hint < window_rect.width) {
window_rect.x += (window_rect.width - width_hint) / 2;
window_rect.width = width_hint;
@@ -1087,7 +1133,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason)
p->btn_finish->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { this->EndModal(wxID_OK); });
p->btn_finish->Hide();
- btn_sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) {
+ p->btn_sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) {
p->page_fff->select_all(true, false);
p->page_msla->select_all(true, false);
p->index->go_to(p->page_update);
@@ -1133,5 +1179,25 @@ const wxString& ConfigWizard::name(const bool from_menu/* = false*/)
return from_menu ? config_wizard_name_menu : config_wizard_name;
}
+void ConfigWizard::on_dpi_changed(const wxRect &suggested_rect)
+{
+ p->index->msw_rescale();
+
+ const int& em = em_unit();
+
+ msw_buttons_rescale(this, em, { wxID_APPLY,
+ wxID_CANCEL,
+ p->btn_sel_all->GetId(),
+ p->btn_next->GetId(),
+ p->btn_prev->GetId() });
+
+ for (auto printer_picker: p->page_fff->printer_pickers)
+ msw_buttons_rescale(this, em, printer_picker->get_button_indexes());
+
+ // FIXME VK SetSize(???)
+
+ Refresh();
+}
+
}
}
diff --git a/src/slic3r/GUI/ConfigWizard.hpp b/src/slic3r/GUI/ConfigWizard.hpp
index c9ee05529..b707e525b 100644
--- a/src/slic3r/GUI/ConfigWizard.hpp
+++ b/src/slic3r/GUI/ConfigWizard.hpp
@@ -5,6 +5,8 @@
#include <wx/dialog.h>
+#include "GUI_Utils.hpp"
+
namespace Slic3r {
class PresetBundle;
@@ -13,7 +15,7 @@ class PresetUpdater;
namespace GUI {
-class ConfigWizard: public wxDialog
+class ConfigWizard: public DPIDialog
{
public:
// Why is the Wizard run
@@ -35,6 +37,10 @@ public:
bool run(PresetBundle *preset_bundle, const PresetUpdater *updater);
static const wxString& name(const bool from_menu = false);
+
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override ;
+
private:
struct priv;
std::unique_ptr<priv> p;
diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp
index df7602adf..95411e2aa 100644
--- a/src/slic3r/GUI/ConfigWizard_private.hpp
+++ b/src/slic3r/GUI/ConfigWizard_private.hpp
@@ -69,8 +69,11 @@ struct PrinterPicker: wxPanel
void on_checkbox(const Checkbox *cbox, bool checked);
int get_width() const { return width; }
+ const std::vector<int>& get_button_indexes() { return m_button_indexes; }
private:
int width;
+
+ std::vector<int> m_button_indexes;
};
struct ConfigWizardPage: wxPanel
@@ -210,7 +213,9 @@ public:
void go_to(ConfigWizardPage *page);
void clear();
+ void msw_rescale();
+ int em() const { return em_w; }
private:
struct Item
{
@@ -221,20 +226,29 @@ private:
bool operator==(ConfigWizardPage *page) const { return this->page == page; }
};
- int em;
+ int em_w;
int em_h;
-
+ /* #ys_FIXME_delete_after_testing by VK
const wxBitmap bg;
const wxBitmap bullet_black;
const wxBitmap bullet_blue;
const wxBitmap bullet_white;
+ */
+ ScalableBitmap bg;
+ ScalableBitmap bullet_black;
+ ScalableBitmap bullet_blue;
+ ScalableBitmap bullet_white;
+ wxStaticBitmap* logo;
std::vector<Item> items;
size_t item_active;
ssize_t item_hover;
size_t last_page;
- int item_height() const { return std::max(bullet_black.GetSize().GetHeight(), em) + em; }
+ /* #ys_FIXME_delete_after_testing by VK
+ int item_height() const { return std::max(bullet_black.GetSize().GetHeight(), em_w) + em_w; }
+ */
+ int item_height() const { return std::max(bullet_black.bmp().GetSize().GetHeight(), em_w) + em_w; }
void on_paint(wxPaintEvent &evt);
void on_mouse_move(wxMouseEvent &evt);
@@ -256,6 +270,7 @@ struct ConfigWizard::priv
wxBoxSizer *btnsizer = nullptr;
ConfigWizardPage *page_current = nullptr;
ConfigWizardIndex *index = nullptr;
+ wxButton *btn_sel_all = nullptr;
wxButton *btn_prev = nullptr;
wxButton *btn_next = nullptr;
wxButton *btn_finish = nullptr;
@@ -286,6 +301,8 @@ struct ConfigWizard::priv
void on_custom_setup(bool custom_wanted);
void apply_config(AppConfig *app_config, PresetBundle *preset_bundle, const PresetUpdater *updater);
+
+ int em() const { return index->em(); }
};
diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp
index d8ed9f27a..cb414fa79 100644
--- a/src/slic3r/GUI/Field.cpp
+++ b/src/slic3r/GUI/Field.cpp
@@ -21,21 +21,11 @@ wxString double_to_string(double const value, const int max_precision /*= 4*/)
void Field::PostInitialize()
{
auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
- m_Undo_btn = new MyButton(m_parent, wxID_ANY, "", wxDefaultPosition,wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
- m_Undo_to_sys_btn = new MyButton(m_parent, wxID_ANY, "", wxDefaultPosition,wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
- if (wxMSW) {
- m_Undo_btn->SetBackgroundColour(color);
- m_Undo_btn->SetBackgroundStyle(wxBG_STYLE_PAINT);
- m_Undo_to_sys_btn->SetBackgroundColour(color);
- m_Undo_to_sys_btn->SetBackgroundStyle(wxBG_STYLE_PAINT);
- }
- m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); }));
- m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); }));
+ m_Undo_btn = new RevertButton(m_parent, "bullet_white.png");
+ m_Undo_to_sys_btn = new RevertButton(m_parent, "bullet_white.png");
- //set default bitmap
- wxBitmap bmp = create_scaled_bitmap(m_parent, "bullet_white.png");
- set_undo_bitmap(&bmp);
- set_undo_to_sys_bitmap(&bmp);
+ m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); }));
+ m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); }));
switch (m_opt.type)
{
@@ -53,6 +43,9 @@ void Field::PostInitialize()
break;
}
+ // initialize m_unit_value
+ m_em_unit = em_unit(m_parent);
+
BUILD();
}
@@ -95,6 +88,7 @@ wxString Field::get_tooltip_text(const wxString& default_string)
{
wxString tooltip_text("");
wxString tooltip = _(m_opt.tooltip);
+ edit_tooltip(tooltip);
if (tooltip.length() > 0)
tooltip_text = tooltip + "\n" + _(L("default value")) + "\t: " +
(boost::iends_with(m_opt_id, "_gcode") ? "\n" : "") + default_string +
@@ -200,8 +194,8 @@ bool is_defined_input_value(wxWindow* win, const ConfigOptionType& type)
void TextCtrl::BUILD() {
auto size = wxSize(wxDefaultSize);
- if (m_opt.height >= 0) size.SetHeight(m_opt.height);
- if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+ if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+ if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
wxString text_value = wxString("");
@@ -345,6 +339,21 @@ boost::any& TextCtrl::get_value()
return m_value;
}
+void TextCtrl::msw_rescale()
+{
+ Field::msw_rescale();
+ auto size = wxSize(wxDefaultSize);
+ if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+ if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
+
+ if (size != wxDefaultSize)
+ {
+ wxTextCtrl* field = dynamic_cast<wxTextCtrl*>(window);
+ field->SetMinSize(size);
+ }
+
+}
+
void TextCtrl::enable() { dynamic_cast<wxTextCtrl*>(window)->Enable(); dynamic_cast<wxTextCtrl*>(window)->SetEditable(true); }
void TextCtrl::disable() { dynamic_cast<wxTextCtrl*>(window)->Disable(); dynamic_cast<wxTextCtrl*>(window)->SetEditable(false); }
@@ -359,15 +368,16 @@ void TextCtrl::change_field_value(wxEvent& event)
void CheckBox::BUILD() {
auto size = wxSize(wxDefaultSize);
- if (m_opt.height >= 0) size.SetHeight(m_opt.height);
- if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+ if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+ if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
bool check_value = m_opt.type == coBool ?
m_opt.default_value->getBool() : m_opt.type == coBools ?
static_cast<const ConfigOptionBools*>(m_opt.default_value)->get_at(m_opt_idx) :
false;
- auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size);
+ // Set Label as a string of at least one space simbol to correct system scaling of a CheckBox
+ auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(" "), wxDefaultPosition, size);
temp->SetFont(Slic3r::GUI::wxGetApp().normal_font());
temp->SetBackgroundStyle(wxBG_STYLE_PAINT);
temp->SetValue(check_value);
@@ -392,12 +402,20 @@ boost::any& CheckBox::get_value()
return m_value;
}
+void CheckBox::msw_rescale()
+{
+ Field::msw_rescale();
+
+ wxCheckBox* field = dynamic_cast<wxCheckBox*>(window);
+ field->SetMinSize(wxSize(-1, int(1.5f*field->GetFont().GetPixelSize().y +0.5f)));
+}
+
int undef_spin_val = -9999; //! Probably, It's not necessary
void SpinCtrl::BUILD() {
auto size = wxSize(wxDefaultSize);
- if (m_opt.height >= 0) size.SetHeight(m_opt.height);
- if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+ if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+ if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
wxString text_value = wxString("");
int default_value = 0;
@@ -475,6 +493,11 @@ void SpinCtrl::BUILD() {
else tmp_value = -9999;
#ifdef __WXOSX__
propagate_value();
+
+ // Forcibly set the input value for SpinControl, since the value
+ // inserted from the clipboard is not updated under OSX
+ if (tmp_value > -9999)
+ dynamic_cast<wxSpinCtrl*>(window)->SetValue(tmp_value);
#endif
}), temp->GetId());
@@ -492,10 +515,18 @@ void SpinCtrl::propagate_value()
on_change_field();
}
+void SpinCtrl::msw_rescale()
+{
+ Field::msw_rescale();
+
+ wxSpinCtrl* field = dynamic_cast<wxSpinCtrl*>(window);
+ field->SetMinSize(wxSize(-1, int(1.9f*field->GetFont().GetPixelSize().y)));
+}
+
void Choice::BUILD() {
- wxSize size(15 * wxGetApp().em_unit(), -1);
- if (m_opt.height >= 0) size.SetHeight(m_opt.height);
- if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+ wxSize size(m_width * m_em_unit, -1);
+ if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+ if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
wxBitmapComboBox* temp;
if (!m_opt.gui_type.empty() && m_opt.gui_type.compare("select_open") != 0) {
@@ -804,11 +835,55 @@ boost::any& Choice::get_value()
return m_value;
}
+void Choice::msw_rescale()
+{
+ Field::msw_rescale();
+
+ wxBitmapComboBox* field = dynamic_cast<wxBitmapComboBox*>(window);
+
+ const wxString selection = field->GetString(field->GetSelection());
+
+ /* To correct scaling (set new controll size) of a wxBitmapCombobox
+ * we need to refill control with new bitmaps. So, in our case :
+ * 1. clear conrol
+ * 2. add content
+ * 3. add scaled "empty" bitmap to the at least one item
+ */
+ field->Clear();
+ wxSize size(wxDefaultSize);
+ size.SetWidth((m_opt.width > 0 ? m_opt.width : m_width) * m_em_unit);
+
+ // Set rescaled min height to correct layout
+ field->SetMinSize(wxSize(-1, int(1.5f*field->GetFont().GetPixelSize().y + 0.5f)));
+ // Set rescaled size
+ field->SetSize(size);
+
+ size_t idx, counter = idx = 0;
+ if (m_opt.enum_labels.empty() && m_opt.enum_values.empty()) {}
+ else{
+ for (auto el : m_opt.enum_labels.empty() ? m_opt.enum_values : m_opt.enum_labels) {
+ const wxString& str = _(el);
+ field->Append(str);
+ if (el.compare(selection) == 0)
+ idx = counter;
+ ++counter;
+ }
+ }
+
+ wxBitmap empty_bmp(1, field->GetFont().GetPixelSize().y + 2);
+ empty_bmp.SetWidth(0);
+ field->SetItemBitmap(0, empty_bmp);
+
+ idx == m_opt.enum_values.size() ?
+ field->SetValue(selection) :
+ field->SetSelection(idx);
+}
+
void ColourPicker::BUILD()
{
auto size = wxSize(wxDefaultSize);
- if (m_opt.height >= 0) size.SetHeight(m_opt.height);
- if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+ if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+ if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
// Validate the color
wxString clr_str(static_cast<const ConfigOptionStrings*>(m_opt.default_value)->get_at(m_opt_idx));
@@ -843,7 +918,7 @@ void PointCtrl::BUILD()
{
auto temp = new wxBoxSizer(wxHORIZONTAL);
- const wxSize field_size(4 * wxGetApp().em_unit(), -1);
+ const wxSize field_size(4 * m_em_unit, -1);
auto default_pt = static_cast<const ConfigOptionPoints*>(m_opt.default_value)->values.at(0);
double val = default_pt(0);
@@ -886,6 +961,16 @@ void PointCtrl::BUILD()
y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y));
}
+void PointCtrl::msw_rescale()
+{
+ Field::msw_rescale();
+
+ const wxSize field_size(4 * m_em_unit, -1);
+
+ x_textctrl->SetMinSize(field_size);
+ y_textctrl->SetMinSize(field_size);
+}
+
void PointCtrl::propagate_value(wxTextCtrl* win)
{
if (!win->GetValue().empty())
@@ -931,8 +1016,8 @@ boost::any& PointCtrl::get_value()
void StaticText::BUILD()
{
auto size = wxSize(wxDefaultSize);
- if (m_opt.height >= 0) size.SetHeight(m_opt.height);
- if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+ if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+ if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
const wxString legend(static_cast<const ConfigOptionString*>(m_opt.default_value)->value);
auto temp = new wxStaticText(m_parent, wxID_ANY, legend, wxDefaultPosition, size, wxST_ELLIPSIZE_MIDDLE);
@@ -946,6 +1031,21 @@ void StaticText::BUILD()
temp->SetToolTip(get_tooltip_text(legend));
}
+void StaticText::msw_rescale()
+{
+ Field::msw_rescale();
+
+ auto size = wxSize(wxDefaultSize);
+ if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+ if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
+
+ if (size != wxDefaultSize)
+ {
+ wxStaticText* field = dynamic_cast<wxStaticText*>(window);
+ field->SetSize(size);
+ }
+}
+
void SliderCtrl::BUILD()
{
auto size = wxSize(wxDefaultSize);
diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp
index 128d60d47..88ea39036 100644
--- a/src/slic3r/GUI/Field.hpp
+++ b/src/slic3r/GUI/Field.hpp
@@ -19,6 +19,7 @@
#include "libslic3r/Utils.hpp"
#include "GUI.hpp"
+#include "wxExtensions.hpp"
#ifdef __WXMSW__
#define wxMSW true
@@ -36,19 +37,24 @@ using t_back_to_init = std::function<void(const std::string&)>;
wxString double_to_string(double const value, const int max_precision = 4);
-class MyButton : public wxButton
+class RevertButton : public ScalableButton
{
bool hidden = false; // never show button if it's hidden ones
public:
- MyButton() {}
- MyButton(wxWindow* parent, wxWindowID id, const wxString& label = wxEmptyString,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxTextCtrlNameStr)
- {
- this->Create(parent, id, label, pos, size, style, validator, name);
- }
+// RevertButton() {}
+// RevertButton(wxWindow* parent, wxWindowID id, const wxString& label = wxEmptyString,
+// const wxPoint& pos = wxDefaultPosition,
+// const wxSize& size = wxDefaultSize, long style = 0,
+// const wxValidator& validator = wxDefaultValidator,
+// const wxString& name = wxTextCtrlNameStr)
+// {
+// this->Create(parent, id, label, pos, size, style, validator, name);
+// }
+ RevertButton(
+ wxWindow *parent,
+ const std::string& icon_name = ""
+ ) :
+ ScalableButton(parent, wxID_ANY, icon_name) {}
// overridden from wxWindow base class
virtual bool
@@ -154,19 +160,19 @@ public:
return std::move(p); //!p;
}
- bool set_undo_bitmap(const wxBitmap *bmp) {
+ bool set_undo_bitmap(const ScalableBitmap *bmp) {
if (m_undo_bitmap != bmp) {
m_undo_bitmap = bmp;
- m_Undo_btn->SetBitmap(*bmp);
+ m_Undo_btn->SetBitmap_(*bmp);
return true;
}
return false;
}
- bool set_undo_to_sys_bitmap(const wxBitmap *bmp) {
+ bool set_undo_to_sys_bitmap(const ScalableBitmap *bmp) {
if (m_undo_to_sys_bitmap != bmp) {
m_undo_to_sys_bitmap = bmp;
- m_Undo_to_sys_btn->SetBitmap(*bmp);
+ m_Undo_to_sys_btn->SetBitmap_(*bmp);
return true;
}
return false;
@@ -211,15 +217,23 @@ public:
m_side_text = side_text;
}
+ virtual void msw_rescale() {
+ m_Undo_to_sys_btn->msw_rescale();
+ m_Undo_btn->msw_rescale();
+
+ // update em_unit value
+ m_em_unit = em_unit(m_parent);
+ }
+
protected:
- MyButton* m_Undo_btn = nullptr;
+ RevertButton* m_Undo_btn = nullptr;
// Bitmap and Tooltip text for m_Undo_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one.
- const wxBitmap* m_undo_bitmap = nullptr;
- const wxString* m_undo_tooltip = nullptr;
- MyButton* m_Undo_to_sys_btn = nullptr;
+ const ScalableBitmap* m_undo_bitmap = nullptr;
+ const wxString* m_undo_tooltip = nullptr;
+ RevertButton* m_Undo_to_sys_btn = nullptr;
// Bitmap and Tooltip text for m_Undo_to_sys_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one.
- const wxBitmap* m_undo_to_sys_bitmap = nullptr;
- const wxString* m_undo_to_sys_tooltip = nullptr;
+ const ScalableBitmap* m_undo_to_sys_bitmap = nullptr;
+ const wxString* m_undo_to_sys_tooltip = nullptr;
wxStaticText* m_Label = nullptr;
// Color for Label. The wxColour will be updated only if the new wxColour pointer differs from the currently rendered one.
@@ -230,6 +244,8 @@ protected:
// current value
boost::any m_value;
+ int m_em_unit;
+
bool bEnterPressed = false;
friend class OptionsGroup;
@@ -273,6 +289,8 @@ public:
}
boost::any& get_value() override;
+
+ void msw_rescale() override;
virtual void enable();
virtual void disable();
@@ -301,6 +319,8 @@ public:
}
boost::any& get_value() override;
+ void msw_rescale() override;
+
void enable() override { dynamic_cast<wxCheckBox*>(window)->Enable(); }
void disable() override { dynamic_cast<wxCheckBox*>(window)->Disable(); }
wxWindow* getWindow() override { return window; }
@@ -337,6 +357,8 @@ public:
return m_value = tmp_value;
}
+ void msw_rescale() override;
+
void enable() override { dynamic_cast<wxSpinCtrl*>(window)->Enable(); }
void disable() override { dynamic_cast<wxSpinCtrl*>(window)->Disable(); }
wxWindow* getWindow() override { return window; }
@@ -344,6 +366,7 @@ public:
class Choice : public Field {
using Field::Field;
+ int m_width{ 15 };
public:
Choice(const ConfigOptionDef& opt, const t_config_option_key& id) : Field(opt, id) {}
Choice(wxWindow* parent, const ConfigOptionDef& opt, const t_config_option_key& id) : Field(parent, opt, id) {}
@@ -363,6 +386,8 @@ public:
void set_values(const std::vector<std::string> &values);
boost::any& get_value() override;
+ void msw_rescale() override;
+
void enable() override { dynamic_cast<wxBitmapComboBox*>(window)->Enable(); };
void disable() override{ dynamic_cast<wxBitmapComboBox*>(window)->Disable(); };
wxWindow* getWindow() override { return window; }
@@ -414,6 +439,8 @@ public:
void set_value(const boost::any& value, bool change_event = false);
boost::any& get_value() override;
+ void msw_rescale() override;
+
void enable() override {
x_textctrl->Enable();
y_textctrl->Enable(); }
@@ -446,6 +473,8 @@ public:
boost::any& get_value()override { return m_value; }
+ void msw_rescale() override;
+
void enable() override { dynamic_cast<wxStaticText*>(window)->Enable(); };
void disable() override{ dynamic_cast<wxStaticText*>(window)->Disable(); };
wxWindow* getWindow() override { return window; }
diff --git a/src/slic3r/GUI/FirmwareDialog.cpp b/src/slic3r/GUI/FirmwareDialog.cpp
index 8095a3237..5de5626db 100644
--- a/src/slic3r/GUI/FirmwareDialog.cpp
+++ b/src/slic3r/GUI/FirmwareDialog.cpp
@@ -18,6 +18,7 @@
#include "MsgDialog.hpp"
#include "../Utils/HexFile.hpp"
#include "../Utils/Serial.hpp"
+#include "wxExtensions.hpp"
// wx includes need to come after asio because of the WinSock.h problem
#include "FirmwareDialog.hpp"
@@ -118,6 +119,10 @@ struct FirmwareDialog::priv
wxTimer timer_pulse;
+ int min_width;
+ int min_height;
+ int min_height_expanded;
+
// Async modal dialog during flashing
std::mutex mutex;
int modal_response;
@@ -732,23 +737,21 @@ const char* FirmwareDialog::priv::avr109_dev_name(Avr109Pid usb_pid) {
// Public
FirmwareDialog::FirmwareDialog(wxWindow *parent) :
- wxDialog(parent, wxID_ANY, _(L("Firmware flasher")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER),
+ GUI::DPIDialog(parent, wxID_ANY, _(L("Firmware flasher")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER),
p(new priv(this))
{
- enum {
- DIALOG_MARGIN = 15,
- SPACING = 10,
- MIN_WIDTH = 50,
- MIN_HEIGHT = 18,
- MIN_HEIGHT_EXPANDED = 40,
- };
-
const int em = GUI::wxGetApp().em_unit();
- int min_width = MIN_WIDTH * em;
- int min_height = MIN_HEIGHT * em;
- int min_height_expanded = MIN_HEIGHT_EXPANDED * em;
-
- wxFont status_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+ p->min_width = MIN_WIDTH * em;
+ p->min_height = MIN_HEIGHT * em;
+ p->min_height_expanded = MIN_HEIGHT_EXPANDED * em;
+
+ /* get current font from application,
+ * because of wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) function
+ * returns font for primary Display
+ */
+ const wxFont& font = GUI::wxGetApp().normal_font();
+ SetFont(font);
+ wxFont status_font = font;//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
status_font.MakeBold();
wxFont mono_font(wxFontInfo().Family(wxFONTFAMILY_TELETYPE));
mono_font.MakeSmaller();
@@ -819,10 +822,10 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) :
auto *topsizer = new wxBoxSizer(wxVERTICAL);
topsizer->Add(panel, 1, wxEXPAND | wxALL, DIALOG_MARGIN);
- SetMinSize(wxSize(min_width, min_height));
+ SetMinSize(wxSize(p->min_width, p->min_height));
SetSizerAndFit(topsizer);
const auto size = GetSize();
- SetSize(std::max(size.GetWidth(), static_cast<int>(min_width)), std::max(size.GetHeight(), static_cast<int>(min_height)));
+ SetSize(std::max(size.GetWidth(), static_cast<int>(p->min_width)), std::max(size.GetHeight(), static_cast<int>(p->min_height)));
Layout();
SetEscapeId(wxID_CLOSE); // To close the dialog using "Esc" button
@@ -838,11 +841,11 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) :
p->spoiler->Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, [=](wxCollapsiblePaneEvent &evt) {
if (evt.GetCollapsed()) {
- this->SetMinSize(wxSize(min_width, min_height));
+ this->SetMinSize(wxSize(p->min_width, p->min_height));
const auto new_height = this->GetSize().GetHeight() - this->p->txt_stdout->GetSize().GetHeight();
this->SetSize(this->GetSize().GetWidth(), new_height);
} else {
- this->SetMinSize(wxSize(min_width, min_height_expanded));
+ this->SetMinSize(wxSize(p->min_width, p->min_height_expanded));
}
this->Layout();
@@ -897,5 +900,25 @@ void FirmwareDialog::run(wxWindow *parent)
dialog.ShowModal();
}
+void FirmwareDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+ const int& em = em_unit();
+
+ msw_buttons_rescale(this, em, { p->btn_close->GetId(),
+ p->btn_rescan->GetId(),
+ p->btn_flash->GetId(),
+ p->hex_picker->GetPickerCtrl()->GetId()
+ });
+
+ p->min_width = MIN_WIDTH * em;
+ p->min_height = MIN_HEIGHT * em;
+ p->min_height_expanded = MIN_HEIGHT_EXPANDED * em;
+
+ const int min_height = p->spoiler->IsExpanded() ? p->min_height_expanded : p->min_height;
+ SetMinSize(wxSize(p->min_width, min_height));
+ Fit();
+
+ Refresh();
+}
}
diff --git a/src/slic3r/GUI/FirmwareDialog.hpp b/src/slic3r/GUI/FirmwareDialog.hpp
index ad048bf5d..7c688d379 100644
--- a/src/slic3r/GUI/FirmwareDialog.hpp
+++ b/src/slic3r/GUI/FirmwareDialog.hpp
@@ -4,13 +4,22 @@
#include <memory>
#include <wx/dialog.h>
+#include "GUI_Utils.hpp"
namespace Slic3r {
-class FirmwareDialog: public wxDialog
+class FirmwareDialog: public GUI::DPIDialog
{
+ enum {
+ DIALOG_MARGIN = 15,
+ SPACING = 10,
+ MIN_WIDTH = 50,
+ MIN_HEIGHT = /*18*/25,
+ MIN_HEIGHT_EXPANDED = 40,
+ };
+
public:
FirmwareDialog(wxWindow *parent);
FirmwareDialog(FirmwareDialog &&) = delete;
@@ -20,6 +29,9 @@ public:
~FirmwareDialog();
static void run(wxWindow *parent);
+
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override;
private:
struct priv;
std::unique_ptr<priv> p;
diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp
index f8859807f..478cbf1aa 100644
--- a/src/slic3r/GUI/GLCanvas3D.cpp
+++ b/src/slic3r/GUI/GLCanvas3D.cpp
@@ -703,6 +703,7 @@ void GLCanvas3D::WarningTexture::activate(WarningTexture::Warning warning, bool
m_warnings.erase(it);
if (m_warnings.empty()) { // nothing remains to be shown
reset();
+ m_msg_text = "";// save information for rescaling
return;
}
}
@@ -723,6 +724,10 @@ void GLCanvas3D::WarningTexture::activate(WarningTexture::Warning warning, bool
}
_generate(text, canvas, red_colored); // GUI::GLTexture::reset() is called at the beginning of generate(...)
+
+ // save information for rescaling
+ m_msg_text = text;
+ m_is_colored_red = red_colored;
}
@@ -789,9 +794,16 @@ bool GLCanvas3D::WarningTexture::_generate(const std::string& msg_utf8, const GL
wxString msg = GUI::from_u8(msg_utf8);
wxMemoryDC memDC;
+
+#ifdef __WXMSW__
+ // set scaled application normal font as default font
+ wxFont font = wxGetApp().normal_font();
+#else
// select default font
const float scale = canvas.get_canvas_size().get_scale_factor();
wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale);
+#endif
+
font.MakeLarger();
font.MakeBold();
memDC.SetFont(font);
@@ -892,6 +904,14 @@ void GLCanvas3D::WarningTexture::render(const GLCanvas3D& canvas) const
}
}
+void GLCanvas3D::WarningTexture::msw_rescale(const GLCanvas3D& canvas)
+{
+ if (m_msg_text.empty())
+ return;
+
+ _generate(m_msg_text, canvas, m_is_colored_red);
+}
+
const unsigned char GLCanvas3D::LegendTexture::Squares_Border_Color[3] = { 64, 64, 64 };
const unsigned char GLCanvas3D::LegendTexture::Default_Background_Color[3] = { (unsigned char)(DEFAULT_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[2] * 255.0f) };
const unsigned char GLCanvas3D::LegendTexture::Error_Background_Color[3] = { (unsigned char)(ERROR_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[2] * 255.0f) };
@@ -961,13 +981,16 @@ bool GLCanvas3D::LegendTexture::generate(const GCodePreviewData& preview_data, c
const int scaled_square_contour = Px_Square_Contour * scale;
const int scaled_border = Px_Border * scale;
- // select default font
- wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale_gl);
#ifdef __WXMSW__
+ // set scaled application normal font as default font
+ wxFont font = wxGetApp().normal_font();
+
// Disabling ClearType works, but the font returned is very different (much thicker) from the default.
// msw_disable_cleartype(font);
bool cleartype = is_font_cleartype(font);
#else
+ // select default font
+ wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale_gl);
bool cleartype = false;
#endif /* __WXMSW__ */
@@ -3190,6 +3213,11 @@ double GLCanvas3D::get_size_proportional_to_max_bed_size(double factor) const
return factor * m_bed.get_bounding_box().max_size();
}
+void GLCanvas3D::msw_rescale()
+{
+ m_warning_texture.msw_rescale(*this);
+}
+
bool GLCanvas3D::_is_shown_on_screen() const
{
return (m_canvas != nullptr) ? m_canvas->IsShownOnScreen() : false;
@@ -3834,7 +3862,8 @@ void GLCanvas3D::_render_gizmos_overlay() const
#if ENABLE_RETINA_GL
m_gizmos.set_overlay_scale(m_retina_helper->get_scale_factor());
#else
- m_gizmos.set_overlay_scale(m_canvas->GetContentScaleFactor());
+// m_gizmos.set_overlay_scale(m_canvas->GetContentScaleFactor());
+ m_gizmos.set_overlay_scale(wxGetApp().em_unit()*0.1f);//! #ys_FIXME_experiment
#endif /* __WXMSW__ */
m_gizmos.render_overlay(*this, m_selection);
@@ -3846,7 +3875,8 @@ void GLCanvas3D::_render_toolbar() const
#if ENABLE_RETINA_GL
m_toolbar.set_scale(m_retina_helper->get_scale_factor());
#else
- m_toolbar.set_scale(m_canvas->GetContentScaleFactor());
+// m_toolbar.set_scale(m_canvas->GetContentScaleFactor());
+ m_toolbar.set_scale(wxGetApp().em_unit()*0.1f);//! #ys_FIXME_experiment
#endif // ENABLE_RETINA_GL
Size cnv_size = get_canvas_size();
@@ -3909,7 +3939,8 @@ void GLCanvas3D::_render_view_toolbar() const
#if ENABLE_RETINA_GL
m_view_toolbar.set_scale(m_retina_helper->get_scale_factor());
#else
- m_view_toolbar.set_scale(m_canvas->GetContentScaleFactor());
+// m_view_toolbar.set_scale(m_canvas->GetContentScaleFactor());
+ m_view_toolbar.set_scale(wxGetApp().em_unit()*0.1f); //! #ys_FIXME_experiment
#endif // ENABLE_RETINA_GL
Size cnv_size = get_canvas_size();
diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp
index e81d46f11..8abc0378e 100644
--- a/src/slic3r/GUI/GLCanvas3D.hpp
+++ b/src/slic3r/GUI/GLCanvas3D.hpp
@@ -353,6 +353,9 @@ private:
void activate(WarningTexture::Warning warning, bool state, const GLCanvas3D& canvas);
void render(const GLCanvas3D& canvas) const;
+ // function used to get an information for rescaling of the warning
+ void msw_rescale(const GLCanvas3D& canvas);
+
private:
static const unsigned char Background_Color[3];
static const unsigned char Opacity;
@@ -360,6 +363,10 @@ private:
int m_original_width;
int m_original_height;
+ // information for rescaling of the warning legend
+ std::string m_msg_text = "";
+ bool m_is_colored_red{false};
+
// Information about which warnings are currently active.
std::vector<Warning> m_warnings;
@@ -587,6 +594,8 @@ public:
double get_size_proportional_to_max_bed_size(double factor) const;
+ void msw_rescale();
+
private:
bool _is_shown_on_screen() const;
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index 62b8581be..0ffdd576f 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -325,6 +325,17 @@ void GUI_App::init_fonts()
#endif /*__WXMAC__*/
}
+void GUI_App::update_fonts()
+{
+ /* Only normal and bold fonts are used for an application rescale,
+ * because of under MSW small and normal fonts are the same.
+ * To avoid same rescaling twice, just fill this values
+ * from rescaled MainFrame
+ */
+ m_normal_font = mainframe->normal_font();
+ m_bold_font = mainframe->normal_font().Bold();
+}
+
void GUI_App::set_label_clr_modified(const wxColour& clr) {
m_color_label_modified = clr;
auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue());
@@ -652,7 +663,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Check(get_mode() == comAdvanced); }, config_id_base + ConfigMenuModeAdvanced);
Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Check(get_mode() == comExpert); }, config_id_base + ConfigMenuModeExpert);
- local_menu->AppendSubMenu(mode_menu, _(L("Mode")), _(L("Slic3r View Mode")));
+ local_menu->AppendSubMenu(mode_menu, _(L("Mode")), wxString::Format(_(L("%s View Mode")), SLIC3R_APP_NAME));
local_menu->AppendSeparator();
local_menu->Append(config_id_base + ConfigMenuLanguage, _(L("Change Application &Language")));
local_menu->AppendSeparator();
@@ -669,6 +680,12 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
// Take a configuration snapshot.
if (check_unsaved_changes()) {
wxTextEntryDialog dlg(nullptr, _(L("Taking configuration snapshot")), _(L("Snapshot name")));
+
+ // set current normal font for dialog children,
+ // because of just dlg.SetFont(normal_font()) has no result;
+ for (auto child : dlg.GetChildren())
+ child->SetFont(normal_font());
+
if (dlg.ShowModal() == wxID_OK)
app_config->set("on_snapshot",
Slic3r::GUI::Config::SnapshotDB::singleton().take_snapshot(
@@ -718,7 +735,6 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
get_installed_languages(names, identifiers);
if (select_language(names, identifiers)) {
save_language();
-// show_info(mainframe->m_tabpanel, _(L("Application will be restarted")), _(L("Attention!")));
_3DScene::remove_all_canvases();// remove all canvas before recreate GUI
recreate_GUI();
}
diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp
index 41805702b..d3c9e0afa 100644
--- a/src/slic3r/GUI/GUI_App.hpp
+++ b/src/slic3r/GUI/GUI_App.hpp
@@ -98,6 +98,7 @@ public:
void init_label_colours();
void update_label_colours_from_appconfig();
void init_fonts();
+ void update_fonts();
void set_label_clr_modified(const wxColour& clr);
void set_label_clr_sys(const wxColour& clr);
@@ -139,6 +140,8 @@ public:
bool checked_tab(Tab* tab);
void load_current_presets();
+ wxString current_language_code() { return m_wxLocale != nullptr ? m_wxLocale->GetCanonicalName() : wxString("en_US"); }
+
virtual bool OnExceptionInMainLoop();
#ifdef __APPLE__
diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp
index f65c83abb..dbe8145f3 100644
--- a/src/slic3r/GUI/GUI_ObjectList.cpp
+++ b/src/slic3r/GUI/GUI_ObjectList.cpp
@@ -163,7 +163,7 @@ void ObjectList::create_objects_ctrl()
m_sizer = new wxBoxSizer(wxVERTICAL);
m_sizer->Add(this, 1, wxGROW);
- m_objects_model = new PrusaObjectDataViewModel;
+ m_objects_model = new ObjectDataViewModel;
AssociateModel(m_objects_model);
m_objects_model->SetAssociatedControl(this);
#if wxUSE_DRAG_AND_DROP && wxUSE_UNICODE
@@ -173,7 +173,7 @@ void ObjectList::create_objects_ctrl()
// column 0(Icon+Text) of the view control:
// And Icon can be consisting of several bitmaps
- AppendColumn(new wxDataViewColumn(_(L("Name")), new PrusaBitmapTextRenderer(),
+ AppendColumn(new wxDataViewColumn(_(L("Name")), new BitmapTextRenderer(),
0, 20*wxGetApp().em_unit()/*200*/, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE));
// column 1 of the view control:
@@ -203,7 +203,7 @@ void ObjectList::set_tooltip_for_item(const wxPoint& pt)
if (col->GetTitle() == " " && GetSelectedItemsCount()<2)
GetMainWindow()->SetToolTip(_(L("Right button click the icon to change the object settings")));
else if (col->GetTitle() == _("Name") &&
- m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.GetRefData()) {
+ m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.bmp().GetRefData()) {
int obj_idx = m_objects_model->GetIdByItem(item);
auto& stats = (*m_objects)[obj_idx]->volumes[0]->mesh.stl.stats;
int errors = stats.degenerate_facets + stats.edges_fixed + stats.facets_removed +
@@ -395,27 +395,71 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const
void ObjectList::init_icons()
{
- m_bmp_modifiermesh = create_scaled_bitmap(nullptr, "add_modifier");
- m_bmp_solidmesh = create_scaled_bitmap(nullptr, "add_part");
- m_bmp_support_enforcer = create_scaled_bitmap(nullptr, "support_enforcer");
- m_bmp_support_blocker = create_scaled_bitmap(nullptr, "support_blocker");
-
+ m_bmp_modifiermesh = ScalableBitmap(nullptr, "add_modifier"); // Add part
+ m_bmp_solidmesh = ScalableBitmap(nullptr, "add_part"); // Add modifier
+ m_bmp_support_enforcer = ScalableBitmap(nullptr, "support_enforcer");// Add support enforcer
+ m_bmp_support_blocker = ScalableBitmap(nullptr, "support_blocker"); // Add support blocker
m_bmp_vector.reserve(4); // bitmaps for different types of parts
- m_bmp_vector.push_back(&m_bmp_solidmesh); // Add part
- m_bmp_vector.push_back(&m_bmp_modifiermesh); // Add modifier
- m_bmp_vector.push_back(&m_bmp_support_enforcer); // Add support enforcer
- m_bmp_vector.push_back(&m_bmp_support_blocker); // Add support blocker
+ m_bmp_vector.push_back(&m_bmp_solidmesh.bmp());
+ m_bmp_vector.push_back(&m_bmp_modifiermesh.bmp());
+ m_bmp_vector.push_back(&m_bmp_support_enforcer.bmp());
+ m_bmp_vector.push_back(&m_bmp_support_blocker.bmp());
+
+
+ // Set volumes default bitmaps for the model
m_objects_model->SetVolumeBitmaps(m_bmp_vector);
// init icon for manifold warning
- m_bmp_manifold_warning = create_scaled_bitmap(nullptr, "exclamation");
+ m_bmp_manifold_warning = ScalableBitmap(nullptr, "exclamation");
// init bitmap for "Split to sub-objects" context menu
- m_bmp_split = create_scaled_bitmap(nullptr, "split_parts_SMALL");
+ m_bmp_split = ScalableBitmap(nullptr, "split_parts_SMALL");
// init bitmap for "Add Settings" context menu
- m_bmp_cog = create_scaled_bitmap(nullptr, "cog");
+ m_bmp_cog = ScalableBitmap(nullptr, "cog");
+}
+
+void ObjectList::rescale_icons()
+{
+ m_bmp_vector.clear();
+ m_bmp_vector.reserve(4); // bitmaps for different types of parts
+ for (ScalableBitmap* bitmap : std::vector<ScalableBitmap*> {
+ &m_bmp_modifiermesh, // Add part
+ &m_bmp_solidmesh, // Add modifier
+ &m_bmp_support_enforcer, // Add support enforcer
+ &m_bmp_support_blocker }) // Add support blocker
+ {
+ bitmap->msw_rescale();
+ m_bmp_vector.push_back(& bitmap->bmp());
+ }
+ // Set volumes default bitmaps for the model
+ m_objects_model->SetVolumeBitmaps(m_bmp_vector);
+
+ m_bmp_manifold_warning.msw_rescale();
+ m_bmp_split.msw_rescale();
+ m_bmp_cog.msw_rescale();
+
+
+ // Update CATEGORY_ICON according to new scale
+ {
+ // Note: `this` isn't passed to create_scaled_bitmap() here because of bugs in the widget,
+ // see note in PresetBundle::load_compatible_bitmaps()
+
+ // ptFFF
+ CATEGORY_ICON[L("Layers and Perimeters")] = create_scaled_bitmap(nullptr, "layers");
+ CATEGORY_ICON[L("Infill")] = create_scaled_bitmap(nullptr, "infill");
+ CATEGORY_ICON[L("Support material")] = create_scaled_bitmap(nullptr, "support");
+ CATEGORY_ICON[L("Speed")] = create_scaled_bitmap(nullptr, "time");
+ CATEGORY_ICON[L("Extruders")] = create_scaled_bitmap(nullptr, "funnel");
+ CATEGORY_ICON[L("Extrusion Width")] = create_scaled_bitmap(nullptr, "funnel");
+// CATEGORY_ICON[L("Skirt and brim")] = create_scaled_bitmap(nullptr, "skirt+brim");
+// CATEGORY_ICON[L("Speed > Acceleration")] = create_scaled_bitmap(nullptr, "time");
+ CATEGORY_ICON[L("Advanced")] = create_scaled_bitmap(nullptr, "wrench");
+ // ptSLA
+ CATEGORY_ICON[L("Supports")] = create_scaled_bitmap(nullptr, "support"/*"sla_supports"*/);
+ CATEGORY_ICON[L("Pad")] = create_scaled_bitmap(nullptr, "pad");
+ }
}
@@ -463,8 +507,7 @@ void ObjectList::paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& vol
items.Add(vol_item);
}
- m_parts_changed = true;
- parts_changed(obj_idx);
+ changed_object(obj_idx);
if (items.size() > 1)
{
@@ -490,9 +533,7 @@ void ObjectList::paste_objects_into_list(const std::vector<size_t>& object_idxs)
items.Add(m_objects_model->GetItemById(object));
}
- m_parts_changed = true;
wxGetApp().plater()->changed_objects(object_idxs);
- m_parts_changed = false;
select_items(items);
#ifndef __WXOSX__ //#ifdef __WXMSW__ // #ys_FIXME
@@ -534,7 +575,7 @@ void ObjectList::OnContextMenu(wxDataViewEvent&)
if (title == " ")
show_context_menu();
else if (title == _("Name") && pt.x >15 &&
- m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.GetRefData())
+ m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.bmp().GetRefData())
{
if (is_windows10())
fix_through_netfabb();
@@ -703,8 +744,7 @@ void ObjectList::OnDrop(wxDataViewEvent &event)
select_item(m_objects_model->ReorganizeChildren(from_volume_id, to_volume_id,
m_objects_model->GetParent(item)));
- m_parts_changed = true;
- parts_changed(m_dragged_data.obj_idx());
+ changed_object(m_dragged_data.obj_idx());
m_dragged_data.clear();
}
@@ -1000,12 +1040,12 @@ void ObjectList::append_menu_items_add_volume(wxMenu* menu)
wxMenuItem* ObjectList::append_menu_item_split(wxMenu* menu)
{
return append_menu_item(menu, wxID_ANY, _(L("Split to parts")), "",
- [this](wxCommandEvent&) { split(); }, m_bmp_split, menu);
+ [this](wxCommandEvent&) { split(); }, m_bmp_split.bmp(), menu);
}
wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)
{
- PrusaMenu* menu = dynamic_cast<PrusaMenu*>(menu_);
+ MenuWithSeparators* menu = dynamic_cast<MenuWithSeparators*>(menu_);
const wxString menu_name = _(L("Add settings"));
// Delete old items from settings popupmenu
@@ -1053,7 +1093,7 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)
if (printer_technology() == ptFFF ||
menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator())
- menu->m_separator_frst = menu->AppendSeparator();
+ menu->SetFirstSeparator();
// Add frequently settings
create_freq_settings_popupmenu(menu);
@@ -1061,11 +1101,11 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)
if (mode == comAdvanced)
return nullptr;
- menu->m_separator_scnd = menu->AppendSeparator();
+ menu->SetSecondSeparator();
// Add full settings list
auto menu_item = new wxMenuItem(menu, wxID_ANY, menu_name);
- menu_item->SetBitmap(m_bmp_cog);
+ menu_item->SetBitmap(m_bmp_cog.bmp());
menu_item->SetSubMenu(create_settings_popupmenu(menu));
@@ -1290,7 +1330,7 @@ void ObjectList::load_subobject(ModelVolumeType type)
wxArrayString part_names;
load_part((*m_objects)[obj_idx], part_names, type);
- parts_changed(obj_idx);
+ changed_object(obj_idx);
for (int i = 0; i < part_names.size(); ++i) {
const wxDataViewItem sel_item = m_objects_model->AddVolumeChild(item, part_names.Item(i), type);
@@ -1306,7 +1346,6 @@ void ObjectList::load_part( ModelObject* model_object,
{
wxWindow* parent = wxGetApp().tab_panel()->GetPage(0);
- m_parts_changed = false;
wxArrayString input_files;
wxGetApp().import_model(parent, input_files);
for (int i = 0; i < input_files.size(); ++i) {
@@ -1342,8 +1381,6 @@ void ObjectList::load_part( ModelObject* model_object,
// set a default extruder value, since user can't add it manually
new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
-
- m_parts_changed = true;
}
}
}
@@ -1486,8 +1523,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode
// set a default extruder value, since user can't add it manually
new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
- m_parts_changed = true;
- parts_changed(obj_idx);
+ changed_object(obj_idx);
const auto object_item = m_objects_model->GetTopParent(GetSelection());
select_item(m_objects_model->AddVolumeChild(object_item, name, type));
@@ -1551,8 +1587,7 @@ void ObjectList::del_instances_from_object(const int obj_idx)
(*m_objects)[obj_idx]->invalidate_bounding_box(); // ? #ys_FIXME
- m_parts_changed = true;
- parts_changed(obj_idx);
+ changed_object(obj_idx);
}
bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, const int type)
@@ -1597,8 +1632,7 @@ bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, con
else
return false;
- m_parts_changed = true;
- parts_changed(obj_idx);
+ changed_object(obj_idx);
return true;
}
@@ -1648,8 +1682,7 @@ void ObjectList::split()
if (parent == item)
Expand(parent);
- m_parts_changed = true;
- parts_changed(obj_idx);
+ changed_object(obj_idx);
}
bool ObjectList::get_volume_by_item(const wxDataViewItem& item, ModelVolume*& volume)
@@ -1706,17 +1739,10 @@ bool ObjectList::can_split_instances()
return selection.is_multiple_full_instance() || selection.is_single_full_instance();
}
-void ObjectList::part_settings_changed()
+// NO_PARAMETERS function call means that changed object index will be determine from Selection()
+void ObjectList::changed_object(const int obj_idx/* = -1*/) const
{
- m_part_settings_changed = true;
- wxGetApp().plater()->changed_object(get_selected_obj_idx());
- m_part_settings_changed = false;
-}
-
-void ObjectList::parts_changed(int obj_idx)
-{
- wxGetApp().plater()->changed_object(obj_idx);
- m_parts_changed = false;
+ wxGetApp().plater()->changed_object(obj_idx < 0 ? get_selected_obj_idx() : obj_idx);
}
void ObjectList::part_selection_changed()
@@ -1819,7 +1845,7 @@ void ObjectList::add_object_to_list(size_t obj_idx)
stats.facets_added + stats.facets_reversed + stats.backwards_edges;
if (errors > 0) {
wxVariant variant;
- variant << PrusaDataViewBitmapText(item_name, m_bmp_manifold_warning);
+ variant << DataViewBitmapText(item_name, m_bmp_manifold_warning.bmp());
m_objects_model->SetValue(variant, item, 0);
}
@@ -2439,8 +2465,7 @@ void ObjectList::change_part_type()
volume->set_type(new_type);
m_objects_model->SetVolumeType(item, new_type);
- m_parts_changed = true;
- parts_changed(get_selected_obj_idx());
+ changed_object(get_selected_obj_idx());
// Update settings showing, if we have it
//(we show additional settings for Part and Modifier and hide it for Support Blocker/Enforcer)
@@ -2620,7 +2645,7 @@ void ObjectList::rename_item()
wxVariant valueOld;
m_objects_model->GetValue(valueOld, item, 0);
- PrusaDataViewBitmapText bmpText;
+ DataViewBitmapText bmpText;
bmpText << valueOld;
// But replace the text with the value entered by user.
@@ -2668,11 +2693,29 @@ void ObjectList::update_item_error_icon(const int obj_idx, const int vol_idx) co
if (errors == 0) {
// delete Error_icon if all errors are fixed
wxVariant variant;
- variant << PrusaDataViewBitmapText(from_u8(model_object->name), wxNullBitmap);
+ variant << DataViewBitmapText(from_u8(model_object->name), wxNullBitmap);
m_objects_model->SetValue(variant, item, 0);
}
}
+void ObjectList::msw_rescale()
+{
+ // update min size !!! A width of control shouldn't be a wxDefaultCoord
+ SetMinSize(wxSize(1, 15 * wxGetApp().em_unit()));
+
+ GetColumn(0)->SetWidth(19 * wxGetApp().em_unit());
+ GetColumn(1)->SetWidth(8 * wxGetApp().em_unit());
+ GetColumn(2)->SetWidth(int(2 * wxGetApp().em_unit()));
+
+ // rescale all icons, used by ObjectList
+ rescale_icons();
+
+ // rescale/update existingitems with bitmaps
+ m_objects_model->Rescale();
+
+ Layout();
+}
+
void ObjectList::ItemValueChanged(wxDataViewEvent &event)
{
if (event.GetColumn() == 0)
@@ -2686,7 +2729,7 @@ void ObjectList::OnEditingDone(wxDataViewEvent &event)
if (event.GetColumn() != 0)
return;
- const auto renderer = dynamic_cast<PrusaBitmapTextRenderer*>(GetColumn(0)->GetRenderer());
+ const auto renderer = dynamic_cast<BitmapTextRenderer*>(GetColumn(0)->GetRenderer());
if (renderer->WasCanceled())
show_error(this, _(L("The supplied name is not valid;")) + "\n" +
diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp
index a0343100a..da082d1d4 100644
--- a/src/slic3r/GUI/GUI_ObjectList.hpp
+++ b/src/slic3r/GUI/GUI_ObjectList.hpp
@@ -13,8 +13,8 @@
class wxBoxSizer;
class wxMenuItem;
-class PrusaObjectDataViewModel;
-class PrusaMenu;
+class ObjectDataViewModel;
+class MenuWithSeparators;
namespace Slic3r {
class ConfigOptionsGroup;
@@ -108,18 +108,18 @@ class ObjectList : public wxDataViewCtrl
wxBoxSizer *m_sizer {nullptr};
wxWindow *m_parent {nullptr};
- wxBitmap m_bmp_modifiermesh;
- wxBitmap m_bmp_solidmesh;
- wxBitmap m_bmp_support_enforcer;
- wxBitmap m_bmp_support_blocker;
- wxBitmap m_bmp_manifold_warning;
- wxBitmap m_bmp_cog;
- wxBitmap m_bmp_split;
-
- PrusaMenu m_menu_object;
- PrusaMenu m_menu_part;
- PrusaMenu m_menu_sla_object;
- PrusaMenu m_menu_instance;
+ ScalableBitmap m_bmp_modifiermesh;
+ ScalableBitmap m_bmp_solidmesh;
+ ScalableBitmap m_bmp_support_enforcer;
+ ScalableBitmap m_bmp_support_blocker;
+ ScalableBitmap m_bmp_manifold_warning;
+ ScalableBitmap m_bmp_cog;
+ ScalableBitmap m_bmp_split;
+
+ MenuWithSeparators m_menu_object;
+ MenuWithSeparators m_menu_part;
+ MenuWithSeparators m_menu_sla_object;
+ MenuWithSeparators m_menu_instance;
wxMenuItem* m_menu_item_split { nullptr };
wxMenuItem* m_menu_item_split_part { nullptr };
wxMenuItem* m_menu_item_settings { nullptr };
@@ -139,9 +139,6 @@ class ObjectList : public wxDataViewCtrl
// update_settings_items - updating canvas selection is undesirable,
// because it would turn off the gizmos (mainly a problem for the SLA gizmo)
- bool m_parts_changed = false;
- bool m_part_settings_changed = false;
-
int m_selected_row = 0;
wxDataViewItem m_last_selected_item {nullptr};
@@ -157,7 +154,7 @@ public:
std::map<std::string, wxBitmap> CATEGORY_ICON;
- PrusaObjectDataViewModel *m_objects_model{ nullptr };
+ ObjectDataViewModel *m_objects_model{ nullptr };
DynamicPrintConfig *m_config {nullptr};
std::vector<ModelObject*> *m_objects{ nullptr };
@@ -176,6 +173,7 @@ public:
void update_extruder_values_for_items(const int max_extruder);
void init_icons();
+ void rescale_icons();
void set_tooltip_for_item(const wxPoint& pt);
@@ -225,11 +223,8 @@ public:
wxBoxSizer* get_sizer() {return m_sizer;}
int get_selected_obj_idx() const;
DynamicPrintConfig& get_item_config(const wxDataViewItem& item) const;
- bool is_parts_changed() const { return m_parts_changed; }
- bool is_part_settings_changed() const { return m_part_settings_changed; }
- void part_settings_changed();
- void parts_changed(int obj_idx);
+ void changed_object(const int obj_idx = -1) const;
void part_selection_changed();
// Add object to the list
@@ -291,6 +286,8 @@ public:
void paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& volumes);
void paste_objects_into_list(const std::vector<size_t>& object_idxs);
+ void msw_rescale();
+
private:
void OnChar(wxKeyEvent& event);
void OnContextMenu(wxDataViewEvent &event);
diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp
index 761f29e98..d15779308 100644
--- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp
+++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp
@@ -67,7 +67,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
#endif // __APPLE__
{
m_og->set_name(_(L("Object Manipulation")));
- m_og->label_width = 12 * wxGetApp().em_unit();//125;
+ m_og->label_width = 12;//125;
m_og->set_grid_vgap(5);
m_og->m_on_change = std::bind(&ObjectManipulation::on_change, this, std::placeholders::_1, std::placeholders::_2);
@@ -89,11 +89,11 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
def.label = L("Name");
def.gui_type = "legend";
def.tooltip = L("Object name");
- def.width = 21 * wxGetApp().em_unit();
+ def.width = 21;
def.default_value = new ConfigOptionString{ " " };
m_og->append_single_option_line(Option(def, "object_name"));
- const int field_width = 5 * wxGetApp().em_unit()/*50*/;
+ const int field_width = 5;
// Legend for object modification
auto line = Line{ "", "" };
@@ -126,7 +126,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
// Add "uniform scaling" button in front of "Scale" option
if (option_name == "Scale") {
line.near_label_widget = [this](wxWindow* parent) {
- auto btn = new PrusaLockButton(parent, wxID_ANY);
+ auto btn = new LockButton(parent, wxID_ANY);
btn->Bind(wxEVT_BUTTON, [btn, this](wxCommandEvent &event){
event.Skip();
wxTheApp->CallAfter([btn, this]() { set_uniform_scaling(btn->IsLocked()); });
@@ -164,15 +164,13 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
m_og->append_line(add_og_to_object_settings(L("Scale"), "%"), &m_scale_Label);
m_og->append_line(add_og_to_object_settings(L("Size"), "mm"));
- /* Unused parameter at this time
- def.label = L("Place on bed");
- def.type = coBool;
- def.tooltip = L("Automatic placing of models on printing bed in Y axis");
- def.gui_type = "";
- def.sidetext = "";
- def.default_value = new ConfigOptionBool{ false };
- m_og->append_single_option_line(Option(def, "place_on_bed"));
- */
+ // call back for a rescale of button "Set uniform scale"
+ m_og->rescale_near_label_widget = [this](wxWindow* win) {
+ auto *ctrl = dynamic_cast<LockButton*>(win);
+ if (ctrl == nullptr)
+ return;
+ ctrl->msw_rescale();
+ };
}
void ObjectManipulation::Show(const bool show)
diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp
index 5db9622ce..b92654742 100644
--- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp
+++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp
@@ -7,7 +7,7 @@
#include "GLCanvas3D.hpp"
class wxStaticText;
-class PrusaLockButton;
+class LockButton;
namespace Slic3r {
namespace GUI {
@@ -82,7 +82,7 @@ class ObjectManipulation : public OG_Settings
bool m_uniform_scale {true};
// Does the object manipulation panel work in World or Local coordinates?
bool m_world_coordinates = true;
- PrusaLockButton* m_lock_bnt{ nullptr };
+ LockButton* m_lock_bnt{ nullptr };
wxBitmapComboBox* m_word_local_combo = nullptr;
#ifndef __APPLE__
diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp
index 72eeb76de..b7ba2d4fc 100644
--- a/src/slic3r/GUI/GUI_ObjectSettings.cpp
+++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp
@@ -59,6 +59,8 @@ ObjectSettings::ObjectSettings(wxWindow* parent) :
m_settings_list_sizer = new wxBoxSizer(wxVERTICAL);
m_og->sizer->Add(m_settings_list_sizer, 1, wxEXPAND | wxLEFT, 5);
+
+ m_bmp_delete = ScalableBitmap(parent, "cross");
}
void ObjectSettings::update_settings_list()
@@ -77,14 +79,11 @@ void ObjectSettings::update_settings_list()
{
auto opt_key = (line.get_options())[0].opt_id; //we assume that we have one option per line
- auto btn = new wxBitmapButton(parent, wxID_ANY, create_scaled_bitmap(m_parent, "cross"/*"colorchange_delete_on.png"*/),
- wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
-#ifdef __WXMSW__
- btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
-#endif // __WXMSW__
+ auto btn = new ScalableButton(parent, wxID_ANY, m_bmp_delete);
+
btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) {
config->erase(opt_key);
- wxGetApp().obj_list()->part_settings_changed();
+ wxGetApp().obj_list()->changed_object();
wxTheApp->CallAfter([this]() {
wxWindowUpdateLocker noUpdates(m_parent);
update_settings_list();
@@ -123,22 +122,31 @@ void ObjectSettings::update_settings_list()
continue;
auto optgroup = std::make_shared<ConfigOptionsGroup>(m_og->ctrl_parent(), cat.first, config, false, extra_column);
- optgroup->label_width = 15 * wxGetApp().em_unit();
- optgroup->sidetext_width = 5.5 * wxGetApp().em_unit();
+ optgroup->label_width = 15;
+ optgroup->sidetext_width = 5.5;
optgroup->m_on_change = [](const t_config_option_key& opt_id, const boost::any& value) {
- wxGetApp().obj_list()->part_settings_changed(); };
+ wxGetApp().obj_list()->changed_object(); };
for (auto& opt : cat.second)
{
if (opt == "extruder")
continue;
Option option = optgroup->get_option(opt);
- option.opt.width = 12 * wxGetApp().em_unit();
+ option.opt.width = 12;
optgroup->append_single_option_line(option);
}
optgroup->reload_config();
m_settings_list_sizer->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 0);
+
+ // call back for rescaling of the extracolumn control
+ optgroup->rescale_extra_column_item = [this](wxWindow* win) {
+ auto *ctrl = dynamic_cast<ScalableButton*>(win);
+ if (ctrl == nullptr)
+ return;
+ ctrl->SetBitmap_(m_bmp_delete);
+ };
+
m_og_settings.push_back(optgroup);
categories.push_back(cat.first);
@@ -163,5 +171,13 @@ void ObjectSettings::UpdateAndShow(const bool show)
OG_Settings::UpdateAndShow(show);
}
+void ObjectSettings::msw_rescale()
+{
+ m_bmp_delete.msw_rescale();
+
+ for (auto group : m_og_settings)
+ group->msw_rescale();
+}
+
} //namespace GUI
} //namespace Slic3r \ No newline at end of file
diff --git a/src/slic3r/GUI/GUI_ObjectSettings.hpp b/src/slic3r/GUI/GUI_ObjectSettings.hpp
index 12115e208..3d49f13b7 100644
--- a/src/slic3r/GUI/GUI_ObjectSettings.hpp
+++ b/src/slic3r/GUI/GUI_ObjectSettings.hpp
@@ -4,6 +4,7 @@
#include <memory>
#include <vector>
#include <wx/panel.h>
+#include "wxExtensions.hpp"
class wxBoxSizer;
@@ -37,12 +38,15 @@ class ObjectSettings : public OG_Settings
// option groups for settings
std::vector <std::shared_ptr<ConfigOptionsGroup>> m_og_settings;
+ ScalableBitmap m_bmp_delete;
+
public:
ObjectSettings(wxWindow* parent);
~ObjectSettings() {}
void update_settings_list();
void UpdateAndShow(const bool show) override;
+ void msw_rescale();
};
}}
diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp
index 206253451..88fea933e 100644
--- a/src/slic3r/GUI/GUI_Preview.cpp
+++ b/src/slic3r/GUI/GUI_Preview.cpp
@@ -396,6 +396,18 @@ void Preview::refresh_print()
load_print(true);
}
+void Preview::msw_rescale()
+{
+ // rescale slider
+ if (m_slider) m_slider->msw_rescale();
+
+ // rescale warning legend on the canvas
+ get_canvas3d()->msw_rescale();
+
+ // rescale legend
+ refresh_print();
+}
+
void Preview::bind_event_handlers()
{
this->Bind(wxEVT_SIZE, &Preview::on_size, this);
@@ -507,7 +519,7 @@ void Preview::on_checkbox_shells(wxCommandEvent& evt)
void Preview::create_double_slider()
{
- m_slider = new PrusaDoubleSlider(this, wxID_ANY, 0, 0, 0, 100);
+ m_slider = new DoubleSlider(this, wxID_ANY, 0, 0, 0, 100);
m_double_slider_sizer->Add(m_slider, 0, wxEXPAND, 0);
// sizer, m_canvas_widget
diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp
index a2929f2e6..2540980f4 100644
--- a/src/slic3r/GUI/GUI_Preview.hpp
+++ b/src/slic3r/GUI/GUI_Preview.hpp
@@ -13,7 +13,7 @@ class wxStaticText;
class wxChoice;
class wxComboCtrl;
class wxCheckBox;
-class PrusaDoubleSlider;
+class DoubleSlider;
namespace Slic3r {
@@ -99,7 +99,7 @@ class Preview : public wxPanel
bool m_loaded;
bool m_enabled;
- PrusaDoubleSlider* m_slider {nullptr};
+ DoubleSlider* m_slider {nullptr};
public:
Preview(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model, DynamicPrintConfig* config,
@@ -120,6 +120,8 @@ public:
void reload_print(bool keep_volumes = false);
void refresh_print();
+ void msw_rescale();
+
private:
bool init(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model);
diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp
index e12153625..25cf25b16 100644
--- a/src/slic3r/GUI/GUI_Utils.hpp
+++ b/src/slic3r/GUI/GUI_Utils.hpp
@@ -16,6 +16,7 @@
#include <wx/panel.h>
#include <wx/dcclient.h>
#include <wx/debug.h>
+#include <wx/settings.h>
class wxCheckBox;
class wxTopLevelWindow;
@@ -58,35 +59,119 @@ public:
: P(parent, id, title, pos, size, style, name)
{
m_scale_factor = (float)get_dpi_for_window(this) / (float)DPI_DEFAULT;
+ m_normal_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+ // An analog of em_unit value from GUI_App.
+ m_em_unit = std::max<size_t>(10, 10 * m_scale_factor);
+
+ m_prev_scale_factor = m_scale_factor;
+
recalc_font();
this->Bind(EVT_DPI_CHANGED, [this](const DpiChangedEvent &evt) {
m_scale_factor = (float)evt.dpi / (float)DPI_DEFAULT;
- on_dpi_changed(evt.rect);
+
+ if (!m_can_rescale)
+ return;
+
+ if (is_new_scale_factor())
+ rescale(evt.rect);
+ });
+
+ this->Bind(wxEVT_MOVE_START, [this](wxMoveEvent& event)
+ {
+ event.Skip();
+
+ // Suppress application rescaling, when a MainFrame moving is not ended
+ m_can_rescale = false;
+ });
+
+ this->Bind(wxEVT_MOVE_END, [this](wxMoveEvent& event)
+ {
+ event.Skip();
+
+ m_can_rescale = is_new_scale_factor();
+
+ // If scale factor is different after moving of MainFrame ...
+ if (m_can_rescale)
+ // ... rescale application
+ rescale(event.GetRect());
+ else
+ // set value to _true_ in purpose of possibility of a display dpi changing from System Settings
+ m_can_rescale = true;
});
}
virtual ~DPIAware() {}
- float scale_factor() const { return m_scale_factor; }
- int em_unit() const { return m_em_unit; }
- int font_size() const { return m_font_size; }
+ float scale_factor() const { return m_scale_factor; }
+ float prev_scale_factor() const { return m_prev_scale_factor; }
+
+ int em_unit() const { return m_em_unit; }
+ int font_size() const { return m_font_size; }
+ const wxFont& normal_font() const { return m_normal_font; }
protected:
virtual void on_dpi_changed(const wxRect &suggested_rect) = 0;
private:
- int m_scale_factor;
+ float m_scale_factor;
int m_em_unit;
int m_font_size;
+ wxFont m_normal_font;
+ float m_prev_scale_factor;
+ bool m_can_rescale{ true };
+
void recalc_font()
{
wxClientDC dc(this);
const auto metrics = dc.GetFontMetrics();
m_font_size = metrics.height;
- m_em_unit = metrics.averageWidth;
+// m_em_unit = metrics.averageWidth;
}
+
+ // check if new scale is differ from previous
+ bool is_new_scale_factor() const { return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }
+
+ // recursive function for scaling fonts for all controls in Window
+ void scale_controls_fonts(wxWindow *window, const float scale_f)
+ {
+ auto children = window->GetChildren();
+
+ for (auto child : children) {
+ scale_controls_fonts(child, scale_f);
+ child->SetFont(child->GetFont().Scaled(scale_f));
+ }
+
+ window->Layout();
+ }
+
+ void rescale(const wxRect &suggested_rect)
+ {
+ this->Freeze();
+ const float relative_scale_factor = m_scale_factor / m_prev_scale_factor;
+
+ // rescale fonts of all controls
+ scale_controls_fonts(this, relative_scale_factor);
+ this->SetFont(this->GetFont().Scaled(relative_scale_factor));
+
+
+ // rescale normal_font value
+ m_normal_font = m_normal_font.Scaled(relative_scale_factor);
+
+ // An analog of em_unit value from GUI_App.
+ m_em_unit = std::max<size_t>(10, 10 * m_scale_factor);
+
+ // rescale missed controls sizes and images
+ on_dpi_changed(suggested_rect);
+
+ this->Layout();
+ this->Thaw();
+
+ // reset previous scale factor from current scale factor value
+ m_prev_scale_factor = m_scale_factor;
+ }
+
};
typedef DPIAware<wxFrame> DPIFrame;
diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp
index 3c2f4182b..2fb453750 100644
--- a/src/slic3r/GUI/KBShortcutsDialog.cpp
+++ b/src/slic3r/GUI/KBShortcutsDialog.cpp
@@ -10,26 +10,28 @@ namespace Slic3r {
namespace GUI {
KBShortcutsDialog::KBShortcutsDialog()
- : wxDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Keyboard Shortcuts")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
+ : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Keyboard Shortcuts")),
+ wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
{
- SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
auto main_sizer = new wxBoxSizer(wxVERTICAL);
// logo
- const wxBitmap logo_bmp = create_scaled_bitmap(this, "Slic3r_32px.png", 32);
+ m_logo_bmp = ScalableBitmap(this, "Slic3r_32px.png", 32);
// fonts
- wxFont head_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Bold();
+ const wxFont& font = wxGetApp().normal_font();
+ const wxFont& bold_font = wxGetApp().bold_font();
+ SetFont(font);
+
+ wxFont head_font = bold_font;
#ifdef __WXOSX__
head_font.SetPointSize(14);
#else
- head_font.SetPointSize(12);
+ head_font.SetPointSize(bold_font.GetPointSize() + 2);
#endif // __WXOSX__
- const wxFont& font = wxGetApp().small_font();
- const wxFont& bold_font = wxGetApp().bold_font();
-
fill_shortcuts();
auto panel = new wxPanel(this);
@@ -43,22 +45,25 @@ KBShortcutsDialog::KBShortcutsDialog()
wxBoxSizer* r_sizer = new wxBoxSizer(wxVERTICAL);
main_grid_sizer->Add(r_sizer, 0);
+ m_head_bitmaps.reserve(m_full_shortcuts.size());
+ const wxSize topic_size = wxSize(10 * wxGetApp().em_unit(), -1);
+
for (auto& sc : m_full_shortcuts)
{
-// auto sizer = sc.first == _(L("Main Shortcuts")) ? l_sizer : r_sizer;
- auto sizer = sc.second.second == 0 ? l_sizer : r_sizer;
+ auto sizer = sc.second.second == szLeft ? l_sizer : r_sizer;
wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(hsizer, 0, wxEXPAND | wxTOP | wxBOTTOM, 10);
// logo
- auto *logo = new wxStaticBitmap(panel, wxID_ANY, logo_bmp);
- hsizer->Add(logo, 0, wxEXPAND | wxLEFT | wxRIGHT, 15);
+ m_head_bitmaps.push_back(new wxStaticBitmap(panel, wxID_ANY, m_logo_bmp.bmp()));
+ hsizer->Add(m_head_bitmaps.back(), 0, wxEXPAND | wxLEFT | wxRIGHT, 15);
// head
- wxStaticText* head = new wxStaticText(panel, wxID_ANY, sc.first, wxDefaultPosition, wxSize(20 * wxGetApp().em_unit(), -1));
+ wxStaticText* head = new wxStaticText(panel, wxID_ANY, sc.first, wxDefaultPosition, topic_size);
head->SetFont(head_font);
hsizer->Add(head, 0, wxALIGN_CENTER_VERTICAL);
+
// Shortcuts list
auto grid_sizer = new wxFlexGridSizer(2, 5, 15);
sizer->Add(grid_sizer, 0, wxEXPAND | wxLEFT| wxRIGHT, 15);
@@ -121,7 +126,7 @@ void KBShortcutsDialog::fill_shortcuts()
main_shortcuts.push_back(Shortcut("?" ,L("Show keyboard shortcuts list")));
main_shortcuts.push_back(Shortcut(ctrl+"LeftMouse" ,L("Select multiple object/Move multiple object")));
- m_full_shortcuts.push_back(std::make_pair( _(L("Main Shortcuts")), std::make_pair(main_shortcuts, 0) ));
+ m_full_shortcuts.push_back(std::make_pair(_(L("Main Shortcuts")), std::make_pair(main_shortcuts, szLeft)));
Shortcuts plater_shortcuts;
@@ -148,7 +153,7 @@ void KBShortcutsDialog::fill_shortcuts()
plater_shortcuts.push_back(Shortcut("O", L("Zoom out")));
plater_shortcuts.push_back(Shortcut("ESC", L("Unselect gizmo, keep object selection")));
- m_full_shortcuts.push_back(std::make_pair(_(L("Plater Shortcuts")), std::make_pair(plater_shortcuts, 1)));
+ m_full_shortcuts.push_back(std::make_pair(_(L("Plater Shortcuts")), std::make_pair(plater_shortcuts, szRight)));
// Shortcuts gizmo_shortcuts;
@@ -168,7 +173,7 @@ void KBShortcutsDialog::fill_shortcuts()
preview_shortcuts.push_back(Shortcut("U", L("Upper Layer")));
preview_shortcuts.push_back(Shortcut("D", L("Lower Layer")));
- m_full_shortcuts.push_back(std::make_pair( _(L("Preview Shortcuts")), std::make_pair(preview_shortcuts, 0) ));
+ m_full_shortcuts.push_back(std::make_pair(_(L("Preview Shortcuts")), std::make_pair(preview_shortcuts, szLeft)));
Shortcuts layers_slider_shortcuts;
@@ -181,7 +186,26 @@ void KBShortcutsDialog::fill_shortcuts()
layers_slider_shortcuts.push_back(Shortcut("+", L("Add color change marker for current layer")));
layers_slider_shortcuts.push_back(Shortcut("-", L("Delete color change marker for current layer")));
- m_full_shortcuts.push_back(std::make_pair( _(L("Layers Slider Shortcuts")), std::make_pair(layers_slider_shortcuts, 1) ));
+ m_full_shortcuts.push_back(std::make_pair(_(L("Layers Slider Shortcuts")), std::make_pair(layers_slider_shortcuts, szRight)));
+}
+
+void KBShortcutsDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+ m_logo_bmp.msw_rescale();
+
+ for (wxStaticBitmap* bmp : m_head_bitmaps)
+ bmp->SetBitmap(m_logo_bmp.bmp());
+
+ const int em = em_unit();
+
+ msw_buttons_rescale(this, em, { wxID_OK });
+
+ const wxSize& size = wxSize(85 * em, 75 * em);
+
+ SetMinSize(size);
+ Fit();
+
+ Refresh();
}
void KBShortcutsDialog::onCloseDialog(wxEvent &)
diff --git a/src/slic3r/GUI/KBShortcutsDialog.hpp b/src/slic3r/GUI/KBShortcutsDialog.hpp
index d8905e1ce..66fe7c399 100644
--- a/src/slic3r/GUI/KBShortcutsDialog.hpp
+++ b/src/slic3r/GUI/KBShortcutsDialog.hpp
@@ -5,24 +5,38 @@
#include <map>
#include <vector>
+#include "GUI_Utils.hpp"
+#include "wxExtensions.hpp"
+
namespace Slic3r {
namespace GUI {
-class KBShortcutsDialog : public wxDialog
+class KBShortcutsDialog : public DPIDialog
{
+ enum PLACED_SIZER_ID
+ {
+ szLeft = 0,
+ szRight
+ };
+
typedef std::pair<std::string, std::string> Shortcut;
typedef std::vector< Shortcut > Shortcuts;
- typedef std::vector< std::pair<wxString, std::pair<Shortcuts, int>> > ShortcutsVec;
+ typedef std::vector< std::pair<wxString, std::pair<Shortcuts, PLACED_SIZER_ID>> > ShortcutsVec;
wxString text_info {wxEmptyString};
- ShortcutsVec m_full_shortcuts;
+ ShortcutsVec m_full_shortcuts;
+ ScalableBitmap m_logo_bmp;
+ std::vector<wxStaticBitmap*> m_head_bitmaps;
public:
KBShortcutsDialog();
void fill_shortcuts();
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override;
+
private:
void onCloseDialog(wxEvent &);
};
diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp
index 4814a35d9..571b57235 100644
--- a/src/slic3r/GUI/MainFrame.cpp
+++ b/src/slic3r/GUI/MainFrame.cpp
@@ -258,7 +258,44 @@ bool MainFrame::can_delete_all() const
void MainFrame::on_dpi_changed(const wxRect &suggested_rect)
{
- // TODO
+ wxGetApp().update_fonts();
+
+ // _strange_ workaround for correct em_unit calculation
+ const int new_em_unit = scale_factor() * 10;
+ wxGetApp().set_em_unit(std::max<size_t>(10, new_em_unit));
+
+ /* Load default preset bitmaps before a tabpanel initialization,
+ * but after filling of an em_unit value
+ */
+ wxGetApp().preset_bundle->load_default_preset_bitmaps(this);
+
+ // update Plater
+ wxGetApp().plater()->msw_rescale();
+
+ // update Tabs
+ for (auto tab : wxGetApp().tabs_list)
+ tab->msw_rescale();
+
+ // Workarounds for correct Window rendering after rescale
+
+ /* Even if Window is maximized during moving,
+ * first of all we should imitate Window resizing. So:
+ * 1. cancel maximization, if it was set
+ * 2. imitate resizing
+ * 3. set maximization, if it was set
+ */
+ const bool is_maximized = this->IsMaximized();
+ if (is_maximized)
+ this->Maximize(false);
+
+ /* To correct window rendering (especially redraw of a status bar)
+ * we should imitate window resizing.
+ */
+ const wxSize& sz = this->GetSize();
+ this->SetSize(sz.x + 1, sz.y + 1);
+ this->SetSize(sz);
+
+ this->Maximize(is_maximized);
}
void MainFrame::init_menubar()
@@ -337,7 +374,7 @@ void MainFrame::init_menubar()
append_menu_item(fileMenu, wxID_ANY, _(L("&Repair STL file")) + dots, _(L("Automatically repair an STL file")),
[this](wxCommandEvent&) { repair_stl(); }, "wrench");
fileMenu->AppendSeparator();
- append_menu_item(fileMenu, wxID_EXIT, _(L("&Quit")), _(L("Quit Slic3r")),
+ append_menu_item(fileMenu, wxID_EXIT, _(L("&Quit")), wxString::Format(_(L("Quit %s")), SLIC3R_APP_NAME),
[this](wxCommandEvent&) { Close(false); });
Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(m_plater != nullptr); }, item_open->GetId());
@@ -474,9 +511,11 @@ void MainFrame::init_menubar()
//# wxTheApp->check_version(1);
//# });
//# $versioncheck->Enable(wxTheApp->have_version_check);
- append_menu_item(helpMenu, wxID_ANY, _(L("Slic3r &Website")), _(L("Open the Slic3r website in your browser")),
+ append_menu_item(helpMenu, wxID_ANY, wxString::Format(_(L("%s &Website")), SLIC3R_APP_NAME),
+ wxString::Format(_(L("Open the %s website in your browser")), SLIC3R_APP_NAME),
[this](wxCommandEvent&) { wxLaunchDefaultBrowser("http://slic3r.org/"); });
- append_menu_item(helpMenu, wxID_ANY, _(L("Slic3r &Manual")), _(L("Open the Slic3r manual in your browser")),
+ append_menu_item(helpMenu, wxID_ANY, wxString::Format(_(L("%s &Manual")), SLIC3R_APP_NAME),
+ wxString::Format(_(L("Open the %s manual in your browser")), SLIC3R_APP_NAME),
[this](wxCommandEvent&) { wxLaunchDefaultBrowser("http://manual.slic3r.org/"); });
helpMenu->AppendSeparator();
append_menu_item(helpMenu, wxID_ANY, _(L("System &Info")), _(L("Show system information")),
diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp
index a5d3a1f6d..a8b2be2bc 100644
--- a/src/slic3r/GUI/MainFrame.hpp
+++ b/src/slic3r/GUI/MainFrame.hpp
@@ -4,6 +4,7 @@
#include "libslic3r/PrintConfig.hpp"
#include <wx/frame.h>
+#include <wx/settings.h>
#include <wx/string.h>
#include <string>
diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp
index 771599b8e..ba2c5ed0c 100644
--- a/src/slic3r/GUI/MsgDialog.cpp
+++ b/src/slic3r/GUI/MsgDialog.cpp
@@ -25,12 +25,14 @@ namespace GUI {
MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxWindowID button_id, wxBitmap bitmap)
: wxDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
- , boldfont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT))
+ , boldfont(wxGetApp().normal_font()/*wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)*/)
, content_sizer(new wxBoxSizer(wxVERTICAL))
, btn_sizer(new wxBoxSizer(wxHORIZONTAL))
{
boldfont.SetWeight(wxFONTWEIGHT_BOLD);
+ this->SetFont(wxGetApp().normal_font());
+
auto *topsizer = new wxBoxSizer(wxHORIZONTAL);
auto *rightsizer = new wxBoxSizer(wxVERTICAL);
@@ -68,7 +70,8 @@ MsgDialog::~MsgDialog() {}
// ErrorDialog
ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg)
- : MsgDialog(parent, _(L("Slic3r error")), _(L("Slic3r has encountered an error")),
+ : MsgDialog(parent, wxString::Format(_(L("%s error")), SLIC3R_APP_NAME),
+ wxString::Format(_(L("%s has encountered an error")), SLIC3R_APP_NAME),
wxID_NONE)
, msg(msg)
{
diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp
index a4686d4d2..cdcde972a 100644
--- a/src/slic3r/GUI/OptionsGroup.cpp
+++ b/src/slic3r/GUI/OptionsGroup.cpp
@@ -166,37 +166,45 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n
#endif /* __WXGTK__ */
// if we have an extra column, build it
- if (extra_column)
- grid_sizer->Add(extra_column(this->ctrl_parent(), line), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 3);
+ if (extra_column)
+ {
+ m_extra_column_item_ptrs.push_back(extra_column(this->ctrl_parent(), line));
+ grid_sizer->Add(m_extra_column_item_ptrs.back(), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 3);
+ }
// Build a label if we have it
wxStaticText* label=nullptr;
if (label_width != 0) {
if (! line.near_label_widget || ! line.label.IsEmpty()) {
+ // Only create the label if it is going to be displayed.
long label_style = staticbox ? 0 : wxALIGN_RIGHT;
- #ifdef __WXGTK__
+#ifdef __WXGTK__
// workaround for correct text align of the StaticBox on Linux
// flags wxALIGN_RIGHT and wxALIGN_CENTRE don't work when Ellipsize flags are _not_ given.
// Text is properly aligned only when Ellipsize is checked.
label_style |= staticbox ? 0 : wxST_ELLIPSIZE_END;
- #endif /* __WXGTK__ */
+#endif /* __WXGTK__ */
label = new wxStaticText(this->ctrl_parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ": "),
- wxDefaultPosition, wxSize(label_width, -1), label_style);
+ wxDefaultPosition, wxSize(label_width*wxGetApp().em_unit(), -1), label_style);
label->SetBackgroundStyle(wxBG_STYLE_PAINT);
- label->SetFont(label_font);
- label->Wrap(label_width); // avoid a Linux/GTK bug
+ label->SetFont(wxGetApp().normal_font());
+ label->Wrap(label_width*wxGetApp().em_unit()); // avoid a Linux/GTK bug
}
- if (! line.near_label_widget)
+ if (!line.near_label_widget)
grid_sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, line.label.IsEmpty() ? 0 : 5);
- else if (line.near_label_widget && line.label.IsEmpty())
- grid_sizer->Add(line.near_label_widget(this->ctrl_parent()), 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 7);
else {
- // If we're here, we have some widget near the label
- // so we need a horizontal sizer to arrange these things
- auto sizer = new wxBoxSizer(wxHORIZONTAL);
- grid_sizer->Add(sizer, 0, wxEXPAND | (staticbox ? wxALL : wxBOTTOM | wxTOP | wxLEFT), staticbox ? 0 : 1);
- sizer->Add(line.near_label_widget(this->ctrl_parent()), 0, wxRIGHT, 7);
- sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5);
+ m_near_label_widget_ptrs.push_back(line.near_label_widget(this->ctrl_parent()));
+
+ if (line.label.IsEmpty())
+ grid_sizer->Add(m_near_label_widget_ptrs.back(), 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 7);
+ else {
+ // If we're here, we have some widget near the label
+ // so we need a horizontal sizer to arrange these things
+ auto sizer = new wxBoxSizer(wxHORIZONTAL);
+ grid_sizer->Add(sizer, 0, wxEXPAND | (staticbox ? wxALL : wxBOTTOM | wxTOP | wxLEFT), staticbox ? 0 : 1);
+ sizer->Add(m_near_label_widget_ptrs.back(), 0, wxRIGHT, 7);
+ sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5);
+ }
}
if (label != nullptr && line.label_tooltip != "")
label->SetToolTip(line.label_tooltip);
@@ -237,14 +245,13 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n
wxSizer* sizer_tmp = sizer;
// add label if any
if (option.label != "") {
-// wxString str_label = _(option.label);
//! To correct translation by context have to use wxGETTEXT_IN_CONTEXT macro from wxWidget 3.1.1
wxString str_label = (option.label == "Top" || option.label == "Bottom") ?
_CTX(option.label, "Layers") :
_(option.label);
label = new wxStaticText(this->ctrl_parent(), wxID_ANY, str_label + ": ", wxDefaultPosition, wxDefaultSize);
label->SetBackgroundStyle(wxBG_STYLE_PAINT);
- label->SetFont(label_font);
+ label->SetFont(wxGetApp().normal_font());
sizer_tmp->Add(label, 0, /*wxALIGN_RIGHT |*/ wxALIGN_CENTER_VERTICAL, 0);
}
@@ -269,9 +276,9 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n
// add sidetext if any
if (option.sidetext != "") {
auto sidetext = new wxStaticText( this->ctrl_parent(), wxID_ANY, _(option.sidetext), wxDefaultPosition,
- wxSize(sidetext_width, -1)/*wxDefaultSize*/, wxALIGN_LEFT);
+ /*wxSize(sidetext_width*wxGetApp().em_unit(), -1)*/wxDefaultSize, wxALIGN_LEFT);
sidetext->SetBackgroundStyle(wxBG_STYLE_PAINT);
- sidetext->SetFont(sidetext_font);
+ sidetext->SetFont(wxGetApp().normal_font());
sizer_tmp->Add(sidetext, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 4);
field->set_side_text_ptr(sidetext);
}
@@ -303,7 +310,10 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n
}
Line OptionsGroup::create_single_option_line(const Option& option) const {
- Line retval{ _(option.opt.label), _(option.opt.tooltip) };
+// Line retval{ _(option.opt.label), _(option.opt.tooltip) };
+ wxString tooltip = _(option.opt.tooltip);
+ edit_tooltip(tooltip);
+ Line retval{ _(option.opt.label), tooltip };
Option tmp(option);
tmp.opt.label = std::string("");
retval.append_option(tmp);
@@ -479,6 +489,59 @@ bool ConfigOptionsGroup::update_visibility(ConfigOptionMode mode) {
return true;
}
+void ConfigOptionsGroup::msw_rescale()
+{
+ // update bitmaps for extra column items (like "mode markers" or buttons on settings panel)
+ if (rescale_extra_column_item)
+ for (auto extra_col : m_extra_column_item_ptrs)
+ rescale_extra_column_item(extra_col);
+
+ // update bitmaps for near label widgets (like "Set uniform scale" button on settings panel)
+ if (rescale_near_label_widget)
+ for (auto near_label_widget : m_near_label_widget_ptrs)
+ rescale_near_label_widget(near_label_widget);
+
+ // update undo buttons : rescale bitmaps
+ for (const auto& field : m_fields)
+ field.second->msw_rescale();
+
+ const int em = em_unit(parent());
+
+ // rescale width of label column
+ if (!m_options_mode.empty() && label_width > 1)
+ {
+ const int cols = m_grid_sizer->GetCols();
+ const int rows = m_grid_sizer->GetEffectiveRowsCount();
+ const int label_col = extra_column == nullptr ? 0 : 1;
+
+ for (int i = 0; i < rows; i++)
+ {
+ const wxSizerItem* label_item = m_grid_sizer->GetItem(i*cols+label_col);
+ if (label_item->IsWindow())
+ {
+ auto label = dynamic_cast<wxStaticText*>(label_item->GetWindow());
+ if (label != nullptr) {
+ const int label_height = int(1.5f*label->GetFont().GetPixelSize().y + 0.5f);
+ label->SetMinSize(wxSize(label_width*em, /*-1*/label_height));
+ }
+ }
+ else if (label_item->IsSizer()) // case when we have near_label_widget
+ {
+ const wxSizerItem* l_item = label_item->GetSizer()->GetItem(1);
+ if (l_item->IsWindow())
+ {
+ auto label = dynamic_cast<wxStaticText*>(l_item->GetWindow());
+ if (label != nullptr) {
+ const int label_height = int(1.5f*label->GetFont().GetPixelSize().y + 0.5f);
+ label->SetMinSize(wxSize(label_width*em, /*-1*/label_height));
+ }
+ }
+ }
+ }
+ m_grid_sizer->Layout();
+ }
+}
+
boost::any ConfigOptionsGroup::config_value(const std::string& opt_key, int opt_index, bool deserialize) {
if (deserialize) {
diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp
index 4eec68a37..fa8a19940 100644
--- a/src/slic3r/GUI/OptionsGroup.hpp
+++ b/src/slic3r/GUI/OptionsGroup.hpp
@@ -72,7 +72,7 @@ private:
std::vector<widget_t> m_extra_widgets;//! {std::vector<widget_t>()};
};
-using column_t = std::function<wxWindow*(wxWindow* parent, const Line&)>;//std::function<wxSizer*(const Line&)>;
+using column_t = std::function<wxWindow*(wxWindow* parent, const Line&)>;
using t_optionfield_map = std::map<t_config_option_key, t_field>;
using t_opt_map = std::map< std::string, std::pair<std::string, int> >;
@@ -82,7 +82,7 @@ class OptionsGroup {
public:
const bool staticbox {true};
const wxString title {wxString("")};
- size_t label_width = 20 * wxGetApp().em_unit();// {200};
+ size_t label_width = 20 ;// {200};
wxSizer* sizer {nullptr};
column_t extra_column {nullptr};
t_change m_on_change { nullptr };
@@ -94,6 +94,9 @@ public:
std::function<DynamicPrintConfig()> m_get_sys_config{ nullptr };
std::function<bool()> have_sys_config{ nullptr };
+ std::function<void(wxWindow* win)> rescale_extra_column_item { nullptr };
+ std::function<void(wxWindow* win)> rescale_near_label_widget { nullptr };
+
wxFont sidetext_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) };
wxFont label_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) };
int sidetext_width{ -1 };
@@ -193,6 +196,8 @@ protected:
std::map<t_config_option_key, Option> m_options;
wxWindow* m_parent {nullptr};
std::vector<ConfigOptionMode> m_options_mode;
+ std::vector<wxWindow*> m_extra_column_item_ptrs;
+ std::vector<wxWindow*> m_near_label_widget_ptrs;
/// Field list, contains unique_ptrs of the derived type.
/// using types that need to know what it is beyond the public interface
@@ -261,6 +266,7 @@ public:
void Hide();
void Show(const bool show);
bool update_visibility(ConfigOptionMode mode);
+ void msw_rescale();
boost::any config_value(const std::string& opt_key, int opt_index, bool deserialize);
// return option value from config
boost::any get_config_value(const DynamicPrintConfig& config, const std::string& opt_key, int opt_index = -1);
diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp
index b41b27af8..4280e4dbe 100644
--- a/src/slic3r/GUI/Plater.cpp
+++ b/src/slic3r/GUI/Plater.cpp
@@ -111,6 +111,7 @@ public:
bool showing_manifold_warning_icon;
void show_sizer(bool show);
+ void msw_rescale();
};
ObjectInfo::ObjectInfo(wxWindow *parent) :
@@ -118,10 +119,10 @@ ObjectInfo::ObjectInfo(wxWindow *parent) :
{
GetStaticBox()->SetFont(wxGetApp().bold_font());
- auto *grid_sizer = new wxFlexGridSizer(4, 5, 5);
+ auto *grid_sizer = new wxFlexGridSizer(4, 5, 15);
grid_sizer->SetFlexibleDirection(wxHORIZONTAL);
- grid_sizer->AddGrowableCol(1, 1);
- grid_sizer->AddGrowableCol(3, 1);
+// grid_sizer->AddGrowableCol(1, 1);
+// grid_sizer->AddGrowableCol(3, 1);
auto init_info_label = [parent, grid_sizer](wxStaticText **info_label, wxString text_label) {
auto *text = new wxStaticText(parent, wxID_ANY, text_label+":");
@@ -160,6 +161,11 @@ void ObjectInfo::show_sizer(bool show)
manifold_warning_icon->Show(showing_manifold_warning_icon && show);
}
+void ObjectInfo::msw_rescale()
+{
+ manifold_warning_icon->SetBitmap(create_scaled_bitmap(nullptr, "exclamation"));
+}
+
enum SlisedInfoIdx
{
siFilament_m,
@@ -229,7 +235,8 @@ void SlicedInfo::SetTextAndShow(SlisedInfoIdx idx, const wxString& text, const w
PresetComboBox::PresetComboBox(wxWindow *parent, Preset::Type preset_type) :
wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 * wxGetApp().em_unit(), -1), 0, nullptr, wxCB_READONLY),
preset_type(preset_type),
- last_selected(wxNOT_FOUND)
+ last_selected(wxNOT_FOUND),
+ m_em_unit(wxGetApp().em_unit())
{
Bind(wxEVT_COMBOBOX, [this](wxCommandEvent &evt) {
auto selected_item = this->GetSelection();
@@ -281,11 +288,7 @@ wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 *
});
}
- edit_btn = new wxButton(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
-#ifdef __WINDOWS__
- edit_btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
-#endif
- edit_btn->SetBitmap(create_scaled_bitmap(this, "cog"));
+ edit_btn = new ScalableButton(parent, wxID_ANY, "cog");
edit_btn->SetToolTip(_(L("Click to edit preset")));
edit_btn->Bind(wxEVT_BUTTON, ([preset_type, this](wxCommandEvent)
@@ -331,6 +334,12 @@ void PresetComboBox::check_selection()
this->last_selected = GetSelection();
}
+void PresetComboBox::msw_rescale()
+{
+ m_em_unit = wxGetApp().em_unit();
+ edit_btn->msw_rescale();
+}
+
// Frequently changed parameters
class FreqChangedParams : public OG_Settings
@@ -428,7 +437,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) :
option = m_og->get_option("fill_density");
option.opt.label = L("Infill");
- option.opt.width = 6 * wxGetApp().em_unit();
+ option.opt.width = 6;
option.opt.sidetext = " ";
line.append_option(option);
@@ -566,7 +575,7 @@ struct Sidebar::priv
wxScrolledWindow *scrolled;
wxPanel* presets_panel; // Used for MSW better layouts
- PrusaModeSizer *mode_sizer;
+ ModeSizer *mode_sizer;
wxFlexGridSizer *sizer_presets;
PresetComboBox *combo_print;
std::vector<PresetComboBox*> combos_filament;
@@ -614,9 +623,9 @@ void Sidebar::priv::show_preset_comboboxes()
// Sidebar / public
Sidebar::Sidebar(Plater *parent)
- : wxPanel(parent), p(new priv(parent))
+ : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1)), p(new priv(parent))
{
- p->scrolled = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1));
+ p->scrolled = new wxScrolledWindow(this, wxID_ANY/*, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1)*/);
p->scrolled->SetScrollbars(0, 20, 1, 2);
@@ -625,7 +634,7 @@ Sidebar::Sidebar(Plater *parent)
p->scrolled->SetSizer(scrolled_sizer);
// Sizer with buttons for mode changing
- p->mode_sizer = new PrusaModeSizer(p->scrolled, 2 * wxGetApp().em_unit());
+ p->mode_sizer = new ModeSizer(p->scrolled, 2 * wxGetApp().em_unit());
// The preset chooser
p->sizer_presets = new wxFlexGridSizer(10, 1, 1, 2);
@@ -675,13 +684,8 @@ Sidebar::Sidebar(Plater *parent)
init_combo(&p->combo_sla_material, _(L("SLA material")), Preset::TYPE_SLA_MATERIAL, false);
init_combo(&p->combo_printer, _(L("Printer")), Preset::TYPE_PRINTER, false);
- // calculate width of the preset labels
-// p->sizer_presets->Layout();
-// const wxArrayInt& ar = p->sizer_presets->GetColWidths();
-// const int label_width = ar.IsEmpty() ? 10*wxGetApp().em_unit() : ar.front()-4;
-
const int margin_5 = int(0.5*wxGetApp().em_unit());// 5;
- const int margin_10 = int(1.5*wxGetApp().em_unit());// 15;
+ const int margin_10 = 10;//int(1.5*wxGetApp().em_unit());// 15;
p->sizer_params = new wxBoxSizer(wxVERTICAL);
@@ -703,10 +707,6 @@ Sidebar::Sidebar(Plater *parent)
p->object_settings->Hide();
p->sizer_params->Add(p->object_settings->get_sizer(), 0, wxEXPAND | wxTOP, margin_5);
- p->btn_send_gcode = new wxButton(this, wxID_ANY, _(L("Send to printer")));
- p->btn_send_gcode->SetFont(wxGetApp().bold_font());
- p->btn_send_gcode->Hide();
-
// Info boxes
p->object_info = new ObjectInfo(p->scrolled);
p->sliced_info = new SlicedInfo(p->scrolled);
@@ -721,10 +721,17 @@ Sidebar::Sidebar(Plater *parent)
scrolled_sizer->Add(p->sliced_info, 0, wxEXPAND | wxTOP | wxLEFT, margin_5);
// Buttons underneath the scrolled area
- p->btn_export_gcode = new wxButton(this, wxID_ANY, _(L("Export G-code")) + dots);
- p->btn_export_gcode->SetFont(wxGetApp().bold_font());
- p->btn_reslice = new wxButton(this, wxID_ANY, _(L("Slice now")));
- p->btn_reslice->SetFont(wxGetApp().bold_font());
+
+ auto init_btn = [this](wxButton **btn, wxString label) {
+ *btn = new wxButton(this, wxID_ANY, label, wxDefaultPosition,
+ wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
+ (*btn)->SetFont(wxGetApp().bold_font());
+ };
+
+ init_btn(&p->btn_send_gcode, _(L("Send to printer")));
+ p->btn_send_gcode->Hide();
+ init_btn(&p->btn_export_gcode, _(L("Export G-code")) + dots);
+ init_btn(&p->btn_reslice, _(L("Slice now")));
enable_buttons(false);
auto *btns_sizer = new wxBoxSizer(wxVERTICAL);
@@ -781,6 +788,28 @@ void Sidebar::remove_unused_filament_combos(const int current_extruder_count)
}
}
+void Sidebar::update_all_preset_comboboxes()
+{
+ PresetBundle &preset_bundle = *wxGetApp().preset_bundle;
+ const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology();
+
+ // Update the print choosers to only contain the compatible presets, update the dirty flags.
+ if (print_tech == ptFFF)
+ preset_bundle.prints.update_platter_ui(p->combo_print);
+ else {
+ preset_bundle.sla_prints.update_platter_ui(p->combo_sla_print);
+ preset_bundle.sla_materials.update_platter_ui(p->combo_sla_material);
+ }
+ // Update the printer choosers, update the dirty flags.
+ preset_bundle.printers.update_platter_ui(p->combo_printer);
+ // Update the filament choosers to only contain the compatible presets, update the color preview,
+ // update the dirty flags.
+ if (print_tech == ptFFF) {
+ for (size_t i = 0; i < p->combos_filament.size(); ++i)
+ preset_bundle.update_platter_filament_ui(i, p->combos_filament[i]);
+ }
+}
+
void Sidebar::update_presets(Preset::Type preset_type)
{
PresetBundle &preset_bundle = *wxGetApp().preset_bundle;
@@ -820,23 +849,7 @@ void Sidebar::update_presets(Preset::Type preset_type)
case Preset::TYPE_PRINTER:
{
-// wxWindowUpdateLocker noUpdates_scrolled(p->scrolled);
-
- // Update the print choosers to only contain the compatible presets, update the dirty flags.
- if (print_tech == ptFFF)
- preset_bundle.prints.update_platter_ui(p->combo_print);
- else {
- preset_bundle.sla_prints.update_platter_ui(p->combo_sla_print);
- preset_bundle.sla_materials.update_platter_ui(p->combo_sla_material);
- }
- // Update the printer choosers, update the dirty flags.
- preset_bundle.printers.update_platter_ui(p->combo_printer);
- // Update the filament choosers to only contain the compatible presets, update the color preview,
- // update the dirty flags.
- if (print_tech == ptFFF) {
- for (size_t i = 0; i < p->combos_filament.size(); ++ i)
- preset_bundle.update_platter_filament_ui(i, p->combos_filament[i]);
- }
+ update_all_preset_comboboxes();
p->show_preset_comboboxes();
break;
}
@@ -861,6 +874,37 @@ void Sidebar::update_reslice_btn_tooltip() const
p->btn_reslice->SetToolTip(tooltip);
}
+void Sidebar::msw_rescale()
+{
+ SetMinSize(wxSize(40 * wxGetApp().em_unit(), -1));
+
+ p->mode_sizer->msw_rescale();
+
+ // Rescale preset comboboxes in respect to the current em_unit ...
+ for (PresetComboBox* combo : std::vector<PresetComboBox*> { p->combo_print,
+ p->combo_sla_print,
+ p->combo_sla_material,
+ p->combo_printer } )
+ combo->msw_rescale();
+ for (PresetComboBox* combo : p->combos_filament)
+ combo->msw_rescale();
+
+ // ... then refill them and set min size to correct layout of the sidebar
+ update_all_preset_comboboxes();
+
+ p->frequently_changed_parameters->get_og(true)->msw_rescale();
+ p->frequently_changed_parameters->get_og(false)->msw_rescale();
+
+ p->object_list->msw_rescale();
+
+ p->object_manipulation->get_og()->msw_rescale();
+ p->object_settings->msw_rescale();
+
+ p->object_info->msw_rescale();
+
+ p->scrolled->Layout();
+}
+
ObjectManipulation* Sidebar::obj_manipul()
{
return p->object_manipulation;
@@ -1132,11 +1176,11 @@ struct Plater::priv
MainFrame *main_frame;
// Object popup menu
- PrusaMenu object_menu;
+ MenuWithSeparators object_menu;
// Part popup menu
- PrusaMenu part_menu;
+ MenuWithSeparators part_menu;
// SLA-Object popup menu
- PrusaMenu sla_object_menu;
+ MenuWithSeparators sla_object_menu;
// Removed/Prepended Items according to the view mode
std::vector<wxMenuItem*> items_increase;
@@ -3710,22 +3754,16 @@ void Plater::changed_object(int obj_idx)
{
if (obj_idx < 0)
return;
- auto list = wxGetApp().obj_list();
- wxASSERT(list != nullptr);
- if (list == nullptr)
- return;
-
- if (list->is_parts_changed()) {
- // recenter and re - align to Z = 0
- auto model_object = p->model.objects[obj_idx];
- model_object->ensure_on_bed();
- if (this->p->printer_technology == ptSLA) {
- // Update the SLAPrint from the current Model, so that the reload_scene()
- // pulls the correct data, update the 3D scene.
- this->p->update_restart_background_process(true, false);
- } else
- p->view3D->reload_scene(false);
+ // recenter and re - align to Z = 0
+ auto model_object = p->model.objects[obj_idx];
+ model_object->ensure_on_bed();
+ if (this->p->printer_technology == ptSLA) {
+ // Update the SLAPrint from the current Model, so that the reload_scene()
+ // pulls the correct data, update the 3D scene.
+ this->p->update_restart_background_process(true, false);
}
+ else
+ p->view3D->reload_scene(false);
// update print
this->p->schedule_background_process();
@@ -3736,26 +3774,19 @@ void Plater::changed_objects(const std::vector<size_t>& object_idxs)
if (object_idxs.empty())
return;
- auto list = wxGetApp().obj_list();
- wxASSERT(list != nullptr);
- if (list == nullptr)
- return;
-
- if (list->is_parts_changed()) {
- for (int obj_idx : object_idxs)
- {
- if (obj_idx < p->model.objects.size())
- // recenter and re - align to Z = 0
- p->model.objects[obj_idx]->ensure_on_bed();
- }
- if (this->p->printer_technology == ptSLA) {
- // Update the SLAPrint from the current Model, so that the reload_scene()
- // pulls the correct data, update the 3D scene.
- this->p->update_restart_background_process(true, false);
- }
- else
- p->view3D->reload_scene(false);
+ for (int obj_idx : object_idxs)
+ {
+ if (obj_idx < p->model.objects.size())
+ // recenter and re - align to Z = 0
+ p->model.objects[obj_idx]->ensure_on_bed();
}
+ if (this->p->printer_technology == ptSLA) {
+ // Update the SLAPrint from the current Model, so that the reload_scene()
+ // pulls the correct data, update the 3D scene.
+ this->p->update_restart_background_process(true, false);
+ }
+ else
+ p->view3D->reload_scene(false);
// update print
this->p->schedule_background_process();
@@ -3798,6 +3829,18 @@ bool Plater::can_paste_from_clipboard() const
return true;
}
+void Plater::msw_rescale()
+{
+ p->preview->msw_rescale();
+
+ p->view3D->get_canvas3d()->msw_rescale();
+
+ p->sidebar->msw_rescale();
+
+ Layout();
+ GetParent()->Layout();
+}
+
bool Plater::can_delete() const { return p->can_delete(); }
bool Plater::can_delete_all() const { return p->can_delete_all(); }
bool Plater::can_increase_instances() const { return p->can_increase_instances(); }
diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp
index f9c5a4d7f..ad5a45adb 100644
--- a/src/slic3r/GUI/Plater.hpp
+++ b/src/slic3r/GUI/Plater.hpp
@@ -14,6 +14,7 @@
#include "GLTexture.hpp"
class wxButton;
+class ScalableButton;
class wxBoxSizer;
class wxGLCanvas;
class wxScrolledWindow;
@@ -46,7 +47,7 @@ public:
PresetComboBox(wxWindow *parent, Preset::Type preset_type);
~PresetComboBox();
- wxButton* edit_btn { nullptr };
+ ScalableButton* edit_btn { nullptr };
enum LabelItemType {
LABEL_ITEM_MARKER = 0x4d,
@@ -56,14 +57,18 @@ public:
void set_label_marker(int item, LabelItemType label_item_type = LABEL_ITEM_MARKER);
void set_extruder_idx(const int extr_idx) { extruder_idx = extr_idx; }
int get_extruder_idx() const { return extruder_idx; }
+ int em_unit() const { return m_em_unit; }
void check_selection();
+ void msw_rescale();
+
private:
typedef std::size_t Marker;
Preset::Type preset_type;
int last_selected;
int extruder_idx = -1;
+ int m_em_unit;
};
class Sidebar : public wxPanel
@@ -79,9 +84,11 @@ public:
void init_filament_combo(PresetComboBox **combo, const int extr_idx);
void remove_unused_filament_combos(const int current_extruder_count);
+ void update_all_preset_comboboxes();
void update_presets(Slic3r::Preset::Type preset_type);
void update_mode_sizer() const;
void update_reslice_btn_tooltip() const;
+ void msw_rescale();
ObjectManipulation* obj_manipul();
ObjectList* obj_list();
@@ -199,6 +206,8 @@ public:
bool can_copy() const;
bool can_paste() const;
+ void msw_rescale();
+
private:
struct priv;
std::unique_ptr<priv> p;
diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp
index 8bc747db5..b6a340d08 100644
--- a/src/slic3r/GUI/Preferences.cpp
+++ b/src/slic3r/GUI/Preferences.cpp
@@ -7,7 +7,9 @@ namespace Slic3r {
namespace GUI {
PreferencesDialog::PreferencesDialog(wxWindow* parent) :
- wxDialog(parent, wxID_ANY, _(L("Preferences")), wxDefaultPosition, wxDefaultSize) {
+ DPIDialog(parent, wxID_ANY, _(L("Preferences")), wxDefaultPosition,
+ wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
+{
build();
}
@@ -15,7 +17,7 @@ void PreferencesDialog::build()
{
auto app_config = get_app_config();
m_optgroup = std::make_shared<ConfigOptionsGroup>(this, _(L("General")));
- m_optgroup->label_width = 40 * wxGetApp().em_unit(); //400;
+ m_optgroup->label_width = 40;
m_optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value){
m_values[opt_key] = boost::any_cast<bool>(value) ? "1" : "0";
};
@@ -110,6 +112,8 @@ void PreferencesDialog::build()
auto sizer = new wxBoxSizer(wxVERTICAL);
sizer->Add(m_optgroup->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10);
+ SetFont(wxGetApp().normal_font());
+
auto buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL);
wxButton* btn = static_cast<wxButton*>(FindWindowById(wxID_OK, this));
btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { accept(); });
@@ -123,7 +127,7 @@ void PreferencesDialog::accept()
{
if (m_values.find("no_defaults") != m_values.end() ||
m_values.find("use_legacy_opengl") != m_values.end()) {
- warning_catcher(this, _(L("You need to restart Slic3r to make the changes effective.")));
+ warning_catcher(this, wxString::Format(_(L("You need to restart %s to make the changes effective.")), SLIC3R_APP_NAME));
}
auto app_config = get_app_config();
@@ -138,5 +142,21 @@ void PreferencesDialog::accept()
wxGetApp().update_ui_from_settings();
}
+void PreferencesDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+ m_optgroup->msw_rescale();
+
+ const int em = em_unit();
+
+ msw_buttons_rescale(this, em, { wxID_OK, wxID_CANCEL });
+
+ const wxSize& size = wxSize(47 * em, 28 * em);
+
+ SetMinSize(size);
+ Fit();
+
+ Refresh();
+}
+
} // GUI
} // Slic3r \ No newline at end of file
diff --git a/src/slic3r/GUI/Preferences.hpp b/src/slic3r/GUI/Preferences.hpp
index 363daebbc..096a2c906 100644
--- a/src/slic3r/GUI/Preferences.hpp
+++ b/src/slic3r/GUI/Preferences.hpp
@@ -2,6 +2,7 @@
#define slic3r_Preferences_hpp_
#include "GUI.hpp"
+#include "GUI_Utils.hpp"
#include <wx/dialog.h>
#include <map>
@@ -11,7 +12,7 @@ namespace GUI {
class ConfigOptionsGroup;
-class PreferencesDialog : public wxDialog
+class PreferencesDialog : public DPIDialog
{
std::map<std::string, std::string> m_values;
std::shared_ptr<ConfigOptionsGroup> m_optgroup;
@@ -21,6 +22,9 @@ public:
void build();
void accept();
+
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override;
};
} // GUI
diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp
index bed960a62..9875586ed 100644
--- a/src/slic3r/GUI/Preset.cpp
+++ b/src/slic3r/GUI/Preset.cpp
@@ -914,6 +914,16 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui)
// and draw a red flag in front of the selected preset.
bool wide_icons = ! selected_preset.is_compatible && m_bitmap_incompatible != nullptr;
+ /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display.
+ * So set sizes for solid_colored icons used for filament preset
+ * and scale them in respect to em_unit value
+ */
+ const float scale_f = ui->em_unit() * 0.1f;
+ const int icon_height = 16 * scale_f + 0.5f;
+ const int icon_width = 16 * scale_f + 0.5f;
+ const int thin_space_icon_width = 4 * scale_f + 0.5f;
+ const int wide_space_icon_width = 6 * scale_f + 0.5f;
+
std::map<wxString, wxBitmap*> nonsys_presets;
wxString selected = "";
if (!this->m_presets.front().is_visible)
@@ -934,13 +944,13 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui)
std::vector<wxBitmap> bmps;
if (wide_icons)
// Paint a red flag for incompatible presets.
- bmps.emplace_back(preset.is_compatible ? m_bitmap_cache->mkclear(16, 16) : *m_bitmap_incompatible);
+ bmps.emplace_back(preset.is_compatible ? m_bitmap_cache->mkclear(icon_width, icon_height) : *m_bitmap_incompatible);
// Paint the color bars.
- bmps.emplace_back(m_bitmap_cache->mkclear(4, 16));
+ bmps.emplace_back(m_bitmap_cache->mkclear(thin_space_icon_width, icon_height));
bmps.emplace_back(*m_bitmap_main_frame);
// Paint a lock at the system presets.
- bmps.emplace_back(m_bitmap_cache->mkclear(6, 16));
- bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(16, 16));
+ bmps.emplace_back(m_bitmap_cache->mkclear(wide_space_icon_width, icon_height));
+ bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(icon_width, icon_height));
bmp = m_bitmap_cache->insert(bitmap_key, bmps);
}
@@ -981,12 +991,12 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui)
std::vector<wxBitmap> bmps;
if (wide_icons)
// Paint a red flag for incompatible presets.
- bmps.emplace_back(m_bitmap_cache->mkclear(16, 16));
+ bmps.emplace_back(m_bitmap_cache->mkclear(icon_width, icon_height));
// Paint the color bars.
- bmps.emplace_back(m_bitmap_cache->mkclear(4, 16));
+ bmps.emplace_back(m_bitmap_cache->mkclear(thin_space_icon_width, icon_height));
bmps.emplace_back(*m_bitmap_main_frame);
// Paint a lock at the system presets.
- bmps.emplace_back(m_bitmap_cache->mkclear(6, 16));
+ bmps.emplace_back(m_bitmap_cache->mkclear(wide_space_icon_width, icon_height));
bmps.emplace_back(m_bitmap_add ? *m_bitmap_add : wxNullBitmap);
bmp = m_bitmap_cache->insert(bitmap_key, bmps);
}
@@ -996,10 +1006,14 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui)
ui->SetSelection(selected_preset_item);
ui->SetToolTip(ui->GetString(selected_preset_item));
ui->check_selection();
- ui->Thaw();
+ ui->Thaw();
+
+ // Update control min size after rescale (changed Display DPI under MSW)
+ if (ui->GetMinWidth() != 20 * ui->em_unit())
+ ui->SetMinSize(wxSize(20 * ui->em_unit(), ui->GetSize().GetHeight()));
}
-size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible)
+size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible, const int em/* = 10*/)
{
if (ui == nullptr)
return 0;
@@ -1007,6 +1021,14 @@ size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompati
ui->Clear();
size_t selected_preset_item = 0;
+ /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display.
+ * So set sizes for solid_colored(empty) icons used for preset
+ * and scale them in respect to em_unit value
+ */
+ const float scale_f = em * 0.1f;
+ const int icon_height = 16 * scale_f + 0.5f;
+ const int icon_width = 16 * scale_f + 0.5f;
+
std::map<wxString, wxBitmap*> nonsys_presets;
wxString selected = "";
if (!this->m_presets.front().is_visible)
@@ -1025,7 +1047,7 @@ size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompati
const wxBitmap* tmp_bmp = preset.is_compatible ? m_bitmap_compatible : m_bitmap_incompatible;
bmps.emplace_back((tmp_bmp == 0) ? (m_bitmap_main_frame ? *m_bitmap_main_frame : wxNullBitmap) : *tmp_bmp);
// Paint a lock at the system presets.
- bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(16, 16));
+ bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(icon_width, icon_height));
bmp = m_bitmap_cache->insert(bitmap_key, bmps);
}
@@ -1292,6 +1314,11 @@ std::string PresetCollection::path_from_name(const std::string &new_name) const
return (boost::filesystem::path(m_dir_path) / file_name).make_preferred().string();
}
+void PresetCollection::clear_bitmap_cache()
+{
+ m_bitmap_cache->clear();
+}
+
wxString PresetCollection::separator(const std::string &label)
{
return wxString::FromUTF8(PresetCollection::separator_head()) + _(label) + wxString::FromUTF8(PresetCollection::separator_tail());
diff --git a/src/slic3r/GUI/Preset.hpp b/src/slic3r/GUI/Preset.hpp
index 41c9ff72b..051a55f66 100644
--- a/src/slic3r/GUI/Preset.hpp
+++ b/src/slic3r/GUI/Preset.hpp
@@ -394,7 +394,7 @@ public:
// Update the choice UI from the list of presets.
// If show_incompatible, all presets are shown, otherwise only the compatible presets are shown.
// If an incompatible preset is selected, it is shown as well.
- size_t update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible);
+ size_t update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible, const int em = 10);
// Update the choice UI from the list of presets.
// Only the compatible presets are shown.
// If an incompatible preset is selected, it is shown as well.
@@ -412,6 +412,8 @@ public:
// Generate a file path from a profile name. Add the ".ini" suffix if it is missing.
std::string path_from_name(const std::string &new_name) const;
+ void clear_bitmap_cache();
+
#ifdef __linux__
static const char* separator_head() { return "------- "; }
static const char* separator_tail() { return " -------"; }
diff --git a/src/slic3r/GUI/PresetBundle.cpp b/src/slic3r/GUI/PresetBundle.cpp
index bcf76d958..b2fa0a857 100644
--- a/src/slic3r/GUI/PresetBundle.cpp
+++ b/src/slic3r/GUI/PresetBundle.cpp
@@ -1434,6 +1434,14 @@ bool PresetBundle::parse_color(const std::string &scolor, unsigned char *rgb_out
void PresetBundle::load_default_preset_bitmaps(wxWindow *window)
{
+ // Clear bitmap cache, before load new scaled default preset bitmaps
+ m_bitmapCache->clear();
+ this->prints.clear_bitmap_cache();
+ this->sla_prints.clear_bitmap_cache();
+ this->filaments.clear_bitmap_cache();
+ this->sla_materials.clear_bitmap_cache();
+ this->printers.clear_bitmap_cache();
+
this->prints.load_bitmap_default(window, "cog");
this->sla_prints.load_bitmap_default(window, "cog");
this->filaments.load_bitmap_default(window, "spool.png");
@@ -1468,6 +1476,18 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr
wxString selected_str = "";
if (!this->filaments().front().is_visible)
ui->set_label_marker(ui->Append(PresetCollection::separator(L("System presets")), wxNullBitmap));
+
+ /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display.
+ * So set sizes for solid_colored icons used for filament preset
+ * and scale them in respect to em_unit value
+ */
+ const float scale_f = ui->em_unit() * 0.1f;
+ const int icon_height = 16 * scale_f + 0.5f;
+ const int normal_icon_width = 16 * scale_f + 0.5f;
+ const int space_icon_width = 2 * scale_f + 0.5f;
+ const int wide_icon_width = 24 * scale_f + 0.5f;
+ const int thin_icon_width = 8 * scale_f + 0.5f;
+
for (int i = this->filaments().front().is_visible ? 0 : 1; i < int(this->filaments().size()); ++i) {
const Preset &preset = this->filaments.preset(i);
bool selected = this->filament_presets[idx_extruder] == preset.name;
@@ -1491,17 +1511,17 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr
std::vector<wxBitmap> bmps;
if (wide_icons)
// Paint a red flag for incompatible presets.
- bmps.emplace_back(preset.is_compatible ? m_bitmapCache->mkclear(16, 16) : *m_bitmapIncompatible);
+ bmps.emplace_back(preset.is_compatible ? m_bitmapCache->mkclear(normal_icon_width, icon_height) : *m_bitmapIncompatible);
// Paint the color bars.
parse_color(filament_rgb, rgb);
- bmps.emplace_back(m_bitmapCache->mksolid(single_bar ? 24 : 16, 16, rgb));
+ bmps.emplace_back(m_bitmapCache->mksolid(single_bar ? wide_icon_width : normal_icon_width, icon_height, rgb));
if (! single_bar) {
parse_color(extruder_rgb, rgb);
- bmps.emplace_back(m_bitmapCache->mksolid(8, 16, rgb));
+ bmps.emplace_back(m_bitmapCache->mksolid(thin_icon_width, icon_height, rgb));
}
// Paint a lock at the system presets.
- bmps.emplace_back(m_bitmapCache->mkclear(2, 16));
- bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmapLock : m_bitmapCache->mkclear(16, 16));
+ bmps.emplace_back(m_bitmapCache->mkclear(space_icon_width, icon_height));
+ bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmapLock : m_bitmapCache->mkclear(normal_icon_width, icon_height));
// (preset.is_dirty ? *m_bitmapLockOpen : *m_bitmapLock) : m_bitmapCache->mkclear(16, 16));
bitmap = m_bitmapCache->insert(bitmap_key, bmps);
}
@@ -1536,6 +1556,10 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr
ui->SetToolTip(ui->GetString(selected_preset_item));
ui->check_selection();
ui->Thaw();
+
+ // Update control min size after rescale (changed Display DPI under MSW)
+ if (ui->GetMinWidth() != 20 * ui->em_unit())
+ ui->SetMinSize(wxSize(20 * ui->em_unit(), ui->GetSize().GetHeight()));
}
void PresetBundle::set_default_suppressed(bool default_suppressed)
diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp
index 76185b1ba..2b6e4f2a2 100644
--- a/src/slic3r/GUI/PrintHostDialogs.cpp
+++ b/src/slic3r/GUI/PrintHostDialogs.cpp
@@ -19,6 +19,7 @@
#include "MsgDialog.hpp"
#include "I18N.hpp"
#include "../Utils/PrintHost.hpp"
+#include "wxExtensions.hpp"
namespace fs = boost::filesystem;
@@ -131,13 +132,11 @@ wxEvent *PrintHostQueueDialog::Event::Clone() const
}
PrintHostQueueDialog::PrintHostQueueDialog(wxWindow *parent)
- : wxDialog(parent, wxID_ANY, _(L("Print host upload queue")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+ : DPIDialog(parent, wxID_ANY, _(L("Print host upload queue")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
, on_progress_evt(this, EVT_PRINTHOST_PROGRESS, &PrintHostQueueDialog::on_progress, this)
, on_error_evt(this, EVT_PRINTHOST_ERROR, &PrintHostQueueDialog::on_error, this)
, on_cancel_evt(this, EVT_PRINTHOST_CANCEL, &PrintHostQueueDialog::on_cancel, this)
{
- enum { HEIGHT = 60, WIDTH = 30, SPACING = 5 };
-
const auto em = GetTextExtent("m").x;
SetSize(wxSize(HEIGHT * em, WIDTH * em));
@@ -202,6 +201,18 @@ void PrintHostQueueDialog::append_job(const PrintHostJob &job)
job_list->AppendItem(fields, static_cast<wxUIntPtr>(ST_NEW));
}
+void PrintHostQueueDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+ const int& em = em_unit();
+
+ msw_buttons_rescale(this, em, { wxID_DELETE, wxID_CANCEL, btn_error->GetId() });
+
+ SetMinSize(wxSize(HEIGHT * em, WIDTH * em));
+
+ Fit();
+ Refresh();
+}
+
PrintHostQueueDialog::JobState PrintHostQueueDialog::get_state(int idx)
{
wxCHECK_MSG(idx >= 0 && idx < job_list->GetItemCount(), ST_ERROR, "Out of bounds access to job list");
diff --git a/src/slic3r/GUI/PrintHostDialogs.hpp b/src/slic3r/GUI/PrintHostDialogs.hpp
index 105899cf0..427c4f6bf 100644
--- a/src/slic3r/GUI/PrintHostDialogs.hpp
+++ b/src/slic3r/GUI/PrintHostDialogs.hpp
@@ -41,7 +41,7 @@ private:
};
-class PrintHostQueueDialog : public wxDialog
+class PrintHostQueueDialog : public DPIDialog
{
public:
class Event : public wxEvent
@@ -62,6 +62,10 @@ public:
PrintHostQueueDialog(wxWindow *parent);
void append_job(const PrintHostJob &job);
+
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override;
+
private:
enum Column {
COL_ID,
@@ -81,6 +85,8 @@ private:
ST_COMPLETED,
};
+ enum { HEIGHT = 60, WIDTH = 30, SPACING = 5 };
+
wxButton *btn_cancel;
wxButton *btn_error;
wxDataViewListCtrl *job_list;
diff --git a/src/slic3r/GUI/RammingChart.cpp b/src/slic3r/GUI/RammingChart.cpp
index 41e5cdfe7..6f71e8616 100644
--- a/src/slic3r/GUI/RammingChart.cpp
+++ b/src/slic3r/GUI/RammingChart.cpp
@@ -141,6 +141,9 @@ void Chart::mouse_double_clicked(wxMouseEvent& event) {
void Chart::recalculate_line() {
+ m_line_to_draw.clear();
+ m_total_volume = 0.f;
+
std::vector<wxPoint> points;
for (auto& but : m_buttons) {
points.push_back(wxPoint(math_to_screen(but.get_pos())));
@@ -150,92 +153,88 @@ void Chart::recalculate_line() {
break;
}
}
- std::sort(points.begin(),points.end(),[](wxPoint& a,wxPoint& b) { return a.x < b.x; });
-
- m_line_to_draw.clear();
- m_total_volume = 0.f;
-
-
- // Cubic spline interpolation: see https://en.wikiversity.org/wiki/Cubic_Spline_Interpolation#Methods
- const bool boundary_first_derivative = true; // true - first derivative is 0 at the leftmost and rightmost point
- // false - second ---- || -------
- const int N = points.size()-1; // last point can be accessed as N, we have N+1 total points
- std::vector<float> diag(N+1);
- std::vector<float> mu(N+1);
- std::vector<float> lambda(N+1);
- std::vector<float> h(N+1);
- std::vector<float> rhs(N+1);
-
- // let's fill in inner equations
- for (int i=1;i<=N;++i) h[i] = points[i].x-points[i-1].x;
- std::fill(diag.begin(),diag.end(),2.f);
- for (int i=1;i<=N-1;++i) {
- mu[i] = h[i]/(h[i]+h[i+1]);
- lambda[i] = 1.f - mu[i];
- rhs[i] = 6 * ( float(points[i+1].y-points[i].y )/(h[i+1]*(points[i+1].x-points[i-1].x)) -
- float(points[i].y -points[i-1].y)/(h[i] *(points[i+1].x-points[i-1].x)) );
- }
-
- // now fill in the first and last equations, according to boundary conditions:
- if (boundary_first_derivative) {
- const float endpoints_derivative = 0;
- lambda[0] = 1;
- mu[N] = 1;
- rhs[0] = (6.f/h[1]) * (float(points[0].y-points[1].y)/(points[0].x-points[1].x) - endpoints_derivative);
- rhs[N] = (6.f/h[N]) * (endpoints_derivative - float(points[N-1].y-points[N].y)/(points[N-1].x-points[N].x));
- }
- else {
- lambda[0] = 0;
- mu[N] = 0;
- rhs[0] = 0;
- rhs[N] = 0;
- }
+
+ // The calculation wouldn't work in case the ramming is to be turned off completely.
+ if (points.size()>1) {
+ std::sort(points.begin(),points.end(),[](wxPoint& a,wxPoint& b) { return a.x < b.x; });
+
+ // Cubic spline interpolation: see https://en.wikiversity.org/wiki/Cubic_Spline_Interpolation#Methods
+ const bool boundary_first_derivative = true; // true - first derivative is 0 at the leftmost and rightmost point
+ // false - second ---- || -------
+ const int N = points.size()-1; // last point can be accessed as N, we have N+1 total points
+ std::vector<float> diag(N+1);
+ std::vector<float> mu(N+1);
+ std::vector<float> lambda(N+1);
+ std::vector<float> h(N+1);
+ std::vector<float> rhs(N+1);
- // the trilinear system is ready to be solved:
- for (int i=1;i<=N;++i) {
- float multiple = mu[i]/diag[i-1]; // let's subtract proper multiple of above equation
- diag[i]-= multiple * lambda[i-1];
- rhs[i] -= multiple * rhs[i-1];
- }
- // now the back substitution (vector mu contains invalid values from now on):
- rhs[N] = rhs[N]/diag[N];
- for (int i=N-1;i>=0;--i)
- rhs[i] = (rhs[i]-lambda[i]*rhs[i+1])/diag[i];
-
-
-
-
- unsigned int i=1;
- float y=0.f;
- for (int x=m_rect.GetLeft(); x<=m_rect.GetRight() ; ++x) {
- if (splines) {
- if (i<points.size()-1 && points[i].x < x ) {
- ++i;
- }
- if (points[0].x > x)
- y = points[0].y;
- else
- if (points[N].x < x)
- y = points[N].y;
- else
- y = (rhs[i-1]*pow(points[i].x-x,3)+rhs[i]*pow(x-points[i-1].x,3)) / (6*h[i]) +
- (points[i-1].y-rhs[i-1]*h[i]*h[i]/6.f) * (points[i].x-x)/h[i] +
- (points[i].y -rhs[i] *h[i]*h[i]/6.f) * (x-points[i-1].x)/h[i];
- m_line_to_draw.push_back(y);
+ // let's fill in inner equations
+ for (int i=1;i<=N;++i) h[i] = points[i].x-points[i-1].x;
+ std::fill(diag.begin(),diag.end(),2.f);
+ for (int i=1;i<=N-1;++i) {
+ mu[i] = h[i]/(h[i]+h[i+1]);
+ lambda[i] = 1.f - mu[i];
+ rhs[i] = 6 * ( float(points[i+1].y-points[i].y )/(h[i+1]*(points[i+1].x-points[i-1].x)) -
+ float(points[i].y -points[i-1].y)/(h[i] *(points[i+1].x-points[i-1].x)) );
+ }
+
+ // now fill in the first and last equations, according to boundary conditions:
+ if (boundary_first_derivative) {
+ const float endpoints_derivative = 0;
+ lambda[0] = 1;
+ mu[N] = 1;
+ rhs[0] = (6.f/h[1]) * (float(points[0].y-points[1].y)/(points[0].x-points[1].x) - endpoints_derivative);
+ rhs[N] = (6.f/h[N]) * (endpoints_derivative - float(points[N-1].y-points[N].y)/(points[N-1].x-points[N].x));
+ }
+ else {
+ lambda[0] = 0;
+ mu[N] = 0;
+ rhs[0] = 0;
+ rhs[N] = 0;
}
- else {
- float x_math = screen_to_math(wxPoint(x,0)).m_x;
- if (i+2<=points.size() && m_buttons[i+1].get_pos().m_x-0.125 < x_math)
- ++i;
- m_line_to_draw.push_back(math_to_screen(wxPoint2DDouble(x_math,m_buttons[i].get_pos().m_y)).y);
+
+ // the trilinear system is ready to be solved:
+ for (int i=1;i<=N;++i) {
+ float multiple = mu[i]/diag[i-1]; // let's subtract proper multiple of above equation
+ diag[i]-= multiple * lambda[i-1];
+ rhs[i] -= multiple * rhs[i-1];
+ }
+ // now the back substitution (vector mu contains invalid values from now on):
+ rhs[N] = rhs[N]/diag[N];
+ for (int i=N-1;i>=0;--i)
+ rhs[i] = (rhs[i]-lambda[i]*rhs[i+1])/diag[i];
+
+ unsigned int i=1;
+ float y=0.f;
+ for (int x=m_rect.GetLeft(); x<=m_rect.GetRight() ; ++x) {
+ if (splines) {
+ if (i<points.size()-1 && points[i].x < x ) {
+ ++i;
+ }
+ if (points[0].x > x)
+ y = points[0].y;
+ else
+ if (points[N].x < x)
+ y = points[N].y;
+ else
+ y = (rhs[i-1]*pow(points[i].x-x,3)+rhs[i]*pow(x-points[i-1].x,3)) / (6*h[i]) +
+ (points[i-1].y-rhs[i-1]*h[i]*h[i]/6.f) * (points[i].x-x)/h[i] +
+ (points[i].y -rhs[i] *h[i]*h[i]/6.f) * (x-points[i-1].x)/h[i];
+ m_line_to_draw.push_back(y);
+ }
+ else {
+ float x_math = screen_to_math(wxPoint(x,0)).m_x;
+ if (i+2<=points.size() && m_buttons[i+1].get_pos().m_x-0.125 < x_math)
+ ++i;
+ m_line_to_draw.push_back(math_to_screen(wxPoint2DDouble(x_math,m_buttons[i].get_pos().m_y)).y);
+ }
+
+ m_line_to_draw.back() = std::max(m_line_to_draw.back(), m_rect.GetTop()-1);
+ m_line_to_draw.back() = std::min(m_line_to_draw.back(), m_rect.GetBottom()-1);
+ m_total_volume += (m_rect.GetBottom() - m_line_to_draw.back()) * (visible_area.m_width / m_rect.GetWidth()) * (visible_area.m_height / m_rect.GetHeight());
}
-
-
- m_line_to_draw.back() = std::max(m_line_to_draw.back(), m_rect.GetTop()-1);
- m_line_to_draw.back() = std::min(m_line_to_draw.back(), m_rect.GetBottom()-1);
- m_total_volume += (m_rect.GetBottom() - m_line_to_draw.back()) * (visible_area.m_width / m_rect.GetWidth()) * (visible_area.m_height / m_rect.GetHeight());
}
-
+
wxPostEvent(this->GetParent(), wxCommandEvent(EVT_WIPE_TOWER_CHART_CHANGED));
Refresh();
}
diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp
index 2746c643e..162a36c75 100644
--- a/src/slic3r/GUI/SysInfoDialog.cpp
+++ b/src/slic3r/GUI/SysInfoDialog.cpp
@@ -41,10 +41,12 @@ std::string get_main_info(bool format_as_html)
}
SysInfoDialog::SysInfoDialog()
- : wxDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
+ : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
{
wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
SetBackgroundColour(bgr_clr);
+ SetFont(wxGetApp().normal_font());
+
wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL);
hsizer->SetMinSize(wxSize(50 * wxGetApp().em_unit(), -1));
@@ -52,8 +54,9 @@ SysInfoDialog::SysInfoDialog()
main_sizer->Add(hsizer, 1, wxEXPAND | wxALL, 10);
// logo
- auto *logo = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap(this, "Slic3r_192px.png", 192));
- hsizer->Add(logo, 0, wxALIGN_CENTER_VERTICAL);
+ m_logo_bmp = ScalableBitmap(this, "Slic3r_192px.png", 192);
+ m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp());
+ hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL);
wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL);
hsizer->Add(vsizer, 1, wxEXPAND|wxLEFT, 20);
@@ -61,8 +64,7 @@ SysInfoDialog::SysInfoDialog()
// title
{
wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize);
- wxFont title_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
- title_font.SetWeight(wxFONTWEIGHT_BOLD);
+ wxFont title_font = wxGetApp().bold_font();
title_font.SetFamily(wxFONTFAMILY_ROMAN);
title_font.SetPointSize(22);
title->SetFont(title_font);
@@ -70,7 +72,7 @@ SysInfoDialog::SysInfoDialog()
}
// main_info_text
- wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+ wxFont font = wxGetApp().normal_font();
const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
@@ -78,10 +80,10 @@ SysInfoDialog::SysInfoDialog()
const int fs = font.GetPointSize() - 1;
int size[] = { static_cast<int>(fs*1.5), static_cast<int>(fs*1.4), static_cast<int>(fs*1.3), fs, fs, fs, fs };
- wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_NEVER);
+ m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_NEVER);
{
- html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
- html->SetBorders(2);
+ m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
+ m_html->SetBorders(2);
const auto text = wxString::Format(
"<html>"
"<body bgcolor= %s link= %s>"
@@ -91,16 +93,16 @@ SysInfoDialog::SysInfoDialog()
"</body>"
"</html>", bgr_clr_str, text_clr_str, text_clr_str,
get_main_info(true));
- html->SetPage(text);
- vsizer->Add(html, 1, wxEXPAND | wxBOTTOM, wxGetApp().em_unit());
+ m_html->SetPage(text);
+ vsizer->Add(m_html, 1, wxEXPAND | wxBOTTOM, wxGetApp().em_unit());
}
// opengl_info
- wxHtmlWindow* opengl_info_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
+ m_opengl_info_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
{
- opengl_info_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
- opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
- opengl_info_html->SetBorders(10);
+ m_opengl_info_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
+ m_opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
+ m_opengl_info_html->SetBorders(10);
const auto text = wxString::Format(
"<html>"
"<body bgcolor= %s link= %s>"
@@ -110,14 +112,15 @@ SysInfoDialog::SysInfoDialog()
"</body>"
"</html>", bgr_clr_str, text_clr_str, text_clr_str,
_3DScene::get_gl_info(true, true));
- opengl_info_html->SetPage(text);
- main_sizer->Add(opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15);
+ m_opengl_info_html->SetPage(text);
+ main_sizer->Add(m_opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15);
}
wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxOK);
- auto btn_copy_to_clipboard = new wxButton(this, wxID_ANY, "Copy to Clipboard", wxDefaultPosition, wxDefaultSize);
- buttons->Insert(0, btn_copy_to_clipboard, 0, wxLEFT, 5);
- btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this);
+ m_btn_copy_to_clipboard = new wxButton(this, wxID_ANY, "Copy to Clipboard", wxDefaultPosition, wxDefaultSize);
+
+ buttons->Insert(0, m_btn_copy_to_clipboard, 0, wxLEFT, 5);
+ m_btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this);
this->SetEscapeId(wxID_OK);
this->Bind(wxEVT_BUTTON, &SysInfoDialog::onCloseDialog, this, wxID_OK);
@@ -130,6 +133,34 @@ SysInfoDialog::SysInfoDialog()
main_sizer->SetSizeHints(this);
}
+void SysInfoDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+ m_logo_bmp.msw_rescale();
+ m_logo->SetBitmap(m_logo_bmp.bmp());
+
+ wxFont font = GetFont();
+ const int fs = font.GetPointSize() - 1;
+ int font_size[] = { static_cast<int>(fs*1.5), static_cast<int>(fs*1.4), static_cast<int>(fs*1.3), fs, fs, fs, fs };
+
+ m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size);
+ m_html->Refresh();
+
+ const int& em = em_unit();
+
+ msw_buttons_rescale(this, em, { wxID_OK, m_btn_copy_to_clipboard->GetId() });
+
+ m_opengl_info_html->SetMinSize(wxSize(-1, 16 * em));
+ m_opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size);
+ m_opengl_info_html->Refresh();
+
+ const wxSize& size = wxSize(65 * em, 55 * em);
+
+ SetMinSize(size);
+ Fit();
+
+ Refresh();
+}
+
void SysInfoDialog::onCopyToClipboard(wxEvent &)
{
wxTheClipboard->Open();
diff --git a/src/slic3r/GUI/SysInfoDialog.hpp b/src/slic3r/GUI/SysInfoDialog.hpp
index ee1b85ce6..3b1459648 100644
--- a/src/slic3r/GUI/SysInfoDialog.hpp
+++ b/src/slic3r/GUI/SysInfoDialog.hpp
@@ -4,14 +4,26 @@
#include <wx/wx.h>
#include <wx/html/htmlwin.h>
+#include "GUI_Utils.hpp"
+#include "wxExtensions.hpp"
+
namespace Slic3r {
namespace GUI {
-class SysInfoDialog : public wxDialog
+class SysInfoDialog : public DPIDialog
{
- wxString text_info {wxEmptyString};
+ ScalableBitmap m_logo_bmp;
+ wxStaticBitmap* m_logo;
+ wxHtmlWindow* m_opengl_info_html;
+ wxHtmlWindow* m_html;
+
+ wxButton* m_btn_copy_to_clipboard;
+
public:
SysInfoDialog();
+
+protected:
+ void on_dpi_changed(const wxRect &suggested_rect) override;
private:
void onCopyToClipboard(wxEvent &);
diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp
index a697c7a71..fb8147ad2 100644
--- a/src/slic3r/GUI/Tab.cpp
+++ b/src/slic3r/GUI/Tab.cpp
@@ -110,37 +110,28 @@ void Tab::create_preset_tab()
#endif //__WXOSX__
// preset chooser
- m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(25 * m_em_unit, -1), 0, 0, wxCB_READONLY);
+ m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(35 * m_em_unit, -1), 0, 0, wxCB_READONLY);
auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
//buttons
- wxBitmap bmpMenu;
- bmpMenu = create_scaled_bitmap(this, "save");
- m_btn_save_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
- if (wxMSW) m_btn_save_preset->SetBackgroundColour(color);
- bmpMenu = create_scaled_bitmap(this, "cross"/*"delete.png"*/);
- m_btn_delete_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
- if (wxMSW) m_btn_delete_preset->SetBackgroundColour(color);
+ m_scaled_buttons.reserve(6);
+ m_scaled_buttons.reserve(2);
+
+ add_scaled_button(panel, &m_btn_save_preset, "save");
+ add_scaled_button(panel, &m_btn_delete_preset, "cross");
m_show_incompatible_presets = false;
- m_bmp_show_incompatible_presets = create_scaled_bitmap(this, "flag_red");
- m_bmp_hide_incompatible_presets = create_scaled_bitmap(this, "flag_green");
- m_btn_hide_incompatible_presets = new wxBitmapButton(panel, wxID_ANY, m_bmp_hide_incompatible_presets, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
- if (wxMSW) m_btn_hide_incompatible_presets->SetBackgroundColour(color);
+ add_scaled_bitmap(this, m_bmp_show_incompatible_presets, "flag_red");
+ add_scaled_bitmap(this, m_bmp_hide_incompatible_presets, "flag_green");
+
+ add_scaled_button(panel, &m_btn_hide_incompatible_presets, m_bmp_hide_incompatible_presets.name());
m_btn_save_preset->SetToolTip(_(L("Save current ")) + m_title);
m_btn_delete_preset->SetToolTip(_(L("Delete this preset")));
m_btn_delete_preset->Disable();
- m_undo_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
- m_undo_to_sys_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
- m_question_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
- if (wxMSW) {
- m_undo_btn->SetBackgroundColour(color);
- m_undo_to_sys_btn->SetBackgroundColour(color);
- m_question_btn->SetBackgroundColour(color);
- }
+ add_scaled_button(panel, &m_question_btn, "question");
m_question_btn->SetToolTip(_(L("Hover the cursor over buttons to find more information \n"
"or click this button.")));
@@ -148,22 +139,21 @@ void Tab::create_preset_tab()
// Determine the theme color of OS (dark or light)
auto luma = wxGetApp().get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
- m_bmp_value_lock = create_scaled_bitmap(this, luma >= 128 ? "lock_closed" : "lock_closed_white");
- m_bmp_value_unlock = create_scaled_bitmap(this, "lock_open");
+ add_scaled_bitmap(this, m_bmp_value_lock , luma >= 128 ? "lock_closed" : "lock_closed_white");
+ add_scaled_bitmap(this, m_bmp_value_unlock, "lock_open");
m_bmp_non_system = &m_bmp_white_bullet;
// Bitmaps to be shown on the "Undo user changes" button next to each input field.
- m_bmp_value_revert = create_scaled_bitmap(this, "undo");
- m_bmp_white_bullet = create_scaled_bitmap(this, luma >= 128 ? "dot" : "dot_white"/*"bullet_white.png"*/);
- m_bmp_question = create_scaled_bitmap(this, "question");
+ add_scaled_bitmap(this, m_bmp_value_revert, "undo");
+ add_scaled_bitmap(this, m_bmp_white_bullet, luma >= 128 ? "dot" : "dot_white");
fill_icon_descriptions();
set_tooltips_text();
- m_undo_btn->SetBitmap(m_bmp_white_bullet);
+ add_scaled_button(panel, &m_undo_btn, m_bmp_white_bullet.name());
+ add_scaled_button(panel, &m_undo_to_sys_btn, m_bmp_white_bullet.name());
+
m_undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(); }));
- m_undo_to_sys_btn->SetBitmap(m_bmp_white_bullet);
m_undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(true); }));
- m_question_btn->SetBitmap(m_bmp_question);
m_question_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent)
{
auto dlg = new ButtonsDescription(this, &m_icon_descriptions);
@@ -183,7 +173,7 @@ void Tab::create_preset_tab()
m_default_text_clr = wxGetApp().get_label_clr_default();
// Sizer with buttons for mode changing
- m_mode_sizer = new PrusaModeSizer(panel);
+ m_mode_sizer = new ModeSizer(panel);
const float scale_factor = wxGetApp().em_unit()*0.1;// GetContentScaleFactor();
m_hsizer = new wxBoxSizer(wxHORIZONTAL);
@@ -259,12 +249,36 @@ void Tab::create_preset_tab()
toggle_show_hide_incompatible();
}));
+ // Fill cache for mode bitmaps
+ m_mode_bitmap_cache.reserve(3);
+ m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_simple_.png"));
+ m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_middle_.png"));
+ m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_expert_.png"));
+
// Initialize the DynamicPrintConfig by default keys/values.
build();
rebuild_page_tree();
m_complited = true;
}
+void Tab::add_scaled_button(wxWindow* parent,
+ ScalableButton** btn,
+ const std::string& icon_name,
+ const wxString& label/* = wxEmptyString*/,
+ long style /*= wxBU_EXACTFIT | wxNO_BORDER*/)
+{
+ *btn = new ScalableButton(parent, wxID_ANY, icon_name, label, wxDefaultSize, wxDefaultPosition, style);
+ m_scaled_buttons.push_back(*btn);
+}
+
+void Tab::add_scaled_bitmap(wxWindow* parent,
+ ScalableBitmap& bmp,
+ const std::string& icon_name)
+{
+ bmp = ScalableBitmap(parent, icon_name);
+ m_scaled_bitmaps.push_back(&bmp);
+}
+
void Tab::load_initial_data()
{
m_config = &m_presets->get_edited_preset().config;
@@ -281,9 +295,8 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str
icon_idx = (m_icon_index.find(icon) == m_icon_index.end()) ? -1 : m_icon_index.at(icon);
if (icon_idx == -1) {
// Add a new icon to the icon list.
-// wxIcon img_icon(from_u8(Slic3r::var(icon)), wxBITMAP_TYPE_PNG);
-// m_icons->Add(img_icon);
- m_icons->Add(create_scaled_bitmap(this, icon));
+ m_scaled_icons_list.push_back(ScalableBitmap(this, icon));
+ m_icons->Add(m_scaled_icons_list.back().bmp());
icon_idx = ++m_icon_count;
m_icon_index[icon] = icon_idx;
}
@@ -294,7 +307,7 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str
#else
auto panel = this;
#endif
- PageShp page(new Page(panel, title, icon_idx));
+ PageShp page(new Page(panel, title, icon_idx, m_mode_bitmap_cache));
// page->SetBackgroundStyle(wxBG_STYLE_SYSTEM);
#ifdef __WINDOWS__
// page->SetDoubleBuffered(true);
@@ -402,8 +415,8 @@ void Tab::update_changed_ui()
{
bool is_nonsys_value = false;
bool is_modified_value = true;
- const wxBitmap *sys_icon = &m_bmp_value_lock;
- const wxBitmap *icon = &m_bmp_value_revert;
+ const ScalableBitmap *sys_icon = &m_bmp_value_lock;
+ const ScalableBitmap *icon = &m_bmp_value_revert;
const wxColour *color = &m_sys_label_clr;
@@ -595,8 +608,8 @@ void Tab::update_changed_tree_ui()
void Tab::update_undo_buttons()
{
- m_undo_btn->SetBitmap(m_is_modified_values ? m_bmp_value_revert : m_bmp_white_bullet);
- m_undo_to_sys_btn->SetBitmap(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock);
+ m_undo_btn-> SetBitmap_(m_is_modified_values ? m_bmp_value_revert: m_bmp_white_bullet);
+ m_undo_to_sys_btn-> SetBitmap_(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock);
m_undo_btn->SetToolTip(m_is_modified_values ? m_ttg_value_revert : m_ttg_white_bullet);
m_undo_to_sys_btn->SetToolTip(m_is_nonsys_values ? *m_ttg_non_system : m_ttg_value_lock);
@@ -673,7 +686,7 @@ void Tab::update_dirty()
void Tab::update_tab_ui()
{
- m_selected_preset_item = m_presets->update_tab_ui(m_presets_choice, m_show_incompatible_presets);
+ m_selected_preset_item = m_presets->update_tab_ui(m_presets_choice, m_show_incompatible_presets, m_em_unit);
}
// Load a provied DynamicConfig into the tab, modifying the active preset.
@@ -726,6 +739,42 @@ void Tab::update_visibility()
update_changed_tree_ui();
}
+void Tab::msw_rescale()
+{
+ m_em_unit = wxGetApp().em_unit();
+
+ m_mode_sizer->msw_rescale();
+
+ m_presets_choice->SetSize(35 * m_em_unit, -1);
+ m_treectrl->SetMinSize(wxSize(20 * m_em_unit, -1));
+
+ update_tab_ui();
+
+ // rescale buttons and cached bitmaps
+ for (const auto btn : m_scaled_buttons)
+ btn->msw_rescale();
+ for (const auto bmp : m_scaled_bitmaps)
+ bmp->msw_rescale();
+ for (ScalableBitmap& bmp : m_mode_bitmap_cache)
+ bmp.msw_rescale();
+
+ // rescale icons for tree_ctrl
+ for (ScalableBitmap& bmp : m_scaled_icons_list)
+ bmp.msw_rescale();
+ // recreate and set new ImageList for tree_ctrl
+ m_icons->RemoveAll();
+ m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight());
+ for (ScalableBitmap& bmp : m_scaled_icons_list)
+ m_icons->Add(bmp.bmp());
+ m_treectrl->AssignImageList(m_icons);
+
+ // rescale options_groups
+ for (auto page : m_pages)
+ page->msw_rescale();
+
+ Layout();
+}
+
Field* Tab::get_field(const t_config_option_key& opt_key, int opt_index/* = -1*/) const
{
Field* field = nullptr;
@@ -1121,10 +1170,10 @@ void TabPrint::build()
optgroup->append_single_option_line("complete_objects");
line = { _(L("Extruder clearance (mm)")), "" };
Option option = optgroup->get_option("extruder_clearance_radius");
- option.opt.width = 60;
+ option.opt.width = 6;
line.append_option(option);
option = optgroup->get_option("extruder_clearance_height");
- option.opt.width = 60;
+ option.opt.width = 6;
line.append_option(option);
optgroup->append_line(line);
@@ -1138,14 +1187,14 @@ void TabPrint::build()
optgroup = page->new_optgroup(_(L("Post-processing scripts")), 0);
option = optgroup->get_option("post_process");
option.opt.full_width = true;
- option.opt.height = 5 * m_em_unit;//50;
+ option.opt.height = 5;//50;
optgroup->append_single_option_line(option);
page = add_options_page(_(L("Notes")), "note.png");
optgroup = page->new_optgroup(_(L("Notes")), 0);
option = optgroup->get_option("notes");
option.opt.full_width = true;
- option.opt.height = 25 * m_em_unit;//250;
+ option.opt.height = 25;//250;
optgroup->append_single_option_line(option);
page = add_options_page(_(L("Dependencies")), "wrench.png");
@@ -1458,7 +1507,7 @@ void TabFilament::build()
optgroup->append_single_option_line("bridge_fan_speed");
optgroup->append_single_option_line("disable_fan_first_layers");
- optgroup = page->new_optgroup(_(L("Cooling thresholds")), 250);
+ optgroup = page->new_optgroup(_(L("Cooling thresholds")), 25);
optgroup->append_single_option_line("fan_below_layer_time");
optgroup->append_single_option_line("slowdown_below_layer_time");
optgroup->append_single_option_line("min_print_speed");
@@ -1508,8 +1557,8 @@ void TabFilament::build()
};
optgroup->append_line(line);
- const int gcode_field_height = 15 * m_em_unit; // 150
- const int notes_field_height = 25 * m_em_unit; // 250
+ const int gcode_field_height = 15; // 150
+ const int notes_field_height = 25; // 250
page = add_options_page(_(L("Custom G-code")), "cog");
optgroup = page->new_optgroup(_(L("Start G-code")), 0);
@@ -1606,8 +1655,8 @@ wxSizer* Tab::description_line_widget(wxWindow* parent, ogStaticText* *StaticTex
{
*StaticText = new ogStaticText(parent, "");
- auto font = (new wxSystemSettings)->GetFont(wxSYS_DEFAULT_GUI_FONT);
- (*StaticText)->SetFont(font);
+// auto font = (new wxSystemSettings)->GetFont(wxSYS_DEFAULT_GUI_FONT);
+ (*StaticText)->SetFont(wxGetApp().normal_font());
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(*StaticText, 1, wxEXPAND|wxALL, 0);
@@ -1629,10 +1678,10 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup)
}
auto printhost_browse = [=](wxWindow* parent) {
- auto btn = m_printhost_browse_btn = new wxButton(parent, wxID_ANY, _(L(" Browse ")) + dots,
- wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
+ add_scaled_button(parent, &m_printhost_browse_btn, "browse", _(L(" Browse ")) + dots, wxBU_LEFT | wxBU_EXACTFIT);
+ ScalableButton* btn = m_printhost_browse_btn;
btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
- btn->SetBitmap(create_scaled_bitmap(this, "browse"));
+
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
@@ -1648,10 +1697,9 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup)
};
auto print_host_test = [this](wxWindow* parent) {
- auto btn = m_print_host_test_btn = new wxButton(parent, wxID_ANY, _(L("Test")),
- wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
- btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
- btn->SetBitmap(create_scaled_bitmap(this, "test"));
+ add_scaled_button(parent, &m_print_host_test_btn, "test", _(L("Test")), wxBU_LEFT | wxBU_EXACTFIT);
+ ScalableButton* btn = m_print_host_test_btn;
+ btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
@@ -1722,9 +1770,9 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup)
line.widget = [this, ca_file_hint] (wxWindow* parent) {
auto txt = new wxStaticText(parent, wxID_ANY, wxString::Format("%s\n\n\t%s",
- _(L("HTTPS CA File:\n\
-\tOn this system, Slic3r uses HTTPS certificates from the system Certificate Store or Keychain.\n\
-\tTo use a custom CA file, please import your CA file into Certificate Store / Keychain.")),
+ wxString::Format(_(L("HTTPS CA File:\n\
+ \tOn this system, %s uses HTTPS certificates from the system Certificate Store or Keychain.\n\
+ \tTo use a custom CA file, please import your CA file into Certificate Store / Keychain.")), SLIC3R_APP_NAME),
ca_file_hint));
txt->SetFont(Slic3r::GUI::wxGetApp().normal_font());
auto sizer = new wxBoxSizer(wxHORIZONTAL);
@@ -1755,6 +1803,8 @@ void TabPrinter::build_fff()
auto *nozzle_diameter = dynamic_cast<const ConfigOptionFloats*>(m_config->option("nozzle_diameter"));
m_initial_extruders_count = m_extruders_count = nozzle_diameter->values.size();
+ wxGetApp().sidebar().update_objects_list_extruder_column(m_initial_extruders_count);
+
const Preset* parent_preset = m_presets->get_selected_preset_parent();
m_sys_extruders_count = parent_preset == nullptr ? 0 :
static_cast<const ConfigOptionFloats*>(parent_preset->config.option("nozzle_diameter"))->values.size();
@@ -1764,9 +1814,9 @@ void TabPrinter::build_fff()
Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" };
line.widget = [this](wxWindow* parent) {
- auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
- btn->SetFont(wxGetApp().small_font());
- btn->SetBitmap(create_scaled_bitmap(this, "printer_white"));
+ ScalableButton* btn;
+ add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT);
+ btn->SetFont(wxGetApp().normal_font());
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
@@ -1881,7 +1931,7 @@ void TabPrinter::build_fff()
m_use_silent_mode = val;
}
}
- build_extruder_pages();
+ build_unregular_pages();
update_dirty();
on_value_change(opt_key, value);
});
@@ -1893,8 +1943,8 @@ void TabPrinter::build_fff()
optgroup->append_single_option_line("use_volumetric_e");
optgroup->append_single_option_line("variable_layer_height");
- const int gcode_field_height = 15 * m_em_unit; // 150
- const int notes_field_height = 25 * m_em_unit; // 250
+ const int gcode_field_height = 15; // 150
+ const int notes_field_height = 25; // 250
page = add_options_page(_(L("Custom G-code")), "cog");
optgroup = page->new_optgroup(_(L("Start G-code")), 0);
option = optgroup->get_option("start_gcode");
@@ -1948,7 +1998,7 @@ void TabPrinter::build_fff()
};
optgroup->append_line(line);
- build_extruder_pages();
+ build_unregular_pages();
#if 0
if (!m_no_controller)
@@ -1965,9 +2015,10 @@ void TabPrinter::build_sla()
Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" };
line.widget = [this](wxWindow* parent) {
- auto btn = new wxButton(parent, wxID_ANY, _(L(" Set ")) + dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
- btn->SetFont(wxGetApp().small_font());
- btn->SetBitmap(create_scaled_bitmap(this, "printer_white"));
+ ScalableButton* btn;
+ add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT);
+ btn->SetFont(wxGetApp().normal_font());
+
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
@@ -2023,7 +2074,7 @@ void TabPrinter::build_sla()
optgroup = page->new_optgroup(_(L("Print Host upload")));
build_printhost(optgroup.get());
- const int notes_field_height = 25 * m_em_unit; // 250
+ const int notes_field_height = 25; // 250
page = add_options_page(_(L("Notes")), "note.png");
optgroup = page->new_optgroup(_(L("Notes")), 0);
@@ -2051,13 +2102,23 @@ void TabPrinter::update_serial_ports()
void TabPrinter::extruders_count_changed(size_t extruders_count)
{
- m_extruders_count = extruders_count;
- m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count);
- m_preset_bundle->update_multi_material_filament_presets();
- build_extruder_pages();
- reload_config();
- on_value_change("extruders_count", extruders_count);
- wxGetApp().sidebar().update_objects_list_extruder_column(extruders_count);
+ bool is_count_changed = false;
+ if (m_extruders_count != extruders_count) {
+ m_extruders_count = extruders_count;
+ m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count);
+ m_preset_bundle->update_multi_material_filament_presets();
+ is_count_changed = true;
+ }
+
+ /* This function should be call in any case because of correct updating/rebuilding
+ * of unregular pages of a Printer Settings
+ */
+ build_unregular_pages();
+
+ if (is_count_changed) {
+ on_value_change("extruders_count", extruders_count);
+ wxGetApp().sidebar().update_objects_list_extruder_column(extruders_count);
+ }
}
void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key)
@@ -2078,12 +2139,12 @@ PageShp TabPrinter::build_kinematics_page()
// Legend for OptionsGroups
auto optgroup = page->new_optgroup("");
optgroup->set_show_modified_btns_val(false);
- optgroup->label_width = 23 * m_em_unit;// 230;
+ optgroup->label_width = 23;// 230;
auto line = Line{ "", "" };
ConfigOptionDef def;
def.type = coString;
- def.width = 150;
+ def.width = 15;
def.gui_type = "legend";
def.mode = comAdvanced;
def.tooltip = L("Values in this column are for Full Power mode");
@@ -2125,12 +2186,23 @@ PageShp TabPrinter::build_kinematics_page()
return page;
}
-
-void TabPrinter::build_extruder_pages()
+/* Previous name build_extruder_pages().
+ *
+ * This function was renamed because of now it implements not just an extruder pages building,
+ * but "Machine limits" and "Single extruder MM setup" too
+ * (These pages can changes according to the another values of a current preset)
+ * */
+void TabPrinter::build_unregular_pages()
{
size_t n_before_extruders = 2; // Count of pages before Extruder pages
bool is_marlin_flavor = m_config->option<ConfigOptionEnum<GCodeFlavor>>("gcode_flavor")->value == gcfMarlin;
+ /* ! Freeze/Thaw in this function is needed to avoid call OnPaint() for erased pages
+ * and be cause of application crash, when try to change Preset in moment,
+ * when one of unregular pages is selected.
+ * */
+ Freeze();
+
// Add/delete Kinematics page according to is_marlin_flavor
size_t existed_page = 0;
for (int i = n_before_extruders; i < m_pages.size(); ++i) // first make sure it's not there already
@@ -2175,12 +2247,11 @@ void TabPrinter::build_extruder_pages()
m_has_single_extruder_MM_page = true;
}
-
+ // Build missed extruder pages
for (auto extruder_idx = m_extruders_count_old; extruder_idx < m_extruders_count; ++extruder_idx) {
//# build page
- char buf[512];
- sprintf(buf, _CHB(L("Extruder %d")), extruder_idx + 1);
- auto page = add_options_page(from_u8(buf), "funnel", true);
+ const wxString& page_name = wxString::Format(_(L("Extruder %d")), int(extruder_idx + 1));
+ auto page = add_options_page(page_name, "funnel", true);
m_pages.insert(m_pages.begin() + n_before_extruders + extruder_idx, page);
auto optgroup = page->new_optgroup(_(L("Size")));
@@ -2223,8 +2294,13 @@ void TabPrinter::build_extruder_pages()
m_pages.erase( m_pages.begin() + n_before_extruders + m_extruders_count,
m_pages.begin() + n_before_extruders + m_extruders_count_old);
+ Thaw();
+
m_extruders_count_old = m_extruders_count;
rebuild_page_tree();
+
+ // Reload preset pages with current configuration values
+ reload_config();
}
// this gets executed after preset is loaded and before GUI fields are updated
@@ -2492,7 +2568,6 @@ void Tab::rebuild_page_tree()
m_treectrl->SelectItem(item);
}
}
-// Thaw();
}
void Tab::update_page_tree_visibility()
@@ -2728,7 +2803,8 @@ bool Tab::may_switch_to_SLA_preset()
void Tab::OnTreeSelChange(wxTreeEvent& event)
{
- if (m_disable_tree_sel_changed_event) return;
+ if (m_disable_tree_sel_changed_event)
+ return;
// There is a bug related to Ubuntu overlay scrollbars, see https://github.com/prusa3d/Slic3r/issues/898 and https://github.com/prusa3d/Slic3r/issues/952.
// The issue apparently manifests when Show()ing a window with overlay scrollbars while the UI is frozen. For this reason,
@@ -2877,7 +2953,7 @@ void Tab::toggle_show_hide_incompatible()
void Tab::update_show_hide_incompatible_button()
{
- m_btn_hide_incompatible_presets->SetBitmap(m_show_incompatible_presets ?
+ m_btn_hide_incompatible_presets->SetBitmap_(m_show_incompatible_presets ?
m_bmp_show_incompatible_presets : m_bmp_hide_incompatible_presets);
m_btn_hide_incompatible_presets->SetToolTip(m_show_incompatible_presets ?
"Both compatible an incompatible presets are shown. Click to hide presets not compatible with the current printer." :
@@ -2909,10 +2985,8 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep
{
deps.checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All")));
deps.checkbox->SetFont(Slic3r::GUI::wxGetApp().normal_font());
- deps.btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
- deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
-
- deps.btn->SetBitmap(create_scaled_bitmap(this, "printer_white"));
+ add_scaled_button(parent, &deps.btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT);
+ deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add((deps.checkbox), 0, wxALIGN_CENTER_VERTICAL);
@@ -3069,6 +3143,12 @@ void Page::update_visibility(ConfigOptionMode mode)
m_show = ret_val;
}
+void Page::msw_rescale()
+{
+ for (auto group : m_optgroups)
+ group->msw_rescale();
+}
+
Field* Page::get_field(const t_config_option_key& opt_key, int opt_index /*= -1*/) const
{
Field* field = nullptr;
@@ -3092,18 +3172,16 @@ bool Page::set_value(const t_config_option_key& opt_key, const boost::any& value
// package Slic3r::GUI::Tab::Page;
ConfigOptionsGroupShp Page::new_optgroup(const wxString& title, int noncommon_label_width /*= -1*/)
{
- auto extra_column = [](wxWindow* parent, const Line& line)
+ auto extra_column = [this](wxWindow* parent, const Line& line)
{
std::string bmp_name;
const std::vector<Option>& options = line.get_options();
- if (options.size() == 0 || options[0].opt.gui_type == "legend")
- bmp_name = "";// "error.png";
- else {
- auto mode = options[0].opt.mode; //we assume that we have one option per line
- bmp_name = mode == comExpert ? "mode_expert_.png" :
- mode == comAdvanced ? "mode_middle_.png" : "mode_simple_.png";
- }
- auto bmp = new wxStaticBitmap(parent, wxID_ANY, bmp_name.empty() ? wxNullBitmap : create_scaled_bitmap(parent, bmp_name));
+ int mode_id = int(options[0].opt.mode);
+ const wxBitmap& bitmap = options.size() == 0 || options[0].opt.gui_type == "legend" ? wxNullBitmap :
+ m_mode_bitmap_cache[mode_id].bmp();
+ auto bmp = new wxStaticBitmap(parent, wxID_ANY, bitmap);
+ bmp->SetClientData((void*)&m_mode_bitmap_cache[mode_id]);
+
bmp->SetBackgroundStyle(wxBG_STYLE_PAINT);
return bmp;
};
@@ -3142,6 +3220,14 @@ ConfigOptionsGroupShp Page::new_optgroup(const wxString& title, int noncommon_la
return static_cast<Tab*>(tab)->m_presets->get_selected_preset_parent() != nullptr;
};
+ optgroup->rescale_extra_column_item = [this](wxWindow* win) {
+ auto *ctrl = dynamic_cast<wxStaticBitmap*>(win);
+ if (ctrl == nullptr)
+ return;
+
+ ctrl->SetBitmap(reinterpret_cast<ScalableBitmap*>(ctrl->GetClientData())->bmp());
+ };
+
vsizer()->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 10);
m_optgroups.push_back(optgroup);
@@ -3222,7 +3308,7 @@ void TabSLAMaterial::build()
optgroup->append_single_option_line("initial_exposure_time");
optgroup = page->new_optgroup(_(L("Corrections")));
- optgroup->label_width = 19 * m_em_unit;//190;
+ optgroup->label_width = 19;//190;
std::vector<std::string> corrections = {"material_correction"};
// std::vector<std::string> axes{ "X", "Y", "Z" };
std::vector<std::string> axes{ "XY", "Z" };
@@ -3232,7 +3318,7 @@ void TabSLAMaterial::build()
for (auto& axis : axes) {
auto opt = optgroup->get_option(opt_key, id);
opt.opt.label = axis;
- opt.opt.width = 60;
+ opt.opt.width = 6;
line.append_option(opt);
++id;
}
@@ -3244,7 +3330,7 @@ void TabSLAMaterial::build()
optgroup->label_width = 0;
Option option = optgroup->get_option("material_notes");
option.opt.full_width = true;
- option.opt.height = 25 * m_em_unit;//250;
+ option.opt.height = 25;//250;
optgroup->append_single_option_line(option);
page = add_options_page(_(L("Dependencies")), "wrench.png");
diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp
index 58950990c..ae13cb4b5 100644
--- a/src/slic3r/GUI/Tab.hpp
+++ b/src/slic3r/GUI/Tab.hpp
@@ -30,14 +30,14 @@
#include "BedShapeDialog.hpp"
#include "Event.hpp"
-
-class PrusaModeSizer;
+#include "wxExtensions.hpp"
namespace Slic3r {
namespace GUI {
-typedef std::pair<wxBitmap*, std::string> t_icon_description;
-typedef std::vector<std::pair<wxBitmap*, std::string>> t_icon_descriptions;
+
+typedef std::pair<ScalableBitmap*, std::string> t_icon_description;
+typedef std::vector<std::pair<ScalableBitmap*, std::string>> t_icon_descriptions;
// Single Tab page containing a{ vsizer } of{ optgroups }
// package Slic3r::GUI::Tab::Page;
@@ -50,10 +50,11 @@ class Page : public wxScrolledWindow
wxBoxSizer* m_vsizer;
bool m_show = true;
public:
- Page(wxWindow* parent, const wxString title, const int iconID) :
+ Page(wxWindow* parent, const wxString title, const int iconID, const std::vector<ScalableBitmap>& mode_bmp_cache) :
m_parent(parent),
m_title(title),
- m_iconID(iconID)
+ m_iconID(iconID),
+ m_mode_bitmap_cache(mode_bmp_cache)
{
Create(m_parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
m_vsizer = new wxBoxSizer(wxVERTICAL);
@@ -67,6 +68,7 @@ public:
// Delayed layout after resizing the main window.
bool layout_valid = false;
+ const std::vector<ScalableBitmap>& m_mode_bitmap_cache;
public:
std::vector <ConfigOptionsGroupShp> m_optgroups;
@@ -79,6 +81,7 @@ public:
void set_config(DynamicPrintConfig* config_in) { m_config = config_in; }
void reload_config();
void update_visibility(ConfigOptionMode mode);
+ void msw_rescale();
Field* get_field(const t_config_option_key& opt_key, int opt_index = -1) const;
bool set_value(const t_config_option_key& opt_key, const boost::any& value);
ConfigOptionsGroupShp new_optgroup(const wxString& title, int noncommon_label_width = -1);
@@ -119,20 +122,20 @@ protected:
std::string m_name;
const wxString m_title;
wxBitmapComboBox* m_presets_choice;
- wxBitmapButton* m_btn_save_preset;
- wxBitmapButton* m_btn_delete_preset;
- wxBitmapButton* m_btn_hide_incompatible_presets;
+ ScalableButton* m_btn_save_preset;
+ ScalableButton* m_btn_delete_preset;
+ ScalableButton* m_btn_hide_incompatible_presets;
wxBoxSizer* m_hsizer;
wxBoxSizer* m_left_sizer;
wxTreeCtrl* m_treectrl;
wxImageList* m_icons;
- PrusaModeSizer* m_mode_sizer;
+ ModeSizer* m_mode_sizer;
struct PresetDependencies {
Preset::Type type = Preset::TYPE_INVALID;
wxCheckBox *checkbox = nullptr;
- wxButton *btn = nullptr;
+ ScalableButton *btn = nullptr;
std::string key_list; // "compatible_printers"
std::string key_condition;
std::string dialog_title;
@@ -141,25 +144,27 @@ protected:
PresetDependencies m_compatible_printers;
PresetDependencies m_compatible_prints;
- wxButton* m_undo_btn;
- wxButton* m_undo_to_sys_btn;
- wxButton* m_question_btn;
- wxImageList* m_preset_icons;
+ ScalableButton* m_undo_btn;
+ ScalableButton* m_undo_to_sys_btn;
+ ScalableButton* m_question_btn;
// Cached bitmaps.
// A "flag" icon to be displayned next to the preset name in the Tab's combo box.
- wxBitmap m_bmp_show_incompatible_presets;
- wxBitmap m_bmp_hide_incompatible_presets;
+ ScalableBitmap m_bmp_show_incompatible_presets;
+ ScalableBitmap m_bmp_hide_incompatible_presets;
// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
- wxBitmap m_bmp_value_lock;
- wxBitmap m_bmp_value_unlock;
- wxBitmap m_bmp_white_bullet;
+ ScalableBitmap m_bmp_value_lock;
+ ScalableBitmap m_bmp_value_unlock;
+ ScalableBitmap m_bmp_white_bullet;
// The following bitmap points to either m_bmp_value_unlock or m_bmp_white_bullet, depending on whether the current preset has a parent preset.
- wxBitmap *m_bmp_non_system;
+ ScalableBitmap *m_bmp_non_system;
// Bitmaps to be shown on the "Undo user changes" button next to each input field.
- wxBitmap m_bmp_value_revert;
-// wxBitmap m_bmp_value_unmodified;
- wxBitmap m_bmp_question;
+ ScalableBitmap m_bmp_value_revert;
+
+ std::vector<ScalableButton*> m_scaled_buttons = {};
+ std::vector<ScalableBitmap*> m_scaled_bitmaps = {};
+ std::vector<ScalableBitmap> m_scaled_icons_list = {};
+ std::vector<ScalableBitmap> m_mode_bitmap_cache = {};
// Colors for ui "decoration"
wxColour m_sys_label_clr;
@@ -236,7 +241,11 @@ public:
virtual bool supports_printer_technology(const PrinterTechnology tech) = 0;
void create_preset_tab();
- void load_current_preset();
+ void add_scaled_button(wxWindow* parent, ScalableButton** btn, const std::string& icon_name,
+ const wxString& label = wxEmptyString,
+ long style = wxBU_EXACTFIT | wxNO_BORDER);
+ void add_scaled_bitmap(wxWindow* parent, ScalableBitmap& btn, const std::string& icon_name);
+ void load_current_preset();
void rebuild_page_tree();
void update_page_tree_visibility();
// Select a new preset, possibly delete the current one.
@@ -274,6 +283,7 @@ public:
virtual void reload_config();
void update_mode();
void update_visibility();
+ void msw_rescale();
Field* get_field(const t_config_option_key& opt_key, int opt_index = -1) const;
bool set_value(const t_config_option_key& opt_key, const boost::any& value);
wxSizer* description_line_widget(wxWindow* parent, ogStaticText** StaticText);
@@ -345,8 +355,8 @@ class TabPrinter : public Tab
void build_printhost(ConfigOptionsGroup *optgroup);
public:
wxButton* m_serial_test_btn = nullptr;
- wxButton* m_print_host_test_btn = nullptr;
- wxButton* m_printhost_browse_btn = nullptr;
+ ScalableButton* m_print_host_test_btn = nullptr;
+ ScalableButton* m_printhost_browse_btn = nullptr;
size_t m_extruders_count;
size_t m_extruders_count_old = 0;
@@ -368,7 +378,7 @@ public:
void update_serial_ports();
void extruders_count_changed(size_t extruders_count);
PageShp build_kinematics_page();
- void build_extruder_pages();
+ void build_unregular_pages();
void on_preset_loaded() override;
void init_options_list() override;
bool supports_printer_technology(const PrinterTechnology /* tech */) override { return true; }
diff --git a/src/slic3r/GUI/UpdateDialogs.cpp b/src/slic3r/GUI/UpdateDialogs.cpp
index 99288488c..b4943cf46 100644
--- a/src/slic3r/GUI/UpdateDialogs.cpp
+++ b/src/slic3r/GUI/UpdateDialogs.cpp
@@ -109,7 +109,8 @@ MsgUpdateConfig::~MsgUpdateConfig() {}
// MsgDataIncompatible
MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, wxString> &incompats) :
- MsgDialog(nullptr, _(L("Slic3r incompatibility")), _(L("Slic3r configuration is incompatible")), wxID_NONE)
+ MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME),
+ wxString::Format(_(L("%s configuration is incompatible")), SLIC3R_APP_NAME), wxID_NONE)
{
logo->SetBitmap(create_scaled_bitmap(this, "Slic3r_192px_grayscale.png", 192));
@@ -117,9 +118,9 @@ MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, w
"This version of %s is not compatible with currently installed configuration bundles.\n"
"This probably happened as a result of running an older %s after using a newer one.\n\n"
- "You may either exit Slic3r and try again with a newer version, or you may re-run the initial configuration. "
- "Doing so will create a backup snapshot of the existing configuration before installing files compatible with this Slic3r.\n"
- )), SLIC3R_APP_NAME, SLIC3R_APP_NAME));
+ "You may either exit %s and try again with a newer version, or you may re-run the initial configuration. "
+ "Doing so will create a backup snapshot of the existing configuration before installing files compatible with this %s.\n"
+ )), SLIC3R_APP_NAME, SLIC3R_APP_NAME, SLIC3R_APP_NAME, SLIC3R_APP_NAME));
text->Wrap(CONTENT_WIDTH * wxGetApp().em_unit());
content_sizer->Add(text);
@@ -144,7 +145,7 @@ MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, w
content_sizer->Add(versions);
content_sizer->AddSpacer(2*VERT_SPACING);
- auto *btn_exit = new wxButton(this, wxID_EXIT, _(L("Exit Slic3r")));
+ auto *btn_exit = new wxButton(this, wxID_EXIT, wxString::Format(_(L("Exit %s")), SLIC3R_APP_NAME));
btn_sizer->Add(btn_exit);
btn_sizer->AddSpacer(HORIZ_SPACING);
auto *btn_reconf = new wxButton(this, wxID_REPLACE, _(L("Re-configure")));
@@ -187,7 +188,7 @@ MsgDataLegacy::MsgDataLegacy() :
auto *text2 = new wxStaticText(this, wxID_ANY, _(L("For more information please visit our wiki page:")));
static const wxString url("https://github.com/prusa3d/Slic3r/wiki/Slic3r-PE-1.40-configuration-update");
// The wiki page name is intentionally not localized:
- auto *link = new wxHyperlinkCtrl(this, wxID_ANY, "Slic3r PE 1.40 configuration update", CONFIG_UPDATE_WIKI_URL);
+ auto *link = new wxHyperlinkCtrl(this, wxID_ANY, wxString::Format("%s 1.40 configuration update", SLIC3R_APP_NAME), CONFIG_UPDATE_WIKI_URL);
content_sizer->Add(text2);
content_sizer->Add(link);
content_sizer->AddSpacer(VERT_SPACING);
diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp
index c0390d1a2..d76e0da93 100644
--- a/src/slic3r/GUI/wxExtensions.cpp
+++ b/src/slic3r/GUI/wxExtensions.cpp
@@ -18,6 +18,7 @@
#include "GUI_ObjectList.hpp"
#include "libslic3r/GCode/PreviewData.hpp"
#include "I18N.hpp"
+#include "GUI_Utils.hpp"
using Slic3r::GUI::from_u8;
@@ -266,160 +267,45 @@ void wxDataViewTreeCtrlComboPopup::OnDataViewTreeCtrlSelection(wxCommandEvent& e
cmb->SetText(selected);
}
-// ----------------------------------------------------------------------------
-// *** PrusaCollapsiblePane ***
-// ----------------------------------------------------------------------------
-void PrusaCollapsiblePane::OnStateChange(const wxSize& sz)
-{
-#ifdef __WXOSX__
- wxCollapsiblePane::OnStateChange(sz);
-#else
- SetSize(sz);
-
- if (this->HasFlag(wxCP_NO_TLW_RESIZE))
- {
- // the user asked to explicitly handle the resizing itself...
- return;
- }
-
- auto top = GetParent(); //right_panel
- if (!top)
- return;
-
- wxSizer *sizer = top->GetSizer();
- if (!sizer)
- return;
-
- const wxSize newBestSize = sizer->ComputeFittingClientSize(top);
- top->SetMinClientSize(newBestSize);
-
- wxWindowUpdateLocker noUpdates_p(top->GetParent());
- // we shouldn't attempt to resize a maximized window, whatever happens
- // if (!top->IsMaximized())
- // top->SetClientSize(newBestSize);
- top->GetParent()->Layout();
- top->Refresh();
-#endif //__WXOSX__
-}
-
-// ----------------------------------------------------------------------------
-// *** PrusaCollapsiblePaneMSW *** used only #ifdef __WXMSW__
-// ----------------------------------------------------------------------------
-#ifdef __WXMSW__
-bool PrusaCollapsiblePaneMSW::Create(wxWindow *parent, wxWindowID id, const wxString& label,
- const wxPoint& pos, const wxSize& size, long style, const wxValidator& val, const wxString& name)
-{
- if (!wxControl::Create(parent, id, pos, size, style, val, name))
- return false;
- // m_pStaticLine = NULL;
- m_strLabel = label;
-
- // sizer containing the expand button and possibly a static line
- m_sz = new wxBoxSizer(wxHORIZONTAL);
-
- m_bmp_close.LoadFile(Slic3r::GUI::from_u8(Slic3r::var("disclosure_triangle_close.png")), wxBITMAP_TYPE_PNG);
- m_bmp_open.LoadFile(Slic3r::GUI::from_u8(Slic3r::var("disclosure_triangle_open.png")), wxBITMAP_TYPE_PNG);
-
- m_pDisclosureTriangleButton = new wxButton(this, wxID_ANY, m_strLabel, wxPoint(0, 0),
- wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
- UpdateBtnBmp();
- m_pDisclosureTriangleButton->Bind(wxEVT_BUTTON, [this](wxCommandEvent& event)
- {
- if (event.GetEventObject() != m_pDisclosureTriangleButton)
- {
- event.Skip();
- return;
- }
-
- Collapse(!IsCollapsed());
-
- // this change was generated by the user - send the event
- wxCollapsiblePaneEvent ev(this, GetId(), IsCollapsed());
- GetEventHandler()->ProcessEvent(ev);
- });
-
- m_sz->Add(m_pDisclosureTriangleButton, 0, wxLEFT | wxTOP | wxBOTTOM, GetBorder());
-
- // do not set sz as our sizers since we handle the pane window without using sizers
- m_pPane = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
- wxTAB_TRAVERSAL | wxNO_BORDER, wxT("wxCollapsiblePanePane"));
-
- wxColour&& clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
- m_pDisclosureTriangleButton->SetBackgroundColour(clr);
- this->SetBackgroundColour(clr);
- m_pPane->SetBackgroundColour(clr);
-
- // start as collapsed:
- m_pPane->Hide();
-
- return true;
-}
-
-void PrusaCollapsiblePaneMSW::UpdateBtnBmp()
-{
- if (IsCollapsed())
- m_pDisclosureTriangleButton->SetBitmap(m_bmp_close);
- else{
- m_pDisclosureTriangleButton->SetBitmap(m_bmp_open);
- // To updating button bitmap it's needed to lost focus on this button, so
- // we set focus to mainframe
- //GetParent()->GetParent()->GetParent()->SetFocus();
- //or to pane
- GetPane()->SetFocus();
- }
- Layout();
-}
-
-void PrusaCollapsiblePaneMSW::SetLabel(const wxString &label)
+// edit tooltip : change Slic3r to SLIC3R_APP_KEY
+// Temporary workaround for localization
+void edit_tooltip(wxString& tooltip)
{
- m_strLabel = label;
- m_pDisclosureTriangleButton->SetLabel(m_strLabel);
- Layout();
+ tooltip.Replace("Slic3r", SLIC3R_APP_KEY, true);
}
-bool PrusaCollapsiblePaneMSW::Layout()
+/* Function for rescale of buttons in Dialog under MSW if dpi is changed.
+ * btn_ids - vector of buttons identifiers
+ */
+void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector<int>& btn_ids)
{
- if (!m_pDisclosureTriangleButton || !m_pPane || !m_sz)
- return false; // we need to complete the creation first!
-
- wxSize oursz(GetSize());
+ const wxSize& btn_size = wxSize(-1, int(2.5f * em_unit + 0.5f));
- // move & resize the button and the static line
- m_sz->SetDimension(0, 0, oursz.GetWidth(), m_sz->GetMinSize().GetHeight());
- m_sz->Layout();
-
- if (IsExpanded())
- {
- // move & resize the container window
- int yoffset = m_sz->GetSize().GetHeight() + GetBorder();
- m_pPane->SetSize(0, yoffset,
- oursz.x, oursz.y - yoffset);
-
- // this is very important to make the pane window layout show correctly
- m_pPane->Layout();
- }
-
- return true;
+ for (int btn_id : btn_ids) {
+ // There is a case [FirmwareDialog], when we have wxControl instead of wxButton
+ // so let casting everything to the wxControl
+ wxControl* btn = static_cast<wxControl*>(dlg->FindWindowById(btn_id, dlg));
+ if (btn)
+ btn->SetMinSize(btn_size);
+ }
}
-void PrusaCollapsiblePaneMSW::Collapse(bool collapse)
+/* Function for getting of em_unit value from correct parent.
+ * In most of cases it is m_em_unit value from GUI_App,
+ * but for DPIDialogs it's its own value.
+ * This value will be used to correct rescale after moving between
+ * Displays with different HDPI */
+int em_unit(wxWindow* win)
{
- // optimization
- if (IsCollapsed() == collapse)
- return;
-
- InvalidateBestSize();
-
- // update our state
- m_pPane->Show(!collapse);
-
- // update button bitmap
- UpdateBtnBmp();
-
- OnStateChange(GetBestSize());
+ if (win)
+ {
+ Slic3r::GUI::DPIDialog* dlg = dynamic_cast<Slic3r::GUI::DPIDialog*>(Slic3r::GUI::find_toplevel_parent(win));
+ if (dlg)
+ return dlg->em_unit();
+ }
+
+ return Slic3r::GUI::wxGetApp().em_unit();
}
-#endif //__WXMSW__
-
// If an icon has horizontal orientation (width > height) call this function with is_horizontal = true
wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, const int px_cnt/* = 16*/, const bool is_horizontal /* = false*/)
@@ -436,7 +322,7 @@ wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, con
unsigned int height, width = height = 0;
unsigned int& scale_base = is_horizontal ? width : height;
- scale_base = (unsigned int)(Slic3r::GUI::wxGetApp().em_unit() * px_cnt * 0.1f + 0.5f);
+ scale_base = (unsigned int)(em_unit(win) * px_cnt * 0.1f + 0.5f);
std::string bmp_name = bmp_name_in;
boost::replace_last(bmp_name, ".png", "");
@@ -457,58 +343,76 @@ wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, con
// *****************************************************************************
// ----------------------------------------------------------------------------
-// PrusaObjectDataViewModelNode
+// ObjectDataViewModelNode
// ----------------------------------------------------------------------------
-void PrusaObjectDataViewModelNode::set_object_action_icon() {
- m_action_icon = create_scaled_bitmap(nullptr, "advanced_plus"); // FIXME: pass window ptr
-}
-void PrusaObjectDataViewModelNode::set_part_action_icon() {
- m_action_icon = create_scaled_bitmap(nullptr, m_type == itVolume ? "cog" : "set_separate_obj"); // FIXME: pass window ptr
+void ObjectDataViewModelNode::set_action_icon()
+{
+ m_action_icon_name = m_type == itObject ? "advanced_plus" :
+ m_type == itVolume ? "cog" : "set_separate_obj";
+ m_action_icon = create_scaled_bitmap(nullptr, m_action_icon_name); // FIXME: pass window ptr
}
Slic3r::GUI::BitmapCache *m_bitmap_cache = nullptr;
-bool PrusaObjectDataViewModelNode::update_settings_digest(const std::vector<std::string>& categories)
+void ObjectDataViewModelNode::update_settings_digest_bitmaps()
{
- if (m_type != itSettings || m_opt_categories == categories)
- return false;
-
- m_opt_categories = categories;
- m_name = wxEmptyString;
m_bmp = m_empty_bmp;
std::map<std::string, wxBitmap>& categories_icon = Slic3r::GUI::wxGetApp().obj_list()->CATEGORY_ICON;
- for (auto& cat : m_opt_categories)
- m_name += cat + "; ";
- if (!m_name.IsEmpty())
- m_name.erase(m_name.Length()-2, 2); // Delete last "; "
+ std::string scaled_bitmap_name = m_name.ToUTF8().data();
+ scaled_bitmap_name += "-em" + std::to_string(Slic3r::GUI::wxGetApp().em_unit());
- wxBitmap *bmp = m_bitmap_cache->find(m_name.ToUTF8().data());
+ wxBitmap *bmp = m_bitmap_cache->find(scaled_bitmap_name);
if (bmp == nullptr) {
std::vector<wxBitmap> bmps;
for (auto& cat : m_opt_categories)
- bmps.emplace_back(categories_icon.find(cat) == categories_icon.end() ?
- wxNullBitmap : categories_icon.at(cat));
- bmp = m_bitmap_cache->insert(m_name.ToUTF8().data(), bmps);
+ bmps.emplace_back( categories_icon.find(cat) == categories_icon.end() ?
+ wxNullBitmap : categories_icon.at(cat));
+ bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps);
}
m_bmp = *bmp;
+}
+
+bool ObjectDataViewModelNode::update_settings_digest(const std::vector<std::string>& categories)
+{
+ if (m_type != itSettings || m_opt_categories == categories)
+ return false;
+
+ m_opt_categories = categories;
+ m_name = wxEmptyString;
+
+ for (auto& cat : m_opt_categories)
+ m_name += cat + "; ";
+ if (!m_name.IsEmpty())
+ m_name.erase(m_name.Length()-2, 2); // Delete last "; "
+
+ update_settings_digest_bitmaps();
return true;
}
+void ObjectDataViewModelNode::msw_rescale()
+{
+ if (!m_action_icon_name.empty())
+ m_action_icon = create_scaled_bitmap(nullptr, m_action_icon_name);
+
+ if (!m_opt_categories.empty())
+ update_settings_digest_bitmaps();
+}
+
// *****************************************************************************
// ----------------------------------------------------------------------------
-// PrusaObjectDataViewModel
+// ObjectDataViewModel
// ----------------------------------------------------------------------------
-PrusaObjectDataViewModel::PrusaObjectDataViewModel()
+ObjectDataViewModel::ObjectDataViewModel()
{
m_bitmap_cache = new Slic3r::GUI::BitmapCache;
}
-PrusaObjectDataViewModel::~PrusaObjectDataViewModel()
+ObjectDataViewModel::~ObjectDataViewModel()
{
for (auto object : m_objects)
delete object;
@@ -516,10 +420,10 @@ PrusaObjectDataViewModel::~PrusaObjectDataViewModel()
m_bitmap_cache = nullptr;
}
-wxDataViewItem PrusaObjectDataViewModel::Add(const wxString &name, const int extruder)
+wxDataViewItem ObjectDataViewModel::Add(const wxString &name, const int extruder)
{
const wxString extruder_str = extruder == 0 ? "default" : wxString::Format("%d", extruder);
- auto root = new PrusaObjectDataViewModelNode(name, extruder_str);
+ auto root = new ObjectDataViewModelNode(name, extruder_str);
m_objects.push_back(root);
// notify control
wxDataViewItem child((void*)root);
@@ -528,13 +432,13 @@ wxDataViewItem PrusaObjectDataViewModel::Add(const wxString &name, const int ext
return child;
}
-wxDataViewItem PrusaObjectDataViewModel::AddVolumeChild(const wxDataViewItem &parent_item,
- const wxString &name,
- const Slic3r::ModelVolumeType volume_type,
- const int extruder/* = 0*/,
- const bool create_frst_child/* = true*/)
+wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent_item,
+ const wxString &name,
+ const Slic3r::ModelVolumeType volume_type,
+ const int extruder/* = 0*/,
+ const bool create_frst_child/* = true*/)
{
- PrusaObjectDataViewModelNode *root = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+ ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent_item.GetID();
if (!root) return wxDataViewItem(0);
wxString extruder_str = extruder == 0 ? "default" : wxString::Format("%d", extruder);
@@ -546,7 +450,7 @@ wxDataViewItem PrusaObjectDataViewModel::AddVolumeChild(const wxDataViewItem &pa
if (create_frst_child && root->m_volumes_cnt == 0)
{
- const auto node = new PrusaObjectDataViewModelNode(root, root->m_name, *m_volume_bmps[0], extruder_str, 0);
+ const auto node = new ObjectDataViewModelNode(root, root->m_name, *m_volume_bmps[0], extruder_str, 0);
insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position);
// notify control
const wxDataViewItem child((void*)node);
@@ -554,24 +458,28 @@ wxDataViewItem PrusaObjectDataViewModel::AddVolumeChild(const wxDataViewItem &pa
root->m_volumes_cnt++;
if (insert_position > 0) insert_position++;
+
+ node->m_volume_type = volume_type;
}
- const auto node = new PrusaObjectDataViewModelNode(root, name, *m_volume_bmps[int(volume_type)], extruder_str, root->m_volumes_cnt);
+ const auto node = new ObjectDataViewModelNode(root, name, *m_volume_bmps[int(volume_type)], extruder_str, root->m_volumes_cnt);
insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position);
// notify control
const wxDataViewItem child((void*)node);
ItemAdded(parent_item, child);
root->m_volumes_cnt++;
+ node->m_volume_type = volume_type;
+
return child;
}
-wxDataViewItem PrusaObjectDataViewModel::AddSettingsChild(const wxDataViewItem &parent_item)
+wxDataViewItem ObjectDataViewModel::AddSettingsChild(const wxDataViewItem &parent_item)
{
- PrusaObjectDataViewModelNode *root = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+ ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent_item.GetID();
if (!root) return wxDataViewItem(0);
- const auto node = new PrusaObjectDataViewModelNode(root, itSettings);
+ const auto node = new ObjectDataViewModelNode(root, itSettings);
root->Insert(node, 0);
// notify control
const wxDataViewItem child((void*)node);
@@ -579,27 +487,27 @@ wxDataViewItem PrusaObjectDataViewModel::AddSettingsChild(const wxDataViewItem &
return child;
}
-int get_istances_root_idx(PrusaObjectDataViewModelNode *parent_node)
+int get_istances_root_idx(ObjectDataViewModelNode *parent_node)
{
// because of istance_root is a last item of the object
const int inst_root_idx = parent_node->GetChildCount()-1;
- if (inst_root_idx < 0 || parent_node->GetNthChild(inst_root_idx)->m_type == itInstanceRoot)
+ if (inst_root_idx < 0 || parent_node->GetNthChild(inst_root_idx)->GetType() == itInstanceRoot)
return inst_root_idx;
return -1;
}
-wxDataViewItem PrusaObjectDataViewModel::AddInstanceChild(const wxDataViewItem &parent_item, size_t num)
+wxDataViewItem ObjectDataViewModel::AddInstanceChild(const wxDataViewItem &parent_item, size_t num)
{
- PrusaObjectDataViewModelNode *parent_node = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+ ObjectDataViewModelNode *parent_node = (ObjectDataViewModelNode*)parent_item.GetID();
if (!parent_node) return wxDataViewItem(0);
// Check and create/get instances root node
const int inst_root_id = get_istances_root_idx(parent_node);
- PrusaObjectDataViewModelNode *inst_root_node = inst_root_id < 0 ?
- new PrusaObjectDataViewModelNode(parent_node, itInstanceRoot) :
+ ObjectDataViewModelNode *inst_root_node = inst_root_id < 0 ?
+ new ObjectDataViewModelNode(parent_node, itInstanceRoot) :
parent_node->GetNthChild(inst_root_id);
const wxDataViewItem inst_root_item((void*)inst_root_node);
@@ -611,10 +519,10 @@ wxDataViewItem PrusaObjectDataViewModel::AddInstanceChild(const wxDataViewItem &
}
// Add instance nodes
- PrusaObjectDataViewModelNode *instance_node = nullptr;
+ ObjectDataViewModelNode *instance_node = nullptr;
size_t counter = 0;
while (counter < num) {
- instance_node = new PrusaObjectDataViewModelNode(inst_root_node, itInstance);
+ instance_node = new ObjectDataViewModelNode(inst_root_node, itInstance);
inst_root_node->Append(instance_node);
// notify control
const wxDataViewItem instance_item((void*)instance_node);
@@ -625,10 +533,10 @@ wxDataViewItem PrusaObjectDataViewModel::AddInstanceChild(const wxDataViewItem &
return wxDataViewItem((void*)instance_node);
}
-wxDataViewItem PrusaObjectDataViewModel::Delete(const wxDataViewItem &item)
+wxDataViewItem ObjectDataViewModel::Delete(const wxDataViewItem &item)
{
auto ret_item = wxDataViewItem(0);
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
if (!node) // happens if item.IsOk()==false
return ret_item;
@@ -676,12 +584,12 @@ wxDataViewItem PrusaObjectDataViewModel::Delete(const wxDataViewItem &item)
delete node;
ItemDeleted(parent, item);
- PrusaObjectDataViewModelNode *last_instance_node = node_parent->GetNthChild(0);
+ ObjectDataViewModelNode *last_instance_node = node_parent->GetNthChild(0);
node_parent->GetChildren().Remove(last_instance_node);
delete last_instance_node;
ItemDeleted(parent, wxDataViewItem(last_instance_node));
- PrusaObjectDataViewModelNode *obj_node = node_parent->GetParent();
+ ObjectDataViewModelNode *obj_node = node_parent->GetParent();
obj_node->GetChildren().Remove(node_parent);
delete node_parent;
ret_item = wxDataViewItem(obj_node);
@@ -712,7 +620,7 @@ wxDataViewItem PrusaObjectDataViewModel::Delete(const wxDataViewItem &item)
delete node;
ItemDeleted(parent, item);
- PrusaObjectDataViewModelNode *last_child_node = node_parent->GetNthChild(vol_idx);
+ ObjectDataViewModelNode *last_child_node = node_parent->GetNthChild(vol_idx);
DeleteSettings(wxDataViewItem(last_child_node));
node_parent->GetChildren().Remove(last_child_node);
node_parent->m_volumes_cnt = 0;
@@ -771,17 +679,17 @@ wxDataViewItem PrusaObjectDataViewModel::Delete(const wxDataViewItem &item)
return ret_item;
}
-wxDataViewItem PrusaObjectDataViewModel::DeleteLastInstance(const wxDataViewItem &parent_item, size_t num)
+wxDataViewItem ObjectDataViewModel::DeleteLastInstance(const wxDataViewItem &parent_item, size_t num)
{
auto ret_item = wxDataViewItem(0);
- PrusaObjectDataViewModelNode *parent_node = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+ ObjectDataViewModelNode *parent_node = (ObjectDataViewModelNode*)parent_item.GetID();
if (!parent_node) return ret_item;
const int inst_root_id = get_istances_root_idx(parent_node);
if (inst_root_id < 0) return ret_item;
wxDataViewItemArray items;
- PrusaObjectDataViewModelNode *inst_root_node = parent_node->GetNthChild(inst_root_id);
+ ObjectDataViewModelNode *inst_root_node = parent_node->GetNthChild(inst_root_id);
const wxDataViewItem inst_root_item((void*)inst_root_node);
const int inst_cnt = inst_root_node->GetChildCount();
@@ -789,7 +697,7 @@ wxDataViewItem PrusaObjectDataViewModel::DeleteLastInstance(const wxDataViewItem
int stop = delete_inst_root_item ? 0 : inst_cnt - num;
for (int i = inst_cnt - 1; i >= stop;--i) {
- PrusaObjectDataViewModelNode *last_instance_node = inst_root_node->GetNthChild(i);
+ ObjectDataViewModelNode *last_instance_node = inst_root_node->GetNthChild(i);
inst_root_node->GetChildren().Remove(last_instance_node);
delete last_instance_node;
ItemDeleted(inst_root_item, wxDataViewItem(last_instance_node));
@@ -808,7 +716,7 @@ wxDataViewItem PrusaObjectDataViewModel::DeleteLastInstance(const wxDataViewItem
return ret_item;
}
-void PrusaObjectDataViewModel::DeleteAll()
+void ObjectDataViewModel::DeleteAll()
{
while (!m_objects.empty())
{
@@ -818,9 +726,9 @@ void PrusaObjectDataViewModel::DeleteAll()
}
}
-void PrusaObjectDataViewModel::DeleteChildren(wxDataViewItem& parent)
+void ObjectDataViewModel::DeleteChildren(wxDataViewItem& parent)
{
- PrusaObjectDataViewModelNode *root = (PrusaObjectDataViewModelNode*)parent.GetID();
+ ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent.GetID();
if (!root) // happens if item.IsOk()==false
return;
@@ -850,9 +758,9 @@ void PrusaObjectDataViewModel::DeleteChildren(wxDataViewItem& parent)
#endif //__WXGTK__
}
-void PrusaObjectDataViewModel::DeleteVolumeChildren(wxDataViewItem& parent)
+void ObjectDataViewModel::DeleteVolumeChildren(wxDataViewItem& parent)
{
- PrusaObjectDataViewModelNode *root = (PrusaObjectDataViewModelNode*)parent.GetID();
+ ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent.GetID();
if (!root) // happens if item.IsOk()==false
return;
@@ -884,9 +792,9 @@ void PrusaObjectDataViewModel::DeleteVolumeChildren(wxDataViewItem& parent)
#endif //__WXGTK__
}
-void PrusaObjectDataViewModel::DeleteSettings(const wxDataViewItem& parent)
+void ObjectDataViewModel::DeleteSettings(const wxDataViewItem& parent)
{
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)parent.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID();
if (!node) return;
// if volume has a "settings"item, than delete it before volume deleting
@@ -899,7 +807,7 @@ void PrusaObjectDataViewModel::DeleteSettings(const wxDataViewItem& parent)
}
}
-wxDataViewItem PrusaObjectDataViewModel::GetItemById(int obj_idx)
+wxDataViewItem ObjectDataViewModel::GetItemById(int obj_idx)
{
if (obj_idx >= m_objects.size())
{
@@ -910,7 +818,7 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemById(int obj_idx)
}
-wxDataViewItem PrusaObjectDataViewModel::GetItemByVolumeId(int obj_idx, int volume_idx)
+wxDataViewItem ObjectDataViewModel::GetItemByVolumeId(int obj_idx, int volume_idx)
{
if (obj_idx >= m_objects.size() || obj_idx < 0) {
printf("Error! Out of objects range.\n");
@@ -934,7 +842,7 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemByVolumeId(int obj_idx, int volu
return wxDataViewItem(0);
}
-wxDataViewItem PrusaObjectDataViewModel::GetItemByInstanceId(int obj_idx, int inst_idx)
+wxDataViewItem ObjectDataViewModel::GetItemByInstanceId(int obj_idx, int inst_idx)
{
if (obj_idx >= m_objects.size() || obj_idx < 0) {
printf("Error! Out of objects range.\n");
@@ -945,7 +853,7 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemByInstanceId(int obj_idx, int in
if (!instances_item)
return wxDataViewItem(0);
- auto parent = (PrusaObjectDataViewModelNode*)instances_item.GetID();;
+ auto parent = (ObjectDataViewModelNode*)instances_item.GetID();;
for (size_t i = 0; i < parent->GetChildCount(); i++)
if (parent->GetNthChild(i)->m_idx == inst_idx)
return wxDataViewItem(parent->GetNthChild(i));
@@ -953,11 +861,11 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemByInstanceId(int obj_idx, int in
return wxDataViewItem(0);
}
-int PrusaObjectDataViewModel::GetIdByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetIdByItem(const wxDataViewItem& item) const
{
wxASSERT(item.IsOk());
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
auto it = find(m_objects.begin(), m_objects.end(), node);
if (it == m_objects.end())
return -1;
@@ -965,44 +873,44 @@ int PrusaObjectDataViewModel::GetIdByItem(const wxDataViewItem& item) const
return it - m_objects.begin();
}
-int PrusaObjectDataViewModel::GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const
+int ObjectDataViewModel::GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const
{
wxASSERT(item.IsOk());
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
if (!node || node->m_type != type)
return -1;
return node->GetIdx();
}
-int PrusaObjectDataViewModel::GetObjectIdByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetObjectIdByItem(const wxDataViewItem& item) const
{
return GetIdByItem(GetTopParent(item));
}
-int PrusaObjectDataViewModel::GetVolumeIdByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetVolumeIdByItem(const wxDataViewItem& item) const
{
return GetIdByItemAndType(item, itVolume);
}
-int PrusaObjectDataViewModel::GetInstanceIdByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetInstanceIdByItem(const wxDataViewItem& item) const
{
return GetIdByItemAndType(item, itInstance);
}
-void PrusaObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx)
+void ObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx)
{
wxASSERT(item.IsOk());
type = itUndef;
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
if (!node || node->GetIdx() <-1 || node->GetIdx() ==-1 && !(node->GetType() & (itObject | itSettings | itInstanceRoot)))
return;
idx = node->GetIdx();
type = node->GetType();
- PrusaObjectDataViewModelNode *parent_node = node->GetParent();
+ ObjectDataViewModelNode *parent_node = node->GetParent();
if (!parent_node) return;
if (type == itInstance)
parent_node = node->GetParent()->GetParent();
@@ -1015,7 +923,7 @@ void PrusaObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType&
type = itUndef;
}
-int PrusaObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const
{
if (m_objects.empty())
return -1;
@@ -1031,7 +939,7 @@ int PrusaObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const
for (int j = 0; j < m_objects[i]->GetChildCount(); j++)
{
row_num++;
- PrusaObjectDataViewModelNode* cur_node = m_objects[i]->GetNthChild(j);
+ ObjectDataViewModelNode* cur_node = m_objects[i]->GetNthChild(j);
if (item == wxDataViewItem(cur_node))
return row_num;
@@ -1053,30 +961,30 @@ int PrusaObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const
return -1;
}
-wxString PrusaObjectDataViewModel::GetName(const wxDataViewItem &item) const
+wxString ObjectDataViewModel::GetName(const wxDataViewItem &item) const
{
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
if (!node) // happens if item.IsOk()==false
return wxEmptyString;
return node->m_name;
}
-wxBitmap& PrusaObjectDataViewModel::GetBitmap(const wxDataViewItem &item) const
+wxBitmap& ObjectDataViewModel::GetBitmap(const wxDataViewItem &item) const
{
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
return node->m_bmp;
}
-void PrusaObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &item, unsigned int col) const
+void ObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &item, unsigned int col) const
{
wxASSERT(item.IsOk());
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
switch (col)
{
case 0:
- variant << PrusaDataViewBitmapText(node->m_name, node->m_bmp);
+ variant << DataViewBitmapText(node->m_name, node->m_bmp);
break;
case 1:
variant = node->m_extruder;
@@ -1089,83 +997,37 @@ void PrusaObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem
}
}
-bool PrusaObjectDataViewModel::SetValue(const wxVariant &variant, const wxDataViewItem &item, unsigned int col)
+bool ObjectDataViewModel::SetValue(const wxVariant &variant, const wxDataViewItem &item, unsigned int col)
{
wxASSERT(item.IsOk());
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
return node->SetValue(variant, col);
}
-bool PrusaObjectDataViewModel::SetValue(const wxVariant &variant, const int item_idx, unsigned int col)
+bool ObjectDataViewModel::SetValue(const wxVariant &variant, const int item_idx, unsigned int col)
{
if (item_idx < 0 || item_idx >= m_objects.size())
return false;
return m_objects[item_idx]->SetValue(variant, col);
}
-/*
-wxDataViewItem PrusaObjectDataViewModel::MoveChildUp(const wxDataViewItem &item)
-{
- auto ret_item = wxDataViewItem(0);
- wxASSERT(item.IsOk());
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
- if (!node) // happens if item.IsOk()==false
- return ret_item;
- auto node_parent = node->GetParent();
- if (!node_parent) // If isn't part, but object
- return ret_item;
-
- auto volume_id = node->GetVolumeId();
- if (0 < volume_id && volume_id < node_parent->GetChildCount()) {
- node_parent->SwapChildrens(volume_id - 1, volume_id);
- ret_item = wxDataViewItem(node_parent->GetNthChild(volume_id - 1));
- ItemChanged(item);
- ItemChanged(ret_item);
- }
- else
- ret_item = wxDataViewItem(node_parent->GetNthChild(0));
- return ret_item;
-}
-
-wxDataViewItem PrusaObjectDataViewModel::MoveChildDown(const wxDataViewItem &item)
-{
- auto ret_item = wxDataViewItem(0);
- wxASSERT(item.IsOk());
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
- if (!node) // happens if item.IsOk()==false
- return ret_item;
-
- auto node_parent = node->GetParent();
- if (!node_parent) // If isn't part, but object
- return ret_item;
-
- auto volume_id = node->GetVolumeId();
- if (0 <= volume_id && volume_id+1 < node_parent->GetChildCount()) {
- node_parent->SwapChildrens(volume_id + 1, volume_id);
- ret_item = wxDataViewItem(node_parent->GetNthChild(volume_id + 1));
- ItemChanged(item);
- ItemChanged(ret_item);
- }
- else
- ret_item = wxDataViewItem(node_parent->GetNthChild(node_parent->GetChildCount()-1));
- return ret_item;
-}
-*/
-wxDataViewItem PrusaObjectDataViewModel::ReorganizeChildren(int current_volume_id, int new_volume_id, const wxDataViewItem &parent)
+wxDataViewItem ObjectDataViewModel::ReorganizeChildren( const int current_volume_id,
+ const int new_volume_id,
+ const wxDataViewItem &parent)
{
auto ret_item = wxDataViewItem(0);
if (current_volume_id == new_volume_id)
return ret_item;
wxASSERT(parent.IsOk());
- PrusaObjectDataViewModelNode *node_parent = (PrusaObjectDataViewModelNode*)parent.GetID();
+ ObjectDataViewModelNode *node_parent = (ObjectDataViewModelNode*)parent.GetID();
if (!node_parent) // happens if item.IsOk()==false
return ret_item;
const size_t shift = node_parent->GetChildren().Item(0)->m_type == itSettings ? 1 : 0;
- PrusaObjectDataViewModelNode *deleted_node = node_parent->GetNthChild(current_volume_id+shift);
+ ObjectDataViewModelNode *deleted_node = node_parent->GetNthChild(current_volume_id+shift);
node_parent->GetChildren().Remove(deleted_node);
ItemDeleted(parent, wxDataViewItem(deleted_node));
node_parent->Insert(deleted_node, new_volume_id+shift);
@@ -1184,22 +1046,22 @@ wxDataViewItem PrusaObjectDataViewModel::ReorganizeChildren(int current_volume_i
return wxDataViewItem(node_parent->GetNthChild(new_volume_id+shift));
}
-bool PrusaObjectDataViewModel::IsEnabled(const wxDataViewItem &item, unsigned int col) const
+bool ObjectDataViewModel::IsEnabled(const wxDataViewItem &item, unsigned int col) const
{
wxASSERT(item.IsOk());
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
// disable extruder selection for the non "itObject|itVolume" item
return !(col == 1 && node->m_extruder.IsEmpty());
}
-wxDataViewItem PrusaObjectDataViewModel::GetParent(const wxDataViewItem &item) const
+wxDataViewItem ObjectDataViewModel::GetParent(const wxDataViewItem &item) const
{
// the invisible root node has no parent
if (!item.IsOk())
return wxDataViewItem(0);
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
// objects nodes has no parent too
if (node->m_type == itObject)
@@ -1208,17 +1070,17 @@ wxDataViewItem PrusaObjectDataViewModel::GetParent(const wxDataViewItem &item) c
return wxDataViewItem((void*)node->GetParent());
}
-wxDataViewItem PrusaObjectDataViewModel::GetTopParent(const wxDataViewItem &item) const
+wxDataViewItem ObjectDataViewModel::GetTopParent(const wxDataViewItem &item) const
{
// the invisible root node has no parent
if (!item.IsOk())
return wxDataViewItem(0);
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
if (node->m_type == itObject)
return item;
- PrusaObjectDataViewModelNode *parent_node = node->GetParent();
+ ObjectDataViewModelNode *parent_node = node->GetParent();
while (parent_node->m_type != itObject)
{
node = parent_node;
@@ -1228,19 +1090,19 @@ wxDataViewItem PrusaObjectDataViewModel::GetTopParent(const wxDataViewItem &item
return wxDataViewItem((void*)parent_node);
}
-bool PrusaObjectDataViewModel::IsContainer(const wxDataViewItem &item) const
+bool ObjectDataViewModel::IsContainer(const wxDataViewItem &item) const
{
// the invisible root node can have children
if (!item.IsOk())
return true;
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
return node->IsContainer();
}
-unsigned int PrusaObjectDataViewModel::GetChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const
+unsigned int ObjectDataViewModel::GetChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const
{
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)parent.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID();
if (!node)
{
for (auto object : m_objects)
@@ -1256,16 +1118,16 @@ unsigned int PrusaObjectDataViewModel::GetChildren(const wxDataViewItem &parent,
unsigned int count = node->GetChildren().GetCount();
for (unsigned int pos = 0; pos < count; pos++)
{
- PrusaObjectDataViewModelNode *child = node->GetChildren().Item(pos);
+ ObjectDataViewModelNode *child = node->GetChildren().Item(pos);
array.Add(wxDataViewItem((void*)child));
}
return count;
}
-void PrusaObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const
+void ObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const
{
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)parent.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID();
if (!node) {
for (auto object : m_objects)
array.Add(wxDataViewItem((void*)object));
@@ -1275,7 +1137,7 @@ void PrusaObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDa
else {
const size_t count = node->GetChildren().GetCount();
for (size_t pos = 0; pos < count; pos++) {
- PrusaObjectDataViewModelNode *child = node->GetChildren().Item(pos);
+ ObjectDataViewModelNode *child = node->GetChildren().Item(pos);
array.Add(wxDataViewItem((void*)child));
}
}
@@ -1289,20 +1151,20 @@ void PrusaObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDa
}
}
-ItemType PrusaObjectDataViewModel::GetItemType(const wxDataViewItem &item) const
+ItemType ObjectDataViewModel::GetItemType(const wxDataViewItem &item) const
{
if (!item.IsOk())
return itUndef;
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
return node->m_type;
}
-wxDataViewItem PrusaObjectDataViewModel::GetItemByType(const wxDataViewItem &parent_item, ItemType type) const
+wxDataViewItem ObjectDataViewModel::GetItemByType(const wxDataViewItem &parent_item, ItemType type) const
{
if (!parent_item.IsOk())
return wxDataViewItem(0);
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent_item.GetID();
if (node->GetChildCount() == 0)
return wxDataViewItem(0);
@@ -1314,60 +1176,81 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemByType(const wxDataViewItem &par
return wxDataViewItem(0);
}
-wxDataViewItem PrusaObjectDataViewModel::GetSettingsItem(const wxDataViewItem &item) const
+wxDataViewItem ObjectDataViewModel::GetSettingsItem(const wxDataViewItem &item) const
{
return GetItemByType(item, itSettings);
}
-wxDataViewItem PrusaObjectDataViewModel::GetInstanceRootItem(const wxDataViewItem &item) const
+wxDataViewItem ObjectDataViewModel::GetInstanceRootItem(const wxDataViewItem &item) const
{
return GetItemByType(item, itInstanceRoot);
}
-bool PrusaObjectDataViewModel::IsSettingsItem(const wxDataViewItem &item) const
+bool ObjectDataViewModel::IsSettingsItem(const wxDataViewItem &item) const
{
if (!item.IsOk())
return false;
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
return node->m_type == itSettings;
}
-
-
-void PrusaObjectDataViewModel::UpdateSettingsDigest(const wxDataViewItem &item,
+void ObjectDataViewModel::UpdateSettingsDigest(const wxDataViewItem &item,
const std::vector<std::string>& categories)
{
if (!item.IsOk()) return;
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
if (!node->update_settings_digest(categories))
return;
ItemChanged(item);
}
-void PrusaObjectDataViewModel::SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type)
+void ObjectDataViewModel::SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type)
{
if (!item.IsOk() || GetItemType(item) != itVolume)
return;
- PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
node->SetBitmap(*m_volume_bmps[int(type)]);
ItemChanged(item);
}
+void ObjectDataViewModel::Rescale()
+{
+ wxDataViewItemArray all_items;
+ GetAllChildren(wxDataViewItem(0), all_items);
+
+ for (wxDataViewItem item : all_items)
+ {
+ if (!item.IsOk())
+ continue;
+
+ ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
+ node->msw_rescale();
+
+ if (node->m_type & itVolume)
+ node->m_bmp = *m_volume_bmps[node->volume_type()];
+
+ if (node->m_type & itObject && node->m_bmp.IsOk())
+ node->m_bmp = create_scaled_bitmap(nullptr, "exclamation");
+
+ ItemChanged(item);
+ }
+}
+
//-----------------------------------------------------------------------------
// PrusaDataViewBitmapText
//-----------------------------------------------------------------------------
-wxIMPLEMENT_DYNAMIC_CLASS(PrusaDataViewBitmapText, wxObject)
+wxIMPLEMENT_DYNAMIC_CLASS(DataViewBitmapText, wxObject)
-IMPLEMENT_VARIANT_OBJECT(PrusaDataViewBitmapText)
+IMPLEMENT_VARIANT_OBJECT(DataViewBitmapText)
// ---------------------------------------------------------
-// PrusaIconTextRenderer
+// BitmapTextRenderer
// ---------------------------------------------------------
#if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
-PrusaBitmapTextRenderer::PrusaBitmapTextRenderer(wxDataViewCellMode mode /*= wxDATAVIEW_CELL_EDITABLE*/,
+BitmapTextRenderer::BitmapTextRenderer(wxDataViewCellMode mode /*= wxDATAVIEW_CELL_EDITABLE*/,
int align /*= wxDVR_DEFAULT_ALIGNMENT*/):
wxDataViewRenderer(wxT("PrusaDataViewBitmapText"), mode, align)
{
@@ -1376,25 +1259,25 @@ wxDataViewRenderer(wxT("PrusaDataViewBitmapText"), mode, align)
}
#endif // ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
-bool PrusaBitmapTextRenderer::SetValue(const wxVariant &value)
+bool BitmapTextRenderer::SetValue(const wxVariant &value)
{
m_value << value;
return true;
}
-bool PrusaBitmapTextRenderer::GetValue(wxVariant& WXUNUSED(value)) const
+bool BitmapTextRenderer::GetValue(wxVariant& WXUNUSED(value)) const
{
return false;
}
#if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING && wxUSE_ACCESSIBILITY
-wxString PrusaBitmapTextRenderer::GetAccessibleDescription() const
+wxString BitmapTextRenderer::GetAccessibleDescription() const
{
return m_value.GetText();
}
#endif // wxUSE_ACCESSIBILITY && ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
-bool PrusaBitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state)
+bool BitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state)
{
int xoffset = 0;
@@ -1410,7 +1293,7 @@ bool PrusaBitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state)
return true;
}
-wxSize PrusaBitmapTextRenderer::GetSize() const
+wxSize BitmapTextRenderer::GetSize() const
{
if (!m_value.GetText().empty())
{
@@ -1424,15 +1307,15 @@ wxSize PrusaBitmapTextRenderer::GetSize() const
}
-wxWindow* PrusaBitmapTextRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelRect, const wxVariant& value)
+wxWindow* BitmapTextRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelRect, const wxVariant& value)
{
wxDataViewCtrl* const dv_ctrl = GetOwner()->GetOwner();
- PrusaObjectDataViewModel* const model = dynamic_cast<PrusaObjectDataViewModel*>(dv_ctrl->GetModel());
+ ObjectDataViewModel* const model = dynamic_cast<ObjectDataViewModel*>(dv_ctrl->GetModel());
if ( !(model->GetItemType(dv_ctrl->GetSelection()) & (itVolume | itObject)) )
return nullptr;
- PrusaDataViewBitmapText data;
+ DataViewBitmapText data;
data << value;
m_was_unusable_symbol = false;
@@ -1452,7 +1335,7 @@ wxWindow* PrusaBitmapTextRenderer::CreateEditorCtrl(wxWindow* parent, wxRect lab
return text_editor;
}
-bool PrusaBitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value)
+bool BitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value)
{
wxTextCtrl* text_editor = wxDynamicCast(ctrl, wxTextCtrl);
if (!text_editor || text_editor->GetValue().IsEmpty())
@@ -1471,7 +1354,7 @@ bool PrusaBitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant&
wxVariant valueOld;
GetView()->GetModel()->GetValue(valueOld, m_item, 0);
- PrusaDataViewBitmapText bmpText;
+ DataViewBitmapText bmpText;
bmpText << valueOld;
// But replace the text with the value entered by user.
@@ -1482,19 +1365,19 @@ bool PrusaBitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant&
}
// ----------------------------------------------------------------------------
-// PrusaDoubleSlider
+// DoubleSlider
// ----------------------------------------------------------------------------
-PrusaDoubleSlider::PrusaDoubleSlider(wxWindow *parent,
- wxWindowID id,
- int lowerValue,
- int higherValue,
- int minValue,
- int maxValue,
- const wxPoint& pos,
- const wxSize& size,
- long style,
- const wxValidator& val,
- const wxString& name) :
+DoubleSlider::DoubleSlider( wxWindow *parent,
+ wxWindowID id,
+ int lowerValue,
+ int higherValue,
+ int minValue,
+ int maxValue,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxValidator& val,
+ const wxString& name) :
wxControl(parent, id, pos, size, wxWANTS_CHARS | wxBORDER_NONE),
m_lower_value(lowerValue), m_higher_value (higherValue),
m_min_value(minValue), m_max_value(maxValue),
@@ -1506,39 +1389,39 @@ PrusaDoubleSlider::PrusaDoubleSlider(wxWindow *parent,
if (!is_osx)
SetDoubleBuffered(true);// SetDoubleBuffered exists on Win and Linux/GTK, but is missing on OSX
- m_bmp_thumb_higher = wxBitmap(style == wxSL_HORIZONTAL ? create_scaled_bitmap(this, "right_half_circle.png") : create_scaled_bitmap(this, "up_half_circle.png", 16, true));
- m_bmp_thumb_lower = wxBitmap(style == wxSL_HORIZONTAL ? create_scaled_bitmap(this, "left_half_circle.png" ) : create_scaled_bitmap(this, "down_half_circle.png", 16, true));
- m_thumb_size = m_bmp_thumb_lower.GetSize();
+ m_bmp_thumb_higher = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "right_half_circle.png") : ScalableBitmap(this, "up_half_circle.png", 16, true));
+ m_bmp_thumb_lower = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "left_half_circle.png" ) : ScalableBitmap(this, "down_half_circle.png", 16, true));
+ m_thumb_size = m_bmp_thumb_lower.bmp().GetSize();
- m_bmp_add_tick_on = create_scaled_bitmap(this, "colorchange_add_on.png");
- m_bmp_add_tick_off = create_scaled_bitmap(this, "colorchange_add_off.png");
- m_bmp_del_tick_on = create_scaled_bitmap(this, "colorchange_delete_on.png");
- m_bmp_del_tick_off = create_scaled_bitmap(this, "colorchange_delete_off.png");
- m_tick_icon_dim = m_bmp_add_tick_on.GetSize().x;
+ m_bmp_add_tick_on = ScalableBitmap(this, "colorchange_add_on.png");
+ m_bmp_add_tick_off = ScalableBitmap(this, "colorchange_add_off.png");
+ m_bmp_del_tick_on = ScalableBitmap(this, "colorchange_delete_on.png");
+ m_bmp_del_tick_off = ScalableBitmap(this, "colorchange_delete_off.png");
+ m_tick_icon_dim = m_bmp_add_tick_on.bmp().GetSize().x;
- m_bmp_one_layer_lock_on = create_scaled_bitmap(this, "one_layer_lock_on.png");
- m_bmp_one_layer_lock_off = create_scaled_bitmap(this, "one_layer_lock_off.png");
- m_bmp_one_layer_unlock_on = create_scaled_bitmap(this, "one_layer_unlock_on.png");
- m_bmp_one_layer_unlock_off = create_scaled_bitmap(this, "one_layer_unlock_off.png");
- m_lock_icon_dim = m_bmp_one_layer_lock_on.GetSize().x;
+ m_bmp_one_layer_lock_on = ScalableBitmap(this, "one_layer_lock_on.png");
+ m_bmp_one_layer_lock_off = ScalableBitmap(this, "one_layer_lock_off.png");
+ m_bmp_one_layer_unlock_on = ScalableBitmap(this, "one_layer_unlock_on.png");
+ m_bmp_one_layer_unlock_off = ScalableBitmap(this, "one_layer_unlock_off.png");
+ m_lock_icon_dim = m_bmp_one_layer_lock_on.bmp().GetSize().x;
m_selection = ssUndef;
// slider events
- Bind(wxEVT_PAINT, &PrusaDoubleSlider::OnPaint, this);
- Bind(wxEVT_LEFT_DOWN, &PrusaDoubleSlider::OnLeftDown, this);
- Bind(wxEVT_MOTION, &PrusaDoubleSlider::OnMotion, this);
- Bind(wxEVT_LEFT_UP, &PrusaDoubleSlider::OnLeftUp, this);
- Bind(wxEVT_MOUSEWHEEL, &PrusaDoubleSlider::OnWheel, this);
- Bind(wxEVT_ENTER_WINDOW,&PrusaDoubleSlider::OnEnterWin, this);
- Bind(wxEVT_LEAVE_WINDOW,&PrusaDoubleSlider::OnLeaveWin, this);
- Bind(wxEVT_KEY_DOWN, &PrusaDoubleSlider::OnKeyDown, this);
- Bind(wxEVT_KEY_UP, &PrusaDoubleSlider::OnKeyUp, this);
- Bind(wxEVT_RIGHT_DOWN, &PrusaDoubleSlider::OnRightDown,this);
- Bind(wxEVT_RIGHT_UP, &PrusaDoubleSlider::OnRightUp, this);
+ Bind(wxEVT_PAINT, &DoubleSlider::OnPaint, this);
+ Bind(wxEVT_LEFT_DOWN, &DoubleSlider::OnLeftDown, this);
+ Bind(wxEVT_MOTION, &DoubleSlider::OnMotion, this);
+ Bind(wxEVT_LEFT_UP, &DoubleSlider::OnLeftUp, this);
+ Bind(wxEVT_MOUSEWHEEL, &DoubleSlider::OnWheel, this);
+ Bind(wxEVT_ENTER_WINDOW,&DoubleSlider::OnEnterWin, this);
+ Bind(wxEVT_LEAVE_WINDOW,&DoubleSlider::OnLeaveWin, this);
+ Bind(wxEVT_KEY_DOWN, &DoubleSlider::OnKeyDown, this);
+ Bind(wxEVT_KEY_UP, &DoubleSlider::OnKeyUp, this);
+ Bind(wxEVT_RIGHT_DOWN, &DoubleSlider::OnRightDown,this);
+ Bind(wxEVT_RIGHT_UP, &DoubleSlider::OnRightUp, this);
// control's view variables
- SLIDER_MARGIN = 4 + Slic3r::GUI::wxGetApp().em_unit();//(style == wxSL_HORIZONTAL ? m_bmp_thumb_higher.GetWidth() : m_bmp_thumb_higher.GetHeight());
+ SLIDER_MARGIN = 4 + Slic3r::GUI::wxGetApp().em_unit();
DARK_ORANGE_PEN = wxPen(wxColour(253, 84, 2));
ORANGE_PEN = wxPen(wxColour(253, 126, 66));
@@ -1548,32 +1431,65 @@ PrusaDoubleSlider::PrusaDoubleSlider(wxWindow *parent,
GREY_PEN = wxPen(wxColour(164, 164, 164));
LIGHT_GREY_PEN = wxPen(wxColour(204, 204, 204));
- line_pens = { &DARK_GREY_PEN, &GREY_PEN, &LIGHT_GREY_PEN };
- segm_pens = { &DARK_ORANGE_PEN, &ORANGE_PEN, &LIGHT_ORANGE_PEN };
+ m_line_pens = { &DARK_GREY_PEN, &GREY_PEN, &LIGHT_GREY_PEN };
+ m_segm_pens = { &DARK_ORANGE_PEN, &ORANGE_PEN, &LIGHT_ORANGE_PEN };
const wxFont& font = GetFont();
m_font = is_osx ? font.Smaller().Smaller() : font.Smaller();
}
-int PrusaDoubleSlider::GetActiveValue() const
+void DoubleSlider::msw_rescale()
+{
+ const wxFont& font = Slic3r::GUI::wxGetApp().normal_font();
+ m_font = is_osx ? font.Smaller().Smaller() : font.Smaller();
+
+ m_bmp_thumb_higher.msw_rescale();
+ m_bmp_thumb_lower .msw_rescale();
+ m_thumb_size = m_bmp_thumb_lower.bmp().GetSize();
+
+ m_bmp_add_tick_on .msw_rescale();
+ m_bmp_add_tick_off.msw_rescale();
+ m_bmp_del_tick_on .msw_rescale();
+ m_bmp_del_tick_off.msw_rescale();
+ m_tick_icon_dim = m_bmp_add_tick_on.bmp().GetSize().x;
+
+ m_bmp_one_layer_lock_on .msw_rescale();
+ m_bmp_one_layer_lock_off .msw_rescale();
+ m_bmp_one_layer_unlock_on .msw_rescale();
+ m_bmp_one_layer_unlock_off.msw_rescale();
+ m_lock_icon_dim = m_bmp_one_layer_lock_on.bmp().GetSize().x;
+
+ SLIDER_MARGIN = 4 + Slic3r::GUI::wxGetApp().em_unit();
+
+ SetMinSize(get_min_size());
+ GetParent()->Layout();
+}
+
+int DoubleSlider::GetActiveValue() const
{
return m_selection == ssLower ?
m_lower_value : m_selection == ssHigher ?
m_higher_value : -1;
}
-wxSize PrusaDoubleSlider::DoGetBestSize() const
+wxSize DoubleSlider::get_min_size() const
+{
+ const int min_side = is_horizontal() ?
+ (is_osx ? 8 : 6) * Slic3r::GUI::wxGetApp().em_unit() :
+ /*(is_osx ? 10 : 8)*/10 * Slic3r::GUI::wxGetApp().em_unit();
+
+ return wxSize(min_side, min_side);
+}
+
+wxSize DoubleSlider::DoGetBestSize() const
{
const wxSize size = wxControl::DoGetBestSize();
if (size.x > 1 && size.y > 1)
return size;
- const int new_size = is_horizontal() ?
- (is_osx ? 8 : 6) * Slic3r::GUI::wxGetApp().em_unit() :
- (is_osx ? 10 : 8) * Slic3r::GUI::wxGetApp().em_unit();
- return wxSize(new_size, new_size);
+ return get_min_size();
}
-void PrusaDoubleSlider::SetLowerValue(const int lower_val)
+void DoubleSlider::SetLowerValue(const int lower_val)
{
m_selection = ssLower;
m_lower_value = lower_val;
@@ -1586,7 +1502,7 @@ void PrusaDoubleSlider::SetLowerValue(const int lower_val)
ProcessWindowEvent(e);
}
-void PrusaDoubleSlider::SetHigherValue(const int higher_val)
+void DoubleSlider::SetHigherValue(const int higher_val)
{
m_selection = ssHigher;
m_higher_value = higher_val;
@@ -1599,7 +1515,7 @@ void PrusaDoubleSlider::SetHigherValue(const int higher_val)
ProcessWindowEvent(e);
}
-void PrusaDoubleSlider::SetSelectionSpan(const int lower_val, const int higher_val)
+void DoubleSlider::SetSelectionSpan(const int lower_val, const int higher_val)
{
m_lower_value = std::max(lower_val, m_min_value);
m_higher_value = std::max(std::min(higher_val, m_max_value), m_lower_value);
@@ -1614,14 +1530,14 @@ void PrusaDoubleSlider::SetSelectionSpan(const int lower_val, const int higher_v
ProcessWindowEvent(e);
}
-void PrusaDoubleSlider::SetMaxValue(const int max_value)
+void DoubleSlider::SetMaxValue(const int max_value)
{
m_max_value = max_value;
Refresh();
Update();
}
-void PrusaDoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const int higher_pos)
+void DoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const int higher_pos)
{
int width;
int height;
@@ -1637,11 +1553,11 @@ void PrusaDoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const in
wxCoord segm_end_x = is_horizontal() ? higher_pos : width*0.5 - 1;
wxCoord segm_end_y = is_horizontal() ? height*0.5 - 1 : higher_pos-1;
- for (int id = 0; id < line_pens.size(); id++)
+ for (int id = 0; id < m_line_pens.size(); id++)
{
- dc.SetPen(*line_pens[id]);
+ dc.SetPen(*m_line_pens[id]);
dc.DrawLine(line_beg_x, line_beg_y, line_end_x, line_end_y);
- dc.SetPen(*segm_pens[id]);
+ dc.SetPen(*m_segm_pens[id]);
dc.DrawLine(segm_beg_x, segm_beg_y, segm_end_x, segm_end_y);
if (is_horizontal())
line_beg_y = line_end_y = segm_beg_y = segm_end_y += 1;
@@ -1650,7 +1566,7 @@ void PrusaDoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const in
}
}
-double PrusaDoubleSlider::get_scroll_step()
+double DoubleSlider::get_scroll_step()
{
const wxSize sz = get_size();
const int& slider_len = m_style == wxSL_HORIZONTAL ? sz.x : sz.y;
@@ -1658,27 +1574,27 @@ double PrusaDoubleSlider::get_scroll_step()
}
// get position on the slider line from entered value
-wxCoord PrusaDoubleSlider::get_position_from_value(const int value)
+wxCoord DoubleSlider::get_position_from_value(const int value)
{
const double step = get_scroll_step();
const int val = is_horizontal() ? value : m_max_value - value;
return wxCoord(SLIDER_MARGIN + int(val*step + 0.5));
}
-wxSize PrusaDoubleSlider::get_size()
+wxSize DoubleSlider::get_size()
{
int w, h;
get_size(&w, &h);
return wxSize(w, h);
}
-void PrusaDoubleSlider::get_size(int *w, int *h)
+void DoubleSlider::get_size(int *w, int *h)
{
GetSize(w, h);
is_horizontal() ? *w -= m_lock_icon_dim : *h -= m_lock_icon_dim;
}
-double PrusaDoubleSlider::get_double_value(const SelectedSlider& selection)
+double DoubleSlider::get_double_value(const SelectedSlider& selection)
{
if (m_values.empty() || m_lower_value<0)
return 0.0;
@@ -1689,7 +1605,7 @@ double PrusaDoubleSlider::get_double_value(const SelectedSlider& selection)
return m_values[selection == ssLower ? m_lower_value : m_higher_value].second;
}
-std::vector<double> PrusaDoubleSlider::GetTicksValues() const
+std::vector<double> DoubleSlider::GetTicksValues() const
{
std::vector<double> values;
@@ -1703,7 +1619,7 @@ std::vector<double> PrusaDoubleSlider::GetTicksValues() const
return values;
}
-void PrusaDoubleSlider::SetTicksValues(const std::vector<double>& heights)
+void DoubleSlider::SetTicksValues(const std::vector<double>& heights)
{
if (m_values.empty())
return;
@@ -1725,7 +1641,7 @@ void PrusaDoubleSlider::SetTicksValues(const std::vector<double>& heights)
wxPostEvent(this->GetParent(), wxCommandEvent(wxCUSTOMEVT_TICKSCHANGED));
}
-void PrusaDoubleSlider::get_lower_and_higher_position(int& lower_pos, int& higher_pos)
+void DoubleSlider::get_lower_and_higher_position(int& lower_pos, int& higher_pos)
{
const double step = get_scroll_step();
if (is_horizontal()) {
@@ -1738,7 +1654,7 @@ void PrusaDoubleSlider::get_lower_and_higher_position(int& lower_pos, int& highe
}
}
-void PrusaDoubleSlider::draw_focus_rect()
+void DoubleSlider::draw_focus_rect()
{
if (!m_is_focused)
return;
@@ -1750,7 +1666,7 @@ void PrusaDoubleSlider::draw_focus_rect()
dc.DrawRectangle(1, 1, sz.x - 2, sz.y - 2);
}
-void PrusaDoubleSlider::render()
+void DoubleSlider::render()
{
SetBackgroundColour(GetParent()->GetBackgroundColour());
draw_focus_rect();
@@ -1783,12 +1699,13 @@ void PrusaDoubleSlider::render()
draw_one_layer_icon(dc);
}
-void PrusaDoubleSlider::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoint pt_end)
+void DoubleSlider::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoint pt_end)
{
const int tick = m_selection == ssLower ? m_lower_value : m_higher_value;
- wxBitmap* icon = m_is_action_icon_focesed ? &m_bmp_add_tick_off : &m_bmp_add_tick_on;
+
+ wxBitmap& icon = m_is_action_icon_focesed ? m_bmp_add_tick_off.bmp() : m_bmp_add_tick_on.bmp();
if (m_ticks.find(tick) != m_ticks.end())
- icon = m_is_action_icon_focesed ? &m_bmp_del_tick_off : &m_bmp_del_tick_on;
+ icon = m_is_action_icon_focesed ? m_bmp_del_tick_off.bmp() : m_bmp_del_tick_on.bmp();
wxCoord x_draw, y_draw;
is_horizontal() ? x_draw = pt_beg.x - 0.5*m_tick_icon_dim : y_draw = pt_beg.y - 0.5*m_tick_icon_dim;
@@ -1797,13 +1714,13 @@ void PrusaDoubleSlider::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const w
else
is_horizontal() ? y_draw = pt_beg.y - m_tick_icon_dim-2 : x_draw = pt_end.x + 3;
- dc.DrawBitmap(*icon, x_draw, y_draw);
+ dc.DrawBitmap(icon, x_draw, y_draw);
//update rect of the tick action icon
m_rect_tick_action = wxRect(x_draw, y_draw, m_tick_icon_dim, m_tick_icon_dim);
}
-void PrusaDoubleSlider::draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, const SelectedSlider selection)
+void DoubleSlider::draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, const SelectedSlider selection)
{
if (m_selection == selection) {
//draw info line
@@ -1818,7 +1735,7 @@ void PrusaDoubleSlider::draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, c
}
}
-wxString PrusaDoubleSlider::get_label(const SelectedSlider& selection) const
+wxString DoubleSlider::get_label(const SelectedSlider& selection) const
{
const int value = selection == ssLower ? m_lower_value : m_higher_value;
@@ -1833,7 +1750,7 @@ wxString PrusaDoubleSlider::get_label(const SelectedSlider& selection) const
return wxString::Format("%s\n(%d)", str, m_values.empty() ? value : m_values[value].first);
}
-void PrusaDoubleSlider::draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const
+void DoubleSlider::draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const
{
if ((m_is_one_layer || m_higher_value==m_lower_value) && selection != m_selection || !selection)
return;
@@ -1850,7 +1767,7 @@ void PrusaDoubleSlider::draw_thumb_text(wxDC& dc, const wxPoint& pos, const Sele
dc.DrawText(label, text_pos);
}
-void PrusaDoubleSlider::draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection)
+void DoubleSlider::draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection)
{
wxCoord x_draw, y_draw;
if (selection == ssLower) {
@@ -1873,13 +1790,13 @@ void PrusaDoubleSlider::draw_thumb_item(wxDC& dc, const wxPoint& pos, const Sele
y_draw = pos.y - m_thumb_size.y;
}
}
- dc.DrawBitmap(selection == ssLower ? m_bmp_thumb_lower : m_bmp_thumb_higher, x_draw, y_draw);
+ dc.DrawBitmap(selection == ssLower ? m_bmp_thumb_lower.bmp() : m_bmp_thumb_higher.bmp(), x_draw, y_draw);
// Update thumb rect
update_thumb_rect(x_draw, y_draw, selection);
}
-void PrusaDoubleSlider::draw_thumb(wxDC& dc, const wxCoord& pos_coord, const SelectedSlider& selection)
+void DoubleSlider::draw_thumb(wxDC& dc, const wxCoord& pos_coord, const SelectedSlider& selection)
{
//calculate thumb position on slider line
int width, height;
@@ -1896,7 +1813,7 @@ void PrusaDoubleSlider::draw_thumb(wxDC& dc, const wxCoord& pos_coord, const Sel
draw_thumb_text(dc, pos, selection);
}
-void PrusaDoubleSlider::draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& higher_pos)
+void DoubleSlider::draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& higher_pos)
{
//calculate thumb position on slider line
int width, height;
@@ -1920,7 +1837,7 @@ void PrusaDoubleSlider::draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wx
draw_thumb_text(dc, pos_l, ssLower);
}
-void PrusaDoubleSlider::draw_ticks(wxDC& dc)
+void DoubleSlider::draw_ticks(wxDC& dc)
{
dc.SetPen(m_is_enabled_tick_manipulation ? DARK_GREY_PEN : LIGHT_GREY_PEN );
int height, width;
@@ -1937,7 +1854,7 @@ void PrusaDoubleSlider::draw_ticks(wxDC& dc)
}
}
-void PrusaDoubleSlider::draw_colored_band(wxDC& dc)
+void DoubleSlider::draw_colored_band(wxDC& dc)
{
int height, width;
get_size(&width, &height);
@@ -1987,11 +1904,11 @@ void PrusaDoubleSlider::draw_colored_band(wxDC& dc)
}
}
-void PrusaDoubleSlider::draw_one_layer_icon(wxDC& dc)
+void DoubleSlider::draw_one_layer_icon(wxDC& dc)
{
- wxBitmap* icon = m_is_one_layer ?
- m_is_one_layer_icon_focesed ? &m_bmp_one_layer_lock_off : &m_bmp_one_layer_lock_on :
- m_is_one_layer_icon_focesed ? &m_bmp_one_layer_unlock_off : &m_bmp_one_layer_unlock_on;
+ const wxBitmap& icon = m_is_one_layer ?
+ m_is_one_layer_icon_focesed ? m_bmp_one_layer_lock_off.bmp() : m_bmp_one_layer_lock_on.bmp() :
+ m_is_one_layer_icon_focesed ? m_bmp_one_layer_unlock_off.bmp() : m_bmp_one_layer_unlock_on.bmp();
int width, height;
get_size(&width, &height);
@@ -2000,13 +1917,13 @@ void PrusaDoubleSlider::draw_one_layer_icon(wxDC& dc)
is_horizontal() ? x_draw = width-2 : x_draw = 0.5*width - 0.5*m_lock_icon_dim;
is_horizontal() ? y_draw = 0.5*height - 0.5*m_lock_icon_dim : y_draw = height-2;
- dc.DrawBitmap(*icon, x_draw, y_draw);
+ dc.DrawBitmap(icon, x_draw, y_draw);
//update rect of the lock/unlock icon
m_rect_one_layer_icon = wxRect(x_draw, y_draw, m_lock_icon_dim, m_lock_icon_dim);
}
-void PrusaDoubleSlider::update_thumb_rect(const wxCoord& begin_x, const wxCoord& begin_y, const SelectedSlider& selection)
+void DoubleSlider::update_thumb_rect(const wxCoord& begin_x, const wxCoord& begin_y, const SelectedSlider& selection)
{
const wxRect& rect = wxRect(begin_x, begin_y, m_thumb_size.x, m_thumb_size.y);
if (selection == ssLower)
@@ -2015,7 +1932,7 @@ void PrusaDoubleSlider::update_thumb_rect(const wxCoord& begin_x, const wxCoord&
m_rect_higher_thumb = rect;
}
-int PrusaDoubleSlider::get_value_from_position(const wxCoord x, const wxCoord y)
+int DoubleSlider::get_value_from_position(const wxCoord x, const wxCoord y)
{
const int height = get_size().y;
const double step = get_scroll_step();
@@ -2026,13 +1943,13 @@ int PrusaDoubleSlider::get_value_from_position(const wxCoord x, const wxCoord y)
return int(m_min_value + double(height - SLIDER_MARGIN - y) / step + 0.5);
}
-void PrusaDoubleSlider::detect_selected_slider(const wxPoint& pt)
+void DoubleSlider::detect_selected_slider(const wxPoint& pt)
{
m_selection = is_point_in_rect(pt, m_rect_lower_thumb) ? ssLower :
is_point_in_rect(pt, m_rect_higher_thumb) ? ssHigher : ssUndef;
}
-bool PrusaDoubleSlider::is_point_in_rect(const wxPoint& pt, const wxRect& rect)
+bool DoubleSlider::is_point_in_rect(const wxPoint& pt, const wxRect& rect)
{
if (rect.GetLeft() <= pt.x && pt.x <= rect.GetRight() &&
rect.GetTop() <= pt.y && pt.y <= rect.GetBottom())
@@ -2040,7 +1957,7 @@ bool PrusaDoubleSlider::is_point_in_rect(const wxPoint& pt, const wxRect& rect)
return false;
}
-int PrusaDoubleSlider::is_point_near_tick(const wxPoint& pt)
+int DoubleSlider::is_point_near_tick(const wxPoint& pt)
{
for (auto tick : m_ticks) {
const wxCoord pos = get_position_from_value(tick);
@@ -2057,7 +1974,7 @@ int PrusaDoubleSlider::is_point_near_tick(const wxPoint& pt)
return -1;
}
-void PrusaDoubleSlider::ChangeOneLayerLock()
+void DoubleSlider::ChangeOneLayerLock()
{
m_is_one_layer = !m_is_one_layer;
m_selection == ssLower ? correct_lower_value() : correct_higher_value();
@@ -2071,7 +1988,7 @@ void PrusaDoubleSlider::ChangeOneLayerLock()
ProcessWindowEvent(e);
}
-void PrusaDoubleSlider::OnLeftDown(wxMouseEvent& event)
+void DoubleSlider::OnLeftDown(wxMouseEvent& event)
{
this->CaptureMouse();
wxClientDC dc(this);
@@ -2116,7 +2033,7 @@ void PrusaDoubleSlider::OnLeftDown(wxMouseEvent& event)
event.Skip();
}
-void PrusaDoubleSlider::correct_lower_value()
+void DoubleSlider::correct_lower_value()
{
if (m_lower_value < m_min_value)
m_lower_value = m_min_value;
@@ -2127,7 +2044,7 @@ void PrusaDoubleSlider::correct_lower_value()
m_higher_value = m_lower_value;
}
-void PrusaDoubleSlider::correct_higher_value()
+void DoubleSlider::correct_higher_value()
{
if (m_higher_value > m_max_value)
m_higher_value = m_max_value;
@@ -2138,7 +2055,7 @@ void PrusaDoubleSlider::correct_higher_value()
m_lower_value = m_higher_value;
}
-void PrusaDoubleSlider::OnMotion(wxMouseEvent& event)
+void DoubleSlider::OnMotion(wxMouseEvent& event)
{
bool action = false;
@@ -2172,7 +2089,7 @@ void PrusaDoubleSlider::OnMotion(wxMouseEvent& event)
}
}
-void PrusaDoubleSlider::OnLeftUp(wxMouseEvent& event)
+void DoubleSlider::OnLeftUp(wxMouseEvent& event)
{
if (!HasCapture())
return;
@@ -2187,7 +2104,7 @@ void PrusaDoubleSlider::OnLeftUp(wxMouseEvent& event)
ProcessWindowEvent(e);
}
-void PrusaDoubleSlider::enter_window(wxMouseEvent& event, const bool enter)
+void DoubleSlider::enter_window(wxMouseEvent& event, const bool enter)
{
m_is_focused = enter;
Refresh();
@@ -2198,7 +2115,7 @@ void PrusaDoubleSlider::enter_window(wxMouseEvent& event, const bool enter)
// "condition" have to be true for:
// - value increase (if wxSL_VERTICAL)
// - value decrease (if wxSL_HORIZONTAL)
-void PrusaDoubleSlider::move_current_thumb(const bool condition)
+void DoubleSlider::move_current_thumb(const bool condition)
{
// m_is_one_layer = wxGetKeyState(WXK_CONTROL);
int delta = condition ? -1 : 1;
@@ -2221,7 +2138,7 @@ void PrusaDoubleSlider::move_current_thumb(const bool condition)
ProcessWindowEvent(e);
}
-void PrusaDoubleSlider::action_tick(const TicksAction action)
+void DoubleSlider::action_tick(const TicksAction action)
{
if (m_selection == ssUndef)
return;
@@ -2245,7 +2162,7 @@ void PrusaDoubleSlider::action_tick(const TicksAction action)
Update();
}
-void PrusaDoubleSlider::OnWheel(wxMouseEvent& event)
+void DoubleSlider::OnWheel(wxMouseEvent& event)
{
// Set nearest to the mouse thumb as a selected, if there is not selected thumb
if (m_selection == ssUndef)
@@ -2265,7 +2182,7 @@ void PrusaDoubleSlider::OnWheel(wxMouseEvent& event)
move_current_thumb(event.GetWheelRotation() > 0);
}
-void PrusaDoubleSlider::OnKeyDown(wxKeyEvent &event)
+void DoubleSlider::OnKeyDown(wxKeyEvent &event)
{
const int key = event.GetKeyCode();
if (key == '+' || key == WXK_NUMPAD_ADD)
@@ -2291,7 +2208,7 @@ void PrusaDoubleSlider::OnKeyDown(wxKeyEvent &event)
}
}
-void PrusaDoubleSlider::OnKeyUp(wxKeyEvent &event)
+void DoubleSlider::OnKeyUp(wxKeyEvent &event)
{
if (event.GetKeyCode() == WXK_CONTROL)
m_is_one_layer = false;
@@ -2300,7 +2217,7 @@ void PrusaDoubleSlider::OnKeyUp(wxKeyEvent &event)
event.Skip();
}
-void PrusaDoubleSlider::OnRightDown(wxMouseEvent& event)
+void DoubleSlider::OnRightDown(wxMouseEvent& event)
{
this->CaptureMouse();
const wxClientDC dc(this);
@@ -2320,7 +2237,7 @@ void PrusaDoubleSlider::OnRightDown(wxMouseEvent& event)
event.Skip();
}
-void PrusaDoubleSlider::OnRightUp(wxMouseEvent& event)
+void DoubleSlider::OnRightUp(wxMouseEvent& event)
{
if (!HasCapture())
return;
@@ -2334,34 +2251,33 @@ void PrusaDoubleSlider::OnRightUp(wxMouseEvent& event)
// ----------------------------------------------------------------------------
-// PrusaLockButton
+// LockButton
// ----------------------------------------------------------------------------
-PrusaLockButton::PrusaLockButton( wxWindow *parent,
- wxWindowID id,
- const wxPoint& pos /*= wxDefaultPosition*/,
- const wxSize& size /*= wxDefaultSize*/):
- wxButton(parent, id, wxEmptyString, pos, size, wxBU_EXACTFIT | wxNO_BORDER)
+LockButton::LockButton( wxWindow *parent,
+ wxWindowID id,
+ const wxPoint& pos /*= wxDefaultPosition*/,
+ const wxSize& size /*= wxDefaultSize*/):
+ wxButton(parent, id, wxEmptyString, pos, size, wxBU_EXACTFIT | wxNO_BORDER)
{
- m_bmp_lock_on = create_scaled_bitmap(this, "one_layer_lock_on.png");
- m_bmp_lock_off = create_scaled_bitmap(this, "one_layer_lock_off.png");
- m_bmp_unlock_on = create_scaled_bitmap(this, "one_layer_unlock_on.png");
- m_bmp_unlock_off = create_scaled_bitmap(this, "one_layer_unlock_off.png");
-
+ m_bmp_lock_on = ScalableBitmap(this, "one_layer_lock_on.png");
+ m_bmp_lock_off = ScalableBitmap(this, "one_layer_lock_off.png");
+ m_bmp_unlock_on = ScalableBitmap(this, "one_layer_unlock_on.png");
+ m_bmp_unlock_off = ScalableBitmap(this, "one_layer_unlock_off.png");
#ifdef __WXMSW__
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
#endif // __WXMSW__
- SetBitmap(m_bmp_unlock_on);
- SetBitmapDisabled(m_bmp_lock_on);
+ SetBitmap(m_bmp_unlock_on.bmp());
+ SetBitmapDisabled(m_bmp_lock_on.bmp());
//button events
- Bind(wxEVT_BUTTON, &PrusaLockButton::OnButton, this);
- Bind(wxEVT_ENTER_WINDOW, &PrusaLockButton::OnEnterBtn, this);
- Bind(wxEVT_LEAVE_WINDOW, &PrusaLockButton::OnLeaveBtn, this);
+ Bind(wxEVT_BUTTON, &LockButton::OnButton, this);
+ Bind(wxEVT_ENTER_WINDOW, &LockButton::OnEnterBtn, this);
+ Bind(wxEVT_LEAVE_WINDOW, &LockButton::OnLeaveBtn, this);
}
-void PrusaLockButton::OnButton(wxCommandEvent& event)
+void LockButton::OnButton(wxCommandEvent& event)
{
m_is_pushed = !m_is_pushed;
enter_button(true);
@@ -2369,18 +2285,26 @@ void PrusaLockButton::OnButton(wxCommandEvent& event)
event.Skip();
}
-void PrusaLockButton::SetLock(bool lock)
+void LockButton::SetLock(bool lock)
{
m_is_pushed = lock;
enter_button(true);
}
-void PrusaLockButton::enter_button(const bool enter)
+void LockButton::msw_rescale()
{
- wxBitmap* icon = m_is_pushed ?
- enter ? &m_bmp_lock_off : &m_bmp_lock_on :
- enter ? &m_bmp_unlock_off : &m_bmp_unlock_on;
- SetBitmap(*icon);
+ m_bmp_lock_on .msw_rescale();
+ m_bmp_lock_off .msw_rescale();
+ m_bmp_unlock_on .msw_rescale();
+ m_bmp_unlock_off.msw_rescale();
+}
+
+void LockButton::enter_button(const bool enter)
+{
+ const wxBitmap& icon = m_is_pushed ?
+ enter ? m_bmp_lock_off.bmp() : m_bmp_lock_on.bmp() :
+ enter ? m_bmp_unlock_off.bmp() : m_bmp_unlock_on.bmp();
+ SetBitmap(icon);
Refresh();
Update();
@@ -2389,35 +2313,28 @@ void PrusaLockButton::enter_button(const bool enter)
// ----------------------------------------------------------------------------
-// PrusaModeButton
+// ModeButton
// ----------------------------------------------------------------------------
-PrusaModeButton::PrusaModeButton( wxWindow *parent,
- wxWindowID id,
- const wxString& mode/* = wxEmptyString*/,
- const wxBitmap& bmp_on/* = wxNullBitmap*/,
- const wxSize& size/* = wxDefaultSize*/,
- const wxPoint& pos/* = wxDefaultPosition*/) :
- wxButton(parent, id, mode, pos, size, /*wxBU_EXACTFIT | */wxNO_BORDER),
- m_bmp_on(bmp_on)
+ModeButton::ModeButton( wxWindow * parent,
+ wxWindowID id,
+ const std::string& icon_name /* = ""*/,
+ const wxString& mode /* = wxEmptyString*/,
+ const wxSize& size /* = wxDefaultSize*/,
+ const wxPoint& pos /* = wxDefaultPosition*/) :
+// wxButton(parent, id, mode, pos, wxDefaultSize/*size*/, wxBU_EXACTFIT | wxNO_BORDER),
+ ScalableButton(parent, id, icon_name, mode, size, pos)
{
-#ifdef __WXMSW__
- SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
-#endif // __WXMSW__
- m_bmp_off = create_scaled_bitmap(this, "mode_off_sq.png");
-
m_tt_focused = wxString::Format(_(L("Switch to the %s mode")), mode);
m_tt_selected = wxString::Format(_(L("Current mode is %s")), mode);
- SetBitmap(m_bmp_on);
-
//button events
- Bind(wxEVT_BUTTON, &PrusaModeButton::OnButton, this);
- Bind(wxEVT_ENTER_WINDOW, &PrusaModeButton::OnEnterBtn, this);
- Bind(wxEVT_LEAVE_WINDOW, &PrusaModeButton::OnLeaveBtn, this);
+ Bind(wxEVT_BUTTON, &ModeButton::OnButton, this);
+ Bind(wxEVT_ENTER_WINDOW, &ModeButton::OnEnterBtn, this);
+ Bind(wxEVT_LEAVE_WINDOW, &ModeButton::OnLeaveBtn, this);
}
-void PrusaModeButton::OnButton(wxCommandEvent& event)
+void ModeButton::OnButton(wxCommandEvent& event)
{
m_is_selected = true;
focus_button(m_is_selected);
@@ -2425,18 +2342,18 @@ void PrusaModeButton::OnButton(wxCommandEvent& event)
event.Skip();
}
-void PrusaModeButton::SetState(const bool state)
+void ModeButton::SetState(const bool state)
{
m_is_selected = state;
focus_button(m_is_selected);
SetToolTip(state ? m_tt_selected : m_tt_focused);
}
-void PrusaModeButton::focus_button(const bool focus)
+void ModeButton::focus_button(const bool focus)
{
-// const wxBitmap& bmp = focus ? m_bmp_on : m_bmp_off;
-// SetBitmap(bmp);
- const wxFont& new_font = focus ? Slic3r::GUI::wxGetApp().bold_font() : Slic3r::GUI::wxGetApp().small_font();
+ wxFont font = GetFont();
+ const wxFont& new_font = focus ? font.Bold() : font.GetBaseFont();
+
SetFont(new_font);
Refresh();
@@ -2445,35 +2362,35 @@ void PrusaModeButton::focus_button(const bool focus)
// ----------------------------------------------------------------------------
-// PrusaModeSizer
+// ModeSizer
// ----------------------------------------------------------------------------
-PrusaModeSizer::PrusaModeSizer(wxWindow *parent, int hgap/* = 10*/) :
+ModeSizer::ModeSizer(wxWindow *parent, int hgap/* = 10*/) :
wxFlexGridSizer(3, 0, hgap)
{
SetFlexibleDirection(wxHORIZONTAL);
- std::vector<std::pair<wxString, wxBitmap>> buttons = {
- {_(L("Simple")), create_scaled_bitmap(parent, "mode_simple_sq.png")},
- {_(L("Advanced")), create_scaled_bitmap(parent, "mode_middle_sq.png")},
- {_(L("Expert")), create_scaled_bitmap(parent, "mode_expert_sq.png")}
+ std::vector < std::pair < wxString, std::string >> buttons = {
+ {_(L("Simple")), "mode_simple_sq.png"},
+ {_(L("Advanced")), "mode_middle_sq.png"},
+ {_(L("Expert")), "mode_expert_sq.png"}
};
- mode_btns.reserve(3);
+ m_mode_btns.reserve(3);
for (const auto& button : buttons) {
- int x, y;
- parent->GetTextExtent(button.first, &x, &y, nullptr, nullptr, &Slic3r::GUI::wxGetApp().bold_font());
- const wxSize size = wxSize(x + button.second.GetWidth() + Slic3r::GUI::wxGetApp().em_unit(),
- y + Slic3r::GUI::wxGetApp().em_unit());
- mode_btns.push_back(new PrusaModeButton(parent, wxID_ANY, button.first, button.second, size));
+// int x, y;
+// parent->GetTextExtent(button.first, &x, &y, nullptr, nullptr, &Slic3r::GUI::wxGetApp().bold_font());
+// const wxSize size = wxSize(x + button.second.GetWidth() + Slic3r::GUI::wxGetApp().em_unit(),
+// y + Slic3r::GUI::wxGetApp().em_unit());
+ m_mode_btns.push_back(new ModeButton(parent, wxID_ANY, button.second, button.first/*, size*/));
}
- for (auto btn : mode_btns)
+ for (auto btn : m_mode_btns)
{
btn->Bind(wxEVT_BUTTON, [btn, this](wxCommandEvent &event) {
event.Skip();
int mode_id = 0;
- for (auto cur_btn : mode_btns) {
+ for (auto cur_btn : m_mode_btns) {
if (cur_btn == btn)
break;
else
@@ -2487,18 +2404,24 @@ PrusaModeSizer::PrusaModeSizer(wxWindow *parent, int hgap/* = 10*/) :
}
-void PrusaModeSizer::SetMode(const int mode)
+void ModeSizer::SetMode(const int mode)
{
- for (int m = 0; m < mode_btns.size(); m++)
- mode_btns[m]->SetState(m == mode);
+ for (int m = 0; m < m_mode_btns.size(); m++)
+ m_mode_btns[m]->SetState(m == mode);
}
+void ModeSizer::msw_rescale()
+{
+ for (int m = 0; m < m_mode_btns.size(); m++)
+ m_mode_btns[m]->msw_rescale();
+}
+
// ----------------------------------------------------------------------------
-// PrusaMenu
+// MenuWithSeparators
// ----------------------------------------------------------------------------
-void PrusaMenu::DestroySeparators()
+void MenuWithSeparators::DestroySeparators()
{
if (m_separator_frst) {
Destroy(m_separator_frst);
@@ -2511,10 +2434,89 @@ void PrusaMenu::DestroySeparators()
}
}
+void MenuWithSeparators::SetFirstSeparator()
+{
+ m_separator_frst = this->AppendSeparator();
+}
-// ************************************** EXPERIMENTS ***************************************
+void MenuWithSeparators::SetSecondSeparator()
+{
+ m_separator_scnd = this->AppendSeparator();
+}
+
+// ----------------------------------------------------------------------------
+// PrusaBitmap
+// ----------------------------------------------------------------------------
+ScalableBitmap::ScalableBitmap( wxWindow *parent,
+ const std::string& icon_name/* = ""*/,
+ const int px_cnt/* = 16*/,
+ const bool is_horizontal/* = false*/):
+ m_parent(parent), m_icon_name(icon_name),
+ m_px_cnt(px_cnt), m_is_horizontal(is_horizontal)
+{
+ m_bmp = create_scaled_bitmap(parent, icon_name, px_cnt, is_horizontal);
+}
+
+
+void ScalableBitmap::msw_rescale()
+{
+ m_bmp = create_scaled_bitmap(m_parent, m_icon_name, m_px_cnt, m_is_horizontal);
+}
+
+// ----------------------------------------------------------------------------
+// PrusaButton
+// ----------------------------------------------------------------------------
+
+ScalableButton::ScalableButton( wxWindow * parent,
+ wxWindowID id,
+ const std::string& icon_name /*= ""*/,
+ const wxString& label /* = wxEmptyString*/,
+ const wxSize& size /* = wxDefaultSize*/,
+ const wxPoint& pos /* = wxDefaultPosition*/,
+ long style /*= wxBU_EXACTFIT | wxNO_BORDER*/) :
+ m_current_icon_name(icon_name),
+ m_parent(parent)
+{
+ Create(parent, id, label, pos, size, style);
+#ifdef __WXMSW__
+ if (style & wxNO_BORDER)
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+#endif // __WXMSW__
+
+ SetBitmap(create_scaled_bitmap(parent, icon_name));
+}
+
+
+ScalableButton::ScalableButton( wxWindow * parent,
+ wxWindowID id,
+ const ScalableBitmap& bitmap,
+ const wxString& label /*= wxEmptyString*/,
+ long style /*= wxBU_EXACTFIT | wxNO_BORDER*/) :
+ m_current_icon_name(bitmap.name()),
+ m_parent(parent)
+{
+ Create(parent, id, label, wxDefaultPosition, wxDefaultSize, style);
+#ifdef __WXMSW__
+ if (style & wxNO_BORDER)
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+#endif // __WXMSW__
+
+ SetBitmap(bitmap.bmp());
+}
+
+void ScalableButton::SetBitmap_(const ScalableBitmap& bmp)
+{
+ SetBitmap(bmp.bmp());
+ m_current_icon_name = bmp.name();
+}
+
+void ScalableButton::msw_rescale()
+{
+ const wxBitmap bmp = create_scaled_bitmap(m_parent, m_current_icon_name);
+
+ SetBitmap(bmp);
+}
-// *****************************************************************************
diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp
index b935448d9..589317f2b 100644
--- a/src/slic3r/GUI/wxExtensions.hpp
+++ b/src/slic3r/GUI/wxExtensions.hpp
@@ -31,7 +31,12 @@ wxMenuItem* append_submenu(wxMenu* menu, wxMenu* sub_menu, int id, const wxStrin
wxMenuItem* append_menu_radio_item(wxMenu* menu, int id, const wxString& string, const wxString& description,
std::function<void(wxCommandEvent& event)> cb, wxEvtHandler* event_handler);
-wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name, const int px_cnt=16, const bool is_horizontal = false);
+class wxDialog;
+void edit_tooltip(wxString& tooltip);
+void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector<int>& btn_ids);
+int em_unit(wxWindow* win);
+
+wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name, const int px_cnt = 16, const bool is_horizontal = false);
class wxCheckListBoxComboPopup : public wxCheckListBox, public wxComboPopup
{
@@ -94,91 +99,20 @@ public:
};
-
-// *** PrusaCollapsiblePane ***
// ----------------------------------------------------------------------------
-class PrusaCollapsiblePane : public wxCollapsiblePane
-{
-public:
- PrusaCollapsiblePane() {}
- PrusaCollapsiblePane(wxWindow *parent,
- wxWindowID winid,
- const wxString& label,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxCP_DEFAULT_STYLE,
- const wxValidator& val = wxDefaultValidator,
- const wxString& name = wxCollapsiblePaneNameStr)
- {
- Create(parent, winid, label, pos, size, style, val, name);
- }
- ~PrusaCollapsiblePane() {}
-
- void OnStateChange(const wxSize& sz); //override/hide of OnStateChange from wxCollapsiblePane
- virtual bool Show(bool show = true) override {
- wxCollapsiblePane::Show(show);
- OnStateChange(GetBestSize());
- return true;
- }
-};
-
-
-// *** PrusaCollapsiblePaneMSW *** used only #ifdef __WXMSW__
+// DataViewBitmapText: helper class used by PrusaBitmapTextRenderer
// ----------------------------------------------------------------------------
-#ifdef __WXMSW__
-class PrusaCollapsiblePaneMSW : public PrusaCollapsiblePane//wxCollapsiblePane
-{
- wxButton* m_pDisclosureTriangleButton = nullptr;
- wxBitmap m_bmp_close;
- wxBitmap m_bmp_open;
- wxString m_strLabel;
-public:
- PrusaCollapsiblePaneMSW() {}
- PrusaCollapsiblePaneMSW( wxWindow *parent,
- wxWindowID winid,
- const wxString& label,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxCP_DEFAULT_STYLE,
- const wxValidator& val = wxDefaultValidator,
- const wxString& name = wxCollapsiblePaneNameStr)
- {
- Create(parent, winid, label, pos, size, style, val, name);
- }
- ~PrusaCollapsiblePaneMSW() {}
-
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxString& label,
- const wxPoint& pos,
- const wxSize& size,
- long style,
- const wxValidator& val,
- const wxString& name);
-
- void UpdateBtnBmp();
- void SetLabel(const wxString &label) override;
- bool Layout() override;
- void Collapse(bool collapse) override;
-};
-#endif //__WXMSW__
-
-// *****************************************************************************
-
-// ----------------------------------------------------------------------------
-// PrusaDataViewBitmapText: helper class used by PrusaBitmapTextRenderer
-// ----------------------------------------------------------------------------
-
-class PrusaDataViewBitmapText : public wxObject
+class DataViewBitmapText : public wxObject
{
public:
- PrusaDataViewBitmapText(const wxString &text = wxEmptyString,
- const wxBitmap& bmp = wxNullBitmap) :
- m_text(text), m_bmp(bmp)
+ DataViewBitmapText( const wxString &text = wxEmptyString,
+ const wxBitmap& bmp = wxNullBitmap) :
+ m_text(text),
+ m_bmp(bmp)
{ }
- PrusaDataViewBitmapText(const PrusaDataViewBitmapText &other)
+ DataViewBitmapText(const DataViewBitmapText &other)
: wxObject(),
m_text(other.m_text),
m_bmp(other.m_bmp)
@@ -186,18 +120,18 @@ public:
void SetText(const wxString &text) { m_text = text; }
wxString GetText() const { return m_text; }
- void SetBitmap(const wxBitmap &bmp) { m_bmp = bmp; }
+ void SetBitmap(const wxBitmap &bmp) { m_bmp = bmp; }
const wxBitmap &GetBitmap() const { return m_bmp; }
- bool IsSameAs(const PrusaDataViewBitmapText& other) const {
+ bool IsSameAs(const DataViewBitmapText& other) const {
return m_text == other.m_text && m_bmp.IsSameAs(other.m_bmp);
}
- bool operator==(const PrusaDataViewBitmapText& other) const {
+ bool operator==(const DataViewBitmapText& other) const {
return IsSameAs(other);
}
- bool operator!=(const PrusaDataViewBitmapText& other) const {
+ bool operator!=(const DataViewBitmapText& other) const {
return !IsSameAs(other);
}
@@ -205,13 +139,13 @@ private:
wxString m_text;
wxBitmap m_bmp;
- wxDECLARE_DYNAMIC_CLASS(PrusaDataViewBitmapText);
+ wxDECLARE_DYNAMIC_CLASS(DataViewBitmapText);
};
-DECLARE_VARIANT_OBJECT(PrusaDataViewBitmapText)
+DECLARE_VARIANT_OBJECT(DataViewBitmapText)
// ----------------------------------------------------------------------------
-// PrusaObjectDataViewModelNode: a node inside PrusaObjectDataViewModel
+// ObjectDataViewModelNode: a node inside PrusaObjectDataViewModel
// ----------------------------------------------------------------------------
enum ItemType {
@@ -223,56 +157,73 @@ enum ItemType {
itSettings = 16
};
-class PrusaObjectDataViewModelNode;
-WX_DEFINE_ARRAY_PTR(PrusaObjectDataViewModelNode*, MyObjectTreeModelNodePtrArray);
+class ObjectDataViewModelNode;
+WX_DEFINE_ARRAY_PTR(ObjectDataViewModelNode*, MyObjectTreeModelNodePtrArray);
-class PrusaObjectDataViewModelNode
+class ObjectDataViewModelNode
{
- PrusaObjectDataViewModelNode* m_parent;
+ ObjectDataViewModelNode* m_parent;
MyObjectTreeModelNodePtrArray m_children;
wxBitmap m_empty_bmp;
size_t m_volumes_cnt = 0;
std::vector< std::string > m_opt_categories;
+
+ wxString m_name;
+ wxBitmap& m_bmp = m_empty_bmp;
+ ItemType m_type;
+ int m_idx = -1;
+ bool m_container = false;
+ wxString m_extruder = "default";
+ wxBitmap m_action_icon;
+
+ std::string m_action_icon_name = "";
+ Slic3r::ModelVolumeType m_volume_type;
+
public:
- PrusaObjectDataViewModelNode(const wxString &name,
- const wxString& extruder) {
- m_parent = NULL;
- m_name = name;
- m_type = itObject;
+ ObjectDataViewModelNode(const wxString &name,
+ const wxString& extruder):
+ m_parent(NULL),
+ m_name(name),
+ m_type(itObject),
+ m_extruder(extruder)
+ {
#ifdef __WXGTK__
// it's necessary on GTK because of control have to know if this item will be container
// in another case you couldn't to add subitem for this item
// it will be produce "segmentation fault"
m_container = true;
#endif //__WXGTK__
- m_extruder = extruder;
- set_object_action_icon();
+
+ set_action_icon();
}
- PrusaObjectDataViewModelNode( PrusaObjectDataViewModelNode* parent,
- const wxString& sub_obj_name,
- const wxBitmap& bmp,
- const wxString& extruder,
- const int idx = -1 ) {
- m_parent = parent;
- m_name = sub_obj_name;
- m_bmp = bmp;
- m_type = itVolume;
- m_idx = idx;
- m_extruder = extruder;
+ ObjectDataViewModelNode(ObjectDataViewModelNode* parent,
+ const wxString& sub_obj_name,
+ const wxBitmap& bmp,
+ const wxString& extruder,
+ const int idx = -1 ) :
+ m_parent (parent),
+ m_name (sub_obj_name),
+ m_type (itVolume),
+ m_idx (idx),
+ m_extruder (extruder)
+ {
+ m_bmp = bmp;
#ifdef __WXGTK__
// it's necessary on GTK because of control have to know if this item will be container
// in another case you couldn't to add subitem for this item
// it will be produce "segmentation fault"
m_container = true;
#endif //__WXGTK__
- set_part_action_icon();
+
+ set_action_icon();
}
- PrusaObjectDataViewModelNode( PrusaObjectDataViewModelNode* parent, const ItemType type) :
- m_parent(parent),
- m_type(type),
- m_extruder(wxEmptyString)
+ ObjectDataViewModelNode(ObjectDataViewModelNode* parent,
+ const ItemType type) :
+ m_parent(parent),
+ m_type(type),
+ m_extruder(wxEmptyString)
{
if (type == itSettings) {
m_name = "Settings to modified";
@@ -286,35 +237,28 @@ public:
else if (type == itInstance) {
m_idx = parent->GetChildCount();
m_name = wxString::Format("Instance_%d", m_idx+1);
- set_part_action_icon();
+
+ set_action_icon();
}
}
- ~PrusaObjectDataViewModelNode()
+ ~ObjectDataViewModelNode()
{
// free all our children nodes
size_t count = m_children.GetCount();
for (size_t i = 0; i < count; i++)
{
- PrusaObjectDataViewModelNode *child = m_children[i];
+ ObjectDataViewModelNode *child = m_children[i];
delete child;
}
}
-
- wxString m_name;
- wxBitmap& m_bmp = m_empty_bmp;
- ItemType m_type;
- int m_idx = -1;
- bool m_container = false;
- wxString m_extruder = "default";
- wxBitmap m_action_icon;
bool IsContainer() const
{
return m_container;
}
- PrusaObjectDataViewModelNode* GetParent()
+ ObjectDataViewModelNode* GetParent()
{
return m_parent;
}
@@ -322,17 +266,17 @@ public:
{
return m_children;
}
- PrusaObjectDataViewModelNode* GetNthChild(unsigned int n)
+ ObjectDataViewModelNode* GetNthChild(unsigned int n)
{
return m_children.Item(n);
}
- void Insert(PrusaObjectDataViewModelNode* child, unsigned int n)
+ void Insert(ObjectDataViewModelNode* child, unsigned int n)
{
if (!m_container)
m_container = true;
m_children.Insert(child, n);
}
- void Append(PrusaObjectDataViewModelNode* child)
+ void Append(ObjectDataViewModelNode* child)
{
if (!m_container)
m_container = true;
@@ -362,7 +306,7 @@ public:
switch (col)
{
case 0:{
- PrusaDataViewBitmapText data;
+ DataViewBitmapText data;
data << variant;
m_bmp = data.GetBitmap();
m_name = data.GetText();
@@ -400,7 +344,7 @@ public:
}
// use this function only for childrens
- void AssignAllVal(PrusaObjectDataViewModelNode& from_node)
+ void AssignAllVal(ObjectDataViewModelNode& from_node)
{
// ! Don't overwrite other values because of equality of this values for all children --
m_name = from_node.m_name;
@@ -416,8 +360,8 @@ public:
scnd_id < 0 || scnd_id >= GetChildCount())
return false;
- PrusaObjectDataViewModelNode new_scnd = *GetNthChild(frst_id);
- PrusaObjectDataViewModelNode new_frst = *GetNthChild(scnd_id);
+ ObjectDataViewModelNode new_scnd = *GetNthChild(frst_id);
+ ObjectDataViewModelNode new_frst = *GetNthChild(scnd_id);
new_scnd.m_idx = m_children.Item(scnd_id)->m_idx;
new_frst.m_idx = m_children.Item(frst_id)->m_idx;
@@ -428,37 +372,40 @@ public:
}
// Set action icons for node
- void set_object_action_icon();
- void set_part_action_icon();
- bool update_settings_digest(const std::vector<std::string>& categories);
+ void set_action_icon();
+
+ void update_settings_digest_bitmaps();
+ bool update_settings_digest(const std::vector<std::string>& categories);
+ int volume_type() const { return int(m_volume_type); }
+ void msw_rescale();
private:
- friend class PrusaObjectDataViewModel;
+ friend class ObjectDataViewModel;
};
// ----------------------------------------------------------------------------
-// PrusaObjectDataViewModel
+// ObjectDataViewModel
// ----------------------------------------------------------------------------
// custom message the model sends to associated control to notify a last volume deleted from the object:
wxDECLARE_EVENT(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, wxCommandEvent);
-class PrusaObjectDataViewModel :public wxDataViewModel
+class ObjectDataViewModel :public wxDataViewModel
{
- std::vector<PrusaObjectDataViewModelNode*> m_objects;
+ std::vector<ObjectDataViewModelNode*> m_objects;
std::vector<wxBitmap*> m_volume_bmps;
wxDataViewCtrl* m_ctrl{ nullptr };
public:
- PrusaObjectDataViewModel();
- ~PrusaObjectDataViewModel();
+ ObjectDataViewModel();
+ ~ObjectDataViewModel();
wxDataViewItem Add(const wxString &name, const int extruder);
- wxDataViewItem AddVolumeChild(const wxDataViewItem &parent_item,
- const wxString &name,
- const Slic3r::ModelVolumeType volume_type,
- const int extruder = 0,
- const bool create_frst_child = true);
+ wxDataViewItem AddVolumeChild( const wxDataViewItem &parent_item,
+ const wxString &name,
+ const Slic3r::ModelVolumeType volume_type,
+ const int extruder = 0,
+ const bool create_frst_child = true);
wxDataViewItem AddSettingsChild(const wxDataViewItem &parent_item);
wxDataViewItem AddInstanceChild(const wxDataViewItem &parent_item, size_t num);
wxDataViewItem Delete(const wxDataViewItem &item);
@@ -470,76 +417,82 @@ public:
wxDataViewItem GetItemById(int obj_idx);
wxDataViewItem GetItemByVolumeId(int obj_idx, int volume_idx);
wxDataViewItem GetItemByInstanceId(int obj_idx, int inst_idx);
- int GetIdByItem(const wxDataViewItem& item) const;
- int GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const;
- int GetObjectIdByItem(const wxDataViewItem& item) const;
- int GetVolumeIdByItem(const wxDataViewItem& item) const;
- int GetInstanceIdByItem(const wxDataViewItem& item) const;
+ int GetIdByItem(const wxDataViewItem& item) const;
+ int GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const;
+ int GetObjectIdByItem(const wxDataViewItem& item) const;
+ int GetVolumeIdByItem(const wxDataViewItem& item) const;
+ int GetInstanceIdByItem(const wxDataViewItem& item) const;
void GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx);
- int GetRowByItem(const wxDataViewItem& item) const;
+ int GetRowByItem(const wxDataViewItem& item) const;
bool IsEmpty() { return m_objects.empty(); }
// helper method for wxLog
- wxString GetName(const wxDataViewItem &item) const;
- wxBitmap& GetBitmap(const wxDataViewItem &item) const;
+ wxString GetName(const wxDataViewItem &item) const;
+ wxBitmap& GetBitmap(const wxDataViewItem &item) const;
// helper methods to change the model
- virtual unsigned int GetColumnCount() const override { return 3;}
- virtual wxString GetColumnType(unsigned int col) const override{ return wxT("string"); }
+ virtual unsigned int GetColumnCount() const override { return 3;}
+ virtual wxString GetColumnType(unsigned int col) const override{ return wxT("string"); }
- virtual void GetValue(wxVariant &variant,
- const wxDataViewItem &item, unsigned int col) const override;
- virtual bool SetValue(const wxVariant &variant,
- const wxDataViewItem &item, unsigned int col) override;
- bool SetValue(const wxVariant &variant, const int item_idx, unsigned int col);
+ virtual void GetValue( wxVariant &variant,
+ const wxDataViewItem &item,
+ unsigned int col) const override;
+ virtual bool SetValue( const wxVariant &variant,
+ const wxDataViewItem &item,
+ unsigned int col) override;
+ bool SetValue( const wxVariant &variant,
+ const int item_idx,
+ unsigned int col);
-// wxDataViewItem MoveChildUp(const wxDataViewItem &item);
-// wxDataViewItem MoveChildDown(const wxDataViewItem &item);
// For parent move child from cur_volume_id place to new_volume_id
// Remaining items will moved up/down accordingly
- wxDataViewItem ReorganizeChildren(int cur_volume_id,
- int new_volume_id,
- const wxDataViewItem &parent);
+ wxDataViewItem ReorganizeChildren( const int cur_volume_id,
+ const int new_volume_id,
+ const wxDataViewItem &parent);
- virtual bool IsEnabled(const wxDataViewItem &item, unsigned int col) const override;
+ virtual bool IsEnabled(const wxDataViewItem &item, unsigned int col) const override;
- virtual wxDataViewItem GetParent(const wxDataViewItem &item) const override;
+ virtual wxDataViewItem GetParent(const wxDataViewItem &item) const override;
// get object item
- wxDataViewItem GetTopParent(const wxDataViewItem &item) const;
- virtual bool IsContainer(const wxDataViewItem &item) const override;
- virtual unsigned int GetChildren(const wxDataViewItem &parent,
- wxDataViewItemArray &array) const override;
+ wxDataViewItem GetTopParent(const wxDataViewItem &item) const;
+ virtual bool IsContainer(const wxDataViewItem &item) const override;
+ virtual unsigned int GetChildren(const wxDataViewItem &parent,
+ wxDataViewItemArray &array) const override;
void GetAllChildren(const wxDataViewItem &parent,wxDataViewItemArray &array) const;
// Is the container just a header or an item with all columns
// In our case it is an item with all columns
- virtual bool HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override { return true; }
+ virtual bool HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override { return true; }
- ItemType GetItemType(const wxDataViewItem &item) const ;
- wxDataViewItem GetItemByType(const wxDataViewItem &parent_item, ItemType type) const;
- wxDataViewItem GetSettingsItem(const wxDataViewItem &item) const;
- wxDataViewItem GetInstanceRootItem(const wxDataViewItem &item) const;
+ ItemType GetItemType(const wxDataViewItem &item) const ;
+ wxDataViewItem GetItemByType( const wxDataViewItem &parent_item,
+ ItemType type) const;
+ wxDataViewItem GetSettingsItem(const wxDataViewItem &item) const;
+ wxDataViewItem GetInstanceRootItem(const wxDataViewItem &item) const;
bool IsSettingsItem(const wxDataViewItem &item) const;
- void UpdateSettingsDigest(const wxDataViewItem &item, const std::vector<std::string>& categories);
+ void UpdateSettingsDigest( const wxDataViewItem &item,
+ const std::vector<std::string>& categories);
void SetVolumeBitmaps(const std::vector<wxBitmap*>& volume_bmps) { m_volume_bmps = volume_bmps; }
void SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type);
void SetAssociatedControl(wxDataViewCtrl* ctrl) { m_ctrl = ctrl; }
+ // Rescale bitmaps for existing Items
+ void Rescale();
};
// ----------------------------------------------------------------------------
-// PrusaBitmapTextRenderer
+// BitmapTextRenderer
// ----------------------------------------------------------------------------
#if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
-class PrusaBitmapTextRenderer : public wxDataViewRenderer
+class BitmapTextRenderer : public wxDataViewRenderer
#else
-class PrusaBitmapTextRenderer : public wxDataViewCustomRenderer
+class BitmapTextRenderer : public wxDataViewCustomRenderer
#endif //ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
{
public:
- PrusaBitmapTextRenderer(wxDataViewCellMode mode =
+ BitmapTextRenderer(wxDataViewCellMode mode =
#ifdef __WXOSX__
wxDATAVIEW_CELL_INERT
#else
@@ -550,7 +503,7 @@ public:
#if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
);
#else
- ) : wxDataViewCustomRenderer(wxT("PrusaDataViewBitmapText"), mode, align) {}
+ ) : wxDataViewCustomRenderer(wxT("DataViewBitmapText"), mode, align) {}
#endif //ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
bool SetValue(const wxVariant &value);
@@ -578,7 +531,7 @@ public:
bool WasCanceled() const { return m_was_unusable_symbol; }
private:
- PrusaDataViewBitmapText m_value;
+ DataViewBitmapText m_value;
bool m_was_unusable_symbol {false};
};
@@ -676,7 +629,37 @@ private:
// ----------------------------------------------------------------------------
-// PrusaDoubleSlider
+// ScalableBitmap
+// ----------------------------------------------------------------------------
+
+class ScalableBitmap
+{
+public:
+ ScalableBitmap() {};
+ ScalableBitmap( wxWindow *parent,
+ const std::string& icon_name = "",
+ const int px_cnt = 16,
+ const bool is_horizontal = false);
+
+ ~ScalableBitmap() {}
+
+ void msw_rescale();
+
+ const wxBitmap& bmp() const { return m_bmp; }
+ wxBitmap& bmp() { return m_bmp; }
+ const std::string& name() const{ return m_icon_name; }
+
+private:
+ wxWindow* m_parent{ nullptr };
+ wxBitmap m_bmp = wxBitmap();
+ std::string m_icon_name = "";
+ int m_px_cnt {16};
+ bool m_is_horizontal {false};
+};
+
+
+// ----------------------------------------------------------------------------
+// DoubleSlider
// ----------------------------------------------------------------------------
// custom message the slider sends to its parent to notify a tick-change:
@@ -693,10 +676,10 @@ enum TicksAction{
taDel
};
-class PrusaDoubleSlider : public wxControl
+class DoubleSlider : public wxControl
{
public:
- PrusaDoubleSlider(
+ DoubleSlider(
wxWindow *parent,
wxWindowID id,
int lowerValue,
@@ -708,7 +691,9 @@ public:
long style = wxSL_VERTICAL,
const wxValidator& val = wxDefaultValidator,
const wxString& name = wxEmptyString);
- ~PrusaDoubleSlider() {}
+ ~DoubleSlider() {}
+
+ void msw_rescale();
int GetMinValue() const { return m_min_value; }
int GetMaxValue() const { return m_max_value; }
@@ -717,6 +702,7 @@ public:
int GetLowerValue() const { return m_lower_value; }
int GetHigherValue() const { return m_higher_value; }
int GetActiveValue() const;
+ wxSize get_min_size() const ;
double GetLowerValueD() { return get_double_value(ssLower); }
double GetHigherValueD() { return get_double_value(ssHigher); }
wxSize DoGetBestSize() const override;
@@ -801,16 +787,16 @@ private:
int m_max_value;
int m_lower_value;
int m_higher_value;
- wxBitmap m_bmp_thumb_higher;
- wxBitmap m_bmp_thumb_lower;
- wxBitmap m_bmp_add_tick_on;
- wxBitmap m_bmp_add_tick_off;
- wxBitmap m_bmp_del_tick_on;
- wxBitmap m_bmp_del_tick_off;
- wxBitmap m_bmp_one_layer_lock_on;
- wxBitmap m_bmp_one_layer_lock_off;
- wxBitmap m_bmp_one_layer_unlock_on;
- wxBitmap m_bmp_one_layer_unlock_off;
+ ScalableBitmap m_bmp_thumb_higher;
+ ScalableBitmap m_bmp_thumb_lower;
+ ScalableBitmap m_bmp_add_tick_on;
+ ScalableBitmap m_bmp_add_tick_off;
+ ScalableBitmap m_bmp_del_tick_on;
+ ScalableBitmap m_bmp_del_tick_off;
+ ScalableBitmap m_bmp_one_layer_lock_on;
+ ScalableBitmap m_bmp_one_layer_lock_off;
+ ScalableBitmap m_bmp_one_layer_unlock_on;
+ ScalableBitmap m_bmp_one_layer_unlock_off;
SelectedSlider m_selection;
bool m_is_left_down = false;
bool m_is_right_down = false;
@@ -841,26 +827,26 @@ private:
wxPen GREY_PEN;
wxPen LIGHT_GREY_PEN;
- std::vector<wxPen*> line_pens;
- std::vector<wxPen*> segm_pens;
+ std::vector<wxPen*> m_line_pens;
+ std::vector<wxPen*> m_segm_pens;
std::set<int> m_ticks;
std::vector<std::pair<int,double>> m_values;
};
// ----------------------------------------------------------------------------
-// PrusaLockButton
+// LockButton
// ----------------------------------------------------------------------------
-class PrusaLockButton : public wxButton
+class LockButton : public wxButton
{
public:
- PrusaLockButton(
+ LockButton(
wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize);
- ~PrusaLockButton() {}
+ ~LockButton() {}
void OnButton(wxCommandEvent& event);
void OnEnterBtn(wxMouseEvent& event) { enter_button(true); event.Skip(); }
@@ -869,34 +855,72 @@ public:
bool IsLocked() const { return m_is_pushed; }
void SetLock(bool lock);
+ void msw_rescale();
+
protected:
void enter_button(const bool enter);
private:
bool m_is_pushed = false;
- wxBitmap m_bmp_lock_on;
- wxBitmap m_bmp_lock_off;
- wxBitmap m_bmp_unlock_on;
- wxBitmap m_bmp_unlock_off;
+ ScalableBitmap m_bmp_lock_on;
+ ScalableBitmap m_bmp_lock_off;
+ ScalableBitmap m_bmp_unlock_on;
+ ScalableBitmap m_bmp_unlock_off;
};
// ----------------------------------------------------------------------------
-// PrusaModeButton
+// ScalableButton
// ----------------------------------------------------------------------------
-class PrusaModeButton : public wxButton
+class ScalableButton : public wxButton
{
public:
- PrusaModeButton(
- wxWindow *parent,
- wxWindowID id,
- const wxString& mode = wxEmptyString,
- const wxBitmap& bmp_on = wxNullBitmap,
- const wxSize& size = wxDefaultSize,
- const wxPoint& pos = wxDefaultPosition);
- ~PrusaModeButton() {}
+ ScalableButton(){}
+ ScalableButton(
+ wxWindow * parent,
+ wxWindowID id,
+ const std::string& icon_name = "",
+ const wxString& label = wxEmptyString,
+ const wxSize& size = wxDefaultSize,
+ const wxPoint& pos = wxDefaultPosition,
+ long style = wxBU_EXACTFIT | wxNO_BORDER);
+
+ ScalableButton(
+ wxWindow * parent,
+ wxWindowID id,
+ const ScalableBitmap& bitmap,
+ const wxString& label = wxEmptyString,
+ long style = wxBU_EXACTFIT | wxNO_BORDER);
+
+ ~ScalableButton() {}
+
+ void SetBitmap_(const ScalableBitmap& bmp);
+
+ void msw_rescale();
+
+private:
+ wxWindow* m_parent;
+ std::string m_current_icon_name = "";
+};
+
+
+// ----------------------------------------------------------------------------
+// ModeButton
+// ----------------------------------------------------------------------------
+
+class ModeButton : public ScalableButton
+{
+public:
+ ModeButton(
+ wxWindow* parent,
+ wxWindowID id,
+ const std::string& icon_name = "",
+ const wxString& mode = wxEmptyString,
+ const wxSize& size = wxDefaultSize,
+ const wxPoint& pos = wxDefaultPosition);
+ ~ModeButton() {}
void OnButton(wxCommandEvent& event);
void OnEnterBtn(wxMouseEvent& event) { focus_button(true); event.Skip(); }
@@ -910,8 +934,6 @@ protected:
private:
bool m_is_selected = false;
- wxBitmap m_bmp_on;
- wxBitmap m_bmp_off;
wxString m_tt_selected;
wxString m_tt_focused;
};
@@ -919,47 +941,49 @@ private:
// ----------------------------------------------------------------------------
-// PrusaModeSizer
+// ModeSizer
// ----------------------------------------------------------------------------
-class PrusaModeSizer : public wxFlexGridSizer
+class ModeSizer : public wxFlexGridSizer
{
public:
- PrusaModeSizer( wxWindow *parent, int hgap = 10);
- ~PrusaModeSizer() {}
+ ModeSizer( wxWindow *parent, int hgap = 10);
+ ~ModeSizer() {}
void SetMode(const /*ConfigOptionMode*/int mode);
+ void msw_rescale();
+
private:
- std::vector<PrusaModeButton*> mode_btns;
+ std::vector<ModeButton*> m_mode_btns;
};
// ----------------------------------------------------------------------------
-// PrusaMenu
+// MenuWithSeparators
// ----------------------------------------------------------------------------
-class PrusaMenu : public wxMenu
+class MenuWithSeparators : public wxMenu
{
public:
- PrusaMenu(const wxString& title, long style = 0)
+ MenuWithSeparators(const wxString& title, long style = 0)
: wxMenu(title, style) {}
- PrusaMenu(long style = 0)
+ MenuWithSeparators(long style = 0)
: wxMenu(style) {}
- ~PrusaMenu() {}
+ ~MenuWithSeparators() {}
void DestroySeparators();
+ void SetFirstSeparator();
+ void SetSecondSeparator();
+private:
wxMenuItem* m_separator_frst { nullptr }; // use like separator before settings item
wxMenuItem* m_separator_scnd { nullptr }; // use like separator between settings items
};
-// ******************************* EXPERIMENTS **********************************************
-// ******************************************************************************************
-
#endif // slic3r_GUI_wxExtensions_hpp_