diff --git a/.all-contributorsrc b/.all-contributorsrc index 371401a6f..23c2827a3 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -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", diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 62e79ea0d..02a71ba3c 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -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 diff --git a/README.md b/README.md index 4c144f0f1..9d0a3ec18 100644 --- a/README.md +++ b/README.md @@ -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 Junology
Junology

💻 Jaap Meijers
Jaap Meijers

📖 + + Xin Xin
Xin Xin

📋 🤔 + Benjamin Fox
Benjamin Fox

💻 + e1dem
e1dem

💻 + diff --git a/app/src/processing/app/Sketch.java b/app/src/processing/app/Sketch.java index cbf7bd81e..8bb50352b 100644 --- a/app/src/processing/app/Sketch.java +++ b/app/src/processing/app/Sketch.java @@ -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 diff --git a/build/README.md b/build/README.md index eee366eef..75e596344 100644 --- a/build/README.md +++ b/build/README.md @@ -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 diff --git a/build/shared/lib/languages/PDE.properties b/build/shared/lib/languages/PDE.properties index 66fcf1729..02f98473e 100644 --- a/build/shared/lib/languages/PDE.properties +++ b/build/shared/lib/languages/PDE.properties @@ -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. diff --git a/build/shared/lib/languages/PDE_de.properties b/build/shared/lib/languages/PDE_de.properties index 2ffa28ea7..c44ec1365 100644 --- a/build/shared/lib/languages/PDE_de.properties +++ b/build/shared/lib/languages/PDE_de.properties @@ -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? diff --git a/build/shared/lib/languages/PDE_el.properties b/build/shared/lib/languages/PDE_el.properties index 53a8d36da..d4c794bde 100644 --- a/build/shared/lib/languages/PDE_el.properties +++ b/build/shared/lib/languages/PDE_el.properties @@ -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"; diff --git a/build/shared/lib/languages/PDE_es.properties b/build/shared/lib/languages/PDE_es.properties index 76bad95d1..781a5a261 100644 --- a/build/shared/lib/languages/PDE_es.properties +++ b/build/shared/lib/languages/PDE_es.properties @@ -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. diff --git a/build/shared/lib/languages/PDE_fr.properties b/build/shared/lib/languages/PDE_fr.properties index de0c66c42..4b43a35d5 100644 --- a/build/shared/lib/languages/PDE_fr.properties +++ b/build/shared/lib/languages/PDE_fr.properties @@ -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. diff --git a/build/shared/lib/languages/PDE_it.properties b/build/shared/lib/languages/PDE_it.properties index 9689c4760..9119de9c1 100644 --- a/build/shared/lib/languages/PDE_it.properties +++ b/build/shared/lib/languages/PDE_it.properties @@ -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. diff --git a/build/shared/lib/languages/PDE_ja.properties b/build/shared/lib/languages/PDE_ja.properties index fdce4bb81..b85fa2dc7 100644 --- a/build/shared/lib/languages/PDE_ja.properties +++ b/build/shared/lib/languages/PDE_ja.properties @@ -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"モードに切り替えられません。 diff --git a/build/shared/lib/languages/PDE_ko.properties b/build/shared/lib/languages/PDE_ko.properties index 0f13cb121..1e449dacc 100644 --- a/build/shared/lib/languages/PDE_ko.properties +++ b/build/shared/lib/languages/PDE_ko.properties @@ -308,6 +308,7 @@ editor.status.error.syntax = 구문 오류 - %s warn.delete = 삭제 warn.delete.sketch = 정말 해당 스케치를 삭제하시겠습니까? +warn.delete.sketch_last = 파일의 안전을 위해 Processing에서는 프로젝트 폴더 삭제를 지원하지 않습니다. \n파일 탐색기에서 프로젝트 폴더를 열어 삭제해 주세요. warn.delete.file = 정말 "%s"를 삭제하시겠습니까? diff --git a/build/shared/lib/languages/PDE_nl.properties b/build/shared/lib/languages/PDE_nl.properties index 1b6b9d5f0..9b9527517 100644 --- a/build/shared/lib/languages/PDE_nl.properties +++ b/build/shared/lib/languages/PDE_nl.properties @@ -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? diff --git a/build/shared/lib/languages/PDE_pt.properties b/build/shared/lib/languages/PDE_pt.properties index 6c957c033..44b5c7f63 100644 --- a/build/shared/lib/languages/PDE_pt.properties +++ b/build/shared/lib/languages/PDE_pt.properties @@ -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. \ No newline at end of file diff --git a/build/shared/lib/languages/PDE_ru.properties b/build/shared/lib/languages/PDE_ru.properties index f35ce1ccc..ff71d4ce4 100644 --- a/build/shared/lib/languages/PDE_ru.properties +++ b/build/shared/lib/languages/PDE_ru.properties @@ -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" не совместим с текущим режимом. diff --git a/build/shared/lib/languages/PDE_tr.properties b/build/shared/lib/languages/PDE_tr.properties index 1da470b4b..8b8b7f7f5 100644 --- a/build/shared/lib/languages/PDE_tr.properties +++ b/build/shared/lib/languages/PDE_tr.properties @@ -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. \ No newline at end of file diff --git a/build/shared/lib/languages/PDE_uk.properties b/build/shared/lib/languages/PDE_uk.properties index 8584ecda9..c4d4d6baf 100644 --- a/build/shared/lib/languages/PDE_uk.properties +++ b/build/shared/lib/languages/PDE_uk.properties @@ -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... \ No newline at end of file +movie_maker.progress.handling_frame = Конвертую кадр %s з %s... + diff --git a/build/shared/lib/languages/PDE_zh-CN.properties b/build/shared/lib/languages/PDE_zh-CN.properties index 5d2f8e1ee..97e3df413 100644 --- a/build/shared/lib/languages/PDE_zh-CN.properties +++ b/build/shared/lib/languages/PDE_zh-CN.properties @@ -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” 模式与当前模式不兼容。 \ No newline at end of file diff --git a/build/shared/lib/languages/PDE_zh-TW.properties b/build/shared/lib/languages/PDE_zh-TW.properties index b68c8489a..e3642d099 100644 --- a/build/shared/lib/languages/PDE_zh-TW.properties +++ b/build/shared/lib/languages/PDE_zh-TW.properties @@ -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 diff --git a/java/src/processing/mode/java/ErrorChecker.java b/java/src/processing/mode/java/ErrorChecker.java index 512d71d57..4424d111c 100644 --- a/java/src/processing/mode/java/ErrorChecker.java +++ b/java/src/processing/mode/java/ErrorChecker.java @@ -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; } diff --git a/java/src/processing/mode/java/PreprocSketch.java b/java/src/processing/mode/java/PreprocSketch.java index 394c7a3a4..c3a760970 100644 --- a/java/src/processing/mode/java/PreprocSketch.java +++ b/java/src/processing/mode/java/PreprocSketch.java @@ -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);