diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index e1fe1df47..e210c9981 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -1094,12 +1094,17 @@ public class Base { // Make the directory for the new sketch newbieDir.mkdirs(); + // Add any template files from the Mode itself + File newbieFile = nextMode.addTemplateFiles(newbieDir, newbieName); + + /* // Make an empty pde file File newbieFile = new File(newbieDir, newbieName + "." + nextMode.getDefaultExtension()); //$NON-NLS-1$ if (!newbieFile.createNewFile()) { throw new IOException(newbieFile + " already exists."); } + */ // Create sketch properties file if it's not the default mode. if (!nextMode.equals(getDefaultMode())) { diff --git a/app/src/processing/app/Mode.java b/app/src/processing/app/Mode.java index faf1540e0..73c1dcd1d 100644 --- a/app/src/processing/app/Mode.java +++ b/app/src/processing/app/Mode.java @@ -226,6 +226,43 @@ public abstract class Mode { } + /** + * Add files to a folder to create an empty sketch. This can be overridden + * to add template files to a sketch for Modes that need them. + * + * @param sketchFolder the directory where the new sketch should live + * @param sketchName the name of the new sketch + * @return the main file for the sketch to be opened via handleOpen() + * @throws IOException if the file somehow already exists + */ + public File addTemplateFiles(File sketchFolder, + String sketchName) throws IOException { + // Make an empty .pde file + File newbieFile = + new File(sketchFolder, sketchName + "." + getDefaultExtension()); + + File templateFolder = getTemplateFolder(); + if (templateFolder.exists()) { + Util.copyDir(templateFolder, sketchFolder); + File templateFile = + new File(sketchFolder, "sketch." + getDefaultExtension()); + if (!templateFile.renameTo(newbieFile)) { + throw new IOException("Error while assigning the sketch template."); + } + } else { + if (!newbieFile.createNewFile()) { + throw new IOException(newbieFile + " already exists."); + } + } + return newbieFile; + } + + + public File getTemplateFolder() { + return getContentFile("template"); + } + + /** * Return the pretty/printable/menu name for this mode. This is separate from * the single word name of the folder that contains this mode. It could even diff --git a/java/src/processing/mode/java/JavaEditor.java b/java/src/processing/mode/java/JavaEditor.java index 8d90163b4..c45a29263 100644 --- a/java/src/processing/mode/java/JavaEditor.java +++ b/java/src/processing/mode/java/JavaEditor.java @@ -1945,13 +1945,8 @@ public class JavaEditor extends Editor { * To initiate a "stop" action, call handleStop() instead. */ public void deactivateRun() { -// if (toolbar instanceof DebugToolbar){ -// toolbar.deactivate(DebugToolbar.RUN); -// } else { -// toolbar.deactivate(JavaToolbar.RUN); toolbar.deactivateRun(); debugItem.setEnabled(true); -// } } diff --git a/todo.txt b/todo.txt index dbe353590..410470ee6 100644 --- a/todo.txt +++ b/todo.txt @@ -13,8 +13,9 @@ X https://github.com/processing/processing/issues/4566 X https://github.com/processing/processing/issues/4492 X https://github.com/processing/processing/issues/4128 X https://github.com/processing/processing/issues/4503 - -_ see if CLASSPATH can be set to screw up p5 +X see if CLASSPATH can be set to screw up p5 +X works fine on OS X, couldn't reproduce on Linux +X add template support for Modes _ modify line number color when no lines extend that far? _ https://github.com/processing/processing/pull/4560