Merge branch 'processing:main' into main-gradle

This commit is contained in:
Stef Tervelde
2025-02-05 21:42:52 +01:00
committed by GitHub
22 changed files with 132 additions and 19 deletions

View File

@@ -1428,6 +1428,34 @@
"contributions": [
"doc"
]
},
{
"login": "xinemata",
"name": "Xin Xin",
"avatar_url": "https://avatars.githubusercontent.com/u/9159424?v=4",
"profile": "https://github.com/xinemata",
"contributions": [
"eventOrganizing",
"ideas"
]
},
{
"login": "tracerstar",
"name": "Benjamin Fox",
"avatar_url": "https://avatars.githubusercontent.com/u/234190?v=4",
"profile": "http://benjaminfoxstudios.com",
"contributions": [
"code"
]
},
{
"login": "e1dem",
"name": "e1dem",
"avatar_url": "https://avatars.githubusercontent.com/u/32488297?v=4",
"profile": "https://github.com/e1dem",
"contributions": [
"code"
]
}
],
"repoType": "github",

View File

@@ -55,7 +55,7 @@ jobs:
- name: Build Release
run: ant -noinput -buildfile build/build.xml ${{ matrix.os_prefix }}-dist -Dversion="${{ github.sha }}" -Dplatform=${{ matrix.os_prefix }}
- name: Add artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
id: upload
with:
name: processing-pr${{ github.event.pull_request.number }}-${{github.sha}}-${{ matrix.os_prefix }}-${{ matrix.arch }}-ant

View File

