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 , 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 \n" "Language-Team: LANGUAGE \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 -msgid "Save current " +#: xs/src/slic3r/GUI/GUI.cpp:655 +msgid "Support" msgstr "" -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:51 -msgid "Delete this preset" +#: xs/src/slic3r/GUI/GUI.cpp:658 +msgid "Select what kind of support do you need" msgstr "" -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:313 -msgid "Layers and perimeters" +#: xs/src/slic3r/GUI/GUI.cpp:659 xs/src/libslic3r/GCode/PreviewData.cpp:137 +msgid "None" msgstr "" -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:314 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:777 -msgid "Layer height" +#: xs/src/slic3r/GUI/GUI.cpp:660 xs/src/libslic3r/PrintConfig.cpp:1415 +msgid "Support on build plate only" msgstr "" -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:318 -msgid "Vertical shells" +#: xs/src/slic3r/GUI/GUI.cpp:661 +msgid "Everywhere" msgstr "" -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:329 -msgid "Horizontal shells" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:330 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1314 -msgid "Solid layers" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:335 -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 -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 -msgid "Infill" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:352 -msgid "Reducing printing time" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:364 -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 -msgid "Skirt" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:371 +#: xs/src/slic3r/GUI/GUI.cpp:673 xs/src/slic3r/GUI/Tab.cpp:441 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/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 "" + +#: xs/src/slic3r/GUI/Tab.cpp:58 +msgid "Delete this preset" +msgstr "" + +#: xs/src/slic3r/GUI/Tab.cpp:383 +msgid "Layers and perimeters" +msgstr "" + +#: xs/src/slic3r/GUI/Tab.cpp:384 xs/src/libslic3r/PrintConfig.cpp:777 +msgid "Layer height" +msgstr "" + +#: xs/src/slic3r/GUI/Tab.cpp:388 +msgid "Vertical shells" +msgstr "" + +#: xs/src/slic3r/GUI/Tab.cpp:399 +msgid "Horizontal shells" +msgstr "" + +#: xs/src/slic3r/GUI/Tab.cpp:400 xs/src/libslic3r/PrintConfig.cpp:1321 +msgid "Solid layers" +msgstr "" + +#: xs/src/slic3r/GUI/Tab.cpp:405 +msgid "Quality (slower slicing)" +msgstr "" + +#: 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 "" + +#: 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 "" + +#: xs/src/slic3r/GUI/Tab.cpp:422 +msgid "Reducing printing time" +msgstr "" + +#: xs/src/slic3r/GUI/Tab.cpp:434 +msgid "Skirt and brim" +msgstr "" + +#: xs/src/slic3r/GUI/Tab.cpp:435 xs/src/libslic3r/GCode/PreviewData.cpp:146 +#: lib/Slic3r/GUI/Plater/3DPreview.pm:88 +msgid "Skirt" +msgstr "" + +#: 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 +#: lib/Slic3r/GUI/Plater.pm:1335 +msgid "Save G-code file as:" +msgstr "" + +#: lib/Slic3r/GUI/Plater.pm:1352 +msgid "Export cancelled" +msgstr "" + +#: lib/Slic3r/GUI/Plater.pm:1449 msgid "File added to print queue" msgstr "" -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1448 +#: lib/Slic3r/GUI/Plater.pm:1452 msgid "Sending G-code file to the OctoPrint server..." msgstr "" -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1451 +#: lib/Slic3r/GUI/Plater.pm:1455 msgid "G-code file exported to " msgstr "" -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1454 +#: lib/Slic3r/GUI/Plater.pm:1458 msgid "Export failed" msgstr "" -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1524 -msgid "G-code file successfully uploaded to the OctoPrint server" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1526 -msgid "Error while uploading to the OctoPrint server: " -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 +#include + +#include +#include +#include +#include +#include + +#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 {}; + +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(this); + + bonjour = std::move(Bonjour("octoprint") + .set_retries(3) + .set_timeout(4) + .on_reply([dguard](BonjourReply &&reply) { + std::lock_guard 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 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 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 + +#include + +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 replies; + wxStaticText *label; + std::shared_ptr bonjour; + std::unique_ptr 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 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(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(&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(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(window)->SetValue(boost::any_cast(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(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(window)->SetValue(boost::any_cast(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(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(window)->SetValue(boost::any_cast(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 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(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(window)->SetColour(boost::any_cast(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(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(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 #include @@ -14,6 +17,7 @@ #include #include #include +#include #include @@ -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 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 // XXX #include #include -#include #include #include #include @@ -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 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 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(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 #include #include #include -// #include #include 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 Ptr; - typedef std::function ReplyFn; + typedef std::function ReplyFn; typedef std::function 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 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 #include #include -#include #include #include @@ -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(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) { + const wxString wxerror = error; + if (status != 0) { - std::string res{"HTTP "}; - res.append(std::to_string(status)); - - if (status == 401) { - res.append(": Invalid API key"); - } - - return std::move(res); + 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 +#include -// #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 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; };