diff --git a/blupload.py b/blupload.py deleted file mode 100644 index 0c9a47b..0000000 --- a/blupload.py +++ /dev/null @@ -1,41 +0,0 @@ -import printcore,time,sys,os - -def dosify(name): - return os.path.split(name)[1].split(".")[0][:8]+".g" - -def blupload(printer,filename,path): - printer.send_now("M28 "+dosify(filename)) - printer.startprint([i.replace("\n","") for i in open(path)]) - try: - sys.stdout.write("Progress: 00.0%") - sys.stdout.flush() - while(printer.printing): - time.sleep(1) - sys.stdout.write("\b\b\b\b%02.1f%%" % (100*float(printer.queueindex)/len(printer.mainqueue),) ) - sys.stdout.flush() - printer.send_now("M29 "+dosify(filename)) - print "Done uploading, disconnecting with a 5 second timeout in case the printer has something important to say." - printer.disconnect() - time.sleep(5) - print "Upload complete. Goodbye!" - - except: - print "Abort, disconnecting with a 5 second timeout in case the printer has something important to say." - printer.disconnect() - -if __name__ == '__main__': - #print "Usage: python blupload.py filename.gcode" - filename="../prusamendel/sellsx_export.gcode" - tfilename=filename - if len(sys.argv)>1: - filename=sys.argv[1] - tfilename=os.path.basename(sys.argv[1]) - print "Uploading: "+filename," as "+dosify(tfilename) - p=printcore.printcore('/dev/ttyUSB0',115200) - p.loud=False - time.sleep(2) - blupload(p,tfilename,filename) - - else: - print "Usage: python blupload.py filename.gcode" - diff --git a/locale/fr/LC_MESSAGES/fr.po b/locale/fr/LC_MESSAGES/fr.po index e003774..14926e7 100755 --- a/locale/fr/LC_MESSAGES/fr.po +++ b/locale/fr/LC_MESSAGES/fr.po @@ -5,339 +5,237 @@ msgid "" msgstr "" "Project-Id-Version: Pronterface jm1\n" -"POT-Creation-Date: 2011-09-06 16:31+0100\n" -"PO-Revision-Date: 2011-09-06 16:32+0100\n" +"POT-Creation-Date: 2011-08-06 13:27+PDT\n" +"PO-Revision-Date: 2011-11-16 16:53+0100\n" "Last-Translator: Cyril Laguilhon-Debat \n" "Language-Team: FR \n" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -#: pronterface.py:10 +#: pronterface.py:15 msgid "WX is not installed. This program requires WX to run." msgstr "wxWidgets n'est pas installé. Ce programme nécessite la librairie wxWidgets pour fonctionner." -#: pronterface.py:60 +#: pronterface.py:67 msgid "Printer Interface" msgstr "Interface imprimante" -#: pronterface.py:72 -msgid "X+100" -msgstr "" - -#: pronterface.py:73 -msgid "X+10" -msgstr "" - -#: pronterface.py:74 -msgid "X+1" -msgstr "" - -#: pronterface.py:75 -msgid "X+0.1" -msgstr "" - -#: pronterface.py:76 -msgid "HomeX" -msgstr "Origine X" - -#: pronterface.py:77 -msgid "X-0.1" -msgstr "" - -#: pronterface.py:78 -msgid "X-1" -msgstr "" - -#: pronterface.py:79 -msgid "X-10" -msgstr "" - #: pronterface.py:80 -msgid "X-100" -msgstr "" - -#: pronterface.py:81 -msgid "Y+100" -msgstr "" - -#: pronterface.py:82 -msgid "Y+10" -msgstr "" - -#: pronterface.py:83 -msgid "Y+1" -msgstr "" - -#: pronterface.py:84 -msgid "Y+0.1" -msgstr "" - -#: pronterface.py:85 -msgid "HomeY" -msgstr "Origine Y" - -#: pronterface.py:86 -msgid "Y-0.1" -msgstr "" - -#: pronterface.py:87 -msgid "Y-1" -msgstr "" - -#: pronterface.py:88 -msgid "Y-10" -msgstr "" - -#: pronterface.py:89 -msgid "Y-100" -msgstr "" - -#: pronterface.py:90 msgid "Motors off" msgstr "Arrêter les moteurs" -#: pronterface.py:91 -msgid "Z+10" -msgstr "" - -#: pronterface.py:92 -msgid "Z+1" -msgstr "" - -#: pronterface.py:93 -msgid "Z+0.1" -msgstr "" - -#: pronterface.py:94 -msgid "HomeZ" -msgstr "Origine Z" - -#: pronterface.py:95 -msgid "Z-0.1" -msgstr "" - -#: pronterface.py:96 -msgid "Z-1" -msgstr "" - -#: pronterface.py:97 -msgid "Z-10" -msgstr "" - -#: pronterface.py:98 -msgid "Home" -msgstr "Origine" - -#: pronterface.py:99 +#: pronterface.py:81 msgid "Check temp" msgstr "Lire les températures" -#: pronterface.py:100 +#: pronterface.py:82 msgid "Extrude" msgstr "Extruder" -#: pronterface.py:101 +#: pronterface.py:83 msgid "Reverse" msgstr "Inverser" -#: pronterface.py:117 +#: pronterface.py:99 msgid "" "# I moved all your custom buttons into .pronsolerc.\n" "# Please don't add them here any more.\n" "# Backup of your old buttons is in custombtn.old\n" msgstr "" +"# I moved all your custom buttons into .pronsolerc.\n" +"# Please don't add them here any more.\n" +"# Backup of your old buttons is in custombtn.old\n" -#: pronterface.py:122 +#: pronterface.py:104 msgid "Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc" msgstr "Remarque! Vous avez spécifié des boutons personnalisés dans custombtn.txt et aussi dans .pronsolerc" -#: pronterface.py:123 +#: pronterface.py:105 msgid "Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt" msgstr "Ignorant custombtn.txt. Retirez tous les boutons en cours pour revenir à custombtn.txt" -#: pronterface.py:146 -#: pronterface.py:434 -#: pronterface.py:971 -#: pronterface.py:1020 -#: pronterface.py:1134 -#: pronterface.py:1161 -#: pronterface.py:1175 +#: pronterface.py:130 +#: pronterface.py:476 +#: pronterface.py:1228 +#: pronterface.py:1279 +#: pronterface.py:1396 +#: pronterface.py:1428 +#: pronterface.py:1443 msgid "Print" msgstr "Imprimer" -#: pronterface.py:150 -msgid "Printer is now online" +#: pronterface.py:134 +msgid "Printer is now online." msgstr "L'imprimante est connectée" -#: pronterface.py:199 +#: pronterface.py:188 msgid "Setting hotend temperature to " msgstr "Réglage de la température de la buse à" -#: pronterface.py:199 -#: pronterface.py:220 +#: pronterface.py:188 +#: pronterface.py:224 msgid " degrees Celsius." msgstr " degrés Celsius." -#: pronterface.py:203 -#: pronterface.py:224 +#: pronterface.py:207 +#: pronterface.py:242 msgid "Printer is not online." msgstr "L'imprimante est déconnectée" -#: pronterface.py:205 +#: pronterface.py:209 msgid "You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0." msgstr "Vous ne pouvez pas régler une température négative.Pour éteindre le chauffage de la buse, réglez sa température à 0°c." -#: pronterface.py:207 -#: pronterface.py:228 -msgid "You must enter a temperature." -msgstr "Vous devez saisir une température." - -#: pronterface.py:220 +#: pronterface.py:224 msgid "Setting bed temperature to " msgstr "Réglage de la température du plateau à " -#: pronterface.py:226 +#: pronterface.py:244 msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0." msgstr "Vous ne pouvez pas régler une température négative. Pour désactiver votre plateau chauffant, réglez sa température à 0°c." -#: pronterface.py:243 +#: pronterface.py:246 +msgid "You must enter a temperature." +msgstr "Vous devez saisir une température." + +#: pronterface.py:261 msgid "Do you want to erase the macro?" msgstr "Voulez-vous effacer la macro ?" -#: pronterface.py:247 +#: pronterface.py:265 msgid "Cancelled." msgstr "Annulé" -#: pronterface.py:277 -msgid "&Open..." -msgstr "&Ouvrir..." - -#: pronterface.py:277 +#: pronterface.py:295 msgid " Opens file" msgstr " Ouvrir un fichier" -#: pronterface.py:278 -msgid "&Edit..." -msgstr "&Éditer..." +#: pronterface.py:295 +msgid "&Open..." +msgstr "&Ouvrir..." -#: pronterface.py:278 +#: pronterface.py:296 msgid " Edit open file" msgstr " Éditer le fichier ouvert" -#: pronterface.py:279 -msgid "E&xit" -msgstr "&Quitter" +#: pronterface.py:296 +msgid "&Edit..." +msgstr "&Éditer..." -#: pronterface.py:279 -msgid " Closes the Window" -msgstr " Quitter le programme" - -#: pronterface.py:280 -msgid "&File" -msgstr "&Fichier" - -#: pronterface.py:284 -msgid "Clear console" -msgstr "Effacer la console" - -#: pronterface.py:284 +#: pronterface.py:297 msgid " Clear output console" msgstr "Effacer le contenu de la console de sortie" -#: pronterface.py:285 +#: pronterface.py:297 +msgid "Clear console" +msgstr "Effacer la console" + +#: pronterface.py:298 +msgid " Closes the Window" +msgstr " Quitter le programme" + +#: pronterface.py:298 +msgid "E&xit" +msgstr "&Quitter" + +#: pronterface.py:299 +msgid "&File" +msgstr "&Fichier" + +#: pronterface.py:304 msgid "&Macros" msgstr "&Macros" -#: pronterface.py:286 +#: pronterface.py:305 msgid "<&New...>" msgstr "<&Nouvelle...>" -#: pronterface.py:287 -msgid "&Options" -msgstr "&Options" - -#: pronterface.py:287 +#: pronterface.py:306 msgid " Options dialog" msgstr " Fenêtre des options" -#: pronterface.py:289 -msgid "SFACT Settings" -msgstr "Paramètres &SFACT..." +#: pronterface.py:306 +msgid "&Options" +msgstr "&Options" -#: pronterface.py:289 +#: pronterface.py:308 msgid " Adjust SFACT settings" msgstr " Régler les paramètres SFACT" -#: pronterface.py:292 -msgid "SFACT Quick Settings" -msgstr "Réglages rapides SFACT" +#: pronterface.py:308 +msgid "SFACT Settings" +msgstr "Paramètres &SFACT..." -#: pronterface.py:292 +#: pronterface.py:311 msgid " Quickly adjust SFACT settings for active profile" msgstr " Réglages rapides des paramètres SFACT pour le profil actif." -#: pronterface.py:295 +#: pronterface.py:311 +msgid "SFACT Quick Settings" +msgstr "Réglages rapides SFACT" + +#: pronterface.py:315 msgid "&Settings" msgstr "&Paramètres" -#: pronterface.py:311 +#: pronterface.py:331 msgid "Enter macro name" msgstr "Saisissez le nom de la macro" -#: pronterface.py:314 +#: pronterface.py:334 msgid "Macro name:" msgstr "Nom :" -#: pronterface.py:317 +#: pronterface.py:337 msgid "Ok" msgstr "Valider" -#: pronterface.py:321 -#: pronterface.py:1197 +#: pronterface.py:341 +#: pronterface.py:1465 msgid "Cancel" msgstr "Annuler" -#: pronterface.py:339 -msgid "Name '" -msgstr "Le nom '" - -#: pronterface.py:339 +#: pronterface.py:359 msgid "' is being used by built-in command" msgstr "' est utilisé par des commandes internes." -#: pronterface.py:342 +#: pronterface.py:359 +msgid "Name '" +msgstr "Le nom '" + +#: pronterface.py:362 msgid "Macro name may contain only alphanumeric symbols and underscores" msgstr "Un nom de macro ne peut contenir que des caractères alphanumérique et des underscore (_)" -#: pronterface.py:375 -msgid "Port:" +#: pronterface.py:411 +msgid "Port" msgstr "Port :" -#: pronterface.py:397 +#: pronterface.py:430 msgid "Connect" msgstr "Connecter" -#: pronterface.py:399 +#: pronterface.py:432 msgid "Connect to the printer" msgstr "Connecter l'imprimante" -#: pronterface.py:401 +#: pronterface.py:434 msgid "Disconnect" msgstr "Déconnecter" -#: pronterface.py:405 +#: pronterface.py:438 msgid "Reset" msgstr "Réinitialiser" -#: pronterface.py:408 -#: pronterface.py:592 +#: pronterface.py:441 +#: pronterface.py:687 msgid "Mini mode" msgstr "Mode réduit" -#: pronterface.py:414 +#: pronterface.py:455 msgid "" "Monitor\n" "printer" @@ -345,181 +243,189 @@ msgstr "" "Surveiller\n" "l'imprimante" -#: pronterface.py:423 +#: pronterface.py:465 msgid "Load file" msgstr "Charger un fichier" -#: pronterface.py:426 +#: pronterface.py:468 msgid "SD Upload" msgstr "Copier sur SD" -#: pronterface.py:430 +#: pronterface.py:472 msgid "SD Print" msgstr "Imprimer depuis SD" -#: pronterface.py:438 -#: pronterface.py:1021 -#: pronterface.py:1061 -#: pronterface.py:1109 -#: pronterface.py:1133 -#: pronterface.py:1160 -#: pronterface.py:1174 +#: pronterface.py:480 +#: pronterface.py:1280 +#: pronterface.py:1321 +#: pronterface.py:1370 +#: pronterface.py:1395 +#: pronterface.py:1427 +#: pronterface.py:1442 msgid "Pause" msgstr "Pause" -#: pronterface.py:458 +#: pronterface.py:494 msgid "Send" msgstr "Envoyer" -#: pronterface.py:460 -#: pronterface.py:518 +#: pronterface.py:502 +#: pronterface.py:603 msgid "mm/min" msgstr "mm/min" -#: pronterface.py:462 +#: pronterface.py:504 msgid "XY:" -msgstr "" +msgstr "XY:" -#: pronterface.py:464 +#: pronterface.py:506 msgid "Z:" -msgstr "" +msgstr "Z:" -#: pronterface.py:481 +#: pronterface.py:529 msgid "Heater:" msgstr "Buse :" -#: pronterface.py:489 -#: pronterface.py:501 +#: pronterface.py:532 +#: pronterface.py:552 +msgid "Off" +msgstr "Off" + +#: pronterface.py:544 +#: pronterface.py:564 msgid "Set" msgstr "Régler" -#: pronterface.py:493 +#: pronterface.py:549 msgid "Bed:" msgstr "Plateau :" -#: pronterface.py:512 +#: pronterface.py:597 msgid "mm" msgstr "mm" -#: pronterface.py:551 -#: pronterface.py:846 -#: pronterface.py:1055 +#: pronterface.py:636 +#: pronterface.py:1099 +#: pronterface.py:1315 msgid "Not connected to printer." msgstr "Imprimante non connectée" -#: pronterface.py:599 +#: pronterface.py:694 msgid "Full mode" msgstr "Mode complet" -#: pronterface.py:637 +#: pronterface.py:719 +msgid "Execute command: " +msgstr "Exécuter la commande :" + +#: pronterface.py:730 +msgid "click to add new custom button" +msgstr "Ajouter un bouton personnalisé" + +#: pronterface.py:751 msgid "Defines custom button. Usage: button \"title\" [/c \"colour\"] command" msgstr "Définit des boutons personnalidés. Utilisation : \"Libelle\" [/c \"couleur\"] commande" -#: pronterface.py:659 +#: pronterface.py:773 msgid "Custom button number should be between 0 and 63" msgstr "Les numéros des boutons personnalisés doivent être compris entre 0 et 63." -#: pronterface.py:749 -#, python-format +#: pronterface.py:865 msgid "Edit custom button '%s'" msgstr "Editer le bouton personnalisé n°'%s'" -#: pronterface.py:751 +#: pronterface.py:867 msgid "Move left <<" msgstr "Déplacer vers la gauche <<" -#: pronterface.py:754 +#: pronterface.py:870 msgid "Move right >>" msgstr "Déplacer vers la droite >>" -#: pronterface.py:758 -#, python-format +#: pronterface.py:874 msgid "Remove custom button '%s'" msgstr "Supprimer le bouton personnalisé n°'%s'" -#: pronterface.py:761 +#: pronterface.py:877 msgid "Add custom button" msgstr "Ajouter un bouton personnalisé" -#: pronterface.py:776 +#: pronterface.py:1022 msgid "event object missing" msgstr "evennement d'objet manquant" -#: pronterface.py:804 +#: pronterface.py:1050 msgid "Invalid period given." msgstr "La période donnée est invalide" -#: pronterface.py:807 +#: pronterface.py:1053 msgid "Monitoring printer." msgstr "Surveillance de l'imprimante" -#: pronterface.py:809 +#: pronterface.py:1055 msgid "Done monitoring." msgstr "Surveillance de l'imprimante effectuée." -#: pronterface.py:828 +#: pronterface.py:1077 msgid "Printer is online. " msgstr "L'imprimante est connectée" -#: pronterface.py:830 -#: pronterface.py:969 -#: pronterface.py:1019 +#: pronterface.py:1079 +#: pronterface.py:1226 +#: pronterface.py:1278 msgid "Loaded " msgstr "Chargé " -#: pronterface.py:833 -msgid "Hotend" -msgstr "Buse" - -#: pronterface.py:833 +#: pronterface.py:1082 msgid "Bed" msgstr "Plateau" -#: pronterface.py:836 -#, python-format +#: pronterface.py:1082 +msgid "Hotend" +msgstr "Buse" + +#: pronterface.py:1089 msgid " SD printing:%04.2f %%" msgstr "Impression SD : %04.2f %%" -#: pronterface.py:838 -#, python-format +#: pronterface.py:1091 msgid " Printing:%04.2f %%" msgstr "Impression : %04.2f %%" -#: pronterface.py:892 +#: pronterface.py:1149 msgid "Opening file failed." msgstr "L'ouverture du fichier a échoué" -#: pronterface.py:898 +#: pronterface.py:1155 msgid "Starting print" msgstr "Début de l'impression..." -#: pronterface.py:921 -msgid "Select the file to print" -msgstr "Sélectionnez le fichier à imprimer :" - -#: pronterface.py:921 +#: pronterface.py:1178 msgid "Pick SD file" msgstr "Choisir un fichier sur la carte SD" -#: pronterface.py:949 +#: pronterface.py:1178 +msgid "Select the file to print" +msgstr "Sélectionnez le fichier à imprimer :" + +#: pronterface.py:1206 msgid "Skeinforge execution failed." msgstr "Exécution de Skeinforge échoué" -#: pronterface.py:956 +#: pronterface.py:1213 msgid "Skeining..." msgstr "Skeining..." -#: pronterface.py:969 -#: pronterface.py:1019 -#, python-format +#: pronterface.py:1226 +#: pronterface.py:1278 msgid ", %d lines" msgstr ", %d lignes" -#: pronterface.py:978 +#: pronterface.py:1235 msgid "Skeining " msgstr "Skeining " -#: pronterface.py:980 +#: pronterface.py:1237 msgid "" "Skeinforge not found. \n" "Please copy Skeinforge into a directory named \"skeinforge\" in the same directory as this file." @@ -527,116 +433,140 @@ msgstr "" "Skeinforge non trouvé. \n" "Veuillez copier Skeinforge dans un répertoire nommé \"skeinforge\" placé dans le repertoire du programme." -#: pronterface.py:999 +#: pronterface.py:1256 msgid "Open file to print" msgstr "Ouvrir un fichier à imprimer" -#: pronterface.py:1000 -msgid "STL and GCODE files (;*.gcode;*.g;*.stl;*.STL;)" -msgstr "Fichiers STL et GCODE (;*.gcode;*.g;*.stl;*.STL;)" +#: pronterface.py:1257 +msgid "OBJ, STL, and GCODE files (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)" +msgstr "Fichiers OBJ, STL et GCODE (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)" -#: pronterface.py:1007 +#: pronterface.py:1264 msgid "File not found!" msgstr "Fichier non trouvé" -#: pronterface.py:1029 +#: pronterface.py:1288 msgid "mm of filament used in this print\n" msgstr "mm de filament utilisés pour cette impression\n" -#: pronterface.py:1030 -#: pronterface.py:1031 -#: pronterface.py:1032 -msgid "the print goes from" -msgstr "" - -#: pronterface.py:1030 -#: pronterface.py:1031 -#: pronterface.py:1032 -msgid "mm to" -msgstr "mm à" - -#: pronterface.py:1030 +#: pronterface.py:1289 msgid "" "mm in X\n" "and is" msgstr "" +"mm en X\n" +"et mesure" -#: pronterface.py:1030 -#: pronterface.py:1031 +#: pronterface.py:1289 +#: pronterface.py:1290 msgid "mm wide\n" -msgstr "" +msgstr "mm de large\n" -#: pronterface.py:1031 +#: pronterface.py:1289 +#: pronterface.py:1290 +#: pronterface.py:1291 +msgid "mm to" +msgstr "mm à" + +#: pronterface.py:1289 +#: pronterface.py:1290 +#: pronterface.py:1291 +msgid "the print goes from" +msgstr "L'impression va de" + +#: pronterface.py:1290 msgid "" "mm in Y\n" "and is" msgstr "" +"mm en Y\n" +"et mesure" -#: pronterface.py:1032 +#: pronterface.py:1291 +msgid "mm high\n" +msgstr "mm de haut\n" + +#: pronterface.py:1291 msgid "" "mm in Z\n" "and is" msgstr "" +"mm en Z\n" +"et mesure" -#: pronterface.py:1032 -msgid "mm high\n" -msgstr "" +#: pronterface.py:1292 +msgid "Estimated duration (pessimistic): " +msgstr "Durée estimée (pessimiste)" -#: pronterface.py:1052 +#: pronterface.py:1312 msgid "No file loaded. Please use load first." msgstr "Aucun fichier chargé. Veuillez charger un fichier avant." -#: pronterface.py:1063 +#: pronterface.py:1323 msgid "Restart" msgstr "Recommencer" -#: pronterface.py:1067 +#: pronterface.py:1327 msgid "File upload complete" msgstr "Envoi du fichier terminé" -#: pronterface.py:1086 +#: pronterface.py:1346 msgid "Pick SD filename" msgstr "Lister les fichiers sur la carte SD" -#: pronterface.py:1102 +#: pronterface.py:1353 +msgid "Paused." +msgstr "En pause" + +#: pronterface.py:1363 msgid "Resume" msgstr "Reprendre" -#: pronterface.py:1168 +#: pronterface.py:1379 +msgid "Connecting..." +msgstr "Connection en cours..." + +#: pronterface.py:1410 +msgid "Disconnected." +msgstr "Déconnecté" + +#: pronterface.py:1435 +msgid "Reset." +msgstr "Réinitialiser" + +#: pronterface.py:1436 msgid "Are you sure you want to reset the printer?" msgstr "Etes-vous sûr de vouloir réinitialiser l'imprimante?" -#: pronterface.py:1168 +#: pronterface.py:1436 msgid "Reset?" msgstr "Réinitialiser ?" -#: pronterface.py:1193 +#: pronterface.py:1461 msgid "Save" msgstr "Enregistrer" -#: pronterface.py:1248 +#: pronterface.py:1519 msgid "Edit settings" msgstr "Modifier les paramètres" -#: pronterface.py:1250 +#: pronterface.py:1521 msgid "Defaults" msgstr "Paramètres par défaut" -#: pronterface.py:1272 +#: pronterface.py:1543 msgid "Custom button" msgstr "Commande personnalisée" -#: pronterface.py:1280 +#: pronterface.py:1551 msgid "Button title" msgstr "Titre du bouton" -#: pronterface.py:1283 +#: pronterface.py:1554 msgid "Command" msgstr "Commande" -#: pronterface.py:1292 +#: pronterface.py:1563 msgid "Color" msgstr "Couleur" -#~ msgid "&Print" -#~ msgstr "&Imprimer" diff --git a/locale/fr/LC_MESSAGES/pronterface.mo b/locale/fr/LC_MESSAGES/pronterface.mo index 62e3cb1..ffc7689 100644 Binary files a/locale/fr/LC_MESSAGES/pronterface.mo and b/locale/fr/LC_MESSAGES/pronterface.mo differ diff --git a/locale/pronterface.pot b/locale/pronterface.pot index fa4f0cc..7e07737 100644 --- a/locale/pronterface.pot +++ b/locale/pronterface.pot @@ -15,542 +15,523 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: pronterface.py:10 +#: pronterface.py:15 msgid "WX is not installed. This program requires WX to run." msgstr "" -#: pronterface.py:55 +#: pronterface.py:67 msgid "Printer Interface" msgstr "" -#: pronterface.py:67 -msgid "X+100" -msgstr "" - -#: pronterface.py:68 -msgid "X+10" -msgstr "" - -#: pronterface.py:69 -msgid "X+1" -msgstr "" - -#: pronterface.py:70 -msgid "X+0.1" -msgstr "" - -#: pronterface.py:71 -msgid "HomeX" -msgstr "" - -#: pronterface.py:72 -msgid "X-0.1" -msgstr "" - -#: pronterface.py:73 -msgid "X-1" -msgstr "" - -#: pronterface.py:74 -msgid "X-10" -msgstr "" - -#: pronterface.py:75 -msgid "X-100" -msgstr "" - -#: pronterface.py:76 -msgid "Y+100" -msgstr "" - -#: pronterface.py:77 -msgid "Y+10" -msgstr "" - -#: pronterface.py:78 -msgid "Y+1" -msgstr "" - -#: pronterface.py:79 -msgid "Y+0.1" -msgstr "" - #: pronterface.py:80 -msgid "HomeY" -msgstr "" - -#: pronterface.py:81 -msgid "Y-0.1" -msgstr "" - -#: pronterface.py:82 -msgid "Y-1" -msgstr "" - -#: pronterface.py:83 -msgid "Y-10" -msgstr "" - -#: pronterface.py:84 -msgid "Y-100" -msgstr "" - -#: pronterface.py:85 msgid "Motors off" msgstr "" -#: pronterface.py:86 -msgid "Z+10" -msgstr "" - -#: pronterface.py:87 -msgid "Z+1" -msgstr "" - -#: pronterface.py:88 -msgid "Z+0.1" -msgstr "" - -#: pronterface.py:89 -msgid "HomeZ" -msgstr "" - -#: pronterface.py:90 -msgid "Z-0.1" -msgstr "" - -#: pronterface.py:91 -msgid "Z-1" -msgstr "" - -#: pronterface.py:92 -msgid "Z-10" -msgstr "" - -#: pronterface.py:93 -msgid "Home" -msgstr "" - -#: pronterface.py:94 +#: pronterface.py:81 msgid "Check temp" msgstr "" -#: pronterface.py:95 +#: pronterface.py:82 msgid "Extrude" msgstr "" -#: pronterface.py:96 +#: pronterface.py:83 msgid "Reverse" msgstr "" -#: pronterface.py:112 +#: pronterface.py:99 msgid "" "# I moved all your custom buttons into .pronsolerc.\n" "# Please don't add them here any more.\n" "# Backup of your old buttons is in custombtn.old\n" msgstr "" -#: pronterface.py:117 +#: pronterface.py:104 msgid "Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc" msgstr "" -#: pronterface.py:118 +#: pronterface.py:105 msgid "Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt" msgstr "" -#: pronterface.py:141 pronterface.py:427 pronterface.py:956 -#: pronterface.py:1003 pronterface.py:1113 pronterface.py:1140 -#: pronterface.py:1154 +#: pronterface.py:130 pronterface.py:476 pronterface.py:1228 +#: pronterface.py:1279 pronterface.py:1396 pronterface.py:1428 +#: pronterface.py:1443 msgid "Print" msgstr "" -#: pronterface.py:145 -msgid "Printer is now online" +#: pronterface.py:134 +msgid "Printer is now online." msgstr "" -#: pronterface.py:194 +#: pronterface.py:188 msgid "Setting hotend temperature to " msgstr "" -#: pronterface.py:194 pronterface.py:215 +#: pronterface.py:188 pronterface.py:224 msgid " degrees Celsius." msgstr "" -#: pronterface.py:198 pronterface.py:219 +#: pronterface.py:207 pronterface.py:242 msgid "Printer is not online." msgstr "" -#: pronterface.py:200 +#: pronterface.py:209 msgid "You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0." msgstr "" -#: pronterface.py:202 pronterface.py:223 -msgid "You must enter a temperature." -msgstr "" - -#: pronterface.py:215 +#: pronterface.py:224 msgid "Setting bed temperature to " msgstr "" -#: pronterface.py:221 +#: pronterface.py:244 msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0." msgstr "" -#: pronterface.py:238 +#: pronterface.py:246 +msgid "You must enter a temperature." +msgstr "" + +#: pronterface.py:261 msgid "Do you want to erase the macro?" msgstr "" -#: pronterface.py:242 +#: pronterface.py:265 msgid "Cancelled." msgstr "" -#: pronterface.py:271 +#: pronterface.py:295 msgid " Opens file" msgstr "" -#: pronterface.py:271 +#: pronterface.py:295 msgid "&Open..." msgstr "" -#: pronterface.py:272 +#: pronterface.py:296 msgid " Edit open file" msgstr "" -#: pronterface.py:272 +#: pronterface.py:296 msgid "&Edit..." msgstr "" -#: pronterface.py:274 -msgid " Adjust SFACT settings" +#: pronterface.py:297 +msgid " Clear output console" msgstr "" -#: pronterface.py:274 -msgid "SFACT Settings" +#: pronterface.py:297 +msgid "Clear console" msgstr "" -#: pronterface.py:277 -msgid " Quickly adjust SFACT settings for active profile" -msgstr "" - -#: pronterface.py:277 -msgid "SFACT Quick Settings" -msgstr "" - -#: pronterface.py:281 +#: pronterface.py:298 msgid " Closes the Window" msgstr "" -#: pronterface.py:281 +#: pronterface.py:298 msgid "E&xit" msgstr "" -#: pronterface.py:282 -msgid "&Print" -msgstr "" - -#: pronterface.py:285 -msgid "&Macros" -msgstr "" - -#: pronterface.py:286 -msgid "<&New...>" -msgstr "" - -#: pronterface.py:287 -msgid " Options dialog" -msgstr "" - -#: pronterface.py:287 -msgid "&Options" -msgstr "" - -#: pronterface.py:288 -msgid "&Settings" +#: pronterface.py:299 +msgid "&File" msgstr "" #: pronterface.py:304 +msgid "&Macros" +msgstr "" + +#: pronterface.py:305 +msgid "<&New...>" +msgstr "" + +#: pronterface.py:306 +msgid " Options dialog" +msgstr "" + +#: pronterface.py:306 +msgid "&Options" +msgstr "" + +#: pronterface.py:308 +msgid " Adjust SFACT settings" +msgstr "" + +#: pronterface.py:308 +msgid "SFACT Settings" +msgstr "" + +#: pronterface.py:311 +msgid " Quickly adjust SFACT settings for active profile" +msgstr "" + +#: pronterface.py:311 +msgid "SFACT Quick Settings" +msgstr "" + +#: pronterface.py:315 +msgid "&Settings" +msgstr "" + +#: pronterface.py:331 msgid "Enter macro name" msgstr "" -#: pronterface.py:307 +#: pronterface.py:334 msgid "Macro name:" msgstr "" -#: pronterface.py:310 +#: pronterface.py:337 msgid "Ok" msgstr "" -#: pronterface.py:314 +#: pronterface.py:341 pronterface.py:1465 msgid "Cancel" msgstr "" -#: pronterface.py:332 +#: pronterface.py:359 msgid "' is being used by built-in command" msgstr "" -#: pronterface.py:332 +#: pronterface.py:359 msgid "Name '" msgstr "" -#: pronterface.py:368 -msgid "Port:" +#: pronterface.py:362 +msgid "Macro name may contain only alphanumeric symbols and underscores" msgstr "" -#: pronterface.py:390 +#: pronterface.py:411 +msgid "Port" +msgstr "" + +#: pronterface.py:430 msgid "Connect" msgstr "" -#: pronterface.py:392 +#: pronterface.py:432 msgid "Connect to the printer" msgstr "" -#: pronterface.py:394 +#: pronterface.py:434 msgid "Disconnect" msgstr "" -#: pronterface.py:398 +#: pronterface.py:438 msgid "Reset" msgstr "" -#: pronterface.py:401 pronterface.py:579 +#: pronterface.py:441 pronterface.py:687 msgid "Mini mode" msgstr "" -#: pronterface.py:407 +#: pronterface.py:455 msgid "" "Monitor\n" "printer" msgstr "" -#: pronterface.py:416 +#: pronterface.py:465 msgid "Load file" msgstr "" -#: pronterface.py:419 +#: pronterface.py:468 msgid "SD Upload" msgstr "" -#: pronterface.py:423 +#: pronterface.py:472 msgid "SD Print" msgstr "" -#: pronterface.py:431 pronterface.py:1004 pronterface.py:1040 -#: pronterface.py:1088 pronterface.py:1112 pronterface.py:1139 -#: pronterface.py:1153 +#: pronterface.py:480 pronterface.py:1280 pronterface.py:1321 +#: pronterface.py:1370 pronterface.py:1395 pronterface.py:1427 +#: pronterface.py:1442 msgid "Pause" msgstr "" -#: pronterface.py:445 +#: pronterface.py:494 msgid "Send" msgstr "" -#: pronterface.py:453 pronterface.py:511 +#: pronterface.py:502 pronterface.py:603 msgid "mm/min" msgstr "" -#: pronterface.py:455 +#: pronterface.py:504 msgid "XY:" msgstr "" -#: pronterface.py:457 +#: pronterface.py:506 msgid "Z:" msgstr "" -#: pronterface.py:474 +#: pronterface.py:529 msgid "Heater:" msgstr "" -#: pronterface.py:482 pronterface.py:494 +#: pronterface.py:532 pronterface.py:552 +msgid "Off" +msgstr "" + +#: pronterface.py:544 pronterface.py:564 msgid "Set" msgstr "" -#: pronterface.py:486 +#: pronterface.py:549 msgid "Bed:" msgstr "" -#: pronterface.py:505 +#: pronterface.py:597 msgid "mm" msgstr "" -#: pronterface.py:538 pronterface.py:833 pronterface.py:1034 +#: pronterface.py:636 pronterface.py:1099 pronterface.py:1315 msgid "Not connected to printer." msgstr "" -#: pronterface.py:586 +#: pronterface.py:694 msgid "Full mode" msgstr "" -#: pronterface.py:624 +#: pronterface.py:719 +msgid "Execute command: " +msgstr "" + +#: pronterface.py:730 +msgid "click to add new custom button" +msgstr "" + +#: pronterface.py:751 msgid "Defines custom button. Usage: button \"title\" [/c \"colour\"] command" msgstr "" -#: pronterface.py:646 +#: pronterface.py:773 msgid "Custom button number should be between 0 and 63" msgstr "" -#: pronterface.py:736 +#: pronterface.py:865 msgid "Edit custom button '%s'" msgstr "" -#: pronterface.py:738 +#: pronterface.py:867 msgid "Move left <<" msgstr "" -#: pronterface.py:741 +#: pronterface.py:870 msgid "Move right >>" msgstr "" -#: pronterface.py:745 +#: pronterface.py:874 msgid "Remove custom button '%s'" msgstr "" -#: pronterface.py:748 +#: pronterface.py:877 msgid "Add custom button" msgstr "" -#: pronterface.py:763 +#: pronterface.py:1022 msgid "event object missing" msgstr "" -#: pronterface.py:791 +#: pronterface.py:1050 msgid "Invalid period given." msgstr "" -#: pronterface.py:794 +#: pronterface.py:1053 msgid "Monitoring printer." msgstr "" -#: pronterface.py:796 +#: pronterface.py:1055 msgid "Done monitoring." msgstr "" -#: pronterface.py:815 +#: pronterface.py:1077 msgid "Printer is online. " msgstr "" -#: pronterface.py:817 pronterface.py:954 pronterface.py:1002 +#: pronterface.py:1079 pronterface.py:1226 pronterface.py:1278 msgid "Loaded " msgstr "" -#: pronterface.py:820 +#: pronterface.py:1082 msgid "Bed" msgstr "" -#: pronterface.py:820 +#: pronterface.py:1082 msgid "Hotend" msgstr "" -#: pronterface.py:823 +#: pronterface.py:1089 msgid " SD printing:%04.2f %%" msgstr "" -#: pronterface.py:825 +#: pronterface.py:1091 msgid " Printing:%04.2f %%" msgstr "" -#: pronterface.py:879 +#: pronterface.py:1149 msgid "Opening file failed." msgstr "" -#: pronterface.py:885 +#: pronterface.py:1155 msgid "Starting print" msgstr "" -#: pronterface.py:908 +#: pronterface.py:1178 msgid "Pick SD file" msgstr "" -#: pronterface.py:908 +#: pronterface.py:1178 msgid "Select the file to print" msgstr "" -#: pronterface.py:936 +#: pronterface.py:1206 msgid "Skeinforge execution failed." msgstr "" -#: pronterface.py:943 +#: pronterface.py:1213 msgid "Skeining..." msgstr "" -#: pronterface.py:954 pronterface.py:1002 +#: pronterface.py:1226 pronterface.py:1278 msgid ", %d lines" msgstr "" -#: pronterface.py:963 +#: pronterface.py:1235 msgid "Skeining " msgstr "" -#: pronterface.py:965 +#: pronterface.py:1237 msgid "" "Skeinforge not found. \n" "Please copy Skeinforge into a directory named \"skeinforge\" in the same directory as this file." msgstr "" -#: pronterface.py:984 +#: pronterface.py:1256 msgid "Open file to print" msgstr "" -#: pronterface.py:985 -msgid "STL and GCODE files (;*.gcode;*.g;*.stl;*.STL;)" +#: pronterface.py:1257 +msgid "OBJ, STL, and GCODE files (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)" msgstr "" -#: pronterface.py:992 +#: pronterface.py:1264 msgid "File not found!" msgstr "" -#: pronterface.py:1011 -msgid "mm of filament used in this print" +#: pronterface.py:1288 +msgid "" +"mm of filament used in this print\n" msgstr "" -#: pronterface.py:1031 +#: pronterface.py:1289 +msgid "" +"mm in X\n" +"and is" +msgstr "" + +#: pronterface.py:1289 pronterface.py:1290 +msgid "" +"mm wide\n" +msgstr "" + +#: pronterface.py:1289 pronterface.py:1290 pronterface.py:1291 +msgid "mm to" +msgstr "" + +#: pronterface.py:1289 pronterface.py:1290 pronterface.py:1291 +msgid "the print goes from" +msgstr "" + +#: pronterface.py:1290 +msgid "" +"mm in Y\n" +"and is" +msgstr "" + +#: pronterface.py:1291 +msgid "" +"mm high\n" +msgstr "" + +#: pronterface.py:1291 +msgid "" +"mm in Z\n" +"and is" +msgstr "" + +#: pronterface.py:1292 +msgid "Estimated duration (pessimistic): " +msgstr "" + +#: pronterface.py:1312 msgid "No file loaded. Please use load first." msgstr "" -#: pronterface.py:1042 +#: pronterface.py:1323 msgid "Restart" msgstr "" -#: pronterface.py:1046 +#: pronterface.py:1327 msgid "File upload complete" msgstr "" -#: pronterface.py:1065 +#: pronterface.py:1346 msgid "Pick SD filename" msgstr "" -#: pronterface.py:1081 +#: pronterface.py:1353 +msgid "Paused." +msgstr "" + +#: pronterface.py:1363 msgid "Resume" msgstr "" -#: pronterface.py:1147 +#: pronterface.py:1379 +msgid "Connecting..." +msgstr "" + +#: pronterface.py:1410 +msgid "Disconnected." +msgstr "" + +#: pronterface.py:1435 +msgid "Reset." +msgstr "" + +#: pronterface.py:1436 msgid "Are you sure you want to reset the printer?" msgstr "" -#: pronterface.py:1147 +#: pronterface.py:1436 msgid "Reset?" msgstr "" -#: pronterface.py:1226 +#: pronterface.py:1461 +msgid "Save" +msgstr "" + +#: pronterface.py:1519 msgid "Edit settings" msgstr "" -#: pronterface.py:1228 +#: pronterface.py:1521 msgid "Defaults" msgstr "" -#: pronterface.py:1250 +#: pronterface.py:1543 msgid "Custom button" msgstr "" -#: pronterface.py:1258 +#: pronterface.py:1551 msgid "Button title" msgstr "" -#: pronterface.py:1261 +#: pronterface.py:1554 msgid "Command" msgstr "" -#: pronterface.py:1270 +#: pronterface.py:1563 msgid "Color" msgstr "" diff --git a/pronsole.py b/pronsole.py index 78e274b..fd3be45 100755 --- a/pronsole.py +++ b/pronsole.py @@ -147,9 +147,9 @@ class Settings: self.port = "" self.baudrate = 115200 self.temperature_pla = 185 - self.temperature_abs = 230.0 - self.bedtemp_pla = 60.0 - self.bedtemp_abs = 110.0 + self.temperature_abs = 230 + self.bedtemp_pla = 60 + self.bedtemp_abs = 110 self.xy_feedrate = 3000 self.z_feedrate = 200 self.e_feedrate = 300 diff --git a/pronterface.py b/pronterface.py index 78a8165..fcff0dd 100755 --- a/pronterface.py +++ b/pronterface.py @@ -117,6 +117,8 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.starttime=0 self.curlayer=0 self.cur_button=None + self.hsetpoint=0.0 + self.bsetpoint=0.0 def startcb(self): self.starttime=time.time() @@ -184,14 +186,29 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.p.online: self.p.send_now("M104 S"+l) print _("Setting hotend temperature to "),f,_(" degrees Celsius.") - self.htemp.SetValue(l) - self.set("last_temperature",str(f)) + self.hsetpoint=f + #self.tgauge.SetTarget(int(f)) + if f>0: + self.htemp.SetValue(l) + self.set("last_temperature",str(f)) + self.settoff.SetBackgroundColour("") + self.settoff.SetForegroundColour("") + self.settbtn.SetBackgroundColour("#FFAA66") + self.settbtn.SetForegroundColour("#660000") + self.htemp.SetBackgroundColour("#FFDABB") + else: + self.settoff.SetBackgroundColour("#0044CC") + self.settoff.SetForegroundColour("white") + self.settbtn.SetBackgroundColour("") + self.settbtn.SetForegroundColour("") + self.htemp.SetBackgroundColour("white") + self.htemp.Refresh() else: print _("Printer is not online.") else: print _("You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0.") - except: - print _("You must enter a temperature.") + except Exception,x: + print _("You must enter a temperature. (%s)" % (repr(x),)) def do_bedtemp(self,l=""): try: @@ -205,8 +222,22 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.p.online: self.p.send_now("M140 S"+l) print _("Setting bed temperature to "),f,_(" degrees Celsius.") - self.btemp.SetValue(l) - self.set("last_bed_temperature",str(f)) + self.bsetpoint=f + if f>0: + self.btemp.SetValue(l) + self.set("last_bed_temperature",str(f)) + self.setboff.SetBackgroundColour("") + self.setboff.SetForegroundColour("") + self.setbbtn.SetBackgroundColour("#FFAA66") + self.setbbtn.SetForegroundColour("#660000") + self.btemp.SetBackgroundColour("#FFDABB") + else: + self.setboff.SetBackgroundColour("#0044CC") + self.setboff.SetForegroundColour("white") + self.setbbtn.SetBackgroundColour("") + self.setbbtn.SetForegroundColour("") + self.btemp.SetBackgroundColour("white") + self.btemp.Refresh() else: print _("Printer is not online.") else: @@ -409,6 +440,14 @@ class PronterWindow(wx.Frame,pronsole.pronsole): uts.Add(self.resetbtn) self.minibtn=wx.Button(self.panel,-1,_("Mini mode"),pos=(690,0)) self.minibtn.Bind(wx.EVT_BUTTON,self.toggleview) + #self.tgauge=TempGauge(self.panel,size=(300,24)) + #def scroll_setpoint(e): + # if e.GetWheelRotation()>0: + # self.do_settemp(str(self.hsetpoint+1)) + # elif e.GetWheelRotation()<0: + # self.do_settemp(str(max(0,self.hsetpoint-1))) + #self.tgauge.Bind(wx.EVT_MOUSEWHEEL,scroll_setpoint) + uts.Add((10,-1)) self.monitorbox=wx.CheckBox(self.panel,-1,"",pos=(450,37)) uts.Add((15,-1)) @@ -418,6 +457,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): uts.Add((15,-1),flag=wx.EXPAND) uts.Add(self.minibtn) + #uts.Add(self.tgauge) #SECOND ROW ubs=self.upperbottomsizer=wx.BoxSizer(wx.HORIZONTAL) @@ -489,31 +529,50 @@ class PronterWindow(wx.Frame,pronsole.pronsole): lls.Add(wx.StaticText(self.panel,-1,_("Heater:"),pos=(0,343)),pos=(3,0),span=(1,1),flag=wx.ALIGN_CENTER) htemp_choices=[self.temps[i]+" ("+i+")" for i in sorted(self.temps.keys(),key=lambda x:self.temps[x])] + self.settoff=wx.Button(self.panel,-1,_("Off"),size=(36,-1),pos=(45,335)) + self.settoff.Bind(wx.EVT_BUTTON,lambda e:self.do_settemp("off")) + self.printerControls.append(self.settoff) + lls.Add(self.settoff,pos=(3,1),span=(1,1)) + if self.settings.last_temperature not in map(float,self.temps.values()): htemp_choices = [str(self.settings.last_temperature)] + htemp_choices self.htemp=wx.ComboBox(self.panel, -1, - choices=htemp_choices,style=wx.CB_DROPDOWN, size=(90,25),pos=(45,337)) + choices=htemp_choices,style=wx.CB_DROPDOWN, size=(80,25),pos=(45,337)) + self.htemp.Bind(wx.EVT_COMBOBOX,self.htemp_change) - - lls.Add(self.htemp,pos=(3,1),span=(1,3)) - self.settbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,335)) + lls.Add(self.htemp,pos=(3,2),span=(1,2)) + self.settbtn=wx.Button(self.panel,-1,_("Set"),size=(36,-1),pos=(125,335)) self.settbtn.Bind(wx.EVT_BUTTON,self.do_settemp) self.printerControls.append(self.settbtn) lls.Add(self.settbtn,pos=(3,4),span=(1,1)) + lls.Add(wx.StaticText(self.panel,-1,_("Bed:"),pos=(0,343)),pos=(4,0),span=(1,1),flag=wx.ALIGN_CENTER) btemp_choices=[self.bedtemps[i]+" ("+i+")" for i in sorted(self.bedtemps.keys(),key=lambda x:self.temps[x])] + + self.setboff=wx.Button(self.panel,-1,_("Off"),size=(36,-1),pos=(135,335)) + self.setboff.Bind(wx.EVT_BUTTON,lambda e:self.do_bedtemp("off")) + self.printerControls.append(self.setboff) + lls.Add(self.setboff,pos=(4,1),span=(1,1)) + if self.settings.last_bed_temperature not in map(float,self.bedtemps.values()): btemp_choices = [str(self.settings.last_bed_temperature)] + btemp_choices self.btemp=wx.ComboBox(self.panel, -1, - choices=btemp_choices,style=wx.CB_DROPDOWN, size=(90,25),pos=(45,367)) + choices=btemp_choices,style=wx.CB_DROPDOWN, size=(80,25),pos=(135,367)) + self.btemp.Bind(wx.EVT_COMBOBOX,self.btemp_change) + lls.Add(self.btemp,pos=(4,2),span=(1,2)) + + self.setbbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,365)) + self.setbbtn.Bind(wx.EVT_BUTTON,self.do_bedtemp) + self.printerControls.append(self.setbbtn) + lls.Add(self.setbbtn,pos=(4,4),span=(1,2)) + self.btemp.SetValue(str(self.settings.last_bed_temperature)) self.htemp.SetValue(str(self.settings.last_temperature)) - - + ## added for an error where only the bed would get (pla) or (abs). #This ensures, if last temp is a default pla or abs, it will be marked so. # if it is not, then a (user) remark is added. This denotes a manual entry - + for i in btemp_choices: if i.split()[0] == str(self.settings.last_bed_temperature).split('.')[0] or i.split()[0] == str(self.settings.last_bed_temperature): self.btemp.SetValue(i) @@ -526,12 +585,8 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if( '(' not in self.htemp.Value): self.htemp.SetValue(self.htemp.Value + ' (user)') - - lls.Add(self.btemp,pos=(4,1),span=(1,3)) - self.setbbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,365)) - self.setbbtn.Bind(wx.EVT_BUTTON,self.do_bedtemp) - self.printerControls.append(self.setbbtn) - lls.Add(self.setbbtn,pos=(4,4),span=(1,2)) + #lls.Add(self.btemp,pos=(4,1),span=(1,3)) + #lls.Add(self.setbbtn,pos=(4,4),span=(1,2)) self.tempdisp=wx.StaticText(self.panel,-1,"") lls.Add(self.tempdisp,pos=(4,6),span=(1,3)) @@ -593,6 +648,16 @@ class PronterWindow(wx.Frame,pronsole.pronsole): #uts.Layout() self.cbuttons_reload() + def htemp_change(self,event): + if self.hsetpoint > 0: + self.do_settemp("") + wx.CallAfter(self.htemp.SetInsertionPoint,0) + + def btemp_change(self,event): + if self.bsetpoint > 0: + self.do_bedtemp("") + wx.CallAfter(self.btemp.SetInsertionPoint,0) + def showwin(self,event): if(self.f is not None): self.gwindow.Show() @@ -642,28 +707,39 @@ class PronterWindow(wx.Frame,pronsole.pronsole): #sizer.Remove(button) button.Destroy() self.custombuttonbuttons=[] + newbuttonbuttonindex = len(self.custombuttons) + while newbuttonbuttonindex>0 and self.custombuttons[newbuttonbuttonindex-1] is None: + newbuttonbuttonindex -= 1 while len(self.custombuttons) < 13: self.custombuttons.append(None) for i in xrange(len(self.custombuttons)): btndef = self.custombuttons[i] try: b=wx.Button(self.panel,-1,btndef[0]) + b.SetToolTip(wx.ToolTip(_("Execute command: ")+btndef[1])) if len(btndef)>2: b.SetBackgroundColour(btndef[2]) rr,gg,bb=b.GetBackgroundColour().Get() if 0.3*rr+0.59*gg+0.11*bb < 60: b.SetForegroundColour("#ffffff") except: - b=wx.StaticText(self.panel,-1,"",size=(72,20),style=wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER - #b.Freeze() - b.Disable() + if i == newbuttonbuttonindex: + self.newbuttonbutton=b=wx.Button(self.panel,-1,"+",size=(19,18)) + #b.SetFont(wx.Font(12,wx.FONTFAMILY_SWISS,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD)) + b.SetForegroundColour("#4444ff") + b.SetToolTip(wx.ToolTip(_("click to add new custom button"))) + b.Bind(wx.EVT_BUTTON,self.cbutton_edit) + else: + b=wx.StaticText(self.panel,-1,"",size=(72,22),style=wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER + #b.Freeze() + b.Disable() b.custombutton=i b.properties=btndef if btndef is not None: b.Bind(wx.EVT_BUTTON,self.procbutton) b.Bind(wx.EVT_MOUSE_EVENTS,self.editbutton) - else: - b.Bind(wx.EVT_BUTTON,lambda e:e.Skip()) + #else: + # b.Bind(wx.EVT_BUTTON,lambda e:e.Skip()) self.custombuttonbuttons.append(b) if i<4: ubs.Add(b) @@ -761,7 +837,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.cbutton_save(n,None) #while len(self.custombuttons) and self.custombuttons[-1] is None: # del self.custombuttons[-1] - self.cbuttons_reload() + wx.CallAfter(self.cbuttons_reload) def cbutton_order(self,e,button,dir): n = button.custombutton @@ -815,7 +891,14 @@ class PronterWindow(wx.Frame,pronsole.pronsole): return if not hasattr(self,"dragging"): # init dragging of the custom button - if hasattr(obj,"custombutton"): + if hasattr(obj,"custombutton") and obj.properties is not None: + self.newbuttonbutton.SetLabel("") + self.newbuttonbutton.SetFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_NORMAL)) + self.newbuttonbutton.SetForegroundColour("black") + self.newbuttonbutton.SetSize(obj.GetSize()) + if self.upperbottomsizer.GetItem(self.newbuttonbutton) is not None: + self.upperbottomsizer.SetItemMinSize(self.newbuttonbutton,obj.GetSize()) + self.topsizer.Layout() self.dragging = wx.Button(self.panel,-1,obj.GetLabel()) self.dragging.SetBackgroundColour(obj.GetBackgroundColour()) self.dragging.SetForegroundColour(obj.GetForegroundColour()) @@ -998,6 +1081,10 @@ class PronterWindow(wx.Frame,pronsole.pronsole): pass string+=(self.tempreport.replace("\r","").replace("T",_("Hotend")).replace("B",_("Bed")).replace("\n","").replace("ok ",""))+" " wx.CallAfter(self.tempdisp.SetLabel,self.tempreport.strip().replace("ok ","")) + #try: + # self.tgauge.SetValue(int(filter(lambda x:x.startswith("T:"),self.tempreport.split())[0].split(":")[1])) + #except: + # pass if self.sdprinting: string+= _(" SD printing:%04.2f %%") % (self.percentdone,) if self.p.printing: @@ -1035,6 +1122,10 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if "T:" in l: self.tempreport=l wx.CallAfter(self.tempdisp.SetLabel,self.tempreport.strip().replace("ok ","")) + #try: + # self.tgauge.SetValue(int(filter(lambda x:x.startswith("T:"),self.tempreport.split())[0].split(":")[1])) + #except: + # pass tstring=l.rstrip() #print tstring if(tstring!="ok"): @@ -1497,6 +1588,89 @@ class ButtonEdit(wx.Dialog): if self.name.GetValue()=="": self.name.SetValue(macro) +class TempGauge(wx.Panel): + def __init__(self,parent,size=(200,22)): + wx.Panel.__init__(self,parent,-1,size=size) + self.Bind(wx.EVT_PAINT,self.paint) + self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) + self.width,self.height=size + self.value=0 + self.setpoint=0 + self.recalc() + def recalc(self): + self.max=max(int(self.setpoint*1.05),240) + self.scale=float(self.width-2)/float(self.max) + self.ypt=int(self.scale*max(self.setpoint,40)) + def SetValue(self,value): + self.value=value + wx.CallAfter(self.Refresh) + def SetTarget(self,value): + self.setpoint=value + self.recalc() + wx.CallAfter(self.Refresh) + def paint(self,ev): + x0,y0,x1,y1,xE,yE = 1,1,self.ypt+1,1,self.width+1-2,20 + dc=wx.PaintDC(self) + dc.SetBackground(wx.Brush((255,255,255))) + dc.Clear() + cold,medium,hot = wx.Colour(0,167,223),wx.Colour(239,233,119),wx.Colour(210,50.100) + gauge1,gauge2 = wx.Colour(255,255,210),wx.Colour(234,82,0) + shadow1,shadow2 = wx.Colour(110,110,110),wx.Colour(255,255,255) + gc = wx.GraphicsContext.Create(dc) + # draw shadow first + # corners + gc.SetBrush(gc.CreateRadialGradientBrush(xE-7,9,xE-7,9,8,shadow1,shadow2)) + gc.DrawRectangle(xE-7,1,8,8) + gc.SetBrush(gc.CreateRadialGradientBrush(xE-7,17,xE-7,17,8,shadow1,shadow2)) + gc.DrawRectangle(xE-7,17,8,8) + gc.SetBrush(gc.CreateRadialGradientBrush(x0+6,17,x0+6,17,8,shadow1,shadow2)) + gc.DrawRectangle(0,17,x0+6,8) + # edges + gc.SetBrush(gc.CreateLinearGradientBrush(xE-13,0,xE-6,0,shadow1,shadow2)) + gc.DrawRectangle(xE-6,9,10,8) + gc.SetBrush(gc.CreateLinearGradientBrush(x0,yE-2,x0,yE+5,shadow1,shadow2)) + gc.DrawRectangle(x0+6,yE-2,xE-12,7) + # draw gauge background + gc.SetBrush(gc.CreateLinearGradientBrush(x0,y0,x1+1,y1,cold,medium)) + gc.DrawRoundedRectangle(x0,y0,x1+4,yE,6) + gc.SetBrush(gc.CreateLinearGradientBrush(x1-2,y1,xE,y1,medium,hot)) + gc.DrawRoundedRectangle(x1-2,y1,xE-x1,yE,6) + # draw gauge + gc.SetBrush(gc.CreateLinearGradientBrush(x0,y0+3,x0,y0+15,gauge1,gauge2)) + #gc.SetBrush(gc.CreateLinearGradientBrush(0,3,0,15,wx.Colour(255,255,255),wx.Colour(255,90,32))) + width=12 + w1=y0+9-width/2 + w2=w1+width + value=x0+max(10,min(self.width+1-2,int(self.value*self.scale))) + val_path = gc.CreatePath() + val_path.MoveToPoint(x0,w1) + val_path.AddLineToPoint(value,w1) + val_path.AddLineToPoint(value+2,w1+width/4) + val_path.AddLineToPoint(value+2,w2-width/4) + val_path.AddLineToPoint(value,w2) + #val_path.AddLineToPoint(value-4,10) + val_path.AddLineToPoint(x0,w2) + gc.DrawPath(val_path) + # draw setpoint markers + setpoint=x0+max(10,int(self.setpoint*self.scale)) + gc.SetBrush(gc.CreateBrush(wx.Brush(wx.Colour(0,0,0)))) + setp_path = gc.CreatePath() + setp_path.MoveToPoint(setpoint-4,y0) + setp_path.AddLineToPoint(setpoint+4,y0) + setp_path.AddLineToPoint(setpoint,y0+5) + setp_path.MoveToPoint(setpoint-4,yE) + setp_path.AddLineToPoint(setpoint+4,yE) + setp_path.AddLineToPoint(setpoint,yE-5) + gc.DrawPath(setp_path) + # draw readout + text=u"T\u00B0 %u/%u"%(self.value,self.setpoint) + #gc.SetFont(gc.CreateFont(wx.Font(12,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD),wx.WHITE)) + #gc.DrawText(text,29,-2) + gc.SetFont(gc.CreateFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD),wx.WHITE)) + gc.DrawText(text,x0+31,y0+1) + gc.SetFont(gc.CreateFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD))) + gc.DrawText(text,x0+30,y0+0) + if __name__ == '__main__': app = wx.App(False) main = PronterWindow()