Skip to content

Runner #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 80 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
971d98b
Preprocessor with antlr Plugin
Stefterv Jan 30, 2025
f016cc4
Removed core dependency from the pre-processor
Stefterv Feb 5, 2025
23c8a46
- Imports cleanup
Stefterv Feb 3, 2025
5468da0
Removed outdated ant backwards compatibility marks
Stefterv Feb 4, 2025
1b8a8ed
Gradle Plugin from PoC
Stefterv Feb 5, 2025
f4d7fbf
Changed naming
Stefterv Feb 5, 2025
7f00d5b
added example of plugin usage
Stefterv Feb 5, 2025
df745bb
Merge branch 'main-gradle' into gradle/preprocessor
Stefterv Feb 5, 2025
25e147e
Merge branch 'main-gradle' into gradle/plugin
Stefterv Feb 5, 2025
031d304
Merge branch 'main-gradle' into gradle/plugin
Stefterv Feb 5, 2025
e188336
Merge branch 'main-gradle' into gradle/preprocessor
Stefterv Feb 5, 2025
44ab816
disable full screen from settings and fixed a few bugs
Stefterv Feb 5, 2025
da852b4
Fullscreen support
Stefterv Feb 5, 2025
b1910de
Welcome Screen: Initial Frame
Stefterv Feb 7, 2025
bd3a77e
Welcome Screen: Window Abstraction
Stefterv Feb 7, 2025
5c020dd
Welcome Screen: Initial Layout
Stefterv Feb 7, 2025
8ed2d1b
Welcome Screen: WIP
Stefterv Feb 7, 2025
2f12d13
Saveable/Reactive Preferences
Stefterv Feb 7, 2025
b0c61a4
Welcome Screen: Load & Display examples
Stefterv Feb 8, 2025
3d81b02
Welcome Screen: Language selection
Stefterv Feb 8, 2025
cb184fb
Welcome Screen: Layout fixes
Stefterv Feb 9, 2025
3df4da9
Welcome Screen: Bugfixes
Stefterv Feb 9, 2025
8d8bd01
Welcome Screen: Close Functionality
Stefterv Feb 9, 2025
54944af
Welcome Screen: JDK Module
Stefterv Feb 9, 2025
0e56f89
Merge branch 'main-gradle' into gradle-welcome-screen
Stefterv Feb 9, 2025
babf54e
Merge branch 'gradle-loggin' into gradle-welcome-screen
Stefterv Feb 10, 2025
f126d4b
Merge branch 'processing:main' into gradle-plugin
Stefterv Mar 7, 2025
c28a267
Merge branch 'processing:main' into gradle-preprocessor
Stefterv Mar 7, 2025
7452d65
Merge branch 'main' into gradle-welcome-screen
Stefterv Mar 7, 2025
6974811
Merge branch 'test-schema' into gradle-welcome-screen
Stefterv Mar 11, 2025
0df4dc0
Merge branch 'main' into gradle-welcome-screen
Stefterv Mar 16, 2025
b0e7f96
Added initial tests
Stefterv Mar 17, 2025
d17ca0c
Removed PlatformStart and create new file if doesn't exist
Stefterv Mar 17, 2025
f7f22c5
Create Directory as well
Stefterv Mar 17, 2025
7e6c97a
Merge branch 'main' into gradle-plugin
Stefterv Mar 17, 2025
743ea14
Merge branch 'main' into gradle-preprocessor
Stefterv Mar 17, 2025
ad5c27e
Apply same parser & lexer fixes from before
Stefterv Mar 17, 2025
b0b12dd
Merge branch 'gradle-preprocessor' into gradle-plugin
Stefterv Mar 17, 2025
e01d02a
Update settings.gradle.kts
Stefterv Mar 17, 2025
ba49656
Adding tests and direct linking
Stefterv Mar 18, 2025
29d76eb
Merge branch 'processing:main' into gradle-plugin
Stefterv Mar 23, 2025
47d3428
More todo's
Stefterv Mar 23, 2025
bc063e8
Gradle Runner PoC
Stefterv Mar 26, 2025
3ad3654
Gradle Runner visual styling
Stefterv Mar 26, 2025
cdec594
Added export support
Stefterv Mar 26, 2025
672c2ac
Removed the need for settings.gradle.kts & Embedding maven repo
Stefterv Mar 27, 2025
e164fe4
Gradle variables from Processing, Group resolution
Stefterv Mar 27, 2025
5d71244
Plugin rework
Stefterv Mar 27, 2025
8f47d21
Scan libaries for dependencies
Stefterv Mar 27, 2025
f453eca
Merge remote-tracking branch 'upstream/fix-jdk-requirement' into runner
Stefterv Mar 27, 2025
c2071a0
Merge branch 'hide-scrollbars' into runner
Stefterv Mar 27, 2025
f762a3e
Added debugging
Stefterv Mar 27, 2025
1fae461
UI Cleanup
Stefterv Mar 27, 2025
700599e
Merge branch 'main' into runner
Stefterv Mar 28, 2025
00f8afa
Merge branch 'schema-threading' into runner
Stefterv Mar 28, 2025
3a14ff4
Added Stubs
Stefterv Mar 28, 2025
dd823a7
Fix plugin name in tests
Stefterv Mar 28, 2025
41ef1cc
Fix plugin name in tests
Stefterv Mar 28, 2025
73dfa0a
Only sign with signing set up
Stefterv Mar 29, 2025
bf82d53
Merge branch 'runner' of https://github.com/Stefterv/processing4 into…
Stefterv Mar 29, 2025
d6cb3ee
Fix for signing release
Stefterv Mar 29, 2025
b534c26
Merge branch 'main' into runner
Stefterv Mar 29, 2025
17acb01
Copy running JDK rather than download
Stefterv Mar 29, 2025
ab38e5f
Arguments refactor
Stefterv Mar 29, 2025
0d3795f
Gradle Runner, more variables
Stefterv Mar 29, 2025
4602ef1
Fixes for windows
Stefterv Mar 29, 2025
3d6a6ce
Merge branch 'processing:main' into gradle-welcome-screen
Stefterv Mar 30, 2025
947a90e
Toolbar functionality PoC
Stefterv Mar 30, 2025
701f9f5
Gradle Runner PoC Refactor
Stefterv Mar 30, 2025
36ce0ab
Runner: Fixing build errors
Stefterv Mar 31, 2025
15114a1
Retry vm debug connection
Stefterv Mar 31, 2025
6758d68
Richer console output and richer exception output
Stefterv Mar 31, 2025
2269fd3
Gradle Runner, build script management
Stefterv Apr 1, 2025
a870cd0
GradleJob Refactor
Stefterv Apr 1, 2025
221ee28
Toolbar UI design start
Stefterv Apr 1, 2025
97ec5e4
Merge branch 'gradle-welcome-screen' into runner
Stefterv Apr 1, 2025
7489870
Cleanup
Stefterv Apr 1, 2025
efa77bb
Cleanup
Stefterv Apr 1, 2025
3e89bfe
Merge branch 'runner' of https://github.com/Stefterv/processing4 into…
Stefterv Apr 17, 2025
612126a
Merge branch 'main' into runner
Stefterv Apr 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,9 @@ bin-test
processing-examples