@@ -64,7 +64,7 @@ For licensing information about the Processing website see the [processing-websi
Copyright (c) 2015-now The Processing Foundation
## Contributors
## All Contributors List
Add yourself to the contributors list [here](https://github.com/processing/processing4-carbon-aug-19/issues/839)!
@@ -281,6 +281,11 @@ Add yourself to the contributors list [here](https://github.com/processing/proce
<td align="center" valign="top" width="16.66%"><a href="http://d.hatena.ne.jp/junology/"><img src="https://avatars.githubusercontent.com/u/1933073?v=4?s=120" width="120px;" alt="Junology"/><br /><sub><b>Junology</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=Junology" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/twisst"><img src="https://avatars.githubusercontent.com/u/2244463?v=4?s=120" width="120px;" alt="Jaap Meijers"/><br /><sub><b>Jaap Meijers</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=twisst" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/xinemata"><img src="https://avatars.githubusercontent.com/u/9159424?v=4?s=120" width="120px;" alt="Xin Xin"/><br /><sub><b>Xin Xin</b></sub></a><br /><a href="#eventOrganizing-xinemata" title="Event Organizing">📋</a> <a href="#ideas-xinemata" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://benjaminfoxstudios.com"><img src="https://avatars.githubusercontent.com/u/234190?v=4?s=120" width="120px;" alt="Benjamin Fox"/><br /><sub><b>Benjamin Fox</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=tracerstar" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/e1dem"><img src="https://avatars.githubusercontent.com/u/32488297?v=4?s=120" width="120px;" alt="e1dem"/><br /><sub><b>e1dem</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=e1dem" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -659,11 +659,25 @@ public class Sketch {
return;
}
if(currentIndex == 0){
Object[] options = { Language.text("menu.sketch.show_sketch_folder"), Language.text("prompt.cancel") };
int result = JOptionPane.showOptionDialog(editor,
Language.interpolate("warn.delete.sketch_last", getName()),
Language.text("warn.delete"),
JOptionPane.YES_NO_OPTION,
JOptionPane.ERROR_MESSAGE,
null,
options,
options[1]);
if (result == JOptionPane.YES_OPTION) {
Platform.openFolder(folder);
}
return;
}
// confirm deletion with user, yes/no
Object[] options = { Language.text("prompt.ok"), Language.text("prompt.cancel") };
String prompt = (currentIndex == 0) ?
Language.interpolate("warn.delete.sketch_folder", getName()) :
Language.interpolate("warn.delete.sketch_file", current.getPrettyName());
String prompt = Language.interpolate("warn.delete.sketch_file", current.getPrettyName());
int result = JOptionPane.showOptionDialog(editor,
prompt,
Language.text("warn.delete"),
@@ -672,6 +686,7 @@ public class Sketch {
null,
options,
options[0]);
// TODO: Remove the code to remove the entire sketch folder
if (result == JOptionPane.YES_OPTION) {
if (currentIndex == 0) { // delete the entire sketch
// need to unset all the modified flags, otherwise tries

View File

@@ -9,8 +9,9 @@ First, [download the IntelliJ IDEA Community Edition](https://www.jetbrains.com/
1. Clone the Processing4 repository to your machine locally
1. Open the cloned repository in IntelliJ IDEA CE
1. Click `Install Required Plugins` on the bottom right or in the notification tray
1. In the main menu, go to File > Project Structure > Project Settings > Project.
1. In the SDK Dropdown option, select a JDK version 17 or Download the jdk
1. Open the `Project Structure` window (`Ctrl+Alt+Shift+S` on Windows/Linux or `⌘;` on macOS)
2. Go to `Project Settings > Project`
1. In the SDK Dropdown option, select a JDK version 17 or `Download a JDK`
1. Select your platform (Windows, MacOS or Linux) in the top right of the window
1. Click the green Run Icon next to it
1. Logs can be found in the `messages` or `run` pane on the bottom left of the window

View File

@@ -600,6 +600,7 @@ contrib.import.errors.link = Error: The library %s has a strange looking downloa
warn.delete = Delete
warn.delete.sketch_folder = Are you sure you want to delete this sketch?\nThis will remove the entire “%s” folder.
warn.delete.sketch_last = To keep your files safe, deleting the whole sketch folder is not supported in Processing. \nPlease open the sketch folder in your file explorer to delete it.
warn.delete.sketch_file = Are you sure you want to delete “%s”?
warn.cannot_change_mode.title = Cannot change mode
warn.cannot_change_mode.body = Cannot change mode,\nbecause “%s” mode is not compatible with current mode.

View File

@@ -407,6 +407,7 @@ editor.status.error.syntax = Syntaxfehler - %s
warn.delete = Löschen
warn.delete.sketch = Den Sketch endgültig löschen?
warn.delete.sketch_last = Um deine Dateien sicher zu halten, wird das Löschen des gesamten Sketch-Ordners in Processing nicht unterstützt. \nBitte öffne den Sketch-Ordner in deinem Datei-Explorer, um ihn zu löschen.
warn.delete.file = Die Datei "%s" entgültig löschen?

View File

@@ -478,6 +478,7 @@ contrib.import.errors.link = Error: The library %s has a strange looking downloa
warn.delete = Διαγραφή
warn.delete.sketch = Είσαι σίγουρος ότι θέλεις να διαγραφεί το Σχέδιο;
warn.delete.sketch_last = Για να διατηρήσετε τα αρχεία σας ασφαλή, η διαγραφή ολόκληρου του φακέλου Σχεδίου δεν υποστηρίζεται στο Processing.\nΠαρακαλούμε ανοίξτε το φάκελο Σχεδίου στον εξερευνητή αρχείων για να το διαγράψετε.
warn.delete.file = Είσαι σίγουρος ότι θέλεις να διαγράψεις το "%s";

View File

@@ -599,6 +599,7 @@ contrib.import.errors.link = Error: el enlace de descarga de la biblioteca «%s
warn.delete = Eliminar
warn.delete.sketch_folder = ¿Seguro que quieres eliminar el sketch?\nEsto suprimirá la carpeta «%s» y todo su contenido.
warn.delete.sketch_last = Para mantener tus archivos seguros, no se admite eliminar toda la carpeta del sketch en Processing.\nAbre la carpeta del sketch en tu explorador de archivos para eliminarla.
warn.delete.sketch_file = ¿Seguro que quieres eliminar el archivo «%s»?
warn.cannot_change_mode.title = Error cambio de modo
warn.cannot_change_mode.body = No se puede cambiar al modo «%s»\nporque no es compatible con el modo actual.

View File

@@ -487,7 +487,9 @@ contrib.import.errors.link = Erreur : Le lien de téléchargement de la biblioth
# Warnings
warn.delete = Supprimer
warn.delete.sketch = Êtes-vous sûr(e) de vouloir supprimer ce sketch?
warn.delete.sketch = Êtes-vous sûr(e) de vouloir supprimer ce sketch? \nLe dossier “%s” sera entièrement effacé.
# warn.delete.sketch_last = To keep your files safe, deleting the whole sketch folder isn?t supported in Processing. \nPlease open the sketch folder in your file explorer to delete it.
warn.delete.sketch_last = Pour protéger vos fichiers, la suppression du dossier de sketch entier n'est pas prise en charge dans Processing. \nVeuillez ouvrir le dossier de sketch dans votre explorateur de fichiers pour le supprimer.
warn.delete.file = Êtes-vous sûr(e) de vouloir supprimer «%s»?
warn.cannot_change_mode.title = Impossible de changer le mode
warn.cannot_change_mode.body = Impossible de changer de mode, \ncar le mode "%s" n'est pas compatible avec le mode actuel.

View File

@@ -533,6 +533,7 @@ contrib.import.errors.link = Errore: la libreria %s ha uno strano link di downlo
warn.delete = Elimina
warn.delete.sketch = Sei sicuro di voler eliminare questo sketch?
warn.delete.sketch_last = Per mantenere i tuoi file al sicuro, l'eliminazione dell'intera cartella dello sketch non è supportata in Processing. \nPer favore apri la cartella dello sketch nel tuo esplora file per eliminarla.
warn.delete.file = Sei sicuro di voler eliminare "%s"?
warn.cannot_change_mode.title = Impossibile cambiare modalità
warn.cannot_change_mode.body = Impossibile cambiare modalità,\npoichè la modalità "%s" non è compatibile con quella corrente.

View File

@@ -537,6 +537,7 @@ contrib.import.errors.link = Error: The library %s has a strange looking downloa
warn.delete = 削除
warn.delete.sketch = このスケッチを削除してもよろしいですか?
warn.delete.sketch_last = ファイルの安全を保つため、Processing ではプロジェクトフォルダーの削除はサポートされていません。\nファイルエクスプローラーでプロジェクトフォルダーを開き、削除してください。
warn.delete.file = "%s"を削除してもよろしいですか?
warn.cannot_change_mode.title = モード変更失敗
warn.cannot_change_mode.body = 互換性がないため、"%s"モードに切り替えられません。

View File

@@ -308,6 +308,7 @@ editor.status.error.syntax = 구문 오류 - %s
warn.delete = 삭제
warn.delete.sketch = 정말 해당 스케치를 삭제하시겠습니까?
warn.delete.sketch_last = 파일의 안전을 위해 Processing에서는 프로젝트 폴더 삭제를 지원하지 않습니다. \n파일 탐색기에서 프로젝트 폴더를 열어 삭제해 주세요.
warn.delete.file = 정말 "%s"를 삭제하시겠습니까?

View File

@@ -305,6 +305,7 @@ contrib.unsupported_operating_system = Uw besturingssyteem wordt schijnbaar niet
warn.delete = Verwijderen
warn.delete.sketch = Weet u zeker dat u deze schets wil verwijderen?
warn.delete.sketch_last = Om je bestanden veilig te houden, wordt het verwijderen van de gehele schets niet ondersteund in Processing. \nOpen de schets map in je bestandsverkenner om deze te verwijderen.
warn.delete.file = Weet u zeker dat u "%s" wil verwijderen?

View File

@@ -253,3 +253,13 @@ contrib.progress.starting = A iniciar
contrib.progress.downloading = A descarregar
contrib.download_error = Ocorreu um erro ao descarregar a contribuição.
contrib.unsupported_operating_system = O seu sistema operativo não parece ser suportado. Deve visitar a biblioteca %s para mais informação.
# ---------------------------------------
# Warnings
warn.delete = Apagar
warn.delete.sketch_folder = Tem a certeza de que deseja apagar este sketch?\nIsto irá remover a pasta inteira “%s”.
warn.delete.sketch_last = Para manter os seus ficheiros seguros, apagar a pasta inteira do sketch não é suportado no Processing.\nPor favor, abra a pasta do sketch no seu explorador de ficheiros para a apagar.
warn.delete.sketch_file = Tem a certeza de que deseja apagar “%s”?
warn.cannot_change_mode.title = Não é possível mudar de modo
warn.cannot_change_mode.body = Não é possível mudar de modo,\nporque o modo “%s” não é compatível com o modo atual.

View File

@@ -547,6 +547,7 @@ contrib.import.errors.link = Ошибка: у библиотеки %s стран
warn.delete = Удалить
warn.delete.sketch = Вы уверены, что хотите удалить эскиз?
warn.delete.sketch_last = Чтобы сохранить ваши файлы в безопасности, удаление всей папки с наброском не поддерживается в Processing.\nПожалуйста, откройте папку с наброском в проводнике, чтобы удалить её.
warn.delete.file = Вы уверены, что хотите удалить "%s"?
warn.cannot_change_mode.title = Нельзя сменить режим
warn.cannot_change_mode.body = Не получается изменить режим,\nтак как "%s" не совместим с текущим режимом.

View File

@@ -232,3 +232,13 @@ editor.status.error.syntax = Hata - %s
contrib.category = Kategori:
contrib.filter_your_search = Aramayı Filtrele...
# ---------------------------------------
# Warnings
warn.delete = Sil
warn.delete.sketch_folder = Bu sketch'i silmek istediğinizden emin misiniz?\nBu işlem “%s” klasörünün tamamını silecektir.
warn.delete.sketch_last = Dosyalarınızı güvende tutmak için, tüm sketch klasörünü silmek Processing'de desteklenmemektedir.\nLütfen bu klasörü silmek için dosya gezgininizi kullanın.
warn.delete.sketch_file = “%s” dosyasını silmek istediğinizden emin misiniz?
warn.cannot_change_mode.title = Mod değiştirilemiyor
warn.cannot_change_mode.body = Mod değiştirilemiyor,\nçünkü “%s” modu mevcut modla uyumlu değil.

View File

@@ -594,6 +594,7 @@ contrib.import.errors.link = Помилка: У бібліотеки %s неді
warn.delete = Видалення
warn.delete.sketch = Ви впевнені, що хочете видалити цей ескіз?
warn.delete.sketch_last = Щоб зберегти ваші файли в безпеці, видалення всієї папки ескізу не підтримується в Processing.\nБудь ласка, відкрийте папку ескізу у вашому файловому менеджері, щоб видалити її.
warn.delete.file = Ви впевнені, що хочете видалити "%s"?
warn.cannot_change_mode.title = Зміна режиму неможлива
warn.cannot_change_mode.body = Зміна режиму неможлива,\nоскільки режим "%s" несумісний з поточним режимом.
@@ -649,4 +650,5 @@ movie_maker.progress.creating_output_file = Створюю вихідний фа
movie_maker.progress.initializing = Ініціалізація...
movie_maker.progress.processing = Обробляю %s.
movie_maker.progress.handling_frame = Конвертую кадр %s з %s...
movie_maker.progress.handling_frame = Конвертую кадр %s з %s...

View File

@@ -307,5 +307,10 @@ contrib.unsupported_operating_system = 你当前的操作系统似乎不被支
# Warnings
warn.delete = 删除
warn.delete.sketch = 你确定要删除该速写本?
warn.delete.file = 你确定删除 "%s"?
warn.delete.sketch = 你确定要删除该速写本吗?
warn.delete.sketch_folder = 你确定删除该速写本吗?\n这将删除整个 “%s” 文件夹。
warn.delete.sketch_last = 为了确保您的文件安全Processing 不支持删除整个速写本文件夹。\n请在文件管理器中打开速写本文件夹进行删除。
warn.delete.file = 你确定要删除 "%s" 吗?
warn.delete.sketch_file = 你确定要删除 “%s” 吗?
warn.cannot_change_mode.title = 无法切换模式
warn.cannot_change_mode.body = 无法切换模式,\n因为 “%s” 模式与当前模式不兼容。

View File

@@ -577,9 +577,10 @@ contrib.import.errors.link = 錯誤Error: 這個library %s 的下載網址有問
warn.delete = 刪除Delete...
warn.delete.sketch = 確定要刪除程式嗎?
warn.delete.file = 確定要刪除檔案 "%s" 嗎?
warn.cannot_change_mode.title = Cannot change mode
warn.cannot_change_mode.body = Cannot change mode,\nbecause "%s" mode is not compatible with current mode.
warn.delete.sketch_file = 您確定要刪除「%s」嗎
warn.delete.sketch_last = 為了保護您的檔案安全Processing 不支援刪除整個程式素描本資料夾。\n請在檔案總管中開啟該資料夾進行刪除。
warn.cannot_change_mode.title = 無法切換模式
warn.cannot_change_mode.body = 無法切換模式,\n因為「%s」模式與當前模式不相容。
# ---------------------------------------
# Update Check

View File

@@ -194,14 +194,29 @@ public class ErrorChecker {
static private JavaProblem convertIProblem(IProblem iproblem, PreprocSketch ps) {
SketchInterval in = ps.mapJavaToSketch(iproblem);
if (in != SketchInterval.BEFORE_START) {
String badCode = ps.getPdeCode(in);
int line = ps.tabOffsetToTabLine(in.tabIndex, in.startTabOffset);
JavaProblem p = JavaProblem.fromIProblem(iproblem, in.tabIndex, line, badCode);
String originalFileName = new String(iproblem.getOriginatingFileName());
boolean isJavaTab = ps.isJavaTab(originalFileName);
// Java tabs' content isn't stored in a sketch's combined source code file,
// so they are processed differently
if (!isJavaTab) {
SketchInterval in = ps.mapJavaToSketch(iproblem);
if (in != SketchInterval.BEFORE_START) {
String badCode = ps.getPdeCode(in);
int line = ps.tabOffsetToTabLine(in.tabIndex, in.startTabOffset);
JavaProblem p = JavaProblem.fromIProblem(iproblem, in.tabIndex, line, badCode);
p.setPDEOffsets(0, -1);
return p;
}
} else {
int tabIndex = ps.getJavaTabIndex(originalFileName);
int line = iproblem.getSourceLineNumber() - 1;
JavaProblem p = JavaProblem.fromIProblem(iproblem, tabIndex, line, "");
p.setPDEOffsets(0, -1);
return p;
}
return null;
}

View File

@@ -73,6 +73,16 @@ public class PreprocSketch {
}
public boolean isJavaTab(String fileName) {
return javaFileMapping.containsKey(fileName);
}
public int getJavaTabIndex(String fileName) {
return javaFileMapping.get(fileName);
}
public SketchInterval mapJavaToSketch(IProblem iproblem) {
String originalFile = new String(iproblem.getOriginatingFileName());
boolean isJavaTab = javaFileMapping.containsKey(originalFile);