diff --git a/resources/localization/Slic3rPE.pot b/resources/localization/Slic3rPE.pot index c65ea69d4..89a8f7bb2 100644 --- a/resources/localization/Slic3rPE.pot +++ b/resources/localization/Slic3rPE.pot @@ -2016,7 +2016,12 @@ msgstr "" msgid "Iso View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:450 src/libslic3r/PrintConfig.cpp:2041 +#: src/slic3r/GUI/MainFrame.cpp:450 +msgid "Top" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2041 +msgctxt "Layers" msgid "Top" msgstr "" @@ -2024,7 +2029,12 @@ msgstr "" msgid "Top View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:451 src/libslic3r/PrintConfig.cpp:148 +#: src/slic3r/GUI/MainFrame.cpp:451 +msgid "Bottom" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:148 +msgctxt "Layers" msgid "Bottom" msgstr "" diff --git a/resources/localization/fr_FR/Slic3rPE.mo b/resources/localization/fr_FR/Slic3rPE.mo index ba1966d28..0a2409281 100644 Binary files a/resources/localization/fr_FR/Slic3rPE.mo and b/resources/localization/fr_FR/Slic3rPE.mo differ diff --git a/resources/localization/fr_FR/Slic3rPE_fr.po b/resources/localization/fr_FR/Slic3rPE_fr.po index 9e5335586..af9255cf5 100644 --- a/resources/localization/fr_FR/Slic3rPE_fr.po +++ b/resources/localization/fr_FR/Slic3rPE_fr.po @@ -1,25 +1,22 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-09 14:34+0200\n" -"PO-Revision-Date: 2019-04-09 15:04+0200\n" -"Language: en\n" +"POT-Creation-Date: 2019-04-18 10:07+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: Oleksandra Iushchenko \n" +"Language-Team: \n" +"Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 2.0.8\n" #: src/slic3r/GUI/AboutDialog.cpp:35 -msgid "About Slic3r" -msgstr "About Slic3r" +#, c-format +msgid "About %s" +msgstr "A propos de %s" #: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52 msgid "Version" @@ -27,40 +24,40 @@ msgstr "Version" #: src/slic3r/GUI/BedShapeDialog.cpp:43 msgid "Shape" -msgstr "Shape" +msgstr "Forme" #: src/slic3r/GUI/BedShapeDialog.cpp:51 msgid "Rectangular" -msgstr "Rectangular" +msgstr "Rectangle" #: src/slic3r/GUI/BedShapeDialog.cpp:55 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136 -#: src/slic3r/GUI/Tab.cpp:2185 +#: src/slic3r/GUI/Tab.cpp:2186 msgid "Size" -msgstr "Size" +msgstr "Taille" #: src/slic3r/GUI/BedShapeDialog.cpp:56 msgid "Size in X and Y of the rectangular plate." -msgstr "Size in X and Y of the rectangular plate." +msgstr "Taille en X et Y du plateau rectangulaire." #: src/slic3r/GUI/BedShapeDialog.cpp:62 msgid "Origin" -msgstr "Origin" +msgstr "Origine" #: src/slic3r/GUI/BedShapeDialog.cpp:63 msgid "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." msgstr "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " +"Distance des coordonnées 0,0 du G-code depuis le coin avant gauche du " "rectangle." #: src/slic3r/GUI/BedShapeDialog.cpp:67 msgid "Circular" -msgstr "Circular" +msgstr "Circulaire" #: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111 -#: src/slic3r/GUI/ConfigWizard.cpp:544 src/slic3r/GUI/ConfigWizard.cpp:558 +#: src/slic3r/GUI/ConfigWizard.cpp:547 src/slic3r/GUI/ConfigWizard.cpp:561 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 #: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 #: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 @@ -80,151 +77,154 @@ msgstr "Circular" #: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2123 #: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2137 #: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2177 -#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2293 -#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377 -#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396 -#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450 -#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2479 -#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2506 -#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2532 -#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2555 +#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2295 +#: src/libslic3r/PrintConfig.cpp:2370 src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2398 +#: src/libslic3r/PrintConfig.cpp:2442 src/libslic3r/PrintConfig.cpp:2452 +#: src/libslic3r/PrintConfig.cpp:2471 src/libslic3r/PrintConfig.cpp:2481 +#: src/libslic3r/PrintConfig.cpp:2490 src/libslic3r/PrintConfig.cpp:2508 +#: src/libslic3r/PrintConfig.cpp:2523 src/libslic3r/PrintConfig.cpp:2537 +#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2560 msgid "mm" msgstr "mm" #: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676 msgid "Diameter" -msgstr "Diameter" +msgstr "Diamètre" #: src/slic3r/GUI/BedShapeDialog.cpp:72 msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." msgstr "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." +"Diamètre du plateau d'impression. Il est supposé que l'origine (0,0) est " +"située au centre." #: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239 #: src/libslic3r/GCode/PreviewData.cpp:175 msgid "Custom" -msgstr "Custom" +msgstr "Personnalisé" #: src/slic3r/GUI/BedShapeDialog.cpp:80 msgid "Load shape from STL..." -msgstr "Load shape from STL..." +msgstr "Charger une forme depuis un STL..." #: src/slic3r/GUI/BedShapeDialog.cpp:126 msgid "Settings" -msgstr "Settings" +msgstr "Réglages" #: src/slic3r/GUI/BedShapeDialog.cpp:299 msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "" +"Choisir un fichier à partir duquel importer la forme du plateau (STL/OBJ/" +"AMF/3MF/PRUSA) :" -#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1252 +#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1320 msgid "Error! " -msgstr "Error! " +msgstr "Erreur ! " #: src/slic3r/GUI/BedShapeDialog.cpp:325 msgid "The selected file contains no geometry." -msgstr "The selected file contains no geometry." +msgstr "Le fichier sélectionné ne contient aucune géométrie." #: src/slic3r/GUI/BedShapeDialog.cpp:329 msgid "" "The selected file contains several disjoint areas. This is not supported." msgstr "" -"The selected file contains several disjoint areas. This is not supported." +"Le fichier sélectionné contient plusieurs zones disjointes. Cela n'est pas " +"utilisable." -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:507 +#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:510 msgid "Bed Shape" -msgstr "Bed Shape" +msgstr "Forme du plateau" #: src/slic3r/GUI/BonjourDialog.cpp:55 msgid "Network lookup" -msgstr "Network lookup" +msgstr "Recherche réseau" #: src/slic3r/GUI/BonjourDialog.cpp:72 msgid "Address" -msgstr "Address" +msgstr "Adresse" #: src/slic3r/GUI/BonjourDialog.cpp:73 msgid "Hostname" -msgstr "Hostname" +msgstr "Nom d'hôte" #: src/slic3r/GUI/BonjourDialog.cpp:74 msgid "Service name" -msgstr "Service name" +msgstr "Nom du service" #: src/slic3r/GUI/BonjourDialog.cpp:76 msgid "OctoPrint version" -msgstr "OctoPrint version" +msgstr "Version d'OctoPrint" #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" -msgstr "Searching for devices" +msgstr "Recherche des dispositifs" #: src/slic3r/GUI/BonjourDialog.cpp:225 msgid "Finished" -msgstr "Finished" +msgstr "Terminé" #: src/slic3r/GUI/ButtonsDescription.cpp:15 msgid "Buttons And Text Colors Description" -msgstr "Buttons And Text Colors Description" +msgstr "Description des Boutons et des Couleurs de Texte" #: src/slic3r/GUI/ButtonsDescription.cpp:40 msgid "Value is the same as the system value" -msgstr "Value is the same as the system value" +msgstr "La valeur est identique à la valeur du système" #: src/slic3r/GUI/ButtonsDescription.cpp:57 msgid "" "Value was changed and is not equal to the system value or the last saved " "preset" msgstr "" -"Value was changed and is not equal to the system value or the last saved " -"preset" +"La valeur a été changée et n'est pas égale à la valeur du système ou au " +"dernier préréglage sauvegardé" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17 msgid "Upgrade" -msgstr "Upgrade" +msgstr "Mise à jour" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19 msgid "Downgrade" -msgstr "Downgrade" +msgstr "Rétrograder" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21 msgid "Before roll back" -msgstr "Before roll back" +msgstr "Avant le retour en arrière" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23 msgid "User" -msgstr "User" +msgstr "Utilisateur" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26 msgid "Unknown" -msgstr "Unknown" +msgstr "Inconnu" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38 msgid "Active: " -msgstr "Active: " +msgstr "Actif : " #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 msgid "slic3r version" -msgstr "slic3r version" +msgstr "version de slic3r" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1250 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1252 msgid "print" -msgstr "print" +msgstr "imprimer" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 msgid "filaments" msgstr "filaments" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1254 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1256 msgid "printer" -msgstr "printer" +msgstr "imprimer" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872 msgid "vendor" -msgstr "vendor" +msgstr "fabriquant" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 msgid "version" @@ -232,63 +232,63 @@ msgstr "version" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 msgid "min slic3r version" -msgstr "min slic3r version" +msgstr "version minimale de slic3r" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54 msgid "max slic3r version" -msgstr "max slic3r version" +msgstr "version maximale de slic3r" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "model" -msgstr "model" +msgstr "modèle" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "variants" -msgstr "variants" +msgstr "variantes" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69 msgid "Incompatible with this Slic3r" -msgstr "Incompatible with this Slic3r" +msgstr "Incompatible avec ce Slic3r" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72 msgid "Activate" -msgstr "Activate" +msgstr "Activer" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98 msgid "Configuration Snapshots" -msgstr "Configuration Snapshots" +msgstr "Instantanés de Configuration" #: src/slic3r/GUI/ConfigWizard.cpp:111 msgid "nozzle" -msgstr "nozzle" +msgstr "buse" #: src/slic3r/GUI/ConfigWizard.cpp:115 msgid "Alternate nozzles:" -msgstr "Alternate nozzles:" +msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:181 msgid "All standard" -msgstr "All standard" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2909 +#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2910 msgid "All" -msgstr "All" +msgstr "Tous" -#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:414 +#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:413 #: src/libslic3r/GCode/PreviewData.cpp:162 msgid "None" -msgstr "None" +msgstr "Aucun" #: src/slic3r/GUI/ConfigWizard.cpp:284 #, c-format -msgid "Welcome to the Slic3r %s" -msgstr "Welcome to the Slic3r %s" +msgid "Welcome to the %s %s" +msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:284 msgid "Welcome" -msgstr "Welcome" +msgstr "Bienvenue" -#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:600 +#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:632 #, c-format msgid "Run %s" msgstr "Run %s" @@ -296,306 +296,304 @@ msgstr "Run %s" #: src/slic3r/GUI/ConfigWizard.cpp:290 #, c-format msgid "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." +"Hello, welcome to %s! This %s helps you with the initial configuration; just " +"a few settings and you will be ready to print." msgstr "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." -#: src/slic3r/GUI/ConfigWizard.cpp:294 +#: src/slic3r/GUI/ConfigWizard.cpp:295 msgid "" "Remove user profiles - install from scratch (a snapshot will be taken " "beforehand)" msgstr "" -"Remove user profiles - install from scratch (a snapshot will be taken " -"beforehand)" +"Supprimer les profils d'utilisateur - installation à partir de zéro (un " +"snapshot sera fait avant)" -#: src/slic3r/GUI/ConfigWizard.cpp:325 +#: src/slic3r/GUI/ConfigWizard.cpp:326 #, c-format msgid "%s Family" -msgstr "%s Family" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:362 +#: src/slic3r/GUI/ConfigWizard.cpp:363 msgid "Custom Printer Setup" -msgstr "Custom Printer Setup" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:362 +#: src/slic3r/GUI/ConfigWizard.cpp:363 msgid "Custom Printer" -msgstr "Custom Printer" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:364 +#: src/slic3r/GUI/ConfigWizard.cpp:365 msgid "Define a custom printer profile" -msgstr "Define a custom printer profile" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:366 +#: src/slic3r/GUI/ConfigWizard.cpp:367 msgid "Custom profile name:" -msgstr "Custom profile name:" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:390 +#: src/slic3r/GUI/ConfigWizard.cpp:391 msgid "Automatic updates" -msgstr "Automatic updates" +msgstr "Mises à jour automatiques" -#: src/slic3r/GUI/ConfigWizard.cpp:390 +#: src/slic3r/GUI/ConfigWizard.cpp:391 msgid "Updates" -msgstr "Updates" +msgstr "Mises à jour" -#: src/slic3r/GUI/ConfigWizard.cpp:398 src/slic3r/GUI/Preferences.cpp:59 +#: src/slic3r/GUI/ConfigWizard.cpp:399 src/slic3r/GUI/Preferences.cpp:59 msgid "Check for application updates" -msgstr "Check for application updates" +msgstr "Vérifier les mises à jour de l'application" -#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61 +#: src/slic3r/GUI/ConfigWizard.cpp:402 +#, c-format msgid "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." +"If enabled, Slic3r checks for new versions of %s online. When a new version " +"becomes available, a notification is displayed at the next application " +"startup (never during program usage). This is only a notification " +"mechanisms, no automatic installation is done." msgstr "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." -#: src/slic3r/GUI/ConfigWizard.cpp:405 src/slic3r/GUI/Preferences.cpp:67 +#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:67 msgid "Update built-in Presets automatically" -msgstr "Update built-in Presets automatically" +msgstr "Mettre à jour automatiquement les Préréglages intégrés" -#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:69 +#: src/slic3r/GUI/ConfigWizard.cpp:411 src/slic3r/GUI/Preferences.cpp:69 msgid "" "If enabled, Slic3r downloads updates of built-in system presets in the " "background. These updates are downloaded into a separate temporary location. " "When a new preset version becomes available it is offered at application " "startup." msgstr "" -"If enabled, Slic3r downloads updates of built-in system presets in the " -"background. These updates are downloaded into a separate temporary location. " -"When a new preset version becomes available it is offered at application " -"startup." +"Si activé, Slic3r télécharge les mises à jours des préréglages système " +"intégrés en arrière-plan. Ces mises à jour sont téléchargées dans un " +"répertoire temporaire séparé. Lorsqu'une nouvelle version de préréglages est " +"disponible, elle est proposée au démarrage de l'application." -#: src/slic3r/GUI/ConfigWizard.cpp:409 +#: src/slic3r/GUI/ConfigWizard.cpp:412 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." msgstr "" -"Updates are never applied without user's consent and never overwrite user's " -"customized settings." +"Les mises à jour ne sont jamais appliquées sans l'accord de l'utilisateur et " +"n'annulent jamais les réglages personnalisés de l'utilisateur." -#: src/slic3r/GUI/ConfigWizard.cpp:414 +#: src/slic3r/GUI/ConfigWizard.cpp:417 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." msgstr "" -"Additionally a backup snapshot of the whole configuration is created before " -"an update is applied." +"De plus, un instantané de sauvegarde de l'ensemble de la configuration est " +"créé avant qu'une mise à jour ne soit appliquée." -#: src/slic3r/GUI/ConfigWizard.cpp:421 +#: src/slic3r/GUI/ConfigWizard.cpp:424 msgid "Other Vendors" -msgstr "Other Vendors" +msgstr "Autres Fabriquants" -#: src/slic3r/GUI/ConfigWizard.cpp:423 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "Pick another vendor supported by Slic3r PE:" +#: src/slic3r/GUI/ConfigWizard.cpp:426 +#, c-format +msgid "Pick another vendor supported by %s:" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:469 +#: src/slic3r/GUI/ConfigWizard.cpp:472 msgid "Firmware Type" -msgstr "Firmware Type" +msgstr "Type de Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:469 src/slic3r/GUI/Tab.cpp:1870 +#: src/slic3r/GUI/ConfigWizard.cpp:472 src/slic3r/GUI/Tab.cpp:1870 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:473 +#: src/slic3r/GUI/ConfigWizard.cpp:476 msgid "Choose the type of firmware used by your printer." -msgstr "Choose the type of firmware used by your printer." - -#: src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Bed Shape and Size" -msgstr "Bed Shape and Size" +msgstr "Choisissez le type de firmware utilisé par votre imprimante." #: src/slic3r/GUI/ConfigWizard.cpp:510 +msgid "Bed Shape and Size" +msgstr "Forme du Plateau et Taille" + +#: src/slic3r/GUI/ConfigWizard.cpp:513 msgid "Set the shape of your printer's bed." -msgstr "Set the shape of your printer's bed." +msgstr "Réglez la forme du plateau de votre imprimante." -#: src/slic3r/GUI/ConfigWizard.cpp:524 +#: src/slic3r/GUI/ConfigWizard.cpp:527 msgid "Filament and Nozzle Diameters" -msgstr "Filament and Nozzle Diameters" +msgstr "Diamètres du Filament et de la Buse" -#: src/slic3r/GUI/ConfigWizard.cpp:524 +#: src/slic3r/GUI/ConfigWizard.cpp:527 msgid "Print Diameters" -msgstr "Print Diameters" - -#: src/slic3r/GUI/ConfigWizard.cpp:540 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "Enter the diameter of your printer's hot end nozzle." +msgstr "Diamètres d'Impression" #: src/slic3r/GUI/ConfigWizard.cpp:543 +msgid "Enter the diameter of your printer's hot end nozzle." +msgstr "" +"Entrez le diamètre de la buse de la tête d'impression de votre imprimante." + +#: src/slic3r/GUI/ConfigWizard.cpp:546 msgid "Nozzle Diameter:" -msgstr "Nozzle Diameter:" +msgstr "Diamètre de la Buse :" -#: src/slic3r/GUI/ConfigWizard.cpp:553 +#: src/slic3r/GUI/ConfigWizard.cpp:556 msgid "Enter the diameter of your filament." -msgstr "Enter the diameter of your filament." +msgstr "Entrez le diamètre de votre filament." -#: src/slic3r/GUI/ConfigWizard.cpp:554 +#: src/slic3r/GUI/ConfigWizard.cpp:557 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." msgstr "" -"Good precision is required, so use a caliper and do multiple measurements " -"along the filament, then compute the average." +"Une bonne précision est requise, utilisez un pied à coulisse et calculez la " +"moyenne de plusieurs mesures le long du filament." -#: src/slic3r/GUI/ConfigWizard.cpp:557 +#: src/slic3r/GUI/ConfigWizard.cpp:560 msgid "Filament Diameter:" -msgstr "Filament Diameter:" +msgstr "Diamètre du Filament :" -#: src/slic3r/GUI/ConfigWizard.cpp:575 +#: src/slic3r/GUI/ConfigWizard.cpp:578 msgid "Extruder and Bed Temperatures" -msgstr "Extruder and Bed Temperatures" +msgstr "Températures de l'Extrudeur et du Lit" -#: src/slic3r/GUI/ConfigWizard.cpp:575 +#: src/slic3r/GUI/ConfigWizard.cpp:578 msgid "Temperatures" -msgstr "Temperatures" +msgstr "Températures" -#: src/slic3r/GUI/ConfigWizard.cpp:591 +#: src/slic3r/GUI/ConfigWizard.cpp:594 msgid "Enter the temperature needed for extruding your filament." -msgstr "Enter the temperature needed for extruding your filament." - -#: src/slic3r/GUI/ConfigWizard.cpp:592 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." +msgstr "Entrez la température nécessaire pour extruder votre filament." #: src/slic3r/GUI/ConfigWizard.cpp:595 -msgid "Extrusion Temperature:" -msgstr "Extrusion Temperature:" +msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." +msgstr "" +"La règle générale est 160 à 230 °C pour le PLA et 215 à 250 °C pour l'ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:596 src/slic3r/GUI/ConfigWizard.cpp:610 +#: src/slic3r/GUI/ConfigWizard.cpp:598 +msgid "Extrusion Temperature:" +msgstr "Température d'Extrusion :" + +#: src/slic3r/GUI/ConfigWizard.cpp:599 src/slic3r/GUI/ConfigWizard.cpp:613 msgid "°C" msgstr "°C" -#: src/slic3r/GUI/ConfigWizard.cpp:605 +#: src/slic3r/GUI/ConfigWizard.cpp:608 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." msgstr "" -"Enter the bed temperature needed for getting your filament to stick to your " -"heated bed." - -#: src/slic3r/GUI/ConfigWizard.cpp:606 -msgid "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." -msgstr "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." +"Entrez la température du lit nécessaire pour que votre filament colle à " +"votre lit chauffant." #: src/slic3r/GUI/ConfigWizard.cpp:609 +msgid "" +"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " +"no heated bed." +msgstr "" +"La règle générale est 60 °C pour le PLA et 110 °C pour l'ABS. Laissez à zéro " +"si vous n'avez pas de lit chauffant." + +#: src/slic3r/GUI/ConfigWizard.cpp:612 msgid "Bed Temperature:" -msgstr "Bed Temperature:" +msgstr "Température du Plateau :" -#: src/slic3r/GUI/ConfigWizard.cpp:1001 +#: src/slic3r/GUI/ConfigWizard.cpp:1017 msgid "Select all standard printers" -msgstr "Select all standard printers" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1004 +#: src/slic3r/GUI/ConfigWizard.cpp:1020 msgid "< &Back" -msgstr "< &Back" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1005 +#: src/slic3r/GUI/ConfigWizard.cpp:1021 msgid "&Next >" -msgstr "&Next >" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1006 +#: src/slic3r/GUI/ConfigWizard.cpp:1022 msgid "&Finish" -msgstr "&Finish" +msgstr "&Fin" -#: src/slic3r/GUI/ConfigWizard.cpp:1007 src/slic3r/GUI/FirmwareDialog.cpp:142 +#: src/slic3r/GUI/ConfigWizard.cpp:1023 src/slic3r/GUI/FirmwareDialog.cpp:142 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 #: src/slic3r/GUI/ProgressStatusBar.cpp:28 msgid "Cancel" -msgstr "Cancel" +msgstr "Annuler" -#: src/slic3r/GUI/ConfigWizard.cpp:1021 +#: src/slic3r/GUI/ConfigWizard.cpp:1037 msgid "Prusa FFF Technology Printers" -msgstr "Prusa FFF Technology Printers" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1024 +#: src/slic3r/GUI/ConfigWizard.cpp:1040 msgid "Prusa MSLA Technology Printers" -msgstr "Prusa MSLA Technology Printers" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1111 +#: src/slic3r/GUI/ConfigWizard.cpp:1127 msgid "Configuration Wizard" -msgstr "Configuration Wizard" +msgstr "Assistant de Configuration" -#: src/slic3r/GUI/ConfigWizard.cpp:1112 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 msgid "Configuration &Wizard" -msgstr "Configuration &Wizard" +msgstr "&Assistant de Configuration" -#: src/slic3r/GUI/ConfigWizard.cpp:1114 +#: src/slic3r/GUI/ConfigWizard.cpp:1130 msgid "Configuration Assistant" -msgstr "Configuration Assistant" +msgstr "Assistant de Configuration" -#: src/slic3r/GUI/ConfigWizard.cpp:1115 +#: src/slic3r/GUI/ConfigWizard.cpp:1131 msgid "Configuration &Assistant" -msgstr "Configuration &Assistant" +msgstr "&Assistant de Configuration" -#: src/slic3r/GUI/Field.cpp:112 +#: src/slic3r/GUI/Field.cpp:111 msgid "default value" -msgstr "default value" +msgstr "" -#: src/slic3r/GUI/Field.cpp:115 +#: src/slic3r/GUI/Field.cpp:114 msgid "parameter name" -msgstr "parameter name" +msgstr "" -#: src/slic3r/GUI/Field.cpp:143 +#: src/slic3r/GUI/Field.cpp:142 #, c-format msgid "%s doesn't support percentage" -msgstr "%s doesn't support percentage" +msgstr "%s ne supporte pas un pourcentage" -#: src/slic3r/GUI/Field.cpp:157 src/slic3r/GUI/Field.cpp:180 +#: src/slic3r/GUI/Field.cpp:156 src/slic3r/GUI/Field.cpp:179 msgid "Invalid numeric input." -msgstr "Invalid numeric input." +msgstr "" -#: src/slic3r/GUI/Field.cpp:162 +#: src/slic3r/GUI/Field.cpp:161 msgid "Input value is out of range" -msgstr "Input value is out of range" +msgstr "La valeur entrée est hors plage" -#: src/slic3r/GUI/Field.cpp:188 +#: src/slic3r/GUI/Field.cpp:187 #, c-format msgid "" "Do you mean %d%% instead of %d %s?\n" "Select YES if you want to change this value to %d%%, \n" "or NO if you are sure that %d %s is a correct value." msgstr "" -"Do you mean %d%% instead of %d %s?\n" -"Select YES if you want to change this value to %d%%, \n" -"or NO if you are sure that %d %s is a correct value." -#: src/slic3r/GUI/Field.cpp:191 +#: src/slic3r/GUI/Field.cpp:190 msgid "Parameter validation" -msgstr "Parameter validation" +msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:141 msgid "Flash!" -msgstr "Flash!" +msgstr "Flash !" #: src/slic3r/GUI/FirmwareDialog.cpp:143 msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "Flashing in progress. Please do not disconnect the printer!" +msgstr "" +"Processus de flash en cours. Veuillez ne pas déconnecter l'imprimante !" #: src/slic3r/GUI/FirmwareDialog.cpp:187 msgid "Flashing failed: " -msgstr "Flashing failed: " +msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:268 msgid "Flashing succeeded!" -msgstr "Flashing succeeded!" +msgstr "Flash effectué avec succès !" #: src/slic3r/GUI/FirmwareDialog.cpp:269 msgid "Flashing failed. Please see the avrdude log below." -msgstr "Flashing failed. Please see the avrdude log below." +msgstr "" +"Le processus de flash a échoué. Veuillez consulter le journal avrdude ci-" +"dessous." #: src/slic3r/GUI/FirmwareDialog.cpp:270 msgid "Flashing cancelled." -msgstr "Flashing cancelled." +msgstr "Processus de flash annulé." #: src/slic3r/GUI/FirmwareDialog.cpp:308 #, c-format @@ -607,19 +605,12 @@ msgid "" "Do you want to continue and flash this hex file anyway?\n" "Please only continue if you are sure this is the right thing to do." msgstr "" -"This firmware hex file does not match the printer model.\n" -"The hex file is intended for: %s\n" -"Printer reported: %s\n" -"\n" -"Do you want to continue and flash this hex file anyway?\n" -"Please only continue if you are sure this is the right thing to do." #: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431 #, c-format msgid "" "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "" -"Multiple %s devices found. Please only connect one at a time for flashing." #: src/slic3r/GUI/FirmwareDialog.cpp:412 #, c-format @@ -628,73 +619,70 @@ msgid "" "If the device is connected, please press the Reset button next to the USB " "connector ..." msgstr "" -"The %s device was not found.\n" -"If the device is connected, please press the Reset button next to the USB " -"connector ..." #: src/slic3r/GUI/FirmwareDialog.cpp:525 #, c-format msgid "The %s device could not have been found" -msgstr "The %s device could not have been found" +msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:603 #, c-format msgid "Error accessing port at %s: %s" -msgstr "Error accessing port at %s: %s" +msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:605 #, c-format msgid "Error: %s" -msgstr "Error: %s" +msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:735 msgid "Firmware flasher" -msgstr "Firmware flasher" +msgstr "Outil de flash du firmware" #: src/slic3r/GUI/FirmwareDialog.cpp:762 msgid "Firmware image:" -msgstr "Firmware image:" +msgstr "Image du firmware :" #: src/slic3r/GUI/FirmwareDialog.cpp:766 msgid "Serial port:" -msgstr "Serial port:" +msgstr "Port série :" #: src/slic3r/GUI/FirmwareDialog.cpp:768 msgid "Autodetected" -msgstr "Autodetected" +msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:769 msgid "Rescan" -msgstr "Rescan" +msgstr "Scanner à nouveau" #: src/slic3r/GUI/FirmwareDialog.cpp:776 msgid "Progress:" -msgstr "Progress:" +msgstr "Progression :" #: src/slic3r/GUI/FirmwareDialog.cpp:779 msgid "Status:" -msgstr "Status:" +msgstr "État :" #: src/slic3r/GUI/FirmwareDialog.cpp:780 msgid "Ready" -msgstr "Ready" +msgstr "Prêt" #: src/slic3r/GUI/FirmwareDialog.cpp:800 msgid "Advanced: Output log" -msgstr "Advanced: Output log" +msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:811 #: src/slic3r/GUI/PrintHostDialogs.cpp:161 msgid "Close" -msgstr "Close" +msgstr "" #: src/slic3r/GUI/FirmwareDialog.cpp:859 msgid "" "Are you sure you want to cancel firmware flashing?\n" "This could leave your printer in an unusable state!" msgstr "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" +"Êtes-vous certain de vouloir annuler le processus de flash du firmware ?\n" +"Cela pourrait rendre votre imprimante inutilisable !" #: src/slic3r/GUI/FirmwareDialog.cpp:860 msgid "Confirmation" @@ -702,340 +690,357 @@ msgstr "Confirmation" #: src/slic3r/GUI/FirmwareDialog.cpp:863 msgid "Cancelling..." -msgstr "Cancelling..." +msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:709 +#: src/slic3r/GUI/GLCanvas3D.cpp:714 msgid "Detected object outside print volume" -msgstr "Detected object outside print volume" +msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:710 +#: src/slic3r/GUI/GLCanvas3D.cpp:715 msgid "Detected toolpath outside print volume" -msgstr "Detected toolpath outside print volume" +msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:711 +#: src/slic3r/GUI/GLCanvas3D.cpp:716 msgid "Some objects are not visible when editing supports" -msgstr "Some objects are not visible when editing supports" +msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:713 +#: src/slic3r/GUI/GLCanvas3D.cpp:718 msgid "" "Detected object outside print volume\n" "Resolve a clash to continue slicing/export process correctly" msgstr "" -"Detected object outside print volume\n" -"Resolve a clash to continue slicing/export process correctly" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 msgid "Rotate lower part upwards" -msgstr "Rotate lower part upwards" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198 msgid "Perform cut" -msgstr "Perform cut" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43 msgid "Cut object:" -msgstr "Cut object:" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 msgid "Cut [C]" -msgstr "Cut [C]" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3006 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3011 msgid "Cut" -msgstr "Cut" +msgstr "Couper" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193 msgid "Keep upper part" -msgstr "Keep upper part" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194 msgid "Keep lower part" -msgstr "Keep lower part" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 msgid "Place on face [F]" -msgstr "Place on face [F]" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 msgid "Move [M]" -msgstr "Move [M]" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 msgid "Position (mm)" -msgstr "Position (mm)" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 msgid "Displacement (mm)" -msgstr "Displacement (mm)" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 msgid "Rotate [R]" -msgstr "Rotate [R]" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 msgid "Rotation (deg)" -msgstr "Rotation (deg)" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 msgid "Scale [S]" -msgstr "Scale [S]" +msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 msgid "Scale (%)" -msgstr "Scale (%)" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:882 msgid "Left mouse click - add point" -msgstr "Left mouse click - add point" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:883 msgid "Right mouse click - remove point" -msgstr "Right mouse click - remove point" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:884 msgid "Shift + Left (+ drag) - select point(s)" -msgstr "Shift + Left (+ drag) - select point(s)" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:606 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:891 msgid "Head diameter: " -msgstr "Head diameter: " +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:618 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:903 msgid "Lock supports under new islands" -msgstr "Lock supports under new islands" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:622 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:907 msgid "Remove selected points" -msgstr "Remove selected points" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:626 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:679 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:964 msgid "Remove all points" -msgstr "Remove all points" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:916 msgid "Apply changes" -msgstr "Apply changes" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:636 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:921 msgid "Discard changes" -msgstr "Discard changes" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:644 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:929 msgid "Minimal points distance: " -msgstr "Minimal points distance: " +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:655 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:940 msgid "Support points density: " -msgstr "Support points density: " +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:954 msgid "Auto-generate points [A]" -msgstr "Auto-generate points [A]" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:960 msgid "Manual editing [M]" -msgstr "Manual editing [M]" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:738 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:969 +msgid "No points (will be autogenerated)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:970 +msgid "Autogenerated points (no modifications)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:971 +msgid "User-modified points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:972 +msgid "Generation in progress..." +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:980 +msgid "Reset direction [R] " +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1039 msgid "SLA Support Points [L]" -msgstr "SLA Support Points [L]" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:767 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1066 msgid "Do you want to save your manually edited support points ?\n" -msgstr "Do you want to save your manually edited support points ?\n" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:768 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1067 msgid "Save changes?" -msgstr "Save changes?" +msgstr "" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "" "Autogeneration will erase all manually edited points.\n" "\n" "Are you sure you want to do it?\n" msgstr "" -"Autogeneration will erase all manually edited points.\n" -"\n" -"Are you sure you want to do it?\n" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:899 src/slic3r/GUI/GUI.cpp:288 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 src/slic3r/GUI/GUI.cpp:288 #: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 msgid "Warning" -msgstr "Warning" +msgstr "Alerte" -#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2720 +#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2721 msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "It's impossible to print multi-part object(s) with SLA technology." +msgstr "" #: src/slic3r/GUI/GUI.cpp:148 msgid "Please check and fix your object list." -msgstr "Please check and fix your object list." +msgstr "" -#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:679 -#: src/slic3r/GUI/Tab.cpp:2722 +#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2723 msgid "Attention!" -msgstr "Attention!" +msgstr "Attention !" #: src/slic3r/GUI/GUI.cpp:282 msgid "Notice" -msgstr "Notice" +msgstr "Remarque" -#: src/slic3r/GUI/GUI_App.cpp:318 +#: src/slic3r/GUI/GUI_App.cpp:352 msgid "Changing of an application language" -msgstr "Changing of an application language" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:326 src/slic3r/GUI/GUI_App.cpp:335 +#: src/slic3r/GUI/GUI_App.cpp:360 src/slic3r/GUI/GUI_App.cpp:369 msgid "Recreating" -msgstr "Recreating" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:339 -msgid "Loading of a current presets" -msgstr "Loading of a current presets" +#: src/slic3r/GUI/GUI_App.cpp:373 +msgid "Loading of current presets" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:347 +#: src/slic3r/GUI/GUI_App.cpp:381 msgid "Loading of a mode view" -msgstr "Loading of a mode view" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:429 +#: src/slic3r/GUI/GUI_App.cpp:463 msgid "Choose one file (3MF):" -msgstr "Choose one file (3MF):" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:441 +#: src/slic3r/GUI/GUI_App.cpp:475 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Choisir un ou plusieurs fichiers (STL/OBJ/AMF/3MF/PRUSA) :" -#: src/slic3r/GUI/GUI_App.cpp:454 +#: src/slic3r/GUI/GUI_App.cpp:488 msgid "Array of language names and identifiers should have the same size." -msgstr "Array of language names and identifiers should have the same size." +msgstr "" +"Les tableaux de noms et d'identifiants de langue doivent avoir la même " +"taille." -#: src/slic3r/GUI/GUI_App.cpp:464 +#: src/slic3r/GUI/GUI_App.cpp:498 msgid "Select the language" -msgstr "Select the language" +msgstr "Sélectionner la langue" -#: src/slic3r/GUI/GUI_App.cpp:464 +#: src/slic3r/GUI/GUI_App.cpp:498 msgid "Language" -msgstr "Language" +msgstr "Langue" -#: src/slic3r/GUI/GUI_App.cpp:534 src/slic3r/GUI/GUI_ObjectList.cpp:1067 +#: src/slic3r/GUI/GUI_App.cpp:568 src/slic3r/GUI/GUI_ObjectList.cpp:1135 #: src/libslic3r/PrintConfig.cpp:298 msgid "Default" -msgstr "Default" +msgstr "Défaut" -#: src/slic3r/GUI/GUI_App.cpp:603 +#: src/slic3r/GUI/GUI_App.cpp:635 msgid "&Configuration Snapshots" -msgstr "&Configuration Snapshots" +msgstr "Instantanés de &Configuration" -#: src/slic3r/GUI/GUI_App.cpp:603 +#: src/slic3r/GUI/GUI_App.cpp:635 msgid "Inspect / activate configuration snapshots" -msgstr "Inspect / activate configuration snapshots" +msgstr "Inspecter / activer les instantanés de configuration" -#: src/slic3r/GUI/GUI_App.cpp:604 +#: src/slic3r/GUI/GUI_App.cpp:636 msgid "Take Configuration &Snapshot" -msgstr "Take Configuration &Snapshot" +msgstr "Prendre un &snapshot de la configuration" -#: src/slic3r/GUI/GUI_App.cpp:604 +#: src/slic3r/GUI/GUI_App.cpp:636 msgid "Capture a configuration snapshot" -msgstr "Capture a configuration snapshot" +msgstr "Capturer un instantané de la configuration" -#: src/slic3r/GUI/GUI_App.cpp:607 +#: src/slic3r/GUI/GUI_App.cpp:639 msgid "&Preferences" -msgstr "&Preferences" +msgstr "&Préférences" -#: src/slic3r/GUI/GUI_App.cpp:613 +#: src/slic3r/GUI/GUI_App.cpp:645 msgid "Application preferences" -msgstr "Application preferences" +msgstr "Préférences de l'application" -#: src/slic3r/GUI/GUI_App.cpp:616 src/slic3r/GUI/wxExtensions.cpp:2446 +#: src/slic3r/GUI/GUI_App.cpp:648 src/slic3r/GUI/wxExtensions.cpp:2457 msgid "Simple" -msgstr "Simple" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:616 +#: src/slic3r/GUI/GUI_App.cpp:648 msgid "Simple View Mode" -msgstr "Simple View Mode" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:73 +#: src/slic3r/GUI/GUI_App.cpp:649 src/slic3r/GUI/GUI_ObjectList.cpp:76 #: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992 #: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093 #: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890 -#: src/slic3r/GUI/Tab.cpp:3347 src/slic3r/GUI/wxExtensions.cpp:2447 +#: src/slic3r/GUI/Tab.cpp:3349 src/slic3r/GUI/wxExtensions.cpp:2458 #: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186 #: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987 #: src/libslic3r/PrintConfig.cpp:2173 msgid "Advanced" -msgstr "Advanced" +msgstr "Avancé" -#: src/slic3r/GUI/GUI_App.cpp:617 +#: src/slic3r/GUI/GUI_App.cpp:649 msgid "Advanced View Mode" -msgstr "Advanced View Mode" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:618 src/slic3r/GUI/wxExtensions.cpp:2448 +#: src/slic3r/GUI/GUI_App.cpp:650 src/slic3r/GUI/wxExtensions.cpp:2459 msgid "Expert" -msgstr "Expert" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:618 +#: src/slic3r/GUI/GUI_App.cpp:650 msgid "Expert View Mode" -msgstr "Expert View Mode" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:623 +#: src/slic3r/GUI/GUI_App.cpp:655 msgid "Mode" -msgstr "Mode" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:623 +#: src/slic3r/GUI/GUI_App.cpp:655 msgid "Slic3r View Mode" -msgstr "Slic3r View Mode" +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:625 +#: src/slic3r/GUI/GUI_App.cpp:657 msgid "Change Application &Language" -msgstr "Change Application &Language" +msgstr "Changer la &langue de l'application" -#: src/slic3r/GUI/GUI_App.cpp:627 +#: src/slic3r/GUI/GUI_App.cpp:659 msgid "Flash printer &firmware" -msgstr "Flash printer &firmware" +msgstr "Flasher le &firmware de l'imprimante" -#: src/slic3r/GUI/GUI_App.cpp:627 +#: src/slic3r/GUI/GUI_App.cpp:659 msgid "Upload a firmware image into an Arduino based printer" -msgstr "Upload a firmware image into an Arduino based printer" +msgstr "Charger un firmware dans une imprimante basée sur un Arduino" -#: src/slic3r/GUI/GUI_App.cpp:639 +#: src/slic3r/GUI/GUI_App.cpp:671 msgid "Taking configuration snapshot" -msgstr "Taking configuration snapshot" +msgstr "Snapshot de la configuration en cours" -#: src/slic3r/GUI/GUI_App.cpp:639 +#: src/slic3r/GUI/GUI_App.cpp:671 msgid "Snapshot name" -msgstr "Snapshot name" +msgstr "Nom du snapshot" -#: src/slic3r/GUI/GUI_App.cpp:676 +#: src/slic3r/GUI/GUI_App.cpp:708 msgid "Application will be restarted after language change." -msgstr "Application will be restarted after language change." +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:677 +#: src/slic3r/GUI/GUI_App.cpp:709 msgid "3D-Scene will be cleaned." -msgstr "3D-Scene will be cleaned." +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:678 +#: src/slic3r/GUI/GUI_App.cpp:710 msgid "Please, check your changes before." -msgstr "Please, check your changes before." +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:706 +#: src/slic3r/GUI/GUI_App.cpp:738 msgid "&Configuration" msgstr "&Configuration" -#: src/slic3r/GUI/GUI_App.cpp:726 +#: src/slic3r/GUI/GUI_App.cpp:758 msgid "You have unsaved changes " -msgstr "You have unsaved changes " +msgstr "Les modifications n'ont pas été sauvegardées " -#: src/slic3r/GUI/GUI_App.cpp:726 +#: src/slic3r/GUI/GUI_App.cpp:758 msgid ". Discard changes and continue anyway?" -msgstr ". Discard changes and continue anyway?" +msgstr ". Annuler les changements et continuer malgré tout ?" -#: src/slic3r/GUI/GUI_App.cpp:727 +#: src/slic3r/GUI/GUI_App.cpp:759 msgid "Unsaved Presets" -msgstr "Unsaved Presets" +msgstr "Préréglages Non Sauvegardés" -#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:65 +#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68 #: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149 #: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437 #: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841 @@ -1043,10 +1048,10 @@ msgstr "Unsaved Presets" #: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551 #: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042 msgid "Layers and Perimeters" -msgstr "Layers and Perimeters" +msgstr "Couches et Périmètres" -#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:66 -#: src/slic3r/GUI/Plater.cpp:431 src/slic3r/GUI/Tab.cpp:981 +#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69 +#: src/slic3r/GUI/Plater.cpp:430 src/slic3r/GUI/Tab.cpp:981 #: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311 #: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388 #: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742 @@ -1055,9 +1060,9 @@ msgstr "Layers and Perimeters" #: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997 #: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675 msgid "Infill" -msgstr "Infill" +msgstr "Remplissage" -#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:67 +#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70 #: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010 #: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333 #: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779 @@ -1072,1209 +1077,1233 @@ msgstr "Infill" #: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969 #: src/libslic3r/GCode/PreviewData.cpp:172 msgid "Support material" -msgstr "Support material" +msgstr "Support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:69 +#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72 #: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794 #: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953 #: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667 #: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877 #: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157 msgid "Extruders" -msgstr "Extruders" +msgstr "Extrudeurs" #: src/slic3r/GUI/GUI_ObjectList.cpp:39 msgid "Pad and Support" -msgstr "Pad and Support" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:68 src/slic3r/GUI/GUI_Preview.cpp:215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_Preview.cpp:215 #: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198 #: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870 #: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360 #: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646 #: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028 msgid "Speed" -msgstr "Speed" +msgstr "Vitesse" -#: src/slic3r/GUI/GUI_ObjectList.cpp:70 src/libslic3r/PrintConfig.cpp:415 +#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/libslic3r/PrintConfig.cpp:415 #: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829 #: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348 #: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860 #: src/libslic3r/PrintConfig.cpp:2017 msgid "Extrusion Width" -msgstr "Extrusion Width" +msgstr "Largeur d'Extrusion" -#: src/slic3r/GUI/GUI_ObjectList.cpp:75 src/slic3r/GUI/Plater.cpp:410 -#: src/slic3r/GUI/Tab.cpp:3309 src/slic3r/GUI/Tab.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:2359 src/libslic3r/PrintConfig.cpp:2366 -#: src/libslic3r/PrintConfig.cpp:2375 src/libslic3r/PrintConfig.cpp:2384 -#: src/libslic3r/PrintConfig.cpp:2394 src/libslic3r/PrintConfig.cpp:2420 -#: src/libslic3r/PrintConfig.cpp:2427 src/libslic3r/PrintConfig.cpp:2438 -#: src/libslic3r/PrintConfig.cpp:2448 src/libslic3r/PrintConfig.cpp:2457 -#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2476 -#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/Plater.cpp:409 +#: src/slic3r/GUI/Tab.cpp:3311 src/slic3r/GUI/Tab.cpp:3312 +#: src/libslic3r/PrintConfig.cpp:2361 src/libslic3r/PrintConfig.cpp:2368 +#: src/libslic3r/PrintConfig.cpp:2377 src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2396 src/libslic3r/PrintConfig.cpp:2422 +#: src/libslic3r/PrintConfig.cpp:2429 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2459 +#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2478 +#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2506 msgid "Supports" -msgstr "Supports" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:76 src/slic3r/GUI/Tab.cpp:3337 -#: src/slic3r/GUI/Tab.cpp:3338 src/libslic3r/PrintConfig.cpp:2512 -#: src/libslic3r/PrintConfig.cpp:2519 src/libslic3r/PrintConfig.cpp:2530 -#: src/libslic3r/PrintConfig.cpp:2540 src/libslic3r/PrintConfig.cpp:2553 -#: src/libslic3r/PrintConfig.cpp:2562 +#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/Tab.cpp:3339 +#: src/slic3r/GUI/Tab.cpp:3340 src/libslic3r/PrintConfig.cpp:2514 +#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2535 +#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2558 +#: src/libslic3r/PrintConfig.cpp:2567 msgid "Pad" -msgstr "Pad" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:173 +#: src/slic3r/GUI/GUI_ObjectList.cpp:176 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:45 msgid "Name" -msgstr "Name" +msgstr "Nom" -#: src/slic3r/GUI/GUI_ObjectList.cpp:201 +#: src/slic3r/GUI/GUI_ObjectList.cpp:204 msgid "Right button click the icon to change the object settings" -msgstr "Right button click the icon to change the object settings" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:209 -#, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "Auto-repaired (%d errors):\n" +msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:212 -msgid "degenerate facets" -msgstr "degenerate facets" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:213 -msgid "edges fixed" -msgstr "edges fixed" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:214 -msgid "facets removed" -msgstr "facets removed" +#, c-format +msgid "Auto-repaired (%d errors):\n" +msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:215 -msgid "facets added" -msgstr "facets added" +msgid "degenerate facets" +msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:216 -msgid "facets reversed" -msgstr "facets reversed" +msgid "edges fixed" +msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:217 +msgid "facets removed" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:218 +msgid "facets added" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:219 +msgid "facets reversed" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:220 msgid "backwards edges" -msgstr "backwards edges" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:231 +#: src/slic3r/GUI/GUI_ObjectList.cpp:234 msgid "Right button click the icon to fix STL through Netfabb" -msgstr "Right button click the icon to fix STL through Netfabb" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/GUI_ObjectList.cpp:281 src/slic3r/GUI/Tab.cpp:1430 #: src/libslic3r/PrintConfig.cpp:454 msgid "Extruder" -msgstr "Extruder" +msgstr "Extrudeur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:683 src/slic3r/GUI/GUI_ObjectList.cpp:963 -#: src/slic3r/GUI/GUI_ObjectList.cpp:969 src/slic3r/GUI/GUI_ObjectList.cpp:1199 +#: src/slic3r/GUI/GUI_ObjectList.cpp:751 src/slic3r/GUI/GUI_ObjectList.cpp:1031 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1037 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1267 #, c-format msgid "Quick Add Settings (%s)" -msgstr "Quick Add Settings (%s)" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:746 +#: src/slic3r/GUI/GUI_ObjectList.cpp:814 msgid "Select showing settings" -msgstr "Select showing settings" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:874 -msgid "Load" -msgstr "Load" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:879 src/slic3r/GUI/GUI_ObjectList.cpp:911 -#: src/slic3r/GUI/GUI_ObjectList.cpp:914 -msgid "Box" -msgstr "Box" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:879 -msgid "Cylinder" -msgstr "Cylinder" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:879 -msgid "Sphere" -msgstr "Sphere" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:879 -msgid "Slab" -msgstr "Slab" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:890 src/slic3r/GUI/GUI_ObjectList.cpp:906 -msgid "Add part" -msgstr "Add part" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:891 -msgid "Add modifier" -msgstr "Add modifier" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:892 src/slic3r/GUI/GUI_ObjectList.cpp:910 -msgid "Add support enforcer" -msgstr "Add support enforcer" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:893 src/slic3r/GUI/GUI_ObjectList.cpp:913 -msgid "Add support blocker" -msgstr "Add support blocker" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:934 -msgid "Split to parts" -msgstr "Split to parts" +msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:942 +msgid "Load" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:947 src/slic3r/GUI/GUI_ObjectList.cpp:979 +#: src/slic3r/GUI/GUI_ObjectList.cpp:982 +msgid "Box" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:947 +msgid "Cylinder" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:947 +msgid "Sphere" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:947 +msgid "Slab" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:958 src/slic3r/GUI/GUI_ObjectList.cpp:974 +msgid "Add part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:959 +msgid "Add modifier" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:960 src/slic3r/GUI/GUI_ObjectList.cpp:978 +msgid "Add support enforcer" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:961 src/slic3r/GUI/GUI_ObjectList.cpp:981 +msgid "Add support blocker" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1002 +msgid "Split to parts" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1010 msgid "Add settings" -msgstr "Add settings" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 msgid "Change type" -msgstr "Change type" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1016 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1084 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1221 msgid "Set as a Separated Object" -msgstr "Set as a Separated Object" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1024 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1092 msgid "Rename" -msgstr "Rename" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1034 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1102 msgid "Fix through the Netfabb" -msgstr "Fix through the Netfabb" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1041 src/slic3r/GUI/Plater.cpp:2861 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1109 src/slic3r/GUI/Plater.cpp:2883 msgid "Export as STL" -msgstr "Export as STL" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1048 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1116 msgid "Change extruder" -msgstr "Change extruder" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1073 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1141 msgid "Select new extruder for the object/part" -msgstr "Select new extruder for the object/part" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1079 src/slic3r/GUI/Plater.cpp:2825 -#: src/slic3r/GUI/Plater.cpp:2843 src/slic3r/GUI/Tab.cpp:2860 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1147 src/slic3r/GUI/Plater.cpp:2847 +#: src/slic3r/GUI/Plater.cpp:2865 src/slic3r/GUI/Tab.cpp:2861 msgid "Delete" -msgstr "Delete" +msgstr "Supprimer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1221 msgid "Set as a Separated Objects" -msgstr "Set as a Separated Objects" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1374 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1442 msgid "Generic" -msgstr "Generic" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1516 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1582 msgid "You can't delete the last solid part from object." -msgstr "You can't delete the last solid part from object." +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1533 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "You can't delete the last intance from object." -msgstr "You can't delete the last intance from object." +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1560 src/slic3r/GUI/Plater.cpp:2219 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1626 src/slic3r/GUI/Plater.cpp:2235 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" -"The selected object couldn't be split because it contains only one part." +"L'objet sélectionné n'a pu être scindé car il ne contient qu'une seule pièce." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1676 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1742 msgid "Group manipulation" -msgstr "Group manipulation" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1688 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1754 msgid "Object manipulation" -msgstr "Object manipulation" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1698 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1764 msgid "Object Settings to modify" -msgstr "Object Settings to modify" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1702 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1768 msgid "Part Settings to modify" -msgstr "Part Settings to modify" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1777 msgid "Part manipulation" -msgstr "Part manipulation" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1717 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1783 msgid "Instance manipulation" -msgstr "Instance manipulation" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 msgid "Object or Instance" -msgstr "Object or Instance" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 msgid "Part" -msgstr "Part" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2309 msgid "Unsupported selection" -msgstr "Unsupported selection" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2243 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2310 #, c-format msgid "You started your selection with %s Item." -msgstr "You started your selection with %s Item." +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2244 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2311 #, c-format msgid "In this mode you can select only other %s Items%s" -msgstr "In this mode you can select only other %s Items%s" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2247 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2314 msgid "of a current Object" -msgstr "of a current Object" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2252 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2325 src/slic3r/GUI/Plater.cpp:117 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2392 src/slic3r/GUI/Plater.cpp:117 msgid "Info" msgstr "Info" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2366 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2433 msgid "You can't change a type of the last solid part of the object." -msgstr "You can't change a type of the last solid part of the object." +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2373 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Select type of part" -msgstr "Select type of part" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2605 msgid "Enter new name" -msgstr "Enter new name" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2605 msgid "Renaming" -msgstr "Renaming" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2554 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2632 src/slic3r/GUI/Tab.cpp:3191 -#: src/slic3r/GUI/Tab.cpp:3195 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2699 src/slic3r/GUI/Tab.cpp:3192 +#: src/slic3r/GUI/Tab.cpp:3196 msgid "The supplied name is not valid;" msgstr "The supplied name is not valid;" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2555 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2633 src/slic3r/GUI/Tab.cpp:3192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2622 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2700 src/slic3r/GUI/Tab.cpp:3193 msgid "the following characters are not allowed:" msgstr "the following characters are not allowed:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2653 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2720 msgid "Set extruder for selected items" -msgstr "Set extruder for selected items" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2654 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2721 msgid "Select extruder number for selected objects and/or parts" -msgstr "Select extruder number for selected objects and/or parts" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2667 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2734 msgid "Select extruder number:" -msgstr "Select extruder number:" +msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2668 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2735 msgid "This extruder will be set for selected items" -msgstr "This extruder will be set for selected items" +msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:25 msgid "Object Manipulation" -msgstr "Object Manipulation" +msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:47 msgid "Object name" -msgstr "Object name" +msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160 msgid "Position" -msgstr "Position" +msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Rotation" -msgstr "Rotation" +msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221 -#: src/libslic3r/PrintConfig.cpp:3070 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Scale" -msgstr "Scale" +msgstr "Redimensionner" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162 msgid "Scale factors" -msgstr "Scale factors" +msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220 -#: src/libslic3r/PrintConfig.cpp:3055 +#: src/libslic3r/PrintConfig.cpp:3060 msgid "Rotate" -msgstr "Rotate" +msgstr "Pivoter" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219 msgid "Translate" -msgstr "Translate" +msgstr "" #: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 msgid "Additional Settings" -msgstr "Additional Settings" +msgstr "" #: src/slic3r/GUI/GUI_Preview.cpp:209 msgid "View" -msgstr "View" +msgstr "Vue" #: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525 #: src/libslic3r/GCode/PreviewData.cpp:394 msgid "Feature type" -msgstr "Feature type" +msgstr "Type de fonctionnalité" #: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:467 msgid "Height" -msgstr "Height" +msgstr "Hauteur" #: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2135 msgid "Width" -msgstr "Width" +msgstr "Largeur" #: src/slic3r/GUI/GUI_Preview.cpp:216 msgid "Volumetric flow rate" -msgstr "Volumetric flow rate" +msgstr "Débit volumétrique" #: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315 #: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525 #: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404 msgid "Tool" -msgstr "Tool" +msgstr "Outil" #: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523 #: src/libslic3r/GCode/PreviewData.cpp:406 msgid "Color Print" -msgstr "Color Print" +msgstr "" #: src/slic3r/GUI/GUI_Preview.cpp:221 msgid "Show" -msgstr "Show" +msgstr "Afficher" #: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225 msgid "Feature types" -msgstr "Feature types" +msgstr "Types de fonctionnalité" #: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163 msgid "Perimeter" -msgstr "Perimeter" +msgstr "Périmètre" #: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164 msgid "External perimeter" -msgstr "External perimeter" +msgstr "Périmètre externe" #: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165 msgid "Overhang perimeter" -msgstr "Overhang perimeter" +msgstr "Périmètre en surplomb" #: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166 msgid "Internal infill" -msgstr "Internal infill" +msgstr "Remplissage interne" #: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1686 #: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/GCode/PreviewData.cpp:167 msgid "Solid infill" -msgstr "Solid infill" +msgstr "Remplissage solide" #: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2016 #: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/GCode/PreviewData.cpp:168 msgid "Top solid infill" -msgstr "Top solid infill" +msgstr "Remplissage solide supérieur" #: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169 msgid "Bridge infill" -msgstr "Bridge infill" +msgstr "Remplissage du pont" #: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:869 #: src/libslic3r/GCode/PreviewData.cpp:170 msgid "Gap fill" -msgstr "Gap fill" +msgstr "Remplissage des trous" #: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001 #: src/libslic3r/GCode/PreviewData.cpp:171 msgid "Skirt" -msgstr "Skirt" +msgstr "Jupe" #: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1903 #: src/libslic3r/GCode/PreviewData.cpp:173 msgid "Support material interface" -msgstr "Support material interface" +msgstr "Interface des supports" #: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081 #: src/libslic3r/GCode/PreviewData.cpp:174 msgid "Wipe tower" -msgstr "Wipe tower" +msgstr "Tour de nettoyage" #: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2049 msgid "Travel" -msgstr "Travel" +msgstr "Déplacement" #: src/slic3r/GUI/GUI_Preview.cpp:244 msgid "Retractions" -msgstr "Retractions" +msgstr "Rétractations" #: src/slic3r/GUI/GUI_Preview.cpp:245 msgid "Unretractions" -msgstr "Unretractions" +msgstr "Dérétractation" #: src/slic3r/GUI/GUI_Preview.cpp:246 msgid "Shells" -msgstr "Shells" +msgstr "Coques" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "Slic3r Prusa Edition - Keyboard Shortcuts" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:491 +msgid "Keyboard Shortcuts" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:100 msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "Open project STL/OBJ/AMF/3MF with config, delete bed" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:101 msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "Import STL/OBJ/AMF/3MF without config, keep bed" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:102 msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "Load Config from .ini/amf/3mf/gcode" +msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:725 -#: src/slic3r/GUI/Plater.cpp:3673 src/libslic3r/PrintConfig.cpp:2957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:724 +#: src/slic3r/GUI/Plater.cpp:3704 src/libslic3r/PrintConfig.cpp:2962 msgid "Export G-code" -msgstr "Export G-code" +msgstr "Exporter le G-code" #: src/slic3r/GUI/KBShortcutsDialog.cpp:104 msgid "Save project (3MF)" -msgstr "Save project (3MF)" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "Load Config from .ini/amf/3mf/gcode and merge" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "(Re)slice" -msgstr "(Re)slice" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Quick slice" -msgstr "Quick slice" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326 msgid "Repeat last quick slice" -msgstr "Repeat last quick slice" +msgstr "Répéter le dernier découpage rapide" #: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "Select Plater Tab" -msgstr "Select Plater Tab" +msgstr "Sélectionner l'Onglet du Plateau" #: src/slic3r/GUI/KBShortcutsDialog.cpp:110 msgid "Quick slice and Save as" -msgstr "Quick slice and Save as" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Select Print Settings Tab" -msgstr "Select Print Settings Tab" +msgstr "Sélectionner l'Onglet des Réglages d'Impression" #: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Select Filament Settings Tab" -msgstr "Select Filament Settings Tab" +msgstr "Sélectionner l'Onglet des Réglages du Filament" #: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Select Printer Settings Tab" -msgstr "Select Printer Settings Tab" +msgstr "Sélectionner l'Onglet des Réglages de l'Imprimante" #: src/slic3r/GUI/KBShortcutsDialog.cpp:114 msgid "Switch to 3D" -msgstr "Switch to 3D" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:115 msgid "Switch to Preview" -msgstr "Switch to Preview" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10 msgid "Preferences" -msgstr "Preferences" +msgstr "Préférences" #: src/slic3r/GUI/KBShortcutsDialog.cpp:117 #: src/slic3r/GUI/PrintHostDialogs.cpp:134 msgid "Print host upload queue" -msgstr "Print host upload queue" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:118 msgid "Camera view " -msgstr "Camera view " +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Add Instance to selected object " -msgstr "Add Instance to selected object " +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:120 msgid "Remove Instance from selected object" -msgstr "Remove Instance from selected object" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Show keyboard shortcuts list" -msgstr "Show keyboard shortcuts list" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Select multiple object/Move multiple object" -msgstr "Select multiple object/Move multiple object" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:124 msgid "Main Shortcuts" -msgstr "Main Shortcuts" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:130 msgid "Arrange" -msgstr "Arrange" +msgstr "Agencer" #: src/slic3r/GUI/KBShortcutsDialog.cpp:131 msgid "Select All objects" -msgstr "Select All objects" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Delete selected" -msgstr "Delete selected" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Delete All" -msgstr "Delete All" +msgstr "Tout Supprimer" #: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Gizmo move" -msgstr "Gizmo move" +msgid "Copy to clipboard" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Gizmo scale" -msgstr "Gizmo scale" +msgid "Paste from clipboard" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo rotate" -msgstr "Gizmo rotate" +msgid "Gizmo move" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo cut" -msgstr "Gizmo cut" +msgid "Gizmo scale" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo Place face on bed" -msgstr "Gizmo Place face on bed" +msgid "Gizmo rotate" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo SLA support points" -msgstr "Gizmo SLA support points" +msgid "Gizmo cut" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -#, no-c-format -msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or by 1mm in Gizmo move" +msgid "Gizmo Place face on bed" msgstr "" -"Press to snap by 5% in Gizmo scale\n" -"or by 1mm in Gizmo move" #: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +msgid "Gizmo SLA support points" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#, c-format +msgid "" +"Press to snap by 5% in Gizmo scale\n" +"or by 1mm in Gizmo move" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 msgid "" "Press to scale or rotate selected objects\n" "around their own center" msgstr "" -"Press to scale or rotate selected objects\n" -"around their own center" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" -msgstr "Zoom to Bed" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" -msgstr "Zoom to all objects in scene, if none selected" #: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" -msgstr "Zoom to selected object" +msgid "Zoom to Bed" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" -msgstr "Zoom in" +msgid "Zoom to all objects in scene, if none selected" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" -msgstr "Zoom out" +msgid "Zoom to selected object" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" -msgstr "Unselect gizmo, keep object selection" +msgid "Zoom in" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 +msgid "Zoom out" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:149 +msgid "Unselect gizmo, keep object selection" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 msgid "Plater Shortcuts" -msgstr "Plater Shortcuts" +msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 -msgid "Arrow Up" -msgstr "Arrow Up" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 #: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +msgid "Arrow Up" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Upper Layer" -msgstr "Upper Layer" +msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 -msgid "Arrow Down" -msgstr "Arrow Down" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 #: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -msgid "Lower Layer" -msgstr "Lower Layer" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +msgid "Arrow Down" +msgstr "" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 #: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +msgid "Lower Layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Preview Shortcuts" -msgstr "Preview Shortcuts" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 -msgid "Move current slider thump Up" -msgstr "Move current slider thump Up" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 -msgid "Move current slider thump Down" -msgstr "Move current slider thump Down" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:177 -msgid "Arrow Left" -msgstr "Arrow Left" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 -msgid "Set upper thumb to current slider thumb" -msgstr "Set upper thumb to current slider thumb" +msgid "Move current slider thumb Up" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:178 -msgid "Arrow Right" -msgstr "Arrow Right" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 -msgid "Set lower thumb to current slider thumb" -msgstr "Set lower thumb to current slider thumb" +msgid "Move current slider thumb Down" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:179 -msgid "Add color change marker for current layer" -msgstr "Add color change marker for current layer" +msgid "Arrow Left" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Set upper thumb to current slider thumb" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:180 -msgid "Delete color change marker for current layer" -msgstr "Delete color change marker for current layer" +msgid "Arrow Right" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Set lower thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +msgid "Add color change marker for current layer" +msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Delete color change marker for current layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 msgid "Layers Slider Shortcuts" -msgstr "Layers Slider Shortcuts" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:54 msgid "" " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" msgstr "" -" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" +" - Pensez à vérifier les mises à jours sur http://github.com/prusa3d/slic3r/" +"releases" #: src/slic3r/GUI/MainFrame.cpp:160 msgid "Plater" -msgstr "Plater" +msgstr "Plateau" #: src/slic3r/GUI/MainFrame.cpp:273 msgid "&Open Project" -msgstr "&Open Project" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:273 msgid "Open a project file" -msgstr "Open a project file" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:275 msgid "&Save Project" -msgstr "&Save Project" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:275 msgid "Save current project file" -msgstr "Save current project file" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:277 msgid "Save Project &as" -msgstr "Save Project &as" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:277 msgid "Save current project file as" -msgstr "Save current project file as" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:283 msgid "Import STL/OBJ/AM&F/3MF" -msgstr "Import STL/OBJ/AM&F/3MF" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:283 msgid "Load a model" -msgstr "Load a model" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:286 msgid "Import &Config" -msgstr "Import &Config" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:286 msgid "Load exported configuration file" -msgstr "Load exported configuration file" +msgstr "Charger le fichier de configuration exporté" #: src/slic3r/GUI/MainFrame.cpp:288 msgid "Import Config from &project" -msgstr "Import Config from &project" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:288 msgid "Load configuration from project file" -msgstr "Load configuration from project file" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:291 msgid "Import Config &Bundle" -msgstr "Import Config &Bundle" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:291 msgid "Load presets from a bundle" -msgstr "Load presets from a bundle" +msgstr "Charger les préréglages à partir d'un lot" #: src/slic3r/GUI/MainFrame.cpp:293 msgid "&Import" -msgstr "&Import" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:296 msgid "Export &G-code" -msgstr "Export &G-code" +msgstr "Exporter le &G-code" #: src/slic3r/GUI/MainFrame.cpp:296 msgid "Export current plate as G-code" -msgstr "Export current plate as G-code" +msgstr "Exporter le plateau courant en G-code" #: src/slic3r/GUI/MainFrame.cpp:299 msgid "Export plate as &STL" -msgstr "Export plate as &STL" +msgstr "Exporter le plateau en &STL" #: src/slic3r/GUI/MainFrame.cpp:299 msgid "Export current plate as STL" -msgstr "Export current plate as STL" +msgstr "Exporter le plateau courant en STL" #: src/slic3r/GUI/MainFrame.cpp:301 msgid "Export plate as &AMF" -msgstr "Export plate as &AMF" +msgstr "Exporter le plateau en &AMF" #: src/slic3r/GUI/MainFrame.cpp:301 msgid "Export current plate as AMF" -msgstr "Export current plate as AMF" +msgstr "Exporter le plateau courant en AMF" #: src/slic3r/GUI/MainFrame.cpp:304 msgid "Export &Config" -msgstr "Export &Config" +msgstr "Exporter la &configuration" #: src/slic3r/GUI/MainFrame.cpp:304 msgid "Export current configuration to file" -msgstr "Export current configuration to file" +msgstr "Exporter la configuration actuelle vers un fichier" #: src/slic3r/GUI/MainFrame.cpp:306 msgid "Export Config &Bundle" -msgstr "Export Config &Bundle" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:306 msgid "Export all presets to file" -msgstr "Export all presets to file" +msgstr "Exporter tous les préréglage vers un fichier" #: src/slic3r/GUI/MainFrame.cpp:308 msgid "&Export" -msgstr "&Export" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:314 msgid "Quick Slice" -msgstr "Quick Slice" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:314 msgid "Slice a file into a G-code" -msgstr "Slice a file into a G-code" +msgstr "Découper un fichier en G-code" #: src/slic3r/GUI/MainFrame.cpp:320 msgid "Quick Slice and Save As" -msgstr "Quick Slice and Save As" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:320 msgid "Slice a file into a G-code, save as" -msgstr "Slice a file into a G-code, save as" +msgstr "Découper un fichier en G-code, enregistrer sous" #: src/slic3r/GUI/MainFrame.cpp:326 msgid "Repeat Last Quick Slice" -msgstr "Repeat Last Quick Slice" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:334 msgid "(Re)Slice &Now" -msgstr "(Re)Slice &Now" +msgstr "(Re)Découper mai&ntenant" #: src/slic3r/GUI/MainFrame.cpp:334 msgid "Start new slicing process" -msgstr "Start new slicing process" +msgstr "Démarrer un nouveau processus de découpe" #: src/slic3r/GUI/MainFrame.cpp:337 msgid "&Repair STL file" -msgstr "&Repair STL file" +msgstr "&Réparer le fichier STL" #: src/slic3r/GUI/MainFrame.cpp:337 msgid "Automatically repair an STL file" -msgstr "Automatically repair an STL file" +msgstr "Réparer automatiquement un fichier STL" #: src/slic3r/GUI/MainFrame.cpp:340 msgid "&Quit" -msgstr "&Quit" +msgstr "&Quitter" #: src/slic3r/GUI/MainFrame.cpp:340 msgid "Quit Slic3r" -msgstr "Quit Slic3r" +msgstr "Quitter Slic3r" #: src/slic3r/GUI/MainFrame.cpp:374 msgid "&Select all" -msgstr "&Select all" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:374 msgid "Selects all objects" -msgstr "Selects all objects" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:377 msgid "&Delete selected" -msgstr "&Delete selected" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:377 msgid "Deletes the current selection" -msgstr "Deletes the current selection" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:379 msgid "Delete &all" -msgstr "Delete &all" +msgstr "" #: src/slic3r/GUI/MainFrame.cpp:379 msgid "Deletes all objects" -msgstr "Deletes all objects" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:392 +#: src/slic3r/GUI/MainFrame.cpp:384 +msgid "&Copy" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:384 +msgid "Copy selection to clipboard" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:386 +msgid "&Paste" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:386 +msgid "Paste clipboard" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:401 msgid "&Plater Tab" -msgstr "&Plater Tab" +msgstr "L'Onglet du &Plateau" -#: src/slic3r/GUI/MainFrame.cpp:392 +#: src/slic3r/GUI/MainFrame.cpp:401 msgid "Show the plater" -msgstr "Show the plater" +msgstr "Afficher le plateau" -#: src/slic3r/GUI/MainFrame.cpp:399 +#: src/slic3r/GUI/MainFrame.cpp:408 msgid "P&rint Settings Tab" -msgstr "P&rint Settings Tab" +msgstr "L'Onglet des Réglages d'&Impression" -#: src/slic3r/GUI/MainFrame.cpp:399 +#: src/slic3r/GUI/MainFrame.cpp:408 msgid "Show the print settings" -msgstr "Show the print settings" +msgstr "Afficher les réglages d'impression" -#: src/slic3r/GUI/MainFrame.cpp:401 +#: src/slic3r/GUI/MainFrame.cpp:410 msgid "&Filament Settings Tab" -msgstr "&Filament Settings Tab" +msgstr "L'Onglet des Réglages du &Filament" -#: src/slic3r/GUI/MainFrame.cpp:401 +#: src/slic3r/GUI/MainFrame.cpp:410 msgid "Show the filament settings" -msgstr "Show the filament settings" +msgstr "Afficher les réglages de filament" -#: src/slic3r/GUI/MainFrame.cpp:403 +#: src/slic3r/GUI/MainFrame.cpp:412 msgid "Print&er Settings Tab" -msgstr "Print&er Settings Tab" +msgstr "L'Onglet des Réglages de l'Impri&mante" -#: src/slic3r/GUI/MainFrame.cpp:403 +#: src/slic3r/GUI/MainFrame.cpp:412 msgid "Show the printer settings" -msgstr "Show the printer settings" +msgstr "Afficher les réglages de l'imprimante" -#: src/slic3r/GUI/MainFrame.cpp:407 +#: src/slic3r/GUI/MainFrame.cpp:416 msgid "3&D" -msgstr "3&D" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:407 +#: src/slic3r/GUI/MainFrame.cpp:416 msgid "Show the 3D editing view" -msgstr "Show the 3D editing view" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:418 msgid "Pre&view" -msgstr "Pre&view" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:418 msgid "Show the 3D slices preview" -msgstr "Show the 3D slices preview" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:430 +#: src/slic3r/GUI/MainFrame.cpp:439 msgid "Print &Host Upload Queue" -msgstr "Print &Host Upload Queue" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:430 +#: src/slic3r/GUI/MainFrame.cpp:439 msgid "Display the Print Host Upload Queue window" -msgstr "Display the Print Host Upload Queue window" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:439 +#: src/slic3r/GUI/MainFrame.cpp:448 msgid "Iso" -msgstr "Iso" +msgstr "Isométrique" -#: src/slic3r/GUI/MainFrame.cpp:439 +#: src/slic3r/GUI/MainFrame.cpp:448 msgid "Iso View" -msgstr "Iso View" +msgstr "Vue Isométrique" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:450 msgid "Top" -msgstr "Top" +msgstr "du Dessus" #: src/libslic3r/PrintConfig.cpp:2041 msgctxt "Layers" msgid "Top" -msgstr "Top" +msgstr "Haut" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:450 msgid "Top View" -msgstr "Top View" +msgstr "Vue du Dessus" -#: src/slic3r/GUI/MainFrame.cpp:442 +#: src/slic3r/GUI/MainFrame.cpp:451 msgid "Bottom" -msgstr "Bottom" +msgstr "du Dessous" #: src/libslic3r/PrintConfig.cpp:148 msgctxt "Layers" msgid "Bottom" -msgstr "Bottom" +msgstr "Dessous" -#: src/slic3r/GUI/MainFrame.cpp:442 +#: src/slic3r/GUI/MainFrame.cpp:451 msgid "Bottom View" -msgstr "Bottom View" +msgstr "Vue du Dessous" -#: src/slic3r/GUI/MainFrame.cpp:443 +#: src/slic3r/GUI/MainFrame.cpp:452 msgid "Front" -msgstr "Front" +msgstr "Avant" -#: src/slic3r/GUI/MainFrame.cpp:443 +#: src/slic3r/GUI/MainFrame.cpp:452 msgid "Front View" -msgstr "Front View" +msgstr "Vue Avant" -#: src/slic3r/GUI/MainFrame.cpp:444 src/libslic3r/PrintConfig.cpp:1561 +#: src/slic3r/GUI/MainFrame.cpp:453 src/libslic3r/PrintConfig.cpp:1561 msgid "Rear" -msgstr "Rear" +msgstr "Arrière" -#: src/slic3r/GUI/MainFrame.cpp:444 +#: src/slic3r/GUI/MainFrame.cpp:453 msgid "Rear View" -msgstr "Rear View" +msgstr "Vue Arrière" -#: src/slic3r/GUI/MainFrame.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:454 msgid "Left" -msgstr "Left" +msgstr "Gauche" -#: src/slic3r/GUI/MainFrame.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:454 msgid "Left View" -msgstr "Left View" +msgstr "Vue Gauche" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:455 msgid "Right" -msgstr "Right" +msgstr "Droite" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:455 msgid "Right View" -msgstr "Right View" +msgstr "Vue Droite" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:469 msgid "Prusa 3D &Drivers" -msgstr "Prusa 3D &Drivers" +msgstr "&Drivers Prusa 3D" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:469 msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Open the Prusa3D drivers download page in your browser" +msgstr "" +"Ouvrir la page de téléchargement des drivers Prusa3D dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:462 +#: src/slic3r/GUI/MainFrame.cpp:471 msgid "Prusa Edition &Releases" -msgstr "Prusa Edition &Releases" +msgstr "&Publication de la Prusa Edition" -#: src/slic3r/GUI/MainFrame.cpp:462 +#: src/slic3r/GUI/MainFrame.cpp:471 msgid "Open the Prusa Edition releases page in your browser" -msgstr "Open the Prusa Edition releases page in your browser" +msgstr "" +"Ouvrir la page des publications de la Prusa Edition dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:468 +#: src/slic3r/GUI/MainFrame.cpp:477 msgid "Slic3r &Website" -msgstr "Slic3r &Website" +msgstr "Site &Web de Slic3r" -#: src/slic3r/GUI/MainFrame.cpp:468 +#: src/slic3r/GUI/MainFrame.cpp:477 msgid "Open the Slic3r website in your browser" -msgstr "Open the Slic3r website in your browser" +msgstr "Ouvrir le site web de Slic3r dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:470 +#: src/slic3r/GUI/MainFrame.cpp:479 msgid "Slic3r &Manual" -msgstr "Slic3r &Manual" +msgstr "&Manuel de Slic3r" -#: src/slic3r/GUI/MainFrame.cpp:470 +#: src/slic3r/GUI/MainFrame.cpp:479 msgid "Open the Slic3r manual in your browser" -msgstr "Open the Slic3r manual in your browser" +msgstr "Ouvrir la manuel de Slic3r dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:473 +#: src/slic3r/GUI/MainFrame.cpp:482 msgid "System &Info" -msgstr "System &Info" +msgstr "&Informations sur le Système" -#: src/slic3r/GUI/MainFrame.cpp:473 +#: src/slic3r/GUI/MainFrame.cpp:482 msgid "Show system information" -msgstr "Show system information" +msgstr "Afficher les informations système" -#: src/slic3r/GUI/MainFrame.cpp:475 +#: src/slic3r/GUI/MainFrame.cpp:484 msgid "Show &Configuration Folder" -msgstr "Show &Configuration Folder" +msgstr "Afficher le Répertoire de &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:475 +#: src/slic3r/GUI/MainFrame.cpp:484 msgid "Show user configuration folder (datadir)" -msgstr "Show user configuration folder (datadir)" +msgstr "Afficher le répertoire de configuration utilisateur (datadir)" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:486 msgid "Report an I&ssue" -msgstr "Report an I&ssue" +msgstr "Signaler un p&roblème" -#: src/slic3r/GUI/MainFrame.cpp:477 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "Report an issue on the Slic3r Prusa Edition" +#: src/slic3r/GUI/MainFrame.cpp:486 +#, c-format +msgid "Report an issue on %s" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:479 -msgid "&About Slic3r" -msgstr "&About Slic3r" +#: src/slic3r/GUI/MainFrame.cpp:488 +#, c-format +msgid "&About %s" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:479 +#: src/slic3r/GUI/MainFrame.cpp:488 msgid "Show about dialog" -msgstr "Show about dialog" - -#: src/slic3r/GUI/MainFrame.cpp:482 -msgid "Keyboard Shortcuts" -msgstr "Keyboard Shortcuts" - -#: src/slic3r/GUI/MainFrame.cpp:482 -msgid "Show the list of the keyboard shortcuts" -msgstr "Show the list of the keyboard shortcuts" - -#: src/slic3r/GUI/MainFrame.cpp:490 -msgid "&File" -msgstr "&File" +msgstr "Afficher la boîte de dialogue à propos" #: src/slic3r/GUI/MainFrame.cpp:491 +msgid "Show the list of the keyboard shortcuts" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:499 +msgid "&File" +msgstr "&Fichier" + +#: src/slic3r/GUI/MainFrame.cpp:500 msgid "&Edit" -msgstr "&Edit" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:501 msgid "&Window" -msgstr "&Window" +msgstr "Fe&nêtre" -#: src/slic3r/GUI/MainFrame.cpp:493 +#: src/slic3r/GUI/MainFrame.cpp:502 msgid "&View" -msgstr "&View" +msgstr "&Vue" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:505 msgid "&Help" -msgstr "&Help" +msgstr "&Aide" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:533 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Choisir un fichier à découper (STL/OBJ/AMF/3MF/PRUSA) :" -#: src/slic3r/GUI/MainFrame.cpp:538 +#: src/slic3r/GUI/MainFrame.cpp:547 msgid "No previously sliced file." -msgstr "No previously sliced file." +msgstr "Aucun fichier précédemment découpé." -#: src/slic3r/GUI/MainFrame.cpp:539 src/slic3r/GUI/PrintHostDialogs.cpp:219 +#: src/slic3r/GUI/MainFrame.cpp:548 src/slic3r/GUI/PrintHostDialogs.cpp:219 msgid "Error" -msgstr "Error" +msgstr "Erreur" -#: src/slic3r/GUI/MainFrame.cpp:544 +#: src/slic3r/GUI/MainFrame.cpp:553 msgid "Previously sliced file (" -msgstr "Previously sliced file (" +msgstr "Fichier précédemment découpé (" -#: src/slic3r/GUI/MainFrame.cpp:544 +#: src/slic3r/GUI/MainFrame.cpp:553 msgid ") not found." -msgstr ") not found." +msgstr ") non trouvé." -#: src/slic3r/GUI/MainFrame.cpp:545 +#: src/slic3r/GUI/MainFrame.cpp:554 msgid "File Not Found" -msgstr "File Not Found" +msgstr "Fichier non trouvé" -#: src/slic3r/GUI/MainFrame.cpp:580 src/slic3r/GUI/Tab.cpp:3152 +#: src/slic3r/GUI/MainFrame.cpp:589 src/slic3r/GUI/Tab.cpp:3153 msgid "Save " -msgstr "Save " +msgstr "Enregistrer " -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:589 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:589 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:589 msgid " file as:" -msgstr " file as:" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:595 +#: src/slic3r/GUI/MainFrame.cpp:604 msgid "Save zip file as:" -msgstr "Save zip file as:" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:2352 -#: src/slic3r/GUI/Plater.cpp:3467 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:3348 +#: src/slic3r/GUI/MainFrame.cpp:616 src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:3498 src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:3350 msgid "Slicing" -msgstr "Slicing" +msgstr "Découpe en cours" -#: src/slic3r/GUI/MainFrame.cpp:607 +#: src/slic3r/GUI/MainFrame.cpp:616 msgid "Processing " -msgstr "Processing " +msgstr "Traitement " -#: src/slic3r/GUI/MainFrame.cpp:630 +#: src/slic3r/GUI/MainFrame.cpp:639 msgid " was successfully sliced." -msgstr " was successfully sliced." +msgstr " a été découpé avec succès." -#: src/slic3r/GUI/MainFrame.cpp:632 +#: src/slic3r/GUI/MainFrame.cpp:641 msgid "Slicing Done!" -msgstr "Slicing Done!" +msgstr "Découpe Effectuée !" -#: src/slic3r/GUI/MainFrame.cpp:647 +#: src/slic3r/GUI/MainFrame.cpp:656 msgid "Select the STL file to repair:" -msgstr "Select the STL file to repair:" +msgstr "Sélectionner le fichier STL à réparer :" -#: src/slic3r/GUI/MainFrame.cpp:661 +#: src/slic3r/GUI/MainFrame.cpp:669 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "Save OBJ file (less prone to coordinate errors than STL) as:" +msgstr "" +"Enregistrer le fichier OBJ (moins enclin aux erreurs de coordonnées que le " +"STL) sous :" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:684 msgid "Your file was repaired." -msgstr "Your file was repaired." +msgstr "Votre fichier a été réparé." -#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:3051 +#: src/slic3r/GUI/MainFrame.cpp:684 src/libslic3r/PrintConfig.cpp:3056 msgid "Repair" -msgstr "Repair" +msgstr "Réparer" -#: src/slic3r/GUI/MainFrame.cpp:690 +#: src/slic3r/GUI/MainFrame.cpp:698 msgid "Save configuration as:" -msgstr "Save configuration as:" +msgstr "Enregistrer la configuration sous :" -#: src/slic3r/GUI/MainFrame.cpp:710 src/slic3r/GUI/MainFrame.cpp:774 +#: src/slic3r/GUI/MainFrame.cpp:718 src/slic3r/GUI/MainFrame.cpp:782 msgid "Select configuration to load:" -msgstr "Select configuration to load:" +msgstr "Sélectionner la configuration à charger :" -#: src/slic3r/GUI/MainFrame.cpp:747 +#: src/slic3r/GUI/MainFrame.cpp:755 msgid "Save presets bundle as:" -msgstr "Save presets bundle as:" +msgstr "Enregistrer le lot de préréglages sous :" -#: src/slic3r/GUI/MainFrame.cpp:798 +#: src/slic3r/GUI/MainFrame.cpp:806 #, c-format msgid "%d presets successfully imported." -msgstr "%d presets successfully imported." +msgstr "%d préréglages importés avec succès." #: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r error" -msgstr "Slic3r error" +msgstr "Erreur de Slic3r" #: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r has encountered an error" -msgstr "Slic3r has encountered an error" +msgstr "Slic3r a rencontré une erreur" #: src/slic3r/GUI/Plater.cpp:137 msgid "Volume" @@ -2282,126 +2311,126 @@ msgstr "Volume" #: src/slic3r/GUI/Plater.cpp:138 msgid "Facets" -msgstr "Facets" +msgstr "Faces" #: src/slic3r/GUI/Plater.cpp:139 msgid "Materials" -msgstr "Materials" +msgstr "Matériaux" #: src/slic3r/GUI/Plater.cpp:142 msgid "Manifold" -msgstr "Manifold" +msgstr "Variété" -#: src/slic3r/GUI/Plater.cpp:188 +#: src/slic3r/GUI/Plater.cpp:187 msgid "Sliced Info" -msgstr "Sliced Info" +msgstr "Informations de découpage" -#: src/slic3r/GUI/Plater.cpp:207 src/slic3r/GUI/Plater.cpp:998 +#: src/slic3r/GUI/Plater.cpp:206 src/slic3r/GUI/Plater.cpp:998 msgid "Used Filament (m)" -msgstr "Used Filament (m)" +msgstr "Filament Utilisé (m)" + +#: src/slic3r/GUI/Plater.cpp:207 +msgid "Used Filament (mm³)" +msgstr "Filament Utilisé (mm³)" #: src/slic3r/GUI/Plater.cpp:208 -msgid "Used Filament (mm³)" -msgstr "Used Filament (mm³)" +msgid "Used Filament (g)" +msgstr "Filament Utilisé (g)" #: src/slic3r/GUI/Plater.cpp:209 -msgid "Used Filament (g)" -msgstr "Used Filament (g)" - -#: src/slic3r/GUI/Plater.cpp:210 msgid "Used Material (unit)" -msgstr "Used Material (unit)" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:1013 +#: src/slic3r/GUI/Plater.cpp:210 src/slic3r/GUI/Plater.cpp:1013 #: src/libslic3r/PrintConfig.cpp:716 msgid "Cost" -msgstr "Cost" +msgstr "Coût" -#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:985 +#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:985 #: src/slic3r/GUI/Plater.cpp:1027 msgid "Estimated printing time" -msgstr "Estimated printing time" +msgstr "Temps d'impression estimé" -#: src/slic3r/GUI/Plater.cpp:213 +#: src/slic3r/GUI/Plater.cpp:212 msgid "Number of tool changes" -msgstr "Number of tool changes" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:290 +#: src/slic3r/GUI/Plater.cpp:289 msgid "Click to edit preset" -msgstr "Click to edit preset" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:413 +#: src/slic3r/GUI/Plater.cpp:412 msgid "Select what kind of support do you need" -msgstr "Select what kind of support do you need" +msgstr "Choisissez le type de support dont vous avez besoin" -#: src/slic3r/GUI/Plater.cpp:415 src/libslic3r/PrintConfig.cpp:1814 -#: src/libslic3r/PrintConfig.cpp:2419 +#: src/slic3r/GUI/Plater.cpp:414 src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:2421 msgid "Support on build plate only" -msgstr "Support on build plate only" +msgstr "Support sur le plateau uniquement" -#: src/slic3r/GUI/Plater.cpp:416 +#: src/slic3r/GUI/Plater.cpp:415 msgid "Everywhere" -msgstr "Everywhere" +msgstr "Partout" -#: src/slic3r/GUI/Plater.cpp:438 src/slic3r/GUI/Tab.cpp:1007 +#: src/slic3r/GUI/Plater.cpp:437 src/slic3r/GUI/Tab.cpp:1007 msgid "Brim" -msgstr "Brim" +msgstr "Bordure" -#: src/slic3r/GUI/Plater.cpp:440 +#: src/slic3r/GUI/Plater.cpp:439 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." msgstr "" -"This flag enables the brim that will be printed around each object on the " -"first layer." +"Cette option permet l'impression de la bordure qui entoure chaque objet lors " +"de la première couche." -#: src/slic3r/GUI/Plater.cpp:448 +#: src/slic3r/GUI/Plater.cpp:447 msgid "Purging volumes" -msgstr "Purging volumes" +msgstr "Volumes de purge" -#: src/slic3r/GUI/Plater.cpp:673 +#: src/slic3r/GUI/Plater.cpp:672 msgid "Print settings" -msgstr "Print settings" +msgstr "Réglages d'impression" -#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Tab.cpp:1421 +#: src/slic3r/GUI/Plater.cpp:673 src/slic3r/GUI/Tab.cpp:1421 #: src/slic3r/GUI/Tab.cpp:1422 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1252 +#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Preset.cpp:1254 msgid "SLA print" -msgstr "SLA print" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:676 src/slic3r/GUI/Preset.cpp:1253 +#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1255 msgid "SLA material" -msgstr "SLA material" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:677 +#: src/slic3r/GUI/Plater.cpp:676 msgid "Printer" -msgstr "Printer" +msgstr "Imprimante" -#: src/slic3r/GUI/Plater.cpp:707 src/slic3r/GUI/Plater.cpp:3674 +#: src/slic3r/GUI/Plater.cpp:706 src/slic3r/GUI/Plater.cpp:3705 msgid "Send to printer" -msgstr "Send to printer" +msgstr "Envoyer à l'imprimante" -#: src/slic3r/GUI/Plater.cpp:727 src/slic3r/GUI/Plater.cpp:2352 -#: src/slic3r/GUI/Plater.cpp:3470 +#: src/slic3r/GUI/Plater.cpp:726 src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:3501 msgid "Slice now" -msgstr "Slice now" +msgstr "Découper maintenant" #: src/slic3r/GUI/Plater.cpp:860 msgid "Hold Shift to Slice & Export G-code" -msgstr "Hold Shift to Slice & Export G-code" +msgstr "" #: src/slic3r/GUI/Plater.cpp:931 #, c-format msgid "%d (%d shells)" -msgstr "%d (%d shells)" +msgstr "%d (%d coques)" #: src/slic3r/GUI/Plater.cpp:936 #, c-format msgid "Auto-repaired (%d errors)" -msgstr "Auto-repaired (%d errors)" +msgstr "Réparé automatiquement (%d erreurs)" #: src/slic3r/GUI/Plater.cpp:939 #, c-format @@ -2409,398 +2438,401 @@ msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" msgstr "" -"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " -"facets reversed, %d backwards edges" +"%d faces invalides, %d arrêtes corrigées, %d faces retirées, %d faces " +"ajoutées, %d faces inversées, %d arrêtes à l'envers" #: src/slic3r/GUI/Plater.cpp:949 msgid "Yes" -msgstr "Yes" +msgstr "Oui" #: src/slic3r/GUI/Plater.cpp:972 msgid "Used Material (ml)" -msgstr "Used Material (ml)" +msgstr "" #: src/slic3r/GUI/Plater.cpp:975 msgid "object(s)" -msgstr "object(s)" +msgstr "" #: src/slic3r/GUI/Plater.cpp:975 msgid "supports and pad" -msgstr "supports and pad" +msgstr "" #: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 msgid "objects" -msgstr "objects" +msgstr "" #: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 msgid "wipe tower" -msgstr "wipe tower" +msgstr "" #: src/slic3r/GUI/Plater.cpp:1030 msgid "normal mode" -msgstr "normal mode" +msgstr "" #: src/slic3r/GUI/Plater.cpp:1034 msgid "silent mode" -msgstr "silent mode" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:1544 +#: src/slic3r/GUI/Plater.cpp:1546 msgid "Loading" -msgstr "Loading" +msgstr "Chargement" -#: src/slic3r/GUI/Plater.cpp:1554 +#: src/slic3r/GUI/Plater.cpp:1556 #, c-format msgid "Processing input file %s\n" -msgstr "Processing input file %s\n" +msgstr "Traitement du fichier d'entrée %s\n" -#: src/slic3r/GUI/Plater.cpp:1612 +#: src/slic3r/GUI/Plater.cpp:1614 msgid "" "This file contains several objects positioned at multiple heights. Instead " "of considering them as multiple objects, should I consider\n" "this file as a single object having multiple parts?\n" msgstr "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" +"Ce fichier contient plusieurs objets positionnés à différentes hauteurs. Au " +"lieu de les considérer comme des objets distincts, voulez-vous que je " +"considère\n" +"ce fichier comme un seul objet en plusieurs parties?\n" -#: src/slic3r/GUI/Plater.cpp:1615 src/slic3r/GUI/Plater.cpp:1707 +#: src/slic3r/GUI/Plater.cpp:1617 src/slic3r/GUI/Plater.cpp:1725 msgid "Multi-part object detected" -msgstr "Multi-part object detected" +msgstr "Objet multi-pièces détecté" -#: src/slic3r/GUI/Plater.cpp:1650 +#: src/slic3r/GUI/Plater.cpp:1668 msgid "" -"This file cannot be loaded in simple mode. Do you want to switch to expert " -"mode?\n" +"This file cannot be loaded in a simple mode. Do you want to switch to an " +"advanced mode?\n" msgstr "" -"This file cannot be loaded in simple mode. Do you want to switch to expert " -"mode?\n" -#: src/slic3r/GUI/Plater.cpp:1651 +#: src/slic3r/GUI/Plater.cpp:1669 msgid "Detected advanced data" -msgstr "Detected advanced data" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:1684 +#: src/slic3r/GUI/Plater.cpp:1702 #, c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" msgstr "" -"You can't to add the object(s) from %s because of one or some of them " -"is(are) multi-part" -#: src/slic3r/GUI/Plater.cpp:1704 +#: src/slic3r/GUI/Plater.cpp:1722 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" "these files to represent a single object having multiple parts?\n" msgstr "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" +"Plusieurs objets ont été chargés pour une imprimante multi-matériaux.\n" +"Au lieu de les considérer comme plusieurs objets, dois-je considérer\n" +"ces fichiers comment représentant un objets ayant plusieurs pièces ?\n" -#: src/slic3r/GUI/Plater.cpp:1720 +#: src/slic3r/GUI/Plater.cpp:1738 msgid "Loaded" -msgstr "Loaded" +msgstr "Chargé" -#: src/slic3r/GUI/Plater.cpp:1812 +#: src/slic3r/GUI/Plater.cpp:1830 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "" -"Your object appears to be too large, so it was automatically scaled down to " -"fit your print bed." +"Votre objet semble être trop grand, il a donc été automatiquement réduit " +"afin de l'adapter à votre plateau d'impression." -#: src/slic3r/GUI/Plater.cpp:1813 +#: src/slic3r/GUI/Plater.cpp:1831 msgid "Object too large?" -msgstr "Object too large?" +msgstr "Objet trop grand ?" -#: src/slic3r/GUI/Plater.cpp:1863 +#: src/slic3r/GUI/Plater.cpp:1881 msgid "Export STL file:" -msgstr "Export STL file:" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:1870 +#: src/slic3r/GUI/Plater.cpp:1888 msgid "Export AMF file:" -msgstr "Export AMF file:" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:1876 +#: src/slic3r/GUI/Plater.cpp:1894 msgid "Save file as:" -msgstr "Save file as:" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2042 +#: src/slic3r/GUI/Plater.cpp:2059 msgid "Arranging canceled" -msgstr "Arranging canceled" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2045 +#: src/slic3r/GUI/Plater.cpp:2062 msgid "Arranging" -msgstr "Arranging" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2079 +#: src/slic3r/GUI/Plater.cpp:2096 msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "Could not arrange model objects! Some geometries may be invalid." +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2083 +#: src/slic3r/GUI/Plater.cpp:2100 msgid "Arranging done." -msgstr "Arranging done." +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2124 +#: src/slic3r/GUI/Plater.cpp:2141 msgid "Orientation search canceled" -msgstr "Orientation search canceled" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2129 +#: src/slic3r/GUI/Plater.cpp:2146 msgid "Searching for optimal orientation" -msgstr "Searching for optimal orientation" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2190 +#: src/slic3r/GUI/Plater.cpp:2207 msgid "Orientation found." -msgstr "Orientation found." +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2211 +#: src/slic3r/GUI/Plater.cpp:2227 msgid "" "The selected object can't be split because it contains more than one volume/" "material." msgstr "" -"The selected object can't be split because it contains more than one volume/" -"material." +"L'objet sélectionné ne peut être scindé car il contient plus d'un volume/" +"matériau." -#: src/slic3r/GUI/Plater.cpp:2337 +#: src/slic3r/GUI/Plater.cpp:2353 msgid "Invalid data" -msgstr "Invalid data" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2346 +#: src/slic3r/GUI/Plater.cpp:2362 msgid "Ready to slice" -msgstr "Ready to slice" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2379 src/slic3r/GUI/PrintHostDialogs.cpp:220 +#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/PrintHostDialogs.cpp:220 msgid "Cancelling" -msgstr "Cancelling" +msgstr "Annulation" -#: src/slic3r/GUI/Plater.cpp:2396 +#: src/slic3r/GUI/Plater.cpp:2417 msgid "Another export job is currently running." -msgstr "Another export job is currently running." +msgstr "Une autre tâche d'export est actuellement en cours." -#: src/slic3r/GUI/Plater.cpp:2656 +#: src/slic3r/GUI/Plater.cpp:2678 msgid "Export failed" -msgstr "Export failed" +msgstr "L'export a échoué" -#: src/slic3r/GUI/Plater.cpp:2661 src/slic3r/GUI/PrintHostDialogs.cpp:221 +#: src/slic3r/GUI/Plater.cpp:2683 src/slic3r/GUI/PrintHostDialogs.cpp:221 msgid "Cancelled" -msgstr "Cancelled" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2747 src/slic3r/GUI/Plater.cpp:2759 -#: src/slic3r/GUI/Plater.cpp:2831 +#: src/slic3r/GUI/Plater.cpp:2769 src/slic3r/GUI/Plater.cpp:2781 +#: src/slic3r/GUI/Plater.cpp:2853 msgid "Increase copies" -msgstr "Increase copies" +msgstr "Augmenter les copies" -#: src/slic3r/GUI/Plater.cpp:2825 src/slic3r/GUI/Plater.cpp:2843 +#: src/slic3r/GUI/Plater.cpp:2847 src/slic3r/GUI/Plater.cpp:2865 msgid "Remove the selected object" -msgstr "Remove the selected object" +msgstr "Retirer l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:2831 +#: src/slic3r/GUI/Plater.cpp:2853 msgid "Place one more copy of the selected object" -msgstr "Place one more copy of the selected object" +msgstr "Placer une copie supplémentaire de l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:2833 +#: src/slic3r/GUI/Plater.cpp:2855 msgid "Decrease copies" -msgstr "Decrease copies" +msgstr "Réduire les copies" -#: src/slic3r/GUI/Plater.cpp:2833 +#: src/slic3r/GUI/Plater.cpp:2855 msgid "Remove one copy of the selected object" -msgstr "Remove one copy of the selected object" +msgstr "Retirer une copie de l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Plater.cpp:2857 msgid "Set number of copies" -msgstr "Set number of copies" +msgstr "Choisir le nombre de copies" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Plater.cpp:2857 msgid "Change the number of copies of the selected object" -msgstr "Change the number of copies of the selected object" +msgstr "Changer le nombre de copies de l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Plater.cpp:2880 msgid "Reload from Disk" -msgstr "Reload from Disk" +msgstr "Recharger depuis le Disque" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Plater.cpp:2880 msgid "Reload the selected file from Disk" -msgstr "Reload the selected file from Disk" +msgstr "Recharger le fichier sélectionné depuis le Disque" -#: src/slic3r/GUI/Plater.cpp:2861 +#: src/slic3r/GUI/Plater.cpp:2883 msgid "Export the selected object as STL file" -msgstr "Export the selected object as STL file" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2873 +#: src/slic3r/GUI/Plater.cpp:2895 msgid "Along X axis" -msgstr "Along X axis" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2873 +#: src/slic3r/GUI/Plater.cpp:2895 msgid "Mirror the selected object along the X axis" -msgstr "Mirror the selected object along the X axis" +msgstr "Symétriser l'objet sélectionné selon l'axe X" -#: src/slic3r/GUI/Plater.cpp:2875 +#: src/slic3r/GUI/Plater.cpp:2897 msgid "Along Y axis" -msgstr "Along Y axis" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2875 +#: src/slic3r/GUI/Plater.cpp:2897 msgid "Mirror the selected object along the Y axis" -msgstr "Mirror the selected object along the Y axis" +msgstr "Symétriser l'objet sélectionné selon l'axe Y" -#: src/slic3r/GUI/Plater.cpp:2877 +#: src/slic3r/GUI/Plater.cpp:2899 msgid "Along Z axis" -msgstr "Along Z axis" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2877 +#: src/slic3r/GUI/Plater.cpp:2899 msgid "Mirror the selected object along the Z axis" -msgstr "Mirror the selected object along the Z axis" +msgstr "Symétriser l'objet sélectionné selon l'axe Z" -#: src/slic3r/GUI/Plater.cpp:2880 +#: src/slic3r/GUI/Plater.cpp:2902 msgid "Mirror" -msgstr "Mirror" +msgstr "Symétrie" -#: src/slic3r/GUI/Plater.cpp:2880 +#: src/slic3r/GUI/Plater.cpp:2902 msgid "Mirror the selected object" -msgstr "Mirror the selected object" +msgstr "Symétriser l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:2898 +#: src/slic3r/GUI/Plater.cpp:2920 msgid "To objects" -msgstr "To objects" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2898 src/slic3r/GUI/Plater.cpp:2920 +#: src/slic3r/GUI/Plater.cpp:2920 src/slic3r/GUI/Plater.cpp:2942 msgid "Split the selected object into individual objects" -msgstr "Split the selected object into individual objects" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2900 +#: src/slic3r/GUI/Plater.cpp:2922 msgid "To parts" -msgstr "To parts" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2900 src/slic3r/GUI/Plater.cpp:2940 +#: src/slic3r/GUI/Plater.cpp:2922 src/slic3r/GUI/Plater.cpp:2962 msgid "Split the selected object into individual sub-parts" -msgstr "Split the selected object into individual sub-parts" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2903 src/slic3r/GUI/Plater.cpp:2920 -#: src/slic3r/GUI/Plater.cpp:2940 src/libslic3r/PrintConfig.cpp:3075 +#: src/slic3r/GUI/Plater.cpp:2925 src/slic3r/GUI/Plater.cpp:2942 +#: src/slic3r/GUI/Plater.cpp:2962 src/libslic3r/PrintConfig.cpp:3080 msgid "Split" -msgstr "Split" +msgstr "Scinder" -#: src/slic3r/GUI/Plater.cpp:2903 +#: src/slic3r/GUI/Plater.cpp:2925 msgid "Split the selected object" -msgstr "Split the selected object" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2926 +#: src/slic3r/GUI/Plater.cpp:2948 msgid "Optimize orientation" -msgstr "Optimize orientation" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:2926 +#: src/slic3r/GUI/Plater.cpp:2948 msgid "Optimize the rotation of the object for better print results." -msgstr "Optimize the rotation of the object for better print results." +msgstr "" -#: src/slic3r/GUI/Plater.cpp:3342 +#: src/slic3r/GUI/Plater.cpp:3373 msgid "Save G-code file as:" -msgstr "Save G-code file as:" +msgstr "Sauvegarder le fichier G-code en tant que :" -#: src/slic3r/GUI/Plater.cpp:3342 +#: src/slic3r/GUI/Plater.cpp:3373 msgid "Save SL1 file as:" -msgstr "Save SL1 file as:" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:3397 +#: src/slic3r/GUI/Plater.cpp:3428 #, c-format msgid "STL file exported to %s" -msgstr "STL file exported to %s" +msgstr "Fichier STL exporté vers %s" -#: src/slic3r/GUI/Plater.cpp:3413 +#: src/slic3r/GUI/Plater.cpp:3444 #, c-format msgid "AMF file exported to %s" -msgstr "AMF file exported to %s" +msgstr "Fichier AMF exporté vers %s" -#: src/slic3r/GUI/Plater.cpp:3416 +#: src/slic3r/GUI/Plater.cpp:3447 #, c-format msgid "Error exporting AMF file %s" -msgstr "Error exporting AMF file %s" +msgstr "Erreur d'export du fichier AMF %s" -#: src/slic3r/GUI/Plater.cpp:3442 +#: src/slic3r/GUI/Plater.cpp:3473 #, c-format msgid "3MF file exported to %s" -msgstr "3MF file exported to %s" +msgstr "Fichier 3MF exporté vers %s" -#: src/slic3r/GUI/Plater.cpp:3445 +#: src/slic3r/GUI/Plater.cpp:3476 #, c-format msgid "Error exporting 3MF file %s" -msgstr "Error exporting 3MF file %s" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:3673 +#: src/slic3r/GUI/Plater.cpp:3704 msgid "Export" -msgstr "Export" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:3674 +#: src/slic3r/GUI/Plater.cpp:3705 msgid "Send G-code" -msgstr "Send G-code" +msgstr "" #: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762 #: src/slic3r/GUI/Tab.cpp:1963 msgid "General" -msgstr "General" +msgstr "Général" #: src/slic3r/GUI/Preferences.cpp:34 msgid "Remember output directory" -msgstr "Remember output directory" +msgstr "Se souvenir du répertoire de sortie" #: src/slic3r/GUI/Preferences.cpp:36 msgid "" "If this is enabled, Slic3r will prompt the last output directory instead of " "the one containing the input files." msgstr "" -"If this is enabled, Slic3r will prompt the last output directory instead of " -"the one containing the input files." +"Si ceci est activé, Slic3r affichera le dernier répertoire de sortie au lieu " +"de celui contenant les fichiers d'entrée." #: src/slic3r/GUI/Preferences.cpp:42 msgid "Auto-center parts" -msgstr "Auto-center parts" +msgstr "Centrer automatiquement les pièces" #: src/slic3r/GUI/Preferences.cpp:44 msgid "" "If this is enabled, Slic3r will auto-center objects around the print bed " "center." msgstr "" -"If this is enabled, Slic3r will auto-center objects around the print bed " -"center." +"Si ceci est activé, Slic3r centrera automatique les objets autour du centre " +"du plateau d'impression." #: src/slic3r/GUI/Preferences.cpp:50 msgid "Background processing" -msgstr "Background processing" +msgstr "Tâche en arrière plan" #: src/slic3r/GUI/Preferences.cpp:52 msgid "" "If this is enabled, Slic3r will pre-process objects as soon as they're " "loaded in order to save time when exporting G-code." msgstr "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." +"Si ceci est activé, Slic3r va pré-calculer les objets dès qu'ils sont " +"chargés pour gagner du temps lors de l'export du G-code." + +#: src/slic3r/GUI/Preferences.cpp:61 +msgid "If enabled, Slic3r checks for new versions of " +msgstr "" #: src/slic3r/GUI/Preferences.cpp:74 msgid "Suppress \" - default - \" presets" -msgstr "Suppress \" - default - \" presets" +msgstr "Supprimer les préréglages \" - par défaut - \"" #: src/slic3r/GUI/Preferences.cpp:76 msgid "" "Suppress \" - default - \" presets in the Print / Filament / Printer " "selections once there are any other valid presets available." msgstr "" -"Suppress \" - default - \" presets in the Print / Filament / Printer " -"selections once there are any other valid presets available." +"Supprimer les préréglages \" - par défaut - \" dans les choix Impression / " +"Filament / Imprimante une fois qu'il y a d'autres préréglages valides " +"disponibles." #: src/slic3r/GUI/Preferences.cpp:82 msgid "Show incompatible print and filament presets" -msgstr "Show incompatible print and filament presets" +msgstr "Afficher les préréglages d'impression et de filament incompatibles" #: src/slic3r/GUI/Preferences.cpp:84 msgid "" "When checked, the print and filament presets are shown in the preset editor " "even if they are marked as incompatible with the active printer" msgstr "" -"When checked, the print and filament presets are shown in the preset editor " -"even if they are marked as incompatible with the active printer" +"Lorsqu'ils sont sélectionnés, les préréglages de l'imprimante et du filament " +"sont visibles dans l'éditeur de préréglage même s'ils sont désignés comme " +"incompatibles avec l'imprimante en cours d'utilisation" #: src/slic3r/GUI/Preferences.cpp:91 msgid "Use legacy OpenGL 1.1 rendering" -msgstr "Use legacy OpenGL 1.1 rendering" +msgstr "Utiliser le rendu de legacy OpenGL 1.1" #: src/slic3r/GUI/Preferences.cpp:93 msgid "" @@ -2808,48 +2840,48 @@ msgid "" "try to check this checkbox. This will disable the layer height editing and " "anti aliasing, so it is likely better to upgrade your graphics driver." msgstr "" -"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " -"try to check this checkbox. This will disable the layer height editing and " -"anti aliasing, so it is likely better to upgrade your graphics driver." +"Si vous avez des soucis de rendu causés par un driver OpenGL 2.0 bogué, vous " +"pouvez essayer de cocher cette case. Ceci désactivera l'édition de la " +"hauteur de couche et l'anti-aliasing, vous avez donc intérêt à mettre à jour " +"vos drivers graphiques." #: src/slic3r/GUI/Preferences.cpp:101 msgid "Use Retina resolution for the 3D scene" -msgstr "Use Retina resolution for the 3D scene" +msgstr "" #: src/slic3r/GUI/Preferences.cpp:103 msgid "" "If enabled, the 3D scene will be rendered in Retina resolution. If you are " "experiencing 3D performance problems, disabling this option may help." msgstr "" -"If enabled, the 3D scene will be rendered in Retina resolution. If you are " -"experiencing 3D performance problems, disabling this option may help." #: src/slic3r/GUI/Preferences.cpp:126 msgid "You need to restart Slic3r to make the changes effective." -msgstr "You need to restart Slic3r to make the changes effective." +msgstr "" +"Vous devez redémarrer Slic3r afin que les modifications soient appliquées." #: src/slic3r/GUI/Preset.cpp:207 msgid "modified" -msgstr "modified" +msgstr "" -#: src/slic3r/GUI/Preset.cpp:918 src/slic3r/GUI/Preset.cpp:958 -#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1043 -#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1537 +#: src/slic3r/GUI/Preset.cpp:920 src/slic3r/GUI/Preset.cpp:960 +#: src/slic3r/GUI/Preset.cpp:1013 src/slic3r/GUI/Preset.cpp:1045 +#: src/slic3r/GUI/PresetBundle.cpp:1470 src/slic3r/GUI/PresetBundle.cpp:1523 msgid "System presets" -msgstr "System presets" +msgstr "Préréglages système" -#: src/slic3r/GUI/Preset.cpp:962 src/slic3r/GUI/Preset.cpp:1047 -#: src/slic3r/GUI/PresetBundle.cpp:1542 +#: src/slic3r/GUI/Preset.cpp:964 src/slic3r/GUI/Preset.cpp:1049 +#: src/slic3r/GUI/PresetBundle.cpp:1528 msgid "User presets" -msgstr "User presets" +msgstr "Préréglages utilisateur" -#: src/slic3r/GUI/Preset.cpp:991 src/slic3r/GUI/Tab.cpp:247 +#: src/slic3r/GUI/Preset.cpp:993 src/slic3r/GUI/Tab.cpp:247 msgid "Add a new printer" -msgstr "Add a new printer" +msgstr "" -#: src/slic3r/GUI/Preset.cpp:1251 +#: src/slic3r/GUI/Preset.cpp:1253 msgid "filament" -msgstr "filament" +msgstr "" #: src/slic3r/GUI/PresetHints.cpp:28 #, c-format @@ -2858,9 +2890,10 @@ msgid "" "will be reduced so that no less than %ds are spent on that layer (however, " "speed will never be reduced below %dmm/s)." msgstr "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." +"Si le temps de couche estimé est inférieur à ~%d s, le ventilateur tournera " +"à %d%% et la vitesse d'impression sera réduite pour qu'au moins %d s soient " +"passées sur cette couche (cependant, la vitesse ne sera jamais réduite en-" +"dessous de %d mm/s)." #: src/slic3r/GUI/PresetHints.cpp:32 #, c-format @@ -2870,8 +2903,9 @@ msgid "" "proportionally decreasing speed between %d%% and %d%%." msgstr "" "\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." +"Si le temps estimé pour la couche est supérieur, mais cependant inférieur à ~" +"%ds, le ventilateur tournera à une vitesse proportionnellement décroissante " +"entre %d%% et %d%%." #: src/slic3r/GUI/PresetHints.cpp:36 msgid "" @@ -2879,49 +2913,49 @@ msgid "" "During the other layers, fan " msgstr "" "\n" -"During the other layers, fan " +"Pendant les autres couches, le ventilateur " #: src/slic3r/GUI/PresetHints.cpp:38 msgid "Fan " -msgstr "Fan " +msgstr "Ventilateur " #: src/slic3r/GUI/PresetHints.cpp:43 #, c-format msgid "will always run at %d%% " -msgstr "will always run at %d%% " +msgstr "fonctionnera toujours à %d%% " #: src/slic3r/GUI/PresetHints.cpp:46 #, c-format msgid "except for the first %d layers" -msgstr "except for the first %d layers" +msgstr "sauf pour les %d première couches" #: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first layer" -msgstr "except for the first layer" +msgstr "sauf pour la première couche" #: src/slic3r/GUI/PresetHints.cpp:52 msgid "will be turned off." -msgstr "will be turned off." +msgstr "sera désactivé." #: src/slic3r/GUI/PresetHints.cpp:153 msgid "external perimeters" -msgstr "external perimeters" +msgstr "périmètres externes" #: src/slic3r/GUI/PresetHints.cpp:162 msgid "perimeters" -msgstr "perimeters" +msgstr "périmètres" #: src/slic3r/GUI/PresetHints.cpp:171 msgid "infill" -msgstr "infill" +msgstr "remplissage" #: src/slic3r/GUI/PresetHints.cpp:181 msgid "solid infill" -msgstr "solid infill" +msgstr "remplissage solide" #: src/slic3r/GUI/PresetHints.cpp:189 msgid "top solid infill" -msgstr "top solid infill" +msgstr "remplissage solide supérieur" #: src/slic3r/GUI/PresetHints.cpp:200 msgid "support" @@ -2929,35 +2963,35 @@ msgstr "support" #: src/slic3r/GUI/PresetHints.cpp:210 msgid "support interface" -msgstr "support interface" +msgstr "interface du support" #: src/slic3r/GUI/PresetHints.cpp:216 msgid "First layer volumetric" -msgstr "First layer volumetric" +msgstr "Volume de la première couche" #: src/slic3r/GUI/PresetHints.cpp:216 msgid "Bridging volumetric" -msgstr "Bridging volumetric" +msgstr "Volumétrie des ponts" #: src/slic3r/GUI/PresetHints.cpp:216 msgid "Volumetric" -msgstr "Volumetric" +msgstr "Volumétrique" #: src/slic3r/GUI/PresetHints.cpp:217 msgid " flow rate is maximized " -msgstr " flow rate is maximized " +msgstr " le débit est maximisé " #: src/slic3r/GUI/PresetHints.cpp:220 msgid "by the print profile maximum" -msgstr "by the print profile maximum" +msgstr "par le maximum du profil de l'imprimante" #: src/slic3r/GUI/PresetHints.cpp:221 msgid "when printing " -msgstr "when printing " +msgstr "pendant l'impression des " #: src/slic3r/GUI/PresetHints.cpp:222 msgid " with a volumetric rate " -msgstr " with a volumetric rate " +msgstr " avec un débit volumétrique " #: src/slic3r/GUI/PresetHints.cpp:226 #, c-format @@ -2967,299 +3001,302 @@ msgstr "%3.2f mm³/s" #: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid " at filament speed %3.2f mm/s." -msgstr " at filament speed %3.2f mm/s." +msgstr " à une vitesse de filament de %3.2f mm/s." #: src/slic3r/GUI/PresetHints.cpp:247 msgid "" "Recommended object thin wall thickness: Not available due to invalid layer " "height." msgstr "" -"Recommended object thin wall thickness: Not available due to invalid layer " -"height." +"Épaisseur des parois fines de l'objet recommandée : Non disponible car la " +"hauteur de couche est invalide." #: src/slic3r/GUI/PresetHints.cpp:264 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "Recommended object thin wall thickness for layer height %.2f and " +msgstr "" +"Épaisseur des parois fines de l'objet recommandée pour la hauteur de couche " +"%.2f et " #: src/slic3r/GUI/PresetHints.cpp:271 #, c-format msgid "%d lines: %.2lf mm" -msgstr "%d lines: %.2lf mm" +msgstr "%d lignes : %.2lf mm" #: src/slic3r/GUI/PrintHostDialogs.cpp:32 msgid "Send G-Code to printer host" -msgstr "Send G-Code to printer host" +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:32 msgid "Upload to Printer Host with the following filename:" -msgstr "Upload to Printer Host with the following filename:" +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:34 msgid "Start printing after upload" -msgstr "Start printing after upload" +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:41 msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "Use forward slashes ( / ) as a directory separator if needed." +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Cancel selected" -msgstr "Cancel selected" +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Show error message" -msgstr "Show error message" +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:217 msgid "Enqueued" -msgstr "Enqueued" +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:218 msgid "Uploading" -msgstr "Uploading" +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:222 msgid "Completed" -msgstr "Completed" +msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:260 msgid "Error uploading to print host:" -msgstr "Error uploading to print host:" +msgstr "" #: src/slic3r/GUI/RammingChart.cpp:23 msgid "NO RAMMING AT ALL" -msgstr "NO RAMMING AT ALL" +msgstr "PAS D'EXPULSION DU TOUT" #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" -msgstr "Time" +msgstr "Durée" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 #: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:611 #: src/libslic3r/PrintConfig.cpp:655 src/libslic3r/PrintConfig.cpp:670 #: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2250 -#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2315 +#: src/libslic3r/PrintConfig.cpp:2310 src/libslic3r/PrintConfig.cpp:2317 msgid "s" msgstr "s" #: src/slic3r/GUI/RammingChart.cpp:81 msgid "Volumetric speed" -msgstr "Volumetric speed" +msgstr "Vitesse volumétrique" #: src/slic3r/GUI/SysInfoDialog.cpp:44 -msgid "Slic3r Prusa Edition - System Information" -msgstr "Slic3r Prusa Edition - System Information" +msgid "System Information" +msgstr "" #: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:228 msgid "Compatible printers" -msgstr "Compatible printers" +msgstr "Imprimantes compatibles" #: src/slic3r/GUI/Tab.cpp:51 msgid "Select the printers this profile is compatible with." -msgstr "Select the printers this profile is compatible with." +msgstr "Sélectionner les imprimantes avec lesquelles ce profil est compatible." #: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:243 msgid "Compatible print profiles" -msgstr "Compatible print profiles" +msgstr "" #: src/slic3r/GUI/Tab.cpp:57 msgid "Select the print profiles this profile is compatible with." -msgstr "Select the print profiles this profile is compatible with." +msgstr "" #: src/slic3r/GUI/Tab.cpp:132 msgid "Save current " -msgstr "Save current " +msgstr "Enregistrer l'état actuel " #: src/slic3r/GUI/Tab.cpp:133 msgid "Delete this preset" -msgstr "Delete this preset" +msgstr "Supprimer ce préréglage" #: src/slic3r/GUI/Tab.cpp:145 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "" -"Hover the cursor over buttons to find more information \n" -"or click this button." +"Passez le curseur au dessus des boutons pour obtenir plus d'informations\n" +"ou cliquez sur ce bouton." #: src/slic3r/GUI/Tab.cpp:858 msgid "It's a default preset." -msgstr "It's a default preset." +msgstr "C'est un préréglage par défaut." #: src/slic3r/GUI/Tab.cpp:859 msgid "It's a system preset." -msgstr "It's a system preset." +msgstr "C'est un préréglage système." #: src/slic3r/GUI/Tab.cpp:860 msgid "Current preset is inherited from " -msgstr "Current preset is inherited from " +msgstr "Le préréglage en cours a hérité de " #: src/slic3r/GUI/Tab.cpp:865 msgid "It can't be deleted or modified. " -msgstr "It can't be deleted or modified. " +msgstr "Il ne peut être supprimé ou modifié. " #: src/slic3r/GUI/Tab.cpp:866 msgid "" "Any modifications should be saved as a new preset inherited from this one. " msgstr "" -"Any modifications should be saved as a new preset inherited from this one. " +"Toute modification doit être enregistrée comme un nouveau préréglage hérité " +"de celui-ci. " #: src/slic3r/GUI/Tab.cpp:867 msgid "To do that please specify a new name for the preset." -msgstr "To do that please specify a new name for the preset." +msgstr "Pour faire cela veuillez spécifier un nouveau nom pour le préréglage." #: src/slic3r/GUI/Tab.cpp:871 msgid "Additional information:" -msgstr "Additional information:" +msgstr "Informations complémentaires :" #: src/slic3r/GUI/Tab.cpp:877 msgid "printer model" -msgstr "printer model" +msgstr "modèle de l'imprimante" #: src/slic3r/GUI/Tab.cpp:885 msgid "default print profile" -msgstr "default print profile" +msgstr "profil d'impression par défaut" #: src/slic3r/GUI/Tab.cpp:888 msgid "default filament profile" -msgstr "default filament profile" +msgstr "profil du filament par défaut" #: src/slic3r/GUI/Tab.cpp:902 msgid "default SLA material profile" -msgstr "default SLA material profile" +msgstr "" #: src/slic3r/GUI/Tab.cpp:906 msgid "default SLA print profile" -msgstr "default SLA print profile" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3305 msgid "Layers and perimeters" -msgstr "Layers and perimeters" +msgstr "Couches et périmètres" #: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55 msgid "Layer height" -msgstr "Layer height" +msgstr "Hauteur de couche" #: src/slic3r/GUI/Tab.cpp:953 msgid "Vertical shells" -msgstr "Vertical shells" +msgstr "Parois verticales" #: src/slic3r/GUI/Tab.cpp:964 msgid "Horizontal shells" -msgstr "Horizontal shells" +msgstr "Coques horizontales" #: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709 msgid "Solid layers" -msgstr "Solid layers" +msgstr "Couches solides" #: src/slic3r/GUI/Tab.cpp:970 msgid "Quality (slower slicing)" -msgstr "Quality (slower slicing)" +msgstr "Qualité (découpage plus lent)" #: src/slic3r/GUI/Tab.cpp:988 msgid "Reducing printing time" -msgstr "Reducing printing time" +msgstr "Réduction du temps d'impression" #: src/slic3r/GUI/Tab.cpp:1000 msgid "Skirt and brim" -msgstr "Skirt and brim" +msgstr "Jupe et bordure" #: src/slic3r/GUI/Tab.cpp:1017 msgid "Raft" -msgstr "Raft" +msgstr "Radeau" #: src/slic3r/GUI/Tab.cpp:1021 msgid "Options for support material and raft" -msgstr "Options for support material and raft" +msgstr "Options pour le matériau de support et le radeau" #: src/slic3r/GUI/Tab.cpp:1036 msgid "Speed for print moves" -msgstr "Speed for print moves" +msgstr "Vitesse pour les déplacements d'impression" #: src/slic3r/GUI/Tab.cpp:1048 msgid "Speed for non-print moves" -msgstr "Speed for non-print moves" +msgstr "Vitesse pour les déplacements sans impression" #: src/slic3r/GUI/Tab.cpp:1051 msgid "Modifiers" -msgstr "Modifiers" +msgstr "Modificateurs" #: src/slic3r/GUI/Tab.cpp:1054 msgid "Acceleration control (advanced)" -msgstr "Acceleration control (advanced)" +msgstr "Contrôle de l'accélération (avancé)" #: src/slic3r/GUI/Tab.cpp:1061 msgid "Autospeed (advanced)" -msgstr "Autospeed (advanced)" +msgstr "Vitesse automatique (avancé)" #: src/slic3r/GUI/Tab.cpp:1069 msgid "Multiple Extruders" -msgstr "Multiple Extruders" +msgstr "Extrudeurs Multiples" #: src/slic3r/GUI/Tab.cpp:1077 msgid "Ooze prevention" -msgstr "Ooze prevention" +msgstr "Prévention des coulures" #: src/slic3r/GUI/Tab.cpp:1094 msgid "Extrusion width" -msgstr "Extrusion width" +msgstr "Largeur d'extrusion" #: src/slic3r/GUI/Tab.cpp:1104 msgid "Overlap" -msgstr "Overlap" +msgstr "Chevauchement" #: src/slic3r/GUI/Tab.cpp:1107 msgid "Flow" -msgstr "Flow" +msgstr "Flux" #: src/slic3r/GUI/Tab.cpp:1116 msgid "Other" -msgstr "Other" +msgstr "Autre" -#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3351 +#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3353 msgid "Output options" -msgstr "Output options" +msgstr "Options de sortie" #: src/slic3r/GUI/Tab.cpp:1120 msgid "Sequential printing" -msgstr "Sequential printing" +msgstr "Impression séquentielle" #: src/slic3r/GUI/Tab.cpp:1122 msgid "Extruder clearance (mm)" -msgstr "Extruder clearance (mm)" +msgstr "Dégagement de l'extrudeur (mm)" -#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3352 +#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3354 msgid "Output file" -msgstr "Output file" +msgstr "Fichier de sortie" #: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382 msgid "Post-processing scripts" -msgstr "Post-processing scripts" +msgstr "Scripts de post-traitement" #: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145 #: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528 #: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936 -#: src/slic3r/GUI/Tab.cpp:2027 src/slic3r/GUI/Tab.cpp:2028 -#: src/slic3r/GUI/Tab.cpp:3240 src/slic3r/GUI/Tab.cpp:3241 +#: src/slic3r/GUI/Tab.cpp:2028 src/slic3r/GUI/Tab.cpp:2029 +#: src/slic3r/GUI/Tab.cpp:3242 src/slic3r/GUI/Tab.cpp:3243 msgid "Notes" msgstr "Notes" #: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535 -#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2034 -#: src/slic3r/GUI/Tab.cpp:3248 src/slic3r/GUI/Tab.cpp:3357 +#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2035 +#: src/slic3r/GUI/Tab.cpp:3250 src/slic3r/GUI/Tab.cpp:3359 msgid "Dependencies" -msgstr "Dependencies" +msgstr "Dépendances" #: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536 -#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2035 -#: src/slic3r/GUI/Tab.cpp:3249 src/slic3r/GUI/Tab.cpp:3358 +#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2036 +#: src/slic3r/GUI/Tab.cpp:3251 src/slic3r/GUI/Tab.cpp:3360 msgid "Profile dependencies" -msgstr "Profile dependencies" +msgstr "Dépendances du profil" #: src/slic3r/GUI/Tab.cpp:1198 -#, no-c-format +#, fuzzy, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -3270,18 +3307,18 @@ msgid "" "\n" "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" +"Le mode Vase Spiral requiert :\n" +"-Un périmètre\n" +"-Pas de couches solides supérieures\n" +"-Une densité de remplissage de 0%\n" +"-Pas de supports\n" +"-Pas de ensure_vertical_shell_thickness\n" "\n" -"Shall I adjust those settings in order to enable Spiral Vase?" +"Voulez-vous que je modifie ces réglages afin d'activer le Vase Spirale?" #: src/slic3r/GUI/Tab.cpp:1205 msgid "Spiral Vase" -msgstr "Spiral Vase" +msgstr "Vase Spiral" #: src/slic3r/GUI/Tab.cpp:1228 msgid "" @@ -3293,17 +3330,18 @@ msgid "" "\n" "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool " -"change.\n" -"(both support_material_extruder and support_material_interface_extruder need " -"to be set to 0).\n" +"A l'heure actuelle la Tour de Nettoyage ne tolère les supports non-" +"solubles \n" +"que s'ils sont imprimés avec l'extrudeur en cours d'utilisation sans " +"déclencher un changement d'outil.\n" +"(support_material_extruder de même que support_material_interface_extruder " +"doivent être réglés sur 0).\n" "\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" +"Voulez-vous que je modifie ces réglages pour activer la Tour de Nettoyage ?" #: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249 msgid "Wipe Tower" -msgstr "Wipe Tower" +msgstr "Tour de Nettoyage" #: src/slic3r/GUI/Tab.cpp:1246 msgid "" @@ -3312,10 +3350,12 @@ msgid "" "\n" "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" +"Pour que la tour de nettoyage fonctionne avec des supports solubles, les " +"couches de support\n" +"doivent être synchronisées avec les couches de l'objet.\n" "\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" +"Dois-je synchroniser les couches de support pour pouvoir activer la tour de " +"nettoyage ?" #: src/slic3r/GUI/Tab.cpp:1264 msgid "" @@ -3324,92 +3364,97 @@ msgid "" "\n" "Shall I adjust those settings for supports?" msgstr "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" +"Les supports sont plus efficaces, si la fonctionnalité suivante est " +"activée :\n" +"-Détection des périmètres de pont\n" "\n" -"Shall I adjust those settings for supports?" +"Voulez-vous que que je modifie les réglages des supports ?" #: src/slic3r/GUI/Tab.cpp:1267 msgid "Support Generator" -msgstr "Support Generator" +msgstr "Générateur de Support" +# Used in context: _("The ") + str_fill_pattern + _(" infill pattern is not supposed to work at 100% density.\n") #: src/slic3r/GUI/Tab.cpp:1309 msgid "The " -msgstr "The " +msgstr "" #: src/slic3r/GUI/Tab.cpp:1309 -#, no-c-format +#, fuzzy, c-format msgid "" " infill pattern is not supposed to work at 100% density.\n" "\n" "Shall I switch to rectilinear fill pattern?" msgstr "" -" infill pattern is not supposed to work at 100% density.\n" +" le motif de remplissage n'est pas supposé fonctionner à une densité de " +"100%.\n" "\n" -"Shall I switch to rectilinear fill pattern?" +"Dois-je passer au motif de remplissage rectiligne ?" #: src/slic3r/GUI/Tab.cpp:1429 msgid "Temperature " -msgstr "Temperature " +msgstr "Température " #: src/slic3r/GUI/Tab.cpp:1435 msgid "Bed" -msgstr "Bed" +msgstr "Plateau" #: src/slic3r/GUI/Tab.cpp:1440 msgid "Cooling" -msgstr "Cooling" +msgstr "Refroidissement" #: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285 #: src/libslic3r/PrintConfig.cpp:2097 msgid "Enable" -msgstr "Enable" +msgstr "Activer" #: src/slic3r/GUI/Tab.cpp:1452 msgid "Fan settings" -msgstr "Fan settings" +msgstr "Réglages du ventilateur" #: src/slic3r/GUI/Tab.cpp:1453 msgid "Fan speed" -msgstr "Fan speed" +msgstr "Vitesse du ventilateur" #: src/slic3r/GUI/Tab.cpp:1461 msgid "Cooling thresholds" -msgstr "Cooling thresholds" +msgstr "Seuils de refroidissement" #: src/slic3r/GUI/Tab.cpp:1467 msgid "Filament properties" -msgstr "Filament properties" +msgstr "Propriétés du filament" #: src/slic3r/GUI/Tab.cpp:1471 msgid "Print speed override" -msgstr "Print speed override" +msgstr "Contournement de la vitesse d'impression" #: src/slic3r/GUI/Tab.cpp:1481 msgid "Toolchange parameters with single extruder MM printers" -msgstr "Toolchange parameters with single extruder MM printers" +msgstr "" +"Paramètres de changement d'outil pour les imprimantes multi-matériaux mono-" +"extrudeur" #: src/slic3r/GUI/Tab.cpp:1496 msgid "Ramming settings" -msgstr "Ramming settings" +msgstr "Réglages de l'expulsion" #: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898 msgid "Custom G-code" -msgstr "Custom G-code" +msgstr "G-code personnalisé" #: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899 #: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750 msgid "Start G-code" -msgstr "Start G-code" +msgstr "G-code de début" #: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905 #: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368 msgid "End G-code" -msgstr "End G-code" +msgstr "G-code de fin" #: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689 msgid " Browse " -msgstr " Browse " +msgstr " Parcourir " #: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838 msgid "Test" @@ -3417,27 +3462,28 @@ msgstr "Test" #: src/slic3r/GUI/Tab.cpp:1662 msgid "Could not get a valid Printer Host reference" -msgstr "Could not get a valid Printer Host reference" +msgstr "" #: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851 msgid "Success!" -msgstr "Success!" +msgstr "Réussi !" #: src/slic3r/GUI/Tab.cpp:1683 msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." msgstr "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." +"Le fichier HTTPS CA est optionnel. Il est uniquement requis si vous utilisez " +"le HTTPS avec un certificat auto-signé." #: src/slic3r/GUI/Tab.cpp:1696 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" +"Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" #: src/slic3r/GUI/Tab.cpp:1697 msgid "Open CA certificate file" -msgstr "Open CA certificate file" +msgstr "Ouvrir le fichier de certificat CA" #: src/slic3r/GUI/Tab.cpp:1725 msgid "" @@ -3447,547 +3493,543 @@ msgid "" "\tTo use a custom CA file, please import your CA file into Certificate " "Store / Keychain." msgstr "" -"HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " -"Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate " -"Store / Keychain." #: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964 msgid "Size and coordinates" -msgstr "Size and coordinates" +msgstr "Taille et coordonnées" #: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968 -#: src/slic3r/GUI/Tab.cpp:2911 +#: src/slic3r/GUI/Tab.cpp:2912 msgid " Set " -msgstr " Set " +msgstr " Appliquer " #: src/slic3r/GUI/Tab.cpp:1790 msgid "Capabilities" -msgstr "Capabilities" +msgstr "Fonctionnalités" #: src/slic3r/GUI/Tab.cpp:1795 msgid "Number of extruders of the printer." -msgstr "Number of extruders of the printer." +msgstr "Nombre d'extrudeurs de l'imprimante." #: src/slic3r/GUI/Tab.cpp:1823 msgid "USB/Serial connection" -msgstr "USB/Serial connection" +msgstr "Port USB/Série" #: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590 msgid "Serial port" -msgstr "Serial port" +msgstr "Port série" #: src/slic3r/GUI/Tab.cpp:1829 msgid "Rescan serial ports" -msgstr "Rescan serial ports" +msgstr "Rescanner les ports série" #: src/slic3r/GUI/Tab.cpp:1851 msgid "Connection to printer works correctly." -msgstr "Connection to printer works correctly." +msgstr "La connexion avec l'imprimante fonctionne correctement." #: src/slic3r/GUI/Tab.cpp:1854 msgid "Connection failed." -msgstr "Connection failed." +msgstr "La connexion a échoué." -#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2022 +#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2023 msgid "Print Host upload" -msgstr "Print Host upload" +msgstr "" #: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128 msgid "Before layer change G-code" -msgstr "Before layer change G-code" +msgstr "G-Code avant changement de couche" #: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030 msgid "After layer change G-code" -msgstr "After layer change G-code" +msgstr "G-Code après changement de couche" #: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005 msgid "Tool change G-code" -msgstr "Tool change G-code" +msgstr "G-code de changement d'outil" #: src/slic3r/GUI/Tab.cpp:1929 msgid "Between objects G-code (for sequential printing)" -msgstr "Between objects G-code (for sequential printing)" +msgstr "Entre le G-code des objets (pour une impression séquentielle)" #: src/slic3r/GUI/Tab.cpp:1990 msgid "Display" -msgstr "Display" +msgstr "" #: src/slic3r/GUI/Tab.cpp:2001 msgid "Tilt" -msgstr "Tilt" +msgstr "" #: src/slic3r/GUI/Tab.cpp:2002 msgid "Tilt time" -msgstr "Tilt time" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3223 +#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3224 msgid "Corrections" -msgstr "Corrections" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2074 src/slic3r/GUI/Tab.cpp:2136 +#: src/slic3r/GUI/Tab.cpp:2075 src/slic3r/GUI/Tab.cpp:2137 #: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086 #: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131 #: src/libslic3r/PrintConfig.cpp:1142 msgid "Machine limits" -msgstr "Machine limits" - -#: src/slic3r/GUI/Tab.cpp:2088 -msgid "Values in this column are for Full Power mode" -msgstr "Values in this column are for Full Power mode" +msgstr "" #: src/slic3r/GUI/Tab.cpp:2089 -msgid "Full Power" -msgstr "Full Power" +msgid "Values in this column are for Full Power mode" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2094 -msgid "Values in this column are for Silent mode" -msgstr "Values in this column are for Silent mode" +#: src/slic3r/GUI/Tab.cpp:2090 +msgid "Full Power" +msgstr "" #: src/slic3r/GUI/Tab.cpp:2095 +msgid "Values in this column are for Silent mode" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2096 msgid "Silent" -msgstr "Silent" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2103 +#: src/slic3r/GUI/Tab.cpp:2104 msgid "Maximum feedrates" -msgstr "Maximum feedrates" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2109 msgid "Maximum accelerations" -msgstr "Maximum accelerations" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2116 msgid "Jerk limits" -msgstr "Jerk limits" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2120 +#: src/slic3r/GUI/Tab.cpp:2121 msgid "Minimum feedrates" -msgstr "Minimum feedrates" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2158 src/slic3r/GUI/Tab.cpp:2166 +#: src/slic3r/GUI/Tab.cpp:2159 src/slic3r/GUI/Tab.cpp:2167 msgid "Single extruder MM setup" -msgstr "Single extruder MM setup" +msgstr "Réglage MM pour extrudeur unique" -#: src/slic3r/GUI/Tab.cpp:2167 +#: src/slic3r/GUI/Tab.cpp:2168 msgid "Single extruder multimaterial parameters" -msgstr "Single extruder multimaterial parameters" +msgstr "Paramètres multimatériaux pour extrudeur unique" -#: src/slic3r/GUI/Tab.cpp:2181 src/libslic3r/GCode/PreviewData.cpp:475 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/GCode/PreviewData.cpp:475 #, c-format msgid "Extruder %d" -msgstr "Extruder %d" +msgstr "Extrudeur %d" -#: src/slic3r/GUI/Tab.cpp:2188 +#: src/slic3r/GUI/Tab.cpp:2189 msgid "Layer height limits" -msgstr "Layer height limits" +msgstr "Limites de hauteur de couche" -#: src/slic3r/GUI/Tab.cpp:2193 +#: src/slic3r/GUI/Tab.cpp:2194 msgid "Position (for multi-extruder printers)" -msgstr "Position (for multi-extruder printers)" +msgstr "Position (pour les imprimantes multi-extrudeurs)" -#: src/slic3r/GUI/Tab.cpp:2196 +#: src/slic3r/GUI/Tab.cpp:2197 msgid "Retraction" -msgstr "Retraction" +msgstr "Rétraction" -#: src/slic3r/GUI/Tab.cpp:2199 +#: src/slic3r/GUI/Tab.cpp:2200 msgid "Only lift Z" -msgstr "Only lift Z" +msgstr "Lever Z seulement" -#: src/slic3r/GUI/Tab.cpp:2212 +#: src/slic3r/GUI/Tab.cpp:2213 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" +"Rétractation lorsque l'outil est désactivé (réglages avancés pour les " +"configurations multi-extrudeurs)" -#: src/slic3r/GUI/Tab.cpp:2216 +#: src/slic3r/GUI/Tab.cpp:2217 msgid "Preview" -msgstr "Preview" +msgstr "Aperçu" -#: src/slic3r/GUI/Tab.cpp:2352 +#: src/slic3r/GUI/Tab.cpp:2353 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" +"L'option Nettoyage n'est pas disponible lorsque vous utilisez le mode " +"Rétractation du Firmware.\n" "\n" -"Shall I disable it in order to enable Firmware Retraction?" +"Voulez-vous que je la désactive pour permettre la Rétractation du Firmware ?" -#: src/slic3r/GUI/Tab.cpp:2354 +#: src/slic3r/GUI/Tab.cpp:2355 msgid "Firmware Retraction" -msgstr "Firmware Retraction" - -#: src/slic3r/GUI/Tab.cpp:2681 -#, c-format -msgid "Default preset (%s)" -msgstr "Default preset (%s)" +msgstr "Rétraction du Firmware" #: src/slic3r/GUI/Tab.cpp:2682 #, c-format +msgid "Default preset (%s)" +msgstr "Préréglages par défaut (%s)" + +#: src/slic3r/GUI/Tab.cpp:2683 +#, c-format msgid "Preset (%s)" -msgstr "Preset (%s)" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2699 +#: src/slic3r/GUI/Tab.cpp:2700 msgid "has the following unsaved changes:" -msgstr "has the following unsaved changes:" - -#: src/slic3r/GUI/Tab.cpp:2702 -msgid "is not compatible with printer" -msgstr "is not compatible with printer" +msgstr "a les changements suivants non-enregistrés :" #: src/slic3r/GUI/Tab.cpp:2703 +msgid "is not compatible with printer" +msgstr "n'est pas compatible avec l'imprimante" + +#: src/slic3r/GUI/Tab.cpp:2704 msgid "is not compatible with print profile" -msgstr "is not compatible with print profile" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2705 +#: src/slic3r/GUI/Tab.cpp:2706 msgid "and it has the following unsaved changes:" -msgstr "and it has the following unsaved changes:" - -#: src/slic3r/GUI/Tab.cpp:2708 -msgid "Discard changes and continue anyway?" -msgstr "Discard changes and continue anyway?" +msgstr "et il y a les changements non sauvegardés suivants :" #: src/slic3r/GUI/Tab.cpp:2709 +msgid "Discard changes and continue anyway?" +msgstr "Annuler les changements et continuer malgré tout ?" + +#: src/slic3r/GUI/Tab.cpp:2710 msgid "Unsaved Changes" -msgstr "Unsaved Changes" +msgstr "Changements Non Sauvegardés" -#: src/slic3r/GUI/Tab.cpp:2721 +#: src/slic3r/GUI/Tab.cpp:2722 msgid "Please check your object list before preset changing." -msgstr "Please check your object list before preset changing." +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2801 +#: src/slic3r/GUI/Tab.cpp:2802 msgid "Copy" -msgstr "Copy" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:2823 +#: src/slic3r/GUI/Tab.cpp:2824 msgid "The supplied name is empty. It can't be saved." -msgstr "The supplied name is empty. It can't be saved." +msgstr "Le nom proposé est vide. Sauvegarde impossible." -#: src/slic3r/GUI/Tab.cpp:2828 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Cannot overwrite a system profile." -msgstr "Cannot overwrite a system profile." +msgstr "Impossible d'écraser un profil système." -#: src/slic3r/GUI/Tab.cpp:2832 +#: src/slic3r/GUI/Tab.cpp:2833 msgid "Cannot overwrite an external profile." -msgstr "Cannot overwrite an external profile." +msgstr "Impossible d'écraser un profil externe." -#: src/slic3r/GUI/Tab.cpp:2858 +#: src/slic3r/GUI/Tab.cpp:2859 msgid "remove" -msgstr "remove" +msgstr "retirer" -#: src/slic3r/GUI/Tab.cpp:2858 +#: src/slic3r/GUI/Tab.cpp:2859 msgid "delete" -msgstr "delete" - -#: src/slic3r/GUI/Tab.cpp:2859 -msgid "Are you sure you want to " -msgstr "Are you sure you want to " - -#: src/slic3r/GUI/Tab.cpp:2859 -msgid " the selected preset?" -msgstr " the selected preset?" +msgstr "supprimer" #: src/slic3r/GUI/Tab.cpp:2860 -msgid "Remove" -msgstr "Remove" +msgid "Are you sure you want to " +msgstr "Êtes-vous sûr de vouloir " + +#: src/slic3r/GUI/Tab.cpp:2860 +msgid " the selected preset?" +msgstr " le préréglage sélectionné ?" #: src/slic3r/GUI/Tab.cpp:2861 +msgid "Remove" +msgstr "Retirer" + +#: src/slic3r/GUI/Tab.cpp:2862 msgid " Preset" -msgstr " Preset" +msgstr " Préréglage" -#: src/slic3r/GUI/Tab.cpp:2989 +#: src/slic3r/GUI/Tab.cpp:2990 msgid "" "LOCKED LOCK;indicates that the settings are the same as the system values " "for the current option group" msgstr "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" +"VERROU VERROUILLE;indique que les paramètres sont les mêmes que les valeurs " +"système pour le groupe d'options en cours" -#: src/slic3r/GUI/Tab.cpp:2992 +#: src/slic3r/GUI/Tab.cpp:2993 msgid "" "UNLOCKED LOCK;indicates that some settings were changed and are not equal to " "the system values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group " "to the system values." msgstr "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group " -"to the system values." +"CADENAS OUVERT;indique que certains paramètres ont été modifiés et ne sont " +"pas égaux aux valeurs du système pour le groupe d'options actuel.\n" +"Cliquez sur l'icône CADENAS OUVERT pour régler tous les paramètres pour le " +"groupe d'options actuel sur les valeurs du système." -#: src/slic3r/GUI/Tab.cpp:2998 +#: src/slic3r/GUI/Tab.cpp:2999 msgid "" "WHITE BULLET;for the left button: \tindicates a non-system preset,\n" "for the right button: \tindicates that the settings hasn't been modified." msgstr "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." +"PUCE BLANCHE;pour le bouton gauche : indique un préréglage non-système, pour " +"le bouton droit : indique que le réglage n'a pas été modifié." -#: src/slic3r/GUI/Tab.cpp:3002 +#: src/slic3r/GUI/Tab.cpp:3003 msgid "" "BACK ARROW;indicates that the settings were changed and are not equal to the " "last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group " "to the last saved preset." msgstr "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group " -"to the last saved preset." +"FLÈCHE ARRIÈRE;indique que les paramètres ont été changés et qu'ils ne sont " +"pas identiques au dernier préréglage enregistré du groupe d'options en " +"cours.\n" +"Cliquez sur l'icône FLÈCHE ARRIÈRE pour restaurer tous les paramètres du " +"groupe d'options en cours avec les valeurs du dernier préréglage enregistré." -#: src/slic3r/GUI/Tab.cpp:3028 +#: src/slic3r/GUI/Tab.cpp:3029 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system " "values for the current option group" msgstr "" -"LOCKED LOCK icon indicates that the settings are the same as the system " -"values for the current option group" +"L'icône VERROU VERROUILLE indique que les paramètres sont les mêmes que les " +"valeurs système pour le groupe d'options en cours" -#: src/slic3r/GUI/Tab.cpp:3030 +#: src/slic3r/GUI/Tab.cpp:3031 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system values for the current option group.\n" "Click to reset all settings for current option group to the system values." msgstr "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not " -"equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." +"L'icône CADENAS OUVERT indique que certains paramètres ont été modifiés et " +"ne sont pas égaux aux valeurs du système pour le groupe d'options actuel.\n" +"Cliquez pour régler tous les paramètres pour le groupe d'options actuel sur " +"les valeurs du système." -#: src/slic3r/GUI/Tab.cpp:3033 +#: src/slic3r/GUI/Tab.cpp:3034 msgid "WHITE BULLET icon indicates a non system preset." -msgstr "WHITE BULLET icon indicates a non system preset." +msgstr "L'icône en forme de PUCE BLANCHE indique un préréglage non-système." -#: src/slic3r/GUI/Tab.cpp:3036 +#: src/slic3r/GUI/Tab.cpp:3037 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "" -"WHITE BULLET icon indicates that the settings are the same as in the last " -"saved preset for the current option group." +"L'icône en forme de PUCE BLANCHE indique que les réglages sont identiques au " +"dernier préréglage sauvegardé pour le groupe d'options actuel." -#: src/slic3r/GUI/Tab.cpp:3038 +#: src/slic3r/GUI/Tab.cpp:3039 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" "Click to reset all settings for the current option group to the last saved " "preset." msgstr "" -"BACK ARROW icon indicates that the settings were changed and are not equal " -"to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved " -"preset." - -#: src/slic3r/GUI/Tab.cpp:3044 -msgid "" -"LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "" -"LOCKED LOCK icon indicates that the value is the same as the system value." +"L'icône FLÈCHE ARRIÈRE indique que les paramètres ont été changés et qu'ils " +"ne sont pas identiques au dernier préréglage enregistré du groupe d'options " +"en cours.\n" +"Cliquez pour restaurer tous les paramètres du groupe d'options en cours avec " +"les valeurs du dernier préréglage enregistré." #: src/slic3r/GUI/Tab.cpp:3045 msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " -"the system value.\n" -"Click to reset current value to the system value." +"LOCKED LOCK icon indicates that the value is the same as the system value." msgstr "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " -"the system value.\n" -"Click to reset current value to the system value." +"L'icône VERROU VERROUILLE indique que la valeur est la même que la valeur " +"système." -#: src/slic3r/GUI/Tab.cpp:3051 +#: src/slic3r/GUI/Tab.cpp:3046 msgid "" -"WHITE BULLET icon indicates that the value is the same as in the last saved " -"preset." +"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " +"the system value.\n" +"Click to reset current value to the system value." msgstr "" -"WHITE BULLET icon indicates that the value is the same as in the last saved " -"preset." +"L'icône CADENAS OUVERT indique que la valeur a été changée et n'est pas " +"égale à la valeur du système.\n" +"Cliquez pour régler la valeur actuelle sur les valeurs du système." #: src/slic3r/GUI/Tab.cpp:3052 msgid "" +"WHITE BULLET icon indicates that the value is the same as in the last saved " +"preset." +msgstr "" +"L'icône PUCE BLANCHE indique que la valeur est la même que pour le dernier " +"préréglage sauvegardé." + +#: src/slic3r/GUI/Tab.cpp:3053 +msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" -"BACK ARROW icon indicates that the value was changed and is not equal to the " -"last saved preset.\n" -"Click to reset current value to the last saved preset." +"L'icône FLÈCHE ARRIÈRE indique que la valeur a été changée et qu'elle n'est " +"pas identique au dernier préréglage enregistré.\n" +"Cliquez pour restaurer la valeur à celle du dernier préréglage enregistré." -#: src/slic3r/GUI/Tab.cpp:3152 +# Used in this context: _("Save ") + title + _(" as:") +#: src/slic3r/GUI/Tab.cpp:3153 msgid " as:" -msgstr " as:" +msgstr " sous :" -#: src/slic3r/GUI/Tab.cpp:3196 +#: src/slic3r/GUI/Tab.cpp:3197 msgid "the following postfix are not allowed:" -msgstr "the following postfix are not allowed:" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3200 +#: src/slic3r/GUI/Tab.cpp:3201 msgid "The supplied name is not available." -msgstr "The supplied name is not available." +msgstr "Le nom proposé n'est pas disponible." -#: src/slic3r/GUI/Tab.cpp:3213 +#: src/slic3r/GUI/Tab.cpp:3214 msgid "Material" -msgstr "Material" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3215 src/slic3r/GUI/Tab.cpp:3305 +#: src/slic3r/GUI/Tab.cpp:3216 src/slic3r/GUI/Tab.cpp:3307 msgid "Layers" -msgstr "Layers" +msgstr "Couches" -#: src/slic3r/GUI/Tab.cpp:3219 +#: src/slic3r/GUI/Tab.cpp:3220 msgid "Exposure" -msgstr "Exposure" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3313 +#: src/slic3r/GUI/Tab.cpp:3315 msgid "Support head" -msgstr "Support head" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3320 msgid "Support pillar" -msgstr "Support pillar" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3328 +#: src/slic3r/GUI/Tab.cpp:3330 msgid "Connection of the support sticks and junctions" -msgstr "Connection of the support sticks and junctions" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3333 +#: src/slic3r/GUI/Tab.cpp:3335 msgid "Automatic generation" -msgstr "Automatic generation" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3395 +#: src/slic3r/GUI/Tab.cpp:3397 msgid "Head penetration should not be greater than the head width." -msgstr "Head penetration should not be greater than the head width." +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3396 +#: src/slic3r/GUI/Tab.cpp:3398 msgid "Invalid Head penetration" -msgstr "Invalid Head penetration" +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3408 +#: src/slic3r/GUI/Tab.cpp:3410 msgid "Pinhead diameter should be smaller than the pillar diameter." -msgstr "Pinhead diameter should be smaller than the pillar diameter." +msgstr "" -#: src/slic3r/GUI/Tab.cpp:3409 +#: src/slic3r/GUI/Tab.cpp:3411 msgid "Invalid pinhead diameter" -msgstr "Invalid pinhead diameter" +msgstr "" #: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395 msgid "Print Settings" -msgstr "Print Settings" +msgstr "Réglages d'Impression" #: src/slic3r/GUI/Tab.hpp:325 msgid "Filament Settings" -msgstr "Filament Settings" +msgstr "Réglages du filament" #: src/slic3r/GUI/Tab.hpp:358 msgid "Printer Settings" -msgstr "Printer Settings" +msgstr "Réglages de l'Imprimante" #: src/slic3r/GUI/Tab.hpp:381 msgid "Material Settings" -msgstr "Material Settings" +msgstr "" #: src/slic3r/GUI/Tab.hpp:407 msgid "Save preset" -msgstr "Save preset" +msgstr "Enregistrer le préréglage" -#: src/slic3r/GUI/UpdateDialogs.cpp:29 +#: src/slic3r/GUI/UpdateDialogs.cpp:30 msgid "Update available" -msgstr "Update available" +msgstr "Mise à jour disponible" -#: src/slic3r/GUI/UpdateDialogs.cpp:29 -msgid "New version of Slic3r PE is available" -msgstr "New version of Slic3r PE is available" - -#: src/slic3r/GUI/UpdateDialogs.cpp:36 -msgid "To download, follow the link below." -msgstr "To download, follow the link below." - -#: src/slic3r/GUI/UpdateDialogs.cpp:44 -msgid "Current version:" -msgstr "Current version:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:46 -msgid "New version:" -msgstr "New version:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:54 -msgid "Don't notify about new releases any more" -msgstr "Don't notify about new releases any more" - -#: src/slic3r/GUI/UpdateDialogs.cpp:72 src/slic3r/GUI/UpdateDialogs.cpp:164 -msgid "Configuration update" -msgstr "Configuration update" - -#: src/slic3r/GUI/UpdateDialogs.cpp:72 -msgid "Configuration update is available" -msgstr "Configuration update is available" - -#: src/slic3r/GUI/UpdateDialogs.cpp:75 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:111 -msgid "Slic3r incompatibility" -msgstr "Slic3r incompatibility" - -#: src/slic3r/GUI/UpdateDialogs.cpp:111 -msgid "Slic3r configuration is incompatible" -msgstr "Slic3r configuration is incompatible" - -#: src/slic3r/GUI/UpdateDialogs.cpp:114 -msgid "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" - -#: src/slic3r/GUI/UpdateDialogs.cpp:123 +#: src/slic3r/GUI/UpdateDialogs.cpp:30 #, c-format -msgid "This Slic3r PE version: %s" -msgstr "This Slic3r PE version: %s" +msgid "New version of %s is available" +msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:128 +#: src/slic3r/GUI/UpdateDialogs.cpp:37 +msgid "To download, follow the link below." +msgstr "Pour télécharger, suivez le lien ci-dessous." + +#: src/slic3r/GUI/UpdateDialogs.cpp:45 +msgid "Current version:" +msgstr "Version actuelle :" + +#: src/slic3r/GUI/UpdateDialogs.cpp:47 +msgid "New version:" +msgstr "Nouvelle version :" + +#: src/slic3r/GUI/UpdateDialogs.cpp:55 +msgid "Don't notify about new releases any more" +msgstr "Ne plus me notifier au sujet des nouvelles publications" + +#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:167 +msgid "Configuration update" +msgstr "Mise à jour de la configuration" + +#: src/slic3r/GUI/UpdateDialogs.cpp:73 +msgid "Configuration update is available" +msgstr "Une mise à jour de la configuration est disponible" + +#: src/slic3r/GUI/UpdateDialogs.cpp:76 +msgid "" +"Would you like to install it?\n" +"\n" +"Note that a full configuration snapshot will be created first. It can then " +"be restored at any time should there be a problem with the new version.\n" +"\n" +"Updated configuration bundles:" +msgstr "" +"Voulez-vous l'installer ?\n" +"\n" +"Notez qu'un snapshot complet de la configuration sera sauvegardé d'abord. " +"Elle peut être restaurée à tout moment si vous rencontrez un problème avec " +"la nouvelle version.\n" +"\n" +"Ensembles de configuration mis à jour :" + +#: src/slic3r/GUI/UpdateDialogs.cpp:112 +msgid "Slic3r incompatibility" +msgstr "Incompatibilité avec Slic3r" + +#: src/slic3r/GUI/UpdateDialogs.cpp:112 +msgid "Slic3r configuration is incompatible" +msgstr "La configuration de Slic3r n'est pas compatible" + +#: src/slic3r/GUI/UpdateDialogs.cpp:117 +#, c-format +msgid "" +"This version of %s is not compatible with currently installed configuration " +"bundles.\n" +"This probably happened as a result of running an older %s after using a " +"newer one.\n" +"\n" +"You may either exit Slic3r and try again with a newer version, or you may re-" +"run the initial configuration. Doing so will create a backup snapshot of the " +"existing configuration before installing files compatible with this Slic3r.\n" +msgstr "" + +#: src/slic3r/GUI/UpdateDialogs.cpp:126 +#, c-format +msgid "This %s version: %s" +msgstr "" + +#: src/slic3r/GUI/UpdateDialogs.cpp:131 msgid "Incompatible bundles:" -msgstr "Incompatible bundles:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:144 -msgid "Exit Slic3r" -msgstr "Exit Slic3r" +msgstr "Lots incompatibles :" #: src/slic3r/GUI/UpdateDialogs.cpp:147 -msgid "Re-configure" -msgstr "Re-configure" +msgid "Exit Slic3r" +msgstr "Quitter Slic3r" -#: src/slic3r/GUI/UpdateDialogs.cpp:168 +#: src/slic3r/GUI/UpdateDialogs.cpp:150 +msgid "Re-configure" +msgstr "Reconfigurer" + +#: src/slic3r/GUI/UpdateDialogs.cpp:171 #, c-format msgid "" -"Slic3r PE now uses an updated configuration structure.\n" +"%s now uses an updated configuration structure.\n" "\n" "So called 'System presets' have been introduced, which hold the built-in " "default settings for various printers. These System presets cannot be " @@ -3999,25 +4041,14 @@ msgid "" "Please proceed with the %s that follows to set up the new presets and to " "choose whether to enable automatic preset updates." msgstr "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in " -"default settings for various printers. These System presets cannot be " -"modified, instead, users now may create their own presets inheriting " -"settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent " -"or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to " -"choose whether to enable automatic preset updates." -#: src/slic3r/GUI/UpdateDialogs.cpp:184 +#: src/slic3r/GUI/UpdateDialogs.cpp:187 msgid "For more information please visit our wiki page:" -msgstr "For more information please visit our wiki page:" +msgstr "Pour plus d'informations, merci de visiter notre page wiki :" #: src/slic3r/GUI/WipeTowerDialog.cpp:14 msgid "Ramming customization" -msgstr "Ramming customization" +msgstr "Personnalisation de l'expulsion" #: src/slic3r/GUI/WipeTowerDialog.cpp:40 msgid "" @@ -4031,75 +4062,77 @@ msgid "" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." msgstr "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"L'Expulsion décrit l'extrusion rapide qui a lieu juste avant un changement " +"d'outil sur une imprimante MM à extrudeur unique. Le but est de donner une " +"forme correcte au filament déchargé afin qu'il n'empêche pas l'insertion du " +"nouveau filament et puisse être réinséré lui-même plus tard. Cette phase est " +"importante et des matériaux différents peuvent nécessiter des vitesses " +"d'extrusion différentes pour obtenir la bonne forme. De ce fait, les débits " +"d'extrusion pendant l'expulsion sont ajustables.\n" "\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." +"Ceci est un paramétrage de niveau expert, et un mauvais ajustement " +"provoquera probablement des blocages, des accrochages de la roue de " +"l'extrudeur sur le filament , etc ..." #: src/slic3r/GUI/WipeTowerDialog.cpp:82 msgid "Total ramming time" -msgstr "Total ramming time" +msgstr "Durée totale de l'expulsion" #: src/slic3r/GUI/WipeTowerDialog.cpp:84 msgid "Total rammed volume" -msgstr "Total rammed volume" +msgstr "Volume total expulsé" #: src/slic3r/GUI/WipeTowerDialog.cpp:88 msgid "Ramming line width" -msgstr "Ramming line width" +msgstr "Largeur de la ligne d'expulsion" #: src/slic3r/GUI/WipeTowerDialog.cpp:90 msgid "Ramming line spacing" -msgstr "Ramming line spacing" +msgstr "Espacement de la ligne de ramming" #: src/slic3r/GUI/WipeTowerDialog.cpp:141 msgid "Wipe tower - Purging volume adjustment" -msgstr "Wipe tower - Purging volume adjustment" +msgstr "Tour de nettoyage - Ajustement du volume de purge" #: src/slic3r/GUI/WipeTowerDialog.cpp:225 msgid "" "Here you can adjust required purging volume (mm³) for any given pair of " "tools." msgstr "" -"Here you can adjust required purging volume (mm³) for any given pair of " -"tools." +"Ici vous pouvez ajuster le volume de purge nécessaire (mm³) pour une paire " +"d'outils donnée." #: src/slic3r/GUI/WipeTowerDialog.cpp:226 msgid "Extruder changed to" -msgstr "Extruder changed to" +msgstr "Extrudeur changé à" #: src/slic3r/GUI/WipeTowerDialog.cpp:234 msgid "unloaded" -msgstr "unloaded" +msgstr "déchargé" #: src/slic3r/GUI/WipeTowerDialog.cpp:235 msgid "loaded" -msgstr "loaded" +msgstr "chargé" #: src/slic3r/GUI/WipeTowerDialog.cpp:240 msgid "Tool #" -msgstr "Tool #" +msgstr "Outil #" #: src/slic3r/GUI/WipeTowerDialog.cpp:247 msgid "" "Total purging volume is calculated by summing two values below, depending on " "which tools are loaded/unloaded." msgstr "" -"Total purging volume is calculated by summing two values below, depending on " -"which tools are loaded/unloaded." +"Le volume de purge total est calculé en additionnant les deux valeurs ci-" +"dessous, en fonction des outils qui sont chargés/déchargés." #: src/slic3r/GUI/WipeTowerDialog.cpp:248 msgid "Volume to purge (mm³) when the filament is being" -msgstr "Volume to purge (mm³) when the filament is being" +msgstr "Volume à purger (mm³) lorsque le filament est" #: src/slic3r/GUI/WipeTowerDialog.cpp:262 msgid "From" -msgstr "From" +msgstr "De" #: src/slic3r/GUI/WipeTowerDialog.cpp:327 msgid "" @@ -4108,570 +4141,501 @@ msgid "" "\n" "Do you want to proceed?" msgstr "" -"Switching to simple settings will discard changes done in the advanced " -"mode!\n" +"Basculer vers les réglages simples annulera les changements effectués en " +"mode avancé !\n" "\n" -"Do you want to proceed?" +"Voulez-vous continuer ?" #: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show simplified settings" -msgstr "Show simplified settings" +msgstr "Afficher les réglages simplifiés" #: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show advanced settings" -msgstr "Show advanced settings" +msgstr "Afficher les réglages avancés" -#: src/slic3r/GUI/wxExtensions.cpp:2398 +#: src/slic3r/GUI/wxExtensions.cpp:2409 #, c-format msgid "Switch to the %s mode" -msgstr "Switch to the %s mode" +msgstr "" -#: src/slic3r/GUI/wxExtensions.cpp:2399 +#: src/slic3r/GUI/wxExtensions.cpp:2410 #, c-format msgid "Current mode is %s" -msgstr "Current mode is %s" +msgstr "" #: src/slic3r/Utils/Duet.cpp:51 msgid "Connection to Duet works correctly." -msgstr "Connection to Duet works correctly." +msgstr "" #: src/slic3r/Utils/Duet.cpp:56 msgid "Could not connect to Duet" -msgstr "Could not connect to Duet" +msgstr "" #: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 msgid "Unknown error occured" -msgstr "Unknown error occured" +msgstr "" #: src/slic3r/Utils/Duet.cpp:148 msgid "Wrong password" -msgstr "Wrong password" +msgstr "" #: src/slic3r/Utils/Duet.cpp:151 msgid "Could not get resources to create a new connection" -msgstr "Could not get resources to create a new connection" +msgstr "" #: src/slic3r/Utils/OctoPrint.cpp:69 #, c-format msgid "Mismatched type of print host: %s" -msgstr "Mismatched type of print host: %s" +msgstr "" #: src/slic3r/Utils/OctoPrint.cpp:84 msgid "Connection to OctoPrint works correctly." -msgstr "Connection to OctoPrint works correctly." +msgstr "La connexion avec OctoPrint fonctionne correctement." #: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Could not connect to OctoPrint" -msgstr "Could not connect to OctoPrint" +msgstr "Impossible de se connecter à OctoPrint" #: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" +"Note : une version d'Octoprint supérieure ou égale à 1.1.0 est requise." #: src/slic3r/Utils/OctoPrint.cpp:195 msgid "Connection to Prusa SLA works correctly." -msgstr "Connection to Prusa SLA works correctly." +msgstr "" #: src/slic3r/Utils/OctoPrint.cpp:200 msgid "Could not connect to Prusa SLA" -msgstr "Could not connect to Prusa SLA" +msgstr "" #: src/slic3r/Utils/PresetUpdater.cpp:583 #, c-format msgid "requires min. %s and max. %s" -msgstr "requires min. %s and max. %s" +msgstr "nécessite min. %s et max. %s" #: src/slic3r/Utils/PresetUpdater.cpp:588 #, c-format msgid "requires min. %s" -msgstr "requires min. %s" +msgstr "" #: src/slic3r/Utils/PresetUpdater.cpp:590 #, c-format msgid "requires max. %s" -msgstr "requires max. %s" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" -msgstr "Exporting source model" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:235 msgid "Failed loading the input model." -msgstr "Failed loading the input model." +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:242 msgid "Repairing model by the Netfabb service" -msgstr "Repairing model by the Netfabb service" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:248 msgid "Mesh repair failed." -msgstr "Mesh repair failed." +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:251 #: src/slic3r/Utils/FixModelByWin10.cpp:378 msgid "Loading repaired model" -msgstr "Loading repaired model" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:263 #: src/slic3r/Utils/FixModelByWin10.cpp:270 #: src/slic3r/Utils/FixModelByWin10.cpp:302 msgid "Saving mesh into the 3MF container failed." -msgstr "Saving mesh into the 3MF container failed." +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:340 msgid "Model fixing" -msgstr "Model fixing" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:341 msgid "Exporting model..." -msgstr "Exporting model..." +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:368 msgid "Export of a temporary 3mf file failed" -msgstr "Export of a temporary 3mf file failed" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:383 msgid "Import of the repaired 3mf file failed" -msgstr "Import of the repaired 3mf file failed" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:385 msgid "Repaired 3MF file does not contain any object" -msgstr "Repaired 3MF file does not contain any object" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:387 msgid "Repaired 3MF file contains more than one object" -msgstr "Repaired 3MF file contains more than one object" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:389 msgid "Repaired 3MF file does not contain any volume" -msgstr "Repaired 3MF file does not contain any volume" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:391 msgid "Repaired 3MF file contains more than one volume" -msgstr "Repaired 3MF file contains more than one volume" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:400 msgid "Model repair finished" -msgstr "Model repair finished" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:406 msgid "Model repair canceled" -msgstr "Model repair canceled" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:423 msgid "Model repaired successfully" -msgstr "Model repaired successfully" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:423 #: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model Repair by the Netfabb service" -msgstr "Model Repair by the Netfabb service" +msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model repair failed: \n" -msgstr "Model repair failed: \n" +msgstr "" #: src/libslic3r/Zipper.cpp:35 msgid "undefined error" -msgstr "undefined error" +msgstr "" #: src/libslic3r/Zipper.cpp:37 msgid "too many files" -msgstr "too many files" +msgstr "" #: src/libslic3r/Zipper.cpp:39 msgid "file too large" -msgstr "file too large" +msgstr "" #: src/libslic3r/Zipper.cpp:41 msgid "unsupported method" -msgstr "unsupported method" +msgstr "" #: src/libslic3r/Zipper.cpp:43 msgid "unsupported encryption" -msgstr "unsupported encryption" +msgstr "" #: src/libslic3r/Zipper.cpp:45 msgid "unsupported feature" -msgstr "unsupported feature" +msgstr "" #: src/libslic3r/Zipper.cpp:47 msgid "failed finding central directory" -msgstr "failed finding central directory" +msgstr "" #: src/libslic3r/Zipper.cpp:49 msgid "not a ZIP archive" -msgstr "not a ZIP archive" +msgstr "" #: src/libslic3r/Zipper.cpp:51 msgid "invalid header or archive is corrupted" -msgstr "invalid header or archive is corrupted" +msgstr "" #: src/libslic3r/Zipper.cpp:53 msgid "unsupported multidisk archive" -msgstr "unsupported multidisk archive" +msgstr "" #: src/libslic3r/Zipper.cpp:55 msgid "decompression failed or archive is corrupted" -msgstr "decompression failed or archive is corrupted" +msgstr "" #: src/libslic3r/Zipper.cpp:57 msgid "compression failed" -msgstr "compression failed" +msgstr "" #: src/libslic3r/Zipper.cpp:59 msgid "unexpected decompressed size" -msgstr "unexpected decompressed size" +msgstr "" #: src/libslic3r/Zipper.cpp:61 msgid "CRC-32 check failed" -msgstr "CRC-32 check failed" +msgstr "" #: src/libslic3r/Zipper.cpp:63 msgid "unsupported central directory size" -msgstr "unsupported central directory size" +msgstr "" #: src/libslic3r/Zipper.cpp:65 msgid "allocation failed" -msgstr "allocation failed" +msgstr "" #: src/libslic3r/Zipper.cpp:67 msgid "file open failed" -msgstr "file open failed" +msgstr "" #: src/libslic3r/Zipper.cpp:69 msgid "file create failed" -msgstr "file create failed" +msgstr "" #: src/libslic3r/Zipper.cpp:71 msgid "file write failed" -msgstr "file write failed" +msgstr "" #: src/libslic3r/Zipper.cpp:73 msgid "file read failed" -msgstr "file read failed" +msgstr "" #: src/libslic3r/Zipper.cpp:75 msgid "file close failed" -msgstr "file close failed" +msgstr "" #: src/libslic3r/Zipper.cpp:77 msgid "file seek failed" -msgstr "file seek failed" +msgstr "" #: src/libslic3r/Zipper.cpp:79 msgid "file stat failed" -msgstr "file stat failed" +msgstr "" #: src/libslic3r/Zipper.cpp:81 msgid "invalid parameter" -msgstr "invalid parameter" +msgstr "" #: src/libslic3r/Zipper.cpp:83 msgid "invalid filename" -msgstr "invalid filename" +msgstr "" #: src/libslic3r/Zipper.cpp:85 msgid "buffer too small" -msgstr "buffer too small" +msgstr "" #: src/libslic3r/Zipper.cpp:87 msgid "internal error" -msgstr "internal error" +msgstr "" #: src/libslic3r/Zipper.cpp:89 msgid "file not found" -msgstr "file not found" +msgstr "" #: src/libslic3r/Zipper.cpp:91 msgid "archive is too large" -msgstr "archive is too large" +msgstr "" #: src/libslic3r/Zipper.cpp:93 msgid "validation failed" -msgstr "validation failed" +msgstr "" #: src/libslic3r/Zipper.cpp:95 msgid "write calledback failed" -msgstr "write calledback failed" +msgstr "" #: src/libslic3r/Zipper.cpp:105 msgid "Error with zip archive" -msgstr "Error with zip archive" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2153 -msgid "Starting" -msgstr "Starting" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2154 -msgid "Filtering" -msgstr "Filtering" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2155 -msgid "Generate pinheads" -msgstr "Generate pinheads" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2156 -msgid "Classification" -msgstr "Classification" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2157 -msgid "Routing to ground" -msgstr "Routing to ground" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2158 -msgid "Routing supports to model surface" -msgstr "Routing supports to model surface" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2159 -msgid "Cascading pillars" -msgstr "Cascading pillars" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2160 -msgid "Processing small holes" -msgstr "Processing small holes" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2161 -msgid "Done" -msgstr "Done" - -#: src/libslic3r/SLA/SLASupportTree.cpp:2162 -msgid "Abort" -msgstr "Abort" +msgstr "" #: src/libslic3r/Print.cpp:1136 msgid "All objects are outside of the print volume." -msgstr "All objects are outside of the print volume." +msgstr "" #: src/libslic3r/Print.cpp:1165 msgid "Some objects are too close; your extruder will collide with them." -msgstr "Some objects are too close; your extruder will collide with them." +msgstr "" #: src/libslic3r/Print.cpp:1180 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "" -"Some objects are too tall and cannot be printed without extruder collisions." #: src/libslic3r/Print.cpp:1190 msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "The Spiral Vase option can only be used when printing a single object." +msgstr "" #: src/libslic3r/Print.cpp:1192 msgid "" "The Spiral Vase option can only be used when printing single material " "objects." msgstr "" -"The Spiral Vase option can only be used when printing single material " -"objects." #: src/libslic3r/Print.cpp:1198 msgid "" "All extruders must have the same diameter for single extruder multimaterial " "printer." msgstr "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." #: src/libslic3r/Print.cpp:1203 msgid "" "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " "and Repetier G-code flavors." msgstr "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." #: src/libslic3r/Print.cpp:1205 msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." #: src/libslic3r/Print.cpp:1226 msgid "" "The Wipe Tower is only supported for multiple objects if they have equal " "layer heigths" msgstr "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" #: src/libslic3r/Print.cpp:1228 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "over an equal number of raft layers" msgstr "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"over an equal number of raft layers" #: src/libslic3r/Print.cpp:1230 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "with the same support_material_contact_distance" msgstr "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"with the same support_material_contact_distance" #: src/libslic3r/Print.cpp:1232 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." msgstr "" -"The Wipe Tower is only supported for multiple objects if they are sliced " -"equally." #: src/libslic3r/Print.cpp:1261 msgid "" "The Wipe tower is only supported if all objects have the same layer height " "profile" msgstr "" -"The Wipe tower is only supported if all objects have the same layer height " -"profile" #: src/libslic3r/Print.cpp:1271 msgid "The supplied settings will cause an empty print." -msgstr "The supplied settings will cause an empty print." +msgstr "" #: src/libslic3r/Print.cpp:1288 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "" -"One or more object were assigned an extruder that the printer does not have." -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1298 msgid "" "Printing with multiple extruders of differing nozzle diameters. If support " "is to be printed with the current extruder (support_material_extruder == 0 " "or support_material_interface_extruder == 0), all nozzles have to be of the " "same diameter." msgstr "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." -#: src/libslic3r/Print.cpp:1305 +#: src/libslic3r/Print.cpp:1306 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers " "need to be synchronized with the object layers." msgstr "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." -#: src/libslic3r/Print.cpp:1309 +#: src/libslic3r/Print.cpp:1310 msgid "" "The Wipe Tower currently supports the non-soluble supports only if they are " "printed with the current extruder without triggering a tool change. (both " "support_material_extruder and support_material_interface_extruder need to be " "set to 0)." msgstr "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." -#: src/libslic3r/Print.cpp:1316 +#: src/libslic3r/Print.cpp:1317 msgid "first_layer_height" -msgstr "first_layer_height" +msgstr "" -#: src/libslic3r/Print.cpp:1331 +#: src/libslic3r/Print.cpp:1332 msgid "First layer height can't be greater than nozzle diameter" -msgstr "First layer height can't be greater than nozzle diameter" +msgstr "" -#: src/libslic3r/Print.cpp:1335 +#: src/libslic3r/Print.cpp:1336 msgid "Layer height can't be greater than nozzle diameter" -msgstr "Layer height can't be greater than nozzle diameter" +msgstr "" #: src/libslic3r/SLAPrint.cpp:55 msgid "Slicing model" -msgstr "Slicing model" +msgstr "" -#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:801 +#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:804 msgid "Generating support points" -msgstr "Generating support points" +msgstr "" #: src/libslic3r/SLAPrint.cpp:57 msgid "Generating support tree" -msgstr "Generating support tree" +msgstr "" #: src/libslic3r/SLAPrint.cpp:58 msgid "Generating pad" -msgstr "Generating pad" +msgstr "" #: src/libslic3r/SLAPrint.cpp:59 msgid "Slicing supports" -msgstr "Slicing supports" +msgstr "" #: src/libslic3r/SLAPrint.cpp:71 msgid "Merging slices and calculating statistics" -msgstr "Merging slices and calculating statistics" +msgstr "" #: src/libslic3r/SLAPrint.cpp:72 msgid "Rasterizing layers" -msgstr "Rasterizing layers" +msgstr "" -#: src/libslic3r/SLAPrint.cpp:605 +#: src/libslic3r/SLAPrint.cpp:606 msgid "" "Cannot proceed without support points! Add support points or disable support " "generation." msgstr "" -"Cannot proceed without support points! Add support points or disable support " -"generation." -#: src/libslic3r/SLAPrint.cpp:617 +#: src/libslic3r/SLAPrint.cpp:618 msgid "Elevation is too low for object." -msgstr "Elevation is too low for object." +msgstr "" -#: src/libslic3r/SLAPrint.cpp:699 +#. TRN To be shown at the status bar on SLA slicing error. +#: src/libslic3r/SLAPrint.cpp:701 msgid "Slicing had to be stopped due to an internal error." -msgstr "Slicing had to be stopped due to an internal error." +msgstr "" -#: src/libslic3r/SLAPrint.cpp:849 src/libslic3r/SLAPrint.cpp:859 -#: src/libslic3r/SLAPrint.cpp:907 +#: src/libslic3r/SLAPrint.cpp:852 src/libslic3r/SLAPrint.cpp:862 +#: src/libslic3r/SLAPrint.cpp:910 msgid "Visualizing supports" -msgstr "Visualizing supports" +msgstr "" -#: src/libslic3r/SLAPrint.cpp:1449 +#: src/libslic3r/SLAPrint.cpp:1452 msgid "Slicing done" -msgstr "Slicing done" +msgstr "" #: src/libslic3r/PrintBase.cpp:65 msgid "Failed processing of the output_filename_format template." -msgstr "Failed processing of the output_filename_format template." +msgstr "" #: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43 msgid "Printer technology" -msgstr "Printer technology" +msgstr "" #: src/libslic3r/PrintConfig.cpp:50 msgid "Bed shape" -msgstr "Bed shape" +msgstr "Forme du plateau" #: src/libslic3r/PrintConfig.cpp:57 msgid "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." msgstr "" -"This setting controls the height (and thus the total number) of the slices/" -"layers. Thinner layers give better accuracy but take more time to print." +"Cette option contrôle l'épaisseur (et donc le nombre total) des couches. Des " +"couches plus fines donneront une meilleure précision mais l'impression sera " +"plus longue." #: src/libslic3r/PrintConfig.cpp:64 msgid "Max print height" -msgstr "Max print height" +msgstr "Hauteur maximale d'impression" #: src/libslic3r/PrintConfig.cpp:65 msgid "" "Set this to the maximum height that can be reached by your extruder while " "printing." msgstr "" -"Set this to the maximum height that can be reached by your extruder while " -"printing." +"Réglez cette valeur sur la hauteur maximum que peut atteindre votre " +"extrudeur au cours de l'impression." #: src/libslic3r/PrintConfig.cpp:71 msgid "Slice gap closing radius" -msgstr "Slice gap closing radius" +msgstr "" #: src/libslic3r/PrintConfig.cpp:73 msgid "" @@ -4679,37 +4643,30 @@ msgid "" "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Cracks smaller than 2x gap closing radius are being filled during the " -"triangle mesh slicing. The gap closing operation may reduce the final print " -"resolution, therefore it is advisable to keep the value reasonably low." #: src/libslic3r/PrintConfig.cpp:81 msgid "Hostname, IP or URL" -msgstr "Hostname, IP or URL" +msgstr "Nom d'hôte, IP ou URL" #: src/libslic3r/PrintConfig.cpp:82 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance." msgstr "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." #: src/libslic3r/PrintConfig.cpp:88 msgid "API Key / Password" -msgstr "API Key / Password" +msgstr "" #: src/libslic3r/PrintConfig.cpp:89 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." #: src/libslic3r/PrintConfig.cpp:111 msgid "Avoid crossing perimeters" -msgstr "Avoid crossing perimeters" +msgstr "Éviter de traverser les périmètres" #: src/libslic3r/PrintConfig.cpp:112 msgid "" @@ -4717,25 +4674,27 @@ msgid "" "is mostly useful with Bowden extruders which suffer from oozing. This " "feature slows down both the print and the G-code generation." msgstr "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." +"Optimiser les déplacements afin de minimiser le franchissement de " +"périmètres. Ceci est surtout utile avec les extruder Bowden qui sont sujets " +"aux coulures. Cette fonctionnalité ralentit l'impression et la génération du " +"G-code." #: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1976 msgid "Other layers" -msgstr "Other layers" +msgstr "Autres couches" #: src/libslic3r/PrintConfig.cpp:120 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." msgstr "" -"Bed temperature for layers after the first one. Set this to zero to disable " -"bed temperature control commands in the output." +"Température du plateau pour les couches après la première. Mettez ceci à " +"zéro pour désactiver les commandes de contrôle de température du plateau " +"dans la sortie." #: src/libslic3r/PrintConfig.cpp:122 msgid "Bed temperature" -msgstr "Bed temperature" +msgstr "Température du plateau" #: src/libslic3r/PrintConfig.cpp:129 msgid "" @@ -4743,13 +4702,13 @@ msgid "" "Note that you can use placeholder variables for all Slic3r settings as well " "as [layer_num] and [layer_z]." msgstr "" -"This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." +"Ce code personnalisé est inséré à chaque changement de couche, juste avant " +"le mouvement en Z. Notez que vous pouvez utiliser des variables génériques " +"pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]." #: src/libslic3r/PrintConfig.cpp:139 msgid "Between objects G-code" -msgstr "Between objects G-code" +msgstr "Entre le G-code des objets" #: src/libslic3r/PrintConfig.cpp:140 msgid "" @@ -4760,32 +4719,34 @@ msgid "" "variables for all Slic3r settings, so you can put a \"M109 " "S[first_layer_temperature]\" command wherever you want." msgstr "" -"This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." +"Ce code est inséré entre des objets lorsque vous utilisez l'impression " +"séquentielle. Par défaut la température de l'extrudeur et du plateau est " +"réinitialisée et utilise la commande sans-attente ; toutefois si des " +"commandes M104, M109, M140 ou M190 sont détectées dans ce code personnalisé, " +"Slic3r n'ajoutera pas de commandes de température. Notez que vous pouvez " +"utiliser des variables génériques pour tous les réglages de Slic3r, donc " +"vous pouvez entrer une commande \"M109S[first_layer_temperature]\" où vous " +"le souhaitez." #: src/libslic3r/PrintConfig.cpp:150 msgid "Number of solid layers to generate on bottom surfaces." -msgstr "Number of solid layers to generate on bottom surfaces." +msgstr "Nombre de couches solides à générer sur les surfaces inférieures." #: src/libslic3r/PrintConfig.cpp:151 msgid "Bottom solid layers" -msgstr "Bottom solid layers" +msgstr "Couches solides inférieures" #: src/libslic3r/PrintConfig.cpp:156 msgid "Bridge" -msgstr "Bridge" +msgstr "Pont" #: src/libslic3r/PrintConfig.cpp:157 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." msgstr "" -"This is the acceleration your printer will use for bridges. Set zero to " -"disable acceleration control for bridges." +"L'accélération qui sera utilisée par votre imprimante pour les ponts. Régler " +"sur zéro pour désactiver l'accélération pour les ponts." #: src/libslic3r/PrintConfig.cpp:159 src/libslic3r/PrintConfig.cpp:302 #: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:935 @@ -4796,7 +4757,7 @@ msgstr "mm/s²" #: src/libslic3r/PrintConfig.cpp:165 msgid "Bridging angle" -msgstr "Bridging angle" +msgstr "Angle du pont" #: src/libslic3r/PrintConfig.cpp:167 msgid "" @@ -4804,35 +4765,36 @@ msgid "" "calculated automatically. Otherwise the provided angle will be used for all " "bridges. Use 180° for zero angle." msgstr "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for all " -"bridges. Use 180° for zero angle." +"Contournement de l'angle du pont. Si laissé à zéro, l'angle du pont sera " +"calculé automatiquement. Sinon, l'angle fourni sera utilisé pour tous les " +"ponts. Utilisez 180° pour un angle nul." #: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:732 #: src/libslic3r/PrintConfig.cpp:1569 src/libslic3r/PrintConfig.cpp:1579 #: src/libslic3r/PrintConfig.cpp:1807 src/libslic3r/PrintConfig.cpp:1961 -#: src/libslic3r/PrintConfig.cpp:2459 +#: src/libslic3r/PrintConfig.cpp:2461 msgid "°" msgstr "°" #: src/libslic3r/PrintConfig.cpp:176 msgid "Bridges fan speed" -msgstr "Bridges fan speed" +msgstr "Vitesse du ventilateur pour les ponts" #: src/libslic3r/PrintConfig.cpp:177 msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "This fan speed is enforced during all bridges and overhangs." +msgstr "" +"Cette vitesse de ventilateur sera utilisée pour les ponts et les surplombs." #: src/libslic3r/PrintConfig.cpp:178 src/libslic3r/PrintConfig.cpp:744 #: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1216 #: src/libslic3r/PrintConfig.cpp:1461 src/libslic3r/PrintConfig.cpp:2258 -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2500 msgid "%" msgstr "%" #: src/libslic3r/PrintConfig.cpp:185 msgid "Bridge flow ratio" -msgstr "Bridge flow ratio" +msgstr "Ratio de flux pour les ponts" #: src/libslic3r/PrintConfig.cpp:187 msgid "" @@ -4841,18 +4803,18 @@ msgid "" "settings are usually good and you should experiment with cooling (use a fan) " "before tweaking this." msgstr "" -"This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." +"Ce facteur affecte la quantité de plastique utilisée pour les ponts. Vous " +"pouvez le diminuer légèrement pour éviter l'affaissement. La valeur par " +"défaut est généralement suffisante et vous devriez expérimenter le " +"refroidissement (utiliser un ventilateur) avant de modifier ceci." #: src/libslic3r/PrintConfig.cpp:197 msgid "Bridges" -msgstr "Bridges" +msgstr "Ponts" #: src/libslic3r/PrintConfig.cpp:199 msgid "Speed for printing bridges." -msgstr "Speed for printing bridges." +msgstr "Vitesse d'impression des ponts." #: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:576 #: src/libslic3r/PrintConfig.cpp:584 src/libslic3r/PrintConfig.cpp:593 @@ -4869,19 +4831,19 @@ msgstr "mm/s" #: src/libslic3r/PrintConfig.cpp:207 msgid "Brim width" -msgstr "Brim width" +msgstr "Largeur de la bordure" #: src/libslic3r/PrintConfig.cpp:208 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." msgstr "" -"Horizontal width of the brim that will be printed around each object on the " -"first layer." +"Largeur horizontale de la bordure qui sera imprimée autour de chaque objet " +"sur la première couche." #: src/libslic3r/PrintConfig.cpp:215 msgid "Clip multi-part objects" -msgstr "Clip multi-part objects" +msgstr "Dissocier les objets multi-pièces" #: src/libslic3r/PrintConfig.cpp:216 msgid "" @@ -4889,21 +4851,22 @@ msgid "" "the overlapping object parts one by the other (2nd part will be clipped by " "the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "" -"When printing multi-material objects, this settings will make slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." +"Lorsque vous imprimez des objets multi-matériaux, ce réglage fera en sorte " +"que Slic3r rattache ensemble les parties de l'objet qui se superposent (la " +"2e partie sera rattachée à la 1ere, la 3e partie sera rattachée à la 1ere et " +"la 2e, etc...)." #: src/libslic3r/PrintConfig.cpp:223 msgid "Colorprint height" -msgstr "Colorprint height" +msgstr "" #: src/libslic3r/PrintConfig.cpp:224 msgid "Heights at which a filament change is to occur. " -msgstr "Heights at which a filament change is to occur. " +msgstr "" #: src/libslic3r/PrintConfig.cpp:234 msgid "Compatible printers condition" -msgstr "Compatible printers condition" +msgstr "Condition de compatibilité des imprimantes" #: src/libslic3r/PrintConfig.cpp:235 msgid "" @@ -4911,13 +4874,13 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" -"A boolean expression using the configuration values of an active printer " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active printer profile." +"Une expression booléenne utilisant les valeurs de configuration d'un profil " +"d'imprimante actif. Si cette expression est évaluée comme vraie, ce profil " +"est considéré comme compatible avec le profil d'imprimante actif." #: src/libslic3r/PrintConfig.cpp:249 msgid "Compatible print profiles condition" -msgstr "Compatible print profiles condition" +msgstr "" #: src/libslic3r/PrintConfig.cpp:250 msgid "" @@ -4925,13 +4888,10 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -"A boolean expression using the configuration values of an active print " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active print profile." #: src/libslic3r/PrintConfig.cpp:267 msgid "Complete individual objects" -msgstr "Complete individual objects" +msgstr "Compléter les objets individuels" #: src/libslic3r/PrintConfig.cpp:268 msgid "" @@ -4940,39 +4900,44 @@ msgid "" "This feature is useful to avoid the risk of ruined prints. Slic3r should " "warn and prevent you from extruder collisions, but beware." msgstr "" -"When printing multiple objects or copies, this feature will complete each " -"object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." +"Lorsque vous imprimez plusieurs objets ou copies, ce réglage permet de " +"terminer un objet avant de passer au suivant (en repartant de sa première " +"couche). Cette fonction est utile pour éviter les risques d'impressions " +"gâchées. Slic3r doit vous avertir et éviter les collisions entre les objets " +"et l'extrudeur, mais soyez vigilant." #: src/libslic3r/PrintConfig.cpp:276 msgid "Enable auto cooling" -msgstr "Enable auto cooling" +msgstr "Activer le refroidissement automatique" #: src/libslic3r/PrintConfig.cpp:277 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." msgstr "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." +"Cette option active la logique de refroidissement automatique, qui ajuste la " +"vitesse d'impression et celle du ventilateur en fonction du temps " +"d'impression de la couche." #: src/libslic3r/PrintConfig.cpp:282 msgid "Cooling tube position" -msgstr "Cooling tube position" +msgstr "Position du tube de refroidissement" #: src/libslic3r/PrintConfig.cpp:283 msgid "Distance of the center-point of the cooling tube from the extruder tip " msgstr "" -"Distance of the center-point of the cooling tube from the extruder tip " +"Distance entre le point central du tube de refroidissement et la pointe de " +"l'extrudeur. " #: src/libslic3r/PrintConfig.cpp:290 msgid "Cooling tube length" -msgstr "Cooling tube length" +msgstr "Longueur du tube de refroidissement" #: src/libslic3r/PrintConfig.cpp:291 msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "Length of the cooling tube to limit space for cooling moves inside it " +msgstr "" +"Longueur du tube de refroidissement pour limiter l'espace pour les " +"déplacements de refroidissement à l'intérieur de celui-ci " #: src/libslic3r/PrintConfig.cpp:299 msgid "" @@ -4980,13 +4945,13 @@ msgid "" "specific acceleration values are used (perimeter/infill). Set zero to " "prevent resetting acceleration at all." msgstr "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." +"Accélération à laquelle votre imprimante sera réinitialisée suite à une " +"modification de l'accélération des fonctions spécifiques (périmètre/" +"remplissage). Régler sur zéro pour ne pas réinitialiser l'accélération." #: src/libslic3r/PrintConfig.cpp:308 msgid "Default filament profile" -msgstr "Default filament profile" +msgstr "Profil de filament par défaut" #: src/libslic3r/PrintConfig.cpp:309 msgid "" @@ -4994,83 +4959,85 @@ msgid "" "selection of the current printer profile, this filament profile will be " "activated." msgstr "" -"Default filament profile associated with the current printer profile. On " -"selection of the current printer profile, this filament profile will be " -"activated." +"Profil de filament par défaut associé au profil d'imprimante courant. En " +"sélectionnant le profil d'imprimante courant, ce profil de filament sera " +"activé." #: src/libslic3r/PrintConfig.cpp:315 msgid "Default print profile" -msgstr "Default print profile" +msgstr "Profil de filament par défaut" -#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2337 -#: src/libslic3r/PrintConfig.cpp:2348 +#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2339 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " "activated." msgstr "" -"Default print profile associated with the current printer profile. On " -"selection of the current printer profile, this print profile will be " -"activated." +"Profil de filament par défaut associé au profil d'imprimante courant. En " +"sélectionnant le profil d'imprimante courant, ce profil de filament sera " +"activé." #: src/libslic3r/PrintConfig.cpp:322 msgid "Disable fan for the first" -msgstr "Disable fan for the first" +msgstr "Désactiver le ventilateur pour le(s) première(s)" #: src/libslic3r/PrintConfig.cpp:323 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." msgstr "" -"You can set this to a positive value to disable fan at all during the first " -"layers, so that it does not make adhesion worse." +"Vous pouvez régler ce paramètre sur une valeur positive pour désactiver " +"complètement le ventilateur pendant les premières couches, afin de ne pas " +"rendre l'adhérence plus difficile." #: src/libslic3r/PrintConfig.cpp:325 src/libslic3r/PrintConfig.cpp:945 #: src/libslic3r/PrintConfig.cpp:1434 src/libslic3r/PrintConfig.cpp:1619 #: src/libslic3r/PrintConfig.cpp:1680 src/libslic3r/PrintConfig.cpp:1843 #: src/libslic3r/PrintConfig.cpp:1888 msgid "layers" -msgstr "layers" +msgstr "couches" #: src/libslic3r/PrintConfig.cpp:332 msgid "Don't support bridges" -msgstr "Don't support bridges" +msgstr "Ne pas supporter les ponts" #: src/libslic3r/PrintConfig.cpp:334 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." msgstr "" -"Experimental option for preventing support material from being generated " -"under bridged areas." +"Option expérimentale pour empêcher la génération de support sous les ponts." #: src/libslic3r/PrintConfig.cpp:340 msgid "Distance between copies" -msgstr "Distance between copies" +msgstr "Distance entre les copies" #: src/libslic3r/PrintConfig.cpp:341 msgid "Distance used for the auto-arrange feature of the plater." -msgstr "Distance used for the auto-arrange feature of the plater." +msgstr "Distance utilisée par la fonction d'agencement automatique du plateau." #: src/libslic3r/PrintConfig.cpp:348 msgid "Elephant foot compensation" -msgstr "Elephant foot compensation" +msgstr "Compensation de l'effet patte d'éléphant" #: src/libslic3r/PrintConfig.cpp:350 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." +"La première couche sera réduite sur le plan XY selon la valeur configurée " +"afin de compenser l'écrasement de la première couche également connu sous le " +"nom d'effet Pied d'Éléphant." #: src/libslic3r/PrintConfig.cpp:359 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all Slic3r settings." msgstr "" -"This end procedure is inserted at the end of the output file. Note that you " -"can use placeholder variables for all Slic3r settings." +"Cette procédure de fin est insérée à la fin du fichier de sortie. Notez que " +"vous pouvez utiliser des variables génériques pour tous les réglages de " +"Slic3r." #: src/libslic3r/PrintConfig.cpp:369 msgid "" @@ -5079,71 +5046,68 @@ msgid "" "Slic3r settings. If you have multiple extruders, the gcode is processed in " "extruder order." msgstr "" -"This end procedure is inserted at the end of the output file, before the " -"printer end gcode. Note that you can use placeholder variables for all " -"Slic3r settings. If you have multiple extruders, the gcode is processed in " -"extruder order." +"Cette procédure de fin est insérée à la fin du fichier de sortie, avant le " +"gcode de fin de l'imprimante. Notez que vous pouvez utiliser des variables " +"génériques pour tous les réglages de Slic3r. Si vous avez plusieurs " +"extrudeurs, le gcode sera traité suivant l'ordre des extrudeurs." #: src/libslic3r/PrintConfig.cpp:379 msgid "Ensure vertical shell thickness" -msgstr "Ensure vertical shell thickness" +msgstr "S'assurer de l'épaisseur de la coque verticale" #: src/libslic3r/PrintConfig.cpp:381 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." msgstr "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)." +"Ajouter un remplissage plein à proximité des surfaces inclinées pour " +"garantir une épaisseur de coque verticale (couches solides supérieures" +"+inférieures)." #: src/libslic3r/PrintConfig.cpp:387 msgid "Top fill pattern" -msgstr "Top fill pattern" +msgstr "" #: src/libslic3r/PrintConfig.cpp:389 msgid "" "Fill pattern for top infill. This only affects the top visible layer, and " "not its adjacent solid shells." msgstr "" -"Fill pattern for top infill. This only affects the top visible layer, and " -"not its adjacent solid shells." #: src/libslic3r/PrintConfig.cpp:397 src/libslic3r/PrintConfig.cpp:795 #: src/libslic3r/PrintConfig.cpp:1921 msgid "Rectilinear" -msgstr "Rectilinear" +msgstr "" #: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:801 msgid "Concentric" -msgstr "Concentric" +msgstr "" #: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:805 msgid "Hilbert Curve" -msgstr "Hilbert Curve" +msgstr "" #: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 msgid "Archimedean Chords" -msgstr "Archimedean Chords" +msgstr "" #: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 msgid "Octagram Spiral" -msgstr "Octagram Spiral" +msgstr "" #: src/libslic3r/PrintConfig.cpp:408 msgid "Bottom fill pattern" -msgstr "Bottom fill pattern" +msgstr "" #: src/libslic3r/PrintConfig.cpp:409 msgid "" "Fill pattern for bottom infill. This only affects the bottom external " "visible layer, and not its adjacent solid shells." msgstr "" -"Fill pattern for bottom infill. This only affects the bottom external " -"visible layer, and not its adjacent solid shells." #: src/libslic3r/PrintConfig.cpp:414 src/libslic3r/PrintConfig.cpp:424 msgid "External perimeters" -msgstr "External perimeters" +msgstr "Périmètres externes" #: src/libslic3r/PrintConfig.cpp:416 msgid "" @@ -5152,17 +5116,19 @@ msgid "" "otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " "(for example 200%), it will be computed over layer height." msgstr "" -"Set this to a non-zero value to set a manual extrusion width for external " -"perimeters. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 200%), it will be computed over layer height." +"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la " +"largeur d’extrusion pour les périmètres extérieurs. Si la valeur reste sur " +"zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la " +"valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée " +"en pourcentage (par exemple : 200%), elle sera calculée par rapport à la " +"hauteur de couche." #: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:834 #: src/libslic3r/PrintConfig.cpp:966 src/libslic3r/PrintConfig.cpp:1353 #: src/libslic3r/PrintConfig.cpp:1691 src/libslic3r/PrintConfig.cpp:1864 #: src/libslic3r/PrintConfig.cpp:2022 msgid "mm or % (leave 0 for default)" -msgstr "mm or % (leave 0 for default)" +msgstr "mm ou % (laissez à 0 pour la valeur par défaut)" #: src/libslic3r/PrintConfig.cpp:426 msgid "" @@ -5170,42 +5136,43 @@ msgid "" "visible ones). If expressed as percentage (for example: 80%) it will be " "calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -"This separate setting will affect the speed of external perimeters (the " -"visible ones). If expressed as percentage (for example: 80%) it will be " -"calculated on the perimeters speed setting above. Set to zero for auto." +"Ce réglage distinct affectera la vitesse des périmètres extérieurs (ceux qui " +"sont visibles). Si cette valeur est exprimée en pourcentage (par exemple: " +"80%) elle sera calculée d'après le réglage de la vitesse de périmètre " +"susmentionnée. Réglez sur zéro pour un ajustement automatique." #: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 #: src/libslic3r/PrintConfig.cpp:1650 src/libslic3r/PrintConfig.cpp:1701 #: src/libslic3r/PrintConfig.cpp:1907 src/libslic3r/PrintConfig.cpp:2034 msgid "mm/s or %" -msgstr "mm/s or %" +msgstr "mm/s ou %" #: src/libslic3r/PrintConfig.cpp:436 msgid "External perimeters first" -msgstr "External perimeters first" +msgstr "Périmètres externes en premier" #: src/libslic3r/PrintConfig.cpp:438 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." msgstr "" -"Print contour perimeters from the outermost one to the innermost one instead " -"of the default inverse order." +"Imprimer les périmètres de l'extérieur vers l'intérieur au lieu de l'ordre " +"par défaut qui est inversé." #: src/libslic3r/PrintConfig.cpp:444 msgid "Extra perimeters if needed" -msgstr "Extra perimeters if needed" +msgstr "Périmètres supplémentaires si nécessaire" #: src/libslic3r/PrintConfig.cpp:446 -#, no-c-format +#, fuzzy, c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " "keeps adding perimeters, until more than 70% of the loop immediately above " "is supported." msgstr "" -"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." +"Ajouter plus de périmètres si nécessaire pour éviter des trous dans les " +"parois inclinées. Slic3r ajoute des périmètres, jusqu'à ce que plus de " +"70% de la boucle immédiatement au-dessus soit supportée." #: src/libslic3r/PrintConfig.cpp:456 msgid "" @@ -5213,9 +5180,9 @@ msgid "" "This value overrides perimeter and infill extruders, but not the support " "extruders." msgstr "" -"The extruder to use (unless more specific extruder settings are specified). " -"This value overrides perimeter and infill extruders, but not the support " -"extruders." +"L'extrudeur à utiliser (à moins que d'autres réglages d'extrudeur plus " +"spécifiques soient spécifiés). Cette valeur se substitue aux extrudeurs de " +"périmètre et de remplissage, mais pas aux extrudeurs de support." #: src/libslic3r/PrintConfig.cpp:468 msgid "" @@ -5224,14 +5191,15 @@ msgid "" "cylinder around your extruder, and it represents the maximum depth the " "extruder can peek before colliding with other printed objects." msgstr "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." +"Paramétrez ceci avec la distance verticale entre la pointe de la buse et " +"(habituellement) les tiges du chariot de l'axe X. En d'autres termes, il " +"s'agit de la hauteur du cylindre de dégagement autour de l'extrudeur, et " +"elle représente la profondeur maximum à laquelle peut descendre l'extrudeur " +"avant d'entrer en collision avec d'autres objets imprimés." #: src/libslic3r/PrintConfig.cpp:478 msgid "Radius" -msgstr "Radius" +msgstr "Rayon" #: src/libslic3r/PrintConfig.cpp:479 msgid "" @@ -5239,21 +5207,24 @@ msgid "" "not centered, choose the largest value for safety. This setting is used to " "check for collisions and to display the graphical preview in the plater." msgstr "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." +"Paramétrez ceci avec le rayon de dégagement autour de l'extrudeur. Si " +"l'extrudeur n'est pas centré, choisissez la plus grande valeur par sécurité. " +"Ce réglage est utilisé pour vérifier les collisions et afficher l'aperçu " +"graphique sur le plateau." #: src/libslic3r/PrintConfig.cpp:489 msgid "Extruder Color" -msgstr "Extruder Color" +msgstr "Couleur de l'extrudeur" #: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:550 msgid "This is only used in the Slic3r interface as a visual help." -msgstr "This is only used in the Slic3r interface as a visual help." +msgstr "" +"Ceci est uniquement utilisé dans l'interface de Slic3r comme indication " +"visuelle." #: src/libslic3r/PrintConfig.cpp:496 msgid "Extruder offset" -msgstr "Extruder offset" +msgstr "Décalage de l'extrudeur" #: src/libslic3r/PrintConfig.cpp:497 msgid "" @@ -5262,26 +5233,26 @@ msgid "" "of each extruder with respect to the first one. It expects positive " "coordinates (they will be subtracted from the XY coordinate)." msgstr "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." +"Si le firmware de votre imprimante ne gère pas le décalage de l'extrudeur, " +"c'est au G-code d'en tenir compte. Cette option vous permet de spécifier le " +"décalage de chaque extrudeur par rapport au premier. Des valeurs positives " +"sont attendues (elles seront soustraites des coordonnées XY)." #: src/libslic3r/PrintConfig.cpp:506 msgid "Extrusion axis" -msgstr "Extrusion axis" +msgstr "Axe d'extrusion" #: src/libslic3r/PrintConfig.cpp:507 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." msgstr "" -"Use this option to set the axis letter associated to your printer's extruder " -"(usually E but some printers use A)." +"Utiliser cette option pour indiquer la lettre utilisée par l'extrudeur de " +"votre imprimante (habituellement E, mais certaines imprimantes utilisent A)." #: src/libslic3r/PrintConfig.cpp:512 msgid "Extrusion multiplier" -msgstr "Extrusion multiplier" +msgstr "Multiplicateur d'extrusion" #: src/libslic3r/PrintConfig.cpp:513 msgid "" @@ -5290,14 +5261,15 @@ msgid "" "Usual values are between 0.9 and 1.1. If you think you need to change this " "more, check filament diameter and your firmware E steps." msgstr "" -"This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." +"Ce facteur modifie proportionnellement le flux d'extrusion. Vous pouvez " +"avoir besoin de modifier ceci afin d'obtenir un rendu de surface net et une " +"largeur correcte pour les murs uniques. Les valeurs habituelles vont de 0.9 " +"à 1.1. Si vous pensez devoir changer davantage cette valeur, vérifiez le " +"diamètre de votre filament et les E Steps dans le firmware." #: src/libslic3r/PrintConfig.cpp:521 msgid "Default extrusion width" -msgstr "Default extrusion width" +msgstr "Largeur d'extrusion par défaut" #: src/libslic3r/PrintConfig.cpp:523 msgid "" @@ -5307,31 +5279,33 @@ msgid "" "expressed as percentage (for example: 230%), it will be computed over layer " "height." msgstr "" -"Set this to a non-zero value to allow a manual extrusion width. If left to " -"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " -"tooltips for perimeter extrusion width, infill extrusion width etc). If " -"expressed as percentage (for example: 230%), it will be computed over layer " -"height." +"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la " +"largeur d’extrusion. Si la valeur reste sur zéro, Slic3r calcule la largeur " +"d’extrusion en se basant sur le diamètre de la buse (voir l’info-bulle " +"concernant la largeur d’extrusion du périmètre, la largeur d’extrusion du " +"remplissage, etc…). Si la valeur est exprimée en pourcentage (par exemple : " +"230%), elle sera calculée par rapport à la hauteur de couche." #: src/libslic3r/PrintConfig.cpp:527 msgid "mm or % (leave 0 for auto)" -msgstr "mm or % (leave 0 for auto)" +msgstr "mm ou % (laissez à 0 pour le mode automatique)" #: src/libslic3r/PrintConfig.cpp:532 msgid "Keep fan always on" -msgstr "Keep fan always on" +msgstr "Garder le ventilateur toujours actif" #: src/libslic3r/PrintConfig.cpp:533 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "" -"If this is enabled, fan will never be disabled and will be kept running at " -"least at its minimum speed. Useful for PLA, harmful for ABS." +"Si ceci est activé, le ventilateur ne sera jamais désactivé et sera maintenu " +"au moins à sa vitesse minimum. Utile pour le PLA, mais risqué pour l'ABS." #: src/libslic3r/PrintConfig.cpp:538 msgid "Enable fan if layer print time is below" -msgstr "Enable fan if layer print time is below" +msgstr "" +"Activer le ventilateur si le temps d'impression de la couche est inférieur à" #: src/libslic3r/PrintConfig.cpp:539 msgid "" @@ -5339,29 +5313,29 @@ msgid "" "enabled and its speed will be calculated by interpolating the minimum and " "maximum speeds." msgstr "" -"If layer print time is estimated below this number of seconds, fan will be " -"enabled and its speed will be calculated by interpolating the minimum and " -"maximum speeds." +"Si le temps d'impression estimé de la couche est inférieur à ce nombre de " +"secondes, le ventilateur sera activé et sa vitesse calculée par " +"interpolation des vitesses minimum et maximum." #: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:1637 msgid "approximate seconds" -msgstr "approximate seconds" +msgstr "secondes approximatives" #: src/libslic3r/PrintConfig.cpp:549 msgid "Color" -msgstr "Color" +msgstr "Couleur" #: src/libslic3r/PrintConfig.cpp:555 msgid "Filament notes" -msgstr "Filament notes" +msgstr "Notes du filament" #: src/libslic3r/PrintConfig.cpp:556 msgid "You can put your notes regarding the filament here." -msgstr "You can put your notes regarding the filament here." +msgstr "Vous pouvez saisir vos remarques concernant le filament ici." #: src/libslic3r/PrintConfig.cpp:564 src/libslic3r/PrintConfig.cpp:1181 msgid "Max volumetric speed" -msgstr "Max volumetric speed" +msgstr "Vitesse volumétrique maximale" #: src/libslic3r/PrintConfig.cpp:565 msgid "" @@ -5369,9 +5343,9 @@ msgid "" "volumetric speed of a print to the minimum of print and filament volumetric " "speed. Set to zero for no limit." msgstr "" -"Maximum volumetric speed allowed for this filament. Limits the maximum " -"volumetric speed of a print to the minimum of print and filament volumetric " -"speed. Set to zero for no limit." +"Vitesse volumétrique maximale autorisée pour ce filament. Limite la vitesse " +"volumétrique d'une impression au minimum des vitesses volumétriques " +"d'impression et de filament. Mettez à zéro pour enlever la limite." #: src/libslic3r/PrintConfig.cpp:568 src/libslic3r/PrintConfig.cpp:1184 msgid "mm³/s" @@ -5379,45 +5353,44 @@ msgstr "mm³/s" #: src/libslic3r/PrintConfig.cpp:574 msgid "Loading speed" -msgstr "Loading speed" +msgstr "Vitesse de chargement" #: src/libslic3r/PrintConfig.cpp:575 msgid "Speed used for loading the filament on the wipe tower. " -msgstr "Speed used for loading the filament on the wipe tower. " +msgstr "Vitesse utilisée pour charger le filament sur la tour de nettoyage. " #: src/libslic3r/PrintConfig.cpp:582 msgid "Loading speed at the start" -msgstr "Loading speed at the start" +msgstr "" #: src/libslic3r/PrintConfig.cpp:583 msgid "Speed used at the very beginning of loading phase. " -msgstr "Speed used at the very beginning of loading phase. " +msgstr "" #: src/libslic3r/PrintConfig.cpp:590 msgid "Unloading speed" -msgstr "Unloading speed" +msgstr "Vitesse de déchargement" #: src/libslic3r/PrintConfig.cpp:591 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming). " msgstr "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming). " +"Vitesse utilisée pour décharger le filament sur la tour de nettoyage " +"(n'affecte pas l'étape initiale de déchargement juste après l'expulsion). " #: src/libslic3r/PrintConfig.cpp:599 msgid "Unloading speed at the start" -msgstr "Unloading speed at the start" +msgstr "" #: src/libslic3r/PrintConfig.cpp:600 msgid "" "Speed used for unloading the tip of the filament immediately after ramming. " msgstr "" -"Speed used for unloading the tip of the filament immediately after ramming. " #: src/libslic3r/PrintConfig.cpp:607 msgid "Delay after unloading" -msgstr "Delay after unloading" +msgstr "Délai après le déchargement" #: src/libslic3r/PrintConfig.cpp:608 msgid "" @@ -5425,33 +5398,31 @@ msgid "" "toolchanges with flexible materials that may need more time to shrink to " "original dimensions. " msgstr "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions. " +"Temps d'attente nécessaire après que le filament ait été déchargé. Peut " +"aider à obtenir des changements d'outils fiables avec des matériaux flexible " +"qui ont besoin de plus de temps pour revenir à leurs dimensions originales. " #: src/libslic3r/PrintConfig.cpp:617 msgid "Number of cooling moves" -msgstr "Number of cooling moves" +msgstr "" #: src/libslic3r/PrintConfig.cpp:618 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves " msgstr "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves " #: src/libslic3r/PrintConfig.cpp:626 msgid "Speed of the first cooling move" -msgstr "Speed of the first cooling move" +msgstr "" #: src/libslic3r/PrintConfig.cpp:627 msgid "Cooling moves are gradually accelerating beginning at this speed. " -msgstr "Cooling moves are gradually accelerating beginning at this speed. " +msgstr "" #: src/libslic3r/PrintConfig.cpp:634 msgid "Minimal purge on wipe tower" -msgstr "Minimal purge on wipe tower" +msgstr "" #: src/libslic3r/PrintConfig.cpp:635 msgid "" @@ -5461,27 +5432,22 @@ msgid "" "object, Slic3r will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." msgstr "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." #: src/libslic3r/PrintConfig.cpp:639 msgid "mm³" -msgstr "mm³" +msgstr "" #: src/libslic3r/PrintConfig.cpp:645 msgid "Speed of the last cooling move" -msgstr "Speed of the last cooling move" +msgstr "" #: src/libslic3r/PrintConfig.cpp:646 msgid "Cooling moves are gradually accelerating towards this speed. " -msgstr "Cooling moves are gradually accelerating towards this speed. " +msgstr "" #: src/libslic3r/PrintConfig.cpp:653 msgid "Filament load time" -msgstr "Filament load time" +msgstr "" #: src/libslic3r/PrintConfig.cpp:654 msgid "" @@ -5489,25 +5455,22 @@ msgid "" "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." msgstr "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." #: src/libslic3r/PrintConfig.cpp:661 msgid "Ramming parameters" -msgstr "Ramming parameters" +msgstr "Paramètres de l'expulsion" #: src/libslic3r/PrintConfig.cpp:662 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters " msgstr "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " +"Cette chaine est éditée par RammingDialog et contient les paramètres " +"spécifiques d'expulsion " #: src/libslic3r/PrintConfig.cpp:668 msgid "Filament unload time" -msgstr "Filament unload time" +msgstr "" #: src/libslic3r/PrintConfig.cpp:669 msgid "" @@ -5515,9 +5478,6 @@ msgid "" "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." msgstr "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." #: src/libslic3r/PrintConfig.cpp:677 msgid "" @@ -5525,13 +5485,13 @@ msgid "" "caliper and do multiple measurements along the filament, then compute the " "average." msgstr "" -"Enter your filament diameter here. Good precision is required, so use a " -"caliper and do multiple measurements along the filament, then compute the " -"average." +"Entrez le diamètre de votre filament ici. Une bonne précision est requise, " +"utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le " +"long du filament." #: src/libslic3r/PrintConfig.cpp:684 msgid "Density" -msgstr "Density" +msgstr "Densité" #: src/libslic3r/PrintConfig.cpp:685 msgid "" @@ -5540,10 +5500,11 @@ msgid "" "the length to volume. Better is to calculate the volume directly through " "displacement." msgstr "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " -"displacement." +"Entrez ici la densité de votre filament. Ceci est uniquement pour des " +"informations statistiques. Un bon moyen d'obtenir cette valeur est de peser " +"un morceau de filament d'une longueur connue et de calculer le rapport de sa " +"longueur par son poids. Le mieux est de calculer le volume directement par " +"déplacement." #: src/libslic3r/PrintConfig.cpp:688 msgid "g/cm³" @@ -5551,35 +5512,36 @@ msgstr "g/cm³" #: src/libslic3r/PrintConfig.cpp:693 msgid "Filament type" -msgstr "Filament type" +msgstr "Type de filament" #: src/libslic3r/PrintConfig.cpp:694 msgid "The filament material type for use in custom G-codes." -msgstr "The filament material type for use in custom G-codes." +msgstr "" #: src/libslic3r/PrintConfig.cpp:710 msgid "Soluble material" -msgstr "Soluble material" +msgstr "Matériau soluble" #: src/libslic3r/PrintConfig.cpp:711 msgid "Soluble material is most likely used for a soluble support." -msgstr "Soluble material is most likely used for a soluble support." +msgstr "" +"Il est probable qu'un matériau soluble soit utilisé pour un support soluble." #: src/libslic3r/PrintConfig.cpp:717 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." msgstr "" -"Enter your filament cost per kg here. This is only for statistical " -"information." +"Entrez le coût par Kg de votre filament. Ceci est uniquement pour " +"l'information statistique." #: src/libslic3r/PrintConfig.cpp:718 msgid "money/kg" -msgstr "money/kg" +msgstr "€/kg" #: src/libslic3r/PrintConfig.cpp:727 msgid "Fill angle" -msgstr "Fill angle" +msgstr "Angle du remplissage" #: src/libslic3r/PrintConfig.cpp:729 msgid "" @@ -5587,78 +5549,80 @@ msgid "" "this. Bridges will be infilled using the best direction Slic3r can detect, " "so this setting does not affect them." msgstr "" -"Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." +"Angle de base par défaut pour l'orientation du remplissage. Des croisements " +"seront appliqués à cette valeur. Les ponts seront remplis avec la meilleure " +"direction que Slic3r peut détecter, ce réglage ne les affecteront donc pas." #: src/libslic3r/PrintConfig.cpp:741 msgid "Fill density" -msgstr "Fill density" +msgstr "Densité du remplissage" #: src/libslic3r/PrintConfig.cpp:743 msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "Density of internal infill, expressed in the range 0% - 100%." +msgstr "Densité du remplissage interne, exprimée en pourcentage de 0% à 100%." #: src/libslic3r/PrintConfig.cpp:778 msgid "Fill pattern" -msgstr "Fill pattern" +msgstr "Motif de remplissage" #: src/libslic3r/PrintConfig.cpp:780 msgid "Fill pattern for general low-density infill." -msgstr "Fill pattern for general low-density infill." +msgstr "Motif pour les remplissages de faible densité." #: src/libslic3r/PrintConfig.cpp:796 msgid "Grid" -msgstr "Grid" +msgstr "" #: src/libslic3r/PrintConfig.cpp:797 msgid "Triangles" -msgstr "Triangles" +msgstr "" #: src/libslic3r/PrintConfig.cpp:798 msgid "Stars" -msgstr "Stars" +msgstr "" #: src/libslic3r/PrintConfig.cpp:799 msgid "Cubic" -msgstr "Cubic" +msgstr "" #: src/libslic3r/PrintConfig.cpp:800 msgid "Line" -msgstr "Line" +msgstr "" #: src/libslic3r/PrintConfig.cpp:802 src/libslic3r/PrintConfig.cpp:1923 msgid "Honeycomb" -msgstr "Honeycomb" +msgstr "" #: src/libslic3r/PrintConfig.cpp:803 msgid "3D Honeycomb" -msgstr "3D Honeycomb" +msgstr "" #: src/libslic3r/PrintConfig.cpp:804 msgid "Gyroid" -msgstr "Gyroid" +msgstr "" #: src/libslic3r/PrintConfig.cpp:811 src/libslic3r/PrintConfig.cpp:820 #: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:861 msgid "First layer" -msgstr "First layer" +msgstr "Première couche" #: src/libslic3r/PrintConfig.cpp:812 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." msgstr "" -"This is the acceleration your printer will use for first layer. Set zero to " -"disable acceleration control for first layer." +"L'accélération que l'imprimante utilisera pour la première couche. Régler " +"sur zéro afin de désactiver le contrôle de l'accélération pour la première " +"couche." #: src/libslic3r/PrintConfig.cpp:821 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." msgstr "" -"Heated build plate temperature for the first layer. Set this to zero to " -"disable bed temperature control commands in the output." +"Température du plateau chauffant pour la première couche. Mettez ceci à zéro " +"pour désactiver les commandes de contrôle de température du plateau dans la " +"sortie." #: src/libslic3r/PrintConfig.cpp:830 msgid "" @@ -5667,14 +5631,16 @@ msgid "" "expressed as percentage (for example 120%) it will be computed over first " "layer height. If set to zero, it will use the default extrusion width." msgstr "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." +"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la " +"largeur d’extrusion pour la première couche. Vous pouvez procéder ainsi pour " +"obtenir des extrudats plus épais afin d’avoir une meilleure adhérence. Si la " +"valeur est exprimée en pourcentage (par exemple : 120%), elle sera calculée " +"par rapport à la hauteur de la première couche. Si elle est réglée sur zéro, " +"elle utilisera la largeur d’extrusion par défaut." #: src/libslic3r/PrintConfig.cpp:840 msgid "First layer height" -msgstr "First layer height" +msgstr "Hauteur de la première couche" #: src/libslic3r/PrintConfig.cpp:842 msgid "" @@ -5683,19 +5649,20 @@ msgid "" "plates. This can be expressed as an absolute value or as a percentage (for " "example: 150%) over the default layer height." msgstr "" -"When printing with very low layer heights, you might still want to print a " -"thicker bottom layer to improve adhesion and tolerance for non perfect build " -"plates. This can be expressed as an absolute value or as a percentage (for " -"example: 150%) over the default layer height." +"Lors d'une impression avec de très faibles épaisseurs de couche, vous pouvez " +"choisir d'imprimer une première couche plus épaisse pour améliorer " +"l'adhérence et la tolérance aux plateaux imparfaits. Ce réglage peut être " +"exprimé comme une valeur absolue ou un pourcentage (par exemple 150%) par " +"rapport à l'épaisseur de couche par défaut." #: src/libslic3r/PrintConfig.cpp:846 src/libslic3r/PrintConfig.cpp:991 #: src/libslic3r/PrintConfig.cpp:1796 msgid "mm or %" -msgstr "mm or %" +msgstr "mm ou %" #: src/libslic3r/PrintConfig.cpp:851 msgid "First layer speed" -msgstr "First layer speed" +msgstr "Vitesse de la première couche" #: src/libslic3r/PrintConfig.cpp:852 msgid "" @@ -5703,9 +5670,10 @@ msgid "" "the print moves of the first layer, regardless of their type. If expressed " "as a percentage (for example: 40%) it will scale the default speeds." msgstr "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." +"Si exprimée avec une valeur absolue en mm/s, cette vitesse sera appliquée à " +"tous les déplacements d'impression de la première couche, quel que soit leur " +"type. Si exprimée comme un pourcentage (par exemple 40%), cela modulera la " +"vitesse par défaut." #: src/libslic3r/PrintConfig.cpp:862 msgid "" @@ -5713,9 +5681,10 @@ msgid "" "manually during print, set this to zero to disable temperature control " "commands in the output file." msgstr "" -"Extruder temperature for first layer. If you want to control temperature " -"manually during print, set this to zero to disable temperature control " -"commands in the output file." +"Température de l’extrudeur pour la première couche. Si vous voulez contrôler " +"manuellement la température au cours de l’impression, mettez à zéro pour " +"désactiver les commandes de contrôle de température dans le fichier de " +"sortie." #: src/libslic3r/PrintConfig.cpp:871 msgid "" @@ -5723,13 +5692,14 @@ msgid "" "low to avoid too much shaking and resonance issues. Set zero to disable gaps " "filling." msgstr "" -"Speed for filling small gaps using short zigzag moves. Keep this reasonably " -"low to avoid too much shaking and resonance issues. Set zero to disable gaps " -"filling." +"Vitesse pour combler de petits interstices avec de courts mouvements en " +"zigzag. Gardez un réglage relativement lent afin d'éviter les problèmes de " +"vibration et de résonance. Réglez sur zéro pour désactiver le remplissage " +"d'interstices." #: src/libslic3r/PrintConfig.cpp:879 msgid "Verbose G-code" -msgstr "Verbose G-code" +msgstr "G-code commenté" #: src/libslic3r/PrintConfig.cpp:880 msgid "" @@ -5737,13 +5707,14 @@ msgid "" "descriptive text. If you print from SD card, the additional weight of the " "file could make your firmware slow down." msgstr "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." +"Activez ceci pour obtenir un fichier G-code commenté, avec chaque ligne " +"expliquée par un texte descriptif. Si vous imprimez depuis une carte SD, le " +"poids supplémentaire du fichier pourrait ralentir le firmware de votre " +"imprimante." #: src/libslic3r/PrintConfig.cpp:887 msgid "G-code flavor" -msgstr "G-code flavor" +msgstr "Version du G-code" #: src/libslic3r/PrintConfig.cpp:888 msgid "" @@ -5752,18 +5723,18 @@ msgid "" "output. The \"No extrusion\" flavor prevents Slic3r from exporting any " "extrusion value at all." msgstr "" -"Some G/M-code commands, including temperature control and others, are not " -"universal. Set this option to your printer's firmware to get a compatible " -"output. The \"No extrusion\" flavor prevents Slic3r from exporting any " -"extrusion value at all." +"Certaines commandes G/M-code, dont le contrôle de température et autres, ne " +"sont pas universelles. Paramétrez cette option avec le firmware de votre " +"imprimante pour obtenir une sortie compatible. La version \"sans extrusion\" " +"empêche Slic3r d'exporter toute valeur d'extrusion." #: src/libslic3r/PrintConfig.cpp:911 msgid "No extrusion" -msgstr "No extrusion" +msgstr "" #: src/libslic3r/PrintConfig.cpp:924 msgid "High extruder current on filament swap" -msgstr "High extruder current on filament swap" +msgstr "" #: src/libslic3r/PrintConfig.cpp:925 msgid "" @@ -5771,41 +5742,40 @@ msgid "" "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." #: src/libslic3r/PrintConfig.cpp:933 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." msgstr "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." +"Il s'agit de l'accélération que votre imprimante utilisera pour le " +"remplissage. Régler sur zéro afin de désactiver le contrôle de " +"l'accélération pour le remplissage." #: src/libslic3r/PrintConfig.cpp:941 msgid "Combine infill every" -msgstr "Combine infill every" +msgstr "Combiner le remplissage toutes les" #: src/libslic3r/PrintConfig.cpp:943 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "" -"This feature allows to combine infill and speed up your print by extruding " -"thicker infill layers while preserving thin perimeters, thus accuracy." +"Cette fonction permet de combiner le remplissage afin d'accélérer " +"l'impression en extrudant des couches de remplissage plus épaisses tout en " +"conservant des périmètres fins, avec plus de précision." #: src/libslic3r/PrintConfig.cpp:946 msgid "Combine infill every n layers" -msgstr "Combine infill every n layers" +msgstr "Combiner le remplissage toutes les n couches" #: src/libslic3r/PrintConfig.cpp:952 msgid "Infill extruder" -msgstr "Infill extruder" +msgstr "Extrudeur pour le remplissage" #: src/libslic3r/PrintConfig.cpp:954 msgid "The extruder to use when printing infill." -msgstr "The extruder to use when printing infill." +msgstr "L'extrudeur à utiliser pour imprimer le remplissage." #: src/libslic3r/PrintConfig.cpp:962 msgid "" @@ -5815,27 +5785,29 @@ msgid "" "up the infill and make your parts stronger. If expressed as percentage (for " "example 90%) it will be computed over layer height." msgstr "" -"Set this to a non-zero value to set a manual extrusion width for infill. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. You may want to use fatter extrudates to speed " -"up the infill and make your parts stronger. If expressed as percentage (for " -"example 90%) it will be computed over layer height." +"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la " +"largeur d’extrusion pour le remplissage. Si la valeur reste sur zéro, la " +"largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur " +"1.125 x diamètre de la buse sera utilisée. Vous voudrez peut-être utiliser " +"des extrudats plus épais pour accélérer le remplissage et rendre vos pièces " +"plus solides. Si la valeur est exprimée en pourcentage (par exemple : 90%), " +"elle sera calculée par rapport à la hauteur de couche." #: src/libslic3r/PrintConfig.cpp:971 msgid "Infill before perimeters" -msgstr "Infill before perimeters" +msgstr "Remplissage avant les périmètres" #: src/libslic3r/PrintConfig.cpp:972 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." msgstr "" -"This option will switch the print order of perimeters and infill, making the " -"latter first." +"Cette option inverse l'ordre d'impression des périmètres et du remplissage, " +"ce dernier étant alors imprimé en premier." #: src/libslic3r/PrintConfig.cpp:977 msgid "Only infill where needed" -msgstr "Only infill where needed" +msgstr "Remplissage seulement où cela est nécessaire" #: src/libslic3r/PrintConfig.cpp:979 msgid "" @@ -5843,13 +5815,14 @@ msgid "" "ceilings (it will act as internal support material). If enabled, slows down " "the G-code generation due to the multiple checks involved." msgstr "" -"This option will limit infill to the areas actually needed for supporting " -"ceilings (it will act as internal support material). If enabled, slows down " -"the G-code generation due to the multiple checks involved." +"Cette option limitera le remplissage aux zones nécessaires pour soutenir les " +"couches supérieures (cela agira comme un support interne). Si activé, la " +"génération du G-Code prendra plus de temps à cause des calculs " +"supplémentaires requis." #: src/libslic3r/PrintConfig.cpp:986 msgid "Infill/perimeters overlap" -msgstr "Infill/perimeters overlap" +msgstr "Chevauchement remplissage/périmètres" #: src/libslic3r/PrintConfig.cpp:988 msgid "" @@ -5858,26 +5831,29 @@ msgid "" "cause gaps. If expressed as percentage (example: 15%) it is calculated over " "perimeter extrusion width." msgstr "" -"This setting applies an additional overlap between infill and perimeters for " -"better bonding. Theoretically this shouldn't be needed, but backlash might " -"cause gaps. If expressed as percentage (example: 15%) it is calculated over " -"perimeter extrusion width." +"Cette option applique un chevauchement supplémentaire entre les périmètres " +"et le remplissage pour une meilleur fusion. En théorie, cela ne devrait pas " +"être nécessaire, mais le jeu mécanique peut générer des espacements. Si " +"exprimé en pourcentage (par exemple 15%), la valeur sera calculée en " +"fonction de la largeur d'extrusion du périmètre." #: src/libslic3r/PrintConfig.cpp:999 msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "Speed for printing the internal fill. Set to zero for auto." +msgstr "" +"Vitesse pour imprimer le remplissage interne. Réglez sur zéro pour un " +"ajustement automatique." #: src/libslic3r/PrintConfig.cpp:1007 msgid "Inherits profile" -msgstr "Inherits profile" +msgstr "Hérite du profil" #: src/libslic3r/PrintConfig.cpp:1008 msgid "Name of the profile, from which this profile inherits." -msgstr "Name of the profile, from which this profile inherits." +msgstr "Nom du profil, duquel hérite ce profil." #: src/libslic3r/PrintConfig.cpp:1021 msgid "Interface shells" -msgstr "Interface shells" +msgstr "Coques d'interface" #: src/libslic3r/PrintConfig.cpp:1022 msgid "" @@ -5885,9 +5861,9 @@ msgid "" "Useful for multi-extruder prints with translucent materials or manual " "soluble support material." msgstr "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material." +"Force la génération de coques solides entre des volumes/matériaux adjacents. " +"Utile pour des impressions multi-extrudeurs avec des matériaux translucides " +"ou avec un support manuel soluble." #: src/libslic3r/PrintConfig.cpp:1031 msgid "" @@ -5896,14 +5872,14 @@ msgid "" "use placeholder variables for all Slic3r settings as well as [layer_num] and " "[layer_z]." msgstr "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " -"[layer_z]." +"Ce code personnalisé est inséré à chaque changement de couche, juste après " +"le mouvement Z et avant le déplacement de l'extrudeur au point de départ de " +"la couche suivante. Notez que vous pouvez utiliser des variables génériques " +"pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]." #: src/libslic3r/PrintConfig.cpp:1042 msgid "Supports remaining times" -msgstr "Supports remaining times" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1043 msgid "" @@ -5912,83 +5888,80 @@ msgid "" "As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " "firmware supports M73 Qxx Sxx for the silent mode." msgstr "" -"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " -"intervals into the G-code to let the firmware show accurate remaining time. " -"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " -"firmware supports M73 Qxx Sxx for the silent mode." #: src/libslic3r/PrintConfig.cpp:1051 msgid "Supports silent mode" -msgstr "Supports silent mode" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1052 msgid "Set silent mode for the G-code flavor" -msgstr "Set silent mode for the G-code flavor" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1075 msgid "Maximum feedrate %1%" -msgstr "Maximum feedrate %1%" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1077 msgid "Maximum feedrate of the %1% axis" -msgstr "Maximum feedrate of the %1% axis" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1085 msgid "Maximum acceleration %1%" -msgstr "Maximum acceleration %1%" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1087 msgid "Maximum acceleration of the %1% axis" -msgstr "Maximum acceleration of the %1% axis" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1095 msgid "Maximum jerk %1%" -msgstr "Maximum jerk %1%" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1097 msgid "Maximum jerk of the %1% axis" -msgstr "Maximum jerk of the %1% axis" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1110 msgid "Minimum feedrate when extruding" -msgstr "Minimum feedrate when extruding" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1121 msgid "Minimum travel feedrate" -msgstr "Minimum travel feedrate" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1132 msgid "Maximum acceleration when extruding" -msgstr "Maximum acceleration when extruding" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1141 src/libslic3r/PrintConfig.cpp:1143 msgid "Maximum acceleration when retracting" -msgstr "Maximum acceleration when retracting" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1151 src/libslic3r/PrintConfig.cpp:1160 msgid "Max" -msgstr "Max" +msgstr "Maximum" #: src/libslic3r/PrintConfig.cpp:1152 msgid "This setting represents the maximum speed of your fan." -msgstr "This setting represents the maximum speed of your fan." +msgstr "Cette option représente la vitesse maximum du ventilateur." #: src/libslic3r/PrintConfig.cpp:1161 -#, no-c-format +#, fuzzy, c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " "the variable layer height and support layer height. Maximum recommended " "layer height is 75% of the extrusion width to achieve reasonable inter-layer " "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " -"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." +"Ceci est la hauteur de couche imprimable maximum pour cet extrudeur, " +"utilisée pour plafonner la hauteur de couche variable et la hauteur de " +"couche des supports. La hauteur de couche maximum recommandée est 75% de la " +"largeur d'extrusion afin d'obtenir une adhésion inter-couches correcte. Si " +"réglée sur 0, la hauteur de couche est limitée à 75% du diamètre de la buse." #: src/libslic3r/PrintConfig.cpp:1171 msgid "Max print speed" -msgstr "Max print speed" +msgstr "Vitesse d'impression maximale" #: src/libslic3r/PrintConfig.cpp:1172 msgid "" @@ -5996,21 +5969,22 @@ msgid "" "speed in order to keep constant extruder pressure. This experimental setting " "is used to set the highest print speed you want to allow." msgstr "" -"When setting other speed settings to 0 Slic3r will autocalculate the optimal " -"speed in order to keep constant extruder pressure. This experimental setting " -"is used to set the highest print speed you want to allow." +"Lorsque vous réglez les autres vitesses à 0, Slic3r calculera " +"automatiquement la vitesse optimale de façon à garder une pression constante " +"dans l'extrudeur. Cette fonction expérimentale est utilisée pour régler la " +"plus haute vitesse que vous souhaitez autoriser." #: src/libslic3r/PrintConfig.cpp:1182 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "" -"This experimental setting is used to set the maximum volumetric speed your " -"extruder supports." +"Ce réglage expérimental est utilisé pour paramétrer la vitesse volumétrique " +"maximum tolérée par votre extrudeur." #: src/libslic3r/PrintConfig.cpp:1191 msgid "Max volumetric slope positive" -msgstr "Max volumetric slope positive" +msgstr "Pente volumétrique positive maximum" #: src/libslic3r/PrintConfig.cpp:1192 src/libslic3r/PrintConfig.cpp:1203 msgid "" @@ -6019,10 +5993,11 @@ msgid "" "of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "" -"This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." +"Ce réglage expérimental sert à limiter la vitesse de changement dans le flux " +"d'extrusion. Une valeur de 1.8 mm³/s² garantit qu'un changement de flux " +"d'extrusion de 1.8 mm³/s (largeur d'extrusion 0.45mm, hauteur d'extrusion " +"0.2mm, alimentation 20 mm/s) à 5.4 mm³/s (alimentation 60 mm/s) prendra au " +"moins 2 secondes." #: src/libslic3r/PrintConfig.cpp:1196 src/libslic3r/PrintConfig.cpp:1207 msgid "mm³/s²" @@ -6030,15 +6005,17 @@ msgstr "mm³/s²" #: src/libslic3r/PrintConfig.cpp:1202 msgid "Max volumetric slope negative" -msgstr "Max volumetric slope negative" +msgstr "Pente volumétrique négative maximum" #: src/libslic3r/PrintConfig.cpp:1214 src/libslic3r/PrintConfig.cpp:1223 msgid "Min" -msgstr "Min" +msgstr "Minimum" #: src/libslic3r/PrintConfig.cpp:1215 msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "This setting represents the minimum PWM your fan needs to work." +msgstr "" +"Cette option représente le PWM minimum dont votre ventilateur a besoin pour " +"tourner." #: src/libslic3r/PrintConfig.cpp:1224 msgid "" @@ -6046,21 +6023,21 @@ msgid "" "resolution for variable layer height. Typical values are between 0.05 mm and " "0.1 mm." msgstr "" -"This is the lowest printable layer height for this extruder and limits the " -"resolution for variable layer height. Typical values are between 0.05 mm and " -"0.1 mm." +"Cette valeur est la hauteur de couche imprimable minimum pour cet extrudeur " +"et elle limite la résolution pour la hauteur de couche variable. Les valeurs " +"type se situent entre 0.05 mm et 0.1 mm." #: src/libslic3r/PrintConfig.cpp:1232 msgid "Min print speed" -msgstr "Min print speed" +msgstr "Vitesse d'impression minimale" #: src/libslic3r/PrintConfig.cpp:1233 msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r will not scale speed down below this speed." +msgstr "Slic3r ne descendra pas en-dessous de cette vitesse." #: src/libslic3r/PrintConfig.cpp:1240 msgid "Minimal filament extrusion length" -msgstr "Minimal filament extrusion length" +msgstr "Longueur minimale d'extrusion de filament" #: src/libslic3r/PrintConfig.cpp:1241 msgid "" @@ -6068,55 +6045,55 @@ msgid "" "specified amount of filament on the bottom layer. For multi-extruder " "machines, this minimum applies to each extruder." msgstr "" -"Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." +"Nombre minimum de contours à générer afin de consommer la quantité de " +"filament spécifiée sur la couche inférieure. Pour les machines multi-" +"extrudeurs, ce minimum s'applique à chaque extrudeur." #: src/libslic3r/PrintConfig.cpp:1250 msgid "Configuration notes" -msgstr "Configuration notes" +msgstr "Notes de configuration" #: src/libslic3r/PrintConfig.cpp:1251 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." +"Vous pouvez inscrire ici vos commentaires personnels. Ce texte sera ajouté " +"au commentaire en entête du G-Code." #: src/libslic3r/PrintConfig.cpp:1260 msgid "Nozzle diameter" -msgstr "Nozzle diameter" +msgstr "Diamètre de la buse" #: src/libslic3r/PrintConfig.cpp:1261 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "" -"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" +"Il s'agit du diamètre de la buse de votre extrudeur (par exemple: 0.5, 0.35, " +"etc.)" #: src/libslic3r/PrintConfig.cpp:1266 msgid "Host Type" -msgstr "Host Type" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1267 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." #: src/libslic3r/PrintConfig.cpp:1278 msgid "Only retract when crossing perimeters" -msgstr "Only retract when crossing perimeters" +msgstr "Rétracter uniquement lors du franchissement de périmètres" #: src/libslic3r/PrintConfig.cpp:1279 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." msgstr "" -"Disables retraction when the travel path does not exceed the upper layer's " -"perimeters (and thus any ooze will be probably invisible)." +"Désactiver la rétraction lorsque le chemin de déplacement ne franchit pas " +"les périmètres des couches supérieures (et donc les coulures seront " +"probablement invisibles)." #: src/libslic3r/PrintConfig.cpp:1286 msgid "" @@ -6124,13 +6101,14 @@ msgid "" "oozing. It will enable a tall skirt automatically and move extruders outside " "such skirt when changing temperatures." msgstr "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing. It will enable a tall skirt automatically and move extruders outside " -"such skirt when changing temperatures." +"Cette option abaissera la température des extrudeurs inutilisés pour " +"prévenir le oozing (suintement). Cela active automatiquement la génération " +"d'une grande jupe et le déplacement des extrudeurs hors de cette jupe lors " +"des changements de température." #: src/libslic3r/PrintConfig.cpp:1293 msgid "Output filename format" -msgstr "Output filename format" +msgstr "Format du nom de fichier de sortie" #: src/libslic3r/PrintConfig.cpp:1294 msgid "" @@ -6139,38 +6117,40 @@ msgid "" "[year], [month], [day], [hour], [minute], [second], [version], " "[input_filename], [input_filename_base]." msgstr "" -"You can use all configuration options as variables inside this template. For " -"example: [layer_height], [fill_density] etc. You can also use [timestamp], " -"[year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]." +"Vous pouvez utiliser toutes les options de configuration comme variables " +"dans ce modèle. Par exemple : [layer_height], [fill_density] etc. Vous " +"pouvez aussi utiliser [timestamp], [year], [month], [day], [hour], [minute], " +"[second], [version], [input_filename], [input_filename_base]." #: src/libslic3r/PrintConfig.cpp:1303 msgid "Detect bridging perimeters" -msgstr "Detect bridging perimeters" +msgstr "Détecter les périmètres faisant des ponts" #: src/libslic3r/PrintConfig.cpp:1305 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." msgstr "" -"Experimental option to adjust flow for overhangs (bridge flow will be used), " -"to apply bridge speed to them and enable fan." +"Option expérimentale qui ajuste le flux pour les surplombs (le flux pour les " +"ponts sera utilisé), leur applique la vitesse pour les ponts et active le " +"ventilateur." #: src/libslic3r/PrintConfig.cpp:1311 msgid "Filament parking position" -msgstr "Filament parking position" +msgstr "Position d'attente du filament" #: src/libslic3r/PrintConfig.cpp:1312 msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware. " msgstr "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware. " +"Distance entre la pointe de l'extrudeur et la position où le filament est " +"positionné en attente lorsqu'il est déchargé. Cela doit correspondre à la " +"valeur dans le firmware de l'imprimante. " #: src/libslic3r/PrintConfig.cpp:1320 msgid "Extra loading distance" -msgstr "Extra loading distance" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1321 msgid "" @@ -6179,15 +6159,11 @@ msgid "" "positive, it is loaded further, if negative, the loading move is shorter " "than unloading. " msgstr "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading. " #: src/libslic3r/PrintConfig.cpp:1329 src/libslic3r/PrintConfig.cpp:1347 #: src/libslic3r/PrintConfig.cpp:1359 src/libslic3r/PrintConfig.cpp:1369 msgid "Perimeters" -msgstr "Perimeters" +msgstr "Périmètres" #: src/libslic3r/PrintConfig.cpp:1330 msgid "" @@ -6195,19 +6171,21 @@ msgid "" "like 9000 usually gives good results if your hardware is up to the job. Set " "zero to disable acceleration control for perimeters." msgstr "" -"This is the acceleration your printer will use for perimeters. A high value " -"like 9000 usually gives good results if your hardware is up to the job. Set " -"zero to disable acceleration control for perimeters." +"L'accélération que votre imprimante utilisera pour les périmètres. Une " +"valeur élevée comme 9000 donne généralement de bons résultats si votre " +"matériel le permet. Régler sur zéro afin de désactiver le contrôle de " +"l'accélération pour les périmètres." #: src/libslic3r/PrintConfig.cpp:1338 msgid "Perimeter extruder" -msgstr "Perimeter extruder" +msgstr "Extrudeur pour les périmètres" #: src/libslic3r/PrintConfig.cpp:1340 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" -"The extruder to use when printing perimeters and brim. First extruder is 1." +"L'extrudeur à utiliser pour imprimer les périmètres et la bordure. Le " +"premier extrudeur a le numéro 1." #: src/libslic3r/PrintConfig.cpp:1349 msgid "" @@ -6217,17 +6195,20 @@ msgid "" "nozzle diameter will be used. If expressed as percentage (for example 200%) " "it will be computed over layer height." msgstr "" -"Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." +"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement une " +"largeur d’extrusion pour les périmètres. Vous voudrez peut-être utiliser des " +"extrudats plus fin pour obtenir des surfaces plus nettes. Si la valeur reste " +"sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon " +"la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est " +"exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport " +"à la hauteur de couche." #: src/libslic3r/PrintConfig.cpp:1361 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" -"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." +"Vitesse pour les périmètres (contours, parois verticales). Réglez sur zéro " +"pour un ajustement automatique." #: src/libslic3r/PrintConfig.cpp:1371 msgid "" @@ -6236,10 +6217,10 @@ msgid "" "surfaces which benefit from a higher number of perimeters if the Extra " "Perimeters option is enabled." msgstr "" -"This option sets the number of perimeters to generate for each layer. Note " -"that Slic3r may increase this number automatically when it detects sloping " -"surfaces which benefit from a higher number of perimeters if the Extra " -"Perimeters option is enabled." +"Cette option définit le nombre de périmètres à générer pour chaque couche. " +"Notez que Slic3r peut augmenter cette valeur automatiquement si il détecte " +"une surface inclinée qui nécessite un plus grand nombre de périmètres, si " +"l'option \"Périmètres supplémentaires\" est sélectionnée." #: src/libslic3r/PrintConfig.cpp:1375 msgid "(minimum)" @@ -6253,63 +6234,63 @@ msgid "" "argument, and they can access the Slic3r config settings by reading " "environment variables." msgstr "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." +"Si vous voulez traiter le G-code de sortie à l'aide de scripts " +"personnalisés, listez simplement leurs chemins absolus ici. Séparez les " +"divers scripts avec un point virgule. Les scripts vont recevoir en premier " +"argument le chemin absolu du fichier G-code, et ils peuvent accéder aux " +"réglages de configuration de Slic3r en lisant des variables d'environnement." #: src/libslic3r/PrintConfig.cpp:1395 msgid "Printer type" -msgstr "Printer type" +msgstr "Type d'imprimante" #: src/libslic3r/PrintConfig.cpp:1396 msgid "Type of the printer." -msgstr "Type of the printer." +msgstr "Type d'imprimante." #: src/libslic3r/PrintConfig.cpp:1401 msgid "Printer notes" -msgstr "Printer notes" +msgstr "Notes de l'imprimante" #: src/libslic3r/PrintConfig.cpp:1402 msgid "You can put your notes regarding the printer here." -msgstr "You can put your notes regarding the printer here." +msgstr "Vous pouvez saisir ici vos observations concernant l'imprimante." #: src/libslic3r/PrintConfig.cpp:1410 msgid "Printer vendor" -msgstr "Printer vendor" +msgstr "Fabriquant de l'imprimante" #: src/libslic3r/PrintConfig.cpp:1411 msgid "Name of the printer vendor." -msgstr "Name of the printer vendor." +msgstr "Nom du fabriquant de l'imprimante." #: src/libslic3r/PrintConfig.cpp:1416 msgid "Printer variant" -msgstr "Printer variant" +msgstr "Variante d'imprimante" #: src/libslic3r/PrintConfig.cpp:1417 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." msgstr "" -"Name of the printer variant. For example, the printer variants may be " -"differentiated by a nozzle diameter." +"Nom de la variante d'imprimante. Par exemple, la variante d'imprimante peut " +"être différenciée par un diamètre de buse." #: src/libslic3r/PrintConfig.cpp:1430 msgid "Raft layers" -msgstr "Raft layers" +msgstr "Couches du radeau" #: src/libslic3r/PrintConfig.cpp:1432 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." msgstr "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." +"L'objet sera surélevé de ce nombre de couches, et du support sera généré en " +"dessous." #: src/libslic3r/PrintConfig.cpp:1440 msgid "Resolution" -msgstr "Resolution" +msgstr "Résolution" #: src/libslic3r/PrintConfig.cpp:1441 msgid "" @@ -6318,48 +6299,50 @@ msgid "" "carry more detail than printers can render. Set to zero to disable any " "simplification and use full resolution from input." msgstr "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." +"Résolution minimale pour les détails, utilisée pour simplifier le fichier " +"d'entrée afin d'accélérer le découpage et de réduire l'utilisation de la " +"mémoire. Les modèles haute-résolution possèdent souvent plus de détails que " +"ce que les imprimantes peuvent produire. Mettez à zéro pour désactiver toute " +"simplification et utiliser la résolution complète de l'entrée." #: src/libslic3r/PrintConfig.cpp:1451 msgid "Minimum travel after retraction" -msgstr "Minimum travel after retraction" +msgstr "Trajet minimal après une rétraction" #: src/libslic3r/PrintConfig.cpp:1452 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" -"Retraction is not triggered when travel moves are shorter than this length." +"La rétraction n'est pas déclenchée lorsque les déplacements sont plus courts " +"que cette distance." #: src/libslic3r/PrintConfig.cpp:1458 msgid "Retract amount before wipe" -msgstr "Retract amount before wipe" +msgstr "Quantité de rétractation avant essuyage" #: src/libslic3r/PrintConfig.cpp:1459 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." msgstr "" -"With bowden extruders, it may be wise to do some amount of quick retract " -"before doing the wipe movement." +"Avec les extrudeurs bowden, il est conseillé d'effectuer une rétractation " +"rapide avant de réaliser le mouvement de nettoyage." #: src/libslic3r/PrintConfig.cpp:1466 msgid "Retract on layer change" -msgstr "Retract on layer change" +msgstr "Rétracter lors des changements de couche" #: src/libslic3r/PrintConfig.cpp:1467 msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "This flag enforces a retraction whenever a Z move is done." +msgstr "Cette option active la rétractation lors d'un déplacement sur l'axe Z." #: src/libslic3r/PrintConfig.cpp:1472 src/libslic3r/PrintConfig.cpp:1480 msgid "Length" -msgstr "Length" +msgstr "Longueur" #: src/libslic3r/PrintConfig.cpp:1473 msgid "Retraction Length" -msgstr "Retraction Length" +msgstr "Longueur de Rétractation" #: src/libslic3r/PrintConfig.cpp:1474 msgid "" @@ -6367,17 +6350,17 @@ msgid "" "amount (the length is measured on raw filament, before it enters the " "extruder)." msgstr "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." +"Lorsque la rétractation est déclenchée, le filament est tiré en arrière de " +"la longueur indiquée (la longueur est mesurée sur le filament brut, avant " +"qu'il entre dans l'extrudeur)." #: src/libslic3r/PrintConfig.cpp:1476 src/libslic3r/PrintConfig.cpp:1485 msgid "mm (zero to disable)" -msgstr "mm (zero to disable)" +msgstr "mm (zéro pour désactiver)" #: src/libslic3r/PrintConfig.cpp:1481 msgid "Retraction Length (Toolchange)" -msgstr "Retraction Length (Toolchange)" +msgstr "Longueur de Rétractation (changement d'outil)" #: src/libslic3r/PrintConfig.cpp:1482 msgid "" @@ -6385,13 +6368,13 @@ msgid "" "by the specified amount (the length is measured on raw filament, before it " "enters the extruder)." msgstr "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." +"Lorsque la rétractation est déclenchée avant un changement d'outil, le " +"filament est retiré de la longueur indiquée (la longueur est mesurée sur le " +"filament brut, avant qu'il entre dans l'extrudeur)." #: src/libslic3r/PrintConfig.cpp:1490 msgid "Lift Z" -msgstr "Lift Z" +msgstr "Levage de l'axe Z" #: src/libslic3r/PrintConfig.cpp:1491 msgid "" @@ -6399,17 +6382,17 @@ msgid "" "retraction is triggered. When using multiple extruders, only the setting for " "the first extruder will be considered." msgstr "" -"If you set this to a positive value, Z is quickly raised every time a " -"retraction is triggered. When using multiple extruders, only the setting for " -"the first extruder will be considered." +"Si vous indiquez une valeur positive, l'axe Z est rapidement élevé à chaque " +"rétraction. Lorsque vous utilisez plusieurs extrudeurs, seul le réglage du " +"premier extrudeur sera pris en compte." #: src/libslic3r/PrintConfig.cpp:1498 msgid "Above Z" -msgstr "Above Z" +msgstr "Au-delà de Z" #: src/libslic3r/PrintConfig.cpp:1499 msgid "Only lift Z above" -msgstr "Only lift Z above" +msgstr "Lever Z seulement au-dessus de" #: src/libslic3r/PrintConfig.cpp:1500 msgid "" @@ -6417,17 +6400,17 @@ msgid "" "specified absolute Z. You can tune this setting for skipping lift on the " "first layers." msgstr "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." +"Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché " +"qu'à partir de la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier " +"ce réglage pour éviter le levage de l'axe Z sur les premières couches." #: src/libslic3r/PrintConfig.cpp:1507 msgid "Below Z" -msgstr "Below Z" +msgstr "En-deçà de Z" #: src/libslic3r/PrintConfig.cpp:1508 msgid "Only lift Z below" -msgstr "Only lift Z below" +msgstr "Lever Z seulement en-dessous de" #: src/libslic3r/PrintConfig.cpp:1509 msgid "" @@ -6435,41 +6418,43 @@ msgid "" "specified absolute Z. You can tune this setting for limiting lift to the " "first layers." msgstr "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." +"Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché " +"que jusqu'à la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce " +"réglage pour limiter le levage de l'axe Z aux premières couches." #: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1525 msgid "Extra length on restart" -msgstr "Extra length on restart" +msgstr "Longueur supplémentaire à la reprise" #: src/libslic3r/PrintConfig.cpp:1518 msgid "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." msgstr "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." +"Lorsque la rétractation est compensée après un déplacement, l'extruder " +"exprimera cette quantité de filament en plus. Ce réglage est rarement " +"nécessaire." #: src/libslic3r/PrintConfig.cpp:1526 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." +"Lorsque la rétractation est compensée après un changement d'outil, " +"l'extrudeur exprimera cette quantité de filament en plus." #: src/libslic3r/PrintConfig.cpp:1533 src/libslic3r/PrintConfig.cpp:1534 msgid "Retraction Speed" -msgstr "Retraction Speed" +msgstr "Vitesse de Rétractation" #: src/libslic3r/PrintConfig.cpp:1535 msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "The speed for retractions (it only applies to the extruder motor)." +msgstr "" +"La vitesse des rétractations (ne s'applique qu'au moteur de l'extrudeur)." #: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1542 msgid "Deretraction Speed" -msgstr "Deretraction Speed" +msgstr "Vitesse de Réinsertion" #: src/libslic3r/PrintConfig.cpp:1543 msgid "" @@ -6477,29 +6462,29 @@ msgid "" "applies to the extruder motor). If left to zero, the retraction speed is " "used." msgstr "" -"The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." +"La vitesse de chargement d'un filament dans l'extrudeur après une " +"rétractation (ne s'applique qu'au moteur de l'extrudeur). Si cette valeur " +"reste sur zéro, la vitesse de rétraction est utilisée." #: src/libslic3r/PrintConfig.cpp:1550 msgid "Seam position" -msgstr "Seam position" +msgstr "Position de la jointure" #: src/libslic3r/PrintConfig.cpp:1552 msgid "Position of perimeters starting points." -msgstr "Position of perimeters starting points." +msgstr "Position des points de départ des périmètres." #: src/libslic3r/PrintConfig.cpp:1558 msgid "Random" -msgstr "Random" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1559 msgid "Nearest" -msgstr "Nearest" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1560 msgid "Aligned" -msgstr "Aligned" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1568 msgid "Direction" @@ -6507,67 +6492,67 @@ msgstr "Direction" #: src/libslic3r/PrintConfig.cpp:1570 msgid "Preferred direction of the seam" -msgstr "Preferred direction of the seam" +msgstr "Direction préférée de la jointure" #: src/libslic3r/PrintConfig.cpp:1571 msgid "Seam preferred direction" -msgstr "Seam preferred direction" +msgstr "Direction préférée de la jointure" #: src/libslic3r/PrintConfig.cpp:1578 msgid "Jitter" -msgstr "Jitter" +msgstr "Gigue" #: src/libslic3r/PrintConfig.cpp:1580 msgid "Seam preferred direction jitter" -msgstr "Seam preferred direction jitter" +msgstr "Gigue de la direction préférée de la jointure" #: src/libslic3r/PrintConfig.cpp:1581 msgid "Preferred direction of the seam - jitter" -msgstr "Preferred direction of the seam - jitter" +msgstr "Direction préférée de la jointure - gigue" #: src/libslic3r/PrintConfig.cpp:1591 msgid "USB/serial port for printer connection." -msgstr "USB/serial port for printer connection." +msgstr "Port USB/Série pour la connexion de l'imprimante." #: src/libslic3r/PrintConfig.cpp:1598 msgid "Serial port speed" -msgstr "Serial port speed" +msgstr "Vitesse du port série" #: src/libslic3r/PrintConfig.cpp:1599 msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Speed (baud) of USB/serial port for printer connection." +msgstr "Vitesse (baud) du port USB/série pour la connexion à l'imprimante." #: src/libslic3r/PrintConfig.cpp:1608 msgid "Distance from object" -msgstr "Distance from object" +msgstr "Distance de l'objet" #: src/libslic3r/PrintConfig.cpp:1609 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." msgstr "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." +"Distance entre le ou les objet(s) et la jupe. Mettez zéro pour attacher la " +"jupe a(ux) objet(s) et obtenir une bordure pour une meilleure adhésion." #: src/libslic3r/PrintConfig.cpp:1616 msgid "Skirt height" -msgstr "Skirt height" +msgstr "Hauteur de la jupe" #: src/libslic3r/PrintConfig.cpp:1617 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." msgstr "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." +"Hauteur de la jupe exprimée en couches. Mettez une valeur élevée pour " +"utiliser la jupe comme un bouclier contre les flux d'airs." #: src/libslic3r/PrintConfig.cpp:1624 msgid "Loops (minimum)" -msgstr "Loops (minimum)" +msgstr "Boucles (minimum)" #: src/libslic3r/PrintConfig.cpp:1625 msgid "Skirt Loops" -msgstr "Skirt Loops" +msgstr "Boucles de la Jupe" #: src/libslic3r/PrintConfig.cpp:1626 msgid "" @@ -6575,25 +6560,26 @@ msgid "" "set, the number of loops might be greater than the one configured here. Set " "this to zero to disable skirt completely." msgstr "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." +"Nombre de boucles pour la jupe. Si la Longueur Minimale d'Extrusion est " +"paramétrée, le nombre de boucles minimal sera plus grand que celui configuré " +"ici. Mettez à zéro pour désactiver complètement la jupe." #: src/libslic3r/PrintConfig.cpp:1634 msgid "Slow down if layer print time is below" -msgstr "Slow down if layer print time is below" +msgstr "Ralentir si le temps d'impression de la couche est inférieur à" #: src/libslic3r/PrintConfig.cpp:1635 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." msgstr "" -"If layer print time is estimated below this number of seconds, print moves " -"speed will be scaled down to extend duration to this value." +"Si le temps d'impression estimé de la couche est inférieur à ce nombre de " +"secondes, la vitesse des déplacements d'impression sera réduite afin " +"d'atteindre cette valeur." #: src/libslic3r/PrintConfig.cpp:1645 msgid "Small perimeters" -msgstr "Small perimeters" +msgstr "Périmètres courts" #: src/libslic3r/PrintConfig.cpp:1647 msgid "" @@ -6601,21 +6587,23 @@ msgid "" "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " "be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -"This separate setting will affect the speed of perimeters having radius <= " -"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " -"be calculated on the perimeters speed setting above. Set to zero for auto." +"Ce réglage distinct affectera la vitesse des périmètre ayant un rayon <= " +"6.5mm (les trous habituellement). Si cette valeur est exprimée en " +"pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la " +"vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement " +"automatique." #: src/libslic3r/PrintConfig.cpp:1657 msgid "Solid infill threshold area" -msgstr "Solid infill threshold area" +msgstr "Surface de seuil pour le remplissage solide" #: src/libslic3r/PrintConfig.cpp:1659 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." msgstr "" -"Force solid infill for regions having a smaller area than the specified " -"threshold." +"Forcer un remplissage solide pour les zones ayant une surface plus petite " +"que la valeur indiquée." #: src/libslic3r/PrintConfig.cpp:1660 msgid "mm²" @@ -6623,15 +6611,15 @@ msgstr "mm²" #: src/libslic3r/PrintConfig.cpp:1666 msgid "Solid infill extruder" -msgstr "Solid infill extruder" +msgstr "Extrudeur pour le remplissage solide" #: src/libslic3r/PrintConfig.cpp:1668 msgid "The extruder to use when printing solid infill." -msgstr "The extruder to use when printing solid infill." +msgstr "L'extrudeur à utiliser pour imprimer les remplissages solides." #: src/libslic3r/PrintConfig.cpp:1674 msgid "Solid infill every" -msgstr "Solid infill every" +msgstr "Remplissage solide toutes les" #: src/libslic3r/PrintConfig.cpp:1676 msgid "" @@ -6640,10 +6628,11 @@ msgid "" "will automatically choose the maximum possible number of layers to combine " "according to nozzle diameter and layer height." msgstr "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " -"according to nozzle diameter and layer height." +"Cette fonction permet de forcer l'impression d'une couche solide après le " +"nombre de couches indiqué. Réglez sur zéro pour la désactiver. Vous pouvez " +"indiquer n'importe quelle valeur (par exemple 9999); Slic3r choisira " +"automatiquement le nombre maximum de couches a combiner en fonction du " +"diamètre de la buse et de l'épaisseur des couches." #: src/libslic3r/PrintConfig.cpp:1688 msgid "" @@ -6652,10 +6641,12 @@ msgid "" "otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " "(for example 90%) it will be computed over layer height." msgstr "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"solid surfaces. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 90%) it will be computed over layer height." +"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la " +"largeur d’extrusion pour le remplissage ou les surfaces solides. Si la " +"valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si " +"définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la " +"valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée " +"par rapport à la hauteur de couche." #: src/libslic3r/PrintConfig.cpp:1698 msgid "" @@ -6663,17 +6654,20 @@ msgid "" "This can be expressed as a percentage (for example: 80%) over the default " "infill speed above. Set to zero for auto." msgstr "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." +"Vitesse pour imprimer des zones solides (supérieures/inférieures/parois " +"horizontales internes). Peut être exprimée en pourcentage (par exemple: 80%) " +"de la vitesse de remplissage par défaut susmentionnée. Réglez sur zéro pour " +"un ajustement automatique." #: src/libslic3r/PrintConfig.cpp:1710 msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "Number of solid layers to generate on top and bottom surfaces." +msgstr "" +"Nombre de couches solides à générer sur les surfaces supérieures et " +"inférieures." #: src/libslic3r/PrintConfig.cpp:1716 msgid "Spiral vase" -msgstr "Spiral vase" +msgstr "Vase spiral" #: src/libslic3r/PrintConfig.cpp:1717 msgid "" @@ -6683,15 +6677,16 @@ msgid "" "any number of bottom solid layers as well as skirt/brim loops. It won't work " "when printing more than an object." msgstr "" -"This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." +"Cette fonction élèvera le Z graduellement en cas d'impression d'un objet à " +"paroi unique, afin de rendre invisibles les jointures. Cette option " +"nécessite de n'avoir qu'un seul périmètre, de ne pas avoir de remplissage, " +"ni de surface solide supérieure, ni de support. Vous pouvez toujours choisir " +"le nombre de surface solides inférieures de même que les boucles des jupes " +"et des bordures. Cela ne fonctionnera pas si vous imprimez plus d'un objet." #: src/libslic3r/PrintConfig.cpp:1725 msgid "Temperature variation" -msgstr "Temperature variation" +msgstr "Variation de température" #: src/libslic3r/PrintConfig.cpp:1726 msgid "" @@ -6699,9 +6694,9 @@ msgid "" "a full-height \"sacrificial\" skirt on which the nozzles are periodically " "wiped." msgstr "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." +"Différence de température devant être appliquée quand un extrudeur n'est pas " +"actif. Permet la génération d'un contour complet \"sacrificiel\" sur lequel " +"les buses sont nettoyées régulièrement." #: src/libslic3r/PrintConfig.cpp:1736 msgid "" @@ -6713,13 +6708,15 @@ msgid "" "you can use placeholder variables for all Slic3r settings, so you can put a " "\"M109 S[first_layer_temperature]\" command wherever you want." msgstr "" -"This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If Slic3r detects M104 or M190 in your custom codes, " -"such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all Slic3r settings, so you can put a " -"\"M109 S[first_layer_temperature]\" command wherever you want." +"Cette procédure de démarrage est insérée au début, après que le plateau a " +"atteint la température ciblée et lorsque l'extrudeur vient juste de " +"commencer à chauffer, et avant que l'extrudeur ait terminé de chauffer. Si " +"Slic3r détecte des commandes M104 ou M190 dans vos codes personnalisés, ces " +"commandes ne seront pas ajoutées automatiquement ainsi vous serez libre de " +"personnaliser l'ordre des commandes de chauffe et autres actions " +"personnalisées. Notez que vous pouvez utiliser des variables génériques pour " +"tous les réglages de Slic3r, donc vous pouvez mettre une commande " +"\"M109S[first_layer_temperature]\" où vous le souhaitez." #: src/libslic3r/PrintConfig.cpp:1751 msgid "" @@ -6732,46 +6729,46 @@ msgid "" "S[first_layer_temperature]\" command wherever you want. If you have multiple " "extruders, the gcode is processed in extruder order." msgstr "" -"This start procedure is inserted at the beginning, after any printer start " -"gcode. This is used to override settings for a specific filament. If Slic3r " -"detects M104, M109, M140 or M190 in your custom codes, such commands will " -"not be prepended automatically so you're free to customize the order of " -"heating commands and other custom actions. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want. If you have multiple " -"extruders, the gcode is processed in extruder order." +"Cette procédure de démarrage est insérée au début, après un gcode de " +"démarrage de l'imprimante. Elle est utilisée pour remplacer les réglages " +"pour un filament spécifique. Si Slic3r détecte des commandes M104, M109, " +"M140 ou M190 dans vos codes personnalisés ces commandes ne seront pas " +"ajoutées automatiquement, de cette manière vous pouvez personnaliser la " +"procédure de chauffe et autres actions. Notez que vous pouvez utiliser des " +"variables génériques pour tous les réglages de Slic3r, donc vous pouvez " +"saisir une commande \"M109 S[first_layer_temperature]\" où vous voulez. Si " +"vous avez plusieurs extrudeurs, le G-Code sera exécuté dans l'ordre des " +"extrudeurs." #: src/libslic3r/PrintConfig.cpp:1766 msgid "Single Extruder Multi Material" -msgstr "Single Extruder Multi Material" +msgstr "Extrudeur Unique Multi-Matériaux" #: src/libslic3r/PrintConfig.cpp:1767 msgid "The printer multiplexes filaments into a single hot end." -msgstr "The printer multiplexes filaments into a single hot end." +msgstr "L'imprimante multiplexe les filaments vers une seule tête d'extrusion." #: src/libslic3r/PrintConfig.cpp:1772 msgid "Prime all printing extruders" -msgstr "Prime all printing extruders" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1773 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." msgstr "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." #: src/libslic3r/PrintConfig.cpp:1778 msgid "Generate support material" -msgstr "Generate support material" +msgstr "Générer des supports" #: src/libslic3r/PrintConfig.cpp:1780 msgid "Enable support material generation." -msgstr "Enable support material generation." +msgstr "Activer la génération des supports." #: src/libslic3r/PrintConfig.cpp:1784 msgid "Auto generated supports" -msgstr "Auto generated supports" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1786 msgid "" @@ -6779,45 +6776,42 @@ msgid "" "threshold value. If unchecked, supports will be generated inside the " "\"Support Enforcer\" volumes only." msgstr "" -"If checked, supports will be generated automatically based on the overhang " -"threshold value. If unchecked, supports will be generated inside the " -"\"Support Enforcer\" volumes only." #: src/libslic3r/PrintConfig.cpp:1792 msgid "XY separation between an object and its support" -msgstr "XY separation between an object and its support" +msgstr "Séparation XY entre un objet et son support" #: src/libslic3r/PrintConfig.cpp:1794 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." msgstr "" -"XY separation between an object and its support. If expressed as percentage " -"(for example 50%), it will be calculated over external perimeter width." +"Séparation XY entre un objet et son support. Si la valeur est exprimée en " +"pourcentage (par exemple 50%), elle sera calculée à partir de la largeur du " +"périmètre extérieur." #: src/libslic3r/PrintConfig.cpp:1804 msgid "Pattern angle" -msgstr "Pattern angle" +msgstr "Angle du motif" #: src/libslic3r/PrintConfig.cpp:1806 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." msgstr "" -"Use this setting to rotate the support material pattern on the horizontal " -"plane." +"Utiliser ce réglage pour orienter le motif du support sur le plan horizontal." -#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2421 +#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2423 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." msgstr "" -"Only create support if it lies on a build plate. Don't create support on a " -"print." +"Créer uniquement des supports reposant sur le plateau. Ne pas créer pas de " +"supports sur une impression." #: src/libslic3r/PrintConfig.cpp:1822 msgid "Contact Z distance" -msgstr "Contact Z distance" +msgstr "Distance de contact Z" #: src/libslic3r/PrintConfig.cpp:1824 msgid "" @@ -6825,21 +6819,21 @@ msgid "" "this to 0 will also prevent Slic3r from using bridge flow and speed for the " "first object layer." msgstr "" -"The vertical distance between object and support material interface. Setting " -"this to 0 will also prevent Slic3r from using bridge flow and speed for the " -"first object layer." +"Distance verticale entre l'objet et l'intercalaire du support. Régler cette " +"valeur sur zéro empêchera Slic3r d'utiliser la vitesse et le débit des ponts " +"pour la première couche de l'objet." #: src/libslic3r/PrintConfig.cpp:1831 msgid "soluble" -msgstr "soluble" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1832 msgid "detachable" -msgstr "detachable" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1837 msgid "Enforce support for the first" -msgstr "Enforce support for the first" +msgstr "Renforcer le support sur le(s) première(s)" #: src/libslic3r/PrintConfig.cpp:1839 msgid "" @@ -6848,26 +6842,26 @@ msgid "" "regardless of any angle threshold. This is useful for getting more adhesion " "of objects having a very thin or poor footprint on the build plate." msgstr "" -"Generate support material for the specified number of layers counting from " -"bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." +"Générer des supports pour le nombre de couches spécifié à partir du bas, que " +"les supports normaux soient activés ou non et sans tenir compte de seuils " +"d'inclinaison. Ceci est utile pour obtenir une meilleure adhésion pour des " +"objets ayant une surface de contact très fine ou limitée sur le plateau." #: src/libslic3r/PrintConfig.cpp:1844 msgid "Enforce support for the first n layers" -msgstr "Enforce support for the first n layers" +msgstr "Renforcer le support pour les n premières couches" #: src/libslic3r/PrintConfig.cpp:1850 msgid "Support material/raft/skirt extruder" -msgstr "Support material/raft/skirt extruder" +msgstr "Extrudeur pour support/raft/jupe" #: src/libslic3r/PrintConfig.cpp:1852 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." msgstr "" -"The extruder to use when printing support material, raft and skirt (1+, 0 to " -"use the current extruder to minimize tool changes)." +"L'extrudeur à utiliser pour imprimer des supports, du raft ou des contours " +"(1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil)." #: src/libslic3r/PrintConfig.cpp:1861 msgid "" @@ -6876,52 +6870,56 @@ msgid "" "otherwise nozzle diameter will be used. If expressed as percentage (for " "example 90%) it will be computed over layer height." msgstr "" -"Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." +"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la " +"largeur d’extrusion pour les supports. Si la valeur reste sur zéro, la " +"largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre " +"de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par " +"exemple : 90%), elle sera calculée par rapport à la hauteur de couche." #: src/libslic3r/PrintConfig.cpp:1869 msgid "Interface loops" -msgstr "Interface loops" +msgstr "Boucles d'interface" #: src/libslic3r/PrintConfig.cpp:1871 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -"Cover the top contact layer of the supports with loops. Disabled by default." +"Recouvrir la couche de contact supérieure des supports avec des boucles. " +"Désactivé par défaut." #: src/libslic3r/PrintConfig.cpp:1876 msgid "Support material/raft interface extruder" -msgstr "Support material/raft interface extruder" +msgstr "Extrudeur pour l'interface des supports/du radeau" #: src/libslic3r/PrintConfig.cpp:1878 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." msgstr "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." +"L'extrudeur à utiliser pour imprimer les intercalaires du support (1+,0 pour " +"utiliser l'extrudeur actuel et limiter les changements d'outil). Cela " +"affecte également le raft." #: src/libslic3r/PrintConfig.cpp:1885 msgid "Interface layers" -msgstr "Interface layers" +msgstr "Couches d'interface" #: src/libslic3r/PrintConfig.cpp:1887 msgid "" "Number of interface layers to insert between the object(s) and support " "material." msgstr "" -"Number of interface layers to insert between the object(s) and support " -"material." +"Nombre de couches d'interface à insérer entre le(s) objet(s) et les supports." #: src/libslic3r/PrintConfig.cpp:1894 msgid "Interface pattern spacing" -msgstr "Interface pattern spacing" +msgstr "Espacement du motif d'interface" #: src/libslic3r/PrintConfig.cpp:1896 msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "Spacing between interface lines. Set zero to get a solid interface." +msgstr "" +"Espacement entre les lignes d'interface. Mettez à zéro pour obtenir une " +"interface solide." #: src/libslic3r/PrintConfig.cpp:1905 msgid "" @@ -6929,49 +6927,50 @@ msgid "" "percentage (for example 50%) it will be calculated over support material " "speed." msgstr "" -"Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." +"Vitesse d'impression des couches d'interface des supports. Si exprimée en " +"pourcentage (par exemple 50%), elle sera calculée à partir de la vitesse " +"d'impression des supports." #: src/libslic3r/PrintConfig.cpp:1914 msgid "Pattern" -msgstr "Pattern" +msgstr "Motif" #: src/libslic3r/PrintConfig.cpp:1916 msgid "Pattern used to generate support material." -msgstr "Pattern used to generate support material." +msgstr "Motif utilisé pour générer les supports." #: src/libslic3r/PrintConfig.cpp:1922 msgid "Rectilinear grid" -msgstr "Rectilinear grid" +msgstr "" #: src/libslic3r/PrintConfig.cpp:1928 msgid "Pattern spacing" -msgstr "Pattern spacing" +msgstr "Espacement du motif" #: src/libslic3r/PrintConfig.cpp:1930 msgid "Spacing between support material lines." -msgstr "Spacing between support material lines." +msgstr "Espacement entre les lignes des supports." #: src/libslic3r/PrintConfig.cpp:1939 msgid "Speed for printing support material." -msgstr "Speed for printing support material." +msgstr "Vitesse d'impression du support." #: src/libslic3r/PrintConfig.cpp:1946 msgid "Synchronize with object layers" -msgstr "Synchronize with object layers" +msgstr "Synchroniser avec les couches de l'objet" #: src/libslic3r/PrintConfig.cpp:1948 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." msgstr "" -"Synchronize support layers with the object print layers. This is useful with " -"multi-material printers, where the extruder switch is expensive." +"Synchroniser les couches du support avec les couches d'impression de " +"l'objet. Cela est utile pour les imprimantes multi-matériaux, pour " +"lesquelles le changement d'extrudeur est onéreux." #: src/libslic3r/PrintConfig.cpp:1954 msgid "Overhang threshold" -msgstr "Overhang threshold" +msgstr "Seuil de surplomb" #: src/libslic3r/PrintConfig.cpp:1956 msgid "" @@ -6981,47 +6980,49 @@ msgid "" "that you can print without support material. Set to zero for automatic " "detection (recommended)." msgstr "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." +"Le support ne sera pas généré pour les surplombs dont l'inclinaison (90° = " +"vertical) dépasse le seuil défini. Autrement dit, cette valeur représente " +"l'inclinaison horizontale maximum (mesurée à partir du plan horizontal) que " +"vous pouvez imprimer sans support. Réglez sur zéro pour une détection " +"automatique (recommandé)." #: src/libslic3r/PrintConfig.cpp:1968 msgid "With sheath around the support" -msgstr "With sheath around the support" +msgstr "Avec une enveloppe autour du support" #: src/libslic3r/PrintConfig.cpp:1970 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." msgstr "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." +"Ajouter une enveloppe (une ligne unique de périmètre) autour de la base du " +"support. Ceci rend le support plus fiable, mais aussi plus difficile à " +"retirer." #: src/libslic3r/PrintConfig.cpp:1977 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." msgstr "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." +"Température de l'extrudeur pour les couches après la première. Mettez zéro " +"pour désactiver les commandes de contrôle de la température dans le fichier " +"de sortie." #: src/libslic3r/PrintConfig.cpp:1979 msgid "Temperature" -msgstr "Temperature" +msgstr "Température" #: src/libslic3r/PrintConfig.cpp:1985 msgid "Detect thin walls" -msgstr "Detect thin walls" +msgstr "Détecter les parois fines" #: src/libslic3r/PrintConfig.cpp:1987 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." msgstr "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." +"Détecter les parois de largeur unique (où deux extrusions côte à côte ne " +"rentrent pas et doivent êtres fusionnées en un seul trait)." #: src/libslic3r/PrintConfig.cpp:1993 msgid "Threads" @@ -7032,8 +7033,9 @@ msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." msgstr "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." +"Les threads sont utilisés pour paralléliser les calculs longs. Le nombre " +"optimal de threads est légèrement supérieur au nombre de coeurs/processeurs " +"disponibles." #: src/libslic3r/PrintConfig.cpp:2006 msgid "" @@ -7041,9 +7043,9 @@ msgid "" "you can use placeholder variables for all Slic3r settings as well as " "[previous_extruder] and [next_extruder]." msgstr "" -"This custom code is inserted right before every extruder change. Note that " -"you can use placeholder variables for all Slic3r settings as well as " -"[previous_extruder] and [next_extruder]." +"Ce code personnalisé est inséré juste avant chaque changement d'extrudeur. " +"Notez que vous pouvez utiliser des variables génériques pour tous les " +"réglages de Slic3r de même que [previous_extruder] et [next_extruder]." #: src/libslic3r/PrintConfig.cpp:2018 msgid "" @@ -7053,11 +7055,14 @@ msgid "" "will be used if set, otherwise nozzle diameter will be used. If expressed as " "percentage (for example 90%) it will be computed over layer height." msgstr "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " -"percentage (for example 90%) it will be computed over layer height." +"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la " +"largeur d’extrusion pour le remplissage ou les surfaces supérieures. Vous " +"voudrez peut-être utiliser des extrudats plus fins pour remplir les zones " +"les plus étroites et obtenir des finitions plus lisses. Si la valeur reste " +"sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon " +"le diamètre de la buse sera utilisé. Si la valeur est exprimée en " +"pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur " +"de couche." #: src/libslic3r/PrintConfig.cpp:2029 msgid "" @@ -7067,51 +7072,56 @@ msgid "" "percentage (for example: 80%) over the solid infill speed above. Set to zero " "for auto." msgstr "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." +"Vitesse pour imprimer les couches solides supérieures (ne s'applique qu'aux " +"couches externes les plus hautes et pas aux couches internes solides). Vous " +"voudrez peut-être abaisser cette vitesse afin d'avoir une finition de " +"surface plus nette. Peut être exprimé en pourcentage (par exemple: 80%) de " +"la vitesse de remplissage solide susmentionnée. Réglez sur zéro pour un " +"ajustement automatique." #: src/libslic3r/PrintConfig.cpp:2043 msgid "Number of solid layers to generate on top surfaces." -msgstr "Number of solid layers to generate on top surfaces." +msgstr "Nombre de couches solides à générer sur les surfaces supérieures." #: src/libslic3r/PrintConfig.cpp:2044 msgid "Top solid layers" -msgstr "Top solid layers" +msgstr "Couches supérieures solides" #: src/libslic3r/PrintConfig.cpp:2050 msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "Speed for travel moves (jumps between distant extrusion points)." +msgstr "" +"Vitesse pour les déplacements (trajet entre deux points d'extrusion " +"distants)." #: src/libslic3r/PrintConfig.cpp:2058 msgid "Use firmware retraction" -msgstr "Use firmware retraction" +msgstr "Utiliser la rétractation du firmware" #: src/libslic3r/PrintConfig.cpp:2059 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." msgstr "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." +"Ce réglage expérimental utilise les commandes G10 et G11 pour laisser le " +"firmware gérer la rétractation. Utilisable seulement par les versions " +"récentes de Marlin." #: src/libslic3r/PrintConfig.cpp:2065 msgid "Use relative E distances" -msgstr "Use relative E distances" +msgstr "Utiliser des valeurs E relatives" #: src/libslic3r/PrintConfig.cpp:2066 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." msgstr "" -"If your firmware requires relative E values, check this, otherwise leave it " -"unchecked. Most firmwares use absolute values." +"Si votre firmware requiert des valeurs relatives pour E, cochez cette case, " +"sinon laissez-la décochée. La plupart des firmwares utilisent des valeurs " +"absolues." #: src/libslic3r/PrintConfig.cpp:2072 msgid "Use volumetric E" -msgstr "Use volumetric E" +msgstr "E Volumétrique" #: src/libslic3r/PrintConfig.cpp:2073 msgid "" @@ -7122,48 +7132,51 @@ msgid "" "filament diameter associated to the filament selected in Slic3r. This is " "only supported in recent Marlin." msgstr "" -"This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." +"Cette fonction expérimentale génère des valeurs de E en millimètres cubiques " +"au lieu de millimètres linéaires. Si votre firmware ne connait pas déjà le " +"diamètre du filament, vous pouvez saisir une commande comme 'M200 " +"D[filament_diameter_0] T0' dans votre G-Code de début pour activer le mode " +"volumétrique, et utiliser le diamètre de filament associé au filament choisi " +"dans Slic3r. Cette fonction n'est utilisable que dans les versions récentes " +"de Marlin." #: src/libslic3r/PrintConfig.cpp:2083 msgid "Enable variable layer height feature" -msgstr "Enable variable layer height feature" +msgstr "Activer la fonction de hauteur de couche variable" #: src/libslic3r/PrintConfig.cpp:2084 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." msgstr "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." +"Certaines imprimantes ou certains réglages d'imprimante peuvent rencontrer " +"des difficultés pour imprimer avec une hauteur de couche variable. Activé " +"par défaut." #: src/libslic3r/PrintConfig.cpp:2090 msgid "Wipe while retracting" -msgstr "Wipe while retracting" +msgstr "Nettoyer lors des rétractations" #: src/libslic3r/PrintConfig.cpp:2091 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." msgstr "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." +"Cette option déplace la buse lors des rétractations, limitant ainsi " +"l'apparition d'amas sur les extrudeurs ayant tendance à couler." #: src/libslic3r/PrintConfig.cpp:2098 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." msgstr "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." +"Les imprimantes multi-matériaux peuvent avoir besoin de préparer ou de " +"purger leurs extrudeurs lors d'un changement d'outil. Extruder le matériau " +"en excès dans la tour de nettoyage." #: src/libslic3r/PrintConfig.cpp:2104 msgid "Purging volumes - load/unload volumes" -msgstr "Purging volumes - load/unload volumes" +msgstr "Volumes de purge - volumes de chargement/déchargement" #: src/libslic3r/PrintConfig.cpp:2105 msgid "" @@ -7171,21 +7184,22 @@ msgid "" "wipe tower. These values are used to simplify creation of the full purging " "volumes below. " msgstr "" -"This vector saves required volumes to change from/to each tool used on the " -"wipe tower. These values are used to simplify creation of the full purging " -"volumes below. " +"Ce vecteur enregistre les volumes requis pour changer l'outil utilisé pour " +"la tour de nettoyage. Ces valeurs sont utilisées pour simplifier la création " +"des volumes de purge complets ci-dessous. " #: src/libslic3r/PrintConfig.cpp:2111 msgid "Purging volumes - matrix" -msgstr "Purging volumes - matrix" +msgstr "Volumes de purge - matrice" #: src/libslic3r/PrintConfig.cpp:2112 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools. " msgstr "" -"This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools. " +"Cette matrice décrit les volumes (en millimètres cube) nécessaires pour " +"purger le nouveau filament dans la tour de nettoyage pour une paire d'outils " +"donnée. " #: src/libslic3r/PrintConfig.cpp:2121 msgid "Position X" @@ -7193,7 +7207,7 @@ msgstr "Position X" #: src/libslic3r/PrintConfig.cpp:2122 msgid "X coordinate of the left front corner of a wipe tower" -msgstr "X coordinate of the left front corner of a wipe tower" +msgstr "Coordonnée X du coin avant gauche d'une tour de nettoyage" #: src/libslic3r/PrintConfig.cpp:2128 msgid "Position Y" @@ -7201,27 +7215,27 @@ msgstr "Position Y" #: src/libslic3r/PrintConfig.cpp:2129 msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Y coordinate of the left front corner of a wipe tower" +msgstr "Coordonnée Y du coin avant gauche d'une tour de nettoyage" #: src/libslic3r/PrintConfig.cpp:2136 msgid "Width of a wipe tower" -msgstr "Width of a wipe tower" +msgstr "Largeur d'une tour de nettoyage" #: src/libslic3r/PrintConfig.cpp:2142 msgid "Wipe tower rotation angle" -msgstr "Wipe tower rotation angle" +msgstr "Angle de rotation de la tour de nettoyage" #: src/libslic3r/PrintConfig.cpp:2143 msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "Wipe tower rotation angle with respect to x-axis " +msgstr "Angle de rotation de la tour de nettoyage par rapport à l'axe X " -#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2570 msgid "degrees" -msgstr "degrees" +msgstr "degrés" #: src/libslic3r/PrintConfig.cpp:2150 msgid "Wipe into this object's infill" -msgstr "Wipe into this object's infill" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2151 msgid "" @@ -7229,13 +7243,10 @@ msgid "" "the amount of waste but may result in longer print time due to additional " "travel moves." msgstr "" -"Purging after toolchange will done inside this object's infills. This lowers " -"the amount of waste but may result in longer print time due to additional " -"travel moves." #: src/libslic3r/PrintConfig.cpp:2158 msgid "Wipe into this object" -msgstr "Wipe into this object" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2159 msgid "" @@ -7243,21 +7254,19 @@ msgid "" "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result." msgstr "" -"Object will be used to purge the nozzle after a toolchange to save material " -"that would otherwise end up in the wipe tower and decrease print time. " -"Colours of the objects will be mixed as a result." #: src/libslic3r/PrintConfig.cpp:2165 msgid "Maximal bridging distance" -msgstr "Maximal bridging distance" +msgstr "Distance maximale de pont" #: src/libslic3r/PrintConfig.cpp:2166 msgid "Maximal distance between supports on sparse infill sections. " -msgstr "Maximal distance between supports on sparse infill sections. " +msgstr "" +"Distance maximale entre les supports sur les sections de remplissage épars. " #: src/libslic3r/PrintConfig.cpp:2172 msgid "XY Size Compensation" -msgstr "XY Size Compensation" +msgstr "Compensation de Taille XY" #: src/libslic3r/PrintConfig.cpp:2174 msgid "" @@ -7265,13 +7274,13 @@ msgid "" "(negative = inwards, positive = outwards). This might be useful for fine-" "tuning hole sizes." msgstr "" -"The object will be grown/shrunk in the XY plane by the configured value " -"(negative = inwards, positive = outwards). This might be useful for fine-" -"tuning hole sizes." +"L'objet sera agrandi/réduit sur les plans XY selon la valeur indiquée " +"(négatif = réduit, positif = agrandi). Ce réglage peut être utile pour un " +"réglage fin des tailles de trous." #: src/libslic3r/PrintConfig.cpp:2182 msgid "Z offset" -msgstr "Z offset" +msgstr "Décalage Z" #: src/libslic3r/PrintConfig.cpp:2183 msgid "" @@ -7280,42 +7289,43 @@ msgid "" "example, if your endstop zero actually leaves the nozzle 0.3mm far from the " "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." +"Cette valeur sera ajoutée (ou soustraite) de toutes les coordonnées Z dans " +"le G-Code de sortie. Elle est utilisée pour compenser une mauvaise position " +"de fin de course Z: par exemple si votre fin de course place votre buse à " +"0.3mm au dessus du plateau, réglez cette valeur sur -0.3 (ou corrigez votre " +"fin de course)." #: src/libslic3r/PrintConfig.cpp:2200 msgid "Display width" -msgstr "Display width" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2201 msgid "Width of the display" -msgstr "Width of the display" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2206 msgid "Display height" -msgstr "Display height" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2207 msgid "Height of the display" -msgstr "Height of the display" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2212 msgid "Number of pixels in" -msgstr "Number of pixels in" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2214 msgid "Number of pixels in X" -msgstr "Number of pixels in X" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2220 msgid "Number of pixels in Y" -msgstr "Number of pixels in Y" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2225 msgid "Display orientation" -msgstr "Display orientation" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2226 msgid "" @@ -7323,45 +7333,42 @@ msgid "" "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -"Set the actual LCD display orientation inside the SLA printer. Portrait mode " -"will flip the meaning of display width and height parameters and the output " -"images will be rotated by 90 degrees." #: src/libslic3r/PrintConfig.cpp:2232 msgid "Landscape" -msgstr "Landscape" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2233 msgid "Portrait" -msgstr "Portrait" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2238 msgid "Fast" -msgstr "Fast" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2239 msgid "Fast tilt" -msgstr "Fast tilt" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2240 msgid "Time of the fast tilt" -msgstr "Time of the fast tilt" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2247 msgid "Slow" -msgstr "Slow" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2248 msgid "Slow tilt" -msgstr "Slow tilt" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2249 msgid "Time of the slow tilt" -msgstr "Time of the slow tilt" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2256 msgid "Area fill" -msgstr "Area fill" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2257 msgid "" @@ -7369,572 +7376,551 @@ msgid "" "If the print area exceeds the specified value, \n" "then a slow tilt will be used, otherwise - a fast tilt" msgstr "" -"The percentage of the bed area. \n" -"If the print area exceeds the specified value, \n" -"then a slow tilt will be used, otherwise - a fast tilt" #: src/libslic3r/PrintConfig.cpp:2264 src/libslic3r/PrintConfig.cpp:2265 #: src/libslic3r/PrintConfig.cpp:2266 msgid "Printer scaling correction" -msgstr "Printer scaling correction" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2273 msgid "Printer absolute correction" -msgstr "Printer absolute correction" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2274 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "" -"Will inflate or deflate the sliced 2D polygons according to the sign of the " -"correction." #: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2281 msgid "Printer gamma correction" -msgstr "Printer gamma correction" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2282 -msgid "This will apply a gamm correction to the rasterized 2D polygons." -msgstr "This will apply a gamm correction to the rasterized 2D polygons." +msgid "" +"This will apply a gamma correction to the rasterized 2D polygons. A gamma " +"value of zero means thresholding with the threshold in the middle. This " +"behaviour eliminates antialiasing without losing holes in polygons." +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292 +#: src/libslic3r/PrintConfig.cpp:2293 src/libslic3r/PrintConfig.cpp:2294 msgid "Initial layer height" -msgstr "Initial layer height" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2298 +#: src/libslic3r/PrintConfig.cpp:2300 msgid "Faded layers" -msgstr "Faded layers" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2299 +#: src/libslic3r/PrintConfig.cpp:2301 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "" -"Number of the layers needed for the exposure time fade from initial exposure " -"time to the exposure time" -#: src/libslic3r/PrintConfig.cpp:2306 src/libslic3r/PrintConfig.cpp:2307 +#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2309 msgid "Exposure time" -msgstr "Exposure time" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2313 src/libslic3r/PrintConfig.cpp:2314 +#: src/libslic3r/PrintConfig.cpp:2315 src/libslic3r/PrintConfig.cpp:2316 msgid "Initial exposure time" -msgstr "Initial exposure time" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321 +#: src/libslic3r/PrintConfig.cpp:2322 src/libslic3r/PrintConfig.cpp:2323 msgid "Correction for expansion" -msgstr "Correction for expansion" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2327 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "SLA print material notes" -msgstr "SLA print material notes" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2328 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "You can put your notes regarding the SLA print material here." -msgstr "You can put your notes regarding the SLA print material here." +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2336 src/libslic3r/PrintConfig.cpp:2347 +#: src/libslic3r/PrintConfig.cpp:2338 src/libslic3r/PrintConfig.cpp:2349 msgid "Default SLA material profile" -msgstr "Default SLA material profile" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Generate supports" -msgstr "Generate supports" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2360 -msgid "Generate supports for the models" -msgstr "Generate supports for the models" +msgid "Generate supports" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2365 -msgid "Support head front diameter" -msgstr "Support head front diameter" +#: src/libslic3r/PrintConfig.cpp:2362 +msgid "Generate supports for the models" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2367 -msgid "Diameter of the pointing side of the head" -msgstr "Diameter of the pointing side of the head" +msgid "Support head front diameter" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2374 -msgid "Support head penetration" -msgstr "Support head penetration" +#: src/libslic3r/PrintConfig.cpp:2369 +msgid "Diameter of the pointing side of the head" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2376 -msgid "How much the pinhead has to penetrate the model surface" -msgstr "How much the pinhead has to penetrate the model surface" +msgid "Support head penetration" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2383 -msgid "Support head width" -msgstr "Support head width" +#: src/libslic3r/PrintConfig.cpp:2378 +msgid "How much the pinhead has to penetrate the model surface" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2385 -msgid "Width from the back sphere center to the front sphere center" -msgstr "Width from the back sphere center to the front sphere center" +msgid "Support head width" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2393 -msgid "Support pillar diameter" -msgstr "Support pillar diameter" +#: src/libslic3r/PrintConfig.cpp:2387 +msgid "Width from the back sphere center to the front sphere center" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2395 +msgid "Support pillar diameter" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2397 msgid "Diameter in mm of the support pillars" -msgstr "Diameter in mm of the support pillars" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2403 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "Support pillar connection mode" -msgstr "Support pillar connection mode" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2404 +#: src/libslic3r/PrintConfig.cpp:2406 msgid "" "Controls the bridge type between two neigboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " -"cross (double zig-zag) or dynamic which will automatically switch between " -"the first two depending on the distance of the two pillars." - -#: src/libslic3r/PrintConfig.cpp:2412 -msgid "Zig-Zag" -msgstr "Zig-Zag" - -#: src/libslic3r/PrintConfig.cpp:2413 -msgid "Cross" -msgstr "Cross" #: src/libslic3r/PrintConfig.cpp:2414 -msgid "Dynamic" -msgstr "Dynamic" +msgid "Zig-Zag" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2426 -msgid "Pillar widening factor" -msgstr "Pillar widening factor" +#: src/libslic3r/PrintConfig.cpp:2415 +msgid "Cross" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2416 +msgid "Dynamic" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2428 +msgid "Pillar widening factor" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2430 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -"Merging bridges or pillars into another pillars can increase the radius. " -"Zero means no increase, one means full increase." - -#: src/libslic3r/PrintConfig.cpp:2437 -msgid "Support base diameter" -msgstr "Support base diameter" #: src/libslic3r/PrintConfig.cpp:2439 -msgid "Diameter in mm of the pillar base" -msgstr "Diameter in mm of the pillar base" +msgid "Support base diameter" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2447 -msgid "Support base height" -msgstr "Support base height" +#: src/libslic3r/PrintConfig.cpp:2441 +msgid "Diameter in mm of the pillar base" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2449 -msgid "The height of the pillar base cone" -msgstr "The height of the pillar base cone" +msgid "Support base height" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2456 -msgid "Critical angle" -msgstr "Critical angle" +#: src/libslic3r/PrintConfig.cpp:2451 +msgid "The height of the pillar base cone" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2458 -msgid "The default angle for connecting support sticks and junctions." -msgstr "The default angle for connecting support sticks and junctions." +msgid "Critical angle" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2466 -msgid "Max bridge length" -msgstr "Max bridge length" +#: src/libslic3r/PrintConfig.cpp:2460 +msgid "The default angle for connecting support sticks and junctions." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2468 -msgid "The max length of a bridge" -msgstr "The max length of a bridge" +msgid "Max bridge length" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2475 -msgid "Max pillar linking distance" -msgstr "Max pillar linking distance" +#: src/libslic3r/PrintConfig.cpp:2470 +msgid "The max length of a bridge" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2477 +msgid "Max pillar linking distance" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2479 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" -"The max distance of two pillars to get linked with each other. A zero value " -"will prohibit pillar cascading." - -#: src/libslic3r/PrintConfig.cpp:2485 -msgid "Object elevation" -msgstr "Object elevation" #: src/libslic3r/PrintConfig.cpp:2487 -msgid "How much the supports should lift up the supported object." -msgstr "How much the supports should lift up the supported object." +msgid "Object elevation" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2495 -msgid "Support points density" -msgstr "Support points density" +#: src/libslic3r/PrintConfig.cpp:2489 +msgid "How much the supports should lift up the supported object." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2497 -msgid "This is a relative measure of support points density." -msgstr "This is a relative measure of support points density." +msgid "Support points density" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2503 -msgid "Minimal distance of the support points" -msgstr "Minimal distance of the support points" +#: src/libslic3r/PrintConfig.cpp:2499 +msgid "This is a relative measure of support points density." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2505 -msgid "No support points will be placed closer than this threshold." -msgstr "No support points will be placed closer than this threshold." +msgid "Minimal distance of the support points" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2511 -msgid "Use pad" -msgstr "Use pad" +#: src/libslic3r/PrintConfig.cpp:2507 +msgid "No support points will be placed closer than this threshold." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2513 -msgid "Add a pad underneath the supported model" -msgstr "Add a pad underneath the supported model" +msgid "Use pad" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2518 -msgid "Pad wall thickness" -msgstr "Pad wall thickness" +#: src/libslic3r/PrintConfig.cpp:2515 +msgid "Add a pad underneath the supported model" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2520 +msgid "Pad wall thickness" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2522 msgid "The thickness of the pad and its optional cavity walls." -msgstr "The thickness of the pad and its optional cavity walls." +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2528 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Pad wall height" -msgstr "Pad wall height" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2529 -msgid "Defines the cavity depth. Set to zero to disable the cavity." -msgstr "Defines the cavity depth. Set to zero to disable the cavity." +#: src/libslic3r/PrintConfig.cpp:2531 +msgid "" +"Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " +"when enabling this feature, as some resins may produce an extreme suction " +"effect inside the cavity, which makes pealing the print off the vat foil " +"difficult." +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2539 +#: src/libslic3r/PrintConfig.cpp:2544 msgid "Max merge distance" -msgstr "Max merge distance" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2541 +#: src/libslic3r/PrintConfig.cpp:2546 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " "be. If theyare closer, they will get merged into one pad." msgstr "" -"Some objects can get along with a few smaller pads instead of a single big " -"one. This parameter defines how far the center of two smaller pads should " -"be. If theyare closer, they will get merged into one pad." -#: src/libslic3r/PrintConfig.cpp:2552 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Pad edge radius" -msgstr "Pad edge radius" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2561 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Pad wall slope" -msgstr "Pad wall slope" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2563 +#: src/libslic3r/PrintConfig.cpp:2568 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" -"The slope of the pad wall relative to the bed plane. 90 degrees means " -"straight walls." -#: src/libslic3r/PrintConfig.cpp:2924 +#: src/libslic3r/PrintConfig.cpp:2929 msgid "Export SVG" -msgstr "Export SVG" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "Export the model(s) as OBJ." -msgstr "Export the model(s) as OBJ." +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2936 +#: src/libslic3r/PrintConfig.cpp:2941 msgid "Export SLA" -msgstr "Export SLA" - -#: src/libslic3r/PrintConfig.cpp:2937 -msgid "Slice the model and export SLA printing layers as PNG." -msgstr "Slice the model and export SLA printing layers as PNG." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2942 -msgid "Export 3MF" -msgstr "Export 3MF" - -#: src/libslic3r/PrintConfig.cpp:2943 -msgid "Export the model(s) as 3MF." -msgstr "Export the model(s) as 3MF." +msgid "Slice the model and export SLA printing layers as PNG." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2947 -msgid "Export AMF" -msgstr "Export AMF" +msgid "Export 3MF" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2948 -msgid "Export the model(s) as AMF." -msgstr "Export the model(s) as AMF." +msgid "Export the model(s) as 3MF." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2952 -msgid "Export STL" -msgstr "Export STL" +msgid "Export AMF" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2953 -msgid "Export the model(s) as STL." -msgstr "Export the model(s) as STL." +msgid "Export the model(s) as AMF." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2957 +msgid "Export STL" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2958 -msgid "Slice the model and export toolpaths as G-code." -msgstr "Slice the model and export toolpaths as G-code." +msgid "Export the model(s) as STL." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2963 -msgid "Slice" -msgstr "Slice" - -#: src/libslic3r/PrintConfig.cpp:2964 -msgid "" -"Slice the model as FFF or SLA based on the printer_technology configuration " -"value." +msgid "Slice the model and export toolpaths as G-code." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2968 +msgid "Slice" msgstr "" -"Slice the model as FFF or SLA based on the printer_technology configuration " -"value." #: src/libslic3r/PrintConfig.cpp:2969 -msgid "Help" -msgstr "Help" +msgid "" +"Slice the model as FFF or SLA based on the printer_technology configuration " +"value." +msgstr "" -#: src/libslic3r/PrintConfig.cpp:2970 -msgid "Show this help." -msgstr "Show this help." +#: src/libslic3r/PrintConfig.cpp:2974 +msgid "Help" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2975 -msgid "Help (FFF options)" -msgstr "Help (FFF options)" - -#: src/libslic3r/PrintConfig.cpp:2976 -msgid "Show the full list of print/G-code configuration options." -msgstr "Show the full list of print/G-code configuration options." +msgid "Show this help." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2980 -msgid "Help (SLA options)" -msgstr "Help (SLA options)" +msgid "Help (FFF options)" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2981 -msgid "Show the full list of SLA print configuration options." -msgstr "Show the full list of SLA print configuration options." +msgid "Show the full list of print/G-code configuration options." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2985 -msgid "Output Model Info" -msgstr "Output Model Info" +msgid "Help (SLA options)" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2986 -msgid "Write information about the model to the console." -msgstr "Write information about the model to the console." +msgid "Show the full list of SLA print configuration options." +msgstr "" #: src/libslic3r/PrintConfig.cpp:2990 -msgid "Save config file" -msgstr "Save config file" +msgid "Output Model Info" +msgstr "" #: src/libslic3r/PrintConfig.cpp:2991 +msgid "Write information about the model to the console." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2995 +msgid "Save config file" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2996 msgid "Save configuration to the specified file." -msgstr "Save configuration to the specified file." +msgstr "" -#: src/libslic3r/PrintConfig.cpp:3001 +#: src/libslic3r/PrintConfig.cpp:3006 msgid "Align XY" -msgstr "Align XY" - -#: src/libslic3r/PrintConfig.cpp:3002 -msgid "Align the model to the given point." -msgstr "Align the model to the given point." +msgstr "" #: src/libslic3r/PrintConfig.cpp:3007 +msgid "Align the model to the given point." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3012 msgid "Cut model at the given Z." -msgstr "Cut model at the given Z." - -#: src/libslic3r/PrintConfig.cpp:3028 -msgid "Center" -msgstr "Center" - -#: src/libslic3r/PrintConfig.cpp:3029 -msgid "Center the print around the given center." -msgstr "Center the print around the given center." +msgstr "" #: src/libslic3r/PrintConfig.cpp:3033 -msgid "Don't arrange" -msgstr "Don't arrange" +msgid "Center" +msgstr "" #: src/libslic3r/PrintConfig.cpp:3034 -msgid "" -"Do not rearrange the given models before merging and keep their original XY " -"coordinates." +msgid "Center the print around the given center." msgstr "" -"Do not rearrange the given models before merging and keep their original XY " -"coordinates." - -#: src/libslic3r/PrintConfig.cpp:3037 -msgid "Duplicate" -msgstr "Duplicate" #: src/libslic3r/PrintConfig.cpp:3038 -msgid "Multiply copies by this factor." -msgstr "Multiply copies by this factor." +msgid "Don't arrange" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3039 +msgid "" +"Do not rearrange the given models before merging and keep their original XY " +"coordinates." +msgstr "" #: src/libslic3r/PrintConfig.cpp:3042 -msgid "Duplicate by grid" -msgstr "Duplicate by grid" +msgid "Duplicate" +msgstr "" #: src/libslic3r/PrintConfig.cpp:3043 -msgid "Multiply copies by creating a grid." -msgstr "Multiply copies by creating a grid." - -#: src/libslic3r/PrintConfig.cpp:3046 -msgid "Merge" -msgstr "Merge" +msgid "Multiply copies by this factor." +msgstr "" #: src/libslic3r/PrintConfig.cpp:3047 -msgid "" -"Arrange the supplied models in a plate and merge them in a single model in " -"order to perform actions once." +msgid "Duplicate by grid" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3048 +msgid "Multiply copies by creating a grid." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3051 +msgid "Merge" msgstr "" -"Arrange the supplied models in a plate and merge them in a single model in " -"order to perform actions once." #: src/libslic3r/PrintConfig.cpp:3052 msgid "" +"Arrange the supplied models in a plate and merge them in a single model in " +"order to perform actions once." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3057 +msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." msgstr "" -"Try to repair any non-manifold meshes (this option is implicitly added " -"whenever we need to slice the model to perform the requested action)." - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Rotation angle around the Z axis in degrees." -msgstr "Rotation angle around the Z axis in degrees." - -#: src/libslic3r/PrintConfig.cpp:3060 -msgid "Rotate around X" -msgstr "Rotate around X" #: src/libslic3r/PrintConfig.cpp:3061 -msgid "Rotation angle around the X axis in degrees." -msgstr "Rotation angle around the X axis in degrees." +msgid "Rotation angle around the Z axis in degrees." +msgstr "" #: src/libslic3r/PrintConfig.cpp:3065 -msgid "Rotate around Y" -msgstr "Rotate around Y" +msgid "Rotate around X" +msgstr "" #: src/libslic3r/PrintConfig.cpp:3066 -msgid "Rotation angle around the Y axis in degrees." -msgstr "Rotation angle around the Y axis in degrees." +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3070 +msgid "Rotate around Y" +msgstr "" #: src/libslic3r/PrintConfig.cpp:3071 -msgid "Scaling factor or percentage." -msgstr "Scaling factor or percentage." +msgid "Rotation angle around the Y axis in degrees." +msgstr "" #: src/libslic3r/PrintConfig.cpp:3076 +msgid "Scaling factor or percentage." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3081 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" -"Detect unconnected parts in the given model(s) and split them into separate " -"objects." -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3084 msgid "Scale to Fit" -msgstr "Scale to Fit" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:3080 +#: src/libslic3r/PrintConfig.cpp:3085 msgid "Scale to fit the given volume." -msgstr "Scale to fit the given volume." - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Ignore non-existent config files" -msgstr "Ignore non-existent config files" - -#: src/libslic3r/PrintConfig.cpp:3090 -msgid "Do not fail if a file supplied to --load does not exist." -msgstr "Do not fail if a file supplied to --load does not exist." - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Load config file" -msgstr "Load config file" +msgstr "" #: src/libslic3r/PrintConfig.cpp:3094 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." +msgid "Ignore non-existent config files" msgstr "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -#: src/libslic3r/PrintConfig.cpp:3097 -msgid "Output File" -msgstr "Output File" +#: src/libslic3r/PrintConfig.cpp:3095 +msgid "Do not fail if a file supplied to --load does not exist." +msgstr "" #: src/libslic3r/PrintConfig.cpp:3098 +msgid "Load config file" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3099 +msgid "" +"Load configuration from the specified file. It can be used more than once to " +"load options from multiple files." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3102 +msgid "Output File" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3103 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." - -#: src/libslic3r/PrintConfig.cpp:3108 -msgid "Data directory" -msgstr "Data directory" - -#: src/libslic3r/PrintConfig.cpp:3109 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." - -#: src/libslic3r/PrintConfig.cpp:3112 -msgid "Logging level" -msgstr "Logging level" #: src/libslic3r/PrintConfig.cpp:3113 +msgid "Data directory" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3114 +msgid "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3117 +msgid "Logging level" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3118 msgid "" "Messages with severity lower or eqal to the loglevel will be printed out. 0:" "trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" msgstr "" -"Messages with severity lower or eqal to the loglevel will be printed out. 0:" -"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" + +#: src/libslic3r/PrintConfig.cpp:3123 +msgid "Render with a software renderer" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3124 +msgid "" +"Render with a software renderer. The bundled MESA software renderer is " +"loaded instead of the default OpenGL driver." +msgstr "" #: src/libslic3r/GCode/PreviewData.cpp:176 msgid "Mixed" -msgstr "Mixed" +msgstr "" #: src/libslic3r/GCode/PreviewData.cpp:396 msgid "Height (mm)" -msgstr "Height (mm)" +msgstr "Hauteur (mm)" #: src/libslic3r/GCode/PreviewData.cpp:398 msgid "Width (mm)" -msgstr "Width (mm)" +msgstr "Largeur (mm)" #: src/libslic3r/GCode/PreviewData.cpp:400 msgid "Speed (mm/s)" -msgstr "Speed (mm/s)" +msgstr "Vitesse (mm/s)" #: src/libslic3r/GCode/PreviewData.cpp:402 msgid "Volumetric flow rate (mm3/s)" -msgstr "Volumetric flow rate (mm3/s)" +msgstr "Débit volumétrique (mm3/s)" #: src/libslic3r/GCode/PreviewData.cpp:491 msgid "Default print color" -msgstr "Default print color" +msgstr "" #: src/libslic3r/GCode/PreviewData.cpp:495 #, c-format msgid "up to %.2f mm" -msgstr "up to %.2f mm" +msgstr "" #: src/libslic3r/GCode/PreviewData.cpp:499 #, c-format msgid "above %.2f mm" -msgstr "above %.2f mm" +msgstr "" #: src/libslic3r/GCode/PreviewData.cpp:504 #, c-format msgid "%.2f - %.2f mm" -msgstr "%.2f - %.2f mm" +msgstr "" diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index c06d19cb9..bf1d24e8a 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -184,7 +184,7 @@ std::string WipeTowerIntegration::append_tcr(GCode &gcodegen, const WipeTower::T // Disable linear advance for the wipe tower operations. - gcode += "M900 K0\n"; + gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n")); // Move over the wipe tower. // Retract for a tool change, using the toolchange retract value and setting the priming extra length. gcode += gcodegen.retract(true); @@ -289,7 +289,7 @@ std::string WipeTowerIntegration::prime(GCode &gcodegen) if (&m_priming != nullptr && ! m_priming.extrusions.empty()) { // Disable linear advance for the wipe tower operations. - gcode += "M900 K0\n"; + gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n")); // Let the tool change be executed by the wipe tower class. // Inform the G-code writer about the changes done behind its back. gcode += m_priming.gcode; diff --git a/src/libslic3r/GCode/WipeTowerPrusaMM.cpp b/src/libslic3r/GCode/WipeTowerPrusaMM.cpp index 829fe1bb9..34065a491 100644 --- a/src/libslic3r/GCode/WipeTowerPrusaMM.cpp +++ b/src/libslic3r/GCode/WipeTowerPrusaMM.cpp @@ -40,7 +40,7 @@ namespace PrusaMultiMaterial { class Writer { public: - Writer(float layer_height, float line_width) : + Writer(float layer_height, float line_width, GCodeFlavor flavor) : m_current_pos(std::numeric_limits::max(), std::numeric_limits::max()), m_current_z(0.f), m_current_feedrate(0.f), @@ -48,7 +48,8 @@ public: m_extrusion_flow(0.f), m_preview_suppressed(false), m_elapsed_time(0.f), - m_default_analyzer_line_width(line_width) + m_default_analyzer_line_width(line_width), + m_gcode_flavor(flavor) { // adds tag for analyzer: char buf[64]; @@ -333,7 +334,10 @@ public: Writer& set_extruder_trimpot(int current) { char buf[128]; - sprintf(buf, "M907 E%d\n", current); + if (m_gcode_flavor == gcfRepRap) + sprintf(buf, "M906 E%d\n", current); + else + sprintf(buf, "M907 E%d\n", current); m_gcode += buf; return *this; }; @@ -407,6 +411,7 @@ private: int current_temp = -1; const float m_default_analyzer_line_width; float m_used_filament_length = 0.f; + GCodeFlavor m_gcode_flavor; std::string set_format_X(float x) { @@ -510,7 +515,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::prime( const float prime_section_width = std::min(240.f / tools.size(), 60.f); box_coordinates cleaning_box(xy(5.f, 0.01f + m_perimeter_width/2.f), prime_section_width, 100.f); - PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width); + PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor); writer.set_extrusion_flow(m_extrusion_flow) .set_z(m_z_pos) .set_initial_tool(m_current_tool) @@ -612,7 +617,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo (tool != (unsigned int)(-1) ? /*m_layer_info->depth*/wipe_area+m_depth_traversed-0.5*m_perimeter_width : m_wipe_tower_depth-m_perimeter_width)); - PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width); + PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor); writer.set_extrusion_flow(m_extrusion_flow) .set_z(m_z_pos) .set_initial_tool(m_current_tool) @@ -631,7 +636,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo // Increase the extruder driver current to allow fast ramming. if (m_set_extruder_trimpot) - writer.set_extruder_trimpot(550); + writer.set_extruder_trimpot(750); // Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool. if (tool != (unsigned int)-1){ // This is not the last change. @@ -693,7 +698,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(bool sideOnly, flo m_wipe_tower_width, m_wipe_tower_depth); - PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width); + PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor); writer.set_extrusion_flow(m_extrusion_flow * 1.1f) .set_z(m_z_pos) // Let the writer know the current Z position as a base for Z-hop. .set_initial_tool(m_current_tool) @@ -1022,7 +1027,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::finish_layer() // Otherwise the caller would likely travel to the wipe tower in vain. assert(! this->layer_finished()); - PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width); + PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor); writer.set_extrusion_flow(m_extrusion_flow) .set_z(m_z_pos) .set_initial_tool(m_current_tool) diff --git a/src/libslic3r/GCode/WipeTowerPrusaMM.hpp b/src/libslic3r/GCode/WipeTowerPrusaMM.hpp index 2b5fa2241..90f50b57a 100644 --- a/src/libslic3r/GCode/WipeTowerPrusaMM.hpp +++ b/src/libslic3r/GCode/WipeTowerPrusaMM.hpp @@ -8,6 +8,7 @@ #include #include "WipeTower.hpp" +#include "PrintConfig.hpp" namespace Slic3r @@ -46,7 +47,7 @@ public: // wipe_area -- space available for one toolchange in mm WipeTowerPrusaMM(float x, float y, float width, float rotation_angle, float cooling_tube_retraction, float cooling_tube_length, float parking_pos_retraction, float extra_loading_move, - float bridging, bool set_extruder_trimpot, + float bridging, bool set_extruder_trimpot, GCodeFlavor flavor, const std::vector>& wiping_matrix, unsigned int initial_tool) : m_wipe_tower_pos(x, y), m_wipe_tower_width(width), @@ -60,6 +61,7 @@ public: m_extra_loading_move(extra_loading_move), m_bridging(bridging), m_set_extruder_trimpot(set_extruder_trimpot), + m_gcode_flavor(flavor), m_current_tool(initial_tool), wipe_volumes(wiping_matrix) {} @@ -223,6 +225,7 @@ private: bool m_set_extruder_trimpot = false; bool m_retain_speed_override = true; bool m_adhesion = true; + GCodeFlavor m_gcode_flavor; float m_perimeter_width = 0.4f * Width_To_Nozzle_Ratio; // Width of an extrusion line, also a perimeter spacing for 100% infill. float m_extrusion_flow = 0.038f; //0.029f;// Extrusion flow is derived from m_perimeter_width, layer height and filament diameter. diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 0637ba7f0..d743a9b23 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -126,7 +126,6 @@ bool Print::invalidate_state_by_config_options(const std::vectormultiline = true; def->full_width = true; - def->height = 50; + def->height = 5; def->mode = comExpert; def->default_value = new ConfigOptionString(""); @@ -140,7 +140,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want."); def->multiline = true; def->full_width = true; - def->height = 120; + def->height = 12; def->mode = comExpert; def->default_value = new ConfigOptionString(""); @@ -360,7 +360,7 @@ void PrintConfigDef::init_fff_params() "Note that you can use placeholder variables for all Slic3r settings."); def->multiline = true; def->full_width = true; - def->height = 120; + def->height = 12; def->mode = comExpert; def->default_value = new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n"); @@ -539,7 +539,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("If layer print time is estimated below this number of seconds, fan will be enabled " "and its speed will be calculated by interpolating the minimum and maximum speeds."); def->sidetext = L("approximate seconds"); - def->width = 60; + def->width = 6; def->min = 0; def->max = 1000; def->mode = comExpert; @@ -556,7 +556,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("You can put your notes regarding the filament here."); def->multiline = true; def->full_width = true; - def->height = 130; + def->height = 13; def->mode = comAdvanced; def->default_value = new ConfigOptionStrings { "" }; @@ -1007,7 +1007,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Inherits profile"); def->tooltip = L("Name of the profile, from which this profile inherits."); def->full_width = true; - def->height = 50; + def->height = 5; def->default_value = new ConfigOptionString(); def->cli = ConfigOptionDef::nocli; @@ -1034,7 +1034,7 @@ void PrintConfigDef::init_fff_params() def->cli = "after-layer-gcode|layer-gcode"; def->multiline = true; def->full_width = true; - def->height = 50; + def->height = 5; def->mode = comExpert; def->default_value = new ConfigOptionString(""); @@ -1053,7 +1053,7 @@ void PrintConfigDef::init_fff_params() def->mode = comExpert; def->default_value = new ConfigOptionBool(true); - const int machine_limits_opt_width = 70; + const int machine_limits_opt_width = 7; { struct AxisDefault { std::string name; @@ -1252,7 +1252,7 @@ void PrintConfigDef::init_fff_params() "header comments."); def->multiline = true; def->full_width = true; - def->height = 130; + def->height = 13; def->mode = comAdvanced; def->default_value = new ConfigOptionString(""); @@ -1387,7 +1387,7 @@ void PrintConfigDef::init_fff_params() def->gui_flags = "serialized"; def->multiline = true; def->full_width = true; - def->height = 60; + def->height = 6; def->mode = comExpert; def->default_value = new ConfigOptionStrings(); @@ -1402,7 +1402,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("You can put your notes regarding the printer here."); def->multiline = true; def->full_width = true; - def->height = 130; + def->height = 13; def->mode = comAdvanced; def->default_value = new ConfigOptionString(""); @@ -1589,7 +1589,7 @@ void PrintConfigDef::init_fff_params() def->label = ""; def->full_label = L("Serial port"); def->tooltip = L("USB/serial port for printer connection."); - def->width = 200; + def->width = 20; def->default_value = new ConfigOptionString(""); def = this->add("serial_speed", coInt); @@ -1635,7 +1635,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value."); def->sidetext = L("approximate seconds"); - def->width = 60; + def->width = 6; def->min = 0; def->max = 1000; def->mode = comExpert; @@ -1742,7 +1742,7 @@ void PrintConfigDef::init_fff_params() "a \"M109 S[first_layer_temperature]\" command wherever you want."); def->multiline = true; def->full_width = true; - def->height = 120; + def->height = 12; def->mode = comExpert; def->default_value = new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n"); @@ -1758,7 +1758,7 @@ void PrintConfigDef::init_fff_params() "in extruder order."); def->multiline = true; def->full_width = true; - def->height = 120; + def->height = 12; def->mode = comExpert; def->default_value = new ConfigOptionStrings { "; Filament gcode\n" }; @@ -2008,7 +2008,7 @@ void PrintConfigDef::init_fff_params() "as [previous_extruder] and [next_extruder]."); def->multiline = true; def->full_width = true; - def->height = 50; + def->height = 5; def->mode = comExpert; def->default_value = new ConfigOptionString(""); @@ -2330,7 +2330,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("You can put your notes regarding the SLA print material here."); def->multiline = true; def->full_width = true; - def->height = 130; + def->height = 13; def->mode = comAdvanced; def->default_value = new ConfigOptionString(""); diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 86b12a95f..b1a2556e7 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -32,8 +32,11 @@ void AboutDialogLogo::onRepaint(wxEvent &event) } AboutDialog::AboutDialog() - : wxDialog(NULL, wxID_ANY, wxString::Format(_(L("About %s")), SLIC3R_APP_NAME), wxDefaultPosition, wxDefaultSize, wxCAPTION) + : DPIDialog(NULL, wxID_ANY, wxString::Format(_(L("About %s")), SLIC3R_APP_NAME), wxDefaultPosition, + wxDefaultSize, /*wxCAPTION*/wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { + SetFont(wxGetApp().normal_font()); + wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); SetBackgroundColour(bgr_clr); wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); @@ -42,8 +45,9 @@ AboutDialog::AboutDialog() main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20); // logo - auto *logo = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap(this, "Slic3r_192px.png", 192)); - hsizer->Add(logo, 1, wxALIGN_CENTER_VERTICAL); + m_logo_bitmap = ScalableBitmap(this, "Slic3r_192px.png", 192); + m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp()); + hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL); wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); hsizer->Add(vsizer, 2, wxEXPAND|wxLEFT, 20); @@ -51,8 +55,7 @@ AboutDialog::AboutDialog() // title { wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); - wxFont title_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - title_font.SetWeight(wxFONTWEIGHT_BOLD); + wxFont title_font = GUI::wxGetApp().bold_font(); title_font.SetFamily(wxFONTFAMILY_ROMAN); title_font.SetPointSize(24); title->SetFont(title_font); @@ -63,9 +66,9 @@ AboutDialog::AboutDialog() { auto version_string = _(L("Version"))+ " " + std::string(SLIC3R_VERSION); wxStaticText* version = new wxStaticText(this, wxID_ANY, version_string.c_str(), wxDefaultPosition, wxDefaultSize); - wxFont version_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + wxFont version_font = GetFont(); #ifdef __WXMSW__ - version_font.SetPointSize(9); + version_font.SetPointSize(version_font.GetPointSize()-1); #else version_font.SetPointSize(11); #endif @@ -74,18 +77,18 @@ AboutDialog::AboutDialog() } // text - wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO/*NEVER*/); + m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO/*NEVER*/); { - html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit())); - wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + m_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit())); + wxFont font = GetFont(); const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue()); auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()); const int fs = font.GetPointSize()-1; int size[] = {fs,fs,fs,fs,fs,fs,fs}; - html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); - html->SetBorders(2); + m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); + m_html->SetBorders(2); const auto text = wxString::Format( "" "" @@ -101,9 +104,9 @@ AboutDialog::AboutDialog() "" "" "", bgr_clr_str, text_clr_str, text_clr_str); - html->SetPage(text); - vsizer->Add(html, 1, wxEXPAND | wxBOTTOM, 10); - html->Bind(wxEVT_HTML_LINK_CLICKED, &AboutDialog::onLinkClicked, this); + m_html->SetPage(text); + vsizer->Add(m_html, 1, wxEXPAND | wxBOTTOM, 10); + m_html->Bind(wxEVT_HTML_LINK_CLICKED, &AboutDialog::onLinkClicked, this); } wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxCLOSE); @@ -118,6 +121,31 @@ AboutDialog::AboutDialog() main_sizer->SetSizeHints(this); } +void AboutDialog::on_dpi_changed(const wxRect &suggested_rect) +{ + m_logo_bitmap.msw_rescale(); + m_logo->SetBitmap(m_logo_bitmap.bmp()); + + const wxFont& font = GetFont(); + const int fs = font.GetPointSize() - 1; + int font_size[] = { fs, fs, fs, fs, fs, fs, fs }; + m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size); + + const int& em = em_unit(); + + msw_buttons_rescale(this, em, { wxID_CLOSE }); + + m_html->SetMinSize(wxSize(-1, 16 * em)); + m_html->Refresh(); + + const wxSize& size = wxSize(65 * em, 30 * em); + + SetMinSize(size); + Fit(); + + Refresh(); +} + void AboutDialog::onLinkClicked(wxHtmlLinkEvent &event) { wxLaunchDefaultBrowser(event.GetLinkInfo().GetHref()); diff --git a/src/slic3r/GUI/AboutDialog.hpp b/src/slic3r/GUI/AboutDialog.hpp index 01f7564c5..7019b21f6 100644 --- a/src/slic3r/GUI/AboutDialog.hpp +++ b/src/slic3r/GUI/AboutDialog.hpp @@ -7,6 +7,9 @@ #include #include +#include "GUI_Utils.hpp" +#include "wxExtensions.hpp" + namespace Slic3r { namespace GUI { @@ -20,10 +23,16 @@ private: void onRepaint(wxEvent &event); }; -class AboutDialog : public wxDialog +class AboutDialog : public DPIDialog { + ScalableBitmap m_logo_bitmap; + wxHtmlWindow* m_html; + wxStaticBitmap* m_logo; public: AboutDialog(); + +protected: + void on_dpi_changed(const wxRect &suggested_rect) override; private: void onLinkClicked(wxHtmlLinkEvent &event); diff --git a/src/slic3r/GUI/BedShapeDialog.cpp b/src/slic3r/GUI/BedShapeDialog.cpp index 7bbf1ac7f..00ebf117c 100644 --- a/src/slic3r/GUI/BedShapeDialog.cpp +++ b/src/slic3r/GUI/BedShapeDialog.cpp @@ -18,6 +18,7 @@ namespace GUI { void BedShapeDialog::build_dialog(ConfigOptionPoints* default_pt) { + SetFont(wxGetApp().normal_font()); m_panel = new BedShapePanel(this); m_panel->build_panel(default_pt); @@ -36,6 +37,22 @@ void BedShapeDialog::build_dialog(ConfigOptionPoints* default_pt) })); } +void BedShapeDialog::on_dpi_changed(const wxRect &suggested_rect) +{ + const int& em = em_unit(); + m_panel->m_shape_options_book->SetMinSize(wxSize(25 * em, -1)); + + for (auto og : m_panel->m_optgroups) + og->msw_rescale(); + + const wxSize& size = wxSize(50 * em, -1); + + SetMinSize(size); + SetSize(size); + + Refresh(); +} + void BedShapePanel::build_panel(ConfigOptionPoints* default_pt) { // on_change(nullptr); @@ -125,7 +142,7 @@ ConfigOptionsGroupShp BedShapePanel::init_shape_options_page(wxString title) ConfigOptionsGroupShp optgroup; optgroup = std::make_shared(panel, _(L("Settings"))); - optgroup->label_width = 10*wxGetApp().em_unit();//100; + optgroup->label_width = 10; optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) { update_shape(); }; diff --git a/src/slic3r/GUI/BedShapeDialog.hpp b/src/slic3r/GUI/BedShapeDialog.hpp index 538fccc34..72e50a05d 100644 --- a/src/slic3r/GUI/BedShapeDialog.hpp +++ b/src/slic3r/GUI/BedShapeDialog.hpp @@ -16,11 +16,8 @@ namespace GUI { using ConfigOptionsGroupShp = std::shared_ptr; class BedShapePanel : public wxPanel { - wxChoicebook* m_shape_options_book; Bed_2D* m_canvas; - std::vector m_optgroups; - public: BedShapePanel(wxWindow* parent) : wxPanel(parent, wxID_ANY) {} ~BedShapePanel() {} @@ -35,18 +32,25 @@ public: // Returns the resulting bed shape polygon. This value will be stored to the ini file. std::vector GetValue() { return m_canvas->m_bed_shape; } + + wxChoicebook* m_shape_options_book; + std::vector m_optgroups; + }; -class BedShapeDialog : public wxDialog +class BedShapeDialog : public DPIDialog { BedShapePanel* m_panel; public: - BedShapeDialog(wxWindow* parent) : wxDialog(parent, wxID_ANY, _(L("Bed Shape")), + BedShapeDialog(wxWindow* parent) : DPIDialog(parent, wxID_ANY, _(L("Bed Shape")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) {} ~BedShapeDialog() {} void build_dialog(ConfigOptionPoints* default_pt); std::vector GetValue() { return m_panel->GetValue(); } + +protected: + void on_dpi_changed(const wxRect &suggested_rect) override; }; } // GUI diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index bb4145107..db116a5dd 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -23,6 +23,8 @@ void BitmapCache::clear() { for (std::pair &bitmap : m_map) delete bitmap.second; + + m_map.clear(); } static wxBitmap wxImage_to_wxBitmap_with_alpha(wxImage &&image, float scale = 1.0f) @@ -259,9 +261,6 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency) { - width = width * 0.1f * Slic3r::GUI::wxGetApp().em_unit() + 0.5f; - height = height * 0.1f * Slic3r::GUI::wxGetApp().em_unit() + 0.5f; - wxImage image(width, height); image.InitAlpha(); unsigned char* imgdata = image.GetData(); diff --git a/src/slic3r/GUI/ButtonsDescription.cpp b/src/slic3r/GUI/ButtonsDescription.cpp index fb4c24286..9def34749 100644 --- a/src/slic3r/GUI/ButtonsDescription.cpp +++ b/src/slic3r/GUI/ButtonsDescription.cpp @@ -7,6 +7,7 @@ #include "GUI.hpp" #include "GUI_App.hpp" #include "I18N.hpp" +#include "wxExtensions.hpp" namespace Slic3r { namespace GUI { @@ -23,7 +24,7 @@ ButtonsDescription::ButtonsDescription(wxWindow* parent, t_icon_descriptions* ic // Icon description for (auto pair : *m_icon_descriptions) { - auto icon = new wxStaticBitmap(this, wxID_ANY, *pair.first); + auto icon = new wxStaticBitmap(this, wxID_ANY, /***/pair.first->bmp()); grid_sizer->Add(icon, -1, wxALIGN_CENTRE_VERTICAL); std::istringstream f(pair.second); diff --git a/src/slic3r/GUI/ButtonsDescription.hpp b/src/slic3r/GUI/ButtonsDescription.hpp index 81baaf191..69005d2a5 100644 --- a/src/slic3r/GUI/ButtonsDescription.hpp +++ b/src/slic3r/GUI/ButtonsDescription.hpp @@ -4,10 +4,12 @@ #include #include +class ScalableBitmap; + namespace Slic3r { namespace GUI { -using t_icon_descriptions = std::vector>; +using t_icon_descriptions = std::vector>; class ButtonsDescription : public wxDialog { @@ -15,8 +17,6 @@ class ButtonsDescription : public wxDialog public: ButtonsDescription(wxWindow* parent, t_icon_descriptions* icon_descriptions); ~ButtonsDescription() {} - - }; } // GUI diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.cpp b/src/slic3r/GUI/ConfigSnapshotDialog.cpp index 205e84f57..b8634918b 100644 --- a/src/slic3r/GUI/ConfigSnapshotDialog.cpp +++ b/src/slic3r/GUI/ConfigSnapshotDialog.cpp @@ -6,6 +6,7 @@ #include "libslic3r/Utils.hpp" #include "GUI_App.hpp" +#include "wxExtensions.hpp" namespace Slic3r { namespace GUI { @@ -95,21 +96,26 @@ static wxString generate_html_page(const Config::SnapshotDB &snapshot_db, const } ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db, const wxString &on_snapshot) - : wxDialog(NULL, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition, + : DPIDialog(NULL, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition, wxSize(45 * wxGetApp().em_unit(), 40 * wxGetApp().em_unit()), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX) { + this->SetFont(wxGetApp().normal_font()); this->SetBackgroundColour(*wxWHITE); wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); this->SetSizer(vsizer); // text - wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO); + html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO); { - wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + wxFont font = wxGetApp().normal_font();//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); #ifdef __WXMSW__ - int size[] = {8,8,8,8,11,11,11}; + const int fs = font.GetPointSize(); + const int fs1 = static_cast(0.8f*fs); + const int fs2 = static_cast(1.1f*fs); + int size[] = {fs1, fs1, fs1, fs1, fs2, fs2, fs2}; +// int size[] = {8,8,8,8,11,11,11}; #else int size[] = {11,11,11,11,14,14,14}; #endif @@ -127,6 +133,28 @@ ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db vsizer->Add(buttons, 0, wxEXPAND | wxRIGHT | wxBOTTOM, 3); } +void ConfigSnapshotDialog::on_dpi_changed(const wxRect &suggested_rect) +{ + wxFont font = GetFont(); + const int fs = font.GetPointSize(); + const int fs1 = static_cast(0.8f*fs); + const int fs2 = static_cast(1.1f*fs); + int font_size[] = { fs1, fs1, fs1, fs1, fs2, fs2, fs2 }; + + html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size); + html->Refresh(); + + const int& em = em_unit(); + + msw_buttons_rescale(this, em, { wxID_CLOSE}); + + const wxSize& size = wxSize(45 * em, 40 * em); + SetMinSize(size); + Fit(); + + Refresh(); +} + void ConfigSnapshotDialog::onLinkClicked(wxHtmlLinkEvent &event) { m_snapshot_to_activate = event.GetLinkInfo().GetHref(); diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.hpp b/src/slic3r/GUI/ConfigSnapshotDialog.hpp index f43fb8ed1..9b8b69ecf 100644 --- a/src/slic3r/GUI/ConfigSnapshotDialog.hpp +++ b/src/slic3r/GUI/ConfigSnapshotDialog.hpp @@ -2,6 +2,7 @@ #define slic3r_GUI_ConfigSnapshotDialog_hpp_ #include "GUI.hpp" +#include "GUI_Utils.hpp" #include #include @@ -14,18 +15,23 @@ namespace Config { class SnapshotDB; } -class ConfigSnapshotDialog : public wxDialog +class ConfigSnapshotDialog : public DPIDialog { public: ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db, const wxString &id); const std::string& snapshot_to_activate() const { return m_snapshot_to_activate; } +protected: + void on_dpi_changed(const wxRect &suggested_rect) override; + private: void onLinkClicked(wxHtmlLinkEvent &event); void onCloseDialog(wxEvent &); // If set, it contains a snapshot ID to be restored after the dialog closes. std::string m_snapshot_to_activate; + + wxHtmlWindow* html; }; } // namespace GUI diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 5da320830..93cf1c73f 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include "libslic3r/Utils.hpp" @@ -81,11 +82,17 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt for (const auto &model : models) { if (! filter(model)) { continue; } - wxBitmap bitmap(GUI::from_u8(Slic3r::var((boost::format("printers/%1%_%2%.png") % vendor.id % model.id).str())), wxBITMAP_TYPE_PNG); + wxBitmap bitmap; + int bitmap_width = 0; + const wxString bitmap_file = GUI::from_u8(Slic3r::var((boost::format("printers/%1%_%2%.png") % vendor.id % model.id).str())); + if (wxFileExists(bitmap_file)) { + bitmap.LoadFile(bitmap_file, wxBITMAP_TYPE_PNG); + bitmap_width = bitmap.GetWidth(); + } auto *title = new wxStaticText(this, wxID_ANY, model.name, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); title->SetFont(font_name); - const int wrap_width = std::max((int)MODEL_MIN_WRAP, bitmap.GetWidth()); + const int wrap_width = std::max((int)MODEL_MIN_WRAP, bitmap_width); title->Wrap(wrap_width); current_row_width += wrap_width; @@ -187,6 +194,9 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt title_sizer->Add(sel_all_std, 0, wxRIGHT, BTN_SPACING); title_sizer->Add(sel_all, 0, wxRIGHT, BTN_SPACING); title_sizer->Add(sel_none); + + // fill button indexes used later for buttons rescaling + m_button_indexes = { sel_all_std->GetId(), sel_all->GetId(), sel_none->GetId() }; } sizer->Add(title_sizer, 0, wxEXPAND | wxBOTTOM, BTN_SPACING); @@ -399,16 +409,20 @@ PageUpdate::PageUpdate(ConfigWizard *parent) auto *box_slic3r = new wxCheckBox(this, wxID_ANY, _(L("Check for application updates"))); box_slic3r->SetValue(app_config->get("version_check") == "1"); append(box_slic3r); - append_text(wxString::Format(_(L("If enabled, Slic3r checks for new versions of %s online. When a new version becomes available, " - "a notification is displayed at the next application startup (never during program usage). " - "This is only a notification mechanisms, no automatic installation is done.")), SLIC3R_APP_NAME)); + append_text(wxString::Format(_(L( + "If enabled, %s checks for new application versions online. When a new version becomes available, " + "a notification is displayed at the next application startup (never during program usage). " + "This is only a notification mechanisms, no automatic installation is done.")), SLIC3R_APP_NAME)); append_spacer(VERTICAL_SPACING); auto *box_presets = new wxCheckBox(this, wxID_ANY, _(L("Update built-in Presets automatically"))); box_presets->SetValue(app_config->get("preset_update") == "1"); append(box_presets); - append_text(_(L("If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup."))); + append_text(wxString::Format(_(L( + "If enabled, %s downloads updates of built-in system presets in the background." + "These updates are downloaded into a separate temporary location." + "When a new preset version becomes available it is offered at application startup.")), SLIC3R_APP_NAME)); const auto text_bold = _(L("Updates are never applied without user's consent and never overwrite user's customized settings.")); auto *label_bold = new wxStaticText(this, wxID_ANY, text_bold); label_bold->SetFont(boldfont); @@ -635,19 +649,24 @@ void PageTemperatures::apply_custom_config(DynamicPrintConfig &config) ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent) : wxPanel(parent) - // XXX: use create_scaled_bitmap: + /* #ys_FIXME_delete_after_testing by VK , bg(GUI::from_u8(Slic3r::var("Slic3r_192px_transparent.png")), wxBITMAP_TYPE_PNG) , bullet_black(GUI::from_u8(Slic3r::var("bullet_black.png")), wxBITMAP_TYPE_PNG) , bullet_blue(GUI::from_u8(Slic3r::var("bullet_blue.png")), wxBITMAP_TYPE_PNG) , bullet_white(GUI::from_u8(Slic3r::var("bullet_white.png")), wxBITMAP_TYPE_PNG) + */ + , bg(ScalableBitmap(parent, "Slic3r_192px_transparent.png", 192)) + , bullet_black(ScalableBitmap(parent, "bullet_black.png")) + , bullet_blue(ScalableBitmap(parent, "bullet_blue.png")) + , bullet_white(ScalableBitmap(parent, "bullet_white.png")) , item_active(0) , item_hover(-1) , last_page((size_t)-1) { - SetMinSize(bg.GetSize()); + SetMinSize(bg.bmp().GetSize()); const wxSize size = GetTextExtent("m"); - em = size.x; + em_w = size.x; em_h = size.y; // Add logo bitmap. @@ -656,7 +675,10 @@ ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent) // In some cases it didn't work at all. And so wxStaticBitmap is used here instead, // because it has all the platform quirks figured out. auto *sizer = new wxBoxSizer(wxVERTICAL); + /* #ys_FIXME_delete_after_testing by VK auto *logo = new wxStaticBitmap(this, wxID_ANY, bg); + */ + logo = new wxStaticBitmap(this, wxID_ANY, bg.bmp()); sizer->AddStretchSpacer(); sizer->Add(logo); SetSizer(sizer); @@ -764,8 +786,12 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) wxPaintDC dc(this); + /* #ys_FIXME_delete_after_testing by VK const auto bullet_w = bullet_black.GetSize().GetWidth(); const auto bullet_h = bullet_black.GetSize().GetHeight(); + */ + const auto bullet_w = bullet_black.bmp().GetSize().GetWidth(); + const auto bullet_h = bullet_black.bmp().GetSize().GetHeight(); const int yoff_icon = bullet_h < em_h ? (em_h - bullet_h) / 2 : 0; const int yoff_text = bullet_h > em_h ? (bullet_h - em_h) / 2 : 0; const int yinc = item_height(); @@ -775,15 +801,21 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) unsigned y = 0; for (size_t i = 0; i < items.size(); i++) { const Item& item = items[i]; - unsigned x = em/2 + item.indent * em; + unsigned x = em_w/2 + item.indent * em_w; if (i == item_active || item_hover >= 0 && i == (size_t)item_hover) { + /*#ys_FIXME_delete_after_testing by VK dc.DrawBitmap(bullet_blue, x, y + yoff_icon, false); } else if (i < item_active) { dc.DrawBitmap(bullet_black, x, y + yoff_icon, false); } else if (i > item_active) { dc.DrawBitmap(bullet_white, x, y + yoff_icon, false); } + */ + dc.DrawBitmap(bullet_blue.bmp(), x, y + yoff_icon, false); + } + else if (i < item_active) { dc.DrawBitmap(bullet_black.bmp(), x, y + yoff_icon, false); } + else if (i > item_active) { dc.DrawBitmap(bullet_white.bmp(), x, y + yoff_icon, false); } - x += + bullet_w + em/2; + x += + bullet_w + em_w/2; const auto text_size = dc.GetTextExtent(item.label); dc.DrawText(item.label, x, y + yoff_text); @@ -794,6 +826,7 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) if (GetMinSize().x < index_width) { CallAfter([this, index_width]() { SetMinSize(wxSize(index_width, GetMinSize().y)); + Refresh(); }); } } @@ -813,6 +846,18 @@ void ConfigWizardIndex::on_mouse_move(wxMouseEvent &evt) evt.Skip(); } +void ConfigWizardIndex::msw_rescale() +{ + bg.msw_rescale(); + SetMinSize(bg.bmp().GetSize()); + logo->SetBitmap(bg.bmp()); + + bullet_black.msw_rescale(); + bullet_blue.msw_rescale(); + bullet_white.msw_rescale(); + Refresh(); +} + // priv @@ -987,9 +1032,10 @@ void ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese // Public ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason) - : wxDialog(parent, wxID_ANY, _(name().ToStdString()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + : DPIDialog(parent, wxID_ANY, _(name().ToStdString()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) , p(new priv(this)) { + this->SetFont(wxGetApp().normal_font()); p->run_reason = reason; p->load_vendors(); @@ -1014,8 +1060,8 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason) topsizer->AddSpacer(INDEX_MARGIN); topsizer->Add(p->hscroll, 1, wxEXPAND); - auto *btn_sel_all = new wxButton(this, wxID_ANY, _(L("Select all standard printers"))); - p->btnsizer->Add(btn_sel_all); + p->btn_sel_all = new wxButton(this, wxID_ANY, _(L("Select all standard printers"))); + p->btnsizer->Add(p->btn_sel_all); p->btn_prev = new wxButton(this, wxID_ANY, _(L("< &Back"))); p->btn_next = new wxButton(this, wxID_ANY, _(L("&Next >"))); @@ -1073,7 +1119,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason) 9*disp_rect.width / 10, 9*disp_rect.height / 10); - const int width_hint = p->index->GetSize().GetWidth() + p->page_fff->get_width() + 300; // XXX: magic constant, I found no better solution + const int width_hint = p->index->GetSize().GetWidth() + p->page_fff->get_width() + 30 * p->em(); // XXX: magic constant, I found no better solution if (width_hint < window_rect.width) { window_rect.x += (window_rect.width - width_hint) / 2; window_rect.width = width_hint; @@ -1087,7 +1133,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason) p->btn_finish->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { this->EndModal(wxID_OK); }); p->btn_finish->Hide(); - btn_sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { + p->btn_sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { p->page_fff->select_all(true, false); p->page_msla->select_all(true, false); p->index->go_to(p->page_update); @@ -1133,5 +1179,25 @@ const wxString& ConfigWizard::name(const bool from_menu/* = false*/) return from_menu ? config_wizard_name_menu : config_wizard_name; } +void ConfigWizard::on_dpi_changed(const wxRect &suggested_rect) +{ + p->index->msw_rescale(); + + const int& em = em_unit(); + + msw_buttons_rescale(this, em, { wxID_APPLY, + wxID_CANCEL, + p->btn_sel_all->GetId(), + p->btn_next->GetId(), + p->btn_prev->GetId() }); + + for (auto printer_picker: p->page_fff->printer_pickers) + msw_buttons_rescale(this, em, printer_picker->get_button_indexes()); + + // FIXME VK SetSize(???) + + Refresh(); +} + } } diff --git a/src/slic3r/GUI/ConfigWizard.hpp b/src/slic3r/GUI/ConfigWizard.hpp index c9ee05529..b707e525b 100644 --- a/src/slic3r/GUI/ConfigWizard.hpp +++ b/src/slic3r/GUI/ConfigWizard.hpp @@ -5,6 +5,8 @@ #include +#include "GUI_Utils.hpp" + namespace Slic3r { class PresetBundle; @@ -13,7 +15,7 @@ class PresetUpdater; namespace GUI { -class ConfigWizard: public wxDialog +class ConfigWizard: public DPIDialog { public: // Why is the Wizard run @@ -35,6 +37,10 @@ public: bool run(PresetBundle *preset_bundle, const PresetUpdater *updater); static const wxString& name(const bool from_menu = false); + +protected: + void on_dpi_changed(const wxRect &suggested_rect) override ; + private: struct priv; std::unique_ptr p; diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index df7602adf..95411e2aa 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -69,8 +69,11 @@ struct PrinterPicker: wxPanel void on_checkbox(const Checkbox *cbox, bool checked); int get_width() const { return width; } + const std::vector& get_button_indexes() { return m_button_indexes; } private: int width; + + std::vector m_button_indexes; }; struct ConfigWizardPage: wxPanel @@ -210,7 +213,9 @@ public: void go_to(ConfigWizardPage *page); void clear(); + void msw_rescale(); + int em() const { return em_w; } private: struct Item { @@ -221,20 +226,29 @@ private: bool operator==(ConfigWizardPage *page) const { return this->page == page; } }; - int em; + int em_w; int em_h; - + /* #ys_FIXME_delete_after_testing by VK const wxBitmap bg; const wxBitmap bullet_black; const wxBitmap bullet_blue; const wxBitmap bullet_white; + */ + ScalableBitmap bg; + ScalableBitmap bullet_black; + ScalableBitmap bullet_blue; + ScalableBitmap bullet_white; + wxStaticBitmap* logo; std::vector items; size_t item_active; ssize_t item_hover; size_t last_page; - int item_height() const { return std::max(bullet_black.GetSize().GetHeight(), em) + em; } + /* #ys_FIXME_delete_after_testing by VK + int item_height() const { return std::max(bullet_black.GetSize().GetHeight(), em_w) + em_w; } + */ + int item_height() const { return std::max(bullet_black.bmp().GetSize().GetHeight(), em_w) + em_w; } void on_paint(wxPaintEvent &evt); void on_mouse_move(wxMouseEvent &evt); @@ -256,6 +270,7 @@ struct ConfigWizard::priv wxBoxSizer *btnsizer = nullptr; ConfigWizardPage *page_current = nullptr; ConfigWizardIndex *index = nullptr; + wxButton *btn_sel_all = nullptr; wxButton *btn_prev = nullptr; wxButton *btn_next = nullptr; wxButton *btn_finish = nullptr; @@ -286,6 +301,8 @@ struct ConfigWizard::priv void on_custom_setup(bool custom_wanted); void apply_config(AppConfig *app_config, PresetBundle *preset_bundle, const PresetUpdater *updater); + + int em() const { return index->em(); } }; diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 6da0800d9..738ec2e00 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -33,21 +33,11 @@ wxString double_to_string(double const value, const int max_precision /*= 4*/) void Field::PostInitialize() { auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); - m_Undo_btn = new MyButton(m_parent, wxID_ANY, "", wxDefaultPosition,wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER); - m_Undo_to_sys_btn = new MyButton(m_parent, wxID_ANY, "", wxDefaultPosition,wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER); - if (wxMSW) { - m_Undo_btn->SetBackgroundColour(color); - m_Undo_btn->SetBackgroundStyle(wxBG_STYLE_PAINT); - m_Undo_to_sys_btn->SetBackgroundColour(color); - m_Undo_to_sys_btn->SetBackgroundStyle(wxBG_STYLE_PAINT); - } - m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); })); - m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); })); + m_Undo_btn = new RevertButton(m_parent, "bullet_white.png"); + m_Undo_to_sys_btn = new RevertButton(m_parent, "bullet_white.png"); - //set default bitmap - wxBitmap bmp = create_scaled_bitmap(m_parent, "bullet_white.png"); - set_undo_bitmap(&bmp); - set_undo_to_sys_bitmap(&bmp); + m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); })); + m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); })); switch (m_opt.type) { @@ -65,6 +55,9 @@ void Field::PostInitialize() break; } + // initialize m_unit_value + m_em_unit = em_unit(m_parent); + BUILD(); } @@ -212,8 +205,8 @@ bool is_defined_input_value(wxWindow* win, const ConfigOptionType& type) void TextCtrl::BUILD() { auto size = wxSize(wxDefaultSize); - if (m_opt.height >= 0) size.SetHeight(m_opt.height); - if (m_opt.width >= 0) size.SetWidth(m_opt.width); + if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); wxString text_value = wxString(""); @@ -357,6 +350,21 @@ boost::any& TextCtrl::get_value() return m_value; } +void TextCtrl::msw_rescale() +{ + Field::msw_rescale(); + auto size = wxSize(wxDefaultSize); + if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); + + if (size != wxDefaultSize) + { + wxTextCtrl* field = dynamic_cast(window); + field->SetMinSize(size); + } + +} + void TextCtrl::enable() { dynamic_cast(window)->Enable(); dynamic_cast(window)->SetEditable(true); } void TextCtrl::disable() { dynamic_cast(window)->Disable(); dynamic_cast(window)->SetEditable(false); } @@ -371,15 +379,16 @@ void TextCtrl::change_field_value(wxEvent& event) void CheckBox::BUILD() { auto size = wxSize(wxDefaultSize); - if (m_opt.height >= 0) size.SetHeight(m_opt.height); - if (m_opt.width >= 0) size.SetWidth(m_opt.width); + if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); bool check_value = m_opt.type == coBool ? m_opt.default_value->getBool() : m_opt.type == coBools ? static_cast(m_opt.default_value)->get_at(m_opt_idx) : false; - auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size); + // Set Label as a string of at least one space simbol to correct system scaling of a CheckBox + auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(" "), wxDefaultPosition, size); temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); temp->SetBackgroundStyle(wxBG_STYLE_PAINT); temp->SetValue(check_value); @@ -404,12 +413,20 @@ boost::any& CheckBox::get_value() return m_value; } +void CheckBox::msw_rescale() +{ + Field::msw_rescale(); + + wxCheckBox* field = dynamic_cast(window); + field->SetMinSize(wxSize(-1, int(1.5f*field->GetFont().GetPixelSize().y +0.5f))); +} + int undef_spin_val = -9999; //! Probably, It's not necessary void SpinCtrl::BUILD() { auto size = wxSize(wxDefaultSize); - if (m_opt.height >= 0) size.SetHeight(m_opt.height); - if (m_opt.width >= 0) size.SetWidth(m_opt.width); + if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); wxString text_value = wxString(""); int default_value = 0; @@ -504,10 +521,18 @@ void SpinCtrl::propagate_value() on_change_field(); } +void SpinCtrl::msw_rescale() +{ + Field::msw_rescale(); + + wxSpinCtrl* field = dynamic_cast(window); + field->SetMinSize(wxSize(-1, int(1.9f*field->GetFont().GetPixelSize().y))); +} + void Choice::BUILD() { - wxSize size(15 * wxGetApp().em_unit(), -1); - if (m_opt.height >= 0) size.SetHeight(m_opt.height); - if (m_opt.width >= 0) size.SetWidth(m_opt.width); + wxSize size(m_width * m_em_unit, -1); + if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); wxBitmapComboBox* temp; if (!m_opt.gui_type.empty() && m_opt.gui_type.compare("select_open") != 0) { @@ -816,11 +841,55 @@ boost::any& Choice::get_value() return m_value; } +void Choice::msw_rescale() +{ + Field::msw_rescale(); + + wxBitmapComboBox* field = dynamic_cast(window); + + const wxString selection = field->GetString(field->GetSelection()); + + /* To correct scaling (set new controll size) of a wxBitmapCombobox + * we need to refill control with new bitmaps. So, in our case : + * 1. clear conrol + * 2. add content + * 3. add scaled "empty" bitmap to the at least one item + */ + field->Clear(); + wxSize size(wxDefaultSize); + size.SetWidth((m_opt.width > 0 ? m_opt.width : m_width) * m_em_unit); + + // Set rescaled min height to correct layout + field->SetMinSize(wxSize(-1, int(1.5f*field->GetFont().GetPixelSize().y + 0.5f))); + // Set rescaled size + field->SetSize(size); + + size_t idx, counter = idx = 0; + if (m_opt.enum_labels.empty() && m_opt.enum_values.empty()) {} + else{ + for (auto el : m_opt.enum_labels.empty() ? m_opt.enum_values : m_opt.enum_labels) { + const wxString& str = _(el); + field->Append(str); + if (el.compare(selection) == 0) + idx = counter; + ++counter; + } + } + + wxBitmap empty_bmp(1, field->GetFont().GetPixelSize().y + 2); + empty_bmp.SetWidth(0); + field->SetItemBitmap(0, empty_bmp); + + idx == m_opt.enum_values.size() ? + field->SetValue(selection) : + field->SetSelection(idx); +} + void ColourPicker::BUILD() { auto size = wxSize(wxDefaultSize); - if (m_opt.height >= 0) size.SetHeight(m_opt.height); - if (m_opt.width >= 0) size.SetWidth(m_opt.width); + if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); // Validate the color wxString clr_str(static_cast(m_opt.default_value)->get_at(m_opt_idx)); @@ -855,7 +924,7 @@ void PointCtrl::BUILD() { auto temp = new wxBoxSizer(wxHORIZONTAL); - const wxSize field_size(4 * wxGetApp().em_unit(), -1); + const wxSize field_size(4 * m_em_unit, -1); auto default_pt = static_cast(m_opt.default_value)->values.at(0); double val = default_pt(0); @@ -898,6 +967,16 @@ void PointCtrl::BUILD() y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y)); } +void PointCtrl::msw_rescale() +{ + Field::msw_rescale(); + + const wxSize field_size(4 * m_em_unit, -1); + + x_textctrl->SetMinSize(field_size); + y_textctrl->SetMinSize(field_size); +} + void PointCtrl::propagate_value(wxTextCtrl* win) { if (!win->GetValue().empty()) @@ -943,8 +1022,8 @@ boost::any& PointCtrl::get_value() void StaticText::BUILD() { auto size = wxSize(wxDefaultSize); - if (m_opt.height >= 0) size.SetHeight(m_opt.height); - if (m_opt.width >= 0) size.SetWidth(m_opt.width); + if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); const wxString legend(static_cast(m_opt.default_value)->value); auto temp = new wxStaticText(m_parent, wxID_ANY, legend, wxDefaultPosition, size, wxST_ELLIPSIZE_MIDDLE); @@ -958,6 +1037,21 @@ void StaticText::BUILD() temp->SetToolTip(get_tooltip_text(legend)); } +void StaticText::msw_rescale() +{ + Field::msw_rescale(); + + auto size = wxSize(wxDefaultSize); + if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); + + if (size != wxDefaultSize) + { + wxStaticText* field = dynamic_cast(window); + field->SetSize(size); + } +} + void SliderCtrl::BUILD() { auto size = wxSize(wxDefaultSize); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 128d60d47..88ea39036 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -19,6 +19,7 @@ #include "libslic3r/Utils.hpp" #include "GUI.hpp" +#include "wxExtensions.hpp" #ifdef __WXMSW__ #define wxMSW true @@ -36,19 +37,24 @@ using t_back_to_init = std::function; wxString double_to_string(double const value, const int max_precision = 4); -class MyButton : public wxButton +class RevertButton : public ScalableButton { bool hidden = false; // never show button if it's hidden ones public: - MyButton() {} - MyButton(wxWindow* parent, wxWindowID id, const wxString& label = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr) - { - this->Create(parent, id, label, pos, size, style, validator, name); - } +// RevertButton() {} +// RevertButton(wxWindow* parent, wxWindowID id, const wxString& label = wxEmptyString, +// const wxPoint& pos = wxDefaultPosition, +// const wxSize& size = wxDefaultSize, long style = 0, +// const wxValidator& validator = wxDefaultValidator, +// const wxString& name = wxTextCtrlNameStr) +// { +// this->Create(parent, id, label, pos, size, style, validator, name); +// } + RevertButton( + wxWindow *parent, + const std::string& icon_name = "" + ) : + ScalableButton(parent, wxID_ANY, icon_name) {} // overridden from wxWindow base class virtual bool @@ -154,19 +160,19 @@ public: return std::move(p); //!p; } - bool set_undo_bitmap(const wxBitmap *bmp) { + bool set_undo_bitmap(const ScalableBitmap *bmp) { if (m_undo_bitmap != bmp) { m_undo_bitmap = bmp; - m_Undo_btn->SetBitmap(*bmp); + m_Undo_btn->SetBitmap_(*bmp); return true; } return false; } - bool set_undo_to_sys_bitmap(const wxBitmap *bmp) { + bool set_undo_to_sys_bitmap(const ScalableBitmap *bmp) { if (m_undo_to_sys_bitmap != bmp) { m_undo_to_sys_bitmap = bmp; - m_Undo_to_sys_btn->SetBitmap(*bmp); + m_Undo_to_sys_btn->SetBitmap_(*bmp); return true; } return false; @@ -211,15 +217,23 @@ public: m_side_text = side_text; } + virtual void msw_rescale() { + m_Undo_to_sys_btn->msw_rescale(); + m_Undo_btn->msw_rescale(); + + // update em_unit value + m_em_unit = em_unit(m_parent); + } + protected: - MyButton* m_Undo_btn = nullptr; + RevertButton* m_Undo_btn = nullptr; // Bitmap and Tooltip text for m_Undo_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one. - const wxBitmap* m_undo_bitmap = nullptr; - const wxString* m_undo_tooltip = nullptr; - MyButton* m_Undo_to_sys_btn = nullptr; + const ScalableBitmap* m_undo_bitmap = nullptr; + const wxString* m_undo_tooltip = nullptr; + RevertButton* m_Undo_to_sys_btn = nullptr; // Bitmap and Tooltip text for m_Undo_to_sys_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one. - const wxBitmap* m_undo_to_sys_bitmap = nullptr; - const wxString* m_undo_to_sys_tooltip = nullptr; + const ScalableBitmap* m_undo_to_sys_bitmap = nullptr; + const wxString* m_undo_to_sys_tooltip = nullptr; wxStaticText* m_Label = nullptr; // Color for Label. The wxColour will be updated only if the new wxColour pointer differs from the currently rendered one. @@ -230,6 +244,8 @@ protected: // current value boost::any m_value; + int m_em_unit; + bool bEnterPressed = false; friend class OptionsGroup; @@ -273,6 +289,8 @@ public: } boost::any& get_value() override; + + void msw_rescale() override; virtual void enable(); virtual void disable(); @@ -301,6 +319,8 @@ public: } boost::any& get_value() override; + void msw_rescale() override; + void enable() override { dynamic_cast(window)->Enable(); } void disable() override { dynamic_cast(window)->Disable(); } wxWindow* getWindow() override { return window; } @@ -337,6 +357,8 @@ public: return m_value = tmp_value; } + void msw_rescale() override; + void enable() override { dynamic_cast(window)->Enable(); } void disable() override { dynamic_cast(window)->Disable(); } wxWindow* getWindow() override { return window; } @@ -344,6 +366,7 @@ public: class Choice : public Field { using Field::Field; + int m_width{ 15 }; public: Choice(const ConfigOptionDef& opt, const t_config_option_key& id) : Field(opt, id) {} Choice(wxWindow* parent, const ConfigOptionDef& opt, const t_config_option_key& id) : Field(parent, opt, id) {} @@ -363,6 +386,8 @@ public: void set_values(const std::vector &values); boost::any& get_value() override; + void msw_rescale() override; + void enable() override { dynamic_cast(window)->Enable(); }; void disable() override{ dynamic_cast(window)->Disable(); }; wxWindow* getWindow() override { return window; } @@ -414,6 +439,8 @@ public: void set_value(const boost::any& value, bool change_event = false); boost::any& get_value() override; + void msw_rescale() override; + void enable() override { x_textctrl->Enable(); y_textctrl->Enable(); } @@ -446,6 +473,8 @@ public: boost::any& get_value()override { return m_value; } + void msw_rescale() override; + void enable() override { dynamic_cast(window)->Enable(); }; void disable() override{ dynamic_cast(window)->Disable(); }; wxWindow* getWindow() override { return window; } diff --git a/src/slic3r/GUI/FirmwareDialog.cpp b/src/slic3r/GUI/FirmwareDialog.cpp index 8095a3237..5de5626db 100644 --- a/src/slic3r/GUI/FirmwareDialog.cpp +++ b/src/slic3r/GUI/FirmwareDialog.cpp @@ -18,6 +18,7 @@ #include "MsgDialog.hpp" #include "../Utils/HexFile.hpp" #include "../Utils/Serial.hpp" +#include "wxExtensions.hpp" // wx includes need to come after asio because of the WinSock.h problem #include "FirmwareDialog.hpp" @@ -118,6 +119,10 @@ struct FirmwareDialog::priv wxTimer timer_pulse; + int min_width; + int min_height; + int min_height_expanded; + // Async modal dialog during flashing std::mutex mutex; int modal_response; @@ -732,23 +737,21 @@ const char* FirmwareDialog::priv::avr109_dev_name(Avr109Pid usb_pid) { // Public FirmwareDialog::FirmwareDialog(wxWindow *parent) : - wxDialog(parent, wxID_ANY, _(L("Firmware flasher")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), + GUI::DPIDialog(parent, wxID_ANY, _(L("Firmware flasher")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), p(new priv(this)) { - enum { - DIALOG_MARGIN = 15, - SPACING = 10, - MIN_WIDTH = 50, - MIN_HEIGHT = 18, - MIN_HEIGHT_EXPANDED = 40, - }; - const int em = GUI::wxGetApp().em_unit(); - int min_width = MIN_WIDTH * em; - int min_height = MIN_HEIGHT * em; - int min_height_expanded = MIN_HEIGHT_EXPANDED * em; + p->min_width = MIN_WIDTH * em; + p->min_height = MIN_HEIGHT * em; + p->min_height_expanded = MIN_HEIGHT_EXPANDED * em; - wxFont status_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + /* get current font from application, + * because of wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) function + * returns font for primary Display + */ + const wxFont& font = GUI::wxGetApp().normal_font(); + SetFont(font); + wxFont status_font = font;//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); status_font.MakeBold(); wxFont mono_font(wxFontInfo().Family(wxFONTFAMILY_TELETYPE)); mono_font.MakeSmaller(); @@ -819,10 +822,10 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) : auto *topsizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(panel, 1, wxEXPAND | wxALL, DIALOG_MARGIN); - SetMinSize(wxSize(min_width, min_height)); + SetMinSize(wxSize(p->min_width, p->min_height)); SetSizerAndFit(topsizer); const auto size = GetSize(); - SetSize(std::max(size.GetWidth(), static_cast(min_width)), std::max(size.GetHeight(), static_cast(min_height))); + SetSize(std::max(size.GetWidth(), static_cast(p->min_width)), std::max(size.GetHeight(), static_cast(p->min_height))); Layout(); SetEscapeId(wxID_CLOSE); // To close the dialog using "Esc" button @@ -838,11 +841,11 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) : p->spoiler->Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, [=](wxCollapsiblePaneEvent &evt) { if (evt.GetCollapsed()) { - this->SetMinSize(wxSize(min_width, min_height)); + this->SetMinSize(wxSize(p->min_width, p->min_height)); const auto new_height = this->GetSize().GetHeight() - this->p->txt_stdout->GetSize().GetHeight(); this->SetSize(this->GetSize().GetWidth(), new_height); } else { - this->SetMinSize(wxSize(min_width, min_height_expanded)); + this->SetMinSize(wxSize(p->min_width, p->min_height_expanded)); } this->Layout(); @@ -897,5 +900,25 @@ void FirmwareDialog::run(wxWindow *parent) dialog.ShowModal(); } +void FirmwareDialog::on_dpi_changed(const wxRect &suggested_rect) +{ + const int& em = em_unit(); + + msw_buttons_rescale(this, em, { p->btn_close->GetId(), + p->btn_rescan->GetId(), + p->btn_flash->GetId(), + p->hex_picker->GetPickerCtrl()->GetId() + }); + + p->min_width = MIN_WIDTH * em; + p->min_height = MIN_HEIGHT * em; + p->min_height_expanded = MIN_HEIGHT_EXPANDED * em; + + const int min_height = p->spoiler->IsExpanded() ? p->min_height_expanded : p->min_height; + SetMinSize(wxSize(p->min_width, min_height)); + Fit(); + + Refresh(); +} } diff --git a/src/slic3r/GUI/FirmwareDialog.hpp b/src/slic3r/GUI/FirmwareDialog.hpp index ad048bf5d..7c688d379 100644 --- a/src/slic3r/GUI/FirmwareDialog.hpp +++ b/src/slic3r/GUI/FirmwareDialog.hpp @@ -4,13 +4,22 @@ #include #include +#include "GUI_Utils.hpp" namespace Slic3r { -class FirmwareDialog: public wxDialog +class FirmwareDialog: public GUI::DPIDialog { + enum { + DIALOG_MARGIN = 15, + SPACING = 10, + MIN_WIDTH = 50, + MIN_HEIGHT = /*18*/25, + MIN_HEIGHT_EXPANDED = 40, + }; + public: FirmwareDialog(wxWindow *parent); FirmwareDialog(FirmwareDialog &&) = delete; @@ -20,6 +29,9 @@ public: ~FirmwareDialog(); static void run(wxWindow *parent); + +protected: + void on_dpi_changed(const wxRect &suggested_rect) override; private: struct priv; std::unique_ptr p; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8aa3205a7..649302341 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -703,6 +703,7 @@ void GLCanvas3D::WarningTexture::activate(WarningTexture::Warning warning, bool m_warnings.erase(it); if (m_warnings.empty()) { // nothing remains to be shown reset(); + m_msg_text = "";// save information for rescaling return; } } @@ -723,6 +724,10 @@ void GLCanvas3D::WarningTexture::activate(WarningTexture::Warning warning, bool } _generate(text, canvas, red_colored); // GUI::GLTexture::reset() is called at the beginning of generate(...) + + // save information for rescaling + m_msg_text = text; + m_is_colored_red = red_colored; } @@ -791,7 +796,9 @@ bool GLCanvas3D::WarningTexture::_generate(const std::string& msg_utf8, const GL wxMemoryDC memDC; // select default font const float scale = canvas.get_canvas_size().get_scale_factor(); - wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale); +// wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale); + wxFont font = wxGetApp().normal_font();//! #ys_FIXME_experiment + font.MakeLarger(); font.MakeBold(); memDC.SetFont(font); @@ -892,6 +899,14 @@ void GLCanvas3D::WarningTexture::render(const GLCanvas3D& canvas) const } } +void GLCanvas3D::WarningTexture::rescale(const GLCanvas3D& canvas) +{ + if (m_msg_text.empty()) + return; + + _generate(m_msg_text, canvas, m_is_colored_red); +} + const unsigned char GLCanvas3D::LegendTexture::Squares_Border_Color[3] = { 64, 64, 64 }; const unsigned char GLCanvas3D::LegendTexture::Default_Background_Color[3] = { (unsigned char)(DEFAULT_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[2] * 255.0f) }; const unsigned char GLCanvas3D::LegendTexture::Error_Background_Color[3] = { (unsigned char)(ERROR_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[2] * 255.0f) }; @@ -962,7 +977,8 @@ bool GLCanvas3D::LegendTexture::generate(const GCodePreviewData& preview_data, c const int scaled_border = Px_Border * scale; // select default font - wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale_gl); +// wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale_gl); + wxFont font = wxGetApp().normal_font();//! #ys_FIXME_experiment #ifdef __WXMSW__ // Disabling ClearType works, but the font returned is very different (much thicker) from the default. // msw_disable_cleartype(font); @@ -3172,6 +3188,11 @@ double GLCanvas3D::get_size_proportional_to_max_bed_size(double factor) const return factor * m_bed.get_bounding_box().max_size(); } +void GLCanvas3D::msw_rescale() +{ + m_warning_texture.rescale(*this); +} + bool GLCanvas3D::_is_shown_on_screen() const { return (m_canvas != nullptr) ? m_canvas->IsShownOnScreen() : false; @@ -3816,7 +3837,8 @@ void GLCanvas3D::_render_gizmos_overlay() const #if ENABLE_RETINA_GL m_gizmos.set_overlay_scale(m_retina_helper->get_scale_factor()); #else - m_gizmos.set_overlay_scale(m_canvas->GetContentScaleFactor()); +// m_gizmos.set_overlay_scale(m_canvas->GetContentScaleFactor()); + m_gizmos.set_overlay_scale(wxGetApp().em_unit()*0.1f);//! #ys_FIXME_experiment #endif /* __WXMSW__ */ m_gizmos.render_overlay(*this, m_selection); @@ -3828,7 +3850,8 @@ void GLCanvas3D::_render_toolbar() const #if ENABLE_RETINA_GL m_toolbar.set_scale(m_retina_helper->get_scale_factor()); #else - m_toolbar.set_scale(m_canvas->GetContentScaleFactor()); +// m_toolbar.set_scale(m_canvas->GetContentScaleFactor()); + m_toolbar.set_scale(wxGetApp().em_unit()*0.1f);//! #ys_FIXME_experiment #endif // ENABLE_RETINA_GL Size cnv_size = get_canvas_size(); @@ -3891,7 +3914,8 @@ void GLCanvas3D::_render_view_toolbar() const #if ENABLE_RETINA_GL m_view_toolbar.set_scale(m_retina_helper->get_scale_factor()); #else - m_view_toolbar.set_scale(m_canvas->GetContentScaleFactor()); +// m_view_toolbar.set_scale(m_canvas->GetContentScaleFactor()); + m_view_toolbar.set_scale(wxGetApp().em_unit()*0.1f); //! #ys_FIXME_experiment #endif // ENABLE_RETINA_GL Size cnv_size = get_canvas_size(); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index e81d46f11..45b5a58e7 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -353,6 +353,9 @@ private: void activate(WarningTexture::Warning warning, bool state, const GLCanvas3D& canvas); void render(const GLCanvas3D& canvas) const; + // function used to get an information for rescaling of the warning + void rescale(const GLCanvas3D& canvas); + private: static const unsigned char Background_Color[3]; static const unsigned char Opacity; @@ -360,6 +363,10 @@ private: int m_original_width; int m_original_height; + // information for rescaling of the warning legend + std::string m_msg_text = ""; + bool m_is_colored_red{false}; + // Information about which warnings are currently active. std::vector m_warnings; @@ -587,6 +594,8 @@ public: double get_size_proportional_to_max_bed_size(double factor) const; + void msw_rescale(); + private: bool _is_shown_on_screen() const; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 62b8581be..154b4475f 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -325,6 +325,17 @@ void GUI_App::init_fonts() #endif /*__WXMAC__*/ } +void GUI_App::update_fonts() +{ + /* Only normal and bold fonts are used for an application rescale, + * because of under MSW small and normal fonts are the same. + * To avoid same rescaling twice, just fill this values + * from rescaled MainFrame + */ + m_normal_font = mainframe->normal_font(); + m_bold_font = mainframe->normal_font().Bold(); +} + void GUI_App::set_label_clr_modified(const wxColour& clr) { m_color_label_modified = clr; auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue()); @@ -669,6 +680,12 @@ void GUI_App::add_config_menu(wxMenuBar *menu) // Take a configuration snapshot. if (check_unsaved_changes()) { wxTextEntryDialog dlg(nullptr, _(L("Taking configuration snapshot")), _(L("Snapshot name"))); + + // set current normal font for dialog children, + // because of just dlg.SetFont(normal_font()) has no result; + for (auto child : dlg.GetChildren()) + child->SetFont(normal_font()); + if (dlg.ShowModal() == wxID_OK) app_config->set("on_snapshot", Slic3r::GUI::Config::SnapshotDB::singleton().take_snapshot( @@ -718,7 +735,6 @@ void GUI_App::add_config_menu(wxMenuBar *menu) get_installed_languages(names, identifiers); if (select_language(names, identifiers)) { save_language(); -// show_info(mainframe->m_tabpanel, _(L("Application will be restarted")), _(L("Attention!"))); _3DScene::remove_all_canvases();// remove all canvas before recreate GUI recreate_GUI(); } diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 41805702b..d3c9e0afa 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -98,6 +98,7 @@ public: void init_label_colours(); void update_label_colours_from_appconfig(); void init_fonts(); + void update_fonts(); void set_label_clr_modified(const wxColour& clr); void set_label_clr_sys(const wxColour& clr); @@ -139,6 +140,8 @@ public: bool checked_tab(Tab* tab); void load_current_presets(); + wxString current_language_code() { return m_wxLocale != nullptr ? m_wxLocale->GetCanonicalName() : wxString("en_US"); } + virtual bool OnExceptionInMainLoop(); #ifdef __APPLE__ diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index f8ad8b7bb..f9df2649c 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -163,7 +163,7 @@ void ObjectList::create_objects_ctrl() m_sizer = new wxBoxSizer(wxVERTICAL); m_sizer->Add(this, 1, wxGROW); - m_objects_model = new PrusaObjectDataViewModel; + m_objects_model = new ObjectDataViewModel; AssociateModel(m_objects_model); m_objects_model->SetAssociatedControl(this); #if wxUSE_DRAG_AND_DROP && wxUSE_UNICODE @@ -173,7 +173,7 @@ void ObjectList::create_objects_ctrl() // column 0(Icon+Text) of the view control: // And Icon can be consisting of several bitmaps - AppendColumn(new wxDataViewColumn(_(L("Name")), new PrusaBitmapTextRenderer(), + AppendColumn(new wxDataViewColumn(_(L("Name")), new BitmapTextRenderer(), 0, 20*wxGetApp().em_unit()/*200*/, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE)); // column 1 of the view control: @@ -203,7 +203,7 @@ void ObjectList::set_tooltip_for_item(const wxPoint& pt) if (col->GetTitle() == " " && GetSelectedItemsCount()<2) GetMainWindow()->SetToolTip(_(L("Right button click the icon to change the object settings"))); else if (col->GetTitle() == _("Name") && - m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.GetRefData()) { + m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.bmp().GetRefData()) { int obj_idx = m_objects_model->GetIdByItem(item); auto& stats = (*m_objects)[obj_idx]->volumes[0]->mesh.stl.stats; int errors = stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + @@ -395,27 +395,71 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const void ObjectList::init_icons() { - m_bmp_modifiermesh = create_scaled_bitmap(nullptr, "add_modifier"); - m_bmp_solidmesh = create_scaled_bitmap(nullptr, "add_part"); - m_bmp_support_enforcer = create_scaled_bitmap(nullptr, "support_enforcer"); - m_bmp_support_blocker = create_scaled_bitmap(nullptr, "support_blocker"); - + m_bmp_modifiermesh = ScalableBitmap(nullptr, "add_modifier"); // Add part + m_bmp_solidmesh = ScalableBitmap(nullptr, "add_part"); // Add modifier + m_bmp_support_enforcer = ScalableBitmap(nullptr, "support_enforcer");// Add support enforcer + m_bmp_support_blocker = ScalableBitmap(nullptr, "support_blocker"); // Add support blocker m_bmp_vector.reserve(4); // bitmaps for different types of parts - m_bmp_vector.push_back(&m_bmp_solidmesh); // Add part - m_bmp_vector.push_back(&m_bmp_modifiermesh); // Add modifier - m_bmp_vector.push_back(&m_bmp_support_enforcer); // Add support enforcer - m_bmp_vector.push_back(&m_bmp_support_blocker); // Add support blocker + m_bmp_vector.push_back(&m_bmp_solidmesh.bmp()); + m_bmp_vector.push_back(&m_bmp_modifiermesh.bmp()); + m_bmp_vector.push_back(&m_bmp_support_enforcer.bmp()); + m_bmp_vector.push_back(&m_bmp_support_blocker.bmp()); + + + // Set volumes default bitmaps for the model m_objects_model->SetVolumeBitmaps(m_bmp_vector); // init icon for manifold warning - m_bmp_manifold_warning = create_scaled_bitmap(nullptr, "exclamation"); + m_bmp_manifold_warning = ScalableBitmap(nullptr, "exclamation"); // init bitmap for "Split to sub-objects" context menu - m_bmp_split = create_scaled_bitmap(nullptr, "split_parts_SMALL"); + m_bmp_split = ScalableBitmap(nullptr, "split_parts_SMALL"); // init bitmap for "Add Settings" context menu - m_bmp_cog = create_scaled_bitmap(nullptr, "cog"); + m_bmp_cog = ScalableBitmap(nullptr, "cog"); +} + +void ObjectList::rescale_icons() +{ + m_bmp_vector.clear(); + m_bmp_vector.reserve(4); // bitmaps for different types of parts + for (ScalableBitmap* bitmap : std::vector { + &m_bmp_modifiermesh, // Add part + &m_bmp_solidmesh, // Add modifier + &m_bmp_support_enforcer, // Add support enforcer + &m_bmp_support_blocker }) // Add support blocker + { + bitmap->msw_rescale(); + m_bmp_vector.push_back(& bitmap->bmp()); + } + // Set volumes default bitmaps for the model + m_objects_model->SetVolumeBitmaps(m_bmp_vector); + + m_bmp_manifold_warning.msw_rescale(); + m_bmp_split.msw_rescale(); + m_bmp_cog.msw_rescale(); + + + // Update CATEGORY_ICON according to new scale + { + // Note: `this` isn't passed to create_scaled_bitmap() here because of bugs in the widget, + // see note in PresetBundle::load_compatible_bitmaps() + + // ptFFF + CATEGORY_ICON[L("Layers and Perimeters")] = create_scaled_bitmap(nullptr, "layers"); + CATEGORY_ICON[L("Infill")] = create_scaled_bitmap(nullptr, "infill"); + CATEGORY_ICON[L("Support material")] = create_scaled_bitmap(nullptr, "support"); + CATEGORY_ICON[L("Speed")] = create_scaled_bitmap(nullptr, "time"); + CATEGORY_ICON[L("Extruders")] = create_scaled_bitmap(nullptr, "funnel"); + CATEGORY_ICON[L("Extrusion Width")] = create_scaled_bitmap(nullptr, "funnel"); +// CATEGORY_ICON[L("Skirt and brim")] = create_scaled_bitmap(nullptr, "skirt+brim"); +// CATEGORY_ICON[L("Speed > Acceleration")] = create_scaled_bitmap(nullptr, "time"); + CATEGORY_ICON[L("Advanced")] = create_scaled_bitmap(nullptr, "wrench"); + // ptSLA + CATEGORY_ICON[L("Supports")] = create_scaled_bitmap(nullptr, "support"/*"sla_supports"*/); + CATEGORY_ICON[L("Pad")] = create_scaled_bitmap(nullptr, "pad"); + } } @@ -463,8 +507,7 @@ void ObjectList::paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& vol items.Add(vol_item); } - m_parts_changed = true; - parts_changed(obj_idx); + changed_object(obj_idx); if (items.size() > 1) { @@ -490,9 +533,7 @@ void ObjectList::paste_objects_into_list(const std::vector& object_idxs) items.Add(m_objects_model->GetItemById(object)); } - m_parts_changed = true; wxGetApp().plater()->changed_objects(object_idxs); - m_parts_changed = false; select_items(items); #ifndef __WXOSX__ //#ifdef __WXMSW__ // #ys_FIXME @@ -534,7 +575,7 @@ void ObjectList::OnContextMenu(wxDataViewEvent&) if (title == " ") show_context_menu(); else if (title == _("Name") && pt.x >15 && - m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.GetRefData()) + m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.bmp().GetRefData()) { if (is_windows10()) fix_through_netfabb(); @@ -703,8 +744,7 @@ void ObjectList::OnDrop(wxDataViewEvent &event) select_item(m_objects_model->ReorganizeChildren(from_volume_id, to_volume_id, m_objects_model->GetParent(item))); - m_parts_changed = true; - parts_changed(m_dragged_data.obj_idx()); + changed_object(m_dragged_data.obj_idx()); m_dragged_data.clear(); } @@ -1000,12 +1040,12 @@ void ObjectList::append_menu_items_add_volume(wxMenu* menu) wxMenuItem* ObjectList::append_menu_item_split(wxMenu* menu) { return append_menu_item(menu, wxID_ANY, _(L("Split to parts")), "", - [this](wxCommandEvent&) { split(); }, m_bmp_split, menu); + [this](wxCommandEvent&) { split(); }, m_bmp_split.bmp(), menu); } wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_) { - PrusaMenu* menu = dynamic_cast(menu_); + MenuWithSeparators* menu = dynamic_cast(menu_); const wxString menu_name = _(L("Add settings")); // Delete old items from settings popupmenu @@ -1053,7 +1093,7 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_) if (printer_technology() == ptFFF || menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator()) - menu->m_separator_frst = menu->AppendSeparator(); + menu->SetFirstSeparator(); // Add frequently settings create_freq_settings_popupmenu(menu); @@ -1061,11 +1101,11 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_) if (mode == comAdvanced) return nullptr; - menu->m_separator_scnd = menu->AppendSeparator(); + menu->SetSecondSeparator(); // Add full settings list auto menu_item = new wxMenuItem(menu, wxID_ANY, menu_name); - menu_item->SetBitmap(m_bmp_cog); + menu_item->SetBitmap(m_bmp_cog.bmp()); menu_item->SetSubMenu(create_settings_popupmenu(menu)); @@ -1290,7 +1330,7 @@ void ObjectList::load_subobject(ModelVolumeType type) wxArrayString part_names; load_part((*m_objects)[obj_idx], part_names, type); - parts_changed(obj_idx); + changed_object(obj_idx); for (int i = 0; i < part_names.size(); ++i) { const wxDataViewItem sel_item = m_objects_model->AddVolumeChild(item, part_names.Item(i), type); @@ -1306,7 +1346,6 @@ void ObjectList::load_part( ModelObject* model_object, { wxWindow* parent = wxGetApp().tab_panel()->GetPage(0); - m_parts_changed = false; wxArrayString input_files; wxGetApp().import_model(parent, input_files); for (int i = 0; i < input_files.size(); ++i) { @@ -1342,8 +1381,6 @@ void ObjectList::load_part( ModelObject* model_object, // set a default extruder value, since user can't add it manually new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); - - m_parts_changed = true; } } } @@ -1493,8 +1530,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode // set a default extruder value, since user can't add it manually new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); - m_parts_changed = true; - parts_changed(obj_idx); + changed_object(obj_idx); const auto object_item = m_objects_model->GetTopParent(GetSelection()); select_item(m_objects_model->AddVolumeChild(object_item, name, type)); @@ -1558,8 +1594,7 @@ void ObjectList::del_instances_from_object(const int obj_idx) (*m_objects)[obj_idx]->invalidate_bounding_box(); // ? #ys_FIXME - m_parts_changed = true; - parts_changed(obj_idx); + changed_object(obj_idx); } bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, const int type) @@ -1604,8 +1639,7 @@ bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, con else return false; - m_parts_changed = true; - parts_changed(obj_idx); + changed_object(obj_idx); return true; } @@ -1655,8 +1689,7 @@ void ObjectList::split() if (parent == item) Expand(parent); - m_parts_changed = true; - parts_changed(obj_idx); + changed_object(obj_idx); } bool ObjectList::get_volume_by_item(const wxDataViewItem& item, ModelVolume*& volume) @@ -1713,17 +1746,10 @@ bool ObjectList::can_split_instances() return selection.is_multiple_full_instance() || selection.is_single_full_instance(); } -void ObjectList::part_settings_changed() +// NO_PARAMETERS function call means that changed object index will be determine from Selection() +void ObjectList::changed_object(const int obj_idx/* = -1*/) const { - m_part_settings_changed = true; - wxGetApp().plater()->changed_object(get_selected_obj_idx()); - m_part_settings_changed = false; -} - -void ObjectList::parts_changed(int obj_idx) -{ - wxGetApp().plater()->changed_object(obj_idx); - m_parts_changed = false; + wxGetApp().plater()->changed_object(obj_idx < 0 ? get_selected_obj_idx() : obj_idx); } void ObjectList::part_selection_changed() @@ -1826,7 +1852,7 @@ void ObjectList::add_object_to_list(size_t obj_idx) stats.facets_added + stats.facets_reversed + stats.backwards_edges; if (errors > 0) { wxVariant variant; - variant << PrusaDataViewBitmapText(item_name, m_bmp_manifold_warning); + variant << DataViewBitmapText(item_name, m_bmp_manifold_warning.bmp()); m_objects_model->SetValue(variant, item, 0); } @@ -2446,8 +2472,7 @@ void ObjectList::change_part_type() volume->set_type(new_type); m_objects_model->SetVolumeType(item, new_type); - m_parts_changed = true; - parts_changed(get_selected_obj_idx()); + changed_object(get_selected_obj_idx()); // Update settings showing, if we have it //(we show additional settings for Part and Modifier and hide it for Support Blocker/Enforcer) @@ -2627,7 +2652,7 @@ void ObjectList::rename_item() wxVariant valueOld; m_objects_model->GetValue(valueOld, item, 0); - PrusaDataViewBitmapText bmpText; + DataViewBitmapText bmpText; bmpText << valueOld; // But replace the text with the value entered by user. @@ -2675,11 +2700,29 @@ void ObjectList::update_item_error_icon(const int obj_idx, const int vol_idx) co if (errors == 0) { // delete Error_icon if all errors are fixed wxVariant variant; - variant << PrusaDataViewBitmapText(from_u8(model_object->name), wxNullBitmap); + variant << DataViewBitmapText(from_u8(model_object->name), wxNullBitmap); m_objects_model->SetValue(variant, item, 0); } } +void ObjectList::msw_rescale() +{ + // update min size !!! A width of control shouldn't be a wxDefaultCoord + SetMinSize(wxSize(1, 15 * wxGetApp().em_unit())); + + GetColumn(0)->SetWidth(19 * wxGetApp().em_unit()); + GetColumn(1)->SetWidth(8 * wxGetApp().em_unit()); + GetColumn(2)->SetWidth(int(2 * wxGetApp().em_unit())); + + // rescale all icons, used by ObjectList + rescale_icons(); + + // rescale/update existingitems with bitmaps + m_objects_model->Rescale(); + + Layout(); +} + void ObjectList::ItemValueChanged(wxDataViewEvent &event) { if (event.GetColumn() == 0) @@ -2693,7 +2736,7 @@ void ObjectList::OnEditingDone(wxDataViewEvent &event) if (event.GetColumn() != 0) return; - const auto renderer = dynamic_cast(GetColumn(0)->GetRenderer()); + const auto renderer = dynamic_cast(GetColumn(0)->GetRenderer()); if (renderer->WasCanceled()) show_error(this, _(L("The supplied name is not valid;")) + "\n" + diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index a0343100a..da082d1d4 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -13,8 +13,8 @@ class wxBoxSizer; class wxMenuItem; -class PrusaObjectDataViewModel; -class PrusaMenu; +class ObjectDataViewModel; +class MenuWithSeparators; namespace Slic3r { class ConfigOptionsGroup; @@ -108,18 +108,18 @@ class ObjectList : public wxDataViewCtrl wxBoxSizer *m_sizer {nullptr}; wxWindow *m_parent {nullptr}; - wxBitmap m_bmp_modifiermesh; - wxBitmap m_bmp_solidmesh; - wxBitmap m_bmp_support_enforcer; - wxBitmap m_bmp_support_blocker; - wxBitmap m_bmp_manifold_warning; - wxBitmap m_bmp_cog; - wxBitmap m_bmp_split; + ScalableBitmap m_bmp_modifiermesh; + ScalableBitmap m_bmp_solidmesh; + ScalableBitmap m_bmp_support_enforcer; + ScalableBitmap m_bmp_support_blocker; + ScalableBitmap m_bmp_manifold_warning; + ScalableBitmap m_bmp_cog; + ScalableBitmap m_bmp_split; - PrusaMenu m_menu_object; - PrusaMenu m_menu_part; - PrusaMenu m_menu_sla_object; - PrusaMenu m_menu_instance; + MenuWithSeparators m_menu_object; + MenuWithSeparators m_menu_part; + MenuWithSeparators m_menu_sla_object; + MenuWithSeparators m_menu_instance; wxMenuItem* m_menu_item_split { nullptr }; wxMenuItem* m_menu_item_split_part { nullptr }; wxMenuItem* m_menu_item_settings { nullptr }; @@ -139,9 +139,6 @@ class ObjectList : public wxDataViewCtrl // update_settings_items - updating canvas selection is undesirable, // because it would turn off the gizmos (mainly a problem for the SLA gizmo) - bool m_parts_changed = false; - bool m_part_settings_changed = false; - int m_selected_row = 0; wxDataViewItem m_last_selected_item {nullptr}; @@ -157,7 +154,7 @@ public: std::map CATEGORY_ICON; - PrusaObjectDataViewModel *m_objects_model{ nullptr }; + ObjectDataViewModel *m_objects_model{ nullptr }; DynamicPrintConfig *m_config {nullptr}; std::vector *m_objects{ nullptr }; @@ -176,6 +173,7 @@ public: void update_extruder_values_for_items(const int max_extruder); void init_icons(); + void rescale_icons(); void set_tooltip_for_item(const wxPoint& pt); @@ -225,11 +223,8 @@ public: wxBoxSizer* get_sizer() {return m_sizer;} int get_selected_obj_idx() const; DynamicPrintConfig& get_item_config(const wxDataViewItem& item) const; - bool is_parts_changed() const { return m_parts_changed; } - bool is_part_settings_changed() const { return m_part_settings_changed; } - void part_settings_changed(); - void parts_changed(int obj_idx); + void changed_object(const int obj_idx = -1) const; void part_selection_changed(); // Add object to the list @@ -291,6 +286,8 @@ public: void paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& volumes); void paste_objects_into_list(const std::vector& object_idxs); + void msw_rescale(); + private: void OnChar(wxKeyEvent& event); void OnContextMenu(wxDataViewEvent &event); diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index f9284a19b..53f1923fd 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -23,7 +23,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : #endif // __APPLE__ { m_og->set_name(_(L("Object Manipulation"))); - m_og->label_width = 12 * wxGetApp().em_unit();//125; + m_og->label_width = 12;//125; m_og->set_grid_vgap(5); m_og->m_on_change = std::bind(&ObjectManipulation::on_change, this, std::placeholders::_1, std::placeholders::_2); @@ -45,11 +45,11 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : def.label = L("Name"); def.gui_type = "legend"; def.tooltip = L("Object name"); - def.width = 21 * wxGetApp().em_unit(); + def.width = 21; def.default_value = new ConfigOptionString{ " " }; m_og->append_single_option_line(Option(def, "object_name")); - const int field_width = 5 * wxGetApp().em_unit()/*50*/; + const int field_width = 5; // Legend for object modification auto line = Line{ "", "" }; @@ -78,7 +78,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : // Add "uniform scaling" button in front of "Scale" option if (option_name == "Scale") { line.near_label_widget = [this](wxWindow* parent) { - auto btn = new PrusaLockButton(parent, wxID_ANY); + auto btn = new LockButton(parent, wxID_ANY); btn->Bind(wxEVT_BUTTON, [btn, this](wxCommandEvent &event){ event.Skip(); wxTheApp->CallAfter([btn, this]() { set_uniform_scaling(btn->IsLocked()); }); @@ -117,15 +117,13 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : m_og->append_line(add_og_to_object_settings(L("Scale"), "%"), &m_scale_Label); m_og->append_line(add_og_to_object_settings(L("Size"), "mm")); - /* Unused parameter at this time - def.label = L("Place on bed"); - def.type = coBool; - def.tooltip = L("Automatic placing of models on printing bed in Y axis"); - def.gui_type = ""; - def.sidetext = ""; - def.default_value = new ConfigOptionBool{ false }; - m_og->append_single_option_line(Option(def, "place_on_bed")); - */ + // call back for a rescale of button "Set uniform scale" + m_og->rescale_near_label_widget = [this](wxWindow* win) { + auto *ctrl = dynamic_cast(win); + if (ctrl == nullptr) + return; + ctrl->msw_rescale(); + }; } void ObjectManipulation::Show(const bool show) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index a5a180a56..d7b45e3c8 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -7,7 +7,7 @@ #include "GLCanvas3D.hpp" class wxStaticText; -class PrusaLockButton; +class LockButton; namespace Slic3r { namespace GUI { @@ -76,7 +76,7 @@ class ObjectManipulation : public OG_Settings Vec3d m_new_size; bool m_new_enabled; bool m_uniform_scale {true}; - PrusaLockButton* m_lock_bnt{ nullptr }; + LockButton* m_lock_bnt{ nullptr }; #ifndef __APPLE__ // Currently focused option name (empty if none) diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp index 72eeb76de..b7ba2d4fc 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp @@ -59,6 +59,8 @@ ObjectSettings::ObjectSettings(wxWindow* parent) : m_settings_list_sizer = new wxBoxSizer(wxVERTICAL); m_og->sizer->Add(m_settings_list_sizer, 1, wxEXPAND | wxLEFT, 5); + + m_bmp_delete = ScalableBitmap(parent, "cross"); } void ObjectSettings::update_settings_list() @@ -77,14 +79,11 @@ void ObjectSettings::update_settings_list() { auto opt_key = (line.get_options())[0].opt_id; //we assume that we have one option per line - auto btn = new wxBitmapButton(parent, wxID_ANY, create_scaled_bitmap(m_parent, "cross"/*"colorchange_delete_on.png"*/), - wxDefaultPosition, wxDefaultSize, wxBORDER_NONE); -#ifdef __WXMSW__ - btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); -#endif // __WXMSW__ + auto btn = new ScalableButton(parent, wxID_ANY, m_bmp_delete); + btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) { config->erase(opt_key); - wxGetApp().obj_list()->part_settings_changed(); + wxGetApp().obj_list()->changed_object(); wxTheApp->CallAfter([this]() { wxWindowUpdateLocker noUpdates(m_parent); update_settings_list(); @@ -123,22 +122,31 @@ void ObjectSettings::update_settings_list() continue; auto optgroup = std::make_shared(m_og->ctrl_parent(), cat.first, config, false, extra_column); - optgroup->label_width = 15 * wxGetApp().em_unit(); - optgroup->sidetext_width = 5.5 * wxGetApp().em_unit(); + optgroup->label_width = 15; + optgroup->sidetext_width = 5.5; optgroup->m_on_change = [](const t_config_option_key& opt_id, const boost::any& value) { - wxGetApp().obj_list()->part_settings_changed(); }; + wxGetApp().obj_list()->changed_object(); }; for (auto& opt : cat.second) { if (opt == "extruder") continue; Option option = optgroup->get_option(opt); - option.opt.width = 12 * wxGetApp().em_unit(); + option.opt.width = 12; optgroup->append_single_option_line(option); } optgroup->reload_config(); m_settings_list_sizer->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 0); + + // call back for rescaling of the extracolumn control + optgroup->rescale_extra_column_item = [this](wxWindow* win) { + auto *ctrl = dynamic_cast(win); + if (ctrl == nullptr) + return; + ctrl->SetBitmap_(m_bmp_delete); + }; + m_og_settings.push_back(optgroup); categories.push_back(cat.first); @@ -163,5 +171,13 @@ void ObjectSettings::UpdateAndShow(const bool show) OG_Settings::UpdateAndShow(show); } +void ObjectSettings::msw_rescale() +{ + m_bmp_delete.msw_rescale(); + + for (auto group : m_og_settings) + group->msw_rescale(); +} + } //namespace GUI } //namespace Slic3r \ No newline at end of file diff --git a/src/slic3r/GUI/GUI_ObjectSettings.hpp b/src/slic3r/GUI/GUI_ObjectSettings.hpp index 12115e208..3d49f13b7 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.hpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.hpp @@ -4,6 +4,7 @@ #include #include #include +#include "wxExtensions.hpp" class wxBoxSizer; @@ -37,12 +38,15 @@ class ObjectSettings : public OG_Settings // option groups for settings std::vector > m_og_settings; + ScalableBitmap m_bmp_delete; + public: ObjectSettings(wxWindow* parent); ~ObjectSettings() {} void update_settings_list(); void UpdateAndShow(const bool show) override; + void msw_rescale(); }; }} diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 206253451..88fea933e 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -396,6 +396,18 @@ void Preview::refresh_print() load_print(true); } +void Preview::msw_rescale() +{ + // rescale slider + if (m_slider) m_slider->msw_rescale(); + + // rescale warning legend on the canvas + get_canvas3d()->msw_rescale(); + + // rescale legend + refresh_print(); +} + void Preview::bind_event_handlers() { this->Bind(wxEVT_SIZE, &Preview::on_size, this); @@ -507,7 +519,7 @@ void Preview::on_checkbox_shells(wxCommandEvent& evt) void Preview::create_double_slider() { - m_slider = new PrusaDoubleSlider(this, wxID_ANY, 0, 0, 0, 100); + m_slider = new DoubleSlider(this, wxID_ANY, 0, 0, 0, 100); m_double_slider_sizer->Add(m_slider, 0, wxEXPAND, 0); // sizer, m_canvas_widget diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index a2929f2e6..2540980f4 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -13,7 +13,7 @@ class wxStaticText; class wxChoice; class wxComboCtrl; class wxCheckBox; -class PrusaDoubleSlider; +class DoubleSlider; namespace Slic3r { @@ -99,7 +99,7 @@ class Preview : public wxPanel bool m_loaded; bool m_enabled; - PrusaDoubleSlider* m_slider {nullptr}; + DoubleSlider* m_slider {nullptr}; public: Preview(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model, DynamicPrintConfig* config, @@ -120,6 +120,8 @@ public: void reload_print(bool keep_volumes = false); void refresh_print(); + void msw_rescale(); + private: bool init(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model); diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index e12153625..25cf25b16 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -16,6 +16,7 @@ #include #include #include +#include class wxCheckBox; class wxTopLevelWindow; @@ -58,35 +59,119 @@ public: : P(parent, id, title, pos, size, style, name) { m_scale_factor = (float)get_dpi_for_window(this) / (float)DPI_DEFAULT; + m_normal_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + // An analog of em_unit value from GUI_App. + m_em_unit = std::max(10, 10 * m_scale_factor); + + m_prev_scale_factor = m_scale_factor; + recalc_font(); this->Bind(EVT_DPI_CHANGED, [this](const DpiChangedEvent &evt) { m_scale_factor = (float)evt.dpi / (float)DPI_DEFAULT; - on_dpi_changed(evt.rect); + + if (!m_can_rescale) + return; + + if (is_new_scale_factor()) + rescale(evt.rect); + }); + + this->Bind(wxEVT_MOVE_START, [this](wxMoveEvent& event) + { + event.Skip(); + + // Suppress application rescaling, when a MainFrame moving is not ended + m_can_rescale = false; + }); + + this->Bind(wxEVT_MOVE_END, [this](wxMoveEvent& event) + { + event.Skip(); + + m_can_rescale = is_new_scale_factor(); + + // If scale factor is different after moving of MainFrame ... + if (m_can_rescale) + // ... rescale application + rescale(event.GetRect()); + else + // set value to _true_ in purpose of possibility of a display dpi changing from System Settings + m_can_rescale = true; }); } virtual ~DPIAware() {} - float scale_factor() const { return m_scale_factor; } - int em_unit() const { return m_em_unit; } - int font_size() const { return m_font_size; } + float scale_factor() const { return m_scale_factor; } + float prev_scale_factor() const { return m_prev_scale_factor; } + + int em_unit() const { return m_em_unit; } + int font_size() const { return m_font_size; } + const wxFont& normal_font() const { return m_normal_font; } protected: virtual void on_dpi_changed(const wxRect &suggested_rect) = 0; private: - int m_scale_factor; + float m_scale_factor; int m_em_unit; int m_font_size; + wxFont m_normal_font; + float m_prev_scale_factor; + bool m_can_rescale{ true }; + void recalc_font() { wxClientDC dc(this); const auto metrics = dc.GetFontMetrics(); m_font_size = metrics.height; - m_em_unit = metrics.averageWidth; +// m_em_unit = metrics.averageWidth; } + + // check if new scale is differ from previous + bool is_new_scale_factor() const { return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; } + + // recursive function for scaling fonts for all controls in Window + void scale_controls_fonts(wxWindow *window, const float scale_f) + { + auto children = window->GetChildren(); + + for (auto child : children) { + scale_controls_fonts(child, scale_f); + child->SetFont(child->GetFont().Scaled(scale_f)); + } + + window->Layout(); + } + + void rescale(const wxRect &suggested_rect) + { + this->Freeze(); + const float relative_scale_factor = m_scale_factor / m_prev_scale_factor; + + // rescale fonts of all controls + scale_controls_fonts(this, relative_scale_factor); + this->SetFont(this->GetFont().Scaled(relative_scale_factor)); + + + // rescale normal_font value + m_normal_font = m_normal_font.Scaled(relative_scale_factor); + + // An analog of em_unit value from GUI_App. + m_em_unit = std::max(10, 10 * m_scale_factor); + + // rescale missed controls sizes and images + on_dpi_changed(suggested_rect); + + this->Layout(); + this->Thaw(); + + // reset previous scale factor from current scale factor value + m_prev_scale_factor = m_scale_factor; + } + }; typedef DPIAware DPIFrame; diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 65abba319..066bc54fa 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -10,26 +10,28 @@ namespace Slic3r { namespace GUI { KBShortcutsDialog::KBShortcutsDialog() - : wxDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Keyboard Shortcuts")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) + : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Keyboard Shortcuts")), + wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { - SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); + SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); auto main_sizer = new wxBoxSizer(wxVERTICAL); // logo - const wxBitmap logo_bmp = create_scaled_bitmap(this, "Slic3r_32px.png", 32); + m_logo_bmp = ScalableBitmap(this, "Slic3r_32px.png", 32); // fonts - wxFont head_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Bold(); + const wxFont& font = wxGetApp().normal_font(); + const wxFont& bold_font = wxGetApp().bold_font(); + SetFont(font); + + wxFont head_font = bold_font; #ifdef __WXOSX__ head_font.SetPointSize(14); #else - head_font.SetPointSize(12); + head_font.SetPointSize(bold_font.GetPointSize() + 2); #endif // __WXOSX__ - const wxFont& font = wxGetApp().small_font(); - const wxFont& bold_font = wxGetApp().bold_font(); - fill_shortcuts(); auto panel = new wxPanel(this); @@ -43,22 +45,25 @@ KBShortcutsDialog::KBShortcutsDialog() wxBoxSizer* r_sizer = new wxBoxSizer(wxVERTICAL); main_grid_sizer->Add(r_sizer, 0); + m_head_bitmaps.reserve(m_full_shortcuts.size()); + const wxSize topic_size = wxSize(10 * wxGetApp().em_unit(), -1); + for (auto& sc : m_full_shortcuts) { -// auto sizer = sc.first == _(L("Main Shortcuts")) ? l_sizer : r_sizer; - auto sizer = sc.second.second == 0 ? l_sizer : r_sizer; + auto sizer = sc.second.second == szLeft ? l_sizer : r_sizer; wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(hsizer, 0, wxEXPAND | wxTOP | wxBOTTOM, 10); // logo - auto *logo = new wxStaticBitmap(panel, wxID_ANY, logo_bmp); - hsizer->Add(logo, 0, wxEXPAND | wxLEFT | wxRIGHT, 15); + m_head_bitmaps.push_back(new wxStaticBitmap(panel, wxID_ANY, m_logo_bmp.bmp())); + hsizer->Add(m_head_bitmaps.back(), 0, wxEXPAND | wxLEFT | wxRIGHT, 15); // head - wxStaticText* head = new wxStaticText(panel, wxID_ANY, sc.first, wxDefaultPosition, wxSize(20 * wxGetApp().em_unit(), -1)); + wxStaticText* head = new wxStaticText(panel, wxID_ANY, sc.first, wxDefaultPosition, topic_size); head->SetFont(head_font); hsizer->Add(head, 0, wxALIGN_CENTER_VERTICAL); + // Shortcuts list auto grid_sizer = new wxFlexGridSizer(2, 5, 15); sizer->Add(grid_sizer, 0, wxEXPAND | wxLEFT| wxRIGHT, 15); @@ -121,7 +126,7 @@ void KBShortcutsDialog::fill_shortcuts() main_shortcuts.push_back(Shortcut("?" ,L("Show keyboard shortcuts list"))); main_shortcuts.push_back(Shortcut(ctrl+"LeftMouse" ,L("Select multiple object/Move multiple object"))); - m_full_shortcuts.push_back(std::make_pair( _(L("Main Shortcuts")), std::make_pair(main_shortcuts, 0) )); + m_full_shortcuts.push_back(std::make_pair(_(L("Main Shortcuts")), std::make_pair(main_shortcuts, szLeft))); Shortcuts plater_shortcuts; @@ -148,7 +153,7 @@ void KBShortcutsDialog::fill_shortcuts() plater_shortcuts.push_back(Shortcut("O", L("Zoom out"))); plater_shortcuts.push_back(Shortcut("ESC", L("Unselect gizmo, keep object selection"))); - m_full_shortcuts.push_back(std::make_pair(_(L("Plater Shortcuts")), std::make_pair(plater_shortcuts, 1))); + m_full_shortcuts.push_back(std::make_pair(_(L("Plater Shortcuts")), std::make_pair(plater_shortcuts, szRight))); // Shortcuts gizmo_shortcuts; @@ -168,7 +173,7 @@ void KBShortcutsDialog::fill_shortcuts() preview_shortcuts.push_back(Shortcut("U", L("Upper Layer"))); preview_shortcuts.push_back(Shortcut("D", L("Lower Layer"))); - m_full_shortcuts.push_back(std::make_pair( _(L("Preview Shortcuts")), std::make_pair(preview_shortcuts, 0) )); + m_full_shortcuts.push_back(std::make_pair(_(L("Preview Shortcuts")), std::make_pair(preview_shortcuts, szLeft))); Shortcuts layers_slider_shortcuts; @@ -181,7 +186,26 @@ void KBShortcutsDialog::fill_shortcuts() layers_slider_shortcuts.push_back(Shortcut("+", L("Add color change marker for current layer"))); layers_slider_shortcuts.push_back(Shortcut("-", L("Delete color change marker for current layer"))); - m_full_shortcuts.push_back(std::make_pair( _(L("Layers Slider Shortcuts")), std::make_pair(layers_slider_shortcuts, 1) )); + m_full_shortcuts.push_back(std::make_pair(_(L("Layers Slider Shortcuts")), std::make_pair(layers_slider_shortcuts, szRight))); +} + +void KBShortcutsDialog::on_dpi_changed(const wxRect &suggested_rect) +{ + m_logo_bmp.msw_rescale(); + + for (wxStaticBitmap* bmp : m_head_bitmaps) + bmp->SetBitmap(m_logo_bmp.bmp()); + + const int em = em_unit(); + + msw_buttons_rescale(this, em, { wxID_OK }); + + const wxSize& size = wxSize(85 * em, 75 * em); + + SetMinSize(size); + Fit(); + + Refresh(); } void KBShortcutsDialog::onCloseDialog(wxEvent &) diff --git a/src/slic3r/GUI/KBShortcutsDialog.hpp b/src/slic3r/GUI/KBShortcutsDialog.hpp index d8905e1ce..66fe7c399 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.hpp +++ b/src/slic3r/GUI/KBShortcutsDialog.hpp @@ -5,24 +5,38 @@ #include #include +#include "GUI_Utils.hpp" +#include "wxExtensions.hpp" + namespace Slic3r { namespace GUI { -class KBShortcutsDialog : public wxDialog +class KBShortcutsDialog : public DPIDialog { + enum PLACED_SIZER_ID + { + szLeft = 0, + szRight + }; + typedef std::pair Shortcut; typedef std::vector< Shortcut > Shortcuts; - typedef std::vector< std::pair> > ShortcutsVec; + typedef std::vector< std::pair> > ShortcutsVec; wxString text_info {wxEmptyString}; - ShortcutsVec m_full_shortcuts; + ShortcutsVec m_full_shortcuts; + ScalableBitmap m_logo_bmp; + std::vector m_head_bitmaps; public: KBShortcutsDialog(); void fill_shortcuts(); +protected: + void on_dpi_changed(const wxRect &suggested_rect) override; + private: void onCloseDialog(wxEvent &); }; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 4814a35d9..ccba1aaaa 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -258,7 +258,30 @@ bool MainFrame::can_delete_all() const void MainFrame::on_dpi_changed(const wxRect &suggested_rect) { - // TODO + wxGetApp().update_fonts(); + + // _strange_ workaround for correct em_unit calculation + const int new_em_unit = scale_factor() * 10; + wxGetApp().set_em_unit(std::max(10, new_em_unit)); + + /* Load default preset bitmaps before a tabpanel initialization, + * but after filling of an em_unit value + */ + wxGetApp().preset_bundle->load_default_preset_bitmaps(this); + + // update Plater + wxGetApp().plater()->msw_rescale(); + + // update Tabs + for (auto tab : wxGetApp().tabs_list) + tab->msw_rescale(); + + /* To correct window rendering (especially redraw of a status bar) + * we should imitate window resizing. + */ + const wxSize& sz = this->GetSize(); + this->SetSize(sz.x + 1, sz.y + 1); + this->SetSize(sz); } void MainFrame::init_menubar() diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index a5d3a1f6d..a8b2be2bc 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -4,6 +4,7 @@ #include "libslic3r/PrintConfig.hpp" #include +#include #include #include diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp index 771599b8e..1de0baff7 100644 --- a/src/slic3r/GUI/MsgDialog.cpp +++ b/src/slic3r/GUI/MsgDialog.cpp @@ -25,12 +25,14 @@ namespace GUI { MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxWindowID button_id, wxBitmap bitmap) : wxDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) - , boldfont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)) + , boldfont(wxGetApp().normal_font()/*wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)*/) , content_sizer(new wxBoxSizer(wxVERTICAL)) , btn_sizer(new wxBoxSizer(wxHORIZONTAL)) { boldfont.SetWeight(wxFONTWEIGHT_BOLD); + this->SetFont(wxGetApp().normal_font()); + auto *topsizer = new wxBoxSizer(wxHORIZONTAL); auto *rightsizer = new wxBoxSizer(wxVERTICAL); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index df2f7b582..099ebc8ba 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -166,8 +166,11 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n #endif /* __WXGTK__ */ // if we have an extra column, build it - if (extra_column) - grid_sizer->Add(extra_column(this->ctrl_parent(), line), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 3); + if (extra_column) + { + m_extra_column_item_ptrs.push_back(extra_column(this->ctrl_parent(), line)); + grid_sizer->Add(m_extra_column_item_ptrs.back(), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 3); + } // Build a label if we have it wxStaticText* label=nullptr; @@ -180,21 +183,25 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n label_style |= staticbox ? 0 : wxST_ELLIPSIZE_END; #endif /* __WXGTK__ */ label = new wxStaticText(this->ctrl_parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ": "), - wxDefaultPosition, wxSize(label_width, -1), label_style); + wxDefaultPosition, wxSize(label_width*wxGetApp().em_unit(), -1), label_style); label->SetBackgroundStyle(wxBG_STYLE_PAINT); - label->SetFont(label_font); - label->Wrap(label_width); // avoid a Linux/GTK bug + label->SetFont(wxGetApp().normal_font()); + label->Wrap(label_width*wxGetApp().em_unit()); // avoid a Linux/GTK bug if (!line.near_label_widget) grid_sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, line.label.IsEmpty() ? 0 : 5); - else if (line.near_label_widget && line.label.IsEmpty()) - grid_sizer->Add(line.near_label_widget(this->ctrl_parent()), 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 7); else { - // If we're here, we have some widget near the label - // so we need a horizontal sizer to arrange these things - auto sizer = new wxBoxSizer(wxHORIZONTAL); - grid_sizer->Add(sizer, 0, wxEXPAND | (staticbox ? wxALL : wxBOTTOM | wxTOP | wxLEFT), staticbox ? 0 : 1); - sizer->Add(line.near_label_widget(this->ctrl_parent()), 0, wxRIGHT, 7); - sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5); + m_near_label_widget_ptrs.push_back(line.near_label_widget(this->ctrl_parent())); + + if (line.label.IsEmpty()) + grid_sizer->Add(m_near_label_widget_ptrs.back(), 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 7); + else { + // If we're here, we have some widget near the label + // so we need a horizontal sizer to arrange these things + auto sizer = new wxBoxSizer(wxHORIZONTAL); + grid_sizer->Add(sizer, 0, wxEXPAND | (staticbox ? wxALL : wxBOTTOM | wxTOP | wxLEFT), staticbox ? 0 : 1); + sizer->Add(m_near_label_widget_ptrs.back(), 0, wxRIGHT, 7); + sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5); + } } if (line.label_tooltip.compare("") != 0) label->SetToolTip(line.label_tooltip); @@ -235,14 +242,13 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n wxSizer* sizer_tmp = sizer; // add label if any if (option.label != "") { -// wxString str_label = _(option.label); //! To correct translation by context have to use wxGETTEXT_IN_CONTEXT macro from wxWidget 3.1.1 wxString str_label = (option.label == "Top" || option.label == "Bottom") ? _CTX(option.label, "Layers") : _(option.label); label = new wxStaticText(this->ctrl_parent(), wxID_ANY, str_label + ": ", wxDefaultPosition, wxDefaultSize); label->SetBackgroundStyle(wxBG_STYLE_PAINT); - label->SetFont(label_font); + label->SetFont(wxGetApp().normal_font()); sizer_tmp->Add(label, 0, /*wxALIGN_RIGHT |*/ wxALIGN_CENTER_VERTICAL, 0); } @@ -267,9 +273,9 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n // add sidetext if any if (option.sidetext != "") { auto sidetext = new wxStaticText( this->ctrl_parent(), wxID_ANY, _(option.sidetext), wxDefaultPosition, - wxSize(sidetext_width, -1)/*wxDefaultSize*/, wxALIGN_LEFT); + /*wxSize(sidetext_width*wxGetApp().em_unit(), -1)*/wxDefaultSize, wxALIGN_LEFT); sidetext->SetBackgroundStyle(wxBG_STYLE_PAINT); - sidetext->SetFont(sidetext_font); + sidetext->SetFont(wxGetApp().normal_font()); sizer_tmp->Add(sidetext, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 4); field->set_side_text_ptr(sidetext); } @@ -478,6 +484,59 @@ bool ConfigOptionsGroup::update_visibility(ConfigOptionMode mode) { return true; } +void ConfigOptionsGroup::msw_rescale() +{ + // update bitmaps for extra column items (like "mode markers" or buttons on settings panel) + if (rescale_extra_column_item) + for (auto extra_col : m_extra_column_item_ptrs) + rescale_extra_column_item(extra_col); + + // update bitmaps for near label widgets (like "Set uniform scale" button on settings panel) + if (rescale_near_label_widget) + for (auto near_label_widget : m_near_label_widget_ptrs) + rescale_near_label_widget(near_label_widget); + + // update undo buttons : rescale bitmaps + for (const auto& field : m_fields) + field.second->msw_rescale(); + + const int em = em_unit(parent()); + + // rescale width of label column + if (!m_options_mode.empty() && label_width > 1) + { + const int cols = m_grid_sizer->GetCols(); + const int rows = m_grid_sizer->GetEffectiveRowsCount(); + const int label_col = extra_column == nullptr ? 0 : 1; + + for (int i = 0; i < rows; i++) + { + const wxSizerItem* label_item = m_grid_sizer->GetItem(i*cols+label_col); + if (label_item->IsWindow()) + { + auto label = dynamic_cast(label_item->GetWindow()); + if (label != nullptr) { + const int label_height = int(1.5f*label->GetFont().GetPixelSize().y + 0.5f); + label->SetMinSize(wxSize(label_width*em, /*-1*/label_height)); + } + } + else if (label_item->IsSizer()) // case when we have near_label_widget + { + const wxSizerItem* l_item = label_item->GetSizer()->GetItem(1); + if (l_item->IsWindow()) + { + auto label = dynamic_cast(l_item->GetWindow()); + if (label != nullptr) { + const int label_height = int(1.5f*label->GetFont().GetPixelSize().y + 0.5f); + label->SetMinSize(wxSize(label_width*em, /*-1*/label_height)); + } + } + } + } + m_grid_sizer->Layout(); + } +} + boost::any ConfigOptionsGroup::config_value(const std::string& opt_key, int opt_index, bool deserialize) { if (deserialize) { diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp index e4ada3692..67875587a 100644 --- a/src/slic3r/GUI/OptionsGroup.hpp +++ b/src/slic3r/GUI/OptionsGroup.hpp @@ -72,7 +72,7 @@ private: std::vector m_extra_widgets;//! {std::vector()}; }; -using column_t = std::function;//std::function; +using column_t = std::function; using t_optionfield_map = std::map; using t_opt_map = std::map< std::string, std::pair >; @@ -82,7 +82,7 @@ class OptionsGroup { public: const bool staticbox {true}; const wxString title {wxString("")}; - size_t label_width = 20 * wxGetApp().em_unit();// {200}; + size_t label_width = 20 ;// {200}; wxSizer* sizer {nullptr}; column_t extra_column {nullptr}; t_change m_on_change { nullptr }; @@ -94,6 +94,9 @@ public: std::function m_get_sys_config{ nullptr }; std::function have_sys_config{ nullptr }; + std::function rescale_extra_column_item { nullptr }; + std::function rescale_near_label_widget { nullptr }; + wxFont sidetext_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) }; wxFont label_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) }; int sidetext_width{ -1 }; @@ -193,6 +196,8 @@ protected: std::map m_options; wxWindow* m_parent {nullptr}; std::vector m_options_mode; + std::vector m_extra_column_item_ptrs; + std::vector m_near_label_widget_ptrs; /// Field list, contains unique_ptrs of the derived type. /// using types that need to know what it is beyond the public interface @@ -261,6 +266,7 @@ public: void Hide(); void Show(const bool show); bool update_visibility(ConfigOptionMode mode); + void msw_rescale(); boost::any config_value(const std::string& opt_key, int opt_index, bool deserialize); // return option value from config boost::any get_config_value(const DynamicPrintConfig& config, const std::string& opt_key, int opt_index = -1); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8eb68fc39..02cdaf208 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -111,6 +111,7 @@ public: bool showing_manifold_warning_icon; void show_sizer(bool show); + void msw_rescale(); }; ObjectInfo::ObjectInfo(wxWindow *parent) : @@ -118,10 +119,10 @@ ObjectInfo::ObjectInfo(wxWindow *parent) : { GetStaticBox()->SetFont(wxGetApp().bold_font()); - auto *grid_sizer = new wxFlexGridSizer(4, 5, 5); + auto *grid_sizer = new wxFlexGridSizer(4, 5, 15); grid_sizer->SetFlexibleDirection(wxHORIZONTAL); - grid_sizer->AddGrowableCol(1, 1); - grid_sizer->AddGrowableCol(3, 1); +// grid_sizer->AddGrowableCol(1, 1); +// grid_sizer->AddGrowableCol(3, 1); auto init_info_label = [parent, grid_sizer](wxStaticText **info_label, wxString text_label) { auto *text = new wxStaticText(parent, wxID_ANY, text_label+":"); @@ -160,6 +161,11 @@ void ObjectInfo::show_sizer(bool show) manifold_warning_icon->Show(showing_manifold_warning_icon && show); } +void ObjectInfo::msw_rescale() +{ + manifold_warning_icon->SetBitmap(create_scaled_bitmap(nullptr, "exclamation")); +} + enum SlisedInfoIdx { siFilament_m, @@ -229,7 +235,8 @@ void SlicedInfo::SetTextAndShow(SlisedInfoIdx idx, const wxString& text, const w PresetComboBox::PresetComboBox(wxWindow *parent, Preset::Type preset_type) : wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 * wxGetApp().em_unit(), -1), 0, nullptr, wxCB_READONLY), preset_type(preset_type), - last_selected(wxNOT_FOUND) + last_selected(wxNOT_FOUND), + m_em_unit(wxGetApp().em_unit()) { Bind(wxEVT_COMBOBOX, [this](wxCommandEvent &evt) { auto selected_item = this->GetSelection(); @@ -281,11 +288,7 @@ wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 * }); } - edit_btn = new wxButton(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER); -#ifdef __WINDOWS__ - edit_btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); -#endif - edit_btn->SetBitmap(create_scaled_bitmap(this, "cog")); + edit_btn = new ScalableButton(parent, wxID_ANY, "cog"); edit_btn->SetToolTip(_(L("Click to edit preset"))); edit_btn->Bind(wxEVT_BUTTON, ([preset_type, this](wxCommandEvent) @@ -331,6 +334,12 @@ void PresetComboBox::check_selection() this->last_selected = GetSelection(); } +void PresetComboBox::msw_rescale() +{ + m_em_unit = wxGetApp().em_unit(); + edit_btn->msw_rescale(); +} + // Frequently changed parameters class FreqChangedParams : public OG_Settings @@ -428,7 +437,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) : option = m_og->get_option("fill_density"); option.opt.label = L("Infill"); - option.opt.width = 6 * wxGetApp().em_unit(); + option.opt.width = 6; option.opt.sidetext = " "; line.append_option(option); @@ -566,7 +575,7 @@ struct Sidebar::priv wxScrolledWindow *scrolled; wxPanel* presets_panel; // Used for MSW better layouts - PrusaModeSizer *mode_sizer; + ModeSizer *mode_sizer; wxFlexGridSizer *sizer_presets; PresetComboBox *combo_print; std::vector combos_filament; @@ -614,9 +623,9 @@ void Sidebar::priv::show_preset_comboboxes() // Sidebar / public Sidebar::Sidebar(Plater *parent) - : wxPanel(parent), p(new priv(parent)) + : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1)), p(new priv(parent)) { - p->scrolled = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1)); + p->scrolled = new wxScrolledWindow(this, wxID_ANY/*, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1)*/); p->scrolled->SetScrollbars(0, 20, 1, 2); @@ -625,7 +634,7 @@ Sidebar::Sidebar(Plater *parent) p->scrolled->SetSizer(scrolled_sizer); // Sizer with buttons for mode changing - p->mode_sizer = new PrusaModeSizer(p->scrolled, 2 * wxGetApp().em_unit()); + p->mode_sizer = new ModeSizer(p->scrolled, 2 * wxGetApp().em_unit()); // The preset chooser p->sizer_presets = new wxFlexGridSizer(10, 1, 1, 2); @@ -675,13 +684,8 @@ Sidebar::Sidebar(Plater *parent) init_combo(&p->combo_sla_material, _(L("SLA material")), Preset::TYPE_SLA_MATERIAL, false); init_combo(&p->combo_printer, _(L("Printer")), Preset::TYPE_PRINTER, false); - // calculate width of the preset labels -// p->sizer_presets->Layout(); -// const wxArrayInt& ar = p->sizer_presets->GetColWidths(); -// const int label_width = ar.IsEmpty() ? 10*wxGetApp().em_unit() : ar.front()-4; - const int margin_5 = int(0.5*wxGetApp().em_unit());// 5; - const int margin_10 = int(1.5*wxGetApp().em_unit());// 15; + const int margin_10 = 10;//int(1.5*wxGetApp().em_unit());// 15; p->sizer_params = new wxBoxSizer(wxVERTICAL); @@ -703,10 +707,6 @@ Sidebar::Sidebar(Plater *parent) p->object_settings->Hide(); p->sizer_params->Add(p->object_settings->get_sizer(), 0, wxEXPAND | wxTOP, margin_5); - p->btn_send_gcode = new wxButton(this, wxID_ANY, _(L("Send to printer"))); - p->btn_send_gcode->SetFont(wxGetApp().bold_font()); - p->btn_send_gcode->Hide(); - // Info boxes p->object_info = new ObjectInfo(p->scrolled); p->sliced_info = new SlicedInfo(p->scrolled); @@ -721,10 +721,17 @@ Sidebar::Sidebar(Plater *parent) scrolled_sizer->Add(p->sliced_info, 0, wxEXPAND | wxTOP | wxLEFT, margin_5); // Buttons underneath the scrolled area - p->btn_export_gcode = new wxButton(this, wxID_ANY, _(L("Export G-code")) + dots); - p->btn_export_gcode->SetFont(wxGetApp().bold_font()); - p->btn_reslice = new wxButton(this, wxID_ANY, _(L("Slice now"))); - p->btn_reslice->SetFont(wxGetApp().bold_font()); + + auto init_btn = [this](wxButton **btn, wxString label) { + *btn = new wxButton(this, wxID_ANY, label, wxDefaultPosition, + wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER); + (*btn)->SetFont(wxGetApp().bold_font()); + }; + + init_btn(&p->btn_send_gcode, _(L("Send to printer"))); + p->btn_send_gcode->Hide(); + init_btn(&p->btn_export_gcode, _(L("Export G-code")) + dots); + init_btn(&p->btn_reslice, _(L("Slice now"))); enable_buttons(false); auto *btns_sizer = new wxBoxSizer(wxVERTICAL); @@ -781,6 +788,28 @@ void Sidebar::remove_unused_filament_combos(const int current_extruder_count) } } +void Sidebar::update_all_preset_comboboxes() +{ + PresetBundle &preset_bundle = *wxGetApp().preset_bundle; + const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); + + // Update the print choosers to only contain the compatible presets, update the dirty flags. + if (print_tech == ptFFF) + preset_bundle.prints.update_platter_ui(p->combo_print); + else { + preset_bundle.sla_prints.update_platter_ui(p->combo_sla_print); + preset_bundle.sla_materials.update_platter_ui(p->combo_sla_material); + } + // Update the printer choosers, update the dirty flags. + preset_bundle.printers.update_platter_ui(p->combo_printer); + // Update the filament choosers to only contain the compatible presets, update the color preview, + // update the dirty flags. + if (print_tech == ptFFF) { + for (size_t i = 0; i < p->combos_filament.size(); ++i) + preset_bundle.update_platter_filament_ui(i, p->combos_filament[i]); + } +} + void Sidebar::update_presets(Preset::Type preset_type) { PresetBundle &preset_bundle = *wxGetApp().preset_bundle; @@ -820,23 +849,7 @@ void Sidebar::update_presets(Preset::Type preset_type) case Preset::TYPE_PRINTER: { -// wxWindowUpdateLocker noUpdates_scrolled(p->scrolled); - - // Update the print choosers to only contain the compatible presets, update the dirty flags. - if (print_tech == ptFFF) - preset_bundle.prints.update_platter_ui(p->combo_print); - else { - preset_bundle.sla_prints.update_platter_ui(p->combo_sla_print); - preset_bundle.sla_materials.update_platter_ui(p->combo_sla_material); - } - // Update the printer choosers, update the dirty flags. - preset_bundle.printers.update_platter_ui(p->combo_printer); - // Update the filament choosers to only contain the compatible presets, update the color preview, - // update the dirty flags. - if (print_tech == ptFFF) { - for (size_t i = 0; i < p->combos_filament.size(); ++ i) - preset_bundle.update_platter_filament_ui(i, p->combos_filament[i]); - } + update_all_preset_comboboxes(); p->show_preset_comboboxes(); break; } @@ -861,6 +874,37 @@ void Sidebar::update_reslice_btn_tooltip() const p->btn_reslice->SetToolTip(tooltip); } +void Sidebar::msw_rescale() +{ + SetMinSize(wxSize(40 * wxGetApp().em_unit(), -1)); + + p->mode_sizer->msw_rescale(); + + // Rescale preset comboboxes in respect to the current em_unit ... + for (PresetComboBox* combo : std::vector { p->combo_print, + p->combo_sla_print, + p->combo_sla_material, + p->combo_printer } ) + combo->msw_rescale(); + for (PresetComboBox* combo : p->combos_filament) + combo->msw_rescale(); + + // ... then refill them and set min size to correct layout of the sidebar + update_all_preset_comboboxes(); + + p->frequently_changed_parameters->get_og(true)->msw_rescale(); + p->frequently_changed_parameters->get_og(false)->msw_rescale(); + + p->object_list->msw_rescale(); + + p->object_manipulation->get_og()->msw_rescale(); + p->object_settings->msw_rescale(); + + p->object_info->msw_rescale(); + + p->scrolled->Layout(); +} + ObjectManipulation* Sidebar::obj_manipul() { return p->object_manipulation; @@ -1132,11 +1176,11 @@ struct Plater::priv MainFrame *main_frame; // Object popup menu - PrusaMenu object_menu; + MenuWithSeparators object_menu; // Part popup menu - PrusaMenu part_menu; + MenuWithSeparators part_menu; // SLA-Object popup menu - PrusaMenu sla_object_menu; + MenuWithSeparators sla_object_menu; // Removed/Prepended Items according to the view mode std::vector items_increase; @@ -3709,22 +3753,16 @@ void Plater::changed_object(int obj_idx) { if (obj_idx < 0) return; - auto list = wxGetApp().obj_list(); - wxASSERT(list != nullptr); - if (list == nullptr) - return; - - if (list->is_parts_changed()) { - // recenter and re - align to Z = 0 - auto model_object = p->model.objects[obj_idx]; - model_object->ensure_on_bed(); - if (this->p->printer_technology == ptSLA) { - // Update the SLAPrint from the current Model, so that the reload_scene() - // pulls the correct data, update the 3D scene. - this->p->update_restart_background_process(true, false); - } else - p->view3D->reload_scene(false); + // recenter and re - align to Z = 0 + auto model_object = p->model.objects[obj_idx]; + model_object->ensure_on_bed(); + if (this->p->printer_technology == ptSLA) { + // Update the SLAPrint from the current Model, so that the reload_scene() + // pulls the correct data, update the 3D scene. + this->p->update_restart_background_process(true, false); } + else + p->view3D->reload_scene(false); // update print this->p->schedule_background_process(); @@ -3735,26 +3773,19 @@ void Plater::changed_objects(const std::vector& object_idxs) if (object_idxs.empty()) return; - auto list = wxGetApp().obj_list(); - wxASSERT(list != nullptr); - if (list == nullptr) - return; - - if (list->is_parts_changed()) { - for (int obj_idx : object_idxs) - { - if (obj_idx < p->model.objects.size()) - // recenter and re - align to Z = 0 - p->model.objects[obj_idx]->ensure_on_bed(); - } - if (this->p->printer_technology == ptSLA) { - // Update the SLAPrint from the current Model, so that the reload_scene() - // pulls the correct data, update the 3D scene. - this->p->update_restart_background_process(true, false); - } - else - p->view3D->reload_scene(false); + for (int obj_idx : object_idxs) + { + if (obj_idx < p->model.objects.size()) + // recenter and re - align to Z = 0 + p->model.objects[obj_idx]->ensure_on_bed(); } + if (this->p->printer_technology == ptSLA) { + // Update the SLAPrint from the current Model, so that the reload_scene() + // pulls the correct data, update the 3D scene. + this->p->update_restart_background_process(true, false); + } + else + p->view3D->reload_scene(false); // update print this->p->schedule_background_process(); @@ -3797,6 +3828,18 @@ bool Plater::can_paste_from_clipboard() const return true; } +void Plater::msw_rescale() +{ + p->preview->msw_rescale(); + + p->view3D->get_canvas3d()->msw_rescale(); + + p->sidebar->msw_rescale(); + + Layout(); + GetParent()->Layout(); +} + bool Plater::can_delete() const { return p->can_delete(); } bool Plater::can_delete_all() const { return p->can_delete_all(); } bool Plater::can_increase_instances() const { return p->can_increase_instances(); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 5319e3b43..bedc31b35 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -14,6 +14,7 @@ #include "GLTexture.hpp" class wxButton; +class ScalableButton; class wxBoxSizer; class wxGLCanvas; class wxScrolledWindow; @@ -46,7 +47,7 @@ public: PresetComboBox(wxWindow *parent, Preset::Type preset_type); ~PresetComboBox(); - wxButton* edit_btn { nullptr }; + ScalableButton* edit_btn { nullptr }; enum LabelItemType { LABEL_ITEM_MARKER = 0x4d, @@ -56,14 +57,18 @@ public: void set_label_marker(int item, LabelItemType label_item_type = LABEL_ITEM_MARKER); void set_extruder_idx(const int extr_idx) { extruder_idx = extr_idx; } int get_extruder_idx() const { return extruder_idx; } + int em_unit() const { return m_em_unit; } void check_selection(); + void msw_rescale(); + private: typedef std::size_t Marker; Preset::Type preset_type; int last_selected; int extruder_idx = -1; + int m_em_unit; }; class Sidebar : public wxPanel @@ -79,9 +84,11 @@ public: void init_filament_combo(PresetComboBox **combo, const int extr_idx); void remove_unused_filament_combos(const int current_extruder_count); + void update_all_preset_comboboxes(); void update_presets(Slic3r::Preset::Type preset_type); void update_mode_sizer() const; void update_reslice_btn_tooltip() const; + void msw_rescale(); ObjectManipulation* obj_manipul(); ObjectList* obj_list(); @@ -199,6 +206,8 @@ public: bool can_copy() const; bool can_paste() const; + void msw_rescale(); + private: struct priv; std::unique_ptr p; diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 8bc747db5..81d242d4f 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -7,7 +7,9 @@ namespace Slic3r { namespace GUI { PreferencesDialog::PreferencesDialog(wxWindow* parent) : - wxDialog(parent, wxID_ANY, _(L("Preferences")), wxDefaultPosition, wxDefaultSize) { + DPIDialog(parent, wxID_ANY, _(L("Preferences")), wxDefaultPosition, + wxDefaultSize, wxDEFAULT_DIALOG_STYLE) +{ build(); } @@ -15,7 +17,7 @@ void PreferencesDialog::build() { auto app_config = get_app_config(); m_optgroup = std::make_shared(this, _(L("General"))); - m_optgroup->label_width = 40 * wxGetApp().em_unit(); //400; + m_optgroup->label_width = 40; m_optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value){ m_values[opt_key] = boost::any_cast(value) ? "1" : "0"; }; @@ -110,6 +112,8 @@ void PreferencesDialog::build() auto sizer = new wxBoxSizer(wxVERTICAL); sizer->Add(m_optgroup->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10); + SetFont(wxGetApp().normal_font()); + auto buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL); wxButton* btn = static_cast(FindWindowById(wxID_OK, this)); btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { accept(); }); @@ -138,5 +142,21 @@ void PreferencesDialog::accept() wxGetApp().update_ui_from_settings(); } +void PreferencesDialog::on_dpi_changed(const wxRect &suggested_rect) +{ + m_optgroup->msw_rescale(); + + const int em = em_unit(); + + msw_buttons_rescale(this, em, { wxID_OK, wxID_CANCEL }); + + const wxSize& size = wxSize(47 * em, 28 * em); + + SetMinSize(size); + Fit(); + + Refresh(); +} + } // GUI } // Slic3r \ No newline at end of file diff --git a/src/slic3r/GUI/Preferences.hpp b/src/slic3r/GUI/Preferences.hpp index 363daebbc..096a2c906 100644 --- a/src/slic3r/GUI/Preferences.hpp +++ b/src/slic3r/GUI/Preferences.hpp @@ -2,6 +2,7 @@ #define slic3r_Preferences_hpp_ #include "GUI.hpp" +#include "GUI_Utils.hpp" #include #include @@ -11,7 +12,7 @@ namespace GUI { class ConfigOptionsGroup; -class PreferencesDialog : public wxDialog +class PreferencesDialog : public DPIDialog { std::map m_values; std::shared_ptr m_optgroup; @@ -21,6 +22,9 @@ public: void build(); void accept(); + +protected: + void on_dpi_changed(const wxRect &suggested_rect) override; }; } // GUI diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index bed960a62..9875586ed 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -914,6 +914,16 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui) // and draw a red flag in front of the selected preset. bool wide_icons = ! selected_preset.is_compatible && m_bitmap_incompatible != nullptr; + /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display. + * So set sizes for solid_colored icons used for filament preset + * and scale them in respect to em_unit value + */ + const float scale_f = ui->em_unit() * 0.1f; + const int icon_height = 16 * scale_f + 0.5f; + const int icon_width = 16 * scale_f + 0.5f; + const int thin_space_icon_width = 4 * scale_f + 0.5f; + const int wide_space_icon_width = 6 * scale_f + 0.5f; + std::map nonsys_presets; wxString selected = ""; if (!this->m_presets.front().is_visible) @@ -934,13 +944,13 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui) std::vector bmps; if (wide_icons) // Paint a red flag for incompatible presets. - bmps.emplace_back(preset.is_compatible ? m_bitmap_cache->mkclear(16, 16) : *m_bitmap_incompatible); + bmps.emplace_back(preset.is_compatible ? m_bitmap_cache->mkclear(icon_width, icon_height) : *m_bitmap_incompatible); // Paint the color bars. - bmps.emplace_back(m_bitmap_cache->mkclear(4, 16)); + bmps.emplace_back(m_bitmap_cache->mkclear(thin_space_icon_width, icon_height)); bmps.emplace_back(*m_bitmap_main_frame); // Paint a lock at the system presets. - bmps.emplace_back(m_bitmap_cache->mkclear(6, 16)); - bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(16, 16)); + bmps.emplace_back(m_bitmap_cache->mkclear(wide_space_icon_width, icon_height)); + bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(icon_width, icon_height)); bmp = m_bitmap_cache->insert(bitmap_key, bmps); } @@ -981,12 +991,12 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui) std::vector bmps; if (wide_icons) // Paint a red flag for incompatible presets. - bmps.emplace_back(m_bitmap_cache->mkclear(16, 16)); + bmps.emplace_back(m_bitmap_cache->mkclear(icon_width, icon_height)); // Paint the color bars. - bmps.emplace_back(m_bitmap_cache->mkclear(4, 16)); + bmps.emplace_back(m_bitmap_cache->mkclear(thin_space_icon_width, icon_height)); bmps.emplace_back(*m_bitmap_main_frame); // Paint a lock at the system presets. - bmps.emplace_back(m_bitmap_cache->mkclear(6, 16)); + bmps.emplace_back(m_bitmap_cache->mkclear(wide_space_icon_width, icon_height)); bmps.emplace_back(m_bitmap_add ? *m_bitmap_add : wxNullBitmap); bmp = m_bitmap_cache->insert(bitmap_key, bmps); } @@ -996,10 +1006,14 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui) ui->SetSelection(selected_preset_item); ui->SetToolTip(ui->GetString(selected_preset_item)); ui->check_selection(); - ui->Thaw(); + ui->Thaw(); + + // Update control min size after rescale (changed Display DPI under MSW) + if (ui->GetMinWidth() != 20 * ui->em_unit()) + ui->SetMinSize(wxSize(20 * ui->em_unit(), ui->GetSize().GetHeight())); } -size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible) +size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible, const int em/* = 10*/) { if (ui == nullptr) return 0; @@ -1007,6 +1021,14 @@ size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompati ui->Clear(); size_t selected_preset_item = 0; + /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display. + * So set sizes for solid_colored(empty) icons used for preset + * and scale them in respect to em_unit value + */ + const float scale_f = em * 0.1f; + const int icon_height = 16 * scale_f + 0.5f; + const int icon_width = 16 * scale_f + 0.5f; + std::map nonsys_presets; wxString selected = ""; if (!this->m_presets.front().is_visible) @@ -1025,7 +1047,7 @@ size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompati const wxBitmap* tmp_bmp = preset.is_compatible ? m_bitmap_compatible : m_bitmap_incompatible; bmps.emplace_back((tmp_bmp == 0) ? (m_bitmap_main_frame ? *m_bitmap_main_frame : wxNullBitmap) : *tmp_bmp); // Paint a lock at the system presets. - bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(16, 16)); + bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(icon_width, icon_height)); bmp = m_bitmap_cache->insert(bitmap_key, bmps); } @@ -1292,6 +1314,11 @@ std::string PresetCollection::path_from_name(const std::string &new_name) const return (boost::filesystem::path(m_dir_path) / file_name).make_preferred().string(); } +void PresetCollection::clear_bitmap_cache() +{ + m_bitmap_cache->clear(); +} + wxString PresetCollection::separator(const std::string &label) { return wxString::FromUTF8(PresetCollection::separator_head()) + _(label) + wxString::FromUTF8(PresetCollection::separator_tail()); diff --git a/src/slic3r/GUI/Preset.hpp b/src/slic3r/GUI/Preset.hpp index 41c9ff72b..051a55f66 100644 --- a/src/slic3r/GUI/Preset.hpp +++ b/src/slic3r/GUI/Preset.hpp @@ -394,7 +394,7 @@ public: // Update the choice UI from the list of presets. // If show_incompatible, all presets are shown, otherwise only the compatible presets are shown. // If an incompatible preset is selected, it is shown as well. - size_t update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible); + size_t update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible, const int em = 10); // Update the choice UI from the list of presets. // Only the compatible presets are shown. // If an incompatible preset is selected, it is shown as well. @@ -412,6 +412,8 @@ public: // Generate a file path from a profile name. Add the ".ini" suffix if it is missing. std::string path_from_name(const std::string &new_name) const; + void clear_bitmap_cache(); + #ifdef __linux__ static const char* separator_head() { return "------- "; } static const char* separator_tail() { return " -------"; } diff --git a/src/slic3r/GUI/PresetBundle.cpp b/src/slic3r/GUI/PresetBundle.cpp index bcf76d958..b2fa0a857 100644 --- a/src/slic3r/GUI/PresetBundle.cpp +++ b/src/slic3r/GUI/PresetBundle.cpp @@ -1434,6 +1434,14 @@ bool PresetBundle::parse_color(const std::string &scolor, unsigned char *rgb_out void PresetBundle::load_default_preset_bitmaps(wxWindow *window) { + // Clear bitmap cache, before load new scaled default preset bitmaps + m_bitmapCache->clear(); + this->prints.clear_bitmap_cache(); + this->sla_prints.clear_bitmap_cache(); + this->filaments.clear_bitmap_cache(); + this->sla_materials.clear_bitmap_cache(); + this->printers.clear_bitmap_cache(); + this->prints.load_bitmap_default(window, "cog"); this->sla_prints.load_bitmap_default(window, "cog"); this->filaments.load_bitmap_default(window, "spool.png"); @@ -1468,6 +1476,18 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr wxString selected_str = ""; if (!this->filaments().front().is_visible) ui->set_label_marker(ui->Append(PresetCollection::separator(L("System presets")), wxNullBitmap)); + + /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display. + * So set sizes for solid_colored icons used for filament preset + * and scale them in respect to em_unit value + */ + const float scale_f = ui->em_unit() * 0.1f; + const int icon_height = 16 * scale_f + 0.5f; + const int normal_icon_width = 16 * scale_f + 0.5f; + const int space_icon_width = 2 * scale_f + 0.5f; + const int wide_icon_width = 24 * scale_f + 0.5f; + const int thin_icon_width = 8 * scale_f + 0.5f; + for (int i = this->filaments().front().is_visible ? 0 : 1; i < int(this->filaments().size()); ++i) { const Preset &preset = this->filaments.preset(i); bool selected = this->filament_presets[idx_extruder] == preset.name; @@ -1491,17 +1511,17 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr std::vector bmps; if (wide_icons) // Paint a red flag for incompatible presets. - bmps.emplace_back(preset.is_compatible ? m_bitmapCache->mkclear(16, 16) : *m_bitmapIncompatible); + bmps.emplace_back(preset.is_compatible ? m_bitmapCache->mkclear(normal_icon_width, icon_height) : *m_bitmapIncompatible); // Paint the color bars. parse_color(filament_rgb, rgb); - bmps.emplace_back(m_bitmapCache->mksolid(single_bar ? 24 : 16, 16, rgb)); + bmps.emplace_back(m_bitmapCache->mksolid(single_bar ? wide_icon_width : normal_icon_width, icon_height, rgb)); if (! single_bar) { parse_color(extruder_rgb, rgb); - bmps.emplace_back(m_bitmapCache->mksolid(8, 16, rgb)); + bmps.emplace_back(m_bitmapCache->mksolid(thin_icon_width, icon_height, rgb)); } // Paint a lock at the system presets. - bmps.emplace_back(m_bitmapCache->mkclear(2, 16)); - bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmapLock : m_bitmapCache->mkclear(16, 16)); + bmps.emplace_back(m_bitmapCache->mkclear(space_icon_width, icon_height)); + bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmapLock : m_bitmapCache->mkclear(normal_icon_width, icon_height)); // (preset.is_dirty ? *m_bitmapLockOpen : *m_bitmapLock) : m_bitmapCache->mkclear(16, 16)); bitmap = m_bitmapCache->insert(bitmap_key, bmps); } @@ -1536,6 +1556,10 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr ui->SetToolTip(ui->GetString(selected_preset_item)); ui->check_selection(); ui->Thaw(); + + // Update control min size after rescale (changed Display DPI under MSW) + if (ui->GetMinWidth() != 20 * ui->em_unit()) + ui->SetMinSize(wxSize(20 * ui->em_unit(), ui->GetSize().GetHeight())); } void PresetBundle::set_default_suppressed(bool default_suppressed) diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 76185b1ba..2b6e4f2a2 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -19,6 +19,7 @@ #include "MsgDialog.hpp" #include "I18N.hpp" #include "../Utils/PrintHost.hpp" +#include "wxExtensions.hpp" namespace fs = boost::filesystem; @@ -131,13 +132,11 @@ wxEvent *PrintHostQueueDialog::Event::Clone() const } PrintHostQueueDialog::PrintHostQueueDialog(wxWindow *parent) - : wxDialog(parent, wxID_ANY, _(L("Print host upload queue")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + : DPIDialog(parent, wxID_ANY, _(L("Print host upload queue")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) , on_progress_evt(this, EVT_PRINTHOST_PROGRESS, &PrintHostQueueDialog::on_progress, this) , on_error_evt(this, EVT_PRINTHOST_ERROR, &PrintHostQueueDialog::on_error, this) , on_cancel_evt(this, EVT_PRINTHOST_CANCEL, &PrintHostQueueDialog::on_cancel, this) { - enum { HEIGHT = 60, WIDTH = 30, SPACING = 5 }; - const auto em = GetTextExtent("m").x; SetSize(wxSize(HEIGHT * em, WIDTH * em)); @@ -202,6 +201,18 @@ void PrintHostQueueDialog::append_job(const PrintHostJob &job) job_list->AppendItem(fields, static_cast(ST_NEW)); } +void PrintHostQueueDialog::on_dpi_changed(const wxRect &suggested_rect) +{ + const int& em = em_unit(); + + msw_buttons_rescale(this, em, { wxID_DELETE, wxID_CANCEL, btn_error->GetId() }); + + SetMinSize(wxSize(HEIGHT * em, WIDTH * em)); + + Fit(); + Refresh(); +} + PrintHostQueueDialog::JobState PrintHostQueueDialog::get_state(int idx) { wxCHECK_MSG(idx >= 0 && idx < job_list->GetItemCount(), ST_ERROR, "Out of bounds access to job list"); diff --git a/src/slic3r/GUI/PrintHostDialogs.hpp b/src/slic3r/GUI/PrintHostDialogs.hpp index 105899cf0..427c4f6bf 100644 --- a/src/slic3r/GUI/PrintHostDialogs.hpp +++ b/src/slic3r/GUI/PrintHostDialogs.hpp @@ -41,7 +41,7 @@ private: }; -class PrintHostQueueDialog : public wxDialog +class PrintHostQueueDialog : public DPIDialog { public: class Event : public wxEvent @@ -62,6 +62,10 @@ public: PrintHostQueueDialog(wxWindow *parent); void append_job(const PrintHostJob &job); + +protected: + void on_dpi_changed(const wxRect &suggested_rect) override; + private: enum Column { COL_ID, @@ -81,6 +85,8 @@ private: ST_COMPLETED, }; + enum { HEIGHT = 60, WIDTH = 30, SPACING = 5 }; + wxButton *btn_cancel; wxButton *btn_error; wxDataViewListCtrl *job_list; diff --git a/src/slic3r/GUI/RammingChart.cpp b/src/slic3r/GUI/RammingChart.cpp index 41e5cdfe7..6f71e8616 100644 --- a/src/slic3r/GUI/RammingChart.cpp +++ b/src/slic3r/GUI/RammingChart.cpp @@ -141,6 +141,9 @@ void Chart::mouse_double_clicked(wxMouseEvent& event) { void Chart::recalculate_line() { + m_line_to_draw.clear(); + m_total_volume = 0.f; + std::vector points; for (auto& but : m_buttons) { points.push_back(wxPoint(math_to_screen(but.get_pos()))); @@ -150,92 +153,88 @@ void Chart::recalculate_line() { break; } } - std::sort(points.begin(),points.end(),[](wxPoint& a,wxPoint& b) { return a.x < b.x; }); - - m_line_to_draw.clear(); - m_total_volume = 0.f; - - - // Cubic spline interpolation: see https://en.wikiversity.org/wiki/Cubic_Spline_Interpolation#Methods - const bool boundary_first_derivative = true; // true - first derivative is 0 at the leftmost and rightmost point - // false - second ---- || ------- - const int N = points.size()-1; // last point can be accessed as N, we have N+1 total points - std::vector diag(N+1); - std::vector mu(N+1); - std::vector lambda(N+1); - std::vector h(N+1); - std::vector rhs(N+1); - - // let's fill in inner equations - for (int i=1;i<=N;++i) h[i] = points[i].x-points[i-1].x; - std::fill(diag.begin(),diag.end(),2.f); - for (int i=1;i<=N-1;++i) { - mu[i] = h[i]/(h[i]+h[i+1]); - lambda[i] = 1.f - mu[i]; - rhs[i] = 6 * ( float(points[i+1].y-points[i].y )/(h[i+1]*(points[i+1].x-points[i-1].x)) - - float(points[i].y -points[i-1].y)/(h[i] *(points[i+1].x-points[i-1].x)) ); - } - - // now fill in the first and last equations, according to boundary conditions: - if (boundary_first_derivative) { - const float endpoints_derivative = 0; - lambda[0] = 1; - mu[N] = 1; - rhs[0] = (6.f/h[1]) * (float(points[0].y-points[1].y)/(points[0].x-points[1].x) - endpoints_derivative); - rhs[N] = (6.f/h[N]) * (endpoints_derivative - float(points[N-1].y-points[N].y)/(points[N-1].x-points[N].x)); - } - else { - lambda[0] = 0; - mu[N] = 0; - rhs[0] = 0; - rhs[N] = 0; - } + + // The calculation wouldn't work in case the ramming is to be turned off completely. + if (points.size()>1) { + std::sort(points.begin(),points.end(),[](wxPoint& a,wxPoint& b) { return a.x < b.x; }); + + // Cubic spline interpolation: see https://en.wikiversity.org/wiki/Cubic_Spline_Interpolation#Methods + const bool boundary_first_derivative = true; // true - first derivative is 0 at the leftmost and rightmost point + // false - second ---- || ------- + const int N = points.size()-1; // last point can be accessed as N, we have N+1 total points + std::vector diag(N+1); + std::vector mu(N+1); + std::vector lambda(N+1); + std::vector h(N+1); + std::vector rhs(N+1); - // the trilinear system is ready to be solved: - for (int i=1;i<=N;++i) { - float multiple = mu[i]/diag[i-1]; // let's subtract proper multiple of above equation - diag[i]-= multiple * lambda[i-1]; - rhs[i] -= multiple * rhs[i-1]; - } - // now the back substitution (vector mu contains invalid values from now on): - rhs[N] = rhs[N]/diag[N]; - for (int i=N-1;i>=0;--i) - rhs[i] = (rhs[i]-lambda[i]*rhs[i+1])/diag[i]; - - - - - unsigned int i=1; - float y=0.f; - for (int x=m_rect.GetLeft(); x<=m_rect.GetRight() ; ++x) { - if (splines) { - if (i=0;--i) + rhs[i] = (rhs[i]-lambda[i]*rhs[i+1])/diag[i]; + + unsigned int i=1; + float y=0.f; + for (int x=m_rect.GetLeft(); x<=m_rect.GetRight() ; ++x) { + if (splines) { + if (i x) + y = points[0].y; + else + if (points[N].x < x) + y = points[N].y; + else + y = (rhs[i-1]*pow(points[i].x-x,3)+rhs[i]*pow(x-points[i-1].x,3)) / (6*h[i]) + + (points[i-1].y-rhs[i-1]*h[i]*h[i]/6.f) * (points[i].x-x)/h[i] + + (points[i].y -rhs[i] *h[i]*h[i]/6.f) * (x-points[i-1].x)/h[i]; + m_line_to_draw.push_back(y); } - if (points[0].x > x) - y = points[0].y; - else - if (points[N].x < x) - y = points[N].y; - else - y = (rhs[i-1]*pow(points[i].x-x,3)+rhs[i]*pow(x-points[i-1].x,3)) / (6*h[i]) + - (points[i-1].y-rhs[i-1]*h[i]*h[i]/6.f) * (points[i].x-x)/h[i] + - (points[i].y -rhs[i] *h[i]*h[i]/6.f) * (x-points[i-1].x)/h[i]; - m_line_to_draw.push_back(y); + else { + float x_math = screen_to_math(wxPoint(x,0)).m_x; + if (i+2<=points.size() && m_buttons[i+1].get_pos().m_x-0.125 < x_math) + ++i; + m_line_to_draw.push_back(math_to_screen(wxPoint2DDouble(x_math,m_buttons[i].get_pos().m_y)).y); + } + + m_line_to_draw.back() = std::max(m_line_to_draw.back(), m_rect.GetTop()-1); + m_line_to_draw.back() = std::min(m_line_to_draw.back(), m_rect.GetBottom()-1); + m_total_volume += (m_rect.GetBottom() - m_line_to_draw.back()) * (visible_area.m_width / m_rect.GetWidth()) * (visible_area.m_height / m_rect.GetHeight()); } - else { - float x_math = screen_to_math(wxPoint(x,0)).m_x; - if (i+2<=points.size() && m_buttons[i+1].get_pos().m_x-0.125 < x_math) - ++i; - m_line_to_draw.push_back(math_to_screen(wxPoint2DDouble(x_math,m_buttons[i].get_pos().m_y)).y); - } - - - m_line_to_draw.back() = std::max(m_line_to_draw.back(), m_rect.GetTop()-1); - m_line_to_draw.back() = std::min(m_line_to_draw.back(), m_rect.GetBottom()-1); - m_total_volume += (m_rect.GetBottom() - m_line_to_draw.back()) * (visible_area.m_width / m_rect.GetWidth()) * (visible_area.m_height / m_rect.GetHeight()); } - + wxPostEvent(this->GetParent(), wxCommandEvent(EVT_WIPE_TOWER_CHART_CHANGED)); Refresh(); } diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp index 2746c643e..162a36c75 100644 --- a/src/slic3r/GUI/SysInfoDialog.cpp +++ b/src/slic3r/GUI/SysInfoDialog.cpp @@ -41,10 +41,12 @@ std::string get_main_info(bool format_as_html) } SysInfoDialog::SysInfoDialog() - : wxDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) + : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) { wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); SetBackgroundColour(bgr_clr); + SetFont(wxGetApp().normal_font()); + wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); hsizer->SetMinSize(wxSize(50 * wxGetApp().em_unit(), -1)); @@ -52,8 +54,9 @@ SysInfoDialog::SysInfoDialog() main_sizer->Add(hsizer, 1, wxEXPAND | wxALL, 10); // logo - auto *logo = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap(this, "Slic3r_192px.png", 192)); - hsizer->Add(logo, 0, wxALIGN_CENTER_VERTICAL); + m_logo_bmp = ScalableBitmap(this, "Slic3r_192px.png", 192); + m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp()); + hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL); wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); hsizer->Add(vsizer, 1, wxEXPAND|wxLEFT, 20); @@ -61,8 +64,7 @@ SysInfoDialog::SysInfoDialog() // title { wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); - wxFont title_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - title_font.SetWeight(wxFONTWEIGHT_BOLD); + wxFont title_font = wxGetApp().bold_font(); title_font.SetFamily(wxFONTFAMILY_ROMAN); title_font.SetPointSize(22); title->SetFont(title_font); @@ -70,7 +72,7 @@ SysInfoDialog::SysInfoDialog() } // main_info_text - wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + wxFont font = wxGetApp().normal_font(); const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue()); auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()); @@ -78,10 +80,10 @@ SysInfoDialog::SysInfoDialog() const int fs = font.GetPointSize() - 1; int size[] = { static_cast(fs*1.5), static_cast(fs*1.4), static_cast(fs*1.3), fs, fs, fs, fs }; - wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_NEVER); + m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_NEVER); { - html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); - html->SetBorders(2); + m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); + m_html->SetBorders(2); const auto text = wxString::Format( "" "" @@ -91,16 +93,16 @@ SysInfoDialog::SysInfoDialog() "" "", bgr_clr_str, text_clr_str, text_clr_str, get_main_info(true)); - html->SetPage(text); - vsizer->Add(html, 1, wxEXPAND | wxBOTTOM, wxGetApp().em_unit()); + m_html->SetPage(text); + vsizer->Add(m_html, 1, wxEXPAND | wxBOTTOM, wxGetApp().em_unit()); } // opengl_info - wxHtmlWindow* opengl_info_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO); + m_opengl_info_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO); { - opengl_info_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit())); - opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); - opengl_info_html->SetBorders(10); + m_opengl_info_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit())); + m_opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); + m_opengl_info_html->SetBorders(10); const auto text = wxString::Format( "" "" @@ -110,14 +112,15 @@ SysInfoDialog::SysInfoDialog() "" "", bgr_clr_str, text_clr_str, text_clr_str, _3DScene::get_gl_info(true, true)); - opengl_info_html->SetPage(text); - main_sizer->Add(opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15); + m_opengl_info_html->SetPage(text); + main_sizer->Add(m_opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15); } wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxOK); - auto btn_copy_to_clipboard = new wxButton(this, wxID_ANY, "Copy to Clipboard", wxDefaultPosition, wxDefaultSize); - buttons->Insert(0, btn_copy_to_clipboard, 0, wxLEFT, 5); - btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this); + m_btn_copy_to_clipboard = new wxButton(this, wxID_ANY, "Copy to Clipboard", wxDefaultPosition, wxDefaultSize); + + buttons->Insert(0, m_btn_copy_to_clipboard, 0, wxLEFT, 5); + m_btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this); this->SetEscapeId(wxID_OK); this->Bind(wxEVT_BUTTON, &SysInfoDialog::onCloseDialog, this, wxID_OK); @@ -130,6 +133,34 @@ SysInfoDialog::SysInfoDialog() main_sizer->SetSizeHints(this); } +void SysInfoDialog::on_dpi_changed(const wxRect &suggested_rect) +{ + m_logo_bmp.msw_rescale(); + m_logo->SetBitmap(m_logo_bmp.bmp()); + + wxFont font = GetFont(); + const int fs = font.GetPointSize() - 1; + int font_size[] = { static_cast(fs*1.5), static_cast(fs*1.4), static_cast(fs*1.3), fs, fs, fs, fs }; + + m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size); + m_html->Refresh(); + + const int& em = em_unit(); + + msw_buttons_rescale(this, em, { wxID_OK, m_btn_copy_to_clipboard->GetId() }); + + m_opengl_info_html->SetMinSize(wxSize(-1, 16 * em)); + m_opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size); + m_opengl_info_html->Refresh(); + + const wxSize& size = wxSize(65 * em, 55 * em); + + SetMinSize(size); + Fit(); + + Refresh(); +} + void SysInfoDialog::onCopyToClipboard(wxEvent &) { wxTheClipboard->Open(); diff --git a/src/slic3r/GUI/SysInfoDialog.hpp b/src/slic3r/GUI/SysInfoDialog.hpp index ee1b85ce6..3b1459648 100644 --- a/src/slic3r/GUI/SysInfoDialog.hpp +++ b/src/slic3r/GUI/SysInfoDialog.hpp @@ -4,14 +4,26 @@ #include #include +#include "GUI_Utils.hpp" +#include "wxExtensions.hpp" + namespace Slic3r { namespace GUI { -class SysInfoDialog : public wxDialog +class SysInfoDialog : public DPIDialog { - wxString text_info {wxEmptyString}; + ScalableBitmap m_logo_bmp; + wxStaticBitmap* m_logo; + wxHtmlWindow* m_opengl_info_html; + wxHtmlWindow* m_html; + + wxButton* m_btn_copy_to_clipboard; + public: SysInfoDialog(); + +protected: + void on_dpi_changed(const wxRect &suggested_rect) override; private: void onCopyToClipboard(wxEvent &); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index a697c7a71..b57678e86 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -110,37 +110,28 @@ void Tab::create_preset_tab() #endif //__WXOSX__ // preset chooser - m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(25 * m_em_unit, -1), 0, 0, wxCB_READONLY); + m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(35 * m_em_unit, -1), 0, 0, wxCB_READONLY); auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); //buttons - wxBitmap bmpMenu; - bmpMenu = create_scaled_bitmap(this, "save"); - m_btn_save_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE); - if (wxMSW) m_btn_save_preset->SetBackgroundColour(color); - bmpMenu = create_scaled_bitmap(this, "cross"/*"delete.png"*/); - m_btn_delete_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE); - if (wxMSW) m_btn_delete_preset->SetBackgroundColour(color); + m_scaled_buttons.reserve(6); + m_scaled_buttons.reserve(2); + + add_scaled_button(panel, &m_btn_save_preset, "save"); + add_scaled_button(panel, &m_btn_delete_preset, "cross"); m_show_incompatible_presets = false; - m_bmp_show_incompatible_presets = create_scaled_bitmap(this, "flag_red"); - m_bmp_hide_incompatible_presets = create_scaled_bitmap(this, "flag_green"); - m_btn_hide_incompatible_presets = new wxBitmapButton(panel, wxID_ANY, m_bmp_hide_incompatible_presets, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE); - if (wxMSW) m_btn_hide_incompatible_presets->SetBackgroundColour(color); + add_scaled_bitmap(this, m_bmp_show_incompatible_presets, "flag_red"); + add_scaled_bitmap(this, m_bmp_hide_incompatible_presets, "flag_green"); + + add_scaled_button(panel, &m_btn_hide_incompatible_presets, m_bmp_hide_incompatible_presets.name()); m_btn_save_preset->SetToolTip(_(L("Save current ")) + m_title); m_btn_delete_preset->SetToolTip(_(L("Delete this preset"))); m_btn_delete_preset->Disable(); - m_undo_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER); - m_undo_to_sys_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER); - m_question_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER); - if (wxMSW) { - m_undo_btn->SetBackgroundColour(color); - m_undo_to_sys_btn->SetBackgroundColour(color); - m_question_btn->SetBackgroundColour(color); - } + add_scaled_button(panel, &m_question_btn, "question"); m_question_btn->SetToolTip(_(L("Hover the cursor over buttons to find more information \n" "or click this button."))); @@ -148,22 +139,21 @@ void Tab::create_preset_tab() // Determine the theme color of OS (dark or light) auto luma = wxGetApp().get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); // Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field. - m_bmp_value_lock = create_scaled_bitmap(this, luma >= 128 ? "lock_closed" : "lock_closed_white"); - m_bmp_value_unlock = create_scaled_bitmap(this, "lock_open"); + add_scaled_bitmap(this, m_bmp_value_lock , luma >= 128 ? "lock_closed" : "lock_closed_white"); + add_scaled_bitmap(this, m_bmp_value_unlock, "lock_open"); m_bmp_non_system = &m_bmp_white_bullet; // Bitmaps to be shown on the "Undo user changes" button next to each input field. - m_bmp_value_revert = create_scaled_bitmap(this, "undo"); - m_bmp_white_bullet = create_scaled_bitmap(this, luma >= 128 ? "dot" : "dot_white"/*"bullet_white.png"*/); - m_bmp_question = create_scaled_bitmap(this, "question"); + add_scaled_bitmap(this, m_bmp_value_revert, "undo"); + add_scaled_bitmap(this, m_bmp_white_bullet, luma >= 128 ? "dot" : "dot_white"); fill_icon_descriptions(); set_tooltips_text(); - m_undo_btn->SetBitmap(m_bmp_white_bullet); + add_scaled_button(panel, &m_undo_btn, m_bmp_white_bullet.name()); + add_scaled_button(panel, &m_undo_to_sys_btn, m_bmp_white_bullet.name()); + m_undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(); })); - m_undo_to_sys_btn->SetBitmap(m_bmp_white_bullet); m_undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(true); })); - m_question_btn->SetBitmap(m_bmp_question); m_question_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { auto dlg = new ButtonsDescription(this, &m_icon_descriptions); @@ -183,7 +173,7 @@ void Tab::create_preset_tab() m_default_text_clr = wxGetApp().get_label_clr_default(); // Sizer with buttons for mode changing - m_mode_sizer = new PrusaModeSizer(panel); + m_mode_sizer = new ModeSizer(panel); const float scale_factor = wxGetApp().em_unit()*0.1;// GetContentScaleFactor(); m_hsizer = new wxBoxSizer(wxHORIZONTAL); @@ -259,12 +249,36 @@ void Tab::create_preset_tab() toggle_show_hide_incompatible(); })); + // Fill cache for mode bitmaps + m_mode_bitmap_cache.reserve(3); + m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_simple_.png")); + m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_middle_.png")); + m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_expert_.png")); + // Initialize the DynamicPrintConfig by default keys/values. build(); rebuild_page_tree(); m_complited = true; } +void Tab::add_scaled_button(wxWindow* parent, + ScalableButton** btn, + const std::string& icon_name, + const wxString& label/* = wxEmptyString*/, + long style /*= wxBU_EXACTFIT | wxNO_BORDER*/) +{ + *btn = new ScalableButton(parent, wxID_ANY, icon_name, label, wxDefaultSize, wxDefaultPosition, style); + m_scaled_buttons.push_back(*btn); +} + +void Tab::add_scaled_bitmap(wxWindow* parent, + ScalableBitmap& bmp, + const std::string& icon_name) +{ + bmp = ScalableBitmap(parent, icon_name); + m_scaled_bitmaps.push_back(&bmp); +} + void Tab::load_initial_data() { m_config = &m_presets->get_edited_preset().config; @@ -281,9 +295,8 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str icon_idx = (m_icon_index.find(icon) == m_icon_index.end()) ? -1 : m_icon_index.at(icon); if (icon_idx == -1) { // Add a new icon to the icon list. -// wxIcon img_icon(from_u8(Slic3r::var(icon)), wxBITMAP_TYPE_PNG); -// m_icons->Add(img_icon); - m_icons->Add(create_scaled_bitmap(this, icon)); + m_scaled_icons_list.push_back(ScalableBitmap(this, icon)); + m_icons->Add(m_scaled_icons_list.back().bmp()); icon_idx = ++m_icon_count; m_icon_index[icon] = icon_idx; } @@ -294,7 +307,7 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str #else auto panel = this; #endif - PageShp page(new Page(panel, title, icon_idx)); + PageShp page(new Page(panel, title, icon_idx, m_mode_bitmap_cache)); // page->SetBackgroundStyle(wxBG_STYLE_SYSTEM); #ifdef __WINDOWS__ // page->SetDoubleBuffered(true); @@ -402,8 +415,8 @@ void Tab::update_changed_ui() { bool is_nonsys_value = false; bool is_modified_value = true; - const wxBitmap *sys_icon = &m_bmp_value_lock; - const wxBitmap *icon = &m_bmp_value_revert; + const ScalableBitmap *sys_icon = &m_bmp_value_lock; + const ScalableBitmap *icon = &m_bmp_value_revert; const wxColour *color = &m_sys_label_clr; @@ -595,8 +608,8 @@ void Tab::update_changed_tree_ui() void Tab::update_undo_buttons() { - m_undo_btn->SetBitmap(m_is_modified_values ? m_bmp_value_revert : m_bmp_white_bullet); - m_undo_to_sys_btn->SetBitmap(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock); + m_undo_btn-> SetBitmap_(m_is_modified_values ? m_bmp_value_revert: m_bmp_white_bullet); + m_undo_to_sys_btn-> SetBitmap_(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock); m_undo_btn->SetToolTip(m_is_modified_values ? m_ttg_value_revert : m_ttg_white_bullet); m_undo_to_sys_btn->SetToolTip(m_is_nonsys_values ? *m_ttg_non_system : m_ttg_value_lock); @@ -673,7 +686,7 @@ void Tab::update_dirty() void Tab::update_tab_ui() { - m_selected_preset_item = m_presets->update_tab_ui(m_presets_choice, m_show_incompatible_presets); + m_selected_preset_item = m_presets->update_tab_ui(m_presets_choice, m_show_incompatible_presets, m_em_unit); } // Load a provied DynamicConfig into the tab, modifying the active preset. @@ -726,6 +739,42 @@ void Tab::update_visibility() update_changed_tree_ui(); } +void Tab::msw_rescale() +{ + m_em_unit = wxGetApp().em_unit(); + + m_mode_sizer->msw_rescale(); + + m_presets_choice->SetSize(35 * m_em_unit, -1); + m_treectrl->SetMinSize(wxSize(20 * m_em_unit, -1)); + + update_tab_ui(); + + // rescale buttons and cached bitmaps + for (const auto btn : m_scaled_buttons) + btn->msw_rescale(); + for (const auto bmp : m_scaled_bitmaps) + bmp->msw_rescale(); + for (ScalableBitmap& bmp : m_mode_bitmap_cache) + bmp.msw_rescale(); + + // rescale icons for tree_ctrl + for (ScalableBitmap& bmp : m_scaled_icons_list) + bmp.msw_rescale(); + // recreate and set new ImageList for tree_ctrl + m_icons->RemoveAll(); + m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight()); + for (ScalableBitmap& bmp : m_scaled_icons_list) + m_icons->Add(bmp.bmp()); + m_treectrl->AssignImageList(m_icons); + + // rescale options_groups + for (auto page : m_pages) + page->msw_rescale(); + + Layout(); +} + Field* Tab::get_field(const t_config_option_key& opt_key, int opt_index/* = -1*/) const { Field* field = nullptr; @@ -1121,10 +1170,10 @@ void TabPrint::build() optgroup->append_single_option_line("complete_objects"); line = { _(L("Extruder clearance (mm)")), "" }; Option option = optgroup->get_option("extruder_clearance_radius"); - option.opt.width = 60; + option.opt.width = 6; line.append_option(option); option = optgroup->get_option("extruder_clearance_height"); - option.opt.width = 60; + option.opt.width = 6; line.append_option(option); optgroup->append_line(line); @@ -1138,14 +1187,14 @@ void TabPrint::build() optgroup = page->new_optgroup(_(L("Post-processing scripts")), 0); option = optgroup->get_option("post_process"); option.opt.full_width = true; - option.opt.height = 5 * m_em_unit;//50; + option.opt.height = 5;//50; optgroup->append_single_option_line(option); page = add_options_page(_(L("Notes")), "note.png"); optgroup = page->new_optgroup(_(L("Notes")), 0); option = optgroup->get_option("notes"); option.opt.full_width = true; - option.opt.height = 25 * m_em_unit;//250; + option.opt.height = 25;//250; optgroup->append_single_option_line(option); page = add_options_page(_(L("Dependencies")), "wrench.png"); @@ -1458,7 +1507,7 @@ void TabFilament::build() optgroup->append_single_option_line("bridge_fan_speed"); optgroup->append_single_option_line("disable_fan_first_layers"); - optgroup = page->new_optgroup(_(L("Cooling thresholds")), 250); + optgroup = page->new_optgroup(_(L("Cooling thresholds")), 25); optgroup->append_single_option_line("fan_below_layer_time"); optgroup->append_single_option_line("slowdown_below_layer_time"); optgroup->append_single_option_line("min_print_speed"); @@ -1508,8 +1557,8 @@ void TabFilament::build() }; optgroup->append_line(line); - const int gcode_field_height = 15 * m_em_unit; // 150 - const int notes_field_height = 25 * m_em_unit; // 250 + const int gcode_field_height = 15; // 150 + const int notes_field_height = 25; // 250 page = add_options_page(_(L("Custom G-code")), "cog"); optgroup = page->new_optgroup(_(L("Start G-code")), 0); @@ -1606,8 +1655,8 @@ wxSizer* Tab::description_line_widget(wxWindow* parent, ogStaticText* *StaticTex { *StaticText = new ogStaticText(parent, ""); - auto font = (new wxSystemSettings)->GetFont(wxSYS_DEFAULT_GUI_FONT); - (*StaticText)->SetFont(font); +// auto font = (new wxSystemSettings)->GetFont(wxSYS_DEFAULT_GUI_FONT); + (*StaticText)->SetFont(wxGetApp().normal_font()); auto sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(*StaticText, 1, wxEXPAND|wxALL, 0); @@ -1629,10 +1678,10 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup) } auto printhost_browse = [=](wxWindow* parent) { - auto btn = m_printhost_browse_btn = new wxButton(parent, wxID_ANY, _(L(" Browse ")) + dots, - wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT); + add_scaled_button(parent, &m_printhost_browse_btn, "browse", _(L(" Browse ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); + ScalableButton* btn = m_printhost_browse_btn; btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - btn->SetBitmap(create_scaled_bitmap(this, "browse")); + auto sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(btn); @@ -1648,10 +1697,9 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup) }; auto print_host_test = [this](wxWindow* parent) { - auto btn = m_print_host_test_btn = new wxButton(parent, wxID_ANY, _(L("Test")), - wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT); - btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - btn->SetBitmap(create_scaled_bitmap(this, "test")); + add_scaled_button(parent, &m_print_host_test_btn, "test", _(L("Test")), wxBU_LEFT | wxBU_EXACTFIT); + ScalableButton* btn = m_print_host_test_btn; + btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); auto sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(btn); @@ -1755,6 +1803,8 @@ void TabPrinter::build_fff() auto *nozzle_diameter = dynamic_cast(m_config->option("nozzle_diameter")); m_initial_extruders_count = m_extruders_count = nozzle_diameter->values.size(); + wxGetApp().sidebar().update_objects_list_extruder_column(m_initial_extruders_count); + const Preset* parent_preset = m_presets->get_selected_preset_parent(); m_sys_extruders_count = parent_preset == nullptr ? 0 : static_cast(parent_preset->config.option("nozzle_diameter"))->values.size(); @@ -1764,9 +1814,9 @@ void TabPrinter::build_fff() Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" }; line.widget = [this](wxWindow* parent) { - auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT); - btn->SetFont(wxGetApp().small_font()); - btn->SetBitmap(create_scaled_bitmap(this, "printer_white")); + ScalableButton* btn; + add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); + btn->SetFont(wxGetApp().normal_font()); auto sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(btn); @@ -1881,7 +1931,7 @@ void TabPrinter::build_fff() m_use_silent_mode = val; } } - build_extruder_pages(); + build_unregular_pages(); update_dirty(); on_value_change(opt_key, value); }); @@ -1893,8 +1943,8 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("use_volumetric_e"); optgroup->append_single_option_line("variable_layer_height"); - const int gcode_field_height = 15 * m_em_unit; // 150 - const int notes_field_height = 25 * m_em_unit; // 250 + const int gcode_field_height = 15; // 150 + const int notes_field_height = 25; // 250 page = add_options_page(_(L("Custom G-code")), "cog"); optgroup = page->new_optgroup(_(L("Start G-code")), 0); option = optgroup->get_option("start_gcode"); @@ -1948,7 +1998,7 @@ void TabPrinter::build_fff() }; optgroup->append_line(line); - build_extruder_pages(); + build_unregular_pages(); #if 0 if (!m_no_controller) @@ -1965,9 +2015,10 @@ void TabPrinter::build_sla() Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" }; line.widget = [this](wxWindow* parent) { - auto btn = new wxButton(parent, wxID_ANY, _(L(" Set ")) + dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT); - btn->SetFont(wxGetApp().small_font()); - btn->SetBitmap(create_scaled_bitmap(this, "printer_white")); + ScalableButton* btn; + add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); + btn->SetFont(wxGetApp().normal_font()); + auto sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(btn); @@ -2023,7 +2074,7 @@ void TabPrinter::build_sla() optgroup = page->new_optgroup(_(L("Print Host upload"))); build_printhost(optgroup.get()); - const int notes_field_height = 25 * m_em_unit; // 250 + const int notes_field_height = 25; // 250 page = add_options_page(_(L("Notes")), "note.png"); optgroup = page->new_optgroup(_(L("Notes")), 0); @@ -2051,13 +2102,23 @@ void TabPrinter::update_serial_ports() void TabPrinter::extruders_count_changed(size_t extruders_count) { - m_extruders_count = extruders_count; - m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count); - m_preset_bundle->update_multi_material_filament_presets(); - build_extruder_pages(); - reload_config(); - on_value_change("extruders_count", extruders_count); - wxGetApp().sidebar().update_objects_list_extruder_column(extruders_count); + bool is_count_changed = false; + if (m_extruders_count != extruders_count) { + m_extruders_count = extruders_count; + m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count); + m_preset_bundle->update_multi_material_filament_presets(); + is_count_changed = true; + } + + /* This function should be call in any case because of correct updating/rebuilding + * of unregular pages of a Printer Settings + */ + build_unregular_pages(); + + if (is_count_changed) { + on_value_change("extruders_count", extruders_count); + wxGetApp().sidebar().update_objects_list_extruder_column(extruders_count); + } } void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key) @@ -2078,12 +2139,12 @@ PageShp TabPrinter::build_kinematics_page() // Legend for OptionsGroups auto optgroup = page->new_optgroup(""); optgroup->set_show_modified_btns_val(false); - optgroup->label_width = 23 * m_em_unit;// 230; + optgroup->label_width = 23;// 230; auto line = Line{ "", "" }; ConfigOptionDef def; def.type = coString; - def.width = 150; + def.width = 15; def.gui_type = "legend"; def.mode = comAdvanced; def.tooltip = L("Values in this column are for Full Power mode"); @@ -2125,12 +2186,23 @@ PageShp TabPrinter::build_kinematics_page() return page; } - -void TabPrinter::build_extruder_pages() +/* Previous name build_extruder_pages(). + * + * This function was renamed because of now it implements not just an extruder pages building, + * but "Machine limits" and "Single extruder MM setup" too + * (These pages can changes according to the another values of a current preset) + * */ +void TabPrinter::build_unregular_pages() { size_t n_before_extruders = 2; // Count of pages before Extruder pages bool is_marlin_flavor = m_config->option>("gcode_flavor")->value == gcfMarlin; + /* ! Freeze/Thaw in this function is needed to avoid call OnPaint() for erased pages + * and be cause of application crash, when try to change Preset in moment, + * when one of unregular pages is selected. + * */ + Freeze(); + // Add/delete Kinematics page according to is_marlin_flavor size_t existed_page = 0; for (int i = n_before_extruders; i < m_pages.size(); ++i) // first make sure it's not there already @@ -2175,12 +2247,11 @@ void TabPrinter::build_extruder_pages() m_has_single_extruder_MM_page = true; } - + // Build missed extruder pages for (auto extruder_idx = m_extruders_count_old; extruder_idx < m_extruders_count; ++extruder_idx) { //# build page - char buf[512]; - sprintf(buf, _CHB(L("Extruder %d")), extruder_idx + 1); - auto page = add_options_page(from_u8(buf), "funnel", true); + const wxString& page_name = wxString::Format(_(L("Extruder %d")), int(extruder_idx + 1)); + auto page = add_options_page(page_name, "funnel", true); m_pages.insert(m_pages.begin() + n_before_extruders + extruder_idx, page); auto optgroup = page->new_optgroup(_(L("Size"))); @@ -2223,8 +2294,13 @@ void TabPrinter::build_extruder_pages() m_pages.erase( m_pages.begin() + n_before_extruders + m_extruders_count, m_pages.begin() + n_before_extruders + m_extruders_count_old); + Thaw(); + m_extruders_count_old = m_extruders_count; rebuild_page_tree(); + + // Reload preset pages with current configuration values + reload_config(); } // this gets executed after preset is loaded and before GUI fields are updated @@ -2492,7 +2568,6 @@ void Tab::rebuild_page_tree() m_treectrl->SelectItem(item); } } -// Thaw(); } void Tab::update_page_tree_visibility() @@ -2728,7 +2803,8 @@ bool Tab::may_switch_to_SLA_preset() void Tab::OnTreeSelChange(wxTreeEvent& event) { - if (m_disable_tree_sel_changed_event) return; + if (m_disable_tree_sel_changed_event) + return; // There is a bug related to Ubuntu overlay scrollbars, see https://github.com/prusa3d/Slic3r/issues/898 and https://github.com/prusa3d/Slic3r/issues/952. // The issue apparently manifests when Show()ing a window with overlay scrollbars while the UI is frozen. For this reason, @@ -2877,7 +2953,7 @@ void Tab::toggle_show_hide_incompatible() void Tab::update_show_hide_incompatible_button() { - m_btn_hide_incompatible_presets->SetBitmap(m_show_incompatible_presets ? + m_btn_hide_incompatible_presets->SetBitmap_(m_show_incompatible_presets ? m_bmp_show_incompatible_presets : m_bmp_hide_incompatible_presets); m_btn_hide_incompatible_presets->SetToolTip(m_show_incompatible_presets ? "Both compatible an incompatible presets are shown. Click to hide presets not compatible with the current printer." : @@ -2909,10 +2985,8 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep { deps.checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All"))); deps.checkbox->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - deps.btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT); - deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - - deps.btn->SetBitmap(create_scaled_bitmap(this, "printer_white")); + add_scaled_button(parent, &deps.btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); + deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); auto sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add((deps.checkbox), 0, wxALIGN_CENTER_VERTICAL); @@ -3069,6 +3143,12 @@ void Page::update_visibility(ConfigOptionMode mode) m_show = ret_val; } +void Page::msw_rescale() +{ + for (auto group : m_optgroups) + group->msw_rescale(); +} + Field* Page::get_field(const t_config_option_key& opt_key, int opt_index /*= -1*/) const { Field* field = nullptr; @@ -3092,18 +3172,16 @@ bool Page::set_value(const t_config_option_key& opt_key, const boost::any& value // package Slic3r::GUI::Tab::Page; ConfigOptionsGroupShp Page::new_optgroup(const wxString& title, int noncommon_label_width /*= -1*/) { - auto extra_column = [](wxWindow* parent, const Line& line) + auto extra_column = [this](wxWindow* parent, const Line& line) { std::string bmp_name; const std::vector