# Maven ignores
/.kotlin/sessions
.gradle
.build/
core/build/
build/publish/
app/build
Expand All @@ -108,10 +110,20 @@ java/build/
/java/libraries/svg/bin
/java/preprocessor/build
/java/lsp/build
/java/gradle/build
/.kotlin/sessions
/core/examples/build
/java/gradle/build
/java/gradle/example/.processing

.build/
/app/windows/obj
/java/gradle/build
/java/gradle/example/.processing
/java/android/example/build
/java/android/example/.processing
/java/gradle/example/build
java/gradle/example/gradle/wrapper/gradle-wrapper.jar
java/gradle/example/gradle/wrapper/gradle-wrapper.properties
java/gradle/example/gradlew
java/gradle/example/gradlew.bat
10 changes: 10 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .kotlin/errors/errors-1743146568860.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
kotlin version: 2.0.20
error message: The daemon has terminated unexpectedly on startup attempt #1 with error code: 0. The daemon process output:
1. Kotlin compile daemon is ready

15 changes: 15 additions & 0 deletions app/ant/processing/app/gradle/GradleService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package processing.app.gradle;

import processing.app.ui.Editor;

public class GradleService {
public GradleService(Editor editor) { }

public void setEnabled(boolean enabled) {}
public boolean getEnabled() { return false; }
public void prepare(){}
public void run() {}
public void export(){}
public void stop() {}
public void startService() {}
}
13 changes: 13 additions & 0 deletions app/ant/processing/app/gradle/ui/Toolbar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package processing.app.gradle.ui;

import processing.app.ui.Editor;
import processing.app.ui.EditorToolbar;

import javax.swing.*;

