diff --git a/.all-contributorsrc b/.all-contributorsrc
index 32dd2a5cb1..d1d18fb988 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -350,7 +350,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/3434564?v=4",
"profile": "https://github.com/joshgiesbrecht",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1491,7 +1492,8 @@
"profile": "https://github.com/babaissarkar",
"contributions": [
"code",
- "a11y"
+ "a11y",
+ "doc"
]
},
{
@@ -1539,6 +1541,107 @@
"contributions": [
"code"
]
+ },
+ {
+ "login": "jd-boyd",
+ "name": "Joshua D. Boyd",
+ "avatar_url": "https://avatars.githubusercontent.com/u/361465?v=4",
+ "profile": "http://blog.jdboyd.net/",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "Vaivaswat2244",
+ "name": "Vaivaswat Dubey",
+ "avatar_url": "https://avatars.githubusercontent.com/u/113991324?v=4",
+ "profile": "https://github.com/Vaivaswat2244",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jSdCool",
+ "name": "jSdCool",
+ "avatar_url": "https://avatars.githubusercontent.com/u/37940266?v=4",
+ "profile": "https://www.cbi-games.org",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "AhmedMagedC",
+ "name": "AhmedMaged",
+ "avatar_url": "https://avatars.githubusercontent.com/u/111961041?v=4",
+ "profile": "https://github.com/AhmedMagedC",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ThexXTURBOXx",
+ "name": "Nico Mexis",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12763829?v=4",
+ "profile": "http://nmexis.me",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "tychedelia",
+ "name": "charlotte 🌸",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10366310?v=4",
+ "profile": "http://charlotte.fyi",
+ "contributions": [
+ "review"
+ ]
+ },
+ {
+ "login": "jdebou",
+ "name": "Joackim de Bourqueney",
+ "avatar_url": "https://avatars.githubusercontent.com/u/80685479?v=4",
+ "profile": "http://i-j.fr",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "toniab",
+ "name": "Tonz",
+ "avatar_url": "https://avatars.githubusercontent.com/u/370199?v=4",
+ "profile": "https://github.com/toniab",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "aj-m",
+ "name": "Andrew",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2524348?v=4",
+ "profile": "https://github.com/aj-m",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "pnngocdoan",
+ "name": "Ngoc Doan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/113954980?v=4",
+ "profile": "https://github.com/pnngocdoan",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "manoellribeiro",
+ "name": "Manoel Ribeiro",
+ "avatar_url": "https://avatars.githubusercontent.com/u/59377764?v=4",
+ "profile": "https://github.com/manoellribeiro",
+ "contributions": [
+ "doc"
+ ]
}
],
"repoType": "github",
diff --git a/.gitignore b/.gitignore
index 26b5b97563..67057f9425 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,117 +1,126 @@
-.DS_Store
-.AppleDouble
-._*
-*~
-/build/shared/reference.zip
-
-*.x
-
-#*.iml
-#/.idea
-
-# may need to bring this back later
-/.idea/codeStyles
-
-# via https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-# .idea/modules.xml
-# .idea/*.iml
-# .idea/modules
-
-# CMake
-cmake-build-*/
-
-# Mongo Explorer plugin
-.idea/**/mongoSettings.xml
-
-# File-based project format
-*.iws
+# Created by https://www.toptal.com/developers/gitignore/api/android,gradle,java
+# Edit at https://www.toptal.com/developers/gitignore?templates=android,gradle,java
+
+### Android ###
+# Gradle files
+.gradle/
+build/
+
+# Local configuration file (sdk path, etc)
+local.properties
+
+# Log/OS Files
+*.log
+
+# Android Studio generated files and folders
+captures/
+.externalNativeBuild/
+.cxx/
+*.apk
+output.json
# IntelliJ
-out/
+*.iml
+.idea/*
+misc.xml
+deploymentTargetDropDown.xml
+render.experimental.xml
-# mpeltonen/sbt-idea plugin
-.idea_modules/
+# Keystore files
+*.jks
+*.keystore
-# JIRA plugin
-atlassian-ide-plugin.xml
+# Google Services (e.g. APIs or Firebase)
+google-services.json
-# Cursive Clojure plugin
-.idea/replstate.xml
+# Android Profiling
+*.hprof
-# Crashlytics plugin (for Android Studio and IntelliJ)
-com_crashlytics_export_strings.xml
-crashlytics.properties
-crashlytics-build.properties
-fabric.properties
+### Android Patch ###
+gen-external-apklibs
-# Editor-based Rest Client
-.idea/httpRequests
+# Replacement of .externalNativeBuild directories introduced
+# with Android Studio 3.5.
-# Android studio 3.1+ serialized cache file
-.idea/caches/build_file_checksums.ser
+### Java ###
+# Compiled class file
+*.class
-# temporarily ignore IntelliJ bits
-*.eml
+# Log file
-# testing boogers
-bin-test
+# BlueJ files
+*.ctxt
-# dated folders
-/19*
-/20*
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
-# VS Code Java project files
-.project
-.vscode/
+# Package Files #
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
-# Processing examples
-processing-examples
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+replay_pid*
-# Maven ignores
+### Gradle ###
.gradle
-core/build/
-build/publish/
-app/build
-java/build/
-/build/reports
-/java/bin
-/java/libraries/svg/bin
-/java/preprocessor/build
-/java/lsp/build
-/.kotlin/sessions
-/core/examples/build
+**/build/
+!src/**/build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+# Avoid ignore Gradle wrappper properties
+!gradle-wrapper.properties
+
+# Cache of project
+.gradletasknamecache
+
+# Eclipse Gradle plugin generated files
+# Eclipse Core
+.project
+# JDT-specific (Eclipse Java Development Tools)
+.classpath
+
+### Gradle Patch ###
+# Java heap dump
+
+# End of https://www.toptal.com/developers/gitignore/api/android,gradle,java
+.DS_Store
+bin/*
.build/
+.processing/
+library/*
+generated/
+!/build/
+!.idea/runConfigurations/
+!/java/application/launch4j/bin/*
+!java/libraries/io/library/**/*.so
+/app/lib
+/build/macos/work/Processing.app
+/core/library
+/core/bin
+/build/shared/tools/MovieMaker/tool/ffmpeg
+/build/shared/tools/MovieMaker/tool/*.jar
+/core/methods/methods.jar
+/java/libraries/*/library/*.jar
+/build/macos/*.tgz
+/build/shared/tools/MovieMaker/*.gz
+/app/bin/processing/app/laf/FlatLaf.properties
+/app/pde.jar
+/java/mode/gson.jar
+/java/mode/JavaMode.jar
+/java/mode/org.eclipse.lsp4j.jar
+/java/mode/org.eclipse.lsp4j.jsonrpc.jar
+!java/libraries/pdf/library/itext.jar
+!java/libraries/serial/library/jssc.jar
/app/windows/obj
/java/gradle/build
/java/gradle/example/.processing
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d33521af..0000000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/ant.xml b/.idea/ant.xml
deleted file mode 100644
index d23b5d8283..0000000000
--- a/.idea/ant.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
The requested resource was not found.
"; + exchange.getResponseHeaders().set("Content-Type", "text/html"); + exchange.sendResponseHeaders(404, response.length()); + try (OutputStream os = exchange.getResponseBody()) { + os.write(response.getBytes()); + } + + Messages.log("404 Not Found: " + path); + } + } + } + + /** + * A main() method for testing. + */ + static public void main(String[] args) { + try { + new ReferenceServer(new File(args[0]), 8053); + System.out.println("Server running at http://localhost:8053/"); + } catch (IOException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/app/src/processing/app/SketchException.java b/app/src/processing/app/SketchException.java deleted file mode 100644 index 4a32d2e79d..0000000000 --- a/app/src/processing/app/SketchException.java +++ /dev/null @@ -1,162 +0,0 @@ -/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */ - -/* - Part of the Processing project - http://processing.org - - Copyright (c) 2004-08 Ben Fry and Casey Reas - Copyright (c) 2001-04 Massachusetts Institute of Technology - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -package processing.app; - - -/** - * An exception with a line number attached that occurs - * during either pre-processing, compile, or run time. - */ -public class SketchException extends Exception { - protected String message; - protected int codeIndex; - protected int codeLine; - protected int codeColumn; - protected boolean showStackTrace; - - - public SketchException(String message) { - this(message, true); - } - - - public SketchException(String message, boolean showStackTrace) { - this(message, -1, -1, -1, showStackTrace); - } - - - public SketchException(String message, int file, int line) { - this(message, file, line, -1, true); - } - - - public SketchException(String message, int file, int line, int column) { - this(message, file, line, column, true); - } - - - public SketchException(String message, int file, int line, int column, - boolean showStackTrace) { - this.message = message; - this.codeIndex = file; - this.codeLine = line; - this.codeColumn = column; - this.showStackTrace = showStackTrace; - } - - - /** - * Override getMessage() in Throwable, so that I can set - * the message text outside the constructor. - */ - public String getMessage() { - return message; - } - - - public void setMessage(String message) { - this.message = message; - } - - - public int getCodeIndex() { - return codeIndex; - } - - - public void setCodeIndex(int index) { - codeIndex = index; - } - - - public boolean hasCodeIndex() { - return codeIndex != -1; - } - - - public int getCodeLine() { - return codeLine; - } - - - public void setCodeLine(int line) { - this.codeLine = line; - } - - - public boolean hasCodeLine() { - return codeLine != -1; - } - - - public void setCodeColumn(int column) { - this.codeColumn = column; - } - - - public int getCodeColumn() { - return codeColumn; - } - - - public void showStackTrace() { - showStackTrace = true; - } - - - public void hideStackTrace() { - showStackTrace = false; - } - - - public boolean isStackTraceEnabled() { - return showStackTrace; - } - - - /** - * Nix the java.lang crap out of an exception message - * because it scares the children. - *- * This function must be static to be used with super() - * in each of the constructors above. - */ - /* - static public final String massage(String msg) { - if (msg.indexOf("java.lang.") == 0) { - //int dot = msg.lastIndexOf('.'); - msg = msg.substring("java.lang.".length()); - } - return msg; - //return (dot == -1) ? msg : msg.substring(dot+1); - } - */ - - - public void printStackTrace() { - if (showStackTrace) { - super.printStackTrace(); - } - } -} diff --git a/app/src/processing/app/WebServer.java b/app/src/processing/app/WebServer.java deleted file mode 100644 index bd13f59b40..0000000000 --- a/app/src/processing/app/WebServer.java +++ /dev/null @@ -1,335 +0,0 @@ -package processing.app; - -import java.io.*; -import java.net.*; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.zip.*; - - -/** - * This code is placed here in anticipation of running the reference from an - * internal web server that reads the docs from a zip file, instead of using - * thousands of .html files on the disk, which is really inefficient. - *
- * This is a very simple, multi-threaded HTTP server, originally based on - * this article on java.sun.com. - */ -public class WebServer { - static final int HTTP_OK = 200; - static final int HTTP_NOT_FOUND = 404; - static final int HTTP_BAD_METHOD = 405; - - /** where worker threads stand idle */ - private final Vector- * cd app - * ant - * open http://localhost:8053/reference/index.html - * java -cp pde.jar processing.app.WebServer ../java/reference.zip - *- */ - static public void main(String[] args) { - try { - new WebServer(new File(args[0]), 8053); - } catch (IOException e) { - e.printStackTrace(); - } - } -} - - - diff --git a/app/src/processing/app/ui/Editor.java b/app/src/processing/app/ui/Editor.java index a06cbe2383..d710890a95 100644 --- a/app/src/processing/app/ui/Editor.java +++ b/app/src/processing/app/ui/Editor.java @@ -61,7 +61,7 @@ import processing.app.RunnerListener; import processing.app.Sketch; import processing.app.SketchCode; -import processing.app.SketchException; +import processing.utils.SketchException; import processing.app.contrib.ContributionManager; import processing.app.laf.PdeMenuItemUI; import processing.app.syntax.*; @@ -2665,7 +2665,7 @@ public int getStatusMode() { * Clear the status area. */ public void statusEmpty() { - statusNotice(EMPTY); + status.empty(); } @@ -2736,6 +2736,7 @@ public void highlight(Problem p) { } int tabIndex = p.getTabIndex(); + sketch.setCurrentCode(tabIndex); // so we are looking at the right offsets below int lineNumber = p.getLineNumber(); int lineStart = textarea.getLineStartOffset(lineNumber); int lineEnd = textarea.getLineStopOffset(lineNumber); diff --git a/app/test/processing/app/CLITest.kt b/app/test/processing/app/CLITest.kt new file mode 100644 index 0000000000..2bd8cc81e7 --- /dev/null +++ b/app/test/processing/app/CLITest.kt @@ -0,0 +1,50 @@ +package processing.app + +import java.io.File +import kotlin.test.Test + +/* +This class is used to test the CLI commands of the Processing IDE. +It mostly exists to quickly run CLI commands without having to specify run configurations +or to manually run it on the command line. + +In IntelliJ IDEA, it should display runnable arrows next to each test method. +Use this to quickly test the CLI commands. +The output will be displayed in the console after `Running CLI with arguments: ...`. +When developing on the CLI commands, feel free to add more test methods here. + */ +class CLITest { + + @Test + fun testLSP(){ + runCLIWithArguments("lsp") + } + + @Test + fun testLegacyCLI(){ + runCLIWithArguments("cli --help") + } + + /* + This function runs the CLI with the given arguments. + */ + fun runCLIWithArguments(args: String) { + // TODO: Once Processing PDE correctly builds in IntelliJ IDEA switch over to using the code directly + // To see if the PDE builds correctly can be tested by running the Processing.kt main function directly in IntelliJ IDEA + // Set the JAVA_HOME environment variable to the JDK used by the IDE + println("Running CLI with arguments: $args") + val process = ProcessBuilder("./gradlew", "run", "--args=$args", "--quiet") + .directory(File(System.getProperty("user.dir")).resolve("../../../")) + .inheritIO() + + process.environment().apply { + put("JAVA_HOME", System.getProperty("java.home")) + } + + val result = process + .start() + .waitFor() + println("Done running CLI with arguments: $args (Result: $result)") + + } +} \ No newline at end of file diff --git a/app/utils/build.gradle.kts b/app/utils/build.gradle.kts new file mode 100644 index 0000000000..193188f956 --- /dev/null +++ b/app/utils/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + id("java") +} + +repositories { + mavenCentral() +} + +dependencies { + testImplementation(platform("org.junit:junit-bom:5.10.0")) + testImplementation("org.junit.jupiter:junit-jupiter") +} + +tasks.test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/app/utils/src/main/java/processing/utils/SketchException.java b/app/utils/src/main/java/processing/utils/SketchException.java new file mode 100644 index 0000000000..a7f0e7511c --- /dev/null +++ b/app/utils/src/main/java/processing/utils/SketchException.java @@ -0,0 +1,162 @@ +/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Processing project - http://processing.org + + Copyright (c) 2004-08 Ben Fry and Casey Reas + Copyright (c) 2001-04 Massachusetts Institute of Technology + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +package processing.utils; + + +/** + * An exception with a line number attached that occurs + * during either pre-processing, compile, or run time. + */ +public class SketchException extends Exception { + protected String message; + protected int codeIndex; + protected int codeLine; + protected int codeColumn; + protected boolean showStackTrace; + + + public SketchException(String message) { + this(message, true); + } + + + public SketchException(String message, boolean showStackTrace) { + this(message, -1, -1, -1, showStackTrace); + } + + + public SketchException(String message, int file, int line) { + this(message, file, line, -1, true); + } + + + public SketchException(String message, int file, int line, int column) { + this(message, file, line, column, true); + } + + + public SketchException(String message, int file, int line, int column, + boolean showStackTrace) { + this.message = message; + this.codeIndex = file; + this.codeLine = line; + this.codeColumn = column; + this.showStackTrace = showStackTrace; + } + + + /** + * Override getMessage() in Throwable, so that I can set + * the message text outside the constructor. + */ + public String getMessage() { + return message; + } + + + public void setMessage(String message) { + this.message = message; + } + + + public int getCodeIndex() { + return codeIndex; + } + + + public void setCodeIndex(int index) { + codeIndex = index; + } + + + public boolean hasCodeIndex() { + return codeIndex != -1; + } + + + public int getCodeLine() { + return codeLine; + } + + + public void setCodeLine(int line) { + this.codeLine = line; + } + + + public boolean hasCodeLine() { + return codeLine != -1; + } + + + public void setCodeColumn(int column) { + this.codeColumn = column; + } + + + public int getCodeColumn() { + return codeColumn; + } + + + public void showStackTrace() { + showStackTrace = true; + } + + + public void hideStackTrace() { + showStackTrace = false; + } + + + public boolean isStackTraceEnabled() { + return showStackTrace; + } + + + /** + * Nix the java.lang crap out of an exception message + * because it scares the children. + *
+ * This function must be static to be used with super()
+ * in each of the constructors above.
+ */
+ /*
+ static public final String massage(String msg) {
+ if (msg.indexOf("java.lang.") == 0) {
+ //int dot = msg.lastIndexOf('.');
+ msg = msg.substring("java.lang.".length());
+ }
+ return msg;
+ //return (dot == -1) ? msg : msg.substring(dot+1);
+ }
+ */
+
+
+ public void printStackTrace() {
+ if (showStackTrace) {
+ super.printStackTrace();
+ }
+ }
+}
diff --git a/app/windows/Processing.wxs b/app/windows/Processing.wxs
index 2b6a7a5e36..5cf0b837b2 100644
--- a/app/windows/Processing.wxs
+++ b/app/windows/Processing.wxs
@@ -13,6 +13,7 @@
- * This function must be static to be used with super()
- * in each of the constructors above.
- */
- /*
- static public final String massage(String msg) {
- if (msg.indexOf("java.lang.") == 0) {
- //int dot = msg.lastIndexOf('.');
- msg = msg.substring("java.lang.".length());
- }
- return msg;
- //return (dot == -1) ? msg : msg.substring(dot+1);
- }
- */
-
-
- public void printStackTrace() {
- if (showStackTrace) {
- super.printStackTrace();
- }
- }
-}
diff --git a/java/src/processing/mode/java/runner/Runner.java b/java/src/processing/mode/java/runner/Runner.java
index b4dc517707..a9baf1ea6a 100644
--- a/java/src/processing/mode/java/runner/Runner.java
+++ b/java/src/processing/mode/java/runner/Runner.java
@@ -43,7 +43,7 @@
import com.sun.jdi.connect.Connector.Argument;
import com.sun.jdi.event.*;
import com.sun.jdi.request.*;
-import processing.mode.java.preproc.SketchException;
+import processing.utils.SketchException;
/**
@@ -774,10 +774,11 @@ public static boolean handleCommonErrors(final String exceptionClass,
err.println("and your code should be rewritten in a more efficient manner.");
} else if (exceptionClass.equals("java.lang.UnsupportedClassVersionError")) {
+ int javaVersion = Runtime.version().feature();
listener.statusError("UnsupportedClassVersionError: A library is using code compiled with an unsupported version of Java.");
- err.println("This version of Processing only supports libraries and JAR files compiled for Java 1.8 or earlier.");
- err.println("A library used by this sketch was compiled for Java 1.9 or later, ");
- err.println("and needs to be recompiled to be compatible with Java 1.8.");
+ err.println("This version of Processing only supports libraries and JAR files compiled for Java " + javaVersion + " or earlier.");
+ err.println("A library used by this sketch was compiled for Java " + (javaVersion + 1) + " or later, ");
+ err.println("and needs to be recompiled to be compatible with Java " + javaVersion + ".");
} else if (exceptionClass.equals("java.lang.NoSuchMethodError") ||
exceptionClass.equals("java.lang.NoSuchFieldError")) {
diff --git a/java/test/processing/mode/java/ParserTests.java b/java/test/processing/mode/java/ParserTests.java
index c4717a7959..df34795f06 100644
--- a/java/test/processing/mode/java/ParserTests.java
+++ b/java/test/processing/mode/java/ParserTests.java
@@ -17,7 +17,7 @@
import processing.app.Preferences;
import processing.mode.java.preproc.PreprocessorResult;
import processing.mode.java.preproc.PdePreprocessIssueException;
-import processing.mode.java.preproc.SketchException;
+import processing.utils.SketchException;
public class ParserTests {
diff --git a/java/test/processing/mode/java/ProcessingTestUtil.java b/java/test/processing/mode/java/ProcessingTestUtil.java
index 40f42d5575..37cf5ca0be 100644
--- a/java/test/processing/mode/java/ProcessingTestUtil.java
+++ b/java/test/processing/mode/java/ProcessingTestUtil.java
@@ -10,7 +10,7 @@
import processing.mode.java.preproc.PdePreprocessor;
import processing.mode.java.preproc.PreprocessorResult;
import processing.mode.java.preproc.PdePreprocessIssueException;
-import processing.mode.java.preproc.SketchException;
+import processing.utils.SketchException;
public class ProcessingTestUtil {
diff --git a/java/test/processing/mode/java/RuntimePathFactoryTestUtil.java b/java/test/processing/mode/java/RuntimePathFactoryTestUtil.java
index 665f9761d5..ef37322456 100644
--- a/java/test/processing/mode/java/RuntimePathFactoryTestUtil.java
+++ b/java/test/processing/mode/java/RuntimePathFactoryTestUtil.java
@@ -23,7 +23,7 @@
import org.mockito.Mockito;
import processing.app.Library;
import processing.app.Sketch;
-import processing.app.SketchException;
+import processing.utils.SketchException;
import processing.mode.java.preproc.ImportStatement;
import java.io.File;
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 4bdcd880e8..8f8cb74c7f 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -11,4 +11,5 @@ include(
"java:libraries:pdf",
"java:libraries:serial",
"java:libraries:svg",
-)
\ No newline at end of file
+)
+include("app:utils")
\ No newline at end of file
diff --git a/todo.txt b/todo.txt
deleted file mode 100755
index 543c9dd198..0000000000
--- a/todo.txt
+++ /dev/null
@@ -1,978 +0,0 @@
-1295 (4.3.2)
-^^^^^^^^^^^^
-NOTE: The first line in this file is the source for the current
-revision of Processing for the build system.
-
-***************************************************************
-IMPORTANT: The rest of this file is left here for historical
-reference and should not be used as a guide for current tasks
-or priorities. Many items in this list are outdated or no longer
-relevant.
-
-For contributors, please refer to the CONTRIBUTING guidelines
-and check the open issues list for actionable items. If anything
-here sparks interest, consider opening a new issue to discuss
-its current relevance.
-***************************************************************
-
-X add an extra note about the Ant version
-X https://github.com/processing/processing4/pull/783
-
-contribs
-X migrate from altool to notarytool from @CyberFlameGO
-X https://github.com/processing/processing4/pull/757
-X more fixes for error checking from @sampottinger
-X https://github.com/processing/processing4/pull/772
-
-
-high priority
-_ right-click/ctrl-click for jump to declaration causes hang
-_ https://github.com/processing/processing4/issues/527
-_ https://github.com/processing/processing4/issues/551
-_ https://github.com/processing/processing4/issues/595
-
-
-_ sandbox access to Desktop folder when using non-notarized versions
-_ "Security-Scoped Bookmarks" is the term: https://stackoverflow.com/a/12155622
-_ example using JNI: https://github.com/plexteq/PQSsbJNIBridge
-_ how to store/save bookmarks: https://stackoverflow.com/a/74835008
-
-_ doing "Save As" on sketch didn't write a new main= entry in sketch.properties
-_ at least with Python Mode
-_ problem re-loading a sketch that doesn't get its sketch.properties written
-_ https://github.com/processing/processing4/issues/719
-_ may be a p5jsMode issue, though ahrd to say
-_ sketchbook entries that use local.properties not getting picked up in sketchbook window
-
-_ should Python Mode rely on Java Mode?
-_ this would let us put ExportPrompt back in there
-_ also add parts of JavaBuild that handle packaging exported apps
-
-_ change the welcome screen to be wide instead of vertical
-
-_ exporting application while still running on Windows
-_ just says "Error during export" rather than something more useful about deleting dir
-
-manager
-_ if contrib (library only?) folder name changes on update, old lib not removed
-_ Updates requiring a reboot give the false impression that they failed (in updates tab)
-_ https://github.com/processing/processing4/issues/647
-_ lots of folders remaining in 'old' for Modes
-_ were these shut off during debug?
-_ need to be moving these to trash (maybe only on startup)
-_ implement automatic updates?
-_ especially with fixes to updates on startup...
-
-manager/design
-_ use down arrow for updates, circle arrow for restart?
-_ completion mode pop-up not following dark and light mode conventions
-_ update console.scrollbar.thumb.rollover.color and console.scrollbar.thumb.pressed.color
-_ currently just using .enabled.color because they weren't in ColorSet
-
-_ opening p5jsMode sketch with no local.properties throws an NPE
-_ PDE can't find any files that match the supported extensions
-_ maybe related: https://github.com/processing/processing4/issues/719
-
-_ export to IntelliJ? how tricky?
-_ just copy jars to /lib?
-_ point to binaries in /Applications/Processing.app? (no)
-
-
-known issues
-_ mixed mode warning now broken
-_ https://github.com/processing/processing4/issues/519
-_ tests also turned off in build.xml because this is causing it to fail
-_ 'color' in imports shows up as an error in the editor
-_ but code still compiles and runs
-_ https://github.com/processing/processing4/issues/521
-_ need to make it possible to use module jars
-_ https://github.com/processing/processing4/issues/522
-_ https://github.com/processing/processing4-javafx/issues/15
-
-
-finalizing a release
-_ submit to Microsoft
-_ https://www.microsoft.com/en-us/wdsi/filesubmission
-_ https://aka.ms/wdsi
-_ https://www.microsoft.com/security/oblog/2018/08/16/partnering-with-the-industry-to-minimize-false-positives/
-
-
-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-
-
-priorities/would like to fix soon (but not necessary for 4.0 final)
-_ write a local.properties file when there's more than one file in the sketch
-_ this will fix the majority of cases where sketch name is accidentally detached
-_ for single .pde sketches, it's not a problem because it will find the file
-_ but for multiple files, it needs to identify the main
-_ pass through the source to update licenses
-_ add Processing Foundation as 2012-15
-_ update license info to state gplv2 not v3
-_ run through that online license checker
-_ add warnings to the old wiki pages with links to the newer versions
-o change the license from GPL
-_ make notes about the decision in the FAQ
-_ Remove “Disable HiDPI Scaling” preference on Windows?
-_ document it in the troubleshooting doc, ask people to report
-_ put it into the Preferences page?
-_ adding a file to an untitled sketch should require a save
-_ editor breakpoints out of the .pde files
-_ really a drag for version control
-_ https://github.com/processing/processing/issues/5848
-_ or at least avoid the multiple
-_ https://github.com/processing/processing4/issues/330
-_ Cannot type quotes with an international keyboard on MacOS
-_ fixed by turning on "Enable complex text input"
-_ https://github.com/processing/processing4/issues/322
-_ loadShape(), show a warning when using style instead of presentation attributes
-_ apt package for easier rpi install (especially)
-_ show relative Library/Mode/Tool usage/popularity in the manager
-_ Open Sketch Folder not working on Linux with java.awt.Desktop quirks
-_ make the call on the launcher setting for Linux
-_ https://github.com/processing/processing4/issues/247
-_ Find in Reference disabled for various keywords (draw, for, if, catch, while)
-_ https://github.com/processing/processing/issues/5562
-X https://github.com/processing/processing/pull/5642 (closed)
-_ ui scaling in the PDE is important for classes/seeing at a distance
-_ some interface zoom now conflicting with the Java 9+ defaults
-_ things look terrible (tiny fonts) on Windows, adjusting has weird effects
-_ resolve in DefaultPlatform and Toolkit, disable ui in PreferencesFrame
-_ proxy trouble with p5? since adding the system proxy?
-_ this can be a problem in school environments (where proxies show up)
-_ really difficult to test, however, without a proxy setup
-_ https://github.com/processing/processing/pull/3251/files
-_ larger problem thread https://github.com/processing/processing/issues/3891
-_ ideen2011.blogspot.de/2011/08/java-proxyselector-usesystemproxies-and.html
-_ malformed proxy issues http://stackoverflow.com/q/376101
-_ docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html
-_ https://github.com/processing/processing/issues/1476#issuecomment-23229990
-_ https://github.com/processing/processing4/wiki/Preferences#proxies
-_ proxies don't support authentication
-_ https://github.com/processing/processing4/issues/644
-
-
-organize this mess
-_ implement support for Java “modules” and clean up JavaFX-specific workarounds
-_ https://github.com/processing/processing4/issues/212
-_ modules and classpath ugh https://stackoverflow.com/a/46289257
-_ also the Crusty2D renderer for use with macOS hack stuff
-_ actually need separate alpha/1.5/2.x versions of this
-_ errors inside setup() aren't coming through at all?
-_ seen in Eclipse; have to turn on the debugger... same as #4703?
-_ mode list does not update after changing sketchbook folder
-_ already reported?
-_ make "Could not get the settings folder" message more helpful
-_ https://github.com/processing/processing/issues/5744
-_ need to check the locations it'd be writing to, and see if available
-_ then tell the user which folder to fix
-_ already fairly close, the problem is that they get a "report this" dialog box
-_ but the useful information is in the actual exception message
-_ import suggestions box needs design review
-_ https://github.com/processing/processing/issues/3407
-_ show compiling/startup animation after clicking run
-_ or maybe show an animation for starting up
-_ rather than post-compile
-_ https://github.com/processing/processing/issues/136
-_ save() and saveAs() need to be refactored
-_ https://github.com/processing/processing/issues/3843
-_ move Library to LibraryContribution and into contrib?
-_ improve error message when creating a tab with the same name
-_ right now it's generic, based on "a file exists"
-_ don't allow users to create 'blah.java' when 'blah.pde' already in sketch
-_ detect changes in case with libraries
-_ https://github.com/processing/processing/issues/4507
-_ modes are being loaded multiple times, which can cause trouble
-_ jeditsyntax is a mess of old-style getModifiers()
-_ would like to switch this over, but needs to be tested a lot
-
-
-
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-
-PDE - Processing Development Environment
-
-
-PDE / Dialogs
-
-_ option to suppress warning dialogs
-_ starting with the one about modifying the sketch name for spaces
-_ also the "some features will be disabled" with .java tabs
-_ https://github.com/processing/processing/issues/46
-_ add "don't warn me about this" for sketch renaming
-_ make sure renamed version doesn't exist already
-_ prompt user before nuking applet or application folders
-_ along with a "don't ask me later"
-
-
-PDE / Compiler & Preprocessor
-
-medium (bugs/features)
-_ preprocessor throws error when calling color() on a PGraphics
-_ https://github.com/processing/processing/issues/3762
-_ omitting a semicolon shows the error on the line after it
-_ npe if library is removed before compile
-_ always check library folders to make sure they're still valid
-_ with additional .pde files, don't allow static mode in front tab
-_ e.g. no setup()/draw() block
-_ don't allow "for (blah; blah; blah) ;"
-_ or if (blah blah blah) ;
-_ it's never useful. students can use { } if they want an empty block
-
-low (features)
-_ copy running code from /tmp/buildXXxxx on crash of p5
-_ should probably make a way to save/recover code
-_ make the buildXxxx folders relate to time/date?
-_ link out to further documentation (e.g. AIOOBE, NPE)
-
-low (common errors around reserved names/class naming)
-_ Saving sketch with the same name as a class or primitive breaks sketch
-_ https://github.com/processing/processing/issues/196
-_ don't allow people to override methods like paint()
-_ make them final? just improve the error messages?
-_ https://github.com/processing/processing/issues/1058
-_ Processing chokes if a sketch defines a class with same name as the sketch
-_ https://github.com/processing/processing/issues/196
-_ don't allow goofy case versions of reserved words
-_ keypressed should maybe throw an error
-_ https://github.com/processing/processing/issues/44
-_ "unexpected token" on anonymous instance of parameterized Comparator
-_ https://github.com/processing/processing/issues/533
-
-
-PDE / Editor
-
-_ 'recent' menu paths can get enormous
-_ active editor not being set null
-_ in Base.nextEditorLocation(), changed to "editors.size() == 0"
-_ instead of (activeEditor == null), but that's papering over a problem
-_ where the active editor is not being set null
-_ renaming RGB (.pde) to Rgb.java says "a file named RGB.pde already exists"
-_ improve update check message "a new release (1.0.1) is available"
-_ be more descriptive, use a second line in latest.txt
-_ maybe just include the full text of the update message there?
-_ go through other sketch-opening menus to check for disappearing sketches
-_ deal with isManagingFocus() warning in the editor src
-_ strange NullPointerException problem prevents launch
-_ some kind of NPE in handleOpenInternal and friends
-_ appears to be a synchronization problem with the loading
-_ blank sketch opened even if another opened by double-click
-_ add a 150 ms or more lag before opening the untitled window
-_ https://github.com/processing/processing/issues/218
-_ editors opening up at the same time on load?
-_ either synchronize the open (at a minimum)
-_ or wait for mac handlers to register an open event
-_ can also cause problems with opening multiple copies of same sketch
-_ after fixing name of sketch, ensure sketch of that name does not exist
-_ add auto-save to the editor
-_ https://github.com/processing/processing/issues/131
-_ implement better method of showing curly brace closure
-_ https://github.com/processing/processing/issues/94
-_ setModified() getting called on Windows (probably Linux) for key cmds
-
-
-PDE / Completion
-
-_ text overlapping in the code completion popup
-_ appears to be a bug in the text width calculations in JLabel
-_ applyMatrix() sometimes ... and sometimes not
-_ apparently "overloaded" methods are show as methodName(...) until selected
-_ but the actual behavior seems inconsistent at best
-
-
-PDE / Editor Toolbar (Buttons)
-
-_ run button issues (unconfirmed)
-_ does it unhighlight after compile or runtime errors?
-_ also when using draw() instead of loop()
-_ applet needs to notify runner that it has terminated
-_ check 'finished' via objectreference?
-_ EditorToolbar has two TODO items for open menu handling
-
-
-PDE / Export
-
-_ make possible to embed java for all platforms
-_ straightforward to download from adoptium
-_ export application ubuntu -> windows not working (2.2.1)
-_ https://github.com/processing/processing/issues/2698
-_ might be something with libraries (native or otherwise)
-_ "error during export" message, but no error message contents come through
-_ e.g. https://github.com/processing/processing/issues/4792
-
-
-PDE / Libraries
-
-_ alternate handling of duplicate library conflicts
-_ https://github.com/processing/processing/pull/5126
-_ Add a means to specify packages to import in library.properties
-_ https://github.com/processing/processing/issues/2134
-
-
-PDE / Examples
-
-_ examples handling is less than ideal
-_ examples not mentioned in warning dialog when installing
-_ doesn't show in examples window for p5jsMode
-_ the extra "Contributed Examples" subfolder is awkward
-_ perhaps more important, examples need to specify their Mode
-_ not ideal for Android since there's some crossover, but ok for Example sets
-_ otherwise impossible to know how to populate the Examples window
-_ several "Could not find a matching .properties file" with clocks pdex
-_ examples window is per-Mode, but that doesn't seem helpful
-_ just like sketchbook, you can open one from the other
-_ or maybe just contribs show everywhere? hrm
-_ make sure pdex/pdez files working, also on Windows
-_ contrib examples are just too convoluted to double-click
-_ folders inside folders, bleh
-_ what Mode are they for?
-_ pdez links for contribs, not just the .zip
-_ fix the code so that the contribs manager will handle it
-_ though that's bad for earlier contribs, hrm
-_ document pdez and pdex files so that folks can use them
-_ load examples from pdez files
-_ 250 example (folders), would cut ~8-900 files to just those 250
-_ https://github.com/processing/processing/issues/182
-_ examples window sketches should load in proper environment
-_ test for what happens:
-_ if Java Mode is in front, and user double-clicks another Mode's entry
-_ write build.xml file to automatically update the examples
-_ when adding a new library, its examples aren't added to the list until restart
-
-
-PDE / Manager (4.x notes)
-
-_ Update All with several entries is really locking things up
-_ not clear if it's work being done on the EDT
-_ or that all the threads are running immediately (rather than sequentially)
-_ probably need to move these into an Executor
-_ rip out JProgressBar from StatusPanel/StatusDetail
-X show progress in the list instead
-_ also make possible to start install by clicking the list
-_ if contribution listing is still downloading, need to indicate
-_ especially when no previous contribs.txt is in the prefs folder
-/ if no internet available, install buttons disabled, but not clear why broken
-X update button no longer disabled
-_ but still need to indicate internet unavailable on install errors
-_ currently no indication that contrib download failed
-_ so the 'try again' won't show up; everything looks fine
-_ (was this for the contrib listing? or an actual contrib?)
-_ also if update check disabled, user isn't notified that contribs unavailable
-/ Base.setUpdatesAvailable() is called from half a dozen places!?
-X this is now tallyUpdatesAvailable() a
-_ how to handle contrib manager download/retry/etc and showing progress
-_ entries in the list de-select on install or all the excessive contrib changes
-_ (i.e. note how hitting 'Install' actually deselects the entry in the list, ugh)
-_ this means we can never clear the status panel
-_ need to fix the excessive data model and contribChanged() calls first
-_ holy s*t ContributionTableModel is using all of the contribs
-_ after failed update of Mode, the button is no longer available
-_ have to click something else, then click back on the Mode line again
-_ when starting in p5jsMode, contrib manager shows no green checks for libs
-_ tricky because those aren't gonna show up in 'Add Library'
-_ which is another case for a separate 'contrib manager' thing
-_ maybe that's the update button? when no updates, it's still a button?
-_ after opening Editor window, Processing freezes until contribs are loaded
-_ when opening manager, animation runs briefly then freezes
-_ DetailPanel setContribution() being called 4x for each contrib on startup
-_ during install of contrib, progress is halting during the install
-_ probably too much happening on the EDT that should not be
-_ StatusPanel seems to be recreated entirely
-_ StatusPanel being reset twice on each click
-_ is checking for previous, but apparently that's not working
-_ AvailableContribution.install() needs status handler
-_ can either be the StatusPanel *or* EditorStatus *or* console (during startup)
-_ needs to be EditorStatus when double-clicking a .pdex file
-_ this is also why Base.handleOpen() does statusError() calls during pdex load
-_ add indicator for the stats of libraries
-_ https://download.processing.org/stats
-_ add rank for libraries/modes/tools (use unicode chars?)
-_ probably not sort by default to avoid confusion
-_ lots of rewriting to use SwingWorker
-_ https://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
-_ obvious places where this needs to happen, but the code is working for now
-_ needs a few hours work to untangle all of it, but worth the regressions?
-_ get rid of IgnorableException
-_ contrib/mode/lib/example List objects in Base
-_ which of these should be Set objects?
-_ JProgressBar in StatusPanel is shared by all installing contribs
-_ which could make for weird behavior if installs before something has finished
-_ work to prevent multiple from colliding
-_ (i.e. get rid of ContribProgress class)
-X disable hashCode() implementation in Contribution
-X was getting in the way of comparisons
-_ but need to compare the entries differently so there aren't dupes
-_ i.e. it was doing a name comparison, so need to swap by name
-_ after library/tool changes, rebuild Help > Library/Tool Reference submenus
-_ could not write to temporary directory (virus checker problems)
-_ https://github.com/processing/processing/issues/4757
-
-
-PDE / Manager (3.x notes)
-
-_ “could not move the contribution to the backup folder” message while updating
-_ problem is that any sketch that uses a library, the lib is stuck as "in use"
-_ https://github.com/processing/processing/issues/4973
-_ failed Mode updates leaving around tmp folders (that appear to be legit Modes)
-_ https://github.com/processing/processing/issues/5424
-_ examples window not updating on install
-_ open examples window
-_ mode > add mode > libraries > install video
-_ did not update the examples window, had to restart pde
-_ was able to save over the video capture examples b/c they were a library
-_ lib examples not properly marked as read-only
-_ "Could not find a examples in the downloaded file" is a poorly worded message
-_ 'version' should be x.y or x.y.z, not some extra long string
-_ enforce this by disallowing spaces? on the import script?
-_ Progress bar height on macOS is too thin
-_ https://github.com/processing/processing/issues/4734
-_ proper error handling when downloading contribs listing
-_ https://github.com/processing/processing/issues/4732
-_ update CM entries when sketchbook location changes
-_ https://github.com/processing/processing/issues/3927
-_ ugly white gap at the top of scroll bar
-_ the table header doesn't extend far enough
-_ scrolling "past" top/bottom causes the screen to jiggle (OS X and Trackpad)
-_ looks like ContributionListing.getScrollableUnitIncrement() returns early
-_ Examples window closes and re-opens during library install/remove
-_ https://github.com/processing/processing/issues/3304
-_ several TODO items listed in ContributionPanel
-_ ability to cancel a download/install
-_ why wasn't Library moved to LibraryContribution?
-_ or that LibraryContribution needs to be a wrapper around it?
-_ classpath conflicts..
-_ getPackageList.. from Library... maybe others?
-_ really need to make sure that a weird core.jar isn't being imported
-_ coffeescript was doing this and breaking the pde
-_ contrib library examples are not read-only
-_ another point for doing .zip files to prevent overwriting
-_ add BookContribution?
-_ will offer to open the contrib manager even though it's already open
-_ though this was looking at libraries, and there may have been modes
-_ is there an "all" view for the mgr that shows libs, modes, etc?
-_ update button only showing up when item is selected feels awkward
-_ "update all" would be useful
-_ "Update 4 items" as a button name
-_ new libraries not picked up when changing sketchbook location
-_ make sure contrib manager can run w/o a network connection
-_ or if a bad document comes through, it can recover
-
-
-
-PDE / Preferences
-
-_ need to do the Mode prefs separately
-_ since we can't have per-Mode constants (the pref names) in PreferencesFrame
-_ Editor.applyFrame() may not have a valid 'editor' object to work with
-_ if windows closed, and prefs altered, NPE thrown
-_ make sure editor isn't trying to apply prefs when no editor is open
-_ (on mac os x, due to the change for no windows open)
-_ clear up prefs so that multiple editors don't trash each other's prefs
-_ when are prefs saved? could instead save whenever changes are made
-_ and then if the file gets modified, it'll put up an error message
-_ also, this may be part of why other sketches aren't reloading properly
-_ simple prefs implementation to set key/value pairs using a JTable
-_ https://github.com/processing/processing/issues/5425
-_ prefs window doesn't swap ok/cancel properly for mac vs. windows/linux
-_ don't bother having a "cancel" for the prefs window
-_ make prefs dialog modal?
-
-
-PDE / Runner
-
-_ if RuntimeException thrown, needs to check if it's a wrapped exception
-_ for instance, if there's a crash inside makeGraphics()
-_ this inside the handling that comes from the JVM, which makes it tricky
-_ draw mode apps do not shut off the run button when finished
-_ need to talk to VM and read when 'finished' var is set
-_ does closing the window call stop()?
-_ need to make sure hitting stop button and closing window explicitly call
-_ set finished to true, then join() the animation thread
-_ dispose handlers not called when stop button pressed
-_ https://github.com/processing/processing/issues/4445
-_ need to set dock icon title on osx
-_ changing number of screens between run causes things to show up off-screen
-_ so when running, check to make sure that things are out of the area
-
-
-PDE / Debug
-
-_ mouse events (i.e. toggle breakpoint) seem to be firing twice
-_ wonder if this is mousePressed and mouseClicked?
-_ this may also be the cause of the double entries in files
-_ fix background color for selected lines in VariableInspector
-_ https://github.com/processing/processing/issues/3925
-_ deactivate step, continue, stop when not running?
-_ disable the debug toggle menu while running
-_ otherwise could run in one mode, then try to stop in another
-
-
-PDE / Multiple Monitors
-
-_ changing modes brings the PDE back on the second screen
-_ the Find window (also the save windows) also have the same problem
-
-
-PDE / Tweak
-
-_ TweakMode listener mess in JavaTextArea
-_ https://github.com/processing/processing/issues/4605
-
-
-PDE / Sketch & Sketchbook
-
-_ Saving sketch with the same name as a class
-_ https://github.com/processing/processing/pull/4033
-_ fix up the code for sketchbook building
-_ is it time to make the internal representation into a tree object
-_ and then build the GUI versions separately (on the EDT)
-_ Base.checkSketchFolder() is used to identify sketches for the sketchbook frame
-_ but it assumes that it's folder name + default extension as the name for it
-_ that should be moved into the Mode class as a "is this folder a sketch" call
-_ (so that Modes can work differently too)
-_ Mode.rebuildLibraryList() called too many times on startup?
-_ and when sketches saved as well?
-_ makes saving *really* slow with a lot of libraries
-_ New/Rename/Save As is reloading the whole sketchbook, argh
-_ improve start time by populating sketchbook/libraries on threads
-_ https://github.com/processing/processing/issues/2945
-_ Large number of files in sketchbook folder can cause slow startup
-_ and/or errors with launch4j
-_ https://github.com/processing/processing/issues/1190
-_ error that sketch is read-only can't be canceled
-_ hitting cancel (or ESC?) still brings up the save dialog
-_ ArticulatePrint-070103a.pde from ArticulatePrint-070103a loads ok
-_ but when opening the sketch, it leaves out the file
-_ because there's a dash in the name
-_ and instead only loads StemCell.pde
-_ show progress dialog during export and save
-_ hitting ESC on "create this, move file, continue" opened anyway
-
-
-PDE / Commander
-
-_ command line complaints
-_ https://github.com/processing/processing/issues/6129
-_ emacs style errors in commander aren't quite right
-_ https://github.com/processing/processing/issues/2158
-_ better command line support/basic language server support?
-_ make it easier to use with other editors
-
-
-
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-
-
-TOOLS / Movie Maker
-
-_ downloader for ffmpeg instead of including in download
-_ would save ~20-25 MB in the download
-_ should prompt the user before starting the download (not nice to use bandwidth)
-_ need to disable creation of movies until the download has finished
-_ handle failed downloads as well
-_ make sure there are no signing problems on macOS after downloading
-
-
-TOOLS / Ideas
-
-_ eclipse import/export
-_ simple mechanism to export to eclipse
-_ don't worry about subversion stuff, just export with libraries
-_ something clever to import back from eclipse
-_ could keep the .svn files in with the libs and all
-_ then when exporting for eclipse, people can update as necessary
-_ -> dan et al say better to do fixed versions and have it work simply
-_ import sketch from url (takes a zip from archive sketch)
-_ archive sketch direct to bug report
-_ shared code
-_ Integrator / FloatThing / CameraStuff -- Update
-_ to pull code from a local folder
-_ update will update classes from shared in the current folder
-
-
-TOOLS / Auto Format
-
-_ Reas: comments go nasty when auto-formatted
-_ Switch block cases not indented
-_ https://github.com/processing/processing/issues/1042
-_ do a better job of maintaining cursor
-_ only auto-format a particular section of code
-_ set the 'tabs' var based on how many spaces on previous line
-_ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1087227217
-
-
-LIBRARIES / General
-
-_ need to unpack InvocationTargetException in xxxxxxEvent calls
-_ http://processing.org/discourse/yabb_beta/YaBB.cgi?board=VideoCamera;action=display;num=1116850328#3
-_ go through libraries and clean things up
-protected void finalize() throws Throwable {
- try {
- close();
- } catch (Exception e) {
- // do something
- } finally {
- super.finalize();
- // more code can be written here as per need of application
- }
-}
-
-
-LIBRARIES / Net
-
-_ modernize Client/Server code to use synchronized lists
-_ do we let people use the public vars in Server and Client?
-_ are they documented?
-
-
-MODES / Python 2
-
-X add JavaFX handler
-X opening an example throws an NPE
-_ update Export to Application to use the new window
-_ add changes for the eawt mess? (too tricky)
-_ https://github.com/jdf/processing.py/issues/398
-_ submit a PR
-
-
-
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-
-
-DIST
-
-How the environment gets packed up, downloaded, and installed.
-
-
-DIST / General
-
-_ when lib downloads (batik) go dead, fallback to download.processing.org
-_ or for now, tell users how to do it manually
-_ batik and ant have both broken the build when old versions were removed
-_ move processing-java inside the Java Mode?
-_ make a Tool that installs it for all platforms, not just OS X
-_ not really part of the 'build' anymore
-_ line ending issues
-_ doesn't really help on Windows since we use Cygwin
-_ but it would be helpful for people not using it (ant/other LF issues)
-_ https://help.github.com/articles/dealing-with-line-endings
-_ http://stackoverflow.com/questions/170961/whats-the-best-crlf-handling-strategy-with-git
-_ add means to move changes from desktop to Android (and vice-versa)
-_ add bootclasspath for 1.6
-_ would require --install for command line on OS X
-_ and unpacking the JVM earlier in the build process
-_ not sure if it's worth the addl complexity
-_ add additional caveats about incompletion to javadoc
-_ drag and drop
-_ including the number of items added to sketch would be especially nice
-_ implement automatic update
-_ https://github.com/processing/processing/issues/100
-_ need exported application icons
-_ need more comprehensive list of 'known bugs'
-_ need more comprehensive list of 'known suggestions'
-_ write notes about running p5 on another platforms
-_ this was some feedback from running on bsd:
-_ /usr/local/jdk1.3.1/bin/java -cp lib:lib/build:lib/pde.jar:lib/kjc.jar:lib/oro.jar:java/lib/ext/comm.jar PdeBase
-_ need to use the 1.3 vm, and get a fake platform name
-_ otherwise, goes looking for lib/pde_.properties or something
-_ about box
-_ bring up information about gpl, lgpl, and ibmpl
-_ jedit syntax is under mit license
-_ http://www.opensource.org/licenses/mit-license.php
-_ add proper copyright and license information for all included projects
-_ https://github.com/processing/processing/issues/224
-_ write up guidelines for modes
-_ i.e. don't mess with Sketch menu, put it in the mode menu
-_ p5 assets need to be licensed differently from the source
-
-
-DIST / Windows
-
-_ Resolve “Successfully created” and “illegal reflective access” errors from launch4j
-_ https://github.com/processing/processing4/issues/137
-_ windows batch file would be a good idea (debugging is hard)
-_ how to leave the window open when running a script
-_ if files removed by Defender, the launcher may not know
-_ would be good to auto-generate this from the config (avoid double updates)
-_ .\java\bin\java.exe -cp lib/pde.jar;core/library/core.jar;lib/jna.jar;lib/jna-platform.jar;lib/antlr-4.7.2-complete.jar;lib/ant.jar;lib/ant-launcher.jar -Djna.nosys=true -Dsun.java2d.uiScale.enabled=false -Djna.boot.library.path=lib -Djna.nounpack=true -Dsun.java2d.d3d=false -Dsun.java2d.ddoffscreen=false -Dsun.java2d.noddraw=true processing.app.Base
-_ "Required files could not be found" when trying to run from the .zip file
-_ https://github.com/processing/processing/issues/5022
-_ use an installer instead?
-_ does launching p5 from inside the .zip folder cause it to quit immediately?
-_ how can we provide an error message here?
-_ extra warning for Eclipse Adoptium "certain features turned off"
-_ need a better way to handle this/warn users/avoid it altogether
-_ launch4j doesn't work from folders with non-native charsets
-_ anything in CP1252 on an English Windows system is fine
-_ but anything else reports "font sadness" b/c it's using the system JRE
-_ https://github.com/processing/processing/issues/3543
-_ move to javapackager or another option?
-_ http://www.excelsiorjet.com/kb/35/howto-create-a-single-exe-from-your-java-application
-_ Export Application fails on machines w/ non-ASCII chars in user name
-_ at least give a warning about this?
-_ https://github.com/processing/processing/issues/4736
-_ related: https://github.com/processing/processing/issues/3543
-_ windows anti-malware leaves browser stuck at 100%
-_ https://github.com/processing/processing/issues/5893
-_ sign releases on Windows to avoid SmartScreen warnings/errors
-_ https://github.com/processing/processing4/issues/25
-_ https://stackoverflow.com/q/252226
-_ https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html
-_ https://stackoverflow.com/a/66582477
-_ https://www.microsoft.com/security/
-blog/2018/08/16/partnering-with-the-industry-to-minimize-false-positives/
-_ https://shop.certum.eu/open-source-code-signing-code.html
-_ how to handle double-clicked files on windows?
-_ big deal for psk and others
-_ this may already work with SingleInstance stuff
-
-
-DIST / macOS
-
-appbundler
-_ appbundler broken when built on something later than Mojave
-_ https://github.com/processing/processing4/issues/284
-_ https://github.com/google/filament/pull/1959/files
-_ also need separate appbundler versions because Monterey build won't run on x86_64
-_ https://github.com/processing/processing4/issues/364
-_ fix appbundler problems due to rollback
-_ https://github.com/processing/processing/issues/3790
-_ the rollback re-introduces two bugs (serial export and scrolling)
-_ and any other changes later than 16 November 2014:
-_ https://github.com/processing/processing/commits/master/build/macosx/appbundler.jar
-_ https://github.com/processing/processing/commits/master/build/macosx/appbundler/native/main.m
-_ https://github.com/processing/processing/commit/fa27b983e76fdbc5c4c1451a1f0d854c652b1639
-_ https://bitbucket.org/infinitekind/appbundler
-_ update appbundler? https://github.com/TheInfiniteKind/appbundler
-_ might be broken though https://github.com/TheInfiniteKind/appbundler/issues/70
-_ symlink https://github.com/TheInfiniteKind/appbundler/issues/1
-_ startup chatter (from appbundler?)
-_ Processing[25059:13082813] int launch(char *, int, char **) Launchpath
-_ Find a long-term solution for OS X bundler to address signing/symlink issues
-_ https://github.com/processing/processing/issues/2967
-_ don't re-copy JRE into work folder if already exists
-
-other
-_ Opening a sketch from the Desktop folder can result in several macOS access prompts
-_ https://github.com/processing/processing4/issues/523
-_ if a sketch is in the Desktop folder, try triggering macos access dialog once
-_ do it once for the root, then see if it allows the folders inside as well
-_ (opening p5jsMode sketch on Desktop causes a zillion dialog boxes)
-_ https://developer.apple.com/library/archive/documentation/Security/Conceptual/AppSandboxDesignGuide/DesigningYourSandbox/DesigningYourSandbox.html
-_ https://stackoverflow.com/questions/12153504/accessing-the-desktop-in-a-sandboxed-app
-_ reliable getLibraryFolder() and getDocumentsFolder() methods in MacPlatform
-_ https://github.com/processing/processing4/issues/9
-_ disable "notifications" prompt on startup for macOS
-_ https://github.com/processing/processing4/issues/234
-_ we're not posting any, can we suppress the "allow notifications" message?
-_ https://developer.apple.com/documentation/usernotifications
-_ https://developer.apple.com/documentation/usernotifications/asking_permission_to_use_notifications
-_ Java bug prevents us from setting the dock name of a sketch run from the PDE
-_ https://github.com/processing/processing/issues/5045
-_ client properties
-_ https://developer.apple.com/library/mac/technotes/tn2007/tn2196.html
-_ built-in images: http://nadeausoftware.com/articles/2008/12/mac_java_tip_how_access_mac_specific_nsimage_icons
-_ Update QuickLook plugin for Processing 3
-_ https://github.com/processing/processing/issues/3261
-_ more OS X-specific hackery for improved appearance
-_ https://developer.apple.com/library/mac/technotes/tn2007/tn2196.html
-_ possible better option for doing retina?
-_ g.getFontRenderContext().getTransform().equals(AffineTransform.getScaleInstance(2.0, 2.0))
-_ LWJGL forum discussion
-_ http://lwjgl.org/forum/index.php/topic,4711.225.html
-_ change cmd line for OS X to use symlink?
-_ otherwise updates are going to require reinstall..
-_ or that it's gonna need to parse and say "update command line?"
-_ we're breaking some mac human interface guidelines
-_ should be using a menu factory to create menubar for all sub-windows
-_ http://developer.apple.com/technotes/tn/tn2042.html
-_ and the general warning dialogs are just ass ugly
-_ (i.e. we really need those replacements for JOptionPane)
-_ Exiting a sketch with Command-Q or File > Quit doesn't call stop() on OS X
-_ https://github.com/processing/processing/issues/186
-
-
-DIST / Linux
-
-_ implement more document icons on Linux
-_ Need better method than reflection for setting application name
-_ https://github.com/processing/processing4/issues/349
-_ update install.sh for .pdex and .pdez file associations
-_ https://github.com/processing/processing4/issues/239
-_ update installation guide for Linux
-_ https://github.com/processing/processing-docs/issues/645
-
-
-
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-
-
-DOC / Misc
-
-_ thread safety with color() et al
-_ https://github.com/processing/processing4/issues/431#issuecomment-1057979636
-_ thread safety for drawing functions in general
-_ words on how key/mouse events are queued to the end of draw so they're safe
-_ make reference build process part of dist
-_ https://github.com/processing/processing-docs/issues/85
-_ separate ant target, but only require them for dist
-_ as separate targets, folks can build explicitly if they'd like
-_ processing-docs/java_generate/ReferenceGenerator/processingrefBuild.sh
-_ find in reference for copy() (on image) tries to open PVector.copy()
-_ might need disambiguation pages?
-_ if a reference page is missing, throws a bunch of exceptions
-_ i.e. PVector.copy() not in the reference
-_ yahoo search example is out of date (included in the examples? the book?)
-_ stop() to shut down a sketch (but not quit/close window)
-_ actually pause/resume
-_ MIN_FLOAT, MAX_FLOAT, also the difference from the Java functions
-_ also MIN_INT and MAX_INT, even though those are more similar
-_ update the reference to cover parseXxxx() stuff
-_ also add notes about parseInt/Float(blah, otherwise)
-_ also parseInt and parseFloat, how they can return another number or NaN
-_ should the default be NaN or 0?
-_ get/set are faster way draw screen space images, but no tint, no translations
-_ make sure the docs include "beginShape() cannot be nested"
-_ also add error messages to the renderers
-_ also note that ellipse() et al use beginShape()
-_ and that java2d should complain if people try it
-_ method to go from function name to the included examples where used?
-_ encourage use of set() instead of point() in the drawing api
-_ https://forum.processing.org/beta/num_1114204116.html
-_ noLoop() isn't the same as "finished", though it's sometimes used that way
-_ to finish, use exit() (though that will make the window close)
-_ add this to ref once halt() is finished
-_ errors in pdf/index.html examples
-_ probably remove these, move the useful ones to the examples folder
-_ that way people will read the reference
-_ explanation of how we see libraries in the PDE
-_ We're making an assumption that the idea of a "library" refers to a block of Java-based code. The reasoning is that from within the PDE, we anticipate that it will be Java-compatible versions of other languages (such as Jython, JRuby, or Scala) as opposed to more generic languages. In the future we could open this up, but we'd rather not complicate things for the moment.
-_ add to troubleshooting
-_ problem with big floats: https://forum.processing.org/alpha/board_Syntax_action_display_num_1061302380.html
-_ problem with small floats: https://forum.processing.org/beta/num_1115500448.html
-_ console stored in prefs location
-_ console may be useful for debugging
-
-
-DOC / Text
-
-_ how to use textMode(SHAPE) with opengl
-_ things will be extremely slow (fix later)
-_ things will also be very ugly on-screen
-_ text being nicer in java2d
-_ use createFont() to load the font or use a font from your machine
-_ note that createFont() is no good for applets/export to web
-_ textMode(SCREEN) for P2D and P3D for nice fast text in screen space
-_ currently slow in JAVA2D and OPENGL, but this will improve
-_ what is the vlw font file format?
-_ shapes from 3D type
-_ the way to do it (will improve later) is to use some undocumented features
-_ 1) you have to use the OPENGL renderer
-_ 2) use textMode(SHAPE);
-_ 3) use createFont() (which you already are)
-_ this will convert all the shape data from the fonts for writing.
-_ it will be *extremely* slow, which is part of why it's not documented yet.
-_ but it will work with beginRaw().
-_ improve documentation of the pdf stuff
-_ be clearer about the font setup stuff
-_ fonts by default not working that well?
-
-
-DOC / Other
-
-_ why strong typing? (link also to language thing on main page)
-_ we cannot commit to any sort of timeframe on releases
-_ under the hood - basic
-_ it's all java
-_ don't use awt
-_ most things are imported by default
-_ under the hood - complex
-_ how to get started with coding
-_ everything subclasses PApplet
-_ if you need a particular name, add it with "extends PApplet"
-_ all code from tabs is joined to one sketch
-_ if you want it separate, then you have to make .java files
-_ in doing so, you'll lose access to 'g'
-_ add main() to your app to make it run on its own
-_ preproc stuff.. have to make setup() into public void setup()
-_ (same for key events and all that)
-_ is there a way to do xxx?
-_ advanced users who are outgrowing the basic reference:
-_ be sure to check the "complete" reference
-_ change bugs.html to issues.html
-_ and add a redirect in httpd.conf
-_ need to document how subclass of pgraphics works
-_ what are the necessary bits that need to be subclassed
-_ simple handling of colors, what fields are available
-_ how to get the matrices
-_ simple endshape handler
-_ also mention in keyPressed docs that ASCII key codes will not be coded
-_ it's just how java is (maybe this is already in there?)
-_ add note about adding libraries to the sketchbook to the reference
-_ add note in environment reference about how to add something to the sketch
-_ (code, .java files, etc)
-_ make sure that psound has been removed (from docs, ref, mentions)
-
-
-DOC / Examples
-
-_ add to key reference a pointer to an example that tracks all keys
-_ write simple example that tracks all keys
-_ making things fast with pixel operations
-_ write a threading example
-_ show an example of how to handle callback into the app
-X or handle this some more intelligent way, super.stop() is needed.
-X registerDispose() does the trick
-_ https://forum.processing.org/alpha/board_Syntax_action_display_num_1083574943.html
-_ https://forum.processing.org/alpha/board_Syntax_action_display_num_1067383998.html
-_ scripts: how to make a long setup() sleep so that things don't lock way up
-_ write an example that uses HashMap (or Hashtable)
-_ write an example that uses ArrayList properly
-_ get xml library example in there
-_ simple method for having a clickable region or sprite with rollover
-_ POST to web url example
-_ particularly for uploading image data
-_ along with php script to handle receive
-_ this is in hacks, but
-_ (broken link) http://processing.org/discourse/yabb_beta/YaBB.cgi?board=VideoCamera;action=display;num=1117194066#7
-_ write a timer class/example library
-_ how do i add gui to a sketch?
-_ don't use awt components
-_ how to use swing and embed components inside p5
-_ explain how to integrate code with swing
-_ use a separate environment, call init(), use noLoop(), redraw()
-_ use JPopupMenu.setDefaultLightWeightPopupEnabled(false); for zorder
-_ https://forum.processing.org/beta/num_1147670059.html
-_ eclipse
-_ document how to properly integrate with eclipse
-_ add runtime args to opengl library so that it sets path properly
-_ add explanation for using subclipse to get p5
-_ make a src folder, data folder location
-_ export to eclipse
-_ how to do this with subclipse instructions?
-
-
-
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-
-
-FUTURE
-
-Notes for some indefinite later release...
-
-_ force indentation - implement an option for beginners especially
-_ indents and loops
-_ or make the area light up gray as it's being worked on
-_ language server refactoring
-_ https://github.com/processing/processing4/issues/117
-_ https://theia-ide.org/
-_ https://medium.com/ballerina-techblog/implementing-a-language-server-how-hard-can-it-be-part-2-fa65a741aa23
+ *
+ * Even though a PGraphics is technically a PImage, it is not possible to
+ * rescale the image data found in a PGraphics. (It's simply not possible
+ * to do this consistently across renderers: technically infeasible with
+ * P3D, or what would it even do with PDF?) If you want to resize PGraphics
+ * content, first get a copy of its image data using the get()
+ * method, and call resize() on the PImage that is returned.
+ *
+ * @webref pimage:method
+ * @webBrief Resize the image to a new width and height
+ * @usage web_application
+ * @param w the resized image width
+ * @param h the resized image height
+ * @see PImage#get(int, int, int, int)
+ */
+ public void resize(int w, int h) { // ignore
+ resize(w, h, PConstants.BILINEAR);
}
@@ -840,6 +866,14 @@ public void mask(int[] maskArray) { // ignore
*/
public void mask(PImage img) {
img.loadPixels();
+ if (this.pixelWidth != img.pixelWidth || this.pixelHeight != img.pixelHeight) {
+ if (this.pixelDensity != img.pixelDensity) {
+ throw new IllegalArgumentException("mask() requires the mask image to have the same pixel size after adjusting for pixelDensity.");
+ }
+ else if (this.width != img.width || this.height != img.height) {
+ throw new IllegalArgumentException("mask() requires the mask image to have the same width and height.");
+ }
+ }
mask(img.pixels);
}
diff --git a/core/src/processing/core/PVector.java b/core/src/processing/core/PVector.java
index a2bdd4718c..326ba7e4e7 100644
--- a/core/src/processing/core/PVector.java
+++ b/core/src/processing/core/PVector.java
@@ -848,13 +848,15 @@ public PVector setMag(PVector target, float len) {
/**
*
- * Calculate the angle of rotation for this vector (only 2D vectors)
- *
+ * Calculate the vector's direction, that is, the angle this vector makes
+ * with the positive X axis (only 2D vectors)
+ *
*
* @webref pvector:method
* @usage web_application
- * @return the angle of rotation
+ * @return the direction of the vector (angle with positive X axis)
* @webBrief Calculate the angle of rotation for this vector
+ * @see PVector#setHeading()
*/
public float heading() {
float angle = (float) Math.atan2(y, x);
@@ -867,7 +869,18 @@ public float heading2D() {
return heading();
}
-
+ /**
+ *
+ * Sets the angle this vector makes with the positive X axis (only 2D vectors)
+ * This is equivalent to changing the vector's direction to the given value.
+ *
+ * @webref pvector:method
+ * @usage web_application
+ * @param angle the direction of the resultant vector
+ * @return this vector, rotated to have the given direction
+ * @webBrief Set the direction for this vector
+ * @see PVector#heading()
+ */
public PVector setHeading(float angle) {
float m = mag();
x = (float) (m * Math.cos(angle));
diff --git a/core/src/processing/opengl/PSurfaceJOGL.java b/core/src/processing/opengl/PSurfaceJOGL.java
index 4979b6a757..064f9a8dd0 100644
--- a/core/src/processing/opengl/PSurfaceJOGL.java
+++ b/core/src/processing/opengl/PSurfaceJOGL.java
@@ -1069,6 +1069,16 @@ protected void nativeMouseEvent(com.jogamp.newt.event.MouseEvent nativeEvent,
sketch.postEvent(me);
}
+ private short normalizeKeyCode(short newtKeyCode) {
+ switch (newtKeyCode) {
+ case com.jogamp.newt.event.KeyEvent.VK_PAGE_UP:
+ return java.awt.event.KeyEvent.VK_PAGE_UP;
+ case com.jogamp.newt.event.KeyEvent.VK_SHIFT:
+ return java.awt.event.KeyEvent.VK_SHIFT;
+ default:
+ return newtKeyCode;
+ }
+ }
protected void nativeKeyEvent(com.jogamp.newt.event.KeyEvent nativeEvent,
int peAction) {
@@ -1080,7 +1090,8 @@ protected void nativeKeyEvent(com.jogamp.newt.event.KeyEvent nativeEvent,
// InputEvent.META_MASK |
// InputEvent.ALT_MASK);
- short code = nativeEvent.getKeyCode();
+ short code = normalizeKeyCode(nativeEvent.getKeyCode());
+
char keyChar;
int keyCode;
if (isPCodedKey(code, nativeEvent.isPrintableKey())) {
diff --git a/core/test/processing/core/PAppletKeyEventTest.java b/core/test/processing/core/PAppletKeyEventTest.java
index 19770ebc3d..e9c440a9c9 100644
--- a/core/test/processing/core/PAppletKeyEventTest.java
+++ b/core/test/processing/core/PAppletKeyEventTest.java
@@ -5,6 +5,10 @@
import org.junit.Test;
import processing.event.KeyEvent;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
public class PAppletKeyEventTest {
private static final int SHIFT_MASK = 1;
@@ -137,4 +141,37 @@ public void testKeyFocusLost() {
Assert.assertFalse("keyPressed should be false after focus lost", applet.keyPressed);
Assert.assertEquals("pressedKeys should be empty after focus lost", true, applet.pressedKeys.isEmpty());
}
+
+ @Test
+ public void testShiftAndPageUpKeyCodesAreDifferent() {
+ final int VK_SHIFT = java.awt.event.KeyEvent.VK_SHIFT;
+ final int VK_PAGE_UP = java.awt.event.KeyEvent.VK_PAGE_UP;
+
+ long shiftHash = ((long)VK_SHIFT << Character.SIZE);
+ long pageUpHash = ((long)VK_PAGE_UP << Character.SIZE);
+
+ KeyEvent shiftPressEvent = new KeyEvent(null, 0L, KeyEvent.PRESS, SHIFT_MASK, '\0', VK_SHIFT, false);
+ applet.handleKeyEvent(shiftPressEvent);
+
+ assertTrue("keyPressed must be true", applet.keyPressed);
+ assertTrue("SHIFT should be in pressedKeys", applet.pressedKeys.contains(shiftHash));
+
+ KeyEvent pageUpPressEvent = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, '\0', VK_PAGE_UP, false);
+ applet.handleKeyEvent(pageUpPressEvent);
+
+ assertEquals("pressedKeys must contain exactly two keys", 2, applet.pressedKeys.size());
+ assertTrue("PAGE_UP should be in pressedKeys", applet.pressedKeys.contains(pageUpHash));
+
+ KeyEvent shiftRelease = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, '\0', VK_SHIFT, false);
+ applet.handleKeyEvent(shiftRelease);
+ assertFalse("SHIFT should have been removed", applet.pressedKeys.contains(shiftHash));
+ assertTrue ("PAGE_UP should still be down", applet.pressedKeys.contains(pageUpHash));
+ assertTrue ("keyPressed must still be true", applet.keyPressed);
+ assertEquals("pressedKeys must now have one key", 1, applet.pressedKeys.size());
+
+ KeyEvent pageUpRelease = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, '\0', VK_PAGE_UP, false);
+ applet.handleKeyEvent(pageUpRelease);
+ assertTrue ("pressedKeys must now be empty", applet.pressedKeys.isEmpty());
+ assertFalse("keyPressed must be false", applet.keyPressed);
+ }
}
diff --git a/core/todo.txt b/core/todo.txt
deleted file mode 100644
index 5c888546e6..0000000000
--- a/core/todo.txt
+++ /dev/null
@@ -1,790 +0,0 @@
-1294 (4.3.1)
-X difference in text position with processing 4.3, JAVA2D vs P2D
-X https://github.com/processing/processing4/issues/768
-X add iterators to JSONArray
-
-
-contribs
-X Movie throwing NullPointerException with usedBuffers with P2D/P3D from @Clarvel
-X https://github.com/processing/processing4/issues/760
-X https://github.com/processing/processing4/pull/759
-X Fix beginContour() when used with createShape() from @hx2A
-X https://github.com/processing/processing4/issues/643
-X https://github.com/processing/processing4/pull/776
-X Fix `PShape.getSpecular()`, `getEmissive()`, and `getShininess()` from @hx2A
-X https://github.com/processing/processing4/issues/781
-X https://github.com/processing/processing4/pull/782
-_ Fix hash of keyEvent being added to pressedKeys
-_ https://github.com/processing/processing4/issues/779
-_ https://github.com/processing/processing4/pull/786
-
-
-_ JNA version of getting resolution
-_ https://stackoverflow.com/a/32588375
-_ note about running outside the PDE if OpenGL shows up 2x too small
-_ System.setProperty("sun.java2d.uiScale.enabled", "false");
-_ from https://github.com/processing/processing4/issues/763
-
-_ args passed to main() aren't working
-_ (there was a bug report for this already?)
-_ were the run() and runSketch() methods merged w/o realizing loss of args?
-_ runSketch() probably needs to pass applet args and sketch args separately
-_ though this can't be done w/o breaking Python
-
-_ freeze on resize with Windows (even the default renderer)
-_ https://github.com/processing/processing4/issues/507
-
-_ need option for alphabetical ordering for json serialization
-
-_ concurrent StringDict et al
-_ why no concurrent TreemMap? https://stackoverflow.com/a/17656453
-_ https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentSkipListMap.html
-
-_ how to handle fallback fonts
-_ could implement this for the default, but also, SansSerif sucks
-_ https://stackoverflow.com/a/9482676
-_ in addition, it would need to be implemented for textWidth()
-
-_ update P2D reference to make clear about drawing order and quality
-_ https://github.com/processing/processing/issues/5880
-
-
-load/save image
-_ https://github.com/processing/processing4/wiki/Exorcising-AWT
-_ moving loadImage() into Surface
-_ https://github.com/processing/processing4/issues/56
-_ other PImage save implementations
-_ https://github.com/processing/processing4/pull/97
-_ https://github.com/processing/processing4/pull/98
-
-
-api changes
-_ add callbacks to requestImage() and others
-_ these would be a lot easier with newer Java syntax
-_ (and also familiar to folks who have spent time with JS)
-_ new FloatList(float...)
-
-
-api todo
-_ Surface not available inside handleSettings()
-_ therefore impossible to get displays, displayWidth/Height, and pixelDensity
-_ (in a non-AWT way on a system that cannot use AWT)
-_ does surface have to be passed on the command line?
-_ can we just require that size() goes first
-_ and have it set surface *type* w/o actually setting up the size info yet
-_ or even that it inits a surface-specific class for getting that info
-_ implement selectInput/Output/Folder methods in PSurfaceJOGL
-_ implement openLink() in PSurfaceJOGL
-
-
-before final release
-_ Warn users or provide auto-fix when `frame` is used in a sketch
-_ https://github.com/processing/processing4/issues/59
-_ ThinkDifferent unavailable with --disable-awt, needs workaround
-_ https://github.com/processing/processing4/issues/52
-_ Remove frame from PApplet
-_ https://github.com/processing/processing4/issues/54
-_ Remove all usage of AWT from PApplet
-X https://github.com/processing/processing4/issues/55
-_ https://github.com/codeanticode/processing-lwjgl/wiki#making-awt-optional-in-papplet
-_ https://github.com/processing/processing4/issues/57
-_ move loadImage() into surface
-_ move AWT code out of PImage, and into its own PImageJava2D class
-_ https://github.com/processing/processing4/issues/56
-
-
-high-ish
-_ Sort out display() being sometimes called from the EDT inside OpenGL
-_ https://github.com/processing/processing4/issues/385
-_ add separator option to loadTable()
-_ https://github.com/processing/processing/issues/5068
-_ make setting the window icon automatic, based on files in local dirs
-X https://github.com/processing/processing/issues/5123
-X https://github.com/processing/processing/pull/5202
-_ need to make this work behind the scenes instead
-_ create icon.png or have an 'icons' folder with multiple sizes
-_ don't override the window icon w/ p5 logo if already set
-_ requestSize() and xxxxTitle() (to diminish use of 'surface')
-_ mostly held up by cross-renderer inconsistency with these
-_ textAlign(CENTER) and pixelDensity(2) aligning incorrectly with Java2D
-_ https://github.com/processing/processing/issues/4020
-_ calling textSize() fixes it, only hpapens with the default font
-_ incorrect textWidth() with pixelDensity(2) when textFont() not used
-_ https://github.com/processing/processing/issues/5768
-_ use exit event to set mouseY to 0 on macOS
-_ https://github.com/processing/processing/pull/5796/files
-_ y coords on macOS seem to be one pixel off
-
-
-retina/hi-dpi/sizing
-_ Sketches on Linux don't take UI scaling into account
-_ gohai mentioned "xrdb -query" or "xdpyinfo" might work
-_ https://github.com/processing/processing4/issues/407
-_ formerly at
-_ https://github.com/processing/processing/issues/4895
-_ native code for checking the system dpi
-_ https://github.com/processing/processing/issues/5758
-_ should fullScreen() set width and height to displayWidth/Height
-_ or is that being set/unset used for any state info?
-_ present window draws in stages (OS X)
-
-
-possible additions for 4.x?
-_ Add support for floating point textures to OpenGL (using a hint?)
-_ https://github.com/processing/processing/issues/3321
-
-
-misc
-_ should we drop the 'default' prefix from the ex handler so it's not static?
-_ http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html
-_ Switch to getModifiersEx() and fix the AWT modifiers used in PSurfaceAWT
-_ this is an easy fix, but need to check impact elsewhere
-_ does anything else rely on these modifiers?
-_ try using Frame instead of JFrame
-_ default sketch location using insets incorrectly
-_ use the BufferStrategy directly from the Frame object?
-_ might fix performance issues w/ Presentation mode
-_ sketch placement (window insets) not properly set on Linux
-_ https://github.com/processing/processing/issues/2063
-_ note in docs that full screen and present are now different
-_ on Export to Application, this has an impact
-_ SVG only exports last frame
-_ possibly because Java2D is disposing the Graphics2D in between?
-_ https://github.com/processing/processing/issues/3753
-_ when calling exit(), if sketch has halted w/ exception, force the quit
-_ otherwise have to double-quit with cmd-q on OS X
-_ simple test case: using size() inside setup() from Eclipse
-
-
-data
-_ implement strip(), lstrip(), rstrip?
-_ handling of 'missing' values in Table needs serious work
-_ if missing int is zero, can't just remove those values from saving a table
-_ but for NaN values, it's a necessity
-_ get() methods in List/Dict shouldn't allow you to get bad values
-_ but set() methods can automatically resize the arrays
-_ though that means insert() should allow you to insert past the end
-_ and should add/div/mult let you work on non-existent elements?
-_ addRow() is not efficient, probably need to do the doubling
-o or have a setIncrement() function?
-_ it would default to 1 on tables loaded from a file
-_ and default to doubling when created with "new Table"
-_ row count and array size are combined.. need to break apart
-_ match and iterators
-_ add match version that returns table that's only a pointer to original
-_ save the constructor for the version that actually copies data
-_ the table pointer version will be speedy and allow chaining
-
-
-additions
-_ async calls for selectInput/Output/Folder
-_ now that we have saner syntax with new preproc, we can do Runnable
-_ async requests
-_ https://github.com/processing/processing/issues/3165
-_ Request r = createRequest("http://p5.org/feed/13134.jpg");
-_ Request r = createRequest("http://p5.org/feed/13134.jpg", "callbackName");
-_ Request r = createRequest("http://p5.org/feed/13134, "callbackName", "jpg");
-_ implement callbacks for images and other loadXxxx() functions
-_ remove requestImage() and friends
-_ callback for requestImage()
-_ https://github.com/processing/processing/issues/680
-_ remove/update requestImage example
-_ check into promise api
-_ http://www.html5rocks.com/en/tutorials/es6/promises/
-_ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
-_ how to handle the touch api
-_ can't do MouseEvent et al with Android
-_ http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html
-_ http://www.html5rocks.com/en/mobile/touch.html
-_ decision: go with what looks like javascript/ios
-_ touchEvent(), gestureEvent()?
-_ touch event doesn't make sense for mouseMove on desktop, hover on Android
-_ probably go with pointer: more universal for touch/mouse
-
-
-discussion/decisions
-_ add screen(PVector), model(PVector) and world(PVector)?
-_ maybe screenVec()? or screenXYZ()?
-_ drawThread()
-_ we could add a method that can safely do drawing calls, but that won't be
-_ any faster or make use of more processors the way that `thread()` does.
-_ though it might be useful for tacking the result of thread() on at the end of draw()
-_ need reference update for createShape()
-_ though we need to verify the behavior here
-_ createShape(RECT) uses x/y/w/h, and optionally adds a mode param
-_ and optionally the corner radii
-_ createShape(ELLIPSE) is x/y/w/h, and optionally adds a mode param
-_ fix the registered methods doc, stop/dispose working
-_ Casey needs to nudge people about libraries, so we need to fix this
-_ pause(), resume(), start(), stop() clarifications
-_ dispose/stop not great w/ libraries yet
-_ move away from loadPixels
-_ add options for image.save() (or saveImage?)
-_ add quality=[0,1] for jpeg images
-_ add dpi=[0,n] for for png images
-_ implemented internally, just needs the wrapper for the args
-_ should map() actually constrain to the low and high values?
-_ or have an alternate version that does that? (or boolean param at end?)
-_ decide whether to keep:
-_ public float textWidth(char[] chars, int start, int length)
-_ add version of math functions that use doubles?
-_ what other methods should work with doubles? all math functions?
-_ seems like internal (mostly static) things, but not graphics api
-_ new PGraphics(... OutputStream)
-_ https://github.com/processing/processing/issues/285
-_ already added for PDF, just need to work out the API
-_ if save() returns boolean, does saveFrame()?
-_ also need to copy this over to android
-_ "translate, or this variation of it" when using text(s, x, y, z) accidentally
-_ change to be the text command
-_ size() and resize() and whatever?
-_ should be setSize(), but that's odd for image files
-_ -> resize() is fine with PImage and PGraphics...
-_ we may be inheriting the resize() from Java -> make it final?
-_ add resize().. make it call setSize().
-_ also needs to do a redraw if noLoop() has been called
-_ the registered method for size() also needs to be called
-_ get() or copy()? for vectors, image, etc.
-_ toArray(), toArray(float[]), toVectorArray(), toVectorArray(PVector[])
-_ toColorArray(), toColorArray(float[])...
-_ make sure that loadXxxx() methods are used after init()
-_ nasty errors when loadImage/Font/createFont/etc used outside
-_ decision: add error messages where possible
-_ idea: set frameCount to -1 when setup not run yet?
-_ then set frameCount to 0 when setup() starts?
-_ need to clean up the hints in the reference/source
-_ exactly how should pixel filling work with single pixel strokes?
-_ https://download.processing.org/bugzilla/1025.html (no gcode)
-_ y2 position of rectangles not same as y2 position of lines
-_ happens when the rectangle is flipped on the x or y axis
-_ probably a hack that draws the "last" point differently
-_ add inputPath() and outputPath() -> sketch folder or sd card
-_ or should this just be a change to sketchPath() on Android?
-_ also because input/output won't be different (since not data folder)
-_ or should this be storagePath() etc?
-_ PUtil -> move match(), lots of other non-gui functions into own class
-_ and merge it in statically via the methods code
-_ check for what else inside PApplet should be static
-_ maybe catch RuntimeExceptions in the called sub-functions
-_ that way more stuff can be static w/o losing useful error handling
-_ (emitting errors when closest to source.. i.e. w/ the filename)
-_ change how beginRecord() works.. passing around PApplet vs PGraphics is gross
-_ have to pass PApplet just to make the rendering work to both renderers
-_ should instead be a renderer that splits things out
-_ wrap exceptions with die() and warn() methods
-_ this way, people can make use of exceptions if they would rather
-_ or shut them off if they don't want to
-_ also need to explain exception handling in general
-_ https://github.com/processing/processing/issues/222
-_ bring PConstants back in line w/ previous 1.5 (can't renumber)
-_ finish adding loadStrings(BufferedReader)
-_ decide if we want to keep this (and/or others?)
-_ port to android
-_ deprecate the older splice() etc API inside PApplet?
-_ add notes about the new shader setup
-_ add reference/docs for urlEncode() and urlDecode()
-_ add explanation to the reference about using beginRecord() with fonts
-_ pdf.textMode(SHAPE)
-_ also set the font *after* the record has started
-_ maybe should instead make textMode(SHAPE) the norm?
-_ and people can change it to textMode(MODEL) if they want?
-_ https://download.processing.org/bugzilla/1535.html (no gcode)
-_ explain the new PGL interface
-_ decide how disconnectEvent should actually be handled (and name?)
-_ was disconnect always there?
-_ will need documentation
-_ negative indices so that we can work relative to the end in data classes?
-_ add requestFocus() method to PApplet (or surface?)
-_ point() rendering differently in 2.0.3 and 2.1
-_ https://github.com/processing/processing/issues/2278
-_ internally, we probably have to call set() if it's a 1 pixel point
-_ but that's going to be a mess.. need to first check the CTM
-_ discussion from Jakub in the report
-
-
-
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-
-
-
-CORE / rendering/performance/threading
-
-_ hint(DISABLE_LOAD_PIXELS) -> faster rendering in Java2D
-_ problems with 2D rendering speed
-_ volatile images
-_ http://www.javalobby.org/forums/thread.jspa?threadID=16840&tstart=0
-_ http://www.javalobby.org/forums/thread.jspa?threadID=16867&tstart=0
-_ http://www.gamedev.net/page/resources/_/technical/general-programming/java-games-active-rendering-r2418
-
-
-CORE / stop()
-
-_ in PApplet.main(), windowClosing() should probably be calling 'exit()'
-_ or rather, we should never call System.exit(0), ja?
-_ dispose() method in PApplet should be empty so ppl can override
-_ move that stuff to destroy()
-_ pause()/resume() need to work on the desktop side as well
-_ notify ddf when pause/resume implemented
-_ stop() not called in 1.5
-_ https://github.com/processing/processing/issues/675
-_ noticed that dispose() is getting called. stop() isn't.
-_ http://java.sun.com/docs/books/tutorial/deployment/applet/lifeCycle.html
-_ static mode sketches seem to break ESC... noLoop() problem?
-_ need to find another way to get ESC on static mode
-_ b/c static mode sketches *do* finish because they have no draw()
-_ sort out destroy(), stop(), pause() et al
-_ ColorSelector should stop/pause when not visible
-_ right now it's doing a low-level looping
-_ start()/stop() perform like onPause()/onResume()
-_ all of which call pause() and resume()
-_ destroy() (from Applet) calls (our) dispose()
-_ destroy() shouldn't call exit()... change from lonnen
-_ calls ((PApplet)this).exit() instead of stop() (since stop is pause)
-_ notes
-_ exit() should do the actual exit
-_ if inside draw, let it finish the loop
-_ if not looping, need to do it immediately
-_ does stop() unwind the thread, or does the thread unwind call stop?
-_ browser will call start() and stop() methods
-_ need to figure out start/stop signals coming from the browser
-_ is it dispose/destroy?
-_ when closing a sketch via the close box, make sure stop() getting called
-_ test to see if it's working
-_ what's up with stop() vs exit()?
-_ need to get this straightened for p5 (i.e. bc has this problem)
-_ make sure the main() doesn't exit until the applet has finished
-_ i.e. problem with main calling itself multiple times in Alpheus
-_ if exit() (or stop) is called, then System.exit() gets called,
-_ even though the main() wants to keep going
-_ hitting ESC in a running noLoop()ed sketch won't close the sketch?
-_ noloop ref even says that redraw will be called on resize, make sure it is
-_ focus not coming through, ESC no longer working(?)
-_ hitting cmd-q when an applet is running quits p5 (on macosx)
-_ but cmd-q when running externally is ok because it just quits
-_ is there a way to catch cmd-q when running a sketch?
-_ so that it could avoid quitting if the sketch hasn't been stopped
-_ or if the sketch window is foremost
-_ maybe a hack where a new menubar is added?
-o destroy() removed, but bring back? is that better than dispose()?
-_ destroy() only called dispose(), so no difference
-_ Python Mode has a hook for when it's called
-
-
-CORE / PFont and text()
-
-_ finish PFont.getShape() implementation
-_ needs to have a way to set width/height properly
-_ draw(s) doesn't work on the returned PShape
-_ y-location of frame might be negative, but that might be ok
-_ right now, on Windows it moves it on-screen (b/c of previous bug reports)
-_ may be cause of some of the display placement issues w/ multiple displays
-_ seem to recall one of the bugs mentioning stacked displays
-_ need to change to iterate through display rectangles
-_ may be related to full-screen bug filed recently
-_ when doing createFont, can we add it to the os fonts available?
-_ font rotation (native font problem?) with natives?
-_ https://github.com/processing/processing/issues/731
-_ Text rotation, placement and font metrics incorrect when scaled
-_ https://github.com/processing/processing/issues/2167
-_ remove subsetting stuff from PFont?
-_ or use hint(ENABLE_FONT_SUBSETTING)?
-_ what's the difference with ascent on loadFont vs. createFont?
-_ svg fonts
-_ would be nifty if we could convert on the fly to ttf for speed...
-_ https://github.com/processing/processing/issues/787
-_ text position is quantized in JAVA2D
-_ text placement is ugly, seems like fractional metrics problem
-_ https://github.com/processing/processing/issues/138
-_ text(char c) with char 0 and undefined should print nothing
-_ perhaps also DEL or other nonprintables?
-_ book example 25-03
-_ accessors inside PFont need a lot of work
-_ improve font metrics
-_ http://java.sun.com/products/java-media/2D/reference/faqs/index.html#Q_How_do_I_obtain_font_metrics
-_ font encoding issues
-_ java seems to force straight windows encoding.. (problem for pi fonts)
-_ opentype/cff fonts don't work with live loading from the app
-_ many (all?) opentype fonts won't show up or aren't supported
-_ this may be only cff fonts that have trouble
-_ when encoding is not the standard encoding, problematic
-_ so sonata otf and sonata don't seem to have any chars at all
-_ text() with a z coordinate is now using translate, very slow
-X also puts up a weird error message about translate() in 2D mode
-_ make screen space fonts use get/set as well?
-_ too much to debug on their own
-_ unfortunately tint not set with setImpl, but...
-_ not having kerning really blows
-_ could this be pulled from the OpenType font stuff?
-_ it could be placed at the end of the file
-_ not having fractional widths on small fonts really blows
-_ screen space text looks crappy
-_ working with vector fonts?
-_ need to be able to handle shapes within shapes (reverse winding)
-_ ftgl: main code is in FTVectoriser
-_ uses gluTessBeginContour and gluTessEndContour
-_ and then does 5 step sizes for each curveto
-_ show an error when using a font character that isn't available
-_ maybe fall back on other characters instead?
-_ some font weights cannot be specified/selected on OS X
-_ https://github.com/processing/processing/issues/1727
-
-
-CORE / PImage
-
-_ TGA files writing strangely
-_ https://github.com/processing/processing/issues/2096
-_ loadPixels() implementation needs to be in PApplet, not PGraphics
-_ this is a tricky thing to implement because of how OpenGL is handled
-_ loadImage() should use the faster loading methods
-_ hint(DISABLE_IMAGE_CACHING)
-_ add a note to the loadImage() reference page
-_ figure out why 1024x768 image takes 3.5 seconds to load
-_ would using a BufferedImage work better?
-_ is the image actually a BufferedImage so PixelGrabber is a waste?
-_ deprecate the blend() function
-_ move blending calculations from PImage into PGraphics
-_ tricky because that means moving blend_resize() as well
-_ and should that live in PGraphics or be its own class or ??
-_ implement unified means to specify smoothing level for image scaling
-_ https://github.com/processing/processing/issues/204
-
-
-CORE / PGraphics
-
-_ need to be able to call pixelDensity(2) before beginDraw()
-_ add pixelDensity() method to PImage/PGraphics
-_ pixelDensity(2) does: pixelWidth = width; width /= 2; pixelDensity = 2;
-_ this works for both PGraphics and images (though they're a little backwards)
-_ for PGraphics it comes early enough
-_ should the re-alloc of the drawing surface happen in beginDraw()
-_ that way it won't blit to the screen until we have a fresh redraw?
-_ otherwise it'll also be resizing on another thread.. badness
-_ how to allocation image object w/ createGraphics() (since no surface)
-
-
-CORE / PShape
-
-_ TRIANGLE_STRIP not working correctly with createShape() and default renderer
-_ https://github.com/processing/processing/issues/4678
-_ major refactoring for PShape/PShapeOpenGL
-_ https://github.com/processing/processing/issues/1623
-_ PShape should be cached as well
-_ major surgery to put loadShape() back into PApplet/PGraphics
-_ then have the OpenGL or Java2D versions as cached objects
-_ PShape s = createShape(); / s.beginShape(QUADS);
-_ keeping these public for now
-_ get/setNormal
-_ get/setTextureUV
-_ get/setFill
-_ get/setStroke
-_ -> perhaps these go into their own section?
-_ -> or have their own accessor that returns all params?
-_ trying to remember why primitive was changed to kind? (better name?)
-_ these aren't per-vertex:
-_ get/setStrokeWeight
-_ get/setAmbient
-_ get/setEmissive
-_ get/setShininess
-_ boolean isGL() -> now removed
-_ unapproved (made protected)
-_ static shape copying methods
-_ getTop, getBottom, etc
-_ void solid(boolean)
-_ void setParams()
-_ void setPath()
-_ colorCalc() methods added to PShape.. should just be used from PGraphics
-_ loadShape() needs to live in PApplet
-_ don't allow things inside begin/endShape() that aren't possible
-_ better lockout inside beginShape() to keep other things from happening
-_ don't allow you to draw stroked items unless stroke() is called
-_ don't allow beginShape() if shape is already set
-_ (otherwise will cause some very strange errors)
-_ https://github.com/processing/processing/issues/174
-_ make determination on shape(x,y,z,w,h,d) or no
-_ PShape API to handle internal vertex stuff
-_ add deconstruct() method for paths
-_ toArray() and toVector()
-_ setVertex(0, x, y), setVertex(0, x, y, z)
-_ if PShape3D, then is it PShape2D? or do you handle both the same?
-_ add methods to PShape to apply all transformations in the tree
-_ we can do hit testing (at least in 2D) now that we rely on java2d
-_ for subclasses, make it easy to grab the structure of vertices
-_ actually, just use PShape internally and this will be easier
-_ for PShape, need to be able to set the origin (flash people)
-
-
-CORE / PShapeSVG
-
-_ loadShape() problems with SVGs that have . starting a number in a path
-_ https://github.com/processing/processing4/issues/518
-_ implement support for SVG gradients from Inkscape
-_ https://github.com/processing/processing/issues/1180
-_ need to handle should this live in PApplet? be static?
-_ cons: static stinks, diff tables might use diff values
-_ will also need an iterator for the Dict class ala Map.Entry
-_ using Iterable for rows(), keys(), etc
-_ generally more efficient for Table, but slower for FloatHash and IntHash
-_ could use an int array instead, but a bit hokey in places
-_ Iterable, Iterator, or [] returned for keys(), rows(), etc.
-_ list, dict, json, table are each more efficient at different things
-_ keys(), rows(), etc. should return something Iterable
-_ whether that means an array or an actual Iterator or even a Set
-_ that way we can do what's most efficient
-_ then we add keyIterator() and others to handle the other case (deletion)
-_ blogs.oracle.com/CoreJavaTechTips/entry/using_enhanced_for_loops_with
-_ means that JSON.keys() -> JSON.keyIterator(), JSON.keySet() -> JSON.keys()
-_ what should they all return?
-_ remove -> true/false based on whether it found something?
-_ remove all -> the number removed?
-_ List: remove(), append(), index(), etc all use values
-_ removeIndex(index) is the other
-_ otherwise remove() would be the only one that dealt with indices
-_ Dict will use remove(key), so using remove(index) as default
-_ and removeValue(value) is probably used less
-_ introduce remap() instead of map() (if not deprecate?)
-_ key/valueIterator to get a version that can be removed in a loop
-_ in Table, added an Iterator function
-_ should keys() returns cropped internal array after all?
-_ right now it's making a copy (which is safer, so folks don't modify)
-_ but this means that we don't have a fast method for access
-_ methods for max, min, index of max/min entries? valueIndex?
-
-
-DATA / Table
-
-_ function that will convert awful CSV to TSV.. or something else?
-_ maybe to write binary instead? then read the binary file once it's ok?
-_ if loading from a File object
-_ (or PApplet is passed in and we can check online)
-_ then check the (probable) size of the file before loading
-_ no column max/min functions since it needs to be per-datatype
-_ better to use float mx = max(float(getColumn(3)));
-_ but what to do with null entries?
-_ need a method to reset the row/column indices after add/remove
-_ or just make sure that it's covered for all cases
-_ prefixes like # as comments? easy to remove?
-_ naming for these (or whether to include hash)
-_ Table createSubset() -> leave out?
-_ String[] getUnique(col) (SQL DISTINCT, sort --unique)
-_ HashMap
items showing up when first loading
-X https://download.processing.org/bugzilla/1395.html
-
-
-0172 pde (private)
-X use xdg-open as launcher on linux
-X https://download.processing.org/bugzilla/1358.html
-X change to different class id for export and export-opengl
-X Default wildcard imports are causing naming conflicts
-X https://download.processing.org/bugzilla/1103.html
-X imports inside comments are being included
-
-
-0171 pde (1.0.9)
-X ugh, remove the dimmed menus
-X https://download.processing.org/bugzilla/786.html
-
-
-0170 pde (1.0.8)
-X update java on linux/windows to 6u16
-X update quaqua to 6.0.1
-X preferences broken
-X https://download.processing.org/bugzilla/1320.html
-X https://download.processing.org/bugzilla/1322.html
-X https://download.processing.org/bugzilla/1325.html
-X https://download.processing.org/bugzilla/1329.html
-X https://download.processing.org/bugzilla/1336.html
-X https://download.processing.org/bugzilla/1337.html
-X https://download.processing.org/bugzilla/1344.html
-X check for usequartz problems in snow leopard
-X "Unrecognized option: -d32" on OS X 10.4
-X https://download.processing.org/bugzilla/1324.html
-X slow response or spinning wheel on osx
-X remove menu dimming code
-X https://download.processing.org/bugzilla/786.html
-X new version of minim: 2.0.2
-X http://code.compartmental.net/tools/minim/
-X Outdated "Get the latest Java Plug-in here"
-X https://download.processing.org/bugzilla/1331.html
-X when disk is full, Processing zeroes files when it tries to save changes
-X even saveStream() does this.. simple fix, b/c it's all one fxn
-X or at least should be routed through a single fxn
-X https://download.processing.org/bugzilla/967.html
-X problems with save on close
-X https://download.processing.org/bugzilla/1193.html
-X deleting new tab causes troubles
-X florian had another version of this
-X https://download.processing.org/bugzilla/1332.html
-X Saving the project with the same name as an existing tab may delete code
-X https://download.processing.org/bugzilla/1102.html
-X after deleting a tab code still get's preprocessed, pde file is not forgotten
-X https://download.processing.org/bugzilla/1092.html
-
-
-0169 pde (1.0.7)
-X Erroneous line highlighting is off by one if there is no setup() routine
-X https://download.processing.org/bugzilla/1263.html
-X Auto-format kills Unicode characters
-X https://download.processing.org/bugzilla/1312.html
-X tweaks for Mac OS X Snow Leopard, to force it to run in 32-bit mode
-
-
-0168 pde (1.0.6)
-X suggest declaring PDF's members protected
-X https://download.processing.org/bugzilla/1276.html
-X update Info.plist to be 32/64 explicit and also the stubs for update 4
-X problems with jogl expired certificates
-X https://jogl.dev.java.net/servlets/ProjectDocumentList?folderID=9260&expandFolder=9260&folderID=0
-X https://download.processing.org/bugzilla/1271.html
-X preferences.txt selectable (or open parent folder)
-X but probably needs to prevent people from editing while in use
-X https://download.processing.org/bugzilla/1279.html
-X Auto format problem with program deeper then 10 levels
-X https://download.processing.org/bugzilla/1297.html
-X fix a crash on startup problem (console being null)
-X Recursive subfolder copy when exporting application
-X https://download.processing.org/bugzilla/1295.html
-X java update 15 for windows and linux
-
-fixed earlier (java 6 update)
-X mangled menu text with java 6u10
-o need to try adding the d3d flag to the .exe
-X https://download.processing.org/bugzilla/1065.html
-o -Dsun.java2d.noddraw=true
-
-contributed
-X can't launch from a symlink in /usr/bin
-X https://download.processing.org/bugzilla/825.html
-X fixed by Ferdinand Kasper of Vienna
-
-
-0167 pde (1.0.5)
-X fix tab key and focus issue in the editor
-X https://download.processing.org/bugzilla/1267.html
-X Support for smooth text in the PDE editor
-X https://download.processing.org/bugzilla/1266.html
-X duplicate entries for sketchbook in the file menu
-X https://download.processing.org/bugzilla/1260.html
-
-
-0166 pde (1.0.4)
-X try adding a space to the name of the help menu for beachball problems
-X this works, might be useful to make the switch (done)
-X remove isManagingFocus problem inside JEditTextArea
-X IDE crashed when changing color scheme on windows
-X https://download.processing.org/bugzilla/1237.html
-X space in front of linux shell script prevents it from running
-X https://download.processing.org/bugzilla/1250.html
-X macosx finder info on application says 1.0.1 for 1.0.3
-X fix build script to catch this / make it update the file
-X https://download.processing.org/bugzilla/1226.html
-X update to java 6u13 on windows
-X fix error message "Non-String for 8 value in 'Properties' sub-dictionary in 'Java' sub-dictionary of Info.plist"
-X -X option not supported in 10.4
-X https://download.processing.org/bugzilla/1179.html
-X Slow response or spinning wheel from the menu bar on Mac OS X
-X https://download.processing.org/bugzilla/786.html
-X disable sketchbook and examples menus on os x?
-X update to java 6u14 on windows
-X update to java 6u14 on linux
-
-
-0165 pde (1.0.3)
-X no changes in this release
-
-
-0164 pde (1.0.2)
-X Empty "code" folder causes problems with Export
-X https://download.processing.org/bugzilla/1084.html
-X 8.3 filenames being used when opening sketch
-X https://download.processing.org/bugzilla/1089.html
-X add -X switch to cp on osx build so that extended attrs are not copied
-X https://download.processing.org/bugzilla/1098.html
-X add JVMArchs to Info.plist so that stupid Apple error msg doesn't appear
-X StringIndexOutOfBoundsException caused by import statements with no dots
-X https://download.processing.org/bugzilla/1145.html
-X Pressing
elements to fix it
-X write revisions.txt updates based on 0158 changes
-X Error after creating more than 26 temporary sketches in one day
-X https://download.processing.org/bugzilla/1039.html
-X AIOOBE when you get to z on new sketches
-X improve export application window layout spacing (osx)
-X also disable stop button item when full screen not selected
-o Focus not returning to editor properly on Linux
-X https://download.processing.org/bugzilla/1031.html
-X can't get this to replicate
-
-in previous release (0158)
-X move the color settings out of the preferences file
-X otherwise running new/old p5 causes problems
-X just need to rename each of the prefs
-X update to java 6u10 for linux and windows
-
-
-0158 pde
-X missing semicolons - better error message
-o https://download.processing.org/bugzilla/12.html
-o need to highlight the previous line as well (or instead)
-X clean up some of the new/open code internally
-X export to application options dialog
-X implement error message regarding the apple menu bug on leopard
-X add a preference to toggle the menubar on osx
-X confirm "Do you want to Quit?"
-X remove the preference for auto-quit
-o tarbell substrate to P2D
-X change sketch naming with the dates
-X if untitled, and not modified, and closing on macosx (only)
-X don't close the sketch and create a new one
-X put up dialog box telling the user to use 'quit' or change the preference
-X or just automatically quit at that point?
-X fix up mkdmg script to work with leopard properly
-X even though the error suggests one thing, seems to be something earlier
-X need to also detect whether running 10.4 or 10.5
-X change ref re: last window closing will prompt re: quit
-X quitting will not prompt re: quit
-o opengl broken on vista laptop with articulate
-o when background() is not called to clear the buffers, causes flashing
-o need to disable swapping buffers until background() is used?
-o (happens with 0135, 0148 on this machine as well)
-o may need to add explicit noBackground() call
-X this seems to have fixed itself
-X change windows and linux to use jdk 6u10
-X pressing run turns up nothing
-o (in particular while cpu load is a little higher on g5?)
-o https://download.processing.org/bugzilla/852.html
-o this may just be a macosx (ppc?) bug
-o check if platform is MACOSX and font is monospaced (?)
-o if so, nuke the setting and change it back to Monaco
-X not gonna bother, it's just a few releases
-
-design updates
-X update about box in windows app and lib folder
-X update icon.gif in the source code
-X add in new buttons from casey
-X move all editor theme graphics into their own subfolder
-o add space between run/stop and the others
-
-documentation
-X coloring for CENTER and DIAMETER, turn off coloring for deprecated
-X also deal with hint() changes
-
-
-0157 pde
-X show sketch folder fails for directories containing umlauts
-X https://download.processing.org/bugzilla/1010.html
-X Find in Reference does not open Firefox in 0156 for Linux
-X https://download.processing.org/bugzilla/1012.html
-X add error message when trying to open sketch from the menu
-X check into use of platform names in export sketch / export application
-X opting not to deal with this because of size of populations
-X default font on osx 10.5 is gross
-X fix bug with reading the default prefs file
-
-
-0156 pde
-X fix typo in sketch renaming notice message
-X line numbers not showing up for unknown var or class names
-o "anything named" error is weird
-X don't open more than one "create font" or "color selector"
-X https://download.processing.org/bugzilla/830.html
-X make processing tools use the tools api
-X https://download.processing.org/bugzilla/886.html
-X rename GettingStarted_Shape example
-
-invalid
-o launch4j "An error occurred while starting the application"
-o https://download.processing.org/bugzilla/986.html
-o tabs menu not working on osx ppc (can't confirm)
-o https://download.processing.org/bugzilla/993.html
-
-
-0155 pde
-X "Save canceled" message when saving untitled sketches without first renaming
-X https://download.processing.org/bugzilla/987.html
-X when saving a sketch over itself with "Save As", just do "Save" instead
-X fix loadShape() transformation parsing and empty paths (thanks ricardmp)
-X https://download.processing.org/bugzilla/982.html
-X moviemaker can't make exact 30fps output
-X https://download.processing.org/bugzilla/988.html
-X automatically create and open the 'libraries' folder when there's an error
-
-
-0154 pde
-X clean up PATH for users who have garbage in the PATH
-X https://download.processing.org/bugzilla/974.html
-X disallow .java tabs with same name as the sketch
-X a .java tab with same name as the sketch is allowed (oog!)
-X particularly look at "save as" scenario
-X https://download.processing.org/bugzilla/543.html
-X bug report:
-X create a new sketch, write something in it
-X create a new tab, name it "something.java", write something into it
-X rename main tab (sketch) to "something" (without ".java")
-X the contents in the files are not the same, but the main-tab is
-X showing the contents of the .java tab, so if you press save
-X you will overwrite your original code from the main-tab.
-X com.sun.jdi.AbsentInformationException when running a sketch
-X https://download.processing.org/bugzilla/971.html
-
-cleaning
-X processing cancels shutdown on mac os x
-X https://download.processing.org/bugzilla/539.html
-X fixed in an older version
-X jikes bugs mean some code just won't compile:
-X include javac? would this be a good solution for linux?
-X https://download.processing.org/bugzilla/8.html
-X an empty .java tab will throw an error
-X https://download.processing.org/bugzilla/10.html
-X warn about writing non-1.1 code.
-X https://download.processing.org/bugzilla/11.html
-X java.lang.NoClassDefFoundError: quicktime/std/StdQTException
-X people not installing qt? no QTJAVA set?
-X https://download.processing.org/bugzilla/669.html
-o simulate this by removing qtjava.zip, then make a handler for it
-o which will open the reference for it
-X use the registry key, and warn the user when it's not there
-X mouse wheel broken in the text editor? (windows jdk 1.5?)
-X https://download.processing.org/bugzilla/24.html
-
-
-0153 pde
-X delete files before adding, otherwise case changes are not preserved
-X https://download.processing.org/bugzilla/969.html
-X ClassNotFoundException: quicktime.std.StdQTException with release 0152
-X https://download.processing.org/bugzilla/970.html
-
-previous
-o put the "had to rename sketch" message in the msg bar
-o it's ugly/annoying/intrusive
-X just print it to the console
-
-
-0152 pde
-X movie.read() breaking, which breaks the examples
-X https://download.processing.org/bugzilla/961.html
-X movie width/height broken
-X https://download.processing.org/bugzilla/962.html
-
-
-0151 pde
-o Fix error message spew on Linux when using "Save As"
-X https://download.processing.org/bugzilla/951.html
-X can't fix, it's a sun bug
-X Change sketch naming error to only print to the console
-
-
-0150 pde
-X ArrayIndexOutOfBoundsException after pressing Run with release 0149
-X https://download.processing.org/bugzilla/949.html
-X update java to release 1.6.0_07 on windows and linux
-X https://download.processing.org/bugzilla/950.html
-
-
-0149 pde
-X fix problem with error line highlighting
-X https://download.processing.org/bugzilla/888.html
-X additional cleanup to various Sketch, Runner, Compiler classes
-X preproc cleanup
-X remove various preproc imports
-X simplify preprocessor handling to make way for command line
-X use accurate line numbering internally rather than mashing lines in preproc
-X remove preprocName
-X remove appletClassName
-X command line support
-X https://download.processing.org/bugzilla/219.html
-o would still require awt, but would take a sketch on cmd line
-X modify showError() et al to not use awt when running from command line
-X build it and then exit
-X notations have been added to the bug report that cover the plw changes
-X also an option to launch p5, load a sketch and run it
-X command to launch p5, load sketch and run in present mode
-X not that useful because users should just use export application
-X https://download.processing.org/bugzilla/889.html
-X Toolmenu won't show until I compile Mangler
-X https://download.processing.org/bugzilla/892.html
-X update quaqua to 4.4.7 on macosx (http://www.randelshofer.ch/quaqua/)
-X now supports 10.5 an 64 bit jnilib
-X add note to prefs dialog that multiple jar export only works w/o libs
-X https://download.processing.org/bugzilla/907.html
-X transport error 202
-X https://download.processing.org/bugzilla/895.html
-X renaming the main tab adds .pde to the sketch folder name 0148
-X https://download.processing.org/bugzilla/922.html
-X not always updating on rename (maybe a mac problem?)
-X https://download.processing.org/bugzilla/56.html
-X error messages not clearing the message area
-X https://download.processing.org/bugzilla/912.html
-o expecting EOF, found 'void?
-o https://download.processing.org/bugzilla/905.html
-o last fixed 5/30, maybe check the svn for those two days
-o this might be the MULTILINE mess
-X was a typo in the code
-X add getting started to help menu
-X http://processing.org/learning/gettingstarted/
-X add "environment" to the help menu
-X fix other instances of match() using the wrong array indices
-X add additional newline hack so that autoformat complains less
-X video capture problems with opengl (on mac os x)
-X https://download.processing.org/bugzilla/882.html
-X sketch export results in 100x100 default size, regardless of size() setting
-X https://download.processing.org/bugzilla/945.html
-X third tab throws NullPointerException
-X https://download.processing.org/bugzilla/940.html
-o sketch must be saved to use a constructor
-X https://download.processing.org/bugzilla/929.html
-X reference bug, example cannot have same name as an inner class
-
-structural
-X processing.candy has been removed
-X processing.xml is now part of core.jar, no need to import
-X user-contributed tools and libraries should only be placed in the sketchbook
-X in the next release, will be banning unofficial stuff from the p5 folder
-
-reference
-X do some edits on the "getting started" text
-X make sure visualization not mentioned
-X change references to help > getting started
-X add vida reference
-X background() with an image ignores the tint.. it's basically like set()
-X selectInput(), selectOutput(), selectFolder()
-X createInput() (nee openStream), createInputRaw(), createOutput()
-
-cleanup
-o how to grab the java2d object from PGraphics2D
-o example for using mediatracker to load images
-o simple example for threaded image loading "load several"
-o (rather than blocking on each)
-o maybe add a loadImages(String files[]) function?
-o use a MediaTracker that's shared, so that while an image is still
-o loading, other calls to loadImage might be able to add things to the
-o queue. or maybe beginImage() and endImage()? or a mode that lets
-o you wait for the images to download (size is zero until they're ready)
-o MediaTracker blocking is prolly making jar download really slow
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1089914280
-o if size() not found in export/compile, ask the user
-o have size(myWidth, myHeight) set a static var in PGraphics
-o for the last size that was used, use as default for fill-in field
-o https://download.processing.org/bugzilla/64.html
-X using beginGL().. also import javax.media.opengl.*;
-o lighting will not work
-o move stuff about getting gl object and java2d stuff here
-o should we add processinghacks to main site? hacks.processing.org?
-o this would enable site search across this as well?
-o on first OutOfMemoryError, offer to send to the docs
-o again, a warning checkbox
-X fixed up OutOfMemoryError issues to show better error message
-X write docs for begin/endRaw
-o winamp/audio getting starved or crackly while applets running
-o thread priority too high? or something weird
-X mac standard key combinations for moving around in the editor
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1093116515
-X these were done a long time ago
-o also out of cvs
-o check for necessary tools to be installed
-o zip, unzip, jikes, etc
-
-ira
-X How do I move the mouse cursor to another location? (java robot example)
-X post a hack for this or a simple example
-X http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Robot.html
-X also need to get frame location:
-X http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1221384557
-
-shiffman
-X update match(), write new reference for matchAll()
-
-windows launcher
-X windows jdk sometimes not getting picked up, even if it's there
-X notes somewhere about choosing the right jvm...
-X https://download.processing.org/bugzilla/878.html
-X finding older versions of java on windows
-X https://download.processing.org/bugzilla/545.html
-o eclipse launcher for windows
-o http://dev.eclipse.org/viewcvs/index.cgi/platform-launcher/library/win32/eclipseWin.c?view=markup&content-type=text%2Fvnd.viewcvs-markup&revision=1.12
-X make .pde files double-clickable from windows
-X https://download.processing.org/bugzilla/683.html
-X on drag, are these already passed to argv[]?
-o http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getcommandline.asp
-o http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/fileassociations/fa_intro.asp
-o http://groups.google.com/group/comp.os.ms-windows.programmer.misc/browse_thread/thread/4095cb6fc807863/ecdb3b35b0787116%23ecdb3b35b0787116?sa=X&oi=groupsr&start=0&num=3
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1094149466
-X figure out proper registry key for windows
-X can be handled when the app first run (jni?)
-X write handler for main() to take document names
-o track down the cause of the processing.exe not starting bugs
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1062794781
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1067764732
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1094148057
-X need splash screen, startup takes a long time
-X processing.exe: problem if expert version is run, and no java installed
-X call the person a genius and tell them to install java
-o NullPointerException when alt is pressed
-o (not our bug, but log it in the bug db anyways)
-o might be something to do with the applet frame being an awt not swing
-o event first goes to the applet listener, needs to consume the event
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1061802316
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077058974
-o http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1081751451
-
-macosx launcher
-X for the .app file, $APP_PACKAGE will give the path
-X $JAVAROOT will give Contents/Resources/Java location
-X would be nice to have macosx packaged up as a single .app file
-X should recommend that people install libraries into their sketchbook
-
-
-0148 pde
-X clean up accessors inside Sketch and SketchCode
-X Editor, Sketch, and SketchCode are now fair game
-X clean up Base a bit
-X public methods in Base are now also fair game
-X remove hide/unhide code and menu options
-X create a local version of javadoc, and send to server
-X clean up some of the api naming for tab changes, etc.
-X setCurrentTab(int index or String filename)
-X getTabs() ? maybe these are interface to the code class
-X clean up API for JEditTextArea before exposing the object
-X write basic documentation for how it's handled (tools/howto.txt)
-X add tools folder to make and dist scripts
-
-
-0147 pde
-X inside Sketch.java, don't hardwire the file extension types
-X arduino uses .c, .cpp, .h instead of .java
-X https://download.processing.org/bugzilla/807.html
-X major changes to save/save as/rename setup - keep an eye out
-X need to add local java folder to path on linux
-X otherwise if no linux installed, complaining that no java found
-X https://download.processing.org/bugzilla/879.html
-
-tools
-X refactor code to use more getter/setter methods
-X move the debug classes back into processing.app.debug
-X this will help the library stuff
-X dynamic tools menu (requires moving files around)
-o this means can integrate the autoformat stuff
-X processing.mess/tools has chandler's template stuff
-o need to write converter that will handle syntax changes
-o convert from alpha to 1.0 syntax
-o framerate() -> frameRate()
-o basically find & replace with regexps
-o acts just like find/replace.. go through and do by hand
-o 3 column input file
-o regexp to find, to replace, human readable description
-o (void\s+)loop(\s+{) -> $1draw$2 (maintain all whitespace stuff)
-o "The loop() method is now called draw() as of beta"
-o "angleMode no longer exists, use radians() around your angles"
-o (comment out the line)
-X this would only fix the minor stuff, not the important stuff
-X it also has a lot of potential problems and corner cases
-X just not worth the effort
-X tools api
-X need to support the basic set of functions that are expected
-X to be used, otherwise it's gonna be total hell when we make a real api
-X getEditor()
-X get/setSelStart/End
-X get/setSelText
-X get/setText
-X make dynamically loaded plugins and "tools" menu
-X https://download.processing.org/bugzilla/124.html
-X tools api:
-X init() -> run when p5 is first launched
-o isAvailable() -> true/false whether the option should be dimmed
-X skip this for now, not sending events to tools all the time
-o show() and hide() -> open the window or run the tool
-o is there a better name than show() since not all will be visible?
-o maybe it's just a run() method launched via invokeLater()?
-X can't really do show/hide from editor, make the tool handle this
-o getDefaultShortcut() -> returns the default shortcut this tools wants
-o store this in the data file instead
-X not bothering with this for now, since can't handle overlaps
-X needs to be able to get current sketch code
-X look at the pretty-formatting code to see what else needs to be in api
-o getMenu() -> return non-null the tool is a submenu
-X no, bad idea.. don't want a zillion submenus on things
-
-
-0146 pde
-X fix problem with comment/uncomment and indent/outdent
-X when no selection, and on the first pos of the line
-X on comment/uncomment, need to check if *all* lines are commented
-X otherwise should be comment (never uncomment unless all selected)
-
-runner
-X use debugger to get better exceptions
-X and getting the error to show up in the window inside p5
-X also highlighting the correct line
-X Exceptions not being reported properly to the PDE
-X lines with errors not highlighting
-X https://download.processing.org/bugzilla/877.html
-X was ok in 0144, but 0145 things broke
-X probably b/c not catching ex inside the run() method
-X getMessage() not sufficient for exceptions coming through
-X get actual message text, plus the exception itself
-X now using actual sketch name (instead of temp name)
-X this should be safe since launching an external vm to run
-X make the p5 icon show up for the window
-X when launching a new sketch
-X can embed icon.gif as byte array in PApplet, and use Toolkit.createImage
-
-cleaning
-X NullPointerException inside setup() comes up weird
-X because NullPointerException is a RuntimeException
-X maybe the renderer exception is something different? newrendex?
-X https://download.processing.org/bugzilla/78.html
-o weird exception in the run button watcher
-X http://processing.org/bugs/show_bug.cgi?id=42
-X exceptions in draw() apps aren't caught
-X the program resize(200, 200); just does nothing (doesn't complain)
-X https://download.processing.org/bugzilla/81.html
-X exception in setup() on external app doesn't kill run button
-X also doesn't kill external vm
-X https://download.processing.org/bugzilla/79.html
-X fixed in the 0140s
-o make editor nicer
-o tab on selection indents whole block
-o shift-tab outdents whole block
-o ctrl-t to format selection
-o if no selection, indents line?
-X addressed these in other ways
-
-
-0145 pde
-X insert non-breaking space characters instead of spaces on DiscourseFormat
-X works on safari (though not camino/firefox) on osx
-X works on internet explorer w/ windows
-
-
-0144 pde
-X add new reference and examples
-X write revisions.txt entry that covers changes since 0135
-X format for discourse is ignoring the selection
-X also shouldn't add (so much) extra space to the beginning and end
-o add tool for running in jview
-o https://download.processing.org/bugzilla/142.html
-o calls export, or only available after export (or when an applet dir exists)
-o warn user that applet html will be over-written
-X no longer supporting 1.1
-X on startup, make sure that the jdi classes are available
-X if not, tell the user to install a friggin jdk
-X this way we can release a windows version w/o java
-X don't open more than one copy of the preferences window
-X https://download.processing.org/bugzilla/830.html
-X modify namespace handling in xml lib
-X changed getFullName() to getName()
-X changed getName() to getLocalName()
-o look through the code for any places where UTF-8 not used
-
-text handling
-X block comment - don't bother with last line if starting it
-X (same behavior as eclipse)
-X add block comment to right-click menu
-X https://download.processing.org/bugzilla/840.html
-X add increase/decrease indent to edit and right-click edit menu
-X https://download.processing.org/bugzilla/841.html
-
-fix problems with vm crashing errors (OutOfMemoryError, etc)
-o too many NPEs on loadimage may freeze the app (visualizar example?)
-o hopefully this should be fixed with 0136 changes
-o lots of runtime exceptions still being lost on osx
-o particularly with multi-threaded applications
-o macosx dropping exceptions all the time.. grr
-o solution is to export, and then see how it runs
-o this is particularly bad with threaded applications
-
-
-0143 pde
-X fixed build problems with macosx and linux, thanks to reports
-o need to compare with localized version of javac strings
-X https://download.processing.org/bugzilla/828.html
-X just moving to ecj instead of javac
-X preproc code showing through since it's on line 0:
-X https://download.processing.org/bugzilla/831.html
-X also need to handle "unexpected type" error in that example
-X "Target VM failed to initialize: VM initialization failed" when trying to run
-X https://download.processing.org/bugzilla/796.html
-X add better error message for memory too high
-
-
-0142 pde
-X fix "cannot parse error text" with duplicate var declaration
-X also found that errors were continuing to process after the first
-X https://download.processing.org/bugzilla/820.html
-X web colors < 6 chars produce bizarre error:
-X https://download.processing.org/bugzilla/196.html
-X fix a problem with errors that are at the end of the codea
-
-
-0141 pde
-X hide javac warning messages
-X "xxxx xxxx uses unsafe operations.", "recompile with -Xlint:xxxx"
-X https://download.processing.org/bugzilla/817.html
-X move copy for discourse into the edit menu (ctrl-shift-c)
-X nanoxml getChildren() et al should use getFullName() not getName()
-X https://download.processing.org/bugzilla/813.html
-
-charset changes
-X make sure that export is using utf8 for writing the .pde files etc
-X should be primarily loadFile() and saveFile() inside Base
-X change pde files to use utf8
-X https://download.processing.org/bugzilla/743.html
-o 1) if file contains binary data and
-o 2) its mod date is earlier than when p5 0125 was installed
-o point the user to Tools -> Reload sketch with local encoding
-o then re-save the file to update the mod date
-o ...or, when first running p5 0125, offer to update sketches
-o this is a bad idea--since it's probably
-X need to set a default charset for use in files (utf8)
-X add option to change charset or specify as part of loading
-X need to specify the default encoding
-
-fixed earlier
-X stop button sometimes causes lockups when libraries or code folder is in use
-X https://download.processing.org/bugzilla/126.html
-
-
-0140 pde
-X fallback locations for sketchbook and data folders are disabled
-X move openFolder, openFolderAvailable, openURL to Platform classes
-X can't get documents/prefs folder on vista
-X https://download.processing.org/bugzilla/585.html
-X closing until further notice
-o vista disables aero theme when p5 is run
-o http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1196016889
-X can't seem to verify this
-X occasional division by zero on windows
-X https://download.processing.org/bugzilla/777.html
-X should be fixed, but need to verify once a release candidate is ready
-X two fixes for readBytesUntil() and bufferUntil()
-X also not calling serialEvent()
-X https://download.processing.org/bugzilla/96.html
-X fix goof with console preference in preferences.txt
-X http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1213042400
-X need to add usequartz when running externally?
-X no, tested and it seems to be working
-
-cleaning
-o respond to stop/close events sent by the vm
-X not sure what we're doing here
-X on osx, System.err isn't writing in things like createGraphics()
-X but doing a printStackTrace(System.out) works
-X something weird happening with one of the streams shutting down?
-X probably, need to fix this by using the remote launcher/debug api
-X use proper external launcher via debugger api
-X http://java.sun.com/javase/technologies/core/toolsapis/jpda/
-X small gray gap shows up in color picker
-X getMaximumSize() not being respected on Windows (Linux?)
-X https://download.processing.org/bugzilla/310.html
-X same as bug #656
-X https://download.processing.org/bugzilla/656.html
-
-further cleanup for simpler building (refactor lots of Base)
-o settings.path.fallback not being used
-o need to check the mkdirs() to make sure it's not going too deep
-o really important for intl versions that are having trouble
-o or ask for the sketch folder name.. why isn't it?
-o http://processing.org/bugs/show_bug.cgi?id=1
-X remove settings.path.fallback
-X no error message if sketchbook folder is set to bad location
-X says that it's gonna create new sketchbook in default loc
-X even though that location might exist already (just word it better)
-X "changing back to default sketchbook location"
-X move tools.jar into jre/lib folder
-X implement windows registry lookups via reflection
-X https://download.processing.org/bugzilla/723.html
-X or move to jna for registry?
-X https://jna.dev.java.net/source/browse/jna/trunk/jnalib/contrib/ntservice/src/jnacontrib/win32/Registry.java?rev=293&view=markup
-X remove libs from build/shared that are in app/lib
-X update scripts to copy from app/lib
-X since adding tools.jar, jikes can be removed
-X switch to javac (in code)
-X re-wire error handling to handle javac error messages
-o seem to be primarily 2 kinds?
-X finish osx build script to make the libraries
-X make.sh creating work/lib dirs.. no longer necessary?
-
-wontfix
-X Programs run with release 0136+ are sometimes slower due to Java 1.5
-X https://download.processing.org/bugzilla/798.html
-
-
-0139 pde
-X update quaqua to 3.9.5 on macosx (http://www.randelshofer.ch/quaqua/)
-X xml.getIntAttribute() returns a float
-X https://download.processing.org/bugzilla/790.html
-X include memory settings with exported applications on macosx
-X https://download.processing.org/bugzilla/803.html
-X error highlighting broken
-X https://download.processing.org/bugzilla/795.html
-
-
-0138 pde
-X importing a library results in "expecting EOF, found ..." error
-X https://download.processing.org/bugzilla/788.html
-X remove console variable from preferences.txt
-X run only works with primary window in 0136, 0137
-X https://download.processing.org/bugzilla/784.html
-X throwing a stackoverflowexception because the console is broken
-o hint(ENABLE_AUTO_GUNZIP) or rather hint(DISABLE_AUTO_GUNZIP)
-X cannot do this because hint() lives in PGraphics, this is PApplet
-X code folder being ignored on export to application
-X https://download.processing.org/bugzilla/469.html
-X fixed in release 0137
-X remove debug messages from export
-
-
-0137 pde
-X move to multiple jars whenever
-X 1) a lib is in use, 2) code folder, 3) multiple files
-X remove oro.jar dependency (not needed with PApplet.match)
-X this is kind of messy and requires a bit of testing to ensure proper
-X sometimes huge jar files when exporting with a code folder
-X https://download.processing.org/bugzilla/541.html
-X applet export with multiple jars having trouble (related?)
-X https://download.processing.org/bugzilla/701.html
-X applet export fails with opengl/code folder
-X https://download.processing.org/bugzilla/714.html
-X synchronized (something) { } is horking up the preproc
-X https://download.processing.org/bugzilla/136.html
-o inside the preproc
-o change the arrays of default imports (now using 1.5+, so no 1.1,1.3,1.4)
-X don't bother, they're cumulative
-X improvements to the linux startup script
-X http://processing.org/discourse/yabb_beta/YaBB.cgi?board=os_core_pde;action=display;num=1202689238
-X update preferences.txt whenever opening/closing
-X otherwise recovery from restart can be annoying
-X fix classpath problem with processing.exe
-X https://download.processing.org/bugzilla/780.html
-
-
-0136 pde
-X fix XMLElement(String s), had a bad constructor
-X color selector not drawing properly (fix thanks to fli)
-X https://download.processing.org/bugzilla/656.html
-X color selector broken on vista (no colors at all)
-X https://download.processing.org/bugzilla/584.html
-X added fonts, quadratic curves to svg
-X need to remove the font stuff, also the changes for 'public'
-X move my edits into a subclass
-o Capture.settings() mangles external iSight image
-X fixed in newer qtjava
-o https://download.processing.org/bugzilla/496.html
-X add to p5 app bundle
-X mention re: apple slowness
-X -Dapple.awt.graphics.UseQuartz=true
-X net library dies unceremoniously on "Connection Refused"
-X just need to catch another exception
-X https://download.processing.org/bugzilla/751.html
-X ctrl-/ to comment block
-X eeepc support for environment:
-X splitPane.setMinimumSize(new Dimension(600, 600));
-X change to: splitPane.setMinimumSize(new Dimension(600, 400));
-o prolly need to have a param for this guy
-X switch to nanoxml instead of nanoxml-lite (29k vs. 5k)
-X check against ods
-X https://download.processing.org/bugzilla/757.html
-X space after OPENGL param breaks export
-X https://download.processing.org/bugzilla/769.html
-X svg demos are broken
-X because of weird ENTITY setup
-X because of weird (default?) filling problem
-X remove support for random .class files in code and library folders
-X need to put everything in jar files
-X opengl currently broken in svn (probably the native libs not included?)
-X mistakes wrt 'library.path'
-X also, don't add /library/ for each lib to the classpath
-X remove unused libraries from default run path
-X note that this will hose svg b/c xml not available
-X so when this change is made, the lib depends needs to be implemented too
-
-X changing to java 1.5
-o switch to java 1.4.2_16 on linux and windows (now that osx is there?)
-X change to 1.5+ (instead of 1.4*) in Info.plist for Processing.app
-X updated linux to java 1.5.0_15
-X updated windows java to 1.5.0_15
-X change export.html to point to java 1.5 cab file
-X update things for java 1.5 since it's inevitable
-
-new debugger/runner setup
-X wire in new debugging classes, get sys.out and sys.err working
-X quitting p5 doesn't shut down the runner
-X make out/err streams go to the correct window
-X see if window re-positioning is broken
-o could actually do this with objectreference
-X change output/error streams to properly write to the selected console
-X though out/err stream for current app should append to current console(?)
-X add tools.jar to windows and linux builds
-X make sure the version is the same as the jvm for each
-X initiate external stop and close events to the vm
-o see if stop() has same 'finished' problem with not immediate quit
-X add debug/*.java to linux build
-X remove debug/gui/*.java from windows build
-X rework Sketch.build(), it's what's going library crazy
-o will this speed up launch of external jvm?
-X only support .jar files (not .class files) in code and lib folders
-
-completed earlier (or removed)
-X make the export to the board just copy to clipboard
-X also make it insert for extra spaces
-
-reference
-X random() is up to and not including, also add randomSeed link
-X top links in the faq are broken (use full url?)
-X need to re-arrange the reference location (faq.html in root, etc)
-X don't include faq in download
-X split contributed/core libraries
-X change software to point at correct reference locations
-
-
-0135 pde
-o opening a file from right-click in osx
-o opens the new thing directly behind an untitled document
-X improve how fonts are parsed from the preferences file
-X this was causing strange errors as prefs files became corrupted
-
-earlier
-X made changes to keywords.txt, but this is broken--it's autogenerated
-X keywords/reference
-X map is going to null reference, not colored properly
-X add beginRaw, endRaw, map to keywords.txt
-X find in reference problems
-X ? doesn't work with find in reference (actually came up as 'null')
-X "find in ref" on XMLElement brings up ref for null (ha)
-o should we use if() or if in the reference
-X include docs for moviemaker
-X also changed finishMovie() to stop() (for consistency)
-X only inside size() should gray bg and white fill get called (defaults)
-X defaults() is separate from beginDraw/endDraw init/end stuff
-o add to sketchbook menu:
-o "recent sketches" option (only for things that still exist)
-o turn this off by default
-o "reload sketchbook" option
-o "show sketchbook folder"
-X start removing pre-1.4 support
-X multiple windows
-o what happens when p5 is launched without all its pieces?
-o both on windows and mac... is there a way put up useful message
-o if everything moved into the .app file, how do you add applet.html?
-o can we use useragent to determine whether java 1.4 is in use?
-o for mac, could see if it's an old safari (1.3) or firefox (also 1.3)
-o for windows, the classid will take care of it all (firefox too?)
-o for linux, everyone's using 1.4/1.5 anyway
-X rewrite section on versions of java
-X we're dropping support for anything before 1.4
-X and don't recommend anything before 1.4.2
-X we'll support 1.5 a little more now, but only libraries, not syntax
-X no support for java 1.6 anytime soon
-X to use 1.5+ syntax, use p5 embedded in eclipse
-X what's with this fill() bug?
-X https://download.processing.org/bugzilla/468.html
-X background() also not making it through to raw recorder
-X this should be fixed, just double-check
-X add option to prefs to override memory settings
-X it's a checkbox, when used it will force external runtime
-X include a fill-in box with the default and various other settings
-X values are in megabytes
-o reload sketchbook option w/o restarting p5
-o students want to manipulate the sketchbook itself
-X update javadoc on web site to include xml ref
-X probably need to traverse into xml and candy folders.. others?
-
-
-0134 pde
-X fix problem with fractional px sizes and adobe cs3
-X https://download.processing.org/bugzilla/667.html
-X fix candy bug where width/height were undefined if "px" was used
-X some svg files include "px" in the width/height parameters
-X shortcuts in tab menu should use shift
-X remove shortcut for rename, and use ctrl-shift-n for new tab
-X https://download.processing.org/bugzilla/665.html
-X fix problem with "save as" under linux
-X say that quicktime 6 is no longer supported
-X winvdig issues?
-X add note that "quicktime alternative" is not sufficient
-X problems with serial on leopard
-X grab rxtx libraries from arduino, they've disabled locking
-X https://download.processing.org/bugzilla/227.html
-X http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Electronics;action=display;num=1193459849
-X add note to reference about close/quit behavior
-X also add note that export will delete folders
-X add notes about expand() and objects to the reference
-X lots of additional ref changes for array functions
-
-
-0133 pde
-X fix problem with 'cancel' on "move sketch, create folder, continue"? msg
-X https://download.processing.org/bugzilla/658.html
-o archive sketch shouldn't include applet or application dirs
-o or should it? this was how projects were being uploaded for class...
-X ESC won't cancel rename
-X cmd-w doesn't close window of opened applet
-X both when running inside p5, or elsewhere
-X add variable 'external' set to true when running tethered
-X make note of new/open behavior (and toolbar) in the getting started ref
-o make more fixes to the key bindings
-o http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc/html/atg_keyboardshortcuts.asp
-o http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGUserInput/chapter_11_section_3.html#//apple_ref/doc/uid/TP30000361-TPXREF61
-
-
-0132 pde
-X sketch marked as untitled if opened into an untitled window from toolbar
-X when renaming an untitled sketch, need to save
-X otherwise it just renames, but leaves it in the temp folder
-o maybe disable rename when read-only or untitled?
-
-
-0131 pde
-o make loadFont() work properly with regular fonts?
-X no, because some renderers really need to create, not load it
-X would have to cache opengl fonts at different sizes, etc
-X document hint() commands for advanced reference
-X add note about gcj/gij to the platform notes
-o when writing javadoc for p5 sketches, only write from first tab
-X already was using code[0]
-X processing.video not working on windows in 126 through 130
-X https://download.processing.org/bugzilla/654.html
-X auto-delete of sketches might be dangerous
-X and probably no longer necessary
-X should toolbar new/open replace the items in the current window?
-X closing last sketch window... open an untitled document?
-X https://download.processing.org/bugzilla/634.html
-X when opening from the toolbar, replaces items in that window
-X when new/open from menu, creates a new window
-o don't bug the user about new release of p5 when they have it
-o add prefs option for "latest version run"
-o something also to track--people going to older releases
-X keeping this behavior, it's also the only way to know you're
-X running the wrong version when you accidentally open an oldie
-X createFont() needs to run 1.3+, and not in applets
-X where is the bug reference for this.. and can it be fixed?
-
-server/client stuff
-X add server/client notification thing for the nyu guys
-X add an event to Server that notifies when a Client disconnects
-X add docs for disconnectEvent for Client
-X proccessing.net.Client.write(int) terminates sketch when client disconnects.
-X https://download.processing.org/bugzilla/537.html
-X http://processing.org/discourse/yabb_beta/YaBB.cgi?board=LibraryProblems;action=display;num=1180713192
-X Server.write(bytes[]) hangs sketch on client disconnect.
-X https://download.processing.org/bugzilla/538.html
-o move the useful serial buffering fxns into net library
-X make the Client list public
-X http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1116056805
-
-cleaning
-o video problem in qt 7.2 with prepreroll, adding this to java.policy fixes:
-X just removed prepreroll in 0126
-grant {
- permission java.security.AllPermission;
-};
-
-
-0130 pde
-X fix keywords.txt problems with some constants being left out
-X http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1192873557
-X call doClose() when closing sketch window
-X otherwise it's leaving lots of windows around
-
-
-0129 pde
-X fixed up the reference for color commands, updated version
-
-
-0128 pde
-X fix macosx dist script to not require root password
-X was just a matter of not using sudo to write the image
-o hdiutil create -size 5m -fs HFS+ -volname Fooble foo
-o To mount the disk-image, without having it appear in the Finder:
-o hdiutil attach -nobrowse foo.dmg
-o The main advantage is that these don't require root privileges
-X change to jdk14 imports rather than 11 and 12 for preproc
-X though this will only happen when the prefs file is deleted
-
-
-0127 pde
-X mark untitled sketches as modified when adding files
-X opening an already open sketch will result in two identical sketches open
-X just bring the other window to the front
-X https://download.processing.org/bugzilla/636.html
-X replace untitled windows with opened sketches
-X but do so without opening a new window and hiding the other
-X re-enable update check (0126 wasn't reporting anything.. ugh)
-o remove the "ask for sketch name on create"
-o also remove shift-click behavior
-X add option to not close the environment when closing the last sketch
-
-documentation
-X make sure loadStrings(), loadImage(), etc all have security warning
-X rewrite the section on java versions to reflect 1.4 policy change
-o libraries should only be placed in the libraries folder
-o or in the sketchbook in a subfolder named 'libraries'?
-o what should the policy be?
-X keywords.txt needs revamp
-X CLOSE is missing
-X https://download.processing.org/bugzilla/637.html
-X syntax highlighting
-X add MIN_FLOAT, MAX_FLOAT, MIN_INT, MAX_INT
-X match() method
-X added getChild(name/path), getChildren(name/path) to xml library
-X add notes about these to the reference
-X needs a better example that includes subitems
-X fix example that doesn't use nf
-
-fixed in earlier releases
-X undo after "import library" makes a blank screen
-X http://processing.org/bugs/show_bug.cgi?id=41
-
-
-0126 pde
-o support for hashmap<> with 1.5 syntax
-o https://download.processing.org/bugzilla/459.html
-X handle open/sketchbook/examples differently
-X move examples folder to top-level menu
-X move open menu to its own
-X BGraphics, BImage, void loop() -> give an error saying it's old code
-X better yet, only do this when "not found" errors come up
-X need to fix changes.html because it lists out of date alpha->beta changes
-X added getChild(name/path), getChildren(name/path) to xml library
-o add notes about these to the reference
-o needs a better example that includes subitems
-X fix problem with export.txt files not working
-X https://download.processing.org/bugzilla/625.html
-X readStringUntil broken in net library
-X https://download.processing.org/bugzilla/606.html
-X add imageicon for the find dialog
-X also the tools menu items and preferences
-X https://download.processing.org/bugzilla/627.html
-X fix problem with ctrl-, typing a comma on linux
-X on linux, drag and drop didn't accept
-X gets a zillion different items that come in
-X https://download.processing.org/bugzilla/595.html
-X show sketch folder on linux
-X fix for release 0126
-X add notes to the docs about how to fix if not working
-X http://processing.org/reference/environment/platforms.html#linux
-X adding a file to the sketch that already exists gives no confirm
-X winds up showing the item twice (if .java file at least)
-X (Table.pde showed twice after failed add)
-X after sketch -> add file, no confirmation message is shown
-o "one file added to sketch" should be more descriptive
-o Added "blah.jpg" to the data folder of the sketch
-
-multiple sketch support
-X basic structural moves to handle multiple sketches
-X properly mark macosx windows as modified
-X frame.getRootPane().putClientProperty("windowModified", modifiedParam);
-X get quit to work properly on macosx
-X open new sketch windows slightly offset from the previous
-o or start them in the upper-left corner of the screen?
-X when quitting, save all sketch windows and their locations
-X do this before checkModified, because it'll close them individually
-X if quitting when zero windows are open, mark as such and use untitled
-X first untitled sketch not being marked as modified
-X move untitled sketches to the tmp folder
-X then on save, do a save as that defaults to the sketch folder
-X clean up number of new/open/close functions in editor and in base
-X make sure drag and drop to open sketch is still working
-o make sure double-click pde to open is launching in p5
-X on first save, ask for the name of the project (with default)
-X set title of window to the sketch name
-X cmd-opt-r for rename, cmd-opt-n for new tab
-X save/saveas should use modal dialog
-X only use the bottom bar for name, rename, new tab
-X remove prompt mode (yes/no/cancel) from EditorStatus
-X improve speed of "new", which is calling the rebuild menus
-o keep one static list of all pairs of names/files in sketchbook
-X tough to do with the multiple directories/submenus
-o add methods for "add" and "remove" for sketches
-o also a rename method, which could just be a remove and add
-X libraries and examples won't be rebuilt during the session
-X editor console is broken, because re-routes System.out
-X test on windows
-X test on linux
-X make sure quit being handled properly on windows/linux
-X make clear that open() with one param should only have a single param
-
-
-0125 pde
-X prev/next tab conflicting with typing brackets on french macs
-X https://download.processing.org/bugzilla/480.html
-X update javadoc reference to include xml, candy, etc
-X update to 1.4.2_12 on linux and windows
-X export to web, wrong character encoding in html
-X https://download.processing.org/bugzilla/474.html
-X generate xhtml-1.0-strict (standards compliant) code for exported applets
-X https://download.processing.org/bugzilla/490.html
-X add auto-install of cab file inside applet.html
-X https://download.processing.org/bugzilla/181.html
-X http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/using_tags.html
-X http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/launch.html#creating
-X http://java.sun.com/update/1.4.2/jinstall-1_4_2_09-windows-i586.cab
-X or the 1.5 versions:
-X http://java.sun.com/update/1.5.0/jinstall-1_5_0_03-windows-i586.cab
-X PDE does not refresh code when using an External Editor
-X https://download.processing.org/bugzilla/515.html
-X preprocessor cannot handle L or l added to 'long' values
-X https://download.processing.org/bugzilla/492.html
-X change constructors for Capture, also framerate to frameRate
-X need to update reference
-X need to update example to use proper ordering
-X re-architect svg to properly inherit fill/stroke/etc from parents
-X