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

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Slic3r/GUI/MainFrame.pm6
-rw-r--r--resources/localization/Slic3rPE.pot2109
-rw-r--r--resources/localization/list.txt2
-rw-r--r--xs/CMakeLists.txt2
-rw-r--r--xs/src/slic3r/GUI/BonjourDialog.cpp200
-rw-r--r--xs/src/slic3r/GUI/BonjourDialog.hpp49
-rw-r--r--xs/src/slic3r/GUI/Field.cpp20
-rw-r--r--xs/src/slic3r/GUI/Field.hpp42
-rw-r--r--xs/src/slic3r/GUI/GUI.cpp24
-rw-r--r--xs/src/slic3r/GUI/GUI.hpp5
-rw-r--r--xs/src/slic3r/GUI/OptionsGroup.hpp4
-rw-r--r--xs/src/slic3r/GUI/Tab.cpp119
-rw-r--r--xs/src/slic3r/GUI/Tab.hpp14
-rw-r--r--xs/src/slic3r/Utils/Bonjour.cpp155
-rw-r--r--xs/src/slic3r/Utils/Bonjour.hpp20
-rw-r--r--xs/src/slic3r/Utils/Http.cpp46
-rw-r--r--xs/src/slic3r/Utils/Http.hpp1
-rw-r--r--xs/src/slic3r/Utils/OctoPrint.cpp42
-rw-r--r--xs/src/slic3r/Utils/OctoPrint.hpp7
-rw-r--r--xs/xsp/GUI.xsp8
-rw-r--r--xs/xsp/Utils_OctoPrint.xsp1
21 files changed, 1561 insertions, 1315 deletions
diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm
index f5a9021c0..c53237228 100644
--- a/lib/Slic3r/GUI/MainFrame.pm
+++ b/lib/Slic3r/GUI/MainFrame.pm
@@ -217,11 +217,7 @@ sub _init_tabpanel {
$self->{is_disabled_button_browse} = (!eval "use Net::Bonjour; 1") ? 1 : 0 ;
# A variable to inform C++ Tab implementation about user_agent
$self->{is_user_agent} = (eval "use LWP::UserAgent; 1") ? 1 : 0 ;
- Slic3r::GUI::create_preset_tabs($self->{no_controller},
- $self->{is_disabled_button_browse},
- $self->{is_user_agent},
- $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT,
- $BUTTON_BROWSE_EVENT, $BUTTON_TEST_EVENT);
+ Slic3r::GUI::create_preset_tabs($self->{no_controller}, $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT);
$self->{options_tabs} = {};
for my $tab_name (qw(print filament printer)) {
$self->{options_tabs}{$tab_name} = Slic3r::GUI::get_preset_tab("$tab_name");
diff --git a/resources/localization/Slic3rPE.pot b/resources/localization/Slic3rPE.pot
index b70c92257..0282e7aae 100644
--- a/resources/localization/Slic3rPE.pot
+++ b/resources/localization/Slic3rPE.pot
@@ -1,419 +1,389 @@
+# 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.
+#
+#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: Slic3rPE\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-02-28 13:53+0100\n"
+"POT-Creation-Date: 2018-03-14 15:32+0100\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"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:39
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:39
msgid "Shape"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:46
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:46
msgid "Rectangular"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:50
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1191
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:408
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:50 xs/src/slic3r/GUI/Tab.cpp:1270
+#: lib/Slic3r/GUI/Plater.pm:411
msgid "Size"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:51
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:51
msgid "Size in X and Y of the rectangular plate."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:57
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:57
msgid "Origin"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:58
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:58
msgid ""
"Distance of the 0,0 G-code coordinate from the front left corner of the "
"rectangle."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:62
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:62
msgid "Circular"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:65
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:129
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:200
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:211
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:325
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:336
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:355
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:434
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:781
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:801
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:860
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:878
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:896
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1044
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1052
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1094
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1103
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1113
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1121
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1129
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1215
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1421
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1491
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1527
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1704
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1711
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1718
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1727
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1737
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1747
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:65 xs/src/libslic3r/PrintConfig.cpp:129
+#: xs/src/libslic3r/PrintConfig.cpp:200 xs/src/libslic3r/PrintConfig.cpp:211
+#: xs/src/libslic3r/PrintConfig.cpp:325 xs/src/libslic3r/PrintConfig.cpp:336
+#: xs/src/libslic3r/PrintConfig.cpp:355 xs/src/libslic3r/PrintConfig.cpp:434
+#: xs/src/libslic3r/PrintConfig.cpp:781 xs/src/libslic3r/PrintConfig.cpp:801
+#: xs/src/libslic3r/PrintConfig.cpp:860 xs/src/libslic3r/PrintConfig.cpp:878
+#: xs/src/libslic3r/PrintConfig.cpp:896 xs/src/libslic3r/PrintConfig.cpp:1051
+#: xs/src/libslic3r/PrintConfig.cpp:1059 xs/src/libslic3r/PrintConfig.cpp:1101
+#: xs/src/libslic3r/PrintConfig.cpp:1110 xs/src/libslic3r/PrintConfig.cpp:1120
+#: xs/src/libslic3r/PrintConfig.cpp:1128 xs/src/libslic3r/PrintConfig.cpp:1136
+#: xs/src/libslic3r/PrintConfig.cpp:1222 xs/src/libslic3r/PrintConfig.cpp:1428
+#: xs/src/libslic3r/PrintConfig.cpp:1498 xs/src/libslic3r/PrintConfig.cpp:1534
+#: xs/src/libslic3r/PrintConfig.cpp:1711 xs/src/libslic3r/PrintConfig.cpp:1718
+#: xs/src/libslic3r/PrintConfig.cpp:1725 xs/src/libslic3r/PrintConfig.cpp:1734
+#: xs/src/libslic3r/PrintConfig.cpp:1744 xs/src/libslic3r/PrintConfig.cpp:1754
msgid "mm"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:66
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:431
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:66 xs/src/libslic3r/PrintConfig.cpp:431
msgid "Diameter"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:67
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:67
msgid ""
"Diameter of the print bed. It is assumed that origin (0,0) is located in the "
"center."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:71
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:150
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:92
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:71
+#: xs/src/libslic3r/GCode/PreviewData.cpp:150
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:92
msgid "Custom"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:75
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:75
msgid "Load shape from STL..."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:120
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:120
msgid "Settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:298
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:298
msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:315
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:315
msgid "Error! "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:324
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:324
msgid "The selected file contains no geometry."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:328
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:328
msgid ""
"The selected file contains several disjoint areas. This is not supported."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.hpp:42
+#: xs/src/slic3r/GUI/BedShapeDialog.hpp:42
msgid "Bed Shape"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:224
+#: xs/src/slic3r/GUI/GUI.cpp:234
msgid "Array of language names and identifiers should have the same size."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235
+#: xs/src/slic3r/GUI/GUI.cpp:245
msgid "Select the language"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235
+#: xs/src/slic3r/GUI/GUI.cpp:245
msgid "Language"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:300
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:170
+#: xs/src/slic3r/GUI/GUI.cpp:312 xs/src/libslic3r/PrintConfig.cpp:170
msgid "Default"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:325
+#: xs/src/slic3r/GUI/GUI.cpp:337
msgid "Change Application Language"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332
+#: xs/src/slic3r/GUI/GUI.cpp:344
msgid "Application will be restarted"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332
+#: xs/src/slic3r/GUI/GUI.cpp:344
msgid "Attention!"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:339
+#: xs/src/slic3r/GUI/GUI.cpp:351
msgid "&Localization"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:488
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:470
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300
+#: xs/src/slic3r/GUI/GUI.cpp:494 lib/Slic3r/GUI/MainFrame.pm:465
+#: lib/Slic3r/GUI/Plater.pm:1304
msgid "Error"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:493
+#: xs/src/slic3r/GUI/GUI.cpp:499
msgid "Notice"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:498
+#: xs/src/slic3r/GUI/GUI.cpp:504
msgid "GLUquadricObjPtr | Attempt to free unreferenced scalar"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:500
+#: xs/src/slic3r/GUI/GUI.cpp:506
msgid "Warning"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:50
+#: xs/src/slic3r/GUI/GUI.cpp:655
+msgid "Support"
+msgstr ""
+
+#: xs/src/slic3r/GUI/GUI.cpp:658
+msgid "Select what kind of support do you need"
+msgstr ""
+
+#: xs/src/slic3r/GUI/GUI.cpp:659 xs/src/libslic3r/GCode/PreviewData.cpp:137
+msgid "None"
+msgstr ""
+
+#: xs/src/slic3r/GUI/GUI.cpp:660 xs/src/libslic3r/PrintConfig.cpp:1415
+msgid "Support on build plate only"
+msgstr ""
+
+#: xs/src/slic3r/GUI/GUI.cpp:661
+msgid "Everywhere"
+msgstr ""
+
+#: xs/src/slic3r/GUI/GUI.cpp:673 xs/src/slic3r/GUI/Tab.cpp:441
+msgid "Brim"
+msgstr ""
+
+#: xs/src/slic3r/GUI/GUI.cpp:675
+msgid ""
+"This flag enables the brim that will be printed around each object on the "
+"first layer."
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:57
msgid "Save current "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:51
+#: xs/src/slic3r/GUI/Tab.cpp:58
msgid "Delete this preset"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:313
+#: xs/src/slic3r/GUI/Tab.cpp:383
msgid "Layers and perimeters"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:314
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:777
+#: xs/src/slic3r/GUI/Tab.cpp:384 xs/src/libslic3r/PrintConfig.cpp:777
msgid "Layer height"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:318
+#: xs/src/slic3r/GUI/Tab.cpp:388
msgid "Vertical shells"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:329
+#: xs/src/slic3r/GUI/Tab.cpp:399
msgid "Horizontal shells"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:330
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1314
+#: xs/src/slic3r/GUI/Tab.cpp:400 xs/src/libslic3r/PrintConfig.cpp:1321
msgid "Solid layers"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:335
+#: xs/src/slic3r/GUI/Tab.cpp:405
msgid "Quality (slower slicing)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:342
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:356
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:449
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:452
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:831
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1113
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:107
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:208
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:736
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1733
+#: xs/src/slic3r/GUI/Tab.cpp:412 xs/src/slic3r/GUI/Tab.cpp:426
+#: xs/src/slic3r/GUI/Tab.cpp:519 xs/src/slic3r/GUI/Tab.cpp:522
+#: xs/src/slic3r/GUI/Tab.cpp:905 xs/src/slic3r/GUI/Tab.cpp:1191
+#: xs/src/libslic3r/PrintConfig.cpp:107 xs/src/libslic3r/PrintConfig.cpp:208
+#: xs/src/libslic3r/PrintConfig.cpp:736 xs/src/libslic3r/PrintConfig.cpp:1740
msgid "Advanced"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:346
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:347
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:664
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:87
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:247
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:488
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:502
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:540
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:681
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:691
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:709
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:727
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:746
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1263
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1280
+#: xs/src/slic3r/GUI/Tab.cpp:416 xs/src/slic3r/GUI/Tab.cpp:417
+#: xs/src/slic3r/GUI/Tab.cpp:735 xs/src/libslic3r/PrintConfig.cpp:87
+#: xs/src/libslic3r/PrintConfig.cpp:247 xs/src/libslic3r/PrintConfig.cpp:488
+#: xs/src/libslic3r/PrintConfig.cpp:502 xs/src/libslic3r/PrintConfig.cpp:540
+#: xs/src/libslic3r/PrintConfig.cpp:681 xs/src/libslic3r/PrintConfig.cpp:691
+#: xs/src/libslic3r/PrintConfig.cpp:709 xs/src/libslic3r/PrintConfig.cpp:727
+#: xs/src/libslic3r/PrintConfig.cpp:746 xs/src/libslic3r/PrintConfig.cpp:1270
+#: xs/src/libslic3r/PrintConfig.cpp:1287
msgid "Infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:352
+#: xs/src/slic3r/GUI/Tab.cpp:422
msgid "Reducing printing time"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:364
+#: xs/src/slic3r/GUI/Tab.cpp:434
msgid "Skirt and brim"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:365
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:146
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:88
+#: xs/src/slic3r/GUI/Tab.cpp:435 xs/src/libslic3r/GCode/PreviewData.cpp:146
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:88
msgid "Skirt"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:371
-msgid "Brim"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:374
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:375
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:191
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1030
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1380
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1387
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1399
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1409
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1417
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1432
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1453
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1464
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1480
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1489
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1498
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1509
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1525
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1533
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1534
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1543
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1551
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1565
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:147
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:89
+#: xs/src/slic3r/GUI/Tab.cpp:444 xs/src/slic3r/GUI/Tab.cpp:445
+#: xs/src/libslic3r/PrintConfig.cpp:191 xs/src/libslic3r/PrintConfig.cpp:1037
+#: xs/src/libslic3r/PrintConfig.cpp:1387 xs/src/libslic3r/PrintConfig.cpp:1394
+#: xs/src/libslic3r/PrintConfig.cpp:1406 xs/src/libslic3r/PrintConfig.cpp:1416
+#: xs/src/libslic3r/PrintConfig.cpp:1424 xs/src/libslic3r/PrintConfig.cpp:1439
+#: xs/src/libslic3r/PrintConfig.cpp:1460 xs/src/libslic3r/PrintConfig.cpp:1471
+#: xs/src/libslic3r/PrintConfig.cpp:1487 xs/src/libslic3r/PrintConfig.cpp:1496
+#: xs/src/libslic3r/PrintConfig.cpp:1505 xs/src/libslic3r/PrintConfig.cpp:1516
+#: xs/src/libslic3r/PrintConfig.cpp:1532 xs/src/libslic3r/PrintConfig.cpp:1540
+#: xs/src/libslic3r/PrintConfig.cpp:1541 xs/src/libslic3r/PrintConfig.cpp:1550
+#: xs/src/libslic3r/PrintConfig.cpp:1558 xs/src/libslic3r/PrintConfig.cpp:1572
+#: xs/src/libslic3r/GCode/PreviewData.cpp:147
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:89
msgid "Support material"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:380
+#: xs/src/slic3r/GUI/Tab.cpp:450
msgid "Raft"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:384
+#: xs/src/slic3r/GUI/Tab.cpp:454
msgid "Options for support material and raft"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:398
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:118
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:278
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:635
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:747
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:979
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1201
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1251
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1302
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1625
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:71
+#: xs/src/slic3r/GUI/Tab.cpp:468 xs/src/libslic3r/PrintConfig.cpp:118
+#: xs/src/libslic3r/PrintConfig.cpp:278 xs/src/libslic3r/PrintConfig.cpp:635
+#: xs/src/libslic3r/PrintConfig.cpp:747 xs/src/libslic3r/PrintConfig.cpp:986
+#: xs/src/libslic3r/PrintConfig.cpp:1208 xs/src/libslic3r/PrintConfig.cpp:1258
+#: xs/src/libslic3r/PrintConfig.cpp:1309 xs/src/libslic3r/PrintConfig.cpp:1632
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:71
msgid "Speed"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:399
+#: xs/src/slic3r/GUI/Tab.cpp:469
msgid "Speed for print moves"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:411
+#: xs/src/slic3r/GUI/Tab.cpp:481
msgid "Speed for non-print moves"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:414
+#: xs/src/slic3r/GUI/Tab.cpp:484
msgid "Modifiers"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:417
+#: xs/src/slic3r/GUI/Tab.cpp:487
msgid "Acceleration control (advanced)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:424
+#: xs/src/slic3r/GUI/Tab.cpp:494
msgid "Autospeed (advanced)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:430
+#: xs/src/slic3r/GUI/Tab.cpp:500
msgid "Multiple Extruders"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:431
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:966
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:308
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:702
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:958
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1272
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1445
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1471
+#: xs/src/slic3r/GUI/Tab.cpp:501 xs/src/slic3r/GUI/Tab.cpp:1040
+#: xs/src/libslic3r/PrintConfig.cpp:308 xs/src/libslic3r/PrintConfig.cpp:702
+#: xs/src/libslic3r/PrintConfig.cpp:965 xs/src/libslic3r/PrintConfig.cpp:1279
+#: xs/src/libslic3r/PrintConfig.cpp:1452 xs/src/libslic3r/PrintConfig.cpp:1478
msgid "Extruders"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:438
+#: xs/src/slic3r/GUI/Tab.cpp:508
msgid "Ooze prevention"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:442
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:149
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:91
+#: xs/src/slic3r/GUI/Tab.cpp:512 xs/src/libslic3r/GCode/PreviewData.cpp:149
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:91
msgid "Wipe tower"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:453
+#: xs/src/slic3r/GUI/Tab.cpp:523
msgid "Extrusion width"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:463
+#: xs/src/slic3r/GUI/Tab.cpp:533
msgid "Overlap"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:466
+#: xs/src/slic3r/GUI/Tab.cpp:536
msgid "Flow"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:469
+#: xs/src/slic3r/GUI/Tab.cpp:539
msgid "Other"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:476
+#: xs/src/slic3r/GUI/Tab.cpp:546
msgid "Output options"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:477
+#: xs/src/slic3r/GUI/Tab.cpp:547
msgid "Sequential printing"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:479
+#: xs/src/slic3r/GUI/Tab.cpp:549
msgid "Extruder clearance (mm)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:488
+#: xs/src/slic3r/GUI/Tab.cpp:558
msgid "Output file"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:494
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1001
+#: xs/src/slic3r/GUI/Tab.cpp:564 xs/src/libslic3r/PrintConfig.cpp:1008
msgid "Post-processing scripts"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:500
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:501
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:859
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:860
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1156
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1157
+#: xs/src/slic3r/GUI/Tab.cpp:570 xs/src/slic3r/GUI/Tab.cpp:571
+#: xs/src/slic3r/GUI/Tab.cpp:933 xs/src/slic3r/GUI/Tab.cpp:934
+#: xs/src/slic3r/GUI/Tab.cpp:1234 xs/src/slic3r/GUI/Tab.cpp:1235
msgid "Notes"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:507
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:867
+#: xs/src/slic3r/GUI/Tab.cpp:577 xs/src/slic3r/GUI/Tab.cpp:941
msgid "Dependencies"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:508
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:868
+#: xs/src/slic3r/GUI/Tab.cpp:578 xs/src/slic3r/GUI/Tab.cpp:942
msgid "Profile dependencies"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:509
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:869
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1668
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:143
+#: xs/src/slic3r/GUI/Tab.cpp:579 xs/src/slic3r/GUI/Tab.cpp:943
+#: xs/src/slic3r/GUI/Tab.cpp:1746 xs/src/libslic3r/PrintConfig.cpp:143
msgid "Compatible printers"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:533
-#, no-c-format
+#: xs/src/slic3r/GUI/Tab.cpp:603
+#, possible-c-format
msgid ""
"The Spiral Vase mode requires:\n"
"- one perimeter\n"
@@ -425,11 +395,11 @@ msgid ""
"Shall I adjust those settings in order to enable Spiral Vase?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:540
+#: xs/src/slic3r/GUI/Tab.cpp:610
msgid "Spiral Vase"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:560
+#: xs/src/slic3r/GUI/Tab.cpp:630
msgid ""
"The Wipe Tower currently supports only:\n"
"- first layer height 0.2mm\n"
@@ -438,13 +408,12 @@ msgid ""
"Shall I adjust those settings in order to enable the Wipe Tower?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:564
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:585
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:602
+#: xs/src/slic3r/GUI/Tab.cpp:634 xs/src/slic3r/GUI/Tab.cpp:656
+#: xs/src/slic3r/GUI/Tab.cpp:673
msgid "Wipe Tower"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:581
+#: xs/src/slic3r/GUI/Tab.cpp:652
msgid ""
"The Wipe Tower currently supports the non-soluble supports only\n"
"if they are printed with the current extruder without triggering a tool "
@@ -455,7 +424,7 @@ msgid ""
"Shall I adjust those settings in order to enable the Wipe Tower?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:599
+#: xs/src/slic3r/GUI/Tab.cpp:670
msgid ""
"For the Wipe Tower to work with the soluble supports, the support layers\n"
"need to be synchronized with the object layers.\n"
@@ -463,7 +432,7 @@ msgid ""
"Shall I synchronize support layers in order to enable the Wipe Tower?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:617
+#: xs/src/slic3r/GUI/Tab.cpp:688
msgid ""
"Supports work better, if the following feature is enabled:\n"
"- Detect bridging perimeters\n"
@@ -471,351 +440,356 @@ msgid ""
"Shall I adjust those settings for supports?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:620
+#: xs/src/slic3r/GUI/Tab.cpp:691
msgid "Support Generator"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662
+#: xs/src/slic3r/GUI/Tab.cpp:733
msgid "The "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662
-#, no-c-format
+#: xs/src/slic3r/GUI/Tab.cpp:733
+#, possible-c-format
msgid ""
" infill pattern is not supposed to work at 100% density.\n"
"\n"
"Shall I switch to rectilinear fill pattern?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:786
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:787
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:368
+#: xs/src/slic3r/GUI/Tab.cpp:860 xs/src/slic3r/GUI/Tab.cpp:861
+#: lib/Slic3r/GUI/Plater.pm:368
msgid "Filament"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:794
+#: xs/src/slic3r/GUI/Tab.cpp:868
msgid "Temperature "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:795
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1234
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:307
+#: xs/src/slic3r/GUI/Tab.cpp:869 xs/src/slic3r/GUI/Tab.cpp:1313
+#: xs/src/libslic3r/PrintConfig.cpp:307
msgid "Extruder"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:800
+#: xs/src/slic3r/GUI/Tab.cpp:874
msgid "Bed"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:805
+#: xs/src/slic3r/GUI/Tab.cpp:879
msgid "Cooling"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:806
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:922
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1695
+#: xs/src/slic3r/GUI/Tab.cpp:880 xs/src/libslic3r/PrintConfig.cpp:929
+#: xs/src/libslic3r/PrintConfig.cpp:1702
msgid "Enable"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:817
+#: xs/src/slic3r/GUI/Tab.cpp:891
msgid "Fan settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:818
+#: xs/src/slic3r/GUI/Tab.cpp:892
msgid "Fan speed"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:826
+#: xs/src/slic3r/GUI/Tab.cpp:900
msgid "Cooling thresholds"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:832
+#: xs/src/slic3r/GUI/Tab.cpp:906
msgid "Filament properties"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:836
+#: xs/src/slic3r/GUI/Tab.cpp:910
msgid "Print speed override"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:846
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1119
+#: xs/src/slic3r/GUI/Tab.cpp:920 xs/src/slic3r/GUI/Tab.cpp:1197
msgid "Custom G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:847
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1120
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1342
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1357
+#: xs/src/slic3r/GUI/Tab.cpp:921 xs/src/slic3r/GUI/Tab.cpp:1198
+#: xs/src/libslic3r/PrintConfig.cpp:1349 xs/src/libslic3r/PrintConfig.cpp:1364
msgid "Start G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:853
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1126
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:217
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:227
+#: xs/src/slic3r/GUI/Tab.cpp:927 xs/src/slic3r/GUI/Tab.cpp:1204
+#: xs/src/libslic3r/PrintConfig.cpp:217 xs/src/libslic3r/PrintConfig.cpp:227
msgid "End G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:937
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:11
+#: xs/src/slic3r/GUI/Tab.cpp:1011 xs/src/slic3r/GUI/Preferences.cpp:11
msgid "General"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:938
+#: xs/src/slic3r/GUI/Tab.cpp:1012
msgid "Size and coordinates"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:940
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:34
+#: xs/src/slic3r/GUI/Tab.cpp:1014 xs/src/libslic3r/PrintConfig.cpp:34
msgid "Bed shape"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:942
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1637
+#: xs/src/slic3r/GUI/Tab.cpp:1016 xs/src/slic3r/GUI/Tab.cpp:1715
msgid " Set "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:962
+#: xs/src/slic3r/GUI/Tab.cpp:1036
msgid "Capabilities"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:967
+#: xs/src/slic3r/GUI/Tab.cpp:1041
msgid "Number of extruders of the printer."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:989
+#: xs/src/slic3r/GUI/Tab.cpp:1063
msgid "USB/Serial connection"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:990
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1193
+#: xs/src/slic3r/GUI/Tab.cpp:1064 xs/src/libslic3r/PrintConfig.cpp:1200
msgid "Serial port"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:995
+#: xs/src/slic3r/GUI/Tab.cpp:1069
msgid "Rescan serial ports"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1004
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1072
+#: xs/src/slic3r/GUI/Tab.cpp:1078 xs/src/slic3r/GUI/Tab.cpp:1125
msgid "Test"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017
+#: xs/src/slic3r/GUI/Tab.cpp:1091
msgid "Connection to printer works correctly."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017
+#: xs/src/slic3r/GUI/Tab.cpp:1091 xs/src/slic3r/GUI/Tab.cpp:1135
msgid "Success!"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1020
+#: xs/src/slic3r/GUI/Tab.cpp:1094
msgid "Connection failed."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1032
+#: xs/src/slic3r/GUI/Tab.cpp:1106
msgid "OctoPrint upload"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1035
+#: xs/src/slic3r/GUI/Tab.cpp:1109 xs/src/slic3r/GUI/Tab.cpp:1156
msgid " Browse "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1110
+#: xs/src/slic3r/GUI/Tab.cpp:1135 lib/Slic3r/GUI/MainFrame.pm:209
+msgid "Connection to OctoPrint works correctly."
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1138
+msgid "Could not connect to OctoPrint"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1138
+msgid "Note: OctoPrint version at least 1.1.0 is required."
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1162
+msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1163
+msgid "Open CA certificate file"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1177
+msgid ""
+"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-"
+"signed certificate."
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1188
msgid "Firmware"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1132
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:48
+#: xs/src/slic3r/GUI/Tab.cpp:1210 xs/src/libslic3r/PrintConfig.cpp:48
msgid "Before layer change G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1138
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:766
+#: xs/src/slic3r/GUI/Tab.cpp:1216 xs/src/libslic3r/PrintConfig.cpp:766
msgid "After layer change G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1144
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1602
+#: xs/src/slic3r/GUI/Tab.cpp:1222 xs/src/libslic3r/PrintConfig.cpp:1609
msgid "Tool change G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1150
+#: xs/src/slic3r/GUI/Tab.cpp:1228
msgid "Between objects G-code (for sequential printing)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1187
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:400
+#: xs/src/slic3r/GUI/Tab.cpp:1266 xs/src/libslic3r/GCode/PreviewData.cpp:400
#, possible-c-format
msgid "Extruder %d"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1194
+#: xs/src/slic3r/GUI/Tab.cpp:1273
msgid "Layer height limits"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1199
+#: xs/src/slic3r/GUI/Tab.cpp:1278
msgid "Position (for multi-extruder printers)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1202
+#: xs/src/slic3r/GUI/Tab.cpp:1281
msgid "Retraction"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1205
+#: xs/src/slic3r/GUI/Tab.cpp:1284
msgid "Only lift Z"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1218
+#: xs/src/slic3r/GUI/Tab.cpp:1297
msgid ""
"Retraction when tool is disabled (advanced settings for multi-extruder "
"setups)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1222
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:150
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2125
+#: xs/src/slic3r/GUI/Tab.cpp:1301 lib/Slic3r/GUI/Plater.pm:150
+#: lib/Slic3r/GUI/Plater.pm:2095
msgid "Preview"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1312
+#: xs/src/slic3r/GUI/Tab.cpp:1386
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 ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1314
+#: xs/src/slic3r/GUI/Tab.cpp:1388
msgid "Firmware Retraction"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469
+#: xs/src/slic3r/GUI/Tab.cpp:1547
msgid "Default "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469
+#: xs/src/slic3r/GUI/Tab.cpp:1547
msgid " preset"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1470
+#: xs/src/slic3r/GUI/Tab.cpp:1548
msgid " preset\n"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488
+#: xs/src/slic3r/GUI/Tab.cpp:1566
msgid ""
"\n"
"\n"
"is not compatible with printer\n"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488
+#: xs/src/slic3r/GUI/Tab.cpp:1566
msgid ""
"\n"
"\n"
"and it has the following unsaved changes:"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1489
+#: xs/src/slic3r/GUI/Tab.cpp:1567
msgid ""
"\n"
"\n"
"has the following unsaved changes:"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1491
+#: xs/src/slic3r/GUI/Tab.cpp:1569
msgid ""
"\n"
"\n"
"Discard changes and continue anyway?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1492
+#: xs/src/slic3r/GUI/Tab.cpp:1570
msgid "Unsaved Changes"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1560
+#: xs/src/slic3r/GUI/Tab.cpp:1638
msgid "The supplied name is empty. It can't be saved."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580
+#: xs/src/slic3r/GUI/Tab.cpp:1658
msgid "remove"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580
+#: xs/src/slic3r/GUI/Tab.cpp:1658
msgid "delete"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581
+#: xs/src/slic3r/GUI/Tab.cpp:1659
msgid "Are you sure you want to "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581
+#: xs/src/slic3r/GUI/Tab.cpp:1659
msgid " the selected preset?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582
+#: xs/src/slic3r/GUI/Tab.cpp:1660
msgid "Remove"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:178
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:196
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021
+#: xs/src/slic3r/GUI/Tab.cpp:1660 lib/Slic3r/GUI/Plater.pm:178
+#: lib/Slic3r/GUI/Plater.pm:196 lib/Slic3r/GUI/Plater.pm:1991
msgid "Delete"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1583
+#: xs/src/slic3r/GUI/Tab.cpp:1661
msgid " Preset"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1636
+#: xs/src/slic3r/GUI/Tab.cpp:1714
msgid "All"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1667
+#: xs/src/slic3r/GUI/Tab.cpp:1745
msgid "Select the printers this profile is compatible with."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645
+#: xs/src/slic3r/GUI/Tab.cpp:1834 lib/Slic3r/GUI/MainFrame.pm:509
+#: lib/Slic3r/GUI/Plater.pm:1615
msgid "Save "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751
+#: xs/src/slic3r/GUI/Tab.cpp:1834
msgid " as:"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1785
+#: xs/src/slic3r/GUI/Tab.cpp:1868
msgid ""
"The supplied name is not valid; the following characters are not allowed:"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1788
+#: xs/src/slic3r/GUI/Tab.cpp:1871
msgid "The supplied name is not available."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:182
+#: xs/src/slic3r/GUI/Tab.hpp:185
msgid "Print Settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:202
+#: xs/src/slic3r/GUI/Tab.hpp:205
msgid "Filament Settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:228
+#: xs/src/slic3r/GUI/Tab.hpp:226
msgid "Printer Settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:248
+#: xs/src/slic3r/GUI/Tab.hpp:240
msgid "Save preset"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Field.cpp:42
+#: xs/src/slic3r/GUI/Field.cpp:59
msgid "default"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:26
+#: xs/src/slic3r/GUI/PresetHints.cpp:27
#, possible-c-format
msgid ""
"If estimated layer time is below ~%ds, fan will run at %d%% and print speed "
@@ -823,7 +797,7 @@ msgid ""
"speed will never be reduced below %dmm/s)."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:30
+#: xs/src/slic3r/GUI/PresetHints.cpp:31
#, possible-c-format
msgid ""
"\n"
@@ -831,330 +805,355 @@ msgid ""
"proportionally decreasing speed between %d%% and %d%%."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:34
+#: xs/src/slic3r/GUI/PresetHints.cpp:35
msgid ""
"\n"
"During the other layers, fan "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:36
+#: xs/src/slic3r/GUI/PresetHints.cpp:37
msgid "Fan "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:41
+#: xs/src/slic3r/GUI/PresetHints.cpp:42
#, possible-c-format
msgid "will always run at %d%% "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:44
+#: xs/src/slic3r/GUI/PresetHints.cpp:45
#, possible-c-format
msgid "except for the first %d layers"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:48
+#: xs/src/slic3r/GUI/PresetHints.cpp:49
msgid "except for the first layer"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:50
+#: xs/src/slic3r/GUI/PresetHints.cpp:51
msgid "will be turned off."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:151
+#: xs/src/slic3r/GUI/PresetHints.cpp:152
msgid "external perimeters"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:160
+#: xs/src/slic3r/GUI/PresetHints.cpp:161
msgid "perimeters"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:169
+#: xs/src/slic3r/GUI/PresetHints.cpp:170
msgid "infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:179
+#: xs/src/slic3r/GUI/PresetHints.cpp:180
msgid "solid infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:187
+#: xs/src/slic3r/GUI/PresetHints.cpp:188
msgid "top solid infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:198
+#: xs/src/slic3r/GUI/PresetHints.cpp:199
msgid "support"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:208
+#: xs/src/slic3r/GUI/PresetHints.cpp:209
msgid "support interface"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214
+#: xs/src/slic3r/GUI/PresetHints.cpp:215
msgid "First layer volumetric"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214
+#: xs/src/slic3r/GUI/PresetHints.cpp:215
msgid "Bridging volumetric"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214
+#: xs/src/slic3r/GUI/PresetHints.cpp:215
msgid "Volumetric"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:215
+#: xs/src/slic3r/GUI/PresetHints.cpp:216
msgid " flow rate is maximized "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:218
+#: xs/src/slic3r/GUI/PresetHints.cpp:219
msgid "by the print profile maximum"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:219
+#: xs/src/slic3r/GUI/PresetHints.cpp:220
msgid "when printing "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:220
+#: xs/src/slic3r/GUI/PresetHints.cpp:221
msgid " with a volumetric rate "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:224
+#: xs/src/slic3r/GUI/PresetHints.cpp:225
#, possible-c-format
msgid "%3.2f mm³/s"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:226
+#: xs/src/slic3r/GUI/PresetHints.cpp:227
#, possible-c-format
msgid " at filament speed %3.2f mm/s."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:245
+#: xs/src/slic3r/GUI/PresetHints.cpp:246
msgid ""
"Recommended object thin wall thickness: Not available due to invalid layer "
"height."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:262
+#: xs/src/slic3r/GUI/PresetHints.cpp:263
#, possible-c-format
msgid "Recommended object thin wall thickness for layer height %.2f and "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:269
+#: xs/src/slic3r/GUI/PresetHints.cpp:270
#, possible-c-format
msgid "%d lines: %.2lf mm"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.hpp:17
+#: xs/src/slic3r/GUI/Preferences.hpp:17
msgid "Preferences"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:27
+#: xs/src/slic3r/GUI/Preferences.cpp:27
msgid "Remember output directory"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:29
+#: xs/src/slic3r/GUI/Preferences.cpp:29
msgid ""
"If this is enabled, Slic3r will prompt the last output directory instead of "
"the one containing the input files."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:35
+#: xs/src/slic3r/GUI/Preferences.cpp:35
msgid "Auto-center parts"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:37
+#: xs/src/slic3r/GUI/Preferences.cpp:37
msgid ""
"If this is enabled, Slic3r will auto-center objects around the print bed "
"center."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:43
+#: xs/src/slic3r/GUI/Preferences.cpp:43
msgid "Background processing"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:45
+#: xs/src/slic3r/GUI/Preferences.cpp:45
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 ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:51
+#: xs/src/slic3r/GUI/Preferences.cpp:51
msgid "Disable USB/serial connection"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:53
+#: xs/src/slic3r/GUI/Preferences.cpp:53
msgid ""
"Disable communication with the printer over a serial / USB cable. This "
"simplifies the user interface in case the printer is never attached to the "
"computer."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:59
+#: xs/src/slic3r/GUI/Preferences.cpp:59
msgid "Suppress \" - default - \" presets"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:61
+#: xs/src/slic3r/GUI/Preferences.cpp:61
msgid ""
"Suppress \" - default - \" presets in the Print / Filament / Printer "
"selections once there are any other valid presets available."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:67
+#: xs/src/slic3r/GUI/Preferences.cpp:67
msgid "Show incompatible print and filament presets"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:69
+#: xs/src/slic3r/GUI/Preferences.cpp:69
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 ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:75
+#: xs/src/slic3r/GUI/Preferences.cpp:75
msgid "Use legacy OpenGL 1.1 rendering"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:77
+#: xs/src/slic3r/GUI/Preferences.cpp:77
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 ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:101
+#: xs/src/slic3r/GUI/Preferences.cpp:101
msgid "You need to restart Slic3r to make the changes effective."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:26
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:53
+msgid "Network lookup"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:66
+msgid "Address"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:67
+msgid "Hostname"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:68
+msgid "Service name"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:69
+msgid "OctoPrint version"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:187
+msgid "Searching for devices"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:194
+msgid "Finished."
+msgstr ""
+
+#: xs/src/slic3r/Utils/OctoPrint.cpp:53
+msgid "G-code file successfully uploaded to the OctoPrint server"
+msgstr ""
+
+#: xs/src/slic3r/Utils/OctoPrint.cpp:67
+msgid "Error while uploading to the OctoPrint server"
+msgstr ""
+
+#: xs/src/slic3r/Utils/OctoPrint.cpp:102
+msgid "Invalid API key"
+msgstr ""
+
+#: xs/src/libslic3r/PrintConfig.cpp:26
msgid "Avoid crossing perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:27
+#: xs/src/libslic3r/PrintConfig.cpp:27
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:38
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1572
+#: xs/src/libslic3r/PrintConfig.cpp:38 xs/src/libslic3r/PrintConfig.cpp:1579
msgid "Other layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:39
+#: xs/src/libslic3r/PrintConfig.cpp:39
msgid ""
"Bed temperature for layers after the first one. Set this to zero to disable "
"bed temperature control commands in the output."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:42
+#: xs/src/libslic3r/PrintConfig.cpp:42
msgid "Bed temperature"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:49
+#: xs/src/libslic3r/PrintConfig.cpp:49
msgid ""
"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]."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:59
+#: xs/src/libslic3r/PrintConfig.cpp:59
msgid "Between objects G-code"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:60
+#: xs/src/libslic3r/PrintConfig.cpp:60
msgid ""
"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."
+"variables for all Slic3r settings, so you can put a \"M109 "
+"S[first_layer_temperature]\" command wherever you want."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:68
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370
+#: xs/src/libslic3r/PrintConfig.cpp:68 lib/Slic3r/GUI/MainFrame.pm:364
msgid "Bottom"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:69
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:239
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:290
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:298
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:604
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:762
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:778
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:941
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:989
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1152
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1583
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1639
+#: xs/src/libslic3r/PrintConfig.cpp:69 xs/src/libslic3r/PrintConfig.cpp:239
+#: xs/src/libslic3r/PrintConfig.cpp:290 xs/src/libslic3r/PrintConfig.cpp:298
+#: xs/src/libslic3r/PrintConfig.cpp:604 xs/src/libslic3r/PrintConfig.cpp:762
+#: xs/src/libslic3r/PrintConfig.cpp:778 xs/src/libslic3r/PrintConfig.cpp:948
+#: xs/src/libslic3r/PrintConfig.cpp:996 xs/src/libslic3r/PrintConfig.cpp:1159
+#: xs/src/libslic3r/PrintConfig.cpp:1590 xs/src/libslic3r/PrintConfig.cpp:1646
msgid "Layers and Perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:70
+#: xs/src/libslic3r/PrintConfig.cpp:70
msgid "Number of solid layers to generate on bottom surfaces."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:72
+#: xs/src/libslic3r/PrintConfig.cpp:72
msgid "Bottom solid layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:77
+#: xs/src/libslic3r/PrintConfig.cpp:77
msgid "Bridge"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:78
+#: xs/src/libslic3r/PrintConfig.cpp:78
msgid ""
"This is the acceleration your printer will use for bridges. Set zero to "
"disable acceleration control for bridges."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:80
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:174
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:576
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:684
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:952
+#: xs/src/libslic3r/PrintConfig.cpp:80 xs/src/libslic3r/PrintConfig.cpp:174
+#: xs/src/libslic3r/PrintConfig.cpp:576 xs/src/libslic3r/PrintConfig.cpp:684
+#: xs/src/libslic3r/PrintConfig.cpp:959
msgid "mm/s²"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:86
+#: xs/src/libslic3r/PrintConfig.cpp:86
msgid "Bridging angle"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:88
+#: xs/src/libslic3r/PrintConfig.cpp:88
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:91
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:492
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1170
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1181
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1401
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1557
+#: xs/src/libslic3r/PrintConfig.cpp:91 xs/src/libslic3r/PrintConfig.cpp:492
+#: xs/src/libslic3r/PrintConfig.cpp:1177 xs/src/libslic3r/PrintConfig.cpp:1188
+#: xs/src/libslic3r/PrintConfig.cpp:1408 xs/src/libslic3r/PrintConfig.cpp:1564
msgid "°"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:97
+#: xs/src/libslic3r/PrintConfig.cpp:97
msgid "Bridges fan speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:98
+#: xs/src/libslic3r/PrintConfig.cpp:98
msgid "This fan speed is enforced during all bridges and overhangs."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:99
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:504
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:789
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:850
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1060
+#: xs/src/libslic3r/PrintConfig.cpp:99 xs/src/libslic3r/PrintConfig.cpp:504
+#: xs/src/libslic3r/PrintConfig.cpp:789 xs/src/libslic3r/PrintConfig.cpp:850
+#: xs/src/libslic3r/PrintConfig.cpp:1067
msgid "%"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:106
+#: xs/src/libslic3r/PrintConfig.cpp:106
msgid "Bridge flow ratio"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:108
+#: xs/src/libslic3r/PrintConfig.cpp:108
msgid ""
"This factor affects the amount of plastic for bridging. You can decrease it "
"slightly to pull the extrudates and prevent sagging, although default "
@@ -1162,64 +1161,59 @@ msgid ""
"before tweaking this."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:117
+#: xs/src/libslic3r/PrintConfig.cpp:117
msgid "Bridges"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:119
+#: xs/src/libslic3r/PrintConfig.cpp:119
msgid "Speed for printing bridges."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:120
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:638
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:749
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:811
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:868
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:981
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1137
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1146
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1536
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1649
+#: xs/src/libslic3r/PrintConfig.cpp:120 xs/src/libslic3r/PrintConfig.cpp:638
+#: xs/src/libslic3r/PrintConfig.cpp:749 xs/src/libslic3r/PrintConfig.cpp:811
+#: xs/src/libslic3r/PrintConfig.cpp:868 xs/src/libslic3r/PrintConfig.cpp:988
+#: xs/src/libslic3r/PrintConfig.cpp:1144 xs/src/libslic3r/PrintConfig.cpp:1153
+#: xs/src/libslic3r/PrintConfig.cpp:1543 xs/src/libslic3r/PrintConfig.cpp:1656
msgid "mm/s"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:127
+#: xs/src/libslic3r/PrintConfig.cpp:127
msgid "Brim width"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:128
+#: xs/src/libslic3r/PrintConfig.cpp:128
msgid ""
"Horizontal width of the brim that will be printed around each object on the "
"first layer."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:135
+#: xs/src/libslic3r/PrintConfig.cpp:135
msgid "Clip multi-part objects"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:136
+#: xs/src/libslic3r/PrintConfig.cpp:136
msgid ""
"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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:147
+#: xs/src/libslic3r/PrintConfig.cpp:147
msgid "Compatible printers condition"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:148
+#: xs/src/libslic3r/PrintConfig.cpp:148
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:154
+#: xs/src/libslic3r/PrintConfig.cpp:154
msgid "Complete individual objects"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:155
+#: xs/src/libslic3r/PrintConfig.cpp:155
msgid ""
"When printing multiple objects or copies, this feature will complete each "
"object before moving onto next one (and starting it from its bottom layer). "
@@ -1227,78 +1221,75 @@ msgid ""
"warn and prevent you from extruder collisions, but beware."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:163
+#: xs/src/libslic3r/PrintConfig.cpp:163
msgid "Enable auto cooling"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:164
+#: xs/src/libslic3r/PrintConfig.cpp:164
msgid ""
"This flag enables the automatic cooling logic that adjusts print speed and "
"fan speed according to layer printing time."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:171
+#: xs/src/libslic3r/PrintConfig.cpp:171
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:180
+#: xs/src/libslic3r/PrintConfig.cpp:180
msgid "Disable fan for the first"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:181
+#: xs/src/libslic3r/PrintConfig.cpp:181
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:183
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:694
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1033
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1224
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1285
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1437
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1482
+#: xs/src/libslic3r/PrintConfig.cpp:183 xs/src/libslic3r/PrintConfig.cpp:694
+#: xs/src/libslic3r/PrintConfig.cpp:1040 xs/src/libslic3r/PrintConfig.cpp:1231
+#: xs/src/libslic3r/PrintConfig.cpp:1292 xs/src/libslic3r/PrintConfig.cpp:1444
+#: xs/src/libslic3r/PrintConfig.cpp:1489
msgid "layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:190
+#: xs/src/libslic3r/PrintConfig.cpp:190
msgid "Don't support bridges"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:192
+#: xs/src/libslic3r/PrintConfig.cpp:192
msgid ""
"Experimental option for preventing support material from being generated "
"under bridged areas."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:198
+#: xs/src/libslic3r/PrintConfig.cpp:198
msgid "Distance between copies"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:199
+#: xs/src/libslic3r/PrintConfig.cpp:199
msgid "Distance used for the auto-arrange feature of the plater."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:207
+#: xs/src/libslic3r/PrintConfig.cpp:207
msgid "Elephant foot compensation"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:209
+#: xs/src/libslic3r/PrintConfig.cpp:209
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:218
+#: xs/src/libslic3r/PrintConfig.cpp:218
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:228
+#: xs/src/libslic3r/PrintConfig.cpp:228
msgid ""
"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 "
@@ -1306,43 +1297,38 @@ msgid ""
"extruder order."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:238
+#: xs/src/libslic3r/PrintConfig.cpp:238
msgid "Ensure vertical shell thickness"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:240
+#: xs/src/libslic3r/PrintConfig.cpp:240
msgid ""
"Add solid infill near sloping surfaces to guarantee the vertical shell "
"thickness (top+bottom solid layers)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:246
+#: xs/src/libslic3r/PrintConfig.cpp:246
msgid "Top/bottom fill pattern"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:248
+#: xs/src/libslic3r/PrintConfig.cpp:248
msgid ""
"Fill pattern for top/bottom infill. This only affects the external visible "
"layer, and not its adjacent solid shells."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:267
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:277
+#: xs/src/libslic3r/PrintConfig.cpp:267 xs/src/libslic3r/PrintConfig.cpp:277
msgid "External perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:268
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:377
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:592
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:710
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:967
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1292
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1454
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1614
+#: xs/src/libslic3r/PrintConfig.cpp:268 xs/src/libslic3r/PrintConfig.cpp:377
+#: xs/src/libslic3r/PrintConfig.cpp:592 xs/src/libslic3r/PrintConfig.cpp:710
+#: xs/src/libslic3r/PrintConfig.cpp:974 xs/src/libslic3r/PrintConfig.cpp:1299
+#: xs/src/libslic3r/PrintConfig.cpp:1461 xs/src/libslic3r/PrintConfig.cpp:1621
msgid "Extrusion Width"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:269
+#: xs/src/libslic3r/PrintConfig.cpp:269
msgid ""
"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, "
@@ -1350,67 +1336,60 @@ msgid ""
"(for example 200%), it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:272
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:597
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:715
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:972
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1296
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1458
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1619
+#: xs/src/libslic3r/PrintConfig.cpp:272 xs/src/libslic3r/PrintConfig.cpp:597
+#: xs/src/libslic3r/PrintConfig.cpp:715 xs/src/libslic3r/PrintConfig.cpp:979
+#: xs/src/libslic3r/PrintConfig.cpp:1303 xs/src/libslic3r/PrintConfig.cpp:1465
+#: xs/src/libslic3r/PrintConfig.cpp:1626
msgid "mm or % (leave 0 for default)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:279
+#: xs/src/libslic3r/PrintConfig.cpp:279
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:282
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:619
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1255
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1306
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1501
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1631
+#: xs/src/libslic3r/PrintConfig.cpp:282 xs/src/libslic3r/PrintConfig.cpp:619
+#: xs/src/libslic3r/PrintConfig.cpp:1262 xs/src/libslic3r/PrintConfig.cpp:1313
+#: xs/src/libslic3r/PrintConfig.cpp:1508 xs/src/libslic3r/PrintConfig.cpp:1638
msgid "mm/s or %"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:289
+#: xs/src/libslic3r/PrintConfig.cpp:289
msgid "External perimeters first"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:291
+#: xs/src/libslic3r/PrintConfig.cpp:291
msgid ""
"Print contour perimeters from the outermost one to the innermost one instead "
"of the default inverse order."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:297
+#: xs/src/libslic3r/PrintConfig.cpp:297
msgid "Extra perimeters if needed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:299
-#, no-c-format
+#: xs/src/libslic3r/PrintConfig.cpp:299
+#, possible-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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:309
+#: xs/src/libslic3r/PrintConfig.cpp:309
msgid ""
"The extruder to use (unless more specific extruder settings are specified). "
"This value overrides perimeter and infill extruders, but not the support "
"extruders."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:320
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:69
+#: xs/src/libslic3r/PrintConfig.cpp:320 lib/Slic3r/GUI/Plater/3DPreview.pm:69
msgid "Height"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:321
+#: xs/src/libslic3r/PrintConfig.cpp:321
msgid ""
"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 "
@@ -1418,31 +1397,30 @@ msgid ""
"extruder can peek before colliding with other printed objects."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:331
+#: xs/src/libslic3r/PrintConfig.cpp:331
msgid "Radius"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:332
+#: xs/src/libslic3r/PrintConfig.cpp:332
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:342
+#: xs/src/libslic3r/PrintConfig.cpp:342
msgid "Extruder Color"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:343
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:406
+#: xs/src/libslic3r/PrintConfig.cpp:343 xs/src/libslic3r/PrintConfig.cpp:406
msgid "This is only used in the Slic3r interface as a visual help."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:350
+#: xs/src/libslic3r/PrintConfig.cpp:350
msgid "Extruder offset"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:351
+#: xs/src/libslic3r/PrintConfig.cpp:351
msgid ""
"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 "
@@ -1450,21 +1428,21 @@ msgid ""
"coordinates (they will be subtracted from the XY coordinate)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:360
+#: xs/src/libslic3r/PrintConfig.cpp:360
msgid "Extrusion axis"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:361
+#: xs/src/libslic3r/PrintConfig.cpp:361
msgid ""
"Use this option to set the axis letter associated to your printer's extruder "
"(usually E but some printers use A)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:367
+#: xs/src/libslic3r/PrintConfig.cpp:367
msgid "Extrusion multiplier"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:368
+#: xs/src/libslic3r/PrintConfig.cpp:368
msgid ""
"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. "
@@ -1472,11 +1450,11 @@ msgid ""
"more, check filament diameter and your firmware E steps."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:376
+#: xs/src/libslic3r/PrintConfig.cpp:376
msgid "Default extrusion width"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:378
+#: xs/src/libslic3r/PrintConfig.cpp:378
msgid ""
"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 "
@@ -1485,77 +1463,74 @@ msgid ""
"height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:382
+#: xs/src/libslic3r/PrintConfig.cpp:382
msgid "mm or % (leave 0 for auto)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:387
+#: xs/src/libslic3r/PrintConfig.cpp:387
msgid "Keep fan always on"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:388
+#: xs/src/libslic3r/PrintConfig.cpp:388
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:394
+#: xs/src/libslic3r/PrintConfig.cpp:394
msgid "Enable fan if layer print time is below"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:395
+#: xs/src/libslic3r/PrintConfig.cpp:395
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:397
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1242
+#: xs/src/libslic3r/PrintConfig.cpp:397 xs/src/libslic3r/PrintConfig.cpp:1249
msgid "approximate seconds"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:405
+#: xs/src/libslic3r/PrintConfig.cpp:405
msgid "Color"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:412
+#: xs/src/libslic3r/PrintConfig.cpp:412
msgid "Filament notes"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:413
+#: xs/src/libslic3r/PrintConfig.cpp:413
msgid "You can put your notes regarding the filament here."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:421
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:817
+#: xs/src/libslic3r/PrintConfig.cpp:421 xs/src/libslic3r/PrintConfig.cpp:817
msgid "Max volumetric speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:422
+#: xs/src/libslic3r/PrintConfig.cpp:422
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:425
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:820
+#: xs/src/libslic3r/PrintConfig.cpp:425 xs/src/libslic3r/PrintConfig.cpp:820
msgid "mm³/s"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:432
+#: xs/src/libslic3r/PrintConfig.cpp:432
msgid ""
"Enter your filament diameter here. Good precision is required, so use a "
"caliper and do multiple measurements along the filament, then compute the "
"average."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:440
+#: xs/src/libslic3r/PrintConfig.cpp:440
msgid "Density"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:441
+#: xs/src/libslic3r/PrintConfig.cpp:441
msgid ""
"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 "
@@ -1563,16 +1538,15 @@ msgid ""
"displacement."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:444
+#: xs/src/libslic3r/PrintConfig.cpp:444
msgid "g/cm³"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:450
+#: xs/src/libslic3r/PrintConfig.cpp:450
msgid "Filament type"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:451
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1002
+#: xs/src/libslic3r/PrintConfig.cpp:451 xs/src/libslic3r/PrintConfig.cpp:1009
msgid ""
"If you want to process the output G-code through custom scripts, just list "
"their absolute paths here. Separate multiple scripts with a semicolon. "
@@ -1581,77 +1555,73 @@ msgid ""
"environment variables."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:470
+#: xs/src/libslic3r/PrintConfig.cpp:470
msgid "Soluble material"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:471
+#: xs/src/libslic3r/PrintConfig.cpp:471
msgid "Soluble material is most likely used for a soluble support."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:476
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:450
+#: xs/src/libslic3r/PrintConfig.cpp:476 lib/Slic3r/GUI/Plater.pm:453
msgid "Cost"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:477
+#: xs/src/libslic3r/PrintConfig.cpp:477
msgid ""
"Enter your filament cost per kg here. This is only for statistical "
"information."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:478
+#: xs/src/libslic3r/PrintConfig.cpp:478
msgid "money/kg"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:487
+#: xs/src/libslic3r/PrintConfig.cpp:487
msgid "Fill angle"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:489
+#: xs/src/libslic3r/PrintConfig.cpp:489
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:501
+#: xs/src/libslic3r/PrintConfig.cpp:501
msgid "Fill density"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:503
-#, no-c-format
+#: xs/src/libslic3r/PrintConfig.cpp:503
msgid "Density of internal infill, expressed in the range 0% - 100%."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:539
+#: xs/src/libslic3r/PrintConfig.cpp:539
msgid "Fill pattern"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:541
+#: xs/src/libslic3r/PrintConfig.cpp:541
msgid "Fill pattern for general low-density infill."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:573
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:582
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:591
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:625
+#: xs/src/libslic3r/PrintConfig.cpp:573 xs/src/libslic3r/PrintConfig.cpp:582
+#: xs/src/libslic3r/PrintConfig.cpp:591 xs/src/libslic3r/PrintConfig.cpp:625
msgid "First layer"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:574
+#: xs/src/libslic3r/PrintConfig.cpp:574
msgid ""
"This is the acceleration your printer will use for first layer. Set zero to "
"disable acceleration control for first layer."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:583
+#: xs/src/libslic3r/PrintConfig.cpp:583
msgid ""
"Heated build plate temperature for the first layer. Set this to zero to "
"disable bed temperature control commands in the output."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:593
+#: xs/src/libslic3r/PrintConfig.cpp:593
msgid ""
"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 "
@@ -1659,11 +1629,11 @@ msgid ""
"layer height. If set to zero, it will use the default extrusion width."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:603
+#: xs/src/libslic3r/PrintConfig.cpp:603
msgid "First layer height"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:605
+#: xs/src/libslic3r/PrintConfig.cpp:605
msgid ""
"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 "
@@ -1671,59 +1641,58 @@ msgid ""
"example: 150%) over the default layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:609
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:740
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1390
+#: xs/src/libslic3r/PrintConfig.cpp:609 xs/src/libslic3r/PrintConfig.cpp:740
+#: xs/src/libslic3r/PrintConfig.cpp:1397
msgid "mm or %"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:615
+#: xs/src/libslic3r/PrintConfig.cpp:615
msgid "First layer speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:616
+#: xs/src/libslic3r/PrintConfig.cpp:616
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:626
+#: xs/src/libslic3r/PrintConfig.cpp:626
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:634
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:145
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:87
+#: xs/src/libslic3r/PrintConfig.cpp:634
+#: xs/src/libslic3r/GCode/PreviewData.cpp:145
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:87
msgid "Gap fill"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:636
+#: xs/src/libslic3r/PrintConfig.cpp:636
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:644
+#: xs/src/libslic3r/PrintConfig.cpp:644
msgid "Verbose G-code"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:645
+#: xs/src/libslic3r/PrintConfig.cpp:645
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:652
+#: xs/src/libslic3r/PrintConfig.cpp:652
msgid "G-code flavor"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:653
+#: xs/src/libslic3r/PrintConfig.cpp:653
msgid ""
"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 "
@@ -1731,35 +1700,35 @@ msgid ""
"extrusion value at all."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:682
+#: xs/src/libslic3r/PrintConfig.cpp:682
msgid ""
"This is the acceleration your printer will use for infill. Set zero to "
"disable acceleration control for infill."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:690
+#: xs/src/libslic3r/PrintConfig.cpp:690
msgid "Combine infill every"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:692
+#: xs/src/libslic3r/PrintConfig.cpp:692
msgid ""
"This feature allows to combine infill and speed up your print by extruding "
"thicker infill layers while preserving thin perimeters, thus accuracy."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:696
+#: xs/src/libslic3r/PrintConfig.cpp:696
msgid "Combine infill every n layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:701
+#: xs/src/libslic3r/PrintConfig.cpp:701
msgid "Infill extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:703
+#: xs/src/libslic3r/PrintConfig.cpp:703
msgid "The extruder to use when printing infill."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:711
+#: xs/src/libslic3r/PrintConfig.cpp:711
msgid ""
"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 "
@@ -1768,32 +1737,32 @@ msgid ""
"example 90%) it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:720
+#: xs/src/libslic3r/PrintConfig.cpp:720
msgid "Infill before perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:721
+#: xs/src/libslic3r/PrintConfig.cpp:721
msgid ""
"This option will switch the print order of perimeters and infill, making the "
"latter first."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:726
+#: xs/src/libslic3r/PrintConfig.cpp:726
msgid "Only infill where needed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:728
+#: xs/src/libslic3r/PrintConfig.cpp:728
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:735
+#: xs/src/libslic3r/PrintConfig.cpp:735
msgid "Infill/perimeters overlap"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:737
+#: xs/src/libslic3r/PrintConfig.cpp:737
msgid ""
"This setting applies an additional overlap between infill and perimeters for "
"better bonding. Theoretically this shouldn't be needed, but backlash might "
@@ -1801,22 +1770,22 @@ msgid ""
"perimeter extrusion width."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:748
+#: xs/src/libslic3r/PrintConfig.cpp:748
msgid "Speed for printing the internal fill. Set to zero for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:757
+#: xs/src/libslic3r/PrintConfig.cpp:757
msgid "Interface shells"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:758
+#: xs/src/libslic3r/PrintConfig.cpp:758
msgid ""
"Force the generation of solid shells between adjacent materials/volumes. "
"Useful for multi-extruder prints with translucent materials or manual "
"soluble support material."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:767
+#: xs/src/libslic3r/PrintConfig.cpp:767
msgid ""
"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 "
@@ -1824,23 +1793,22 @@ msgid ""
"[layer_z]."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:779
+#: xs/src/libslic3r/PrintConfig.cpp:779
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:787
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:796
+#: xs/src/libslic3r/PrintConfig.cpp:787 xs/src/libslic3r/PrintConfig.cpp:796
msgid "Max"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:788
+#: xs/src/libslic3r/PrintConfig.cpp:788
msgid "This setting represents the maximum speed of your fan."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:797
-#, no-c-format
+#: xs/src/libslic3r/PrintConfig.cpp:797
+#, possible-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 "
@@ -1848,29 +1816,28 @@ msgid ""
"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:807
+#: xs/src/libslic3r/PrintConfig.cpp:807
msgid "Max print speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:808
+#: xs/src/libslic3r/PrintConfig.cpp:808
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:818
+#: xs/src/libslic3r/PrintConfig.cpp:818
msgid ""
"This experimental setting is used to set the maximum volumetric speed your "
"extruder supports."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:826
+#: xs/src/libslic3r/PrintConfig.cpp:826
msgid "Max volumetric slope positive"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:827
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:838
+#: xs/src/libslic3r/PrintConfig.cpp:827 xs/src/libslic3r/PrintConfig.cpp:838
msgid ""
"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 "
@@ -1878,111 +1845,109 @@ msgid ""
"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:831
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:842
+#: xs/src/libslic3r/PrintConfig.cpp:831 xs/src/libslic3r/PrintConfig.cpp:842
msgid "mm³/s²"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:837
+#: xs/src/libslic3r/PrintConfig.cpp:837
msgid "Max volumetric slope negative"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:848
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:857
+#: xs/src/libslic3r/PrintConfig.cpp:848 xs/src/libslic3r/PrintConfig.cpp:857
msgid "Min"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:849
+#: xs/src/libslic3r/PrintConfig.cpp:849
msgid "This setting represents the minimum PWM your fan needs to work."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:858
+#: xs/src/libslic3r/PrintConfig.cpp:858
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:866
+#: xs/src/libslic3r/PrintConfig.cpp:866
msgid "Min print speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:867
+#: xs/src/libslic3r/PrintConfig.cpp:867
msgid "Slic3r will not scale speed down below this speed."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:874
+#: xs/src/libslic3r/PrintConfig.cpp:874
msgid "Minimum extrusion length"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:875
+#: xs/src/libslic3r/PrintConfig.cpp:875
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:884
+#: xs/src/libslic3r/PrintConfig.cpp:884
msgid "Configuration notes"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:885
+#: xs/src/libslic3r/PrintConfig.cpp:885
msgid ""
"You can put here your personal notes. This text will be added to the G-code "
"header comments."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:894
+#: xs/src/libslic3r/PrintConfig.cpp:894
msgid "Nozzle diameter"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:895
+#: xs/src/libslic3r/PrintConfig.cpp:895
msgid ""
"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:901
+#: xs/src/libslic3r/PrintConfig.cpp:901
msgid "API Key"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:902
+#: xs/src/libslic3r/PrintConfig.cpp:902
msgid ""
"Slic3r can upload G-code files to OctoPrint. This field should contain the "
"API Key required for authentication."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:908
-msgid "Host or IP"
+#: xs/src/libslic3r/PrintConfig.cpp:915
+msgid "Hostname, IP or URL"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:909
+#: xs/src/libslic3r/PrintConfig.cpp:916
msgid ""
"Slic3r can upload G-code files to OctoPrint. This field should contain the "
-"hostname or IP address of the OctoPrint instance."
+"hostname, IP address or URL of the OctoPrint instance."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:915
+#: xs/src/libslic3r/PrintConfig.cpp:922
msgid "Only retract when crossing perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:916
+#: xs/src/libslic3r/PrintConfig.cpp:923
msgid ""
"Disables retraction when the travel path does not exceed the upper layer's "
"perimeters (and thus any ooze will be probably invisible)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:923
+#: xs/src/libslic3r/PrintConfig.cpp:930
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:930
+#: xs/src/libslic3r/PrintConfig.cpp:937
msgid "Output filename format"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:931
+#: xs/src/libslic3r/PrintConfig.cpp:938
msgid ""
"You can use all configuration options as variables inside this template. For "
"example: [layer_height], [fill_density] etc. You can also use [timestamp], "
@@ -1990,40 +1955,38 @@ msgid ""
"[input_filename], [input_filename_base]."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:940
+#: xs/src/libslic3r/PrintConfig.cpp:947
msgid "Detect bridging perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:942
+#: xs/src/libslic3r/PrintConfig.cpp:949
msgid ""
"Experimental option to adjust flow for overhangs (bridge flow will be used), "
"to apply bridge speed to them and enable fan."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:948
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:966
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:978
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:988
+#: xs/src/libslic3r/PrintConfig.cpp:955 xs/src/libslic3r/PrintConfig.cpp:973
+#: xs/src/libslic3r/PrintConfig.cpp:985 xs/src/libslic3r/PrintConfig.cpp:995
msgid "Perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:949
+#: xs/src/libslic3r/PrintConfig.cpp:956
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:957
+#: xs/src/libslic3r/PrintConfig.cpp:964
msgid "Perimeter extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:959
+#: xs/src/libslic3r/PrintConfig.cpp:966
msgid ""
"The extruder to use when printing perimeters and brim. First extruder is 1."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:968
+#: xs/src/libslic3r/PrintConfig.cpp:975
msgid ""
"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 "
@@ -2032,12 +1995,12 @@ msgid ""
"it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:980
+#: xs/src/libslic3r/PrintConfig.cpp:987
msgid ""
"Speed for perimeters (contours, aka vertical shells). Set to zero for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:990
+#: xs/src/libslic3r/PrintConfig.cpp:997
msgid ""
"This option sets the number of perimeters to generate for each layer. Note "
"that Slic3r may increase this number automatically when it detects sloping "
@@ -2045,33 +2008,33 @@ msgid ""
"Perimeters option is enabled."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:994
+#: xs/src/libslic3r/PrintConfig.cpp:1001
msgid "(minimum)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1014
+#: xs/src/libslic3r/PrintConfig.cpp:1021
msgid "Printer notes"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1015
+#: xs/src/libslic3r/PrintConfig.cpp:1022
msgid "You can put your notes regarding the printer here."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1029
+#: xs/src/libslic3r/PrintConfig.cpp:1036
msgid "Raft layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1031
+#: xs/src/libslic3r/PrintConfig.cpp:1038
msgid ""
"The object will be raised by this number of layers, and support material "
"will be generated under it."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1039
+#: xs/src/libslic3r/PrintConfig.cpp:1046
msgid "Resolution"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1040
+#: xs/src/libslic3r/PrintConfig.cpp:1047
msgid ""
"Minimum detail resolution, used to simplify the input file for speeding up "
"the slicing job and reducing memory usage. High-resolution models often "
@@ -2079,271 +2042,266 @@ msgid ""
"simplification and use full resolution from input."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1050
+#: xs/src/libslic3r/PrintConfig.cpp:1057
msgid "Minimum travel after retraction"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1051
+#: xs/src/libslic3r/PrintConfig.cpp:1058
msgid ""
"Retraction is not triggered when travel moves are shorter than this length."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1057
+#: xs/src/libslic3r/PrintConfig.cpp:1064
msgid "Retract amount before wipe"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1058
+#: xs/src/libslic3r/PrintConfig.cpp:1065
msgid ""
"With bowden extruders, it may be wise to do some amount of quick retract "
"before doing the wipe movement."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1065
+#: xs/src/libslic3r/PrintConfig.cpp:1072
msgid "Retract on layer change"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1066
+#: xs/src/libslic3r/PrintConfig.cpp:1073
msgid "This flag enforces a retraction whenever a Z move is done."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1071
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1080
+#: xs/src/libslic3r/PrintConfig.cpp:1078 xs/src/libslic3r/PrintConfig.cpp:1087
msgid "Length"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1072
+#: xs/src/libslic3r/PrintConfig.cpp:1079
msgid "Retraction Length"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1073
+#: xs/src/libslic3r/PrintConfig.cpp:1080
msgid ""
"When retraction is triggered, filament is pulled back by the specified "
"amount (the length is measured on raw filament, before it enters the "
"extruder)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1075
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1085
+#: xs/src/libslic3r/PrintConfig.cpp:1082 xs/src/libslic3r/PrintConfig.cpp:1092
msgid "mm (zero to disable)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1081
+#: xs/src/libslic3r/PrintConfig.cpp:1088
msgid "Retraction Length (Toolchange)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1082
+#: xs/src/libslic3r/PrintConfig.cpp:1089
msgid ""
"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)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1090
+#: xs/src/libslic3r/PrintConfig.cpp:1097
msgid "Lift Z"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1091
+#: xs/src/libslic3r/PrintConfig.cpp:1098
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1099
+#: xs/src/libslic3r/PrintConfig.cpp:1106
msgid "Above Z"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1100
+#: xs/src/libslic3r/PrintConfig.cpp:1107
msgid "Only lift Z above"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1101
+#: xs/src/libslic3r/PrintConfig.cpp:1108
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1108
+#: xs/src/libslic3r/PrintConfig.cpp:1115
msgid "Below Z"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1109
+#: xs/src/libslic3r/PrintConfig.cpp:1116
msgid "Only lift Z below"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1110
+#: xs/src/libslic3r/PrintConfig.cpp:1117
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1118
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1126
+#: xs/src/libslic3r/PrintConfig.cpp:1125 xs/src/libslic3r/PrintConfig.cpp:1133
msgid "Extra length on restart"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1119
+#: xs/src/libslic3r/PrintConfig.cpp:1126
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1127
+#: xs/src/libslic3r/PrintConfig.cpp:1134
msgid ""
"When the retraction is compensated after changing tool, the extruder will "
"push this additional amount of filament."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1134
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1135
+#: xs/src/libslic3r/PrintConfig.cpp:1141 xs/src/libslic3r/PrintConfig.cpp:1142
msgid "Retraction Speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1136
+#: xs/src/libslic3r/PrintConfig.cpp:1143
msgid "The speed for retractions (it only applies to the extruder motor)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1142
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1143
+#: xs/src/libslic3r/PrintConfig.cpp:1149 xs/src/libslic3r/PrintConfig.cpp:1150
msgid "Deretraction Speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1144
+#: xs/src/libslic3r/PrintConfig.cpp:1151
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1151
+#: xs/src/libslic3r/PrintConfig.cpp:1158
msgid "Seam position"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1153
+#: xs/src/libslic3r/PrintConfig.cpp:1160
msgid "Position of perimeters starting points."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1169
+#: xs/src/libslic3r/PrintConfig.cpp:1176
msgid "Direction"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1171
+#: xs/src/libslic3r/PrintConfig.cpp:1178
msgid "Preferred direction of the seam"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1172
+#: xs/src/libslic3r/PrintConfig.cpp:1179
msgid "Seam preferred direction"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1180
+#: xs/src/libslic3r/PrintConfig.cpp:1187
msgid "Jitter"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1182
+#: xs/src/libslic3r/PrintConfig.cpp:1189
msgid "Seam preferred direction jitter"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1183
+#: xs/src/libslic3r/PrintConfig.cpp:1190
msgid "Preferred direction of the seam - jitter"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1194
+#: xs/src/libslic3r/PrintConfig.cpp:1201
msgid "USB/serial port for printer connection."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1202
+#: xs/src/libslic3r/PrintConfig.cpp:1209
msgid "Serial port speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1203
+#: xs/src/libslic3r/PrintConfig.cpp:1210
msgid "Speed (baud) of USB/serial port for printer connection."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1212
+#: xs/src/libslic3r/PrintConfig.cpp:1219
msgid "Distance from object"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1213
+#: xs/src/libslic3r/PrintConfig.cpp:1220
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1221
+#: xs/src/libslic3r/PrintConfig.cpp:1228
msgid "Skirt height"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1222
+#: xs/src/libslic3r/PrintConfig.cpp:1229
msgid ""
"Height of skirt expressed in layers. Set this to a tall value to use skirt "
"as a shield against drafts."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1229
+#: xs/src/libslic3r/PrintConfig.cpp:1236
msgid "Loops (minimum)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1230
+#: xs/src/libslic3r/PrintConfig.cpp:1237
msgid "Skirt Loops"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1231
+#: xs/src/libslic3r/PrintConfig.cpp:1238
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1239
+#: xs/src/libslic3r/PrintConfig.cpp:1246
msgid "Slow down if layer print time is below"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1240
+#: xs/src/libslic3r/PrintConfig.cpp:1247
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1250
+#: xs/src/libslic3r/PrintConfig.cpp:1257
msgid "Small perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1252
+#: xs/src/libslic3r/PrintConfig.cpp:1259
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1262
+#: xs/src/libslic3r/PrintConfig.cpp:1269
msgid "Solid infill threshold area"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1264
+#: xs/src/libslic3r/PrintConfig.cpp:1271
msgid ""
"Force solid infill for regions having a smaller area than the specified "
"threshold."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1265
+#: xs/src/libslic3r/PrintConfig.cpp:1272
msgid "mm²"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1271
+#: xs/src/libslic3r/PrintConfig.cpp:1278
msgid "Solid infill extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1273
+#: xs/src/libslic3r/PrintConfig.cpp:1280
msgid "The extruder to use when printing solid infill."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1279
+#: xs/src/libslic3r/PrintConfig.cpp:1286
msgid "Solid infill every"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1281
+#: xs/src/libslic3r/PrintConfig.cpp:1288
msgid ""
"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 "
@@ -2351,14 +2309,13 @@ msgid ""
"according to nozzle diameter and layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1291
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1301
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:142
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:84
+#: xs/src/libslic3r/PrintConfig.cpp:1298 xs/src/libslic3r/PrintConfig.cpp:1308
+#: xs/src/libslic3r/GCode/PreviewData.cpp:142
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:84
msgid "Solid infill"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1293
+#: xs/src/libslic3r/PrintConfig.cpp:1300
msgid ""
"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, "
@@ -2366,22 +2323,22 @@ msgid ""
"(for example 90%) it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1303
+#: xs/src/libslic3r/PrintConfig.cpp:1310
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1315
+#: xs/src/libslic3r/PrintConfig.cpp:1322
msgid "Number of solid layers to generate on top and bottom surfaces."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1322
+#: xs/src/libslic3r/PrintConfig.cpp:1329
msgid "Spiral vase"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1323
+#: xs/src/libslic3r/PrintConfig.cpp:1330
msgid ""
"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, "
@@ -2390,18 +2347,18 @@ msgid ""
"when printing more than an object."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1332
+#: xs/src/libslic3r/PrintConfig.cpp:1339
msgid "Temperature variation"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1333
+#: xs/src/libslic3r/PrintConfig.cpp:1340
msgid ""
"Temperature difference to be applied when an extruder is not active. Enables "
"a full-height \"sacrificial\" skirt on which the nozzles are periodically "
"wiped."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1343
+#: xs/src/libslic3r/PrintConfig.cpp:1350
msgid ""
"This start procedure is inserted at the beginning, after bed has reached the "
"target temperature and extruder just started heating, and before extruder "
@@ -2412,80 +2369,76 @@ msgid ""
"\"M109 S[first_layer_temperature]\" command wherever you want."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1358
+#: xs/src/libslic3r/PrintConfig.cpp:1365
msgid ""
"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 "
+"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1373
+#: xs/src/libslic3r/PrintConfig.cpp:1380
msgid "Single Extruder Multi Material"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1374
+#: xs/src/libslic3r/PrintConfig.cpp:1381
msgid "The printer multiplexes filaments into a single hot end."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1379
+#: xs/src/libslic3r/PrintConfig.cpp:1386
msgid "Generate support material"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1381
+#: xs/src/libslic3r/PrintConfig.cpp:1388
msgid "Enable support material generation."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1386
+#: xs/src/libslic3r/PrintConfig.cpp:1393
msgid "XY separation between an object and its support"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1388
+#: xs/src/libslic3r/PrintConfig.cpp:1395
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1398
+#: xs/src/libslic3r/PrintConfig.cpp:1405
msgid "Pattern angle"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1400
+#: xs/src/libslic3r/PrintConfig.cpp:1407
msgid ""
"Use this setting to rotate the support material pattern on the horizontal "
"plane."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1408
-msgid "Support on build plate only"
-msgstr ""
-
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1410
+#: xs/src/libslic3r/PrintConfig.cpp:1417
msgid ""
"Only create support if it lies on a build plate. Don't create support on a "
"print."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1416
+#: xs/src/libslic3r/PrintConfig.cpp:1423
msgid "Contact Z distance"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1418
+#: xs/src/libslic3r/PrintConfig.cpp:1425
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1431
+#: xs/src/libslic3r/PrintConfig.cpp:1438
msgid "Enforce support for the first"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1433
+#: xs/src/libslic3r/PrintConfig.cpp:1440
msgid ""
"Generate support material for the specified number of layers counting from "
"bottom, regardless of whether normal support material is enabled or not and "
@@ -2493,21 +2446,21 @@ msgid ""
"of objects having a very thin or poor footprint on the build plate."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1439
+#: xs/src/libslic3r/PrintConfig.cpp:1446
msgid "Enforce support for the first n layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1444
+#: xs/src/libslic3r/PrintConfig.cpp:1451
msgid "Support material/raft/skirt extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1446
+#: xs/src/libslic3r/PrintConfig.cpp:1453
msgid ""
"The extruder to use when printing support material, raft and skirt (1+, 0 to "
"use the current extruder to minimize tool changes)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1455
+#: xs/src/libslic3r/PrintConfig.cpp:1462
msgid ""
"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, "
@@ -2515,91 +2468,91 @@ msgid ""
"example 90%) it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1463
+#: xs/src/libslic3r/PrintConfig.cpp:1470
msgid "Interface loops"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1465
+#: xs/src/libslic3r/PrintConfig.cpp:1472
msgid ""
"Cover the top contact layer of the supports with loops. Disabled by default."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1470
+#: xs/src/libslic3r/PrintConfig.cpp:1477
msgid "Support material/raft interface extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1472
+#: xs/src/libslic3r/PrintConfig.cpp:1479
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1479
+#: xs/src/libslic3r/PrintConfig.cpp:1486
msgid "Interface layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1481
+#: xs/src/libslic3r/PrintConfig.cpp:1488
msgid ""
"Number of interface layers to insert between the object(s) and support "
"material."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1488
+#: xs/src/libslic3r/PrintConfig.cpp:1495
msgid "Interface pattern spacing"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1490
+#: xs/src/libslic3r/PrintConfig.cpp:1497
msgid "Spacing between interface lines. Set zero to get a solid interface."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1497
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:148
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:90
+#: xs/src/libslic3r/PrintConfig.cpp:1504
+#: xs/src/libslic3r/GCode/PreviewData.cpp:148
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:90
msgid "Support material interface"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1499
+#: xs/src/libslic3r/PrintConfig.cpp:1506
msgid ""
"Speed for printing support material interface layers. If expressed as "
"percentage (for example 50%) it will be calculated over support material "
"speed."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1508
+#: xs/src/libslic3r/PrintConfig.cpp:1515
msgid "Pattern"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1510
+#: xs/src/libslic3r/PrintConfig.cpp:1517
msgid "Pattern used to generate support material."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1524
+#: xs/src/libslic3r/PrintConfig.cpp:1531
msgid "Pattern spacing"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1526
+#: xs/src/libslic3r/PrintConfig.cpp:1533
msgid "Spacing between support material lines."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1535
+#: xs/src/libslic3r/PrintConfig.cpp:1542
msgid "Speed for printing support material."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1542
+#: xs/src/libslic3r/PrintConfig.cpp:1549
msgid "Synchronize with object layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1544
+#: xs/src/libslic3r/PrintConfig.cpp:1551
msgid ""
"Synchronize support layers with the object print layers. This is useful with "
"multi-material printers, where the extruder switch is expensive."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1550
+#: xs/src/libslic3r/PrintConfig.cpp:1557
msgid "Overhang threshold"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1552
+#: xs/src/libslic3r/PrintConfig.cpp:1559
msgid ""
"Support material will not be generated for overhangs whose slope angle (90° "
"= vertical) is above the given threshold. In other words, this value "
@@ -2608,61 +2561,60 @@ msgid ""
"detection (recommended)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1564
+#: xs/src/libslic3r/PrintConfig.cpp:1571
msgid "With sheath around the support"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1566
+#: xs/src/libslic3r/PrintConfig.cpp:1573
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 ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1573
+#: xs/src/libslic3r/PrintConfig.cpp:1580
msgid ""
"Extruder temperature for layers after the first one. Set this to zero to "
"disable temperature control commands in the output."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1576
+#: xs/src/libslic3r/PrintConfig.cpp:1583
msgid "Temperature"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1582
+#: xs/src/libslic3r/PrintConfig.cpp:1589
msgid "Detect thin walls"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1584
+#: xs/src/libslic3r/PrintConfig.cpp:1591
msgid ""
"Detect single-width walls (parts where two extrusions don't fit and we need "
"to collapse them into a single trace)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1590
+#: xs/src/libslic3r/PrintConfig.cpp:1597
msgid "Threads"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1591
+#: xs/src/libslic3r/PrintConfig.cpp:1598
msgid ""
"Threads are used to parallelize long-running tasks. Optimal threads number "
"is slightly above the number of available cores/processors."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1603
+#: xs/src/libslic3r/PrintConfig.cpp:1610
msgid ""
"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]."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1613
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1624
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:143
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:85
+#: xs/src/libslic3r/PrintConfig.cpp:1620 xs/src/libslic3r/PrintConfig.cpp:1631
+#: xs/src/libslic3r/GCode/PreviewData.cpp:143
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:85
msgid "Top solid infill"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1615
+#: xs/src/libslic3r/PrintConfig.cpp:1622
msgid ""
"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 "
@@ -2671,7 +2623,7 @@ msgid ""
"percentage (for example 90%) it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1626
+#: xs/src/libslic3r/PrintConfig.cpp:1633
msgid ""
"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 "
@@ -2680,53 +2632,51 @@ msgid ""
"for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1638
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369
+#: xs/src/libslic3r/PrintConfig.cpp:1645 lib/Slic3r/GUI/MainFrame.pm:363
msgid "Top"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1640
+#: xs/src/libslic3r/PrintConfig.cpp:1647
msgid "Number of solid layers to generate on top surfaces."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1642
+#: xs/src/libslic3r/PrintConfig.cpp:1649
msgid "Top solid layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1647
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:95
+#: xs/src/libslic3r/PrintConfig.cpp:1654 lib/Slic3r/GUI/Plater/3DPreview.pm:95
msgid "Travel"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1648
+#: xs/src/libslic3r/PrintConfig.cpp:1655
msgid "Speed for travel moves (jumps between distant extrusion points)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1656
+#: xs/src/libslic3r/PrintConfig.cpp:1663
msgid "Use firmware retraction"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1657
+#: xs/src/libslic3r/PrintConfig.cpp:1664
msgid ""
"This experimental setting uses G10 and G11 commands to have the firmware "
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1663
+#: xs/src/libslic3r/PrintConfig.cpp:1670
msgid "Use relative E distances"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1664
+#: xs/src/libslic3r/PrintConfig.cpp:1671
msgid ""
"If your firmware requires relative E values, check this, otherwise leave it "
"unchecked. Most firmwares use absolute values."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1670
+#: xs/src/libslic3r/PrintConfig.cpp:1677
msgid "Use volumetric E"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1671
+#: xs/src/libslic3r/PrintConfig.cpp:1678
msgid ""
"This experimental setting uses outputs the E values in cubic millimeters "
"instead of linear millimeters. If your firmware doesn't already know "
@@ -2736,84 +2686,83 @@ msgid ""
"only supported in recent Marlin."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1681
+#: xs/src/libslic3r/PrintConfig.cpp:1688
msgid "Enable variable layer height feature"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1682
+#: xs/src/libslic3r/PrintConfig.cpp:1689
msgid ""
"Some printers or printer setups may have difficulties printing with a "
"variable layer height. Enabled by default."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1688
+#: xs/src/libslic3r/PrintConfig.cpp:1695
msgid "Wipe while retracting"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1689
+#: xs/src/libslic3r/PrintConfig.cpp:1696
msgid ""
"This flag will move the nozzle while retracting to minimize the possible "
"blob on leaky extruders."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1696
+#: xs/src/libslic3r/PrintConfig.cpp:1703
msgid ""
"Multi material printers may need to prime or purge extruders on tool "
"changes. Extrude the excess material into the wipe tower."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1702
+#: xs/src/libslic3r/PrintConfig.cpp:1709
msgid "Position X"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1703
+#: xs/src/libslic3r/PrintConfig.cpp:1710
msgid "X coordinate of the left front corner of a wipe tower"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1709
+#: xs/src/libslic3r/PrintConfig.cpp:1716
msgid "Position Y"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1710
+#: xs/src/libslic3r/PrintConfig.cpp:1717
msgid "Y coordinate of the left front corner of a wipe tower"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1716
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:70
+#: xs/src/libslic3r/PrintConfig.cpp:1723 lib/Slic3r/GUI/Plater/3DPreview.pm:70
msgid "Width"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1717
+#: xs/src/libslic3r/PrintConfig.cpp:1724
msgid "Width of a wipe tower"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1723
+#: xs/src/libslic3r/PrintConfig.cpp:1730
msgid "Per color change depth"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1724
+#: xs/src/libslic3r/PrintConfig.cpp:1731
msgid ""
"Depth of a wipe color per color change. For N colors, there will be maximum "
"(N-1) tool switches performed, therefore the total depth of the wipe tower "
"will be (N-1) times this value."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1732
+#: xs/src/libslic3r/PrintConfig.cpp:1739
msgid "XY Size Compensation"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1734
+#: xs/src/libslic3r/PrintConfig.cpp:1741
msgid ""
"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."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1742
+#: xs/src/libslic3r/PrintConfig.cpp:1749
msgid "Z offset"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1743
+#: xs/src/libslic3r/PrintConfig.cpp:1750
msgid ""
"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 "
@@ -2821,1063 +2770,1015 @@ msgid ""
"print bed, set this to -0.3 (or fix your endstop)."
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:137
-msgid "None"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:138
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:80
+#: xs/src/libslic3r/GCode/PreviewData.cpp:138
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:80
msgid "Perimeter"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:139
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:81
+#: xs/src/libslic3r/GCode/PreviewData.cpp:139
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:81
msgid "External perimeter"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:140
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:82
+#: xs/src/libslic3r/GCode/PreviewData.cpp:140
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:82
msgid "Overhang perimeter"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:141
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:83
+#: xs/src/libslic3r/GCode/PreviewData.cpp:141
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:83
msgid "Internal infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:144
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:86
+#: xs/src/libslic3r/GCode/PreviewData.cpp:144
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:86
msgid "Bridge infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:151
+#: xs/src/libslic3r/GCode/PreviewData.cpp:151
msgid "Mixed"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:330
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:68
+#: xs/src/libslic3r/GCode/PreviewData.cpp:330
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:68
msgid "Feature type"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:332
+#: xs/src/libslic3r/GCode/PreviewData.cpp:332
msgid "Height (mm)"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:334
+#: xs/src/libslic3r/GCode/PreviewData.cpp:334
msgid "Width (mm)"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:336
+#: xs/src/libslic3r/GCode/PreviewData.cpp:336
msgid "Speed (mm/s)"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:338
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:72
+#: xs/src/libslic3r/GCode/PreviewData.cpp:338
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:72
msgid "Tool"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI.pm:286
-msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66
+#: lib/Slic3r/GUI/MainFrame.pm:66
msgid "Version "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66
+#: lib/Slic3r/GUI/MainFrame.pm:66
msgid ""
" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:118
+#: lib/Slic3r/GUI/MainFrame.pm:118
msgid "Plater"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:120
+#: lib/Slic3r/GUI/MainFrame.pm:120
msgid "Controller"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:192
+#: lib/Slic3r/GUI/MainFrame.pm:191
msgid "No Bonjour device found"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:192
+#: lib/Slic3r/GUI/MainFrame.pm:191
msgid "Device Browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:211
-msgid "Connection to OctoPrint works correctly."
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:214
+#: lib/Slic3r/GUI/MainFrame.pm:212
msgid "I wasn't able to connect to OctoPrint ("
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:215
+#: lib/Slic3r/GUI/MainFrame.pm:213
msgid "). Check hostname and OctoPrint version (at least 1.1.0 is required)."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251
+#: lib/Slic3r/GUI/MainFrame.pm:245
msgid "Open STL/OBJ/AMF…\tCtrl+O"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251
+#: lib/Slic3r/GUI/MainFrame.pm:245
msgid "Open a model"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254
+#: lib/Slic3r/GUI/MainFrame.pm:248
msgid "&Load Config…\tCtrl+L"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254
+#: lib/Slic3r/GUI/MainFrame.pm:248
msgid "Load exported configuration file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257
+#: lib/Slic3r/GUI/MainFrame.pm:251
msgid "&Export Config…\tCtrl+E"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257
+#: lib/Slic3r/GUI/MainFrame.pm:251
msgid "Export current configuration to file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260
+#: lib/Slic3r/GUI/MainFrame.pm:254
msgid "&Load Config Bundle…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260
+#: lib/Slic3r/GUI/MainFrame.pm:254
msgid "Load presets from a bundle"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:263
+#: lib/Slic3r/GUI/MainFrame.pm:257
msgid "&Export Config Bundle…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:263
+#: lib/Slic3r/GUI/MainFrame.pm:257
msgid "Export all presets to file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:268
+#: lib/Slic3r/GUI/MainFrame.pm:262
msgid "Q&uick Slice…\tCtrl+U"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:268
+#: lib/Slic3r/GUI/MainFrame.pm:262
msgid "Slice a file into a G-code"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:274
+#: lib/Slic3r/GUI/MainFrame.pm:268
msgid "Quick Slice and Save &As…\tCtrl+Alt+U"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:274
+#: lib/Slic3r/GUI/MainFrame.pm:268
msgid "Slice a file into a G-code, save as"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:280
+#: lib/Slic3r/GUI/MainFrame.pm:274
msgid "&Repeat Last Quick Slice\tCtrl+Shift+U"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:280
+#: lib/Slic3r/GUI/MainFrame.pm:274
msgid "Repeat last quick slice"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:287
+#: lib/Slic3r/GUI/MainFrame.pm:281
msgid "Slice to SV&G…\tCtrl+G"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:287
+#: lib/Slic3r/GUI/MainFrame.pm:281
msgid "Slice file to a multi-layer SVG"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:291
+#: lib/Slic3r/GUI/MainFrame.pm:285
msgid "(&Re)Slice Now\tCtrl+S"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:291
+#: lib/Slic3r/GUI/MainFrame.pm:285
msgid "Start new slicing process"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294
+#: lib/Slic3r/GUI/MainFrame.pm:288
msgid "Repair STL file…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294
+#: lib/Slic3r/GUI/MainFrame.pm:288
msgid "Automatically repair an STL file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299
+#: lib/Slic3r/GUI/MainFrame.pm:293
msgid "Preferences…\tCtrl+,"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299
+#: lib/Slic3r/GUI/MainFrame.pm:293
msgid "Application preferences"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304
+#: lib/Slic3r/GUI/MainFrame.pm:298
msgid "&Quit"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304
+#: lib/Slic3r/GUI/MainFrame.pm:298
msgid "Quit Slic3r"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314
+#: lib/Slic3r/GUI/MainFrame.pm:308
msgid "Export G-code..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314
+#: lib/Slic3r/GUI/MainFrame.pm:308
msgid "Export current plate as G-code"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:317
+#: lib/Slic3r/GUI/MainFrame.pm:311
msgid "Export plate as STL..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:317
+#: lib/Slic3r/GUI/MainFrame.pm:311
msgid "Export current plate as STL"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:320
+#: lib/Slic3r/GUI/MainFrame.pm:314
msgid "Export plate as AMF..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:320
+#: lib/Slic3r/GUI/MainFrame.pm:314
msgid "Export current plate as AMF"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:323
+#: lib/Slic3r/GUI/MainFrame.pm:317
msgid "Export plate as 3MF..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:323
+#: lib/Slic3r/GUI/MainFrame.pm:317
msgid "Export current plate as 3MF"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:336
+#: lib/Slic3r/GUI/MainFrame.pm:330
msgid "Select &Plater Tab\tCtrl+1"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:336
+#: lib/Slic3r/GUI/MainFrame.pm:330
msgid "Show the plater"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:342
+#: lib/Slic3r/GUI/MainFrame.pm:336
msgid "Select &Controller Tab\tCtrl+T"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:342
+#: lib/Slic3r/GUI/MainFrame.pm:336
msgid "Show the printer controller"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:350
+#: lib/Slic3r/GUI/MainFrame.pm:344
msgid "Select P&rint Settings Tab\tCtrl+2"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:350
+#: lib/Slic3r/GUI/MainFrame.pm:344
msgid "Show the print settings"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:353
+#: lib/Slic3r/GUI/MainFrame.pm:347
msgid "Select &Filament Settings Tab\tCtrl+3"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:353
+#: lib/Slic3r/GUI/MainFrame.pm:347
msgid "Show the filament settings"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:356
+#: lib/Slic3r/GUI/MainFrame.pm:350
msgid "Select Print&er Settings Tab\tCtrl+4"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:356
+#: lib/Slic3r/GUI/MainFrame.pm:350
msgid "Show the printer settings"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368
+#: lib/Slic3r/GUI/MainFrame.pm:362
msgid "Iso"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368
+#: lib/Slic3r/GUI/MainFrame.pm:362
msgid "Iso View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369
+#: lib/Slic3r/GUI/MainFrame.pm:363
msgid "Top View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370
+#: lib/Slic3r/GUI/MainFrame.pm:364
msgid "Bottom View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371
+#: lib/Slic3r/GUI/MainFrame.pm:365
msgid "Front"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371
+#: lib/Slic3r/GUI/MainFrame.pm:365
msgid "Front View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372
+#: lib/Slic3r/GUI/MainFrame.pm:366
msgid "Rear"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372
+#: lib/Slic3r/GUI/MainFrame.pm:366
msgid "Rear View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373
+#: lib/Slic3r/GUI/MainFrame.pm:367
msgid "Left"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373
+#: lib/Slic3r/GUI/MainFrame.pm:367
msgid "Left View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374
+#: lib/Slic3r/GUI/MainFrame.pm:368
msgid "Right"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374
+#: lib/Slic3r/GUI/MainFrame.pm:368
msgid "Right View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:380
+#: lib/Slic3r/GUI/MainFrame.pm:374
msgid "&Configuration "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:380
+#: lib/Slic3r/GUI/MainFrame.pm:374
msgid "Run Configuration "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385
+#: lib/Slic3r/GUI/MainFrame.pm:379
msgid "Prusa 3D Drivers"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385
+#: lib/Slic3r/GUI/MainFrame.pm:379
msgid "Open the Prusa3D drivers download page in your browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:388
+#: lib/Slic3r/GUI/MainFrame.pm:382
msgid "Prusa Edition Releases"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:388
+#: lib/Slic3r/GUI/MainFrame.pm:382
msgid "Open the Prusa Edition releases page in your browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:395
+#: lib/Slic3r/GUI/MainFrame.pm:389
msgid "Slic3r &Website"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:395
+#: lib/Slic3r/GUI/MainFrame.pm:389
msgid "Open the Slic3r website in your browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398
+#: lib/Slic3r/GUI/MainFrame.pm:392
msgid "Slic3r &Manual"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398
+#: lib/Slic3r/GUI/MainFrame.pm:392
msgid "Open the Slic3r manual in your browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402
+#: lib/Slic3r/GUI/MainFrame.pm:396
msgid "System Info"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402
+#: lib/Slic3r/GUI/MainFrame.pm:396
msgid "Show system information"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405
+#: lib/Slic3r/GUI/MainFrame.pm:399
msgid "Report an Issue"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405
+#: lib/Slic3r/GUI/MainFrame.pm:399
msgid "Report an issue on the Slic3r Prusa Edition"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408
+#: lib/Slic3r/GUI/MainFrame.pm:402
msgid "&About Slic3r"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408
+#: lib/Slic3r/GUI/MainFrame.pm:402
msgid "Show about dialog"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:418
+#: lib/Slic3r/GUI/MainFrame.pm:412
msgid "&File"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:419
+#: lib/Slic3r/GUI/MainFrame.pm:413
msgid "&Plater"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:420
+#: lib/Slic3r/GUI/MainFrame.pm:414
msgid "&Object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:421
+#: lib/Slic3r/GUI/MainFrame.pm:415
msgid "&Window"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:422
+#: lib/Slic3r/GUI/MainFrame.pm:416
msgid "&View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:426
+#: lib/Slic3r/GUI/MainFrame.pm:420
msgid "&Help"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:457
+#: lib/Slic3r/GUI/MainFrame.pm:452
msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:469
+#: lib/Slic3r/GUI/MainFrame.pm:464
msgid "No previously sliced file."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:474
+#: lib/Slic3r/GUI/MainFrame.pm:469
msgid "Previously sliced file ("
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:474
+#: lib/Slic3r/GUI/MainFrame.pm:469
msgid ") not found."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:475
+#: lib/Slic3r/GUI/MainFrame.pm:470
msgid "File Not Found"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514
+#: lib/Slic3r/GUI/MainFrame.pm:509
msgid "SVG"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514
+#: lib/Slic3r/GUI/MainFrame.pm:509
msgid "G-code"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645
+#: lib/Slic3r/GUI/MainFrame.pm:509 lib/Slic3r/GUI/Plater.pm:1615
msgid " file as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:528
+#: lib/Slic3r/GUI/MainFrame.pm:523
msgid "Slicing…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:528
+#: lib/Slic3r/GUI/MainFrame.pm:523
msgid "Processing "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:548
+#: lib/Slic3r/GUI/MainFrame.pm:543
msgid " was successfully sliced."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:550
+#: lib/Slic3r/GUI/MainFrame.pm:545
msgid "Slicing Done!"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:566
+#: lib/Slic3r/GUI/MainFrame.pm:561
msgid "Select the STL file to repair:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:580
+#: lib/Slic3r/GUI/MainFrame.pm:575
msgid "Save OBJ file (less prone to coordinate errors than STL) as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:594
+#: lib/Slic3r/GUI/MainFrame.pm:589
msgid "Your file was repaired."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:594
+#: lib/Slic3r/GUI/MainFrame.pm:589
msgid "Repair"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:605
+#: lib/Slic3r/GUI/MainFrame.pm:600
msgid "Save configuration as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:623
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:667
+#: lib/Slic3r/GUI/MainFrame.pm:618 lib/Slic3r/GUI/MainFrame.pm:662
msgid "Select configuration to load:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:646
+#: lib/Slic3r/GUI/MainFrame.pm:641
msgid "Save presets bundle as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:687
+#: lib/Slic3r/GUI/MainFrame.pm:682
#, possible-perl-format
msgid "%d presets successfully imported."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:749
+#: lib/Slic3r/GUI/MainFrame.pm:744
msgid "You have unsaved changes "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:749
+#: lib/Slic3r/GUI/MainFrame.pm:744
msgid ". Discard changes and continue anyway?"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:750
+#: lib/Slic3r/GUI/MainFrame.pm:745
msgid "Unsaved Presets"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:104
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2124
+#: lib/Slic3r/GUI/Plater.pm:104 lib/Slic3r/GUI/Plater.pm:2094
msgid "3D"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:138
+#: lib/Slic3r/GUI/Plater.pm:138
msgid "2D"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:157
+#: lib/Slic3r/GUI/Plater.pm:157
msgid "Layers"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:177
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:195
+#: lib/Slic3r/GUI/Plater.pm:177 lib/Slic3r/GUI/Plater.pm:195
msgid "Add…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:179
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:197
+#: lib/Slic3r/GUI/Plater.pm:179 lib/Slic3r/GUI/Plater.pm:197
msgid "Delete All"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:180
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:198
+#: lib/Slic3r/GUI/Plater.pm:180 lib/Slic3r/GUI/Plater.pm:198
msgid "Arrange"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:182
+#: lib/Slic3r/GUI/Plater.pm:182
msgid "More"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:183
+#: lib/Slic3r/GUI/Plater.pm:183
msgid "Fewer"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:185
+#: lib/Slic3r/GUI/Plater.pm:185
msgid "45° ccw"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:186
+#: lib/Slic3r/GUI/Plater.pm:186
msgid "45° cw"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:187
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:203
+#: lib/Slic3r/GUI/Plater.pm:187 lib/Slic3r/GUI/Plater.pm:203
msgid "Scale…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:188
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:204
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099
+#: lib/Slic3r/GUI/Plater.pm:188 lib/Slic3r/GUI/Plater.pm:204
+#: lib/Slic3r/GUI/Plater.pm:2069
msgid "Split"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:189
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:205
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102
+#: lib/Slic3r/GUI/Plater.pm:189 lib/Slic3r/GUI/Plater.pm:205
+#: lib/Slic3r/GUI/Plater.pm:2072
msgid "Cut…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:191
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:206
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106
+#: lib/Slic3r/GUI/Plater.pm:191 lib/Slic3r/GUI/Plater.pm:206
+#: lib/Slic3r/GUI/Plater.pm:2076
msgid "Settings…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:192
+#: lib/Slic3r/GUI/Plater.pm:192
msgid "Layer Editing"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:207
+#: lib/Slic3r/GUI/Plater.pm:207
msgid "Layer editing"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:220
+#: lib/Slic3r/GUI/Plater.pm:220
msgid "Name"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:221
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900
+#: lib/Slic3r/GUI/Plater.pm:221 lib/Slic3r/GUI/Plater.pm:904
msgid "Copies"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:222
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2068
+#: lib/Slic3r/GUI/Plater.pm:222 lib/Slic3r/GUI/Plater.pm:1060
+#: lib/Slic3r/GUI/Plater.pm:1065 lib/Slic3r/GUI/Plater.pm:2038
msgid "Scale"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:236
+#: lib/Slic3r/GUI/Plater.pm:236
msgid "Export G-code…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:237
+#: lib/Slic3r/GUI/Plater.pm:237
msgid "Slice now"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:238
+#: lib/Slic3r/GUI/Plater.pm:238
msgid "Print…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:239
+#: lib/Slic3r/GUI/Plater.pm:239
msgid "Send to printer"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:240
+#: lib/Slic3r/GUI/Plater.pm:240
msgid "Export STL…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:367
+#: lib/Slic3r/GUI/Plater.pm:367
msgid "Print settings"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:369
+#: lib/Slic3r/GUI/Plater.pm:369
msgid "Printer"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:398
+#: lib/Slic3r/GUI/Plater.pm:401
msgid "Info"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:409
+#: lib/Slic3r/GUI/Plater.pm:412
msgid "Volume"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:410
+#: lib/Slic3r/GUI/Plater.pm:413
msgid "Facets"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:411
+#: lib/Slic3r/GUI/Plater.pm:414
msgid "Materials"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:412
+#: lib/Slic3r/GUI/Plater.pm:415
msgid "Manifold"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:438
+#: lib/Slic3r/GUI/Plater.pm:441
msgid "Sliced Info"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:447
+#: lib/Slic3r/GUI/Plater.pm:450
msgid "Used Filament (m)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:448
+#: lib/Slic3r/GUI/Plater.pm:451
msgid "Used Filament (mm³)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:449
+#: lib/Slic3r/GUI/Plater.pm:452
msgid "Used Filament (g)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:451
+#: lib/Slic3r/GUI/Plater.pm:454
msgid "Estimated printing time"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629
+#: lib/Slic3r/GUI/Plater.pm:633
msgid "Loading…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:643
+#: lib/Slic3r/GUI/Plater.pm:633 lib/Slic3r/GUI/Plater.pm:647
msgid "Processing input file\n"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:663
+#: lib/Slic3r/GUI/Plater.pm:667
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 ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:666
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:683
+#: lib/Slic3r/GUI/Plater.pm:670 lib/Slic3r/GUI/Plater.pm:687
msgid "Multi-part object detected"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:680
+#: lib/Slic3r/GUI/Plater.pm:684
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 ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:692
+#: lib/Slic3r/GUI/Plater.pm:696
msgid "Loaded "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:744
+#: lib/Slic3r/GUI/Plater.pm:748
msgid ""
"Your object appears to be too large, so it was automatically scaled down to "
"fit your print bed."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:745
+#: lib/Slic3r/GUI/Plater.pm:749
msgid "Object too large?"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900
+#: lib/Slic3r/GUI/Plater.pm:904
msgid "Enter the number of copies of the selected object:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:927
+#: lib/Slic3r/GUI/Plater.pm:931
msgid ""
"\n"
"Non-positive value."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:928
+#: lib/Slic3r/GUI/Plater.pm:932
msgid ""
"\n"
"Not a numeric value."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:929
+#: lib/Slic3r/GUI/Plater.pm:933
msgid "Slic3r Error"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950
-msgid "Enter the rotation angle:"
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950
-msgid "Rotate around "
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950
-msgid "Invalid rotation angle entered"
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1030
+#: lib/Slic3r/GUI/Plater.pm:1034
#, possible-perl-format
msgid "Enter the new size for the selected object (print bed: %smm):"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1031
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035
+#: lib/Slic3r/GUI/Plater.pm:1035 lib/Slic3r/GUI/Plater.pm:1039
msgid "Scale along "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1031
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061
+#: lib/Slic3r/GUI/Plater.pm:1035 lib/Slic3r/GUI/Plater.pm:1039
+#: lib/Slic3r/GUI/Plater.pm:1060 lib/Slic3r/GUI/Plater.pm:1065
msgid "Invalid scaling value entered"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061
-#, no-perl-format
+#: lib/Slic3r/GUI/Plater.pm:1039 lib/Slic3r/GUI/Plater.pm:1065
+#, possible-perl-format
msgid "Enter the scale % for the selected object:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056
+#: lib/Slic3r/GUI/Plater.pm:1060
msgid "Enter the new max size for the selected object:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1112
+#: lib/Slic3r/GUI/Plater.pm:1116
msgid ""
"The selected object can't be split because it contains more than one volume/"
"material."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1121
+#: lib/Slic3r/GUI/Plater.pm:1125
msgid ""
"The selected object couldn't be split because it contains only one part."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1286
+#: lib/Slic3r/GUI/Plater.pm:1290
msgid "Slicing cancelled"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300
+#: lib/Slic3r/GUI/Plater.pm:1304
msgid "Another export job is currently running."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1445
-msgid "File added to print queue"
+#: lib/Slic3r/GUI/Plater.pm:1335
+msgid "Save G-code file as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1448
-msgid "Sending G-code file to the OctoPrint server..."
+#: lib/Slic3r/GUI/Plater.pm:1352
+msgid "Export cancelled"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1451
-msgid "G-code file exported to "
+#: lib/Slic3r/GUI/Plater.pm:1449
+msgid "File added to print queue"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1454
-msgid "Export failed"
+#: lib/Slic3r/GUI/Plater.pm:1452
+msgid "Sending G-code file to the OctoPrint server..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1524
-msgid "G-code file successfully uploaded to the OctoPrint server"
+#: lib/Slic3r/GUI/Plater.pm:1455
+msgid "G-code file exported to "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1526
-msgid "Error while uploading to the OctoPrint server: "
+#: lib/Slic3r/GUI/Plater.pm:1458
+msgid "Export failed"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1539
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1581
+#: lib/Slic3r/GUI/Plater.pm:1509 lib/Slic3r/GUI/Plater.pm:1551
msgid "STL file exported to "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1592
+#: lib/Slic3r/GUI/Plater.pm:1562
msgid "AMF file exported to "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1596
+#: lib/Slic3r/GUI/Plater.pm:1566
msgid "Error exporting AMF file "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1608
+#: lib/Slic3r/GUI/Plater.pm:1578
msgid "3MF file exported to "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1612
+#: lib/Slic3r/GUI/Plater.pm:1582
msgid "Error exporting 3MF file "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1958
+#: lib/Slic3r/GUI/Plater.pm:1818
+msgid ""
+"Please install the OpenGL modules to use this feature (see build "
+"instructions)."
+msgstr ""
+
+#: lib/Slic3r/GUI/Plater.pm:1928
#, possible-perl-format
msgid "%d (%d shells)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1960
+#: lib/Slic3r/GUI/Plater.pm:1930
#, possible-perl-format
msgid "Auto-repaired (%d errors)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1965
+#: lib/Slic3r/GUI/Plater.pm:1935
#, possible-perl-format
msgid ""
"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d "
"facets reversed, %d backwards edges"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1970
+#: lib/Slic3r/GUI/Plater.pm:1940
msgid "Yes"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021
+#: lib/Slic3r/GUI/Plater.pm:1991
msgid "Remove the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2024
+#: lib/Slic3r/GUI/Plater.pm:1994
msgid "Increase copies"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2024
+#: lib/Slic3r/GUI/Plater.pm:1994
msgid "Place one more copy of the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2027
+#: lib/Slic3r/GUI/Plater.pm:1997
msgid "Decrease copies"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2027
+#: lib/Slic3r/GUI/Plater.pm:1997
msgid "Remove one copy of the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2030
+#: lib/Slic3r/GUI/Plater.pm:2000
msgid "Set number of copies…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2030
+#: lib/Slic3r/GUI/Plater.pm:2000
msgid "Change the number of copies of the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2034
+#: lib/Slic3r/GUI/Plater.pm:2004
msgid "Rotate 45° clockwise"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2034
+#: lib/Slic3r/GUI/Plater.pm:2004
msgid "Rotate the selected object by 45° clockwise"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2037
+#: lib/Slic3r/GUI/Plater.pm:2007
msgid "Rotate 45° counter-clockwise"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2037
+#: lib/Slic3r/GUI/Plater.pm:2007
msgid "Rotate the selected object by 45° counter-clockwise"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2042
+#: lib/Slic3r/GUI/Plater.pm:2012
msgid "Rotate"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2042
+#: lib/Slic3r/GUI/Plater.pm:2012
msgid "Rotate the selected object by an arbitrary angle"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2044
+#: lib/Slic3r/GUI/Plater.pm:2014
msgid "Around X axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2044
+#: lib/Slic3r/GUI/Plater.pm:2014
msgid "Rotate the selected object by an arbitrary angle around X axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2047
+#: lib/Slic3r/GUI/Plater.pm:2017
msgid "Around Y axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2047
+#: lib/Slic3r/GUI/Plater.pm:2017
msgid "Rotate the selected object by an arbitrary angle around Y axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2050
+#: lib/Slic3r/GUI/Plater.pm:2020
msgid "Around Z axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2050
+#: lib/Slic3r/GUI/Plater.pm:2020
msgid "Rotate the selected object by an arbitrary angle around Z axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2055
+#: lib/Slic3r/GUI/Plater.pm:2025
msgid "Mirror"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2055
+#: lib/Slic3r/GUI/Plater.pm:2025
msgid "Mirror the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2057
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2073
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2089
+#: lib/Slic3r/GUI/Plater.pm:2027 lib/Slic3r/GUI/Plater.pm:2043
+#: lib/Slic3r/GUI/Plater.pm:2059
msgid "Along X axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2057
+#: lib/Slic3r/GUI/Plater.pm:2027
msgid "Mirror the selected object along the X axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2060
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2076
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2092
+#: lib/Slic3r/GUI/Plater.pm:2030 lib/Slic3r/GUI/Plater.pm:2046
+#: lib/Slic3r/GUI/Plater.pm:2062
msgid "Along Y axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2060
+#: lib/Slic3r/GUI/Plater.pm:2030
msgid "Mirror the selected object along the Y axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2063
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2079
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2095
+#: lib/Slic3r/GUI/Plater.pm:2033 lib/Slic3r/GUI/Plater.pm:2049
+#: lib/Slic3r/GUI/Plater.pm:2065
msgid "Along Z axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2063
+#: lib/Slic3r/GUI/Plater.pm:2033
msgid "Mirror the selected object along the Z axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2068
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2084
+#: lib/Slic3r/GUI/Plater.pm:2038 lib/Slic3r/GUI/Plater.pm:2054
msgid "Scale the selected object along a single axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2070
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2086
+#: lib/Slic3r/GUI/Plater.pm:2040 lib/Slic3r/GUI/Plater.pm:2056
msgid "Uniformly…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2070
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2086
+#: lib/Slic3r/GUI/Plater.pm:2040 lib/Slic3r/GUI/Plater.pm:2056
msgid "Scale the selected object along the XYZ axes"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2073
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2089
+#: lib/Slic3r/GUI/Plater.pm:2043 lib/Slic3r/GUI/Plater.pm:2059
msgid "Scale the selected object along the X axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2076
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2092
+#: lib/Slic3r/GUI/Plater.pm:2046 lib/Slic3r/GUI/Plater.pm:2062
msgid "Scale the selected object along the Y axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2079
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2095
+#: lib/Slic3r/GUI/Plater.pm:2049 lib/Slic3r/GUI/Plater.pm:2065
msgid "Scale the selected object along the Z axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2084
+#: lib/Slic3r/GUI/Plater.pm:2054
msgid "Scale to size"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099
+#: lib/Slic3r/GUI/Plater.pm:2069
msgid "Split the selected object into individual parts"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102
+#: lib/Slic3r/GUI/Plater.pm:2072
msgid "Open the 3D cutting tool"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106
+#: lib/Slic3r/GUI/Plater.pm:2076
msgid "Open the object editor dialog"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2110
+#: lib/Slic3r/GUI/Plater.pm:2080
msgid "Reload from Disk"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2110
+#: lib/Slic3r/GUI/Plater.pm:2080
msgid "Reload the selected file from Disk"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2113
+#: lib/Slic3r/GUI/Plater.pm:2083
msgid "Export object as STL…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2113
+#: lib/Slic3r/GUI/Plater.pm:2083
msgid "Export this single object as STL file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm:131
+#: lib/Slic3r/GUI/Plater/2D.pm:131
msgid "What do you want to print today? â„¢"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm:132
+#: lib/Slic3r/GUI/Plater/2D.pm:132
msgid "Drag your objects here"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:63
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:63
msgid "1 Layer"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:65
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:65
msgid "View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:75
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:75
msgid "Show"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:78
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:79
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:78 lib/Slic3r/GUI/Plater/3DPreview.pm:79
msgid "Feature types"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:96
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:96
msgid "Retractions"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:97
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:97
msgid "Unretractions"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:98
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:98
msgid "Shells"
msgstr ""
diff --git a/resources/localization/list.txt b/resources/localization/list.txt
index 5a6965d6a..292549545 100644
--- a/resources/localization/list.txt
+++ b/resources/localization/list.txt
@@ -9,6 +9,8 @@ xs/src/slic3r/GUI/2DBed.cpp
xs/src/slic3r/GUI/PresetHints.cpp
xs/src/slic3r/GUI/Preferences.hpp
xs/src/slic3r/GUI/Preferences.cpp
+xs/src/slic3r/GUI/BonjourDialog.cpp
+xs/src/slic3r/Utils/OctoPrint.cpp
xs/src/libslic3r/PrintConfig.cpp
xs/src/libslic3r/GCode/PreviewData.cpp
lib/Slic3r/GUI.pm
diff --git a/xs/CMakeLists.txt b/xs/CMakeLists.txt
index ce16a08f5..913ffc1e1 100644
--- a/xs/CMakeLists.txt
+++ b/xs/CMakeLists.txt
@@ -199,6 +199,8 @@ add_library(libslic3r_gui STATIC
${LIBDIR}/slic3r/GUI/2DBed.hpp
${LIBDIR}/slic3r/GUI/wxExtensions.cpp
${LIBDIR}/slic3r/GUI/wxExtensions.hpp
+ ${LIBDIR}/slic3r/GUI/BonjourDialog.cpp
+ ${LIBDIR}/slic3r/GUI/BonjourDialog.hpp
${LIBDIR}/slic3r/Utils/Http.cpp
${LIBDIR}/slic3r/Utils/Http.hpp
${LIBDIR}/slic3r/Utils/OctoPrint.cpp
diff --git a/xs/src/slic3r/GUI/BonjourDialog.cpp b/xs/src/slic3r/GUI/BonjourDialog.cpp
new file mode 100644
index 000000000..34fac9a91
--- /dev/null
+++ b/xs/src/slic3r/GUI/BonjourDialog.cpp
@@ -0,0 +1,200 @@
+#include "slic3r/Utils/Bonjour.hpp" // On Windows, boost needs to be included before wxWidgets headers
+
+#include "BonjourDialog.hpp"
+
+#include <set>
+#include <mutex>
+
+#include <wx/sizer.h>
+#include <wx/button.h>
+#include <wx/listctrl.h>
+#include <wx/stattext.h>
+#include <wx/timer.h>
+
+#include "slic3r/GUI/GUI.hpp"
+#include "slic3r/Utils/Bonjour.hpp"
+
+
+namespace Slic3r {
+
+
+struct BonjourReplyEvent : public wxEvent
+{
+ BonjourReply reply;
+
+ BonjourReplyEvent(wxEventType eventType, int winid, BonjourReply &&reply) :
+ wxEvent(winid, eventType),
+ reply(std::move(reply))
+ {}
+
+ virtual wxEvent *Clone() const
+ {
+ return new BonjourReplyEvent(*this);
+ }
+};
+
+wxDEFINE_EVENT(EVT_BONJOUR_REPLY, BonjourReplyEvent);
+
+wxDECLARE_EVENT(EVT_BONJOUR_COMPLETE, wxCommandEvent);
+wxDEFINE_EVENT(EVT_BONJOUR_COMPLETE, wxCommandEvent);
+
+class ReplySet: public std::set<BonjourReply> {};
+
+struct LifetimeGuard
+{
+ std::mutex mutex;
+ BonjourDialog *dialog;
+
+ LifetimeGuard(BonjourDialog *dialog) : dialog(dialog) {}
+};
+
+
+BonjourDialog::BonjourDialog(wxWindow *parent) :
+ wxDialog(parent, wxID_ANY, _(L("Network lookup"))),
+ list(new wxListView(this, wxID_ANY, wxDefaultPosition, wxSize(800, 300))),
+ replies(new ReplySet),
+ label(new wxStaticText(this, wxID_ANY, "")),
+ timer(new wxTimer()),
+ timer_state(0)
+{
+ wxBoxSizer *vsizer = new wxBoxSizer(wxVERTICAL);
+
+ vsizer->Add(label, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 10);
+
+ list->SetSingleStyle(wxLC_SINGLE_SEL);
+ list->SetSingleStyle(wxLC_SORT_DESCENDING);
+ list->AppendColumn(_(L("Address")), wxLIST_FORMAT_LEFT, 50);
+ list->AppendColumn(_(L("Hostname")), wxLIST_FORMAT_LEFT, 100);
+ list->AppendColumn(_(L("Service name")), wxLIST_FORMAT_LEFT, 200);
+ list->AppendColumn(_(L("OctoPrint version")), wxLIST_FORMAT_LEFT, 50);
+
+ vsizer->Add(list, 1, wxEXPAND | wxALL, 10);
+
+ wxBoxSizer *button_sizer = new wxBoxSizer(wxHORIZONTAL);
+ button_sizer->Add(new wxButton(this, wxID_OK, "OK"), 0, wxALL, 10);
+ button_sizer->Add(new wxButton(this, wxID_CANCEL, "Cancel"), 0, wxALL, 10);
+ // ^ Note: The Ok/Cancel labels are translated by wxWidgets
+
+ vsizer->Add(button_sizer, 0, wxALIGN_CENTER);
+ SetSizerAndFit(vsizer);
+
+ Bind(EVT_BONJOUR_REPLY, &BonjourDialog::on_reply, this);
+
+ Bind(EVT_BONJOUR_COMPLETE, [this](wxCommandEvent &) {
+ this->timer_state = 0;
+ });
+
+ Bind(wxEVT_TIMER, &BonjourDialog::on_timer, this);
+}
+
+BonjourDialog::~BonjourDialog()
+{
+ // Needed bacuse of forward defs
+}
+
+bool BonjourDialog::show_and_lookup()
+{
+ Show(); // Because we need GetId() to work before ShowModal()
+
+ timer->Stop();
+ timer->SetOwner(this);
+ timer_state = 1;
+ timer->Start(1000);
+ wxTimerEvent evt_dummy;
+ on_timer(evt_dummy);
+
+ // The background thread needs to queue messages for this dialog
+ // and for that it needs a valid pointer to it (mandated by the wxWidgets API).
+ // Here we put the pointer under a shared_ptr and protect it by a mutex,
+ // so that both threads can access it safely.
+ auto dguard = std::make_shared<LifetimeGuard>(this);
+
+ bonjour = std::move(Bonjour("octoprint")
+ .set_retries(3)
+ .set_timeout(4)
+ .on_reply([dguard](BonjourReply &&reply) {
+ std::lock_guard<std::mutex> lock_guard(dguard->mutex);
+ auto dialog = dguard->dialog;
+ if (dialog != nullptr) {
+ auto evt = new BonjourReplyEvent(EVT_BONJOUR_REPLY, dialog->GetId(), std::move(reply));
+ wxQueueEvent(dialog, evt);
+ }
+ })
+ .on_complete([dguard]() {
+ std::lock_guard<std::mutex> lock_guard(dguard->mutex);
+ auto dialog = dguard->dialog;
+ if (dialog != nullptr) {
+ auto evt = new wxCommandEvent(EVT_BONJOUR_COMPLETE, dialog->GetId());
+ wxQueueEvent(dialog, evt);
+ }
+ })
+ .lookup()
+ );
+
+ bool res = ShowModal() == wxID_OK && list->GetFirstSelected() >= 0;
+ {
+ // Tell the background thread the dialog is going away...
+ std::lock_guard<std::mutex> lock_guard(dguard->mutex);
+ dguard->dialog = nullptr;
+ }
+ return res;
+}
+
+wxString BonjourDialog::get_selected() const
+{
+ auto sel = list->GetFirstSelected();
+ return sel >= 0 ? list->GetItemText(sel) : wxString();
+}
+
+
+// Private
+
+void BonjourDialog::on_reply(BonjourReplyEvent &e)
+{
+ if (replies->find(e.reply) != replies->end()) {
+ // We already have this reply
+ return;
+ }
+
+ replies->insert(std::move(e.reply));
+
+ auto selected = get_selected();
+ list->DeleteAllItems();
+
+ // The whole list is recreated so that we benefit from it already being sorted in the set.
+ // (And also because wxListView's sorting API is bananas.)
+ for (const auto &reply : *replies) {
+ auto item = list->InsertItem(0, reply.full_address);
+ list->SetItem(item, 1, reply.hostname);
+ list->SetItem(item, 2, reply.service_name);
+ list->SetItem(item, 3, reply.version);
+ }
+
+ for (int i = 0; i < 4; i++) {
+ this->list->SetColumnWidth(i, wxLIST_AUTOSIZE);
+ if (this->list->GetColumnWidth(i) < 100) { this->list->SetColumnWidth(i, 100); }
+ }
+
+ if (!selected.IsEmpty()) {
+ // Attempt to preserve selection
+ auto hit = list->FindItem(-1, selected);
+ if (hit >= 0) { list->SetItemState(hit, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); }
+ }
+}
+
+void BonjourDialog::on_timer(wxTimerEvent &)
+{
+ const auto search_str = _(L("Searching for devices"));
+
+ if (timer_state > 0) {
+ const std::string dots(timer_state, '.');
+ label->SetLabel(wxString::Format("%s %s", search_str, dots));
+ timer_state = (timer_state) % 3 + 1;
+ } else {
+ label->SetLabel(wxString::Format("%s: %s", search_str, _(L("Finished."))));
+ timer->Stop();
+ }
+}
+
+
+}
diff --git a/xs/src/slic3r/GUI/BonjourDialog.hpp b/xs/src/slic3r/GUI/BonjourDialog.hpp
new file mode 100644
index 000000000..e3f53790b
--- /dev/null
+++ b/xs/src/slic3r/GUI/BonjourDialog.hpp
@@ -0,0 +1,49 @@
+#ifndef slic3r_BonjourDialog_hpp_
+#define slic3r_BonjourDialog_hpp_
+
+#include <memory>
+
+#include <wx/dialog.h>
+
+class wxListView;
+class wxStaticText;
+class wxTimer;
+class wxTimerEvent;
+
+
+namespace Slic3r {
+
+class Bonjour;
+class BonjourReplyEvent;
+class ReplySet;
+
+
+class BonjourDialog: public wxDialog
+{
+public:
+ BonjourDialog(wxWindow *parent);
+ BonjourDialog(BonjourDialog &&) = delete;
+ BonjourDialog(const BonjourDialog &) = delete;
+ BonjourDialog &operator=(BonjourDialog &&) = delete;
+ BonjourDialog &operator=(const BonjourDialog &) = delete;
+ ~BonjourDialog();
+
+ bool show_and_lookup();
+ wxString get_selected() const;
+private:
+ wxListView *list;
+ std::unique_ptr<ReplySet> replies;
+ wxStaticText *label;
+ std::shared_ptr<Bonjour> bonjour;
+ std::unique_ptr<wxTimer> timer;
+ unsigned timer_state;
+
+ void on_reply(BonjourReplyEvent &);
+ void on_timer(wxTimerEvent &);
+};
+
+
+
+}
+
+#endif
diff --git a/xs/src/slic3r/GUI/Field.cpp b/xs/src/slic3r/GUI/Field.cpp
index aed7ba12f..c2fc5e4e4 100644
--- a/xs/src/slic3r/GUI/Field.cpp
+++ b/xs/src/slic3r/GUI/Field.cpp
@@ -261,7 +261,7 @@ void SpinCtrl::BUILD() {
// # when it was changed from the text control, so the on_change callback
// # gets the old one, and on_kill_focus resets the control to the old value.
// # As a workaround, we get the new value from $event->GetString and store
-// # here temporarily so that we can return it from $self->get_value
+// # here temporarily so that we can return it from $self->get_value
std::string value = e.GetString().utf8_str().data();
if (is_matched(value, "^\\d+$"))
tmp_value = std::stoi(value);
@@ -365,9 +365,9 @@ void Choice::set_selection()
}
}
-void Choice::set_value(const std::string value) //! Redundant?
+void Choice::set_value(const std::string value, bool change_event) //! Redundant?
{
- m_disable_change_event = true;
+ m_disable_change_event = !change_event;
size_t idx=0;
for (auto el : m_opt.enum_values)
@@ -384,9 +384,9 @@ void Choice::set_value(const std::string value) //! Redundant?
m_disable_change_event = false;
}
-void Choice::set_value(boost::any value)
+void Choice::set_value(boost::any value, bool change_event)
{
- m_disable_change_event = true;
+ m_disable_change_event = !change_event;
switch (m_opt.type){
case coInt:
@@ -429,7 +429,7 @@ void Choice::set_values(const std::vector<std::string> values)
return;
m_disable_change_event = true;
-// # it looks that Clear() also clears the text field in recent wxWidgets versions,
+// # it looks that Clear() also clears the text field in recent wxWidgets versions,
// # but we want to preserve it
auto ww = dynamic_cast<wxComboBox*>(window);
auto value = ww->GetValue();
@@ -541,9 +541,9 @@ void PointCtrl::BUILD()
y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y));
}
-void PointCtrl::set_value(const Pointf value)
+void PointCtrl::set_value(const Pointf value, bool change_event)
{
- m_disable_change_event = true;
+ m_disable_change_event = !change_event;
double val = value.x;
x_textctrl->SetValue(val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 2, wxNumberFormatter::Style_None));
@@ -553,7 +553,7 @@ void PointCtrl::set_value(const Pointf value)
m_disable_change_event = false;
}
-void PointCtrl::set_value(boost::any value)
+void PointCtrl::set_value(boost::any value, bool change_event)
{
Pointf pt;
Pointf *ptf = boost::any_cast<Pointf>(&value);
@@ -579,7 +579,7 @@ void PointCtrl::set_value(boost::any value)
// return;
// }
// }
- set_value(pt);
+ set_value(pt, change_event);
}
boost::any PointCtrl::get_value()
diff --git a/xs/src/slic3r/GUI/Field.hpp b/xs/src/slic3r/GUI/Field.hpp
index db8ad4c9f..2ddb5d9f8 100644
--- a/xs/src/slic3r/GUI/Field.hpp
+++ b/xs/src/slic3r/GUI/Field.hpp
@@ -78,7 +78,7 @@ public:
/// Sets a value for this control.
/// subclasses should overload with a specific version
/// Postcondition: Method does not fire the on_change event.
- virtual void set_value(boost::any value) = 0;
+ virtual void set_value(boost::any value, bool change_event) = 0;
/// Gets a boost::any representing this control.
/// subclasses should overload with a specific version
@@ -134,13 +134,13 @@ public:
void BUILD();
wxWindow* window {nullptr};
- virtual void set_value(std::string value) {
- m_disable_change_event = true;
+ virtual void set_value(std::string value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast<wxTextCtrl*>(window)->SetValue(wxString(value));
m_disable_change_event = false;
}
- virtual void set_value(boost::any value) {
- m_disable_change_event = true;
+ virtual void set_value(boost::any value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast<wxTextCtrl*>(window)->SetValue(boost::any_cast<wxString>(value));
m_disable_change_event = false;
}
@@ -161,13 +161,13 @@ public:
wxWindow* window{ nullptr };
void BUILD() override;
- void set_value(const bool value) {
- m_disable_change_event = true;
+ void set_value(const bool value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast<wxCheckBox*>(window)->SetValue(value);
m_disable_change_event = false;
}
- void set_value(boost::any value) {
- m_disable_change_event = true;
+ void set_value(boost::any value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast<wxCheckBox*>(window)->SetValue(boost::any_cast<bool>(value));
m_disable_change_event = false;
}
@@ -189,13 +189,13 @@ public:
wxWindow* window{ nullptr };
void BUILD() override;
- void set_value(const std::string value) {
- m_disable_change_event = true;
+ void set_value(const std::string value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast<wxSpinCtrl*>(window)->SetValue(value);
m_disable_change_event = false;
}
- void set_value(boost::any value) {
- m_disable_change_event = true;
+ void set_value(boost::any value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast<wxSpinCtrl*>(window)->SetValue(boost::any_cast<int>(value));
m_disable_change_event = false;
}
@@ -218,8 +218,8 @@ public:
void BUILD() override;
void set_selection();
- void set_value(const std::string value);
- void set_value(boost::any value);
+ void set_value(const std::string value, bool change_event = false);
+ void set_value(boost::any value, bool change_event = false);
void set_values(const std::vector<std::string> values);
boost::any get_value() override;
@@ -237,13 +237,13 @@ public:
wxWindow* window{ nullptr };
void BUILD() override;
- void set_value(const std::string value) {
- m_disable_change_event = true;
+ void set_value(const std::string value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast<wxColourPickerCtrl*>(window)->SetColour(value);
m_disable_change_event = false;
}
- void set_value(boost::any value) {
- m_disable_change_event = true;
+ void set_value(boost::any value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast<wxColourPickerCtrl*>(window)->SetColour(boost::any_cast<wxString>(value));
m_disable_change_event = false;
}
@@ -267,8 +267,8 @@ public:
void BUILD() override;
- void set_value(const Pointf value);
- void set_value(boost::any value);
+ void set_value(const Pointf value, bool change_event = false);
+ void set_value(boost::any value, bool change_event = false);
boost::any get_value() override;
void enable() override {
diff --git a/xs/src/slic3r/GUI/GUI.cpp b/xs/src/slic3r/GUI/GUI.cpp
index 262d41a79..0410b7969 100644
--- a/xs/src/slic3r/GUI/GUI.cpp
+++ b/xs/src/slic3r/GUI/GUI.cpp
@@ -358,24 +358,17 @@ void open_preferences_dialog(int event_preferences)
dlg->ShowModal();
}
-void create_preset_tabs(bool no_controller, bool is_disabled_button_browse, bool is_user_agent,
- int event_value_change, int event_presets_changed,
- int event_button_browse, int event_button_test)
+void create_preset_tabs(bool no_controller, int event_value_change, int event_presets_changed)
{
add_created_tab(new TabPrint (g_wxTabPanel, no_controller));
add_created_tab(new TabFilament (g_wxTabPanel, no_controller));
- add_created_tab(new TabPrinter (g_wxTabPanel, no_controller, is_disabled_button_browse, is_user_agent));
+ add_created_tab(new TabPrinter (g_wxTabPanel, no_controller));
for (size_t i = 0; i < g_wxTabPanel->GetPageCount(); ++ i) {
Tab *tab = dynamic_cast<Tab*>(g_wxTabPanel->GetPage(i));
if (! tab)
continue;
tab->set_event_value_change(wxEventType(event_value_change));
tab->set_event_presets_changed(wxEventType(event_presets_changed));
- if (tab->name() == "printer"){
- TabPrinter* tab_printer = static_cast<TabPrinter*>(tab);
- tab_printer->set_event_button_browse(wxEventType(event_button_browse));
- tab_printer->set_event_button_test(wxEventType(event_button_test));
- }
}
}
@@ -591,19 +584,6 @@ wxString from_u8(const std::string &str)
return wxString::FromUTF8(str.c_str());
}
-wxWindow *get_widget_by_id(int id)
-{
- if (g_wxMainFrame == nullptr) {
- throw std::runtime_error("Main frame not set");
- }
-
- wxWindow *window = g_wxMainFrame->FindWindow(id);
- if (window == nullptr) {
- throw std::runtime_error((boost::format("Could not find widget by ID: %1%") % id).str());
- }
-
- return window;
-}
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer)
{
diff --git a/xs/src/slic3r/GUI/GUI.hpp b/xs/src/slic3r/GUI/GUI.hpp
index 2baa10cb9..084b6de46 100644
--- a/xs/src/slic3r/GUI/GUI.hpp
+++ b/xs/src/slic3r/GUI/GUI.hpp
@@ -86,9 +86,7 @@ void add_debug_menu(wxMenuBar *menu, int event_language_change);
void open_preferences_dialog(int event_preferences);
// Create a new preset tab (print, filament and printer),
-void create_preset_tabs(bool no_controller, bool is_disabled_button_browse, bool is_user_agent,
- int event_value_change, int event_presets_changed,
- int event_button_browse, int event_button_test);
+void create_preset_tabs(bool no_controller, int event_value_change, int event_presets_changed);
TabIface* get_preset_tab_iface(char *name);
// add it at the end of the tab panel.
@@ -127,7 +125,6 @@ wxString L_str(const std::string &str);
// Return wxString from std::string in UTF8
wxString from_u8(const std::string &str);
-wxWindow *get_widget_by_id(int id);
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer);
diff --git a/xs/src/slic3r/GUI/OptionsGroup.hpp b/xs/src/slic3r/GUI/OptionsGroup.hpp
index 42db22225..aa0563866 100644
--- a/xs/src/slic3r/GUI/OptionsGroup.hpp
+++ b/xs/src/slic3r/GUI/OptionsGroup.hpp
@@ -97,9 +97,9 @@ public:
if (m_fields.find(id) == m_fields.end()) return nullptr;
return m_fields.at(id).get();
}
- bool set_value(t_config_option_key id, boost::any value) {
+ bool set_value(t_config_option_key id, boost::any value, bool change_event = false) {
if (m_fields.find(id) == m_fields.end()) return false;
- m_fields.at(id)->set_value(value);
+ m_fields.at(id)->set_value(value, change_event);
return true;
}
boost::any get_value(t_config_option_key id) {
diff --git a/xs/src/slic3r/GUI/Tab.cpp b/xs/src/slic3r/GUI/Tab.cpp
index e2dfa6f27..d0f9f0ce3 100644
--- a/xs/src/slic3r/GUI/Tab.cpp
+++ b/xs/src/slic3r/GUI/Tab.cpp
@@ -3,6 +3,9 @@
#include "PresetBundle.hpp"
#include "PresetHints.hpp"
#include "../../libslic3r/Utils.hpp"
+#include "slic3r/Utils/Http.hpp"
+#include "slic3r/Utils/OctoPrint.hpp"
+#include "BonjourDialog.hpp"
#include <wx/app.h>
#include <wx/button.h>
@@ -14,6 +17,7 @@
#include <wx/treectrl.h>
#include <wx/imaglist.h>
#include <wx/settings.h>
+#include <wx/filedlg.h>
#include <boost/algorithm/string/predicate.hpp>
@@ -1102,39 +1106,18 @@ void TabPrinter::build()
}
optgroup = page->new_optgroup(_(L("OctoPrint upload")));
- // # append two buttons to the Host line
- auto octoprint_host_browse = [this] (wxWindow* parent) {
+
+ auto octoprint_host_browse = [this, optgroup] (wxWindow* parent) {
auto btn = new wxButton(parent, wxID_ANY, _(L(" Browse "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
-// btn->SetFont($Slic3r::GUI::small_font);
btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("zoom.png")), wxBITMAP_TYPE_PNG));
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
- if (m_is_disabled_button_browse)
- btn->Disable();
-
- btn->Bind(wxEVT_BUTTON, [this, parent](wxCommandEvent e){
- if (m_event_button_browse > 0){
- wxCommandEvent event(m_event_button_browse);
- event.SetString("Button BROWSE was clicked!");
- g_wxMainFrame->ProcessWindowEvent(event);
+ btn->Bind(wxEVT_BUTTON, [this, parent, optgroup](wxCommandEvent e) {
+ BonjourDialog dialog(parent);
+ if (dialog.show_and_lookup()) {
+ optgroup->set_value("octoprint_host", std::move(dialog.get_selected()), true);
}
-// // # look for devices
-// auto entries;
-// {
-// my $res = Net::Bonjour->new('http');
-// $res->discover;
-// $entries = [$res->entries];
-// }
-// if (@{$entries}) {
-// my $dlg = Slic3r::GUI::BonjourBrowser->new($self, $entries);
-// $self->_load_key_value('octoprint_host', $dlg->GetValue . ":".$dlg->GetPort)
-// if $dlg->ShowModal == wxID_OK;
-// }
-// else {
-// auto msg_window = new wxMessageDialog(parent, "No Bonjour device found", "Device Browser", wxOK | wxICON_INFORMATION);
-// msg_window->ShowModal();
-// }
});
return sizer;
@@ -1143,33 +1126,23 @@ void TabPrinter::build()
auto octoprint_host_test = [this](wxWindow* parent) {
auto btn = m_octoprint_host_test_btn = new wxButton(parent, wxID_ANY, _(L("Test")),
wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
-// btn->SetFont($Slic3r::GUI::small_font);
btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("wrench.png")), wxBITMAP_TYPE_PNG));
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
- btn->Bind(wxEVT_BUTTON, [this, parent](wxCommandEvent e) {
- if (m_event_button_test > 0){
- wxCommandEvent event(m_event_button_test);
- event.SetString("Button TEST was clicked!");
- g_wxMainFrame->ProcessWindowEvent(event);
+ btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent e) {
+ OctoPrint octoprint(m_config);
+ wxString msg;
+ if (octoprint.test(msg)) {
+ show_info(this, _(L("Connection to OctoPrint works correctly.")), _(L("Success!")));
+ } else {
+ const auto text = wxString::Format("%s: %s\n\n%s",
+ _(L("Could not connect to OctoPrint")), msg, _(L("Note: OctoPrint version at least 1.1.0 is required."))
+ );
+ show_error(this, text);
}
-// my $ua = LWP::UserAgent->new;
-// $ua->timeout(10);
-//
-// my $res = $ua->get(
-// "http://".$self->{config}->octoprint_host . "/api/version",
-// 'X-Api-Key' = > $self->{config}->octoprint_apikey,
-// );
-// if ($res->is_success) {
-// show_info(parent, "Connection to OctoPrint works correctly.", "Success!");
-// }
-// else {
-// show_error(parent,
-// "I wasn't able to connect to OctoPrint (".$res->status_line . "). "
-// . "Check hostname and OctoPrint version (at least 1.1.0 is required).");
-// }
- });
+ });
+
return sizer;
};
@@ -1179,6 +1152,45 @@ void TabPrinter::build()
optgroup->append_line(host_line);
optgroup->append_single_option_line("octoprint_apikey");
+ if (Http::ca_file_supported()) {
+
+ Line cafile_line = optgroup->create_single_option_line("octoprint_cafile");
+
+ auto octoprint_cafile_browse = [this, optgroup] (wxWindow* parent) {
+ auto btn = new wxButton(parent, wxID_ANY, _(L(" Browse "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
+ btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("zoom.png")), wxBITMAP_TYPE_PNG));
+ auto sizer = new wxBoxSizer(wxHORIZONTAL);
+ sizer->Add(btn);
+
+ btn->Bind(wxEVT_BUTTON, [this, optgroup] (wxCommandEvent e){
+ static const auto filemasks = _(L("Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"));
+ wxFileDialog openFileDialog(this, _(L("Open CA certificate file")), "", "", filemasks, wxFD_OPEN | wxFD_FILE_MUST_EXIST);
+ if (openFileDialog.ShowModal() != wxID_CANCEL) {
+ optgroup->set_value("octoprint_cafile", std::move(openFileDialog.GetPath()), true);
+ }
+ });
+
+ return sizer;
+ };
+
+ cafile_line.append_widget(octoprint_cafile_browse);
+ optgroup->append_line(cafile_line);
+
+ auto octoprint_cafile_hint = [this, optgroup] (wxWindow* parent) {
+ auto txt = new wxStaticText(parent, wxID_ANY,
+ _(L("HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate.")));
+ auto sizer = new wxBoxSizer(wxHORIZONTAL);
+ sizer->Add(txt);
+ return sizer;
+ };
+
+ Line cafile_hint { "", "" };
+ cafile_hint.full_width = 1;
+ cafile_hint.widget = std::move(octoprint_cafile_hint);
+ optgroup->append_line(cafile_hint);
+
+ }
+
optgroup = page->new_optgroup(_(L("Firmware")));
optgroup->append_single_option_line("gcode_flavor");
@@ -1337,13 +1349,8 @@ void TabPrinter::update(){
m_serial_test_btn->Disable();
}
- en = !m_config->opt_string("octoprint_host").empty();
- if ( en && m_is_user_agent)
- m_octoprint_host_test_btn->Enable();
- else
- m_octoprint_host_test_btn->Disable();
- get_field("octoprint_apikey")->toggle(en);
-
+ m_octoprint_host_test_btn->Enable(!m_config->opt_string("octoprint_host").empty());
+
bool have_multiple_extruders = m_extruders_count > 1;
get_field("toolchange_gcode")->toggle(have_multiple_extruders);
get_field("single_extruder_multi_material")->toggle(have_multiple_extruders);
diff --git a/xs/src/slic3r/GUI/Tab.hpp b/xs/src/slic3r/GUI/Tab.hpp
index e2dc51ee4..4f65f1475 100644
--- a/xs/src/slic3r/GUI/Tab.hpp
+++ b/xs/src/slic3r/GUI/Tab.hpp
@@ -214,11 +214,6 @@ public:
//Slic3r::GUI::Tab::Printer;
class TabPrinter : public Tab
{
- bool m_is_disabled_button_browse;
- bool m_is_user_agent;
- // similar event by clicking Buttons "Browse" & "Test"
- wxEventType m_event_button_browse = 0;
- wxEventType m_event_button_test = 0;
public:
wxButton* m_serial_test_btn;
wxButton* m_octoprint_host_test_btn;
@@ -228,10 +223,7 @@ public:
std::vector<PageShp> m_extruder_pages;
TabPrinter() {}
- TabPrinter(wxNotebook* parent, bool no_controller, bool is_disabled_btn_browse, bool is_user_agent) :
- Tab(parent, _(L("Printer Settings")), "printer", no_controller),
- m_is_disabled_button_browse(is_disabled_btn_browse),
- m_is_user_agent(is_user_agent) {}
+ TabPrinter(wxNotebook* parent, bool no_controller) : Tab(parent, _(L("Printer Settings")), "printer", no_controller) {}
~TabPrinter(){}
void build() override;
@@ -240,10 +232,6 @@ public:
void extruders_count_changed(size_t extruders_count);
void build_extruder_pages();
void on_preset_loaded() override;
-
- // Set the events to the callbacks posted to the main frame window (currently implemented in Perl).
- void set_event_button_browse(wxEventType evt) { m_event_button_browse = evt; }
- void set_event_button_test(wxEventType evt) { m_event_button_test = evt; }
};
class SavePresetWindow :public wxDialog
diff --git a/xs/src/slic3r/Utils/Bonjour.cpp b/xs/src/slic3r/Utils/Bonjour.cpp
index 6107e2c60..09d9b5873 100644
--- a/xs/src/slic3r/Utils/Bonjour.cpp
+++ b/xs/src/slic3r/Utils/Bonjour.cpp
@@ -1,9 +1,7 @@
#include "Bonjour.hpp"
-#include <iostream> // XXX
#include <cstdint>
#include <algorithm>
-#include <unordered_map>
#include <array>
#include <vector>
#include <string>
@@ -23,16 +21,18 @@ namespace asio = boost::asio;
using boost::asio::ip::udp;
-// TODO: Fuzzing test (done without TXT)
-// FIXME: check char retype to unsigned
-
-
namespace Slic3r {
// Minimal implementation of a MDNS/DNS-SD client
// This implementation is extremely simple, only the bits that are useful
-// for very basic MDNS discovery are present.
+// for basic MDNS discovery of OctoPi devices are present.
+// However, the bits that are present are implemented with security in mind.
+// Only fully correct DNS replies are allowed through.
+// While decoding the decoder will bail the moment it encounters anything fishy.
+// At least that's the idea. To help prove this is actually the case,
+// the implementations has been tested with AFL.
+
struct DnsName: public std::string
{
@@ -48,8 +48,7 @@ struct DnsName: public std::string
return boost::none;
}
- // Check for recursion depth to prevent parsing names that are nested too deeply
- // or end up cyclic:
+ // Check for recursion depth to prevent parsing names that are nested too deeply or end up cyclic:
if (depth >= MAX_RECURSION) {
return boost::none;
}
@@ -443,6 +442,30 @@ private:
}
};
+std::ostream& operator<<(std::ostream &os, const DnsMessage &msg)
+{
+ os << "DnsMessage(ID: " << msg.header.id << ", "
+ << "Q: " << (msg.question ? msg.question->name.c_str() : "none") << ", "
+ << "A: " << (msg.rr_a ? msg.rr_a->ip.to_string() : "none") << ", "
+ << "AAAA: " << (msg.rr_aaaa ? msg.rr_aaaa->ip.to_string() : "none") << ", "
+ << "services: [";
+
+ enum { SRV_PRINT_MAX = 3 };
+ unsigned i = 0;
+ for (const auto &sdpair : msg.sdmap) {
+ os << sdpair.first << ", ";
+
+ if (++i >= SRV_PRINT_MAX) {
+ os << "...";
+ break;
+ }
+ }
+
+ os << "])";
+
+ return os;
+}
+
struct BonjourRequest
{
@@ -515,6 +538,7 @@ struct Bonjour::priv
const std::string protocol;
const std::string service_dn;
unsigned timeout;
+ unsigned retries;
uint16_t rq_id;
std::vector<char> buffer;
@@ -524,6 +548,7 @@ struct Bonjour::priv
priv(std::string service, std::string protocol);
+ std::string strip_service_dn(const std::string &service_name) const;
void udp_receive(udp::endpoint from, size_t bytes);
void lookup_perform();
};
@@ -533,11 +558,26 @@ Bonjour::priv::priv(std::string service, std::string protocol) :
protocol(std::move(protocol)),
service_dn((boost::format("_%1%._%2%.local") % this->service % this->protocol).str()),
timeout(10),
+ retries(1),
rq_id(0)
{
buffer.resize(DnsMessage::MAX_SIZE);
}
+std::string Bonjour::priv::strip_service_dn(const std::string &service_name) const
+{
+ if (service_name.size() <= service_dn.size()) {
+ return service_name;
+ }
+
+ auto needle = service_name.rfind(service_dn);
+ if (needle == service_name.size() - service_dn.size()) {
+ return service_name.substr(0, needle - 1);
+ } else {
+ return service_name;
+ }
+}
+
void Bonjour::priv::udp_receive(udp::endpoint from, size_t bytes)
{
if (bytes == 0 || !replyfn) {
@@ -557,7 +597,10 @@ void Bonjour::priv::udp_receive(udp::endpoint from, size_t bytes)
}
const auto &srv = *sdpair.second.srv;
- BonjourReply reply(ip, sdpair.first, srv.hostname);
+ auto service_name = strip_service_dn(sdpair.first);
+
+ std::string path;
+ std::string version;
if (sdpair.second.txt) {
static const std::string tag_path = "path=";
@@ -565,13 +608,14 @@ void Bonjour::priv::udp_receive(udp::endpoint from, size_t bytes)
for (const auto &value : sdpair.second.txt->values) {
if (value.size() > tag_path.size() && value.compare(0, tag_path.size(), tag_path) == 0) {
- reply.path = value.substr(tag_path.size());
+ path = std::move(value.substr(tag_path.size()));
} else if (value.size() > tag_version.size() && value.compare(0, tag_version.size(), tag_version) == 0) {
- reply.version = value.substr(tag_version.size());
+ version = std::move(value.substr(tag_version.size()));
}
}
}
+ BonjourReply reply(ip, srv.port, std::move(service_name), srv.hostname, std::move(path), std::move(version));
replyfn(std::move(reply));
}
}
@@ -595,15 +639,26 @@ void Bonjour::priv::lookup_perform()
udp::endpoint mcast(BonjourRequest::MCAST_IP4, BonjourRequest::MCAST_PORT);
socket.send_to(asio::buffer(brq->data), mcast);
- bool timeout = false;
+ bool expired = false;
+ bool retry = false;
asio::deadline_timer timer(io_service);
- timer.expires_from_now(boost::posix_time::seconds(10));
- timer.async_wait([=, &timeout](const error_code &error) {
- timeout = true;
- if (self->completefn) {
- self->completefn();
+ retries--;
+ std::function<void(const error_code &)> timer_handler = [&](const error_code &error) {
+ if (retries == 0 || error) {
+ expired = true;
+ if (self->completefn) {
+ self->completefn();
+ }
+ } else {
+ retry = true;
+ retries--;
+ timer.expires_from_now(boost::posix_time::seconds(timeout));
+ timer.async_wait(timer_handler);
}
- });
+ };
+
+ timer.expires_from_now(boost::posix_time::seconds(timeout));
+ timer.async_wait(timer_handler);
udp::endpoint recv_from;
const auto recv_handler = [&](const error_code &error, size_t bytes) {
@@ -612,8 +667,11 @@ void Bonjour::priv::lookup_perform()
socket.async_receive_from(asio::buffer(buffer, buffer.size()), recv_from, recv_handler);
while (io_service.run_one()) {
- if (timeout) {
+ if (expired) {
socket.cancel();
+ } else if (retry) {
+ retry = false;
+ socket.send_to(asio::buffer(brq->data), mcast);
} else {
buffer.resize(DnsMessage::MAX_SIZE);
socket.async_receive_from(asio::buffer(buffer, buffer.size()), recv_from, recv_handler);
@@ -626,13 +684,39 @@ void Bonjour::priv::lookup_perform()
// API - public part
-BonjourReply::BonjourReply(boost::asio::ip::address ip, std::string service_name, std::string hostname) :
+BonjourReply::BonjourReply(boost::asio::ip::address ip, uint16_t port, std::string service_name, std::string hostname, std::string path, std::string version) :
ip(std::move(ip)),
+ port(port),
service_name(std::move(service_name)),
hostname(std::move(hostname)),
- path("/"),
- version("Unknown")
-{}
+ path(path.empty() ? std::move(std::string("/")) : std::move(path)),
+ version(version.empty() ? std::move(std::string("Unknown")) : std::move(version))
+{
+ std::string proto;
+ std::string port_suffix;
+ if (port == 443) { proto = "https://"; }
+ if (port != 443 && port != 80) { port_suffix = std::to_string(port).insert(0, 1, ':'); }
+ if (this->path[0] != '/') { this->path.insert(0, 1, '/'); }
+ full_address = proto + ip.to_string() + port_suffix;
+ if (this->path != "/") { full_address += path; }
+}
+
+bool BonjourReply::operator==(const BonjourReply &other) const
+{
+ return this->full_address == other.full_address
+ && this->service_name == other.service_name;
+}
+
+bool BonjourReply::operator<(const BonjourReply &other) const
+{
+ if (this->ip != other.ip) {
+ // So that the common case doesn't involve string comparison
+ return this->ip < other.ip;
+ } else {
+ auto cmp = this->full_address.compare(other.full_address);
+ return cmp != 0 ? cmp < 0 : this->service_name < other.service_name;
+ }
+}
std::ostream& operator<<(std::ostream &os, const BonjourReply &reply)
{
@@ -641,6 +725,7 @@ std::ostream& operator<<(std::ostream &os, const BonjourReply &reply)
return os;
}
+
Bonjour::Bonjour(std::string service, std::string protocol) :
p(new priv(std::move(service), std::move(protocol)))
{}
@@ -660,6 +745,12 @@ Bonjour& Bonjour::set_timeout(unsigned timeout)
return *this;
}
+Bonjour& Bonjour::set_retries(unsigned retries)
+{
+ if (p && retries > 0) { p->retries = retries; }
+ return *this;
+}
+
Bonjour& Bonjour::on_reply(ReplyFn fn)
{
if (p) { p->replyfn = std::move(fn); }
@@ -677,7 +768,7 @@ Bonjour::Ptr Bonjour::lookup()
auto self = std::make_shared<Bonjour>(std::move(*this));
if (self->p) {
- auto io_thread = std::thread([self](){
+ auto io_thread = std::thread([self]() {
self->p->lookup_perform();
});
self->p->io_thread = std::move(io_thread);
@@ -687,18 +778,4 @@ Bonjour::Ptr Bonjour::lookup()
}
-void Bonjour::pokus() // XXX
-{
- auto bonjour = Bonjour("octoprint")
- .set_timeout(15)
- .on_reply([](BonjourReply &&reply) {
- std::cerr << "BonjourReply: " << reply << std::endl;
- })
- .on_complete([](){
- std::cerr << "MDNS lookup complete" << std::endl;
- })
- .lookup();
-}
-
-
}
diff --git a/xs/src/slic3r/Utils/Bonjour.hpp b/xs/src/slic3r/Utils/Bonjour.hpp
index 285625c04..63f34638c 100644
--- a/xs/src/slic3r/Utils/Bonjour.hpp
+++ b/xs/src/slic3r/Utils/Bonjour.hpp
@@ -1,26 +1,31 @@
#ifndef slic3r_Bonjour_hpp_
#define slic3r_Bonjour_hpp_
+#include <cstdint>
#include <memory>
#include <string>
#include <functional>
-// #include <ostream>
#include <boost/asio/ip/address.hpp>
namespace Slic3r {
-// TODO: reply data structure
struct BonjourReply
{
boost::asio::ip::address ip;
+ uint16_t port;
std::string service_name;
std::string hostname;
+ std::string full_address;
std::string path;
std::string version;
- BonjourReply(boost::asio::ip::address ip, std::string service_name, std::string hostname);
+ BonjourReply() = delete;
+ BonjourReply(boost::asio::ip::address ip, uint16_t port, std::string service_name, std::string hostname, std::string path, std::string version);
+
+ bool operator==(const BonjourReply &other) const;
+ bool operator<(const BonjourReply &other) const;
};
std::ostream& operator<<(std::ostream &, const BonjourReply &);
@@ -32,7 +37,7 @@ private:
struct priv;
public:
typedef std::shared_ptr<Bonjour> Ptr;
- typedef std::function<void(BonjourReply &&reply)> ReplyFn;
+ typedef std::function<void(BonjourReply &&)> ReplyFn;
typedef std::function<void()> CompleteFn;
Bonjour(std::string service, std::string protocol = "tcp");
@@ -40,12 +45,15 @@ public:
~Bonjour();
Bonjour& set_timeout(unsigned timeout);
+ Bonjour& set_retries(unsigned retries);
+ // ^ Note: By default there is 1 retry (meaning 1 broadcast is sent).
+ // Timeout is per one retry, ie. total time spent listening = retries * timeout.
+ // If retries > 1, then care needs to be taken as more than one reply from the same service may be received.
+
Bonjour& on_reply(ReplyFn fn);
Bonjour& on_complete(CompleteFn fn);
Ptr lookup();
-
- static void pokus(); // XXX: remove
private:
std::unique_ptr<priv> p;
};
diff --git a/xs/src/slic3r/Utils/Http.cpp b/xs/src/slic3r/Utils/Http.cpp
index 45a350a59..de28904e2 100644
--- a/xs/src/slic3r/Utils/Http.cpp
+++ b/xs/src/slic3r/Utils/Http.cpp
@@ -3,7 +3,6 @@
#include <cstdlib>
#include <functional>
#include <thread>
-#include <iostream>
#include <tuple>
#include <boost/format.hpp>
@@ -45,7 +44,9 @@ struct Http::priv
priv(const std::string &url);
~priv();
+ static bool ca_file_supported(::CURL *curl);
static size_t writecb(void *data, size_t size, size_t nmemb, void *userp);
+ std::string curl_error(CURLcode curlcode);
std::string body_size_error();
void http_perform();
};
@@ -71,6 +72,29 @@ Http::priv::~priv()
::curl_slist_free_all(headerlist);
}
+bool Http::priv::ca_file_supported(::CURL *curl)
+{
+#ifdef _WIN32
+ bool res = false;
+#else
+ bool res = true;
+#endif
+
+ if (curl == nullptr) { return res; }
+
+#if LIBCURL_VERSION_MAJOR >= 7 && LIBCURL_VERSION_MINOR >= 48
+ ::curl_tlssessioninfo *tls;
+ if (::curl_easy_getinfo(curl, CURLINFO_TLS_SSL_PTR, &tls) == CURLE_OK) {
+ if (tls->backend == CURLSSLBACKEND_SCHANNEL || tls->backend == CURLSSLBACKEND_DARWINSSL) {
+ // With Windows and OS X native SSL support, cert files cannot be set
+ res = false;
+ }
+ }
+#endif
+
+ return res;
+}
+
size_t Http::priv::writecb(void *data, size_t size, size_t nmemb, void *userp)
{
auto self = static_cast<priv*>(userp);
@@ -88,6 +112,14 @@ size_t Http::priv::writecb(void *data, size_t size, size_t nmemb, void *userp)
return realsize;
}
+std::string Http::priv::curl_error(CURLcode curlcode)
+{
+ return (boost::format("%1% (%2%)")
+ % ::curl_easy_strerror(curlcode)
+ % curlcode
+ ).str();
+}
+
std::string Http::priv::body_size_error()
{
return (boost::format("HTTP body data size exceeded limit (%1% bytes)") % limit).str();
@@ -121,7 +153,7 @@ void Http::priv::http_perform()
if (res == CURLE_WRITE_ERROR) {
error = std::move(body_size_error());
} else {
- error = ::curl_easy_strerror(res);
+ error = std::move(curl_error(res));
};
if (errorfn) {
@@ -180,7 +212,7 @@ Http& Http::remove_header(std::string name)
Http& Http::ca_file(const std::string &name)
{
- if (p) {
+ if (p && priv::ca_file_supported(p->curl)) {
::curl_easy_setopt(p->curl, CURLOPT_CAINFO, name.c_str());
}
@@ -257,5 +289,13 @@ Http Http::post(std::string url)
return http;
}
+bool Http::ca_file_supported()
+{
+ ::CURL *curl = ::curl_easy_init();
+ bool res = priv::ca_file_supported(curl);
+ if (curl != nullptr) { ::curl_easy_cleanup(curl); }
+ return res;
+}
+
}
diff --git a/xs/src/slic3r/Utils/Http.hpp b/xs/src/slic3r/Utils/Http.hpp
index c591e17c5..6ac5fcce1 100644
--- a/xs/src/slic3r/Utils/Http.hpp
+++ b/xs/src/slic3r/Utils/Http.hpp
@@ -41,6 +41,7 @@ public:
Ptr perform();
void perform_sync();
+ static bool ca_file_supported();
private:
Http(const std::string &url);
diff --git a/xs/src/slic3r/Utils/OctoPrint.cpp b/xs/src/slic3r/Utils/OctoPrint.cpp
index 58530833b..5bf51f470 100644
--- a/xs/src/slic3r/Utils/OctoPrint.cpp
+++ b/xs/src/slic3r/Utils/OctoPrint.cpp
@@ -20,16 +20,19 @@ OctoPrint::OctoPrint(DynamicPrintConfig *config) :
cafile(config->opt_string("octoprint_cafile"))
{}
-std::string OctoPrint::test() const
+bool OctoPrint::test(wxString &msg) const
{
// Since the request is performed synchronously here,
- // it is ok to refer to `res` from within the closure
- std::string res;
+ // it is ok to refer to `msg` from within the closure
- auto http = Http::get(std::move(make_url("api/version")));
+ bool res = true;
+
+ auto url = std::move(make_url("api/version"));
+ auto http = Http::get(std::move(url));
set_auth(http);
http.on_error([&](std::string, std::string error, unsigned status) {
- res = format_error(error, status);
+ res = false;
+ msg = format_error(error, status);
})
.perform_sync();
@@ -43,21 +46,26 @@ void OctoPrint::send_gcode(int windowId, int completeEvt, int errorEvt, const st
http.form_add("print", print ? "true" : "false")
.form_add_file("file", filename)
.on_complete([=](std::string body, unsigned status) {
- wxWindow *window = GUI::get_widget_by_id(windowId);
+ wxWindow *window = wxWindow::FindWindowById(windowId);
+ if (window == nullptr) { return; }
+
wxCommandEvent* evt = new wxCommandEvent(completeEvt);
- evt->SetString("G-code file successfully uploaded to the OctoPrint server");
+ evt->SetString(_(L("G-code file successfully uploaded to the OctoPrint server")));
evt->SetInt(100);
wxQueueEvent(window, evt);
})
.on_error([=](std::string body, std::string error, unsigned status) {
- wxWindow *window = GUI::get_widget_by_id(windowId);
+ wxWindow *window = wxWindow::FindWindowById(windowId);
+ if (window == nullptr) { return; }
wxCommandEvent* evt_complete = new wxCommandEvent(completeEvt);
evt_complete->SetInt(100);
wxQueueEvent(window, evt_complete);
wxCommandEvent* evt_error = new wxCommandEvent(errorEvt);
- evt_error->SetString(wxString::Format("Error while uploading to the OctoPrint server: %s", format_error(error, status)));
+ evt_error->SetString(wxString::Format("%s: %s",
+ _(L("Error while uploading to the OctoPrint server")),
+ format_error(error, status)));
wxQueueEvent(window, evt_error);
})
.perform();
@@ -85,19 +93,15 @@ std::string OctoPrint::make_url(const std::string &path) const
}
}
-std::string OctoPrint::format_error(std::string error, unsigned status)
+wxString OctoPrint::format_error(std::string error, unsigned status)
{
- if (status != 0) {
- std::string res{"HTTP "};
- res.append(std::to_string(status));
+ const wxString wxerror = error;
- if (status == 401) {
- res.append(": Invalid API key");
- }
-
- return std::move(res);
+ if (status != 0) {
+ return wxString::Format("HTTP %u: %s", status,
+ (status == 401 ? _(L("Invalid API key")) : wxerror));
} else {
- return std::move(error);
+ return std::move(wxerror);
}
}
diff --git a/xs/src/slic3r/Utils/OctoPrint.hpp b/xs/src/slic3r/Utils/OctoPrint.hpp
index eca3baa63..1f544295c 100644
--- a/xs/src/slic3r/Utils/OctoPrint.hpp
+++ b/xs/src/slic3r/Utils/OctoPrint.hpp
@@ -2,8 +2,8 @@
#define slic3r_OctoPrint_hpp_
#include <string>
+#include <wx/string.h>
-// #include "Http.hpp" // XXX: ?
namespace Slic3r {
@@ -16,8 +16,7 @@ class OctoPrint
public:
OctoPrint(DynamicPrintConfig *config);
- std::string test() const;
- // XXX: style
+ bool test(wxString &curl_msg) const;
void send_gcode(int windowId, int completeEvt, int errorEvt, const std::string &filename, bool print = false) const;
private:
std::string host;
@@ -26,7 +25,7 @@ private:
void set_auth(Http &http) const;
std::string make_url(const std::string &path) const;
- static std::string format_error(std::string error, unsigned status);
+ static wxString format_error(std::string error, unsigned status);
};
diff --git a/xs/xsp/GUI.xsp b/xs/xsp/GUI.xsp
index be36c531f..3dc92fa94 100644
--- a/xs/xsp/GUI.xsp
+++ b/xs/xsp/GUI.xsp
@@ -35,12 +35,8 @@ void set_tab_panel(SV *ui)
void add_debug_menu(SV *ui, int event_language_change)
%code%{ Slic3r::GUI::add_debug_menu((wxMenuBar*)wxPli_sv_2_object(aTHX_ ui, "Wx::MenuBar"), event_language_change); %};
-void create_preset_tabs(bool no_controller, bool is_disabled_button_browse, bool is_user_agent,
- int event_value_change, int event_presets_changed,
- int event_button_browse, int event_button_test)
- %code%{ Slic3r::GUI::create_preset_tabs(no_controller, is_disabled_button_browse, is_user_agent,
- event_value_change, event_presets_changed,
- event_button_browse, event_button_test); %};
+void create_preset_tabs(bool no_controller, int event_value_change, int event_presets_changed)
+ %code%{ Slic3r::GUI::create_preset_tabs(no_controller, event_value_change, event_presets_changed); %};
Ref<TabIface> get_preset_tab(char *name)
%code%{ RETVAL=Slic3r::GUI::get_preset_tab_iface(name); %};
diff --git a/xs/xsp/Utils_OctoPrint.xsp b/xs/xsp/Utils_OctoPrint.xsp
index 062af4e0c..124f66cb5 100644
--- a/xs/xsp/Utils_OctoPrint.xsp
+++ b/xs/xsp/Utils_OctoPrint.xsp
@@ -9,6 +9,5 @@
OctoPrint(DynamicPrintConfig *config);
~OctoPrint();
- std::string test() const;
void send_gcode(int windowId, int completeEvt, int errorEvt, std::string filename, bool print = false) const;
};