public class Toolbar {
Toolbar(Editor editor){}
public static JComponent legacyWrapped(Editor editor, EditorToolbar toolbar){
return toolbar;
}
}
143 changes: 52 additions & 91 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import org.gradle.internal.jvm.Jvm
import org.gradle.kotlin.dsl.support.zipTo
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
import org.jetbrains.compose.ExperimentalComposeLibrary
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
import org.jetbrains.compose.internal.de.undercouch.gradle.tasks.download.Download
import org.jetbrains.kotlin.fir.scopes.impl.overrides
import java.io.FileOutputStream
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream
Expand Down Expand Up @@ -49,17 +50,21 @@ compose.desktop {
application {
mainClass = "processing.app.ui.Start"

jvmArgs(*listOf(
Pair("processing.version", rootProject.version),
Pair("processing.revision", findProperty("revision") ?: Int.MAX_VALUE),
Pair("processing.contributions.source", "https://contributions.processing.org/contribs"),
Pair("processing.download.page", "https://processing.org/download/"),
Pair("processing.download.latest", "https://processing.org/download/latest.txt"),
Pair("processing.tutorials", "https://processing.org/tutorials/"),
).map { "-D${it.first}=${it.second}" }.toTypedArray())

val variables = mapOf(
"processing.group" to (rootProject.group.takeIf { it != "" } ?: "processing"),
"processing.version" to rootProject.version,
"processing.revision" to (findProperty("revision") ?: Int.MAX_VALUE),
"processing.contributions.source" to "https://contributions.processing.org/contribs",
"processing.download.page" to "https://processing.org/download/",
"processing.download.latest" to "https://processing.org/download/latest.txt",
"processing.tutorials" to "https://processing.org/tutorials/"
)

jvmArgs(*variables.entries.map { "-D${it.key}=${it.value}" }.toTypedArray())

nativeDistributions{
modules("jdk.jdi", "java.compiler", "jdk.accessibility", "java.management.rmi")
modules("jdk.jdi", "java.compiler", "jdk.accessibility", "jdk.zipfs", "java.management.rmi")
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "Processing"

Expand Down Expand Up @@ -97,6 +102,7 @@ compose.desktop {

dependencies {
implementation(project(":core"))
runtimeOnly(project(":java"))

implementation(libs.flatlaf)

Expand All @@ -109,6 +115,7 @@ dependencies {
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation(compose.materialIconsExtended)

implementation(compose.desktop.currentOs)

Expand All @@ -121,6 +128,10 @@ dependencies {
testImplementation(libs.mockitoKotlin)
testImplementation(libs.junitJupiter)
testImplementation(libs.junitJupiterParams)

implementation(gradleApi())
@OptIn(ExperimentalComposeLibrary::class)
testImplementation(compose.uiTest)
}

tasks.test {
Expand Down Expand Up @@ -250,7 +261,6 @@ tasks.register("generateSnapConfiguration"){
- openjdk-17-jre
override-prime: |
snapcraftctl prime
chmod -R +x opt/processing/lib/app/resources/jdk-*
rm -vf usr/lib/jvm/java-17-openjdk-*/lib/security/cacerts
""".trimIndent()
dir.file("../snapcraft.yaml").asFile.writeText(content)
Expand All @@ -266,7 +276,7 @@ tasks.register<Exec>("packageSnap"){
commandLine("snapcraft")
}
tasks.register<Zip>("zipDistributable"){
dependsOn("createDistributable", "setExecutablePermissions")
dependsOn("createDistributable")
group = "compose desktop"

val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
Expand Down Expand Up @@ -298,9 +308,15 @@ afterEvaluate{
}
dependsOn("packageSnap", "zipDistributable")
}
tasks.named("prepareAppResources").configure {
dependsOn(
":core:publishAllPublicationsToAppRepository",
":java:gradle:publishAllPublicationsToAppRepository",
":java:preprocessor:publishAllPublicationsToAppRepository"
)
}
}


// LEGACY TASKS
// Most of these are shims to be compatible with the old build system
// They should be removed in the future, as we work towards making things more Gradle-native
Expand All @@ -322,41 +338,6 @@ tasks.register<Copy>("includeJavaMode") {
into(composeResources("modes/java/mode"))
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.register<Download>("includeJdk") {
val os = DefaultNativePlatform.getCurrentOperatingSystem()
val arch = when (System.getProperty("os.arch")) {
"amd64", "x86_64" -> "x64"
else -> System.getProperty("os.arch")
}
val platform = when {
os.isWindows -> "windows"
os.isMacOsX -> "mac"
else -> "linux"
}

val javaVersion = System.getProperty("java.version").split(".")[0]
val imageType = "jdk"

src("https://api.adoptium.net/v3/binary/latest/" +
"$javaVersion/ga/" +
"$platform/" +
"$arch/" +
"$imageType/" +
"hotspot/normal/eclipse?project=jdk")

val extension = if (os.isWindows) "zip" else "tar.gz"
val jdk = layout.buildDirectory.file("tmp/jdk-$platform-$arch.$extension")
dest(jdk)
overwrite(false)
doLast {
copy {
val archive = if (os.isWindows) { zipTree(jdk) } else { tarTree(jdk) }
from(archive){ eachFile{ permissions{ unix("755") } } }
into(composeResources(""))
}
}
finalizedBy("prepareAppResources")
}
tasks.register<Copy>("includeSharedAssets"){
from("../build/shared/")
into(composeResources(""))
Expand Down Expand Up @@ -401,21 +382,26 @@ tasks.register<Copy>("includeJavaModeResources") {
from(java.layout.buildDirectory.dir("resources-bundled"))
into(composeResources("../"))
}
tasks.register<Copy>("renameWindres") {
dependsOn("includeSharedAssets","includeJavaModeResources")
val dir = composeResources("modes/java/application/launch4j/bin/")
val os = DefaultNativePlatform.getCurrentOperatingSystem()
val platform = when {
os.isWindows -> "windows"
os.isMacOsX -> "macos"
else -> "linux"
}
from(dir) {
include("*-$platform*")
rename("(.*)-$platform(.*)", "$1$2")
tasks.register("includeJdk") {
dependsOn("createDistributable")
doFirst {
val jdk = Jvm.current().javaHome.absolutePath
val target = layout.buildDirectory.dir("compose/binaries").get().asFileTree.matching { include("**/include.jdk") }
.files
.firstOrNull()
?.parentFile
?.resolve("jdk")
?.absolutePath
?: error("Could not find include.jdk")

val isWindows = System.getProperty("os.name").lowercase().contains("win")
val command = if (isWindows) {
listOf("xcopy", "/E", "/I", "/Q", jdk, target)
} else {
listOf("cp", "-a", jdk, target)
}
ProcessBuilder(command).inheritIO().start().waitFor()
}
duplicatesStrategy = DuplicatesStrategy.INCLUDE
into(dir)
}
tasks.register("signResources"){
onlyIf {
Expand All @@ -427,19 +413,15 @@ tasks.register("signResources"){
dependsOn(
"includeCore",
"includeJavaMode",
"includeJdk",
"includeSharedAssets",
"includeProcessingExamples",
"includeProcessingWebsiteExamples",
"includeJavaModeResources",
"renameWindres"
)
finalizedBy("prepareAppResources")

val resourcesPath = composeResources("")



// find jars in the resources directory
val jars = mutableListOf<File>()
doFirst{
Expand Down Expand Up @@ -505,9 +487,8 @@ tasks.register("signResources"){
}
file(composeResources("Info.plist")).delete()
}


}

afterEvaluate {
tasks.named("prepareAppResources").configure {
dependsOn(
Expand All @@ -516,31 +497,11 @@ afterEvaluate {
"includeSharedAssets",
"includeProcessingExamples",
"includeProcessingWebsiteExamples",
"includeJavaModeResources",
"renameWindres"
"includeJavaModeResources"
)
}
tasks.register("setExecutablePermissions") {
description = "Sets executable permissions on binaries in Processing.app resources"
group = "compose desktop"

doLast {
val resourcesPath = layout.buildDirectory.dir("compose/binaries")
fileTree(resourcesPath) {
include("**/resources/**/bin/**")
include("**/resources/**/*.sh")
include("**/resources/**/*.dylib")
include("**/resources/**/*.so")
include("**/resources/**/*.exe")
}.forEach { file ->
if (file.isFile) {
file.setExecutable(true, false)
}
}
}
}
tasks.named("createDistributable").configure {
dependsOn("signResources", "includeJdk")
finalizedBy("setExecutablePermissions")
dependsOn("signResources")
finalizedBy("includeJdk")
}
}
Binary file added app/src/main/resources/default.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions app/src/main/resources/toolbar/More.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions app/src/main/resources/toolbar/Play.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions app/src/main/resources/toolbar/Screenshot.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions app/src/main/resources/toolbar/Settings.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions app/src/main/resources/toolbar/Sketch Settings.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions app/src/main/resources/toolbar/Stop.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions app/src/main/resources/welcome/intro/bubble.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions app/src/main/resources/welcome/intro/long.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading