mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
Merge branch 'main' into gradle-welcome-screen
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
name: Pre-releases with Gradle
|
||||
name: Branch Builds
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
@@ -6,31 +6,58 @@ on:
|
||||
- '.all-contributorsrc'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
name: Test Processing
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Java
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew test
|
||||
build:
|
||||
name: Create Pre-release for ${{ matrix.os_prefix }} (${{ matrix.arch }})
|
||||
name: (${{ matrix.os_prefix }}/${{ matrix.arch }}) Create Processing Build
|
||||
runs-on: ${{ matrix.os }}
|
||||
permissions:
|
||||
contents: write
|
||||
needs: test
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: [self-hosted, linux, ARM64]
|
||||
- os: ubuntu-24.04-arm
|
||||
os_prefix: linux
|
||||
arch: aarch64
|
||||
binary: processing*.snap
|
||||
- os: ubuntu-latest
|
||||
os_prefix: linux
|
||||
arch: x64
|
||||
binary: processing*.snap
|
||||
- os: windows-latest
|
||||
os_prefix: windows
|
||||
arch: x64
|
||||
binary: msi/Processing-*.msi
|
||||
- os: macos-latest
|
||||
os_prefix: macos
|
||||
arch: x64
|
||||
binary: dmg/Processing-*.dmg
|
||||
- os: macos-latest
|
||||
os_prefix: macos
|
||||
arch: aarch64
|
||||
binary: dmg/Processing-*.dmg
|
||||
steps:
|
||||
- name: Install Snapcraft
|
||||
if: runner.os == 'Linux'
|
||||
uses: samuelmeuli/action-snapcraft@v3
|
||||
- name: Install LXD
|
||||
if: runner.os == 'Linux'
|
||||
uses: canonical/setup-lxd@main
|
||||
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Java
|
||||
@@ -41,19 +68,13 @@ jobs:
|
||||
architecture: ${{ matrix.arch }}
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew packageDistributionForCurrentOS
|
||||
- name: Add instructions
|
||||
if: ${{ matrix.os_prefix == 'macos' }}
|
||||
run: |
|
||||
echo "run 'xattr -d com.apple.quarantine Processing-${version}.dmg' to remove the quarantine flag" > ./app/build/compose/binaries/main/dmg/INSTRUCTIONS_FOR_TESTING.txt
|
||||
|
||||
- name: Add artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: processing-${{ github.ref_name }}-${{github.sha}}-${{ matrix.os_prefix }}-${{ matrix.arch }}-gradle
|
||||
path: |
|
||||
./app/build/compose/binaries/main/dmg/Processing-*.dmg
|
||||
./app/build/compose/binaries/main/dmg/INSTRUCTIONS_FOR_TESTING.txt
|
||||
./app/build/compose/binaries/main/msi/Processing-*.msi
|
||||
./app/build/compose/binaries/main/deb/processing*.deb
|
||||
name: processing-${{ matrix.os_prefix }}-${{ matrix.arch }}-br_${{ github.ref_name }}
|
||||
retention-days: 1
|
||||
path: app/build/compose/binaries/main/${{ matrix.binary }}
|
||||
@@ -1,37 +0,0 @@
|
||||
name: Maven Release
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Version to release'
|
||||
required: true
|
||||
default: '1.0.0'
|
||||
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
name: Create Processing Core Release on Maven Central
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: 17
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew publish
|
||||
env:
|
||||
MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
|
||||
MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
|
||||
|
||||
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
|
||||
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
|
||||
|
||||
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_IN_MEMORY_KEY }}
|
||||
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_IN_MEMORY_KEY_PASSWORD }}
|
||||
|
||||
ORG_GRADLE_PROJECT_version: ${{ github.event.inputs.version }}
|
||||
@@ -7,12 +7,26 @@ on:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Create Pull Request Build for ${{ matrix.os_prefix }} (${{ matrix.arch }})
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
name: Test Processing
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Java
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew test
|
||||
build:
|
||||
name: (${{ matrix.os_prefix }}/${{ matrix.arch }}) Create Processing Build
|
||||
runs-on: ${{ matrix.os }}
|
||||
permissions:
|
||||
pull-requests: write
|
||||
contents: read
|
||||
needs: test
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -20,19 +34,31 @@ jobs:
|
||||
- os: ubuntu-24.04-arm
|
||||
os_prefix: linux
|
||||
arch: aarch64
|
||||
binary: processing*.snap
|
||||
- os: ubuntu-latest
|
||||
os_prefix: linux
|
||||
arch: x64
|
||||
binary: processing*.snap
|
||||
- os: windows-latest
|
||||
os_prefix: windows
|
||||
arch: x64
|
||||
binary: msi/Processing-*.msi
|
||||
- os: macos-latest
|
||||
os_prefix: macos
|
||||
arch: x64
|
||||
binary: dmg/Processing-*.dmg
|
||||
- os: macos-latest
|
||||
os_prefix: macos
|
||||
arch: aarch64
|
||||
binary: dmg/Processing-*.dmg
|
||||
steps:
|
||||
- name: Install Snapcraft
|
||||
if: runner.os == 'Linux'
|
||||
uses: samuelmeuli/action-snapcraft@v3
|
||||
- name: Install LXD
|
||||
if: runner.os == 'Linux'
|
||||
uses: canonical/setup-lxd@main
|
||||
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Java
|
||||
@@ -43,19 +69,13 @@ jobs:
|
||||
architecture: ${{ matrix.arch }}
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew packageDistributionForCurrentOS
|
||||
- name: Add instructions
|
||||
if: ${{ matrix.os_prefix == 'macos' }}
|
||||
run: |
|
||||
echo "run 'xattr -d com.apple.quarantine Processing-${version}.dmg' to remove the quarantine flag" > ./app/build/compose/binaries/main/dmg/INSTRUCTIONS_FOR_TESTING.txt
|
||||
|
||||
- name: Add artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: processing-pr${{ github.event.pull_request.number }}-${{github.sha}}-${{ matrix.os_prefix }}-${{ matrix.arch }}-gradle
|
||||
path: |
|
||||
./app/build/compose/binaries/main/dmg/Processing-*.dmg
|
||||
./app/build/compose/binaries/main/dmg/INSTRUCTIONS_FOR_TESTING.txt
|
||||
./app/build/compose/binaries/main/msi/Processing-*.msi
|
||||
./app/build/compose/binaries/main/deb/processing*.deb
|
||||
name: processing-${{ matrix.os_prefix }}-${{ matrix.arch }}-pr_${{ github.event.pull_request.number }}
|
||||
retention-days: 5
|
||||
path: app/build/compose/binaries/main/${{ matrix.binary }}
|
||||
@@ -7,22 +7,50 @@ jobs:
|
||||
version:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
build_number: ${{ steps.tag_info.outputs.build_number }}
|
||||
revision: ${{ steps.tag_info.outputs.revision }}
|
||||
version: ${{ steps.tag_info.outputs.version }}
|
||||
steps:
|
||||
- name: Extract version and build number
|
||||
- name: Extract version and revision
|
||||
id: tag_info
|
||||
shell: bash
|
||||
run: |
|
||||
TAG_NAME="${GITHUB_REF#refs/tags/}"
|
||||
BUILD_NUMBER=$(echo "$TAG_NAME" | cut -d'-' -f2)
|
||||
REVISION=$(echo "$TAG_NAME" | cut -d'-' -f2)
|
||||
VERSION=$(echo "$TAG_NAME" | cut -d'-' -f3)
|
||||
|
||||
# Set outputs for use in later jobs or steps
|
||||
echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT
|
||||
echo "revision=$REVISION" >> $GITHUB_OUTPUT
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
reference:
|
||||
name: Publish Processing Reference to release
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
needs: version
|
||||
steps:
|
||||
- name: Checkout Website Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: processing/processing-website
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Build
|
||||
run: npm run build
|
||||
- name: Make reference.zip
|
||||
run: npm run zip
|
||||
- name: Upload reference to release
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
asset_name: processing-${{ needs.version.outputs.version }}-reference.zip
|
||||
file: reference.zip
|
||||
|
||||
publish:
|
||||
name: Publish Processing Core to Maven Central
|
||||
name: Publish Processing Libraries to Maven Central
|
||||
runs-on: ubuntu-latest
|
||||
needs: version
|
||||
steps:
|
||||
@@ -35,6 +63,7 @@ jobs:
|
||||
java-version: 17
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew publish
|
||||
env:
|
||||
@@ -48,9 +77,9 @@ jobs:
|
||||
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_IN_MEMORY_KEY_PASSWORD }}
|
||||
|
||||
ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }}
|
||||
ORG_GRADLE_PROJECT_group: ${{ vars.PROCESSING_GROUP }}
|
||||
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
|
||||
build:
|
||||
name: Publish Release for ${{ matrix.os_prefix }} (${{ matrix.arch }})
|
||||
name: (${{ matrix.os_prefix }}/${{ matrix.arch }}) Create Processing Release
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: version
|
||||
permissions:
|
||||
@@ -59,26 +88,47 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
# compiling for arm32 needs a self-hosted runner on Raspi OS (32-bit)
|
||||
- os: [self-hosted, linux, ARM]
|
||||
- os: ubuntu-24.04-arm
|
||||
os_prefix: linux
|
||||
arch: arm
|
||||
arch: aarch64
|
||||
binary: ${{ vars.SNAP_NAME }}_${{ needs.version.outputs.version }}_arm64
|
||||
extension: snap
|
||||
- os: ubuntu-latest
|
||||
os_prefix: linux
|
||||
arch: x64
|
||||
binary: ${{ vars.SNAP_NAME }}_${{ needs.version.outputs.version }}_amd64
|
||||
extension: snap
|
||||
- os: windows-latest
|
||||
os_prefix: windows
|
||||
arch: x64
|
||||
binary: msi/Processing-${{ needs.version.outputs.version }}
|
||||
extension: msi
|
||||
- os: macos-latest
|
||||
os_prefix: macos
|
||||
arch: x64
|
||||
binary: dmg/Processing-${{ needs.version.outputs.version }}
|
||||
extension: dmg
|
||||
- os: macos-latest
|
||||
os_prefix: macos
|
||||
arch: aarch64
|
||||
- os: macos-latest
|
||||
os_prefix: linux
|
||||
arch: aarch64
|
||||
binary: dmg/Processing-${{ needs.version.outputs.version }}
|
||||
extension: dmg
|
||||
steps:
|
||||
- name: Install Certificates for Code Signing
|
||||
if: runner.os == 'macOS'
|
||||
continue-on-error: true
|
||||
uses: apple-actions/import-codesign-certs@v3
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
|
||||
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
|
||||
|
||||
- name: Install Snapcraft
|
||||
if: runner.os == 'Linux'
|
||||
uses: samuelmeuli/action-snapcraft@v3
|
||||
- name: Install LXD
|
||||
if: runner.os == 'Linux'
|
||||
uses: canonical/setup-lxd@main
|
||||
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Java
|
||||
@@ -89,25 +139,53 @@ jobs:
|
||||
architecture: ${{ matrix.arch }}
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
# - name: Install Certificates for Code Signing
|
||||
# if: ${{ matrix.os_prefix == 'macos' }}
|
||||
# uses: apple-actions/import-codesign-certs@v3
|
||||
# with:
|
||||
# p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
|
||||
# p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew packageDistributionForCurrentOS
|
||||
env:
|
||||
env:
|
||||
ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }}
|
||||
ORG_GRADLE_PROJECT_group: ${{ vars.PROCESSING_GROUP }}
|
||||
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
|
||||
ORG_GRADLE_PROJECT_revision: ${{ needs.version.outputs.revision }}
|
||||
ORG_GRADLE_PROJECT_compose.desktop.verbose: true
|
||||
ORG_GRADLE_PROJECT_compose.desktop.mac.sign: ${{ secrets.PROCESSING_SIGNING }}
|
||||
ORG_GRADLE_PROJECT_compose.desktop.mac.signing.identity: ${{ secrets.PROCESSING_SIGNING_IDENTITY }}
|
||||
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.appleID: ${{ secrets.PROCESSING_APPLE_ID }}
|
||||
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.password: ${{ secrets.PROCESSING_APP_PASSWORD }}
|
||||
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.teamID: ${{ secrets.PROCESSING_TEAM_ID }}
|
||||
ORG_GRADLE_PROJECT_snapname: ${{ vars.SNAP_NAME }}
|
||||
|
||||
- name: Upload binaries to release
|
||||
- name: Upload portables to release
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: |
|
||||
./app/build/compose/binaries/main/dmg/Processing-*.dmg
|
||||
./app/build/compose/binaries/main/dmg/INSTRUCTIONS_FOR_TESTING.txt
|
||||
./app/build/compose/binaries/main/msi/Processing-*.msi
|
||||
./app/build/compose/binaries/main/deb/processing*.deb
|
||||
file_glob: true
|
||||
asset_name: processing-${{ needs.version.outputs.version }}-${{ matrix.os_prefix }}-${{ matrix.arch }}-portable.zip
|
||||
file: app/build/compose/binaries/main/Processing-${{ needs.version.outputs.version }}.zip
|
||||
|
||||
- name: Upload installers to release
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
asset_name: processing-${{ needs.version.outputs.version }}-${{ matrix.os_prefix }}-${{ matrix.arch }}.${{ matrix.extension }}
|
||||
file: app/build/compose/binaries/main/${{ matrix.binary }}.${{ matrix.extension }}
|
||||
|
||||
- name: Upload snap to Snap Store
|
||||
if: runner.os == 'Linux'
|
||||
run: snapcraft upload --release=beta app/build/compose/binaries/main/${{ matrix.binary }}.${{ matrix.extension }}
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.PROCESSING_SNAPCRAFT_TOKEN }}
|
||||
|
||||
- name: Sign files with Trusted Signing
|
||||
if: runner.os == 'Windows'
|
||||
uses: azure/trusted-signing-action@v0
|
||||
with:
|
||||
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
||||
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
|
||||
endpoint: https://eus.codesigning.azure.net/
|
||||
trusted-signing-account-name: vscx-codesigning
|
||||
certificate-profile-name: vscx-certificate-profile
|
||||
files-folder: app/build/compose/binaries/main/msi
|
||||
files-folder-filter: msi
|
||||
file-digest: SHA256
|
||||
timestamp-rfc3161: http://timestamp.acs.microsoft.com
|
||||
timestamp-digest: SHA256
|
||||
@@ -112,3 +112,4 @@ java/build/
|
||||
/core/examples/build
|
||||
|
||||
.build/
|
||||
/app/windows/obj
|
||||
|
||||
Generated
+5
@@ -0,0 +1,5 @@
|
||||
<svg width="800" height="800" viewBox="0 0 800 800" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M400 500C700 500 700 100 400 100" stroke="#0468FF" stroke-width="150"/>
|
||||
<path d="M400 200L100 600" stroke="#1F34AB" stroke-width="150"/>
|
||||
<path d="M100 300L200 500" stroke="#85AEFF" stroke-width="150"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 324 B |
Generated
-1
@@ -4,7 +4,6 @@
|
||||
<option name="env">
|
||||
<map>
|
||||
<entry key="DEBUG" value="true" />
|
||||
<entry key="ORG_GRADLE_PROJECT_version" value="Development Build" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="executionName" />
|
||||
|
||||
+282
-16
@@ -1,6 +1,12 @@
|
||||
import org.gradle.kotlin.dsl.support.zipTo
|
||||
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
|
||||
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
|
||||
|
||||
// TODO: Update to 2.10.20 and add hot-reloading: https://github.com/JetBrains/compose-hot-reload
|
||||
|
||||
@@ -14,9 +20,6 @@ plugins{
|
||||
alias(libs.plugins.download)
|
||||
}
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
repositories{
|
||||
mavenCentral()
|
||||
google()
|
||||
@@ -47,37 +50,38 @@ compose.desktop {
|
||||
mainClass = "processing.app.ui.Start"
|
||||
|
||||
jvmArgs(*listOf(
|
||||
Pair("processing.version", version),
|
||||
Pair("processing.revision", "1300"),
|
||||
Pair("processing.contributions.source", "https://contributions-preview.processing.org/contribs.txt"),
|
||||
Pair("processing.version", rootProject.version),
|
||||
Pair("processing.revision", findProperty("revision") ?: Int.MAX_VALUE),
|
||||
Pair("processing.contributions.source", "https://download.processing.org/contribs.txt"),
|
||||
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())
|
||||
|
||||
nativeDistributions{
|
||||
modules("jdk.jdi", "java.compiler", "jdk.accessibility", "jdk.zipfs")
|
||||
modules("jdk.jdi", "java.compiler", "jdk.accessibility", "jdk.zipfs", "java.management.rmi")
|
||||
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
|
||||
packageName = "Processing"
|
||||
|
||||
macOS{
|
||||
bundleID = "org.processing.app"
|
||||
iconFile = project.file("../build/macos/processing.icns")
|
||||
bundleID = "${rootProject.group}.app"
|
||||
iconFile = rootProject.file("build/macos/processing.icns")
|
||||
infoPlist{
|
||||
extraKeysRawXml = layout.projectDirectory.file("info.plist").asFile.readText()
|
||||
extraKeysRawXml = file("macos/info.plist").readText()
|
||||
}
|
||||
entitlementsFile.set(project.file("entitlements.plist"))
|
||||
runtimeEntitlementsFile.set(project.file("entitlements.plist"))
|
||||
entitlementsFile.set(file("macos/entitlements.plist"))
|
||||
runtimeEntitlementsFile.set(file("macos/entitlements.plist"))
|
||||
appStore = true
|
||||
}
|
||||
windows{
|
||||
iconFile = project.file("../build/windows/processing.ico")
|
||||
iconFile = rootProject.file("build/windows/processing.ico")
|
||||
menuGroup = "Processing"
|
||||
upgradeUuid = "89d8d7fe-5602-4b12-ba10-0fe78efbd602"
|
||||
}
|
||||
linux {
|
||||
appCategory = "Programming"
|
||||
menuGroup = "Processing"
|
||||
iconFile = project.file("../build/linux/processing.png")
|
||||
menuGroup = "Development;Programming;"
|
||||
iconFile = rootProject.file("build/linux/processing.png")
|
||||
// Fix fonts on some Linux distributions
|
||||
jvmArgs("-Dawt.useSystemAAFontSettings=on")
|
||||
|
||||
@@ -110,6 +114,8 @@ dependencies {
|
||||
|
||||
implementation(libs.compottie)
|
||||
implementation(libs.kaml)
|
||||
implementation(libs.markdown)
|
||||
implementation(libs.markdownJVM)
|
||||
|
||||
testImplementation(kotlin("test"))
|
||||
testImplementation(libs.mockitoKotlin)
|
||||
@@ -127,6 +133,172 @@ tasks.compileJava{
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
val version = if(project.version == "unspecified") "1.0.0" else project.version
|
||||
|
||||
tasks.register<Exec>("installCreateDmg") {
|
||||
onlyIf { org.gradle.internal.os.OperatingSystem.current().isMacOsX }
|
||||
commandLine("arch", "-arm64", "brew", "install", "--quiet", "create-dmg")
|
||||
}
|
||||
tasks.register<Exec>("packageCustomDmg"){
|
||||
onlyIf { org.gradle.internal.os.OperatingSystem.current().isMacOsX }
|
||||
group = "compose desktop"
|
||||
|
||||
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
|
||||
dependsOn(distributable, "installCreateDmg")
|
||||
|
||||
val packageName = distributable.packageName.get()
|
||||
val dir = distributable.destinationDir.get()
|
||||
val dmg = dir.file("../dmg/$packageName-$version.dmg").asFile
|
||||
val app = dir.file("$packageName.app").asFile
|
||||
|
||||
dmg.parentFile.deleteRecursively()
|
||||
dmg.parentFile.mkdirs()
|
||||
|
||||
val extra = mutableListOf<String>()
|
||||
val isSigned = compose.desktop.application.nativeDistributions.macOS.signing.sign.get()
|
||||
|
||||
if(!isSigned) {
|
||||
val content = """
|
||||
run 'xattr -d com.apple.quarantine Processing-${version}.dmg' to remove the quarantine flag
|
||||
""".trimIndent()
|
||||
val instructions = dmg.parentFile.resolve("INSTRUCTIONS.txt")
|
||||
instructions.writeText(content)
|
||||
extra.add("--add-file")
|
||||
extra.add("INSTRUCTIONS.txt")
|
||||
extra.add(instructions.path)
|
||||
extra.add("200")
|
||||
extra.add("25")
|
||||
}
|
||||
|
||||
commandLine("brew", "install", "--quiet", "create-dmg")
|
||||
|
||||
commandLine("create-dmg",
|
||||
"--volname", packageName,
|
||||
"--volicon", file("macos/volume.icns"),
|
||||
"--background", file("macos/background.png"),
|
||||
"--icon", "$packageName.app", "190", "185",
|
||||
"--window-pos", "200", "200",
|
||||
"--window-size", "658", "422",
|
||||
"--app-drop-link", "466", "185",
|
||||
"--hide-extension", "$packageName.app",
|
||||
*extra.toTypedArray(),
|
||||
dmg,
|
||||
app
|
||||
)
|
||||
}
|
||||
|
||||
tasks.register<Exec>("packageCustomMsi"){
|
||||
onlyIf { org.gradle.internal.os.OperatingSystem.current().isWindows }
|
||||
dependsOn("createDistributable")
|
||||
workingDir = file("windows")
|
||||
group = "compose desktop"
|
||||
|
||||
val version = if(version == "unspecified") "1.0.0" else version
|
||||
|
||||
commandLine(
|
||||
"dotnet",
|
||||
"build",
|
||||
"/p:Platform=x64",
|
||||
"/p:Version=$version",
|
||||
"/p:DefineConstants=\"Version=$version;\""
|
||||
)
|
||||
}
|
||||
|
||||
val snapname = findProperty("snapname") ?: rootProject.name
|
||||
val snaparch = when (System.getProperty("os.arch")) {
|
||||
"amd64", "x86_64" -> "amd64"
|
||||
"aarch64" -> "arm64"
|
||||
else -> System.getProperty("os.arch")
|
||||
}
|
||||
tasks.register("generateSnapConfiguration"){
|
||||
onlyIf { org.gradle.internal.os.OperatingSystem.current().isLinux }
|
||||
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
|
||||
dependsOn(distributable)
|
||||
|
||||
val dir = distributable.destinationDir.get()
|
||||
val content = """
|
||||
name: $snapname
|
||||
version: $version
|
||||
base: core22
|
||||
summary: A creative coding editor
|
||||
description: |
|
||||
Processing is a flexible software sketchbook and a programming language designed for learning how to code.
|
||||
confinement: strict
|
||||
|
||||
apps:
|
||||
processing:
|
||||
command: opt/processing/bin/Processing
|
||||
desktop: opt/processing/lib/processing-Processing.desktop
|
||||
environment:
|
||||
LD_LIBRARY_PATH: ${'$'}SNAP/opt/processing/lib/runtime/lib:${'$'}LD_LIBRARY_PATH
|
||||
LIBGL_DRIVERS_PATH: ${'$'}SNAP/usr/lib/${'$'}SNAPCRAFT_ARCH_TRIPLET/dri
|
||||
plugs:
|
||||
- desktop
|
||||
- desktop-legacy
|
||||
- wayland
|
||||
- x11
|
||||
- network
|
||||
- opengl
|
||||
|
||||
parts:
|
||||
processing:
|
||||
plugin: dump
|
||||
source: deb/processing_$version-1_$snaparch.deb
|
||||
source-type: deb
|
||||
stage-packages:
|
||||
- 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)
|
||||
}
|
||||
|
||||
tasks.register<Exec>("packageSnap"){
|
||||
onlyIf { org.gradle.internal.os.OperatingSystem.current().isLinux }
|
||||
dependsOn("packageDeb", "generateSnapConfiguration")
|
||||
group = "compose desktop"
|
||||
|
||||
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
|
||||
workingDir = distributable.destinationDir.dir("../").get().asFile
|
||||
commandLine("snapcraft")
|
||||
}
|
||||
tasks.register<Zip>("zipDistributable"){
|
||||
dependsOn("createDistributable", "setExecutablePermissions")
|
||||
group = "compose desktop"
|
||||
|
||||
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
|
||||
val dir = distributable.destinationDir.get()
|
||||
val packageName = distributable.packageName.get()
|
||||
|
||||
from(dir){ eachFile{ permissions{ unix("755") } } }
|
||||
archiveBaseName.set(packageName)
|
||||
destinationDirectory.set(dir.file("../").asFile)
|
||||
}
|
||||
|
||||
afterEvaluate{
|
||||
tasks.named("packageDmg").configure{
|
||||
dependsOn("packageCustomDmg")
|
||||
group = "compose desktop"
|
||||
actions = emptyList()
|
||||
}
|
||||
|
||||
tasks.named("packageMsi").configure{
|
||||
dependsOn("packageCustomMsi")
|
||||
group = "compose desktop"
|
||||
actions = emptyList()
|
||||
}
|
||||
tasks.named("packageDistributionForCurrentOS").configure {
|
||||
if(org.gradle.internal.os.OperatingSystem.current().isMacOsX
|
||||
&& compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent
|
||||
){
|
||||
dependsOn("notarizeDmg")
|
||||
}
|
||||
dependsOn("packageSnap", "zipDistributable")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// LEGACY TASKS
|
||||
// Most of these are shims to be compatible with the old build system
|
||||
@@ -242,6 +414,97 @@ tasks.register<Copy>("renameWindres") {
|
||||
}
|
||||
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
||||
into(dir)
|
||||
}
|
||||
tasks.register("signResources"){
|
||||
onlyIf {
|
||||
org.gradle.internal.os.OperatingSystem.current().isMacOsX
|
||||
&&
|
||||
compose.desktop.application.nativeDistributions.macOS.signing.sign.get()
|
||||
}
|
||||
group = "compose desktop"
|
||||
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{
|
||||
fileTree(resourcesPath)
|
||||
.matching { include("**/Info.plist") }
|
||||
.singleOrNull()
|
||||
?.let { file ->
|
||||
copy {
|
||||
from(file)
|
||||
into(resourcesPath)
|
||||
}
|
||||
}
|
||||
fileTree(resourcesPath) {
|
||||
include("**/*.jar")
|
||||
exclude("**/*.jar.tmp/**")
|
||||
}.forEach { file ->
|
||||
val tempDir = file.parentFile.resolve("${file.name}.tmp")
|
||||
copy {
|
||||
from(zipTree(file))
|
||||
into(tempDir)
|
||||
}
|
||||
file.delete()
|
||||
jars.add(tempDir)
|
||||
}
|
||||
fileTree(resourcesPath){
|
||||
include("**/bin/**")
|
||||
include("**/*.jnilib")
|
||||
include("**/*.dylib")
|
||||
include("**/*aarch64*")
|
||||
include("**/*x86_64*")
|
||||
include("**/*ffmpeg*")
|
||||
include("**/ffmpeg*/**")
|
||||
exclude("jdk-*/**")
|
||||
exclude("*.jar")
|
||||
exclude("*.so")
|
||||
exclude("*.dll")
|
||||
}.forEach{ file ->
|
||||
exec {
|
||||
commandLine("codesign", "--timestamp", "--force", "--deep","--options=runtime", "--sign", "Developer ID Application", file)
|
||||
}
|
||||
}
|
||||
jars.forEach { file ->
|
||||
FileOutputStream(File(file.parentFile, file.nameWithoutExtension)).use { fos ->
|
||||
ZipOutputStream(fos).use { zos ->
|
||||
file.walkTopDown().forEach { fileEntry ->
|
||||
if (fileEntry.isFile) {
|
||||
// Calculate the relative path for the zip entry
|
||||
val zipEntryPath = fileEntry.relativeTo(file).path
|
||||
val entry = ZipEntry(zipEntryPath)
|
||||
zos.putNextEntry(entry)
|
||||
|
||||
// Copy file contents to the zip
|
||||
fileEntry.inputStream().use { input ->
|
||||
input.copyTo(zos)
|
||||
}
|
||||
zos.closeEntry()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
file.deleteRecursively()
|
||||
}
|
||||
file(composeResources("Info.plist")).delete()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
afterEvaluate {
|
||||
tasks.named("prepareAppResources").configure {
|
||||
@@ -275,5 +538,8 @@ afterEvaluate {
|
||||
}
|
||||
}
|
||||
}
|
||||
tasks.findByName("createDistributable")?.finalizedBy("setExecutablePermissions")
|
||||
tasks.named("createDistributable").configure {
|
||||
dependsOn("signResources")
|
||||
finalizedBy("setExecutablePermissions")
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 497 KiB |
Binary file not shown.
@@ -0,0 +1,5 @@
|
||||
<svg width="900" height="900" viewBox="0 0 900 900" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M456.735 552.393L155.9 151.279" stroke="#A44D28" stroke-width="150.418"/>
|
||||
<path d="M757.575 452.113C456.738 552.391 456.738 752.948 155.903 652.67" stroke="#FF7D45" stroke-width="150.418"/>
|
||||
<path d="M556.832 552.392L456.555 51" stroke="#FFBEA2" stroke-width="150.418"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 386 B |
@@ -124,6 +124,7 @@ public class Base {
|
||||
|
||||
|
||||
static public void main(final String[] args) {
|
||||
Messages.log("Starting Processing version" + VERSION_NAME + " revision "+ REVISION);
|
||||
EventQueue.invokeLater(() -> {
|
||||
try {
|
||||
createAndShowGUI(args);
|
||||
|
||||
@@ -577,18 +577,25 @@ public class Platform {
|
||||
|
||||
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||
|
||||
/**
|
||||
* These methods were refactored to use the Preferences system instead of
|
||||
* actual environment variables, since modifying environment variables at runtime
|
||||
* proved problematic. This approach provides similar functionality
|
||||
* while being compatible with various platforms and execution environments.
|
||||
*
|
||||
* This abstraction maintains a consistent API for environment-like variable storage
|
||||
* while implementing it differently under the hood to work around runtime limitations.
|
||||
*/
|
||||
|
||||
static public void setenv(String variable, String value) {
|
||||
inst.setenv(variable, value);
|
||||
Preferences.set(variable, value);
|
||||
}
|
||||
|
||||
|
||||
static public String getenv(String variable) {
|
||||
return inst.getenv(variable);
|
||||
return Preferences.get(variable);
|
||||
}
|
||||
|
||||
|
||||
static public int unsetenv(String variable) {
|
||||
return inst.unsetenv(variable);
|
||||
throw new RuntimeException("unsetenv() not yet implemented");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ public class UpdateCheck {
|
||||
long now = System.currentTimeMillis();
|
||||
if (lastString != null) {
|
||||
long when = Long.parseLong(lastString);
|
||||
if (now - when < ONE_DAY) {
|
||||
if (now - when < ONE_DAY && !Base.DEBUG) {
|
||||
// don't annoy the shit outta people
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import processing.app.Base;
|
||||
import processing.app.Messages;
|
||||
import processing.app.UpdateCheck;
|
||||
import processing.app.Util;
|
||||
import processing.core.PApplet;
|
||||
@@ -228,6 +229,7 @@ public class ContributionListing {
|
||||
public void downloadAvailableList(final Base base,
|
||||
final ContribProgress progress) {
|
||||
// TODO: replace with SwingWorker [jv]
|
||||
Messages.log("Downloading contributions list from " + LISTING_URL);
|
||||
new Thread(() -> {
|
||||
downloadingLock.lock();
|
||||
|
||||
|
||||
@@ -257,31 +257,31 @@ public class DefaultPlatform {
|
||||
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||
|
||||
|
||||
public interface CLibrary extends Library {
|
||||
CLibrary INSTANCE = Native.load("c", CLibrary.class);
|
||||
int setenv(String name, String value, int overwrite);
|
||||
String getenv(String name);
|
||||
int unsetenv(String name);
|
||||
int putenv(String string);
|
||||
}
|
||||
|
||||
|
||||
public void setenv(String variable, String value) {
|
||||
CLibrary clib = CLibrary.INSTANCE;
|
||||
clib.setenv(variable, value, 1);
|
||||
}
|
||||
|
||||
|
||||
public String getenv(String variable) {
|
||||
CLibrary clib = CLibrary.INSTANCE;
|
||||
return clib.getenv(variable);
|
||||
}
|
||||
|
||||
|
||||
public int unsetenv(String variable) {
|
||||
CLibrary clib = CLibrary.INSTANCE;
|
||||
return clib.unsetenv(variable);
|
||||
}
|
||||
// public interface CLibrary extends Library {
|
||||
// CLibrary INSTANCE = Native.load("c", CLibrary.class);
|
||||
// int setenv(String name, String value, int overwrite);
|
||||
// String getenv(String name);
|
||||
// int unsetenv(String name);
|
||||
// int putenv(String string);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public void setenv(String variable, String value) {
|
||||
// CLibrary clib = CLibrary.INSTANCE;
|
||||
// clib.setenv(variable, value, 1);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public String getenv(String variable) {
|
||||
// CLibrary clib = CLibrary.INSTANCE;
|
||||
// return clib.getenv(variable);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public int unsetenv(String variable) {
|
||||
// CLibrary clib = CLibrary.INSTANCE;
|
||||
// return clib.unsetenv(variable);
|
||||
// }
|
||||
|
||||
|
||||
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||
|
||||
@@ -33,7 +33,8 @@ import processing.core.PApplet;
|
||||
|
||||
|
||||
public class LinuxPlatform extends DefaultPlatform {
|
||||
String homeDir;
|
||||
// Switched to use ~ as the home directory for compatibility with snap
|
||||
String homeDir = "~";
|
||||
|
||||
|
||||
public void initBase(Base base) {
|
||||
@@ -98,7 +99,7 @@ public class LinuxPlatform extends DefaultPlatform {
|
||||
File configHome = null;
|
||||
|
||||
// Check to see if the user has set a different location for their config
|
||||
String configHomeEnv = getenv("XDG_CONFIG_HOME");
|
||||
String configHomeEnv = System.getenv("XDG_CONFIG_HOME");
|
||||
if (configHomeEnv != null && !configHomeEnv.isBlank()) {
|
||||
configHome = new File(configHomeEnv);
|
||||
if (!configHome.exists()) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.MaterialTheme.colors
|
||||
import androidx.compose.material.MaterialTheme.typography
|
||||
import androidx.compose.material.Surface
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.*
|
||||
@@ -30,6 +31,17 @@ import androidx.compose.ui.window.application
|
||||
import androidx.compose.ui.window.rememberWindowState
|
||||
import com.formdev.flatlaf.util.SystemInfo
|
||||
import processing.app.ui.theme.*
|
||||
import com.mikepenz.markdown.compose.Markdown
|
||||
import com.mikepenz.markdown.m2.markdownColor
|
||||
import com.mikepenz.markdown.m2.markdownTypography
|
||||
import com.mikepenz.markdown.model.MarkdownColors
|
||||
import com.mikepenz.markdown.model.MarkdownTypography
|
||||
import processing.app.Base.getRevision
|
||||
import processing.app.Base.getVersionName
|
||||
import processing.app.ui.theme.LocalLocale
|
||||
import processing.app.ui.theme.LocalTheme
|
||||
import processing.app.ui.theme.Locale
|
||||
import processing.app.ui.theme.ProcessingTheme
|
||||
import java.awt.Cursor
|
||||
import java.awt.Dimension
|
||||
import java.awt.event.KeyAdapter
|
||||
@@ -64,27 +76,34 @@ class WelcomeToBeta {
|
||||
){
|
||||
val locale = LocalLocale.current
|
||||
Image(
|
||||
painter = painterResource("logo.svg"),
|
||||
painter = painterResource("bird.svg"),
|
||||
contentDescription = locale["beta.logo"],
|
||||
modifier = Modifier
|
||||
.align(Alignment.CenterVertically)
|
||||
.size(100.dp, 100.dp)
|
||||
.offset(0.dp, (-25).dp)
|
||||
)
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxHeight(),
|
||||
verticalArrangement = Arrangement
|
||||
.spacedBy(
|
||||
MaterialTheme.typography.subtitle1.lineHeight.value.dp,
|
||||
10.dp,
|
||||
alignment = Alignment.CenterVertically
|
||||
)
|
||||
) {
|
||||
Text(
|
||||
text = locale["beta.title"],
|
||||
style = MaterialTheme.typography.subtitle1,
|
||||
style = typography.subtitle1,
|
||||
)
|
||||
Text(
|
||||
text = locale["beta.message"]
|
||||
val text = locale["beta.message"]
|
||||
.replace('$' + "version", getVersionName())
|
||||
.replace('$' + "revision", getRevision().toString())
|
||||
Markdown(
|
||||
text,
|
||||
colors = markdownColor(),
|
||||
typography = markdownTypography(text = typography.body1, link = typography.body1.copy(color = colors.primary)),
|
||||
modifier = Modifier.background(Color.Transparent).padding(bottom = 10.dp)
|
||||
)
|
||||
Row {
|
||||
val window = LocalWindow.current
|
||||
|
||||
@@ -48,7 +48,7 @@ class SchemaTest {
|
||||
""".trimIndent()
|
||||
|
||||
val base64 = Base64.encode(sketch.toByteArray())
|
||||
Schema.handleSchema("pde://sketch/base64/$base64?pde=Module:$base64", base)
|
||||
Schema.handleSchema("pde://sketch/base64/$base64?pde=AnotherFile:$base64", base)
|
||||
val captor = ArgumentCaptor.forClass(String::class.java)
|
||||
|
||||
verify(base).handleOpenUntitled(captor.capture())
|
||||
@@ -57,7 +57,7 @@ class SchemaTest {
|
||||
assert(file.exists())
|
||||
assert(file.readText() == sketch)
|
||||
|
||||
val extra = file.parentFile.resolve("Module.pde")
|
||||
val extra = file.parentFile.resolve("AnotherFile.pde")
|
||||
assert(extra.exists())
|
||||
assert(extra.readText() == sketch)
|
||||
file.parentFile.deleteRecursively()
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,9 @@
|
||||
<Project Sdk="WixToolset.Sdk/5.0.1">
|
||||
<PropertyGroup>
|
||||
<OutputPath>..\build\compose\binaries\main\msi</OutputPath>
|
||||
<OutputName>Processing-$(Version)</OutputName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="WixToolset.UI.wixext" Version="5.0.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,35 @@
|
||||
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
|
||||
<Package Name="Processing" Manufacturer="Processing Foundation" Version="$(Version)" UpgradeCode="89d8d7fe-5602-4b12-ba10-0fe78efbd602">
|
||||
<Icon Id="icon.ico" SourceFile="..\..\build\windows\processing.ico" />
|
||||
<Property Id="ARPPRODUCTICON" Value="icon.ico" />
|
||||
|
||||
<MediaTemplate EmbedCab="yes" />
|
||||
|
||||
<ui:WixUI Id="WixUI_Mondo" InstallDirectory="INSTALLFOLDER" />
|
||||
|
||||
<WixVariable Id="WixUILicenseRtf" Value="LICENSE.rtf" />
|
||||
<WixVariable Id="WixUIDialogBmp" Value="background.png" />
|
||||
<WixVariable Id="WixUIBannerBmp" Value="banner.png" />
|
||||
<Feature Id="MainApplication" Title="Processing" Level="1">
|
||||
<Files Include="..\build\compose\binaries\main\app\Processing\**" />
|
||||
<ComponentRef Id="ApplicationShortcut" />
|
||||
</Feature>
|
||||
<Directory Id="ProgramMenuFolder">
|
||||
<Directory Id="ApplicationProgramsFolder" Name="Processing"/>
|
||||
</Directory>
|
||||
<Directory Id="ProgramFiles64Folder">
|
||||
<Directory Id="INSTALLFOLDER" Name="Processing">
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Component Id="ApplicationShortcut" Guid="b15e6d69-f054-4ec2-aade-8e3756b537d6">
|
||||
<Shortcut Id="ApplicationStartMenuShortcut"
|
||||
Name="Processing"
|
||||
Description="My Application Description"
|
||||
Directory="ApplicationProgramsFolder"
|
||||
Target="[INSTALLFOLDER]\Processing.exe"
|
||||
WorkingDirectory="INSTALLFOLDER"/>
|
||||
<RemoveFolder Id="CleanUpShortCut" Directory="ApplicationProgramsFolder" On="uninstall"/>
|
||||
<RegistryValue Root="HKCU" Key="Software\Processing Foundation\Processing" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
|
||||
</Component>
|
||||
</Package>
|
||||
</Wix>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
@@ -1,6 +1,3 @@
|
||||
group = "org.processing"
|
||||
version = "4.4.0"
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version libs.versions.kotlin apply false
|
||||
alias(libs.plugins.kotlinMultiplatform) apply false
|
||||
|
||||
@@ -6,8 +6,6 @@ plugins {
|
||||
alias(libs.plugins.mavenPublish)
|
||||
}
|
||||
|
||||
group = "org.processing"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven { url = uri("https://jogamp.org/deployment/maven") }
|
||||
@@ -23,6 +21,11 @@ sourceSets{
|
||||
exclude("**/*.java")
|
||||
}
|
||||
}
|
||||
test{
|
||||
java{
|
||||
srcDirs("test")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -70,4 +73,7 @@ tasks.test {
|
||||
}
|
||||
tasks.withType<Jar> {
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
}
|
||||
}
|
||||
tasks.compileJava{
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ jupiter = "5.12.0"
|
||||
[libraries]
|
||||
jogl = { module = "org.jogamp.jogl:jogl-all-main", version.ref = "jogl" }
|
||||
gluegen = { module = "org.jogamp.gluegen:gluegen-rt-main", version.ref = "jogl" }
|
||||
flatlaf = { module = "com.formdev:flatlaf", version = "3.4.1" }
|
||||
flatlaf = { module = "com.formdev:flatlaf", version = "2.4" }
|
||||
jna = { module = "net.java.dev.jna:jna", version = "5.12.1" }
|
||||
jnaplatform = { module = "net.java.dev.jna:jna-platform", version = "5.12.1" }
|
||||
compottie = { module = "io.github.alexzhirkevich:compottie", version = "2.0.0-rc02" }
|
||||
@@ -25,6 +25,8 @@ netbeansSwing = { module = "org.netbeans.api:org-netbeans-swing-outline", versio
|
||||
ant = { module = "org.apache.ant:ant", version = "1.10.14" }
|
||||
lsp4j = { module = "org.eclipse.lsp4j:org.eclipse.lsp4j", version = "0.22.0" }
|
||||
jsoup = { module = "org.jsoup:jsoup", version = "1.17.2" }
|
||||
markdown = { module = "com.mikepenz:multiplatform-markdown-renderer-m2", version = "0.31.0" }
|
||||
markdownJVM = { module = "com.mikepenz:multiplatform-markdown-renderer-jvm", version = "0.31.0" }
|
||||
|
||||
[plugins]
|
||||
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
|
||||
|
||||
@@ -5,8 +5,6 @@ plugins{
|
||||
id("com.vanniktech.maven.publish") version "0.30.0"
|
||||
}
|
||||
|
||||
group = "org.processing"
|
||||
|
||||
repositories{
|
||||
mavenCentral()
|
||||
google()
|
||||
|
||||
@@ -5,8 +5,6 @@ plugins{
|
||||
alias(libs.plugins.mavenPublish)
|
||||
}
|
||||
|
||||
group = "org.processing"
|
||||
|
||||
repositories{
|
||||
mavenCentral()
|
||||
google()
|
||||
|
||||
Reference in New Issue
Block a user