diff --git a/app/src/processing/app/Preferences.java b/app/src/processing/app/Preferences.java index 315620033..4cee5ad8e 100644 --- a/app/src/processing/app/Preferences.java +++ b/app/src/processing/app/Preferences.java @@ -121,6 +121,7 @@ public class Preferences { JTextField memoryField; JCheckBox checkUpdatesBox; JTextField fontSizeField; + JCheckBox updateExtensionBox; JCheckBox autoAssociateBox; @@ -325,7 +326,15 @@ public class Preferences { checkUpdatesBox.setBounds(left, top, d.width + 10, d.height); right = Math.max(right, left + d.width); top += d.height + GUI_BETWEEN; - + + // [ ] Update sketch files to new extension on save (.pde -> .ino) + + updateExtensionBox = new JCheckBox("Update sketch files to new extension on save (.pde -> .ino)"); + pain.add(updateExtensionBox); + d = updateExtensionBox.getPreferredSize(); + updateExtensionBox.setBounds(left, top, d.width + 10, d.height); + right = Math.max(right, left + d.width); + top += d.height + GUI_BETWEEN; // [ ] Automatically associate .pde files with Processing @@ -526,6 +535,8 @@ public class Preferences { setBoolean("platform.auto_file_type_associations", autoAssociateBox.isSelected()); } + + setBoolean("editor.update_extension", updateExtensionBox.isSelected()); editor.applyPreferences(); } @@ -558,6 +569,9 @@ public class Preferences { autoAssociateBox. setSelected(getBoolean("platform.auto_file_type_associations")); } + + updateExtensionBox.setSelected(get("editor.update_extension") == null || + getBoolean("editor.update_extension")); dialog.setVisible(true); } diff --git a/app/src/processing/app/Sketch.java b/app/src/processing/app/Sketch.java index edde19c11..4a90795de 100644 --- a/app/src/processing/app/Sketch.java +++ b/app/src/processing/app/Sketch.java @@ -718,9 +718,33 @@ public class Sketch { }); if (pdeFiles != null && pdeFiles.length > 0) { - // Do rename of all .pde files to new .ino extension - for (File pdeFile : pdeFiles) - renameCodeToInoExtension(pdeFile); + if (Preferences.get("editor.update_extension") == null) { + Object[] options = { "OK", "Cancel" }; + int result = JOptionPane.showOptionDialog(editor, + "In Arduino 1.0, the default file extension has changed\n" + + "from .pde to .ino. New sketches (including those created\n" + + "by \"Save-As\" will use the new extension. The extension\n" + + "of existing sketches will be updated on save, but you can\n" + + "disable this in the Preferences dialog.\n" + + "\n" + + "Save sketch and update its extension?", + ".pde -> .ino", + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + options, + options[0]); + + if (result != JOptionPane.OK_OPTION) return false; // save cancelled + + Preferences.setBoolean("editor.update_extension", true); + } + + if (Preferences.getBoolean("editor.update_extension")) { + // Do rename of all .pde files to new .ino extension + for (File pdeFile : pdeFiles) + renameCodeToInoExtension(pdeFile); + } } }