From ddecd8fa4f8285fcd2f420ff6090c9e95779d236 Mon Sep 17 00:00:00 2001 From: leaf-soba Date: Thu, 31 Oct 2024 22:28:04 +0900 Subject: [PATCH 01/40] add pdf to bib (#12138) * add pdf to bib 1. remove double space in unit test 2. fix a logic bug about space. 3. skip the normal space in the title character 4. rename pdf use last name not first name * fix EqualsAvoidsNull issue fix EqualsAvoidsNull * fix unit test issue fix unit test issue * remove doi remove doi --- .../importer/fileformat/PdfContentImporter.java | 7 +++++-- .../importer/fileformat/PdfContentImporterTest.java | 2 +- .../{Roberto2002.pdf => Baldoni2002.pdf} | Bin .../pdfContentImporterTest-pdfs.bib | 8 ++++++++ 4 files changed, 14 insertions(+), 3 deletions(-) rename src/test/resources/pdfs/PdfContentImporter/{Roberto2002.pdf => Baldoni2002.pdf} (100%) diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfContentImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfContentImporter.java index 19d3979e603..ca266e8c895 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfContentImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfContentImporter.java @@ -254,6 +254,9 @@ private boolean isUnwantedText(TextPosition previousTextPosition, TextPosition t if (textPosition == null || previousTextPosition == null) { return false; } + if (StringUtil.isBlank(textPosition.getUnicode())) { + return true; + } // The title usually don't in the bottom 10% of a page. if ((textPosition.getPageHeight() - textPosition.getYDirAdj()) < (textPosition.getPageHeight() * 0.1)) { @@ -294,11 +297,11 @@ private boolean isLegalTitle(String candidateText) { } private boolean isThereSpace(TextPosition previous, TextPosition current) { - float XspaceThreshold = 0.5F; + float XspaceThreshold = 1F; float YspaceThreshold = previous.getFontSizeInPt(); float Xgap = current.getXDirAdj() - (previous.getXDirAdj() + previous.getWidthDirAdj()); float Ygap = current.getYDirAdj() - (previous.getYDirAdj() - previous.getHeightDir()); - return Xgap > XspaceThreshold || Ygap > YspaceThreshold; + return Math.abs(Xgap) > XspaceThreshold || Math.abs(Ygap) > YspaceThreshold; } } diff --git a/src/test/java/org/jabref/logic/importer/fileformat/PdfContentImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/PdfContentImporterTest.java index f54e5dab783..de6f276a015 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/PdfContentImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/PdfContentImporterTest.java @@ -139,7 +139,7 @@ void pdfTitleExtraction(String expectedTitle, String filePath) throws Exception private static Stream providePdfData() { return Stream.of( - Arguments.of("Fundamentals of Distributed Computing: A Practical Tour of Vector Clock Systems", "/pdfs/PdfContentImporter/Roberto2002.pdf"), + Arguments.of("Fundamentals of Distributed Computing: A Practical Tour of Vector Clock Systems", "/pdfs/PdfContentImporter/Baldoni2002.pdf"), Arguments.of("On How We Can Teach – Exploring New Ways in Professional Software Development for Students", "/pdfs/PdfContentImporter/Kriha2018.pdf"), Arguments.of("JabRef Example for Reference Parsing", "/pdfs/IEEE/ieee-paper.pdf"), Arguments.of("Paper Title", "/org/jabref/logic/importer/util/LNCS-minimal.pdf"), diff --git a/src/test/resources/pdfs/PdfContentImporter/Roberto2002.pdf b/src/test/resources/pdfs/PdfContentImporter/Baldoni2002.pdf similarity index 100% rename from src/test/resources/pdfs/PdfContentImporter/Roberto2002.pdf rename to src/test/resources/pdfs/PdfContentImporter/Baldoni2002.pdf diff --git a/src/test/resources/pdfs/PdfContentImporter/pdfContentImporterTest-pdfs.bib b/src/test/resources/pdfs/PdfContentImporter/pdfContentImporterTest-pdfs.bib index d17aadbaef1..775afea8fe7 100644 --- a/src/test/resources/pdfs/PdfContentImporter/pdfContentImporterTest-pdfs.bib +++ b/src/test/resources/pdfs/PdfContentImporter/pdfContentImporterTest-pdfs.bib @@ -126,3 +126,11 @@ @inproceedings{Keim2024TraceLinks doi = {10.1145/3597503.3639130} } +@inproceedings{Baldoni2002Fundamentals, +author = {Roberto Baldoni and Matthias Klusch} +abstract = {A distributed computation consists of a set of processes that cooperate to achieve a common goal. A main characteristic of these computations is that the processes do not already share a common global memory and that they communicate only by exchanging messages over a communication network. Moreover, message transfer delays are finite yet unpredictable. This computation model defines what is known as the asynchronous distributed system model, which includes systems that span large geographic areas and are subject to unpredictable loads.} +title = {Fundamentals of Distributed Computing: A Practical Tour of Vector Clock Systems} +url = {https://www.computer.org/csdl/magazine/ds/2002/02/o2001/13rRUEgs2Q8} +year = {2002} +file = {Baldoni2002.pdf} +} From 1fa587e24cead85ecc4b236d4d19eb4b717b4beb Mon Sep 17 00:00:00 2001 From: Christoph Date: Thu, 31 Oct 2024 19:06:19 +0100 Subject: [PATCH 02/40] New Crowdin updates (#12140) * New translations jabref_en.properties (French) * New translations jabref_en.properties (Polish) * New translations jabref_en.properties (Portuguese, Brazilian) * New translations jabref_en.properties (Spanish) * New translations jabref_en.properties (Arabic) * New translations jabref_en.properties (Danish) * New translations jabref_en.properties (German) * New translations jabref_en.properties (Greek) * New translations jabref_en.properties (Finnish) * New translations jabref_en.properties (Italian) * New translations jabref_en.properties (Japanese) * New translations jabref_en.properties (Korean) * New translations jabref_en.properties (Dutch) * New translations jabref_en.properties (Norwegian) * New translations jabref_en.properties (Portuguese) * New translations jabref_en.properties (Russian) * New translations jabref_en.properties (Swedish) * New translations jabref_en.properties (Turkish) * New translations jabref_en.properties (Ukrainian) * New translations jabref_en.properties (Chinese Simplified) * New translations jabref_en.properties (Chinese Traditional) * New translations jabref_en.properties (Vietnamese) * New translations jabref_en.properties (Indonesian) * New translations jabref_en.properties (Persian) * New translations jabref_en.properties (Tagalog) --- src/main/resources/l10n/JabRef_ar.properties | 3 +-- src/main/resources/l10n/JabRef_da.properties | 5 +---- src/main/resources/l10n/JabRef_de.properties | 5 +---- src/main/resources/l10n/JabRef_el.properties | 5 +---- src/main/resources/l10n/JabRef_es.properties | 5 +---- src/main/resources/l10n/JabRef_fa.properties | 3 +-- src/main/resources/l10n/JabRef_fi.properties | 1 - src/main/resources/l10n/JabRef_fr.properties | 5 +---- src/main/resources/l10n/JabRef_id.properties | 5 +---- src/main/resources/l10n/JabRef_it.properties | 10 ++++------ src/main/resources/l10n/JabRef_ja.properties | 5 +---- src/main/resources/l10n/JabRef_ko.properties | 5 +---- src/main/resources/l10n/JabRef_nl.properties | 5 +---- src/main/resources/l10n/JabRef_no.properties | 5 +---- src/main/resources/l10n/JabRef_pl.properties | 10 ++++------ src/main/resources/l10n/JabRef_pt.properties | 5 +---- src/main/resources/l10n/JabRef_pt_BR.properties | 9 +++------ src/main/resources/l10n/JabRef_ru.properties | 5 +---- src/main/resources/l10n/JabRef_sv.properties | 5 +---- src/main/resources/l10n/JabRef_tl.properties | 5 +---- src/main/resources/l10n/JabRef_tr.properties | 5 +---- src/main/resources/l10n/JabRef_uk.properties | 1 - src/main/resources/l10n/JabRef_vi.properties | 5 +---- src/main/resources/l10n/JabRef_zh_CN.properties | 5 +---- src/main/resources/l10n/JabRef_zh_TW.properties | 4 +--- 25 files changed, 31 insertions(+), 95 deletions(-) diff --git a/src/main/resources/l10n/JabRef_ar.properties b/src/main/resources/l10n/JabRef_ar.properties index 232cd19ac81..111db309d93 100644 --- a/src/main/resources/l10n/JabRef_ar.properties +++ b/src/main/resources/l10n/JabRef_ar.properties @@ -243,7 +243,6 @@ Import\ preferences\ from\ file=استيراد الإعدادات من ملف - JabRef\ preferences=إعدادات JabRef @@ -444,6 +443,7 @@ Error\ opening\ file=حدث خطأ أثناء فتح الملف + Rename\ field=إعادة تسمية الحقل @@ -722,6 +722,5 @@ File\ not\ found=لم يتم العثور على الملف - diff --git a/src/main/resources/l10n/JabRef_da.properties b/src/main/resources/l10n/JabRef_da.properties index 305b53e8601..c06c35711b1 100644 --- a/src/main/resources/l10n/JabRef_da.properties +++ b/src/main/resources/l10n/JabRef_da.properties @@ -305,8 +305,6 @@ Import\ preferences=Importer indstillinger Import\ preferences\ from\ file=Importer indstillinger fra fil -Imported\ entries=Importerede poster - Importer\ class=Importer-klasse Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Inkluder undergrupper\: Vis poster indeholdt i denne gruppe eller en undergruppe @@ -645,7 +643,7 @@ Could\ not\ move\ file\ '%0'.=Kunne ikke flytte fil '%0'. Could\ not\ find\ file\ '%0'.=Kunne ikke finde filen '%0'. Error\ opening\ file=Fejl ved åbning af fil -Number\ of\ entries\ successfully\ imported=Antal poster korrekt importeret + Error\ while\ fetching\ from\ %0=Fejl under hentning fra %0 Unable\ to\ open\ link.=Kan ikke åbne link. @@ -1013,6 +1011,5 @@ Path\ to\ %0=Sti til %0 - diff --git a/src/main/resources/l10n/JabRef_de.properties b/src/main/resources/l10n/JabRef_de.properties index eca5a43f8a3..8821a4c157c 100644 --- a/src/main/resources/l10n/JabRef_de.properties +++ b/src/main/resources/l10n/JabRef_de.properties @@ -473,8 +473,6 @@ Import\ preferences=Einstellungen importieren Import\ preferences\ from\ file=Einstellungen aus Datei importieren -Imported\ entries=Einträge importiert - Importer\ class=Importer Klasse Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Untergruppen berücksichtigen\: Einträge dieser Gruppe und ihrer Untergruppen anzeigen @@ -990,7 +988,7 @@ Could\ not\ find\ file\ '%0'.=Datei '%0' nicht gefunden. Error\ opening\ file=Fehler beim Öffnen der Datei Error\ opening\ file\ '%0'=Fehler beim Öffnen der Datei '%0' -Number\ of\ entries\ successfully\ imported=Zahl der erfolgreich importierten Einträge + Error\ while\ fetching\ from\ %0=Fehler beim Abrufen von %0 Unable\ to\ open\ link.=Öffnen des Links nicht möglich @@ -2760,4 +2758,3 @@ Currently\ selected\ CSL\ Style\:\ '%0' = Derzeit ausgewählter CSL-Stil\: '%0' Store\ url\ for\ downloaded\ file=Url für heruntergeladene Datei speichern - diff --git a/src/main/resources/l10n/JabRef_el.properties b/src/main/resources/l10n/JabRef_el.properties index a56213187e2..8e758879050 100644 --- a/src/main/resources/l10n/JabRef_el.properties +++ b/src/main/resources/l10n/JabRef_el.properties @@ -393,8 +393,6 @@ Import\ preferences=Εισαγωγή προτιμήσεων Import\ preferences\ from\ file=Εισαγωγή προτιμήσεων από αρχείο -Imported\ entries=Καταχωρήσεις που έχουν εισαχθεί - Importer\ class=Κλάση εισαγωγέα Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Να περιλαμβάνονται υπο-ομάδες\: Όταν επιλεχθεί αυτό, προβάλλονται οι καταχωρήσεις που περιλαμβάνονται σε αυτή την ομάδα ή τις υπο-ομάδες της @@ -852,7 +850,7 @@ Could\ not\ move\ file\ '%0'.=Αδυναμία μετακίνησης αρχεί Could\ not\ find\ file\ '%0'.=Αδυναμία εύρεσης αρχείου '%0'. Error\ opening\ file=Σφάλμα κατά το άνοιγμα αρχείου -Number\ of\ entries\ successfully\ imported=Έγινε εισαγωγή του αριθμού των καταχωρήσεων με επιτυχία + Error\ while\ fetching\ from\ %0=Σφάλμα κατά την ανάκτηση από %0 Unable\ to\ open\ link.=Αδυναμία ανοίγματος συνδέσμου. @@ -1793,4 +1791,3 @@ Related\ articles=Σχετικά άρθρα - diff --git a/src/main/resources/l10n/JabRef_es.properties b/src/main/resources/l10n/JabRef_es.properties index 95624d65a33..f1c3a696856 100644 --- a/src/main/resources/l10n/JabRef_es.properties +++ b/src/main/resources/l10n/JabRef_es.properties @@ -427,8 +427,6 @@ Import\ preferences=Importar preferencias Import\ preferences\ from\ file=Importar preferencias desde archivo -Imported\ entries=Importar entradas - Importer\ class=Importar formato de clase Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Incluir subgrupos\: Ver entradas contenidas es este grupo o sus subgrupos cuando estén seleccionadas. @@ -918,7 +916,7 @@ Could\ not\ find\ file\ '%0'.=No se encuentra el archivo '%0'. Error\ opening\ file=Error al abrir el archivo Error\ opening\ file\ '%0'=Error al abrir el archivo «%0» -Number\ of\ entries\ successfully\ imported=Número de entradas importadas con éxito + Error\ while\ fetching\ from\ %0=Error al recuperar desde %0 Unable\ to\ open\ link.=No es posible abrir el enlace. @@ -2485,4 +2483,3 @@ Warning\:\ The\ selected\ directory\ is\ not\ a\ valid\ directory.=Atención\: e - diff --git a/src/main/resources/l10n/JabRef_fa.properties b/src/main/resources/l10n/JabRef_fa.properties index 25db5559bb3..cfec353d983 100644 --- a/src/main/resources/l10n/JabRef_fa.properties +++ b/src/main/resources/l10n/JabRef_fa.properties @@ -254,7 +254,6 @@ Will\ write\ metadata\ to\ the\ PDFs\ linked\ from\ selected\ entries.=فراد - Open\ file=بازکردن پرونده @@ -390,6 +389,7 @@ Search\ results\ from\ open\ libraries=جستجوی نتایج از کتابخا + Check\ integrity=بررسی بی‌نقصی @@ -658,6 +658,5 @@ Auto\ complete\ enabled.=تکمیل خودکار غیرفعال شد. - diff --git a/src/main/resources/l10n/JabRef_fi.properties b/src/main/resources/l10n/JabRef_fi.properties index 9afae081d9f..d79921567de 100644 --- a/src/main/resources/l10n/JabRef_fi.properties +++ b/src/main/resources/l10n/JabRef_fi.properties @@ -602,6 +602,5 @@ Proxy\ requires\ password=Välityspalvelin vaatii salasanan - diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties index f8613cadc10..08b6901222e 100644 --- a/src/main/resources/l10n/JabRef_fr.properties +++ b/src/main/resources/l10n/JabRef_fr.properties @@ -481,8 +481,6 @@ Import\ preferences=Importer les préférences Import\ preferences\ from\ file=Importer les préférences depuis un fichier -Imported\ entries=Entrées importées - Importer\ class=Classe d'importateur Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Inclut les sous-groupes \: quand sélectionné, affiche les entrées contenues dans ce groupe ou ses sous-groupes @@ -1005,7 +1003,7 @@ Error\ opening\ file=Erreur lors de l'ouverture du fichier Error\ opening\ file\ '%0'=Erreur lors de l'ouverture du fichier '%0' File\ '%0'\ already\ linked=Le fichier '%0' est déjà lié -Number\ of\ entries\ successfully\ imported=Nombre d'entrées importées avec succès + Error\ while\ fetching\ from\ %0=Erreur au cours de la collecte %0 Unable\ to\ open\ link.=Impossible d'ouvrir le lien. @@ -2801,4 +2799,3 @@ Citation\ Entry=Entrée de citation File\ Move\ Errors=Erreurs de déplacement de fichier Could\ not\ move\ file\ %0.\ Please\ close\ this\ file\ and\ retry.=Impossible de déplacer le fichier %0. Veuillez fermer ce fichier et réessayer. - diff --git a/src/main/resources/l10n/JabRef_id.properties b/src/main/resources/l10n/JabRef_id.properties index ada89f21b92..3808f0f5c8e 100644 --- a/src/main/resources/l10n/JabRef_id.properties +++ b/src/main/resources/l10n/JabRef_id.properties @@ -345,8 +345,6 @@ Import\ preferences=Preferensi Impor Import\ preferences\ from\ file=Impor preferensi dari berkas -Imported\ entries=entri diimpor - Importer\ class=kelas Importer Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Termasuk sub-grup\: Ketika dipilih, lihat entri yang ada di grup atau sub-grup ini. @@ -715,7 +713,7 @@ Could\ not\ move\ file\ '%0'.=Tidak bisa meindah berkas '%0'. Could\ not\ find\ file\ '%0'.=Tidak bisa menemukan berkas '%0'. Error\ opening\ file=Kesalahan ketika membuka berkas -Number\ of\ entries\ successfully\ imported=Jumlah entri yang berhasil diimpor + Error\ while\ fetching\ from\ %0=Kesalahan ketika mengambil dari %0 Unable\ to\ open\ link.=Tidak bisa membuka tautan. @@ -1557,4 +1555,3 @@ Related\ articles=Artikel terkait - diff --git a/src/main/resources/l10n/JabRef_it.properties b/src/main/resources/l10n/JabRef_it.properties index 795f9c923ab..ba022aa21be 100644 --- a/src/main/resources/l10n/JabRef_it.properties +++ b/src/main/resources/l10n/JabRef_it.properties @@ -481,8 +481,6 @@ Import\ preferences=Importa preferenze Import\ preferences\ from\ file=Importa preferenze da un file -Imported\ entries=Voci importate - Importer\ class=Classe Importer Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Includi i sottogruppi\: Quando selezionato, mostra le voci contenute in questo gruppo e nei suoi sottogruppi @@ -1007,7 +1005,8 @@ Error\ opening\ file=Errore all'apertura del file Error\ opening\ file\ '%0'=Errore nell'aprire il file '%0' File\ '%0'\ already\ linked=File '%0' già collegato -Number\ of\ entries\ successfully\ imported=Numero di voci importate con successo +%0\ entry(s)\ imported=%0 voci importate + Error\ while\ fetching\ from\ %0=Errore durante la ricerca %0 Unable\ to\ open\ link.=Impossibile aprire il collegamento. @@ -1761,6 +1760,8 @@ Remote\ services=Servizi remoti Cannot\ use\ port\ %0\ for\ remote\ operation;\ another\ application\ may\ be\ using\ it.\ Try\ specifying\ another\ port.=Impossibile utilizzare la porta %0 per operazioni remote; la porta potrebbe essere in uso da parte di un'altra applicazione. Provare a specificare una porta diversa. Grobid\ URL=Url Grobid Allow\ sending\ PDF\ files\ and\ raw\ citation\ strings\ to\ a\ JabRef\ online\ service\ (Grobid)\ to\ determine\ Metadata.\ This\ produces\ better\ results.=Consenti l'invio di file PDF e stringhe di citazione grezze a un servizio online JabRef (Grobid) per determinare i metadati. Questo produce risultati migliori. +Send\ to\ Grobid=Invia a Grobid +Do\ not\ send=Non inviare Proxy\ requires\ password=Il proxy richiede password Proxy\ configuration=Configurazione proxy @@ -2778,6 +2779,3 @@ Citation\ Entry=Voce della Citazione File\ Move\ Errors=Errori di spostamente dei file Could\ not\ move\ file\ %0.\ Please\ close\ this\ file\ and\ retry.=Impossibile spostare il file %0. Chiudere questo file e riprovare. - -Send\ to\ Grobid=Invia a Grobid -Do\ not\ send=Non inviare diff --git a/src/main/resources/l10n/JabRef_ja.properties b/src/main/resources/l10n/JabRef_ja.properties index 7a157deaa0d..7071b2d9662 100644 --- a/src/main/resources/l10n/JabRef_ja.properties +++ b/src/main/resources/l10n/JabRef_ja.properties @@ -405,8 +405,6 @@ Import\ preferences=設定を読み込む Import\ preferences\ from\ file=ファイルから設定を読み込み -Imported\ entries=項目を読み込みました - Importer\ class=Importerクラス Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=下層グループの取り込み:このグループやその配下の下層グループに含まれている項目を表示 @@ -866,7 +864,7 @@ Could\ not\ move\ file\ '%0'.=ファイルを%0移動できませんでした Could\ not\ find\ file\ '%0'.=ファイル「%0」を見つけられませんでした. Error\ opening\ file=ファイルを開く際にエラー発生 -Number\ of\ entries\ successfully\ imported=読み込みに成功した項目数 + Error\ while\ fetching\ from\ %0=%0からの取得中にエラー発生 Unable\ to\ open\ link.=リンクを開くことができませんでした. @@ -2359,4 +2357,3 @@ Related\ articles=関連文献 - diff --git a/src/main/resources/l10n/JabRef_ko.properties b/src/main/resources/l10n/JabRef_ko.properties index acf72675c6a..8e395560bf8 100644 --- a/src/main/resources/l10n/JabRef_ko.properties +++ b/src/main/resources/l10n/JabRef_ko.properties @@ -385,8 +385,6 @@ Import\ preferences=환경 설정 가져오기 Import\ preferences\ from\ file=파일에서 설정 가져오기 -Imported\ entries=가져온 목록 - Importer\ class=클래스 가져오기 Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=하위 그룹 포함\: 선택하면 이 그룹 또는 하위 그룹에 포함된 항목을 봅니다. @@ -818,7 +816,7 @@ Could\ not\ move\ file\ '%0'.=파일 '%0' 을 이동할 수 없습니다. Could\ not\ find\ file\ '%0'.=파일 "%0" 을 찾을 수 없습니다 Error\ opening\ file=파일을 여는 동안 오류 -Number\ of\ entries\ successfully\ imported=항목들을 성공적으로 가져왔습니다 + Error\ while\ fetching\ from\ %0=%0에서 가져오는 중 오류 발생 Unable\ to\ open\ link.=링크를 열 수 없습니다. @@ -2193,4 +2191,3 @@ Related\ articles=관련 글 - diff --git a/src/main/resources/l10n/JabRef_nl.properties b/src/main/resources/l10n/JabRef_nl.properties index 698971977de..0cf1de57a77 100644 --- a/src/main/resources/l10n/JabRef_nl.properties +++ b/src/main/resources/l10n/JabRef_nl.properties @@ -412,8 +412,6 @@ Import\ preferences=Instellingen importeren Import\ preferences\ from\ file=Importeer instellingen van bestand -Imported\ entries=Geïmporteerde invoergegevens - Importer\ class=Importer Klasse Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Subgroepen insluiten\: Wanneer geselecteerd, toon invoergegevens in deze groep of in zijn subgroepen @@ -898,7 +896,7 @@ Could\ not\ move\ file\ '%0'.=Kon bestand '%0' niet verplaatsen. Could\ not\ find\ file\ '%0'.=Kon bestand '%0' niet vinden. Error\ opening\ file=Foutmelding bij het openen van het bestand -Number\ of\ entries\ successfully\ imported=Aantal invoergegevens succesvol geïmporteerd + Error\ while\ fetching\ from\ %0=Fout tijdens het ophalen van %0 Unable\ to\ open\ link.=Link openen niet mogelijk. @@ -2458,4 +2456,3 @@ Related\ articles=Gerelateerde artikelen - diff --git a/src/main/resources/l10n/JabRef_no.properties b/src/main/resources/l10n/JabRef_no.properties index 96b6b902b6d..d7d2f0aea26 100644 --- a/src/main/resources/l10n/JabRef_no.properties +++ b/src/main/resources/l10n/JabRef_no.properties @@ -320,8 +320,6 @@ Import\ preferences=Importer innstillinger Import\ preferences\ from\ file=Importer innstillinger fra fil -Imported\ entries=Importerte enheter - Importer\ class=Importer-klasse Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Inkluder undergrupper\: Vis enheter inneholdt i denne gruppen eller en undergruppe @@ -684,7 +682,7 @@ Could\ not\ move\ file\ '%0'.=Kunne ikke flytte filen '%0'. Could\ not\ find\ file\ '%0'.=Kunne ikke finne filen '%0'. Error\ opening\ file=Feil ved åpning av fil -Number\ of\ entries\ successfully\ imported=Antall oppføringer som ble korrekt importert + Error\ while\ fetching\ from\ %0=Feil ved henting fra %0 Unable\ to\ open\ link.=Kan ikke åpne link. @@ -1124,6 +1122,5 @@ Path\ to\ %0=Sti til %0 - diff --git a/src/main/resources/l10n/JabRef_pl.properties b/src/main/resources/l10n/JabRef_pl.properties index 765d018cb1c..622c5a5f5ff 100644 --- a/src/main/resources/l10n/JabRef_pl.properties +++ b/src/main/resources/l10n/JabRef_pl.properties @@ -439,8 +439,6 @@ Import\ preferences=Ustawienia importu Import\ preferences\ from\ file=Importuj ustawienia z pliku -Imported\ entries=Zaimportowane wpisy - Importer\ class=Klasa importera @@ -943,7 +941,8 @@ Error\ opening\ file=Błąd podczas otwierania pliku Error\ opening\ file\ '%0'=Błąd podczas otwierania pliku '%0' File\ '%0'\ already\ linked=Plik '%0' jest już połączony -Number\ of\ entries\ successfully\ imported=Liczba wpisów pomyślnie zaimportowanych +%0\ entry(s)\ imported=Zaimportowano %0 wpisów + Error\ while\ fetching\ from\ %0=Błąd podczas pobierania z %0 Unable\ to\ open\ link.=Nie można otworzyć linku. @@ -1472,6 +1471,8 @@ Remember\ Password=Zapamiętaj hasło Remote\ operation=Zdalna operacja Cannot\ use\ port\ %0\ for\ remote\ operation;\ another\ application\ may\ be\ using\ it.\ Try\ specifying\ another\ port.=Nie można użyć portu %0 do zdalnej operacji; inna aplikacja może go używać. Spróbuj określić inny port. +Send\ to\ Grobid=Wyślij do Grobid +Do\ not\ send=Nie wysyłaj Proxy\ requires\ password=Proxy wymaga hasła Proxy\ configuration=Konfiguracja proxy @@ -1899,6 +1900,3 @@ Citation\ Entry=Wpis cytatowania File\ Move\ Errors=Błąd przenoszenia pliku Could\ not\ move\ file\ %0.\ Please\ close\ this\ file\ and\ retry.=Nie można przenieść pliku %0. Zamknij ten plik i spróbuj ponownie. - -Send\ to\ Grobid=Wyślij do Grobid -Do\ not\ send=Nie wysyłaj diff --git a/src/main/resources/l10n/JabRef_pt.properties b/src/main/resources/l10n/JabRef_pt.properties index c236fe67580..9971e8a6a3a 100644 --- a/src/main/resources/l10n/JabRef_pt.properties +++ b/src/main/resources/l10n/JabRef_pt.properties @@ -392,8 +392,6 @@ Import\ preferences=Importar preferências Import\ preferences\ from\ file=Importar preferências a partir de um arquivo -Imported\ entries=Referências importadas - Importer\ class=Classe Importer Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Incluir subgrupos\: Quando selecionado, visualizar referências contidas neste grupo ou em seus subgrupos @@ -818,7 +816,7 @@ Could\ not\ move\ file\ '%0'.=Não foi possível mover o arquivo '%0'. Could\ not\ find\ file\ '%0'.=Não foi possível encontrar o arquivo '%0'. Error\ opening\ file=Erro ao abrir o arquivo -Number\ of\ entries\ successfully\ imported=Número de referências importadas com sucesso + Error\ while\ fetching\ from\ %0=Erro ao recuperar do %0 Unable\ to\ open\ link.=Não foi possível abrir link. @@ -1374,4 +1372,3 @@ Related\ articles=Artigos relacionados - diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties index ed5df72dd19..86b343aa259 100644 --- a/src/main/resources/l10n/JabRef_pt_BR.properties +++ b/src/main/resources/l10n/JabRef_pt_BR.properties @@ -480,8 +480,6 @@ Import\ preferences=Importar preferências Import\ preferences\ from\ file=Importar preferências a partir de um arquivo -Imported\ entries=Referências importadas - Importer\ class=Classe Importer Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Incluir subgrupos\: Quando selecionado, visualizar referências contidas neste grupo ou em seus subgrupos @@ -1004,7 +1002,7 @@ Error\ opening\ file=Erro ao abrir o arquivo Error\ opening\ file\ '%0'=Erro ao abrir arquivo '%0' File\ '%0'\ already\ linked=Arquivo '%0' já vinculado -Number\ of\ entries\ successfully\ imported=Número de referências importadas com sucesso + Error\ while\ fetching\ from\ %0=Erro ao recuperar do %0 Unable\ to\ open\ link.=Não foi possível abrir link. @@ -1758,6 +1756,8 @@ Remote\ services=Serviços remotos Cannot\ use\ port\ %0\ for\ remote\ operation;\ another\ application\ may\ be\ using\ it.\ Try\ specifying\ another\ port.=Não é possível utilizar a porta %0 para operação remota; outra aplicação pode estar usando-a. Tente utilizar uma outra porta. Grobid\ URL=URL Grobid Allow\ sending\ PDF\ files\ and\ raw\ citation\ strings\ to\ a\ JabRef\ online\ service\ (Grobid)\ to\ determine\ Metadata.\ This\ produces\ better\ results.=Permite enviar arquivos PDF e strings de citação bruta para um serviço JabRef on-line (Grobid) para determinar Metadados. Isto produz melhores resultados. +Send\ to\ Grobid=Enviar para Grobid +Do\ not\ send=Não enviar Proxy\ requires\ password=Proxy requisita senha Proxy\ configuration=Configuração de proxy @@ -2800,6 +2800,3 @@ Citation\ Entry=Chave de citação File\ Move\ Errors=Erro ao Mover Arquivo Could\ not\ move\ file\ %0.\ Please\ close\ this\ file\ and\ retry.=Não foi possível mover o arquivo %0. Por favor, feche este arquivo e tente novamente. - -Send\ to\ Grobid=Enviar para Grobid -Do\ not\ send=Não enviar diff --git a/src/main/resources/l10n/JabRef_ru.properties b/src/main/resources/l10n/JabRef_ru.properties index aee9cf4fad0..c0b44f18daa 100644 --- a/src/main/resources/l10n/JabRef_ru.properties +++ b/src/main/resources/l10n/JabRef_ru.properties @@ -418,8 +418,6 @@ Import\ preferences=Импорт пользовательских настрое Import\ preferences\ from\ file=Импорт пользовательских настроек из файла -Imported\ entries=Импортированные записи - Importer\ class=Класс Importer Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Включить подгруппы\: Просмотр записей, содержащихся в этой группе или ее подгруппах (если выбрано) @@ -884,7 +882,7 @@ Could\ not\ move\ file\ '%0'.=Не удалось переместить фай Could\ not\ find\ file\ '%0'.=Не удалось найти файл '%0'. Error\ opening\ file=Ошибка при открытии файла -Number\ of\ entries\ successfully\ imported=Число успешно импортированных записей + Error\ while\ fetching\ from\ %0=Ошибка выполнения выборки %0 Unable\ to\ open\ link.=Не удалось перейти по ссылке. @@ -2327,4 +2325,3 @@ Related\ articles=Связанные статьи - diff --git a/src/main/resources/l10n/JabRef_sv.properties b/src/main/resources/l10n/JabRef_sv.properties index 470dc3577f6..3b621a9cf1a 100644 --- a/src/main/resources/l10n/JabRef_sv.properties +++ b/src/main/resources/l10n/JabRef_sv.properties @@ -370,8 +370,6 @@ Import\ preferences=Importera inställningar Import\ preferences\ from\ file=Importera inställningar från fil -Imported\ entries=Importerade poster - Importer\ class=Importer-klass Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Inkludera undergrupper\: När detta är valts visas poster som finns i denna grupp och dess undergrupper @@ -738,7 +736,7 @@ Could\ not\ find\ file\ '%0'.=Kunde inte hitta filen '%0'. Error\ opening\ file=Fel vid öppning av fil Error\ opening\ file\ '%0'=Fel vid öppning av filen '%0' -Number\ of\ entries\ successfully\ imported=Antal poster som lyckades importeras + Error\ while\ fetching\ from\ %0=Fel vid hämtning från %0 Unable\ to\ open\ link.=Kan inte öppna länk. @@ -1521,4 +1519,3 @@ Warning\:\ The\ selected\ directory\ is\ not\ a\ valid\ directory.=Varning\: Den - diff --git a/src/main/resources/l10n/JabRef_tl.properties b/src/main/resources/l10n/JabRef_tl.properties index 17ec5f285a7..03eb0060e63 100644 --- a/src/main/resources/l10n/JabRef_tl.properties +++ b/src/main/resources/l10n/JabRef_tl.properties @@ -319,8 +319,6 @@ Import\ preferences=I-import ang mga preferences Import\ preferences\ from\ file=I-import ang mga preferences mula sa file -Imported\ entries=Mga imported na entries - Importer\ class=Ang importer na klase Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Isama ang mga mababang grupo\: Kapag napili, tingnan ang mga entries na nilalaman ng grupo o sa mababang grupo @@ -681,7 +679,7 @@ Could\ not\ move\ file\ '%0'.=Hindi mailipat ang file '%0'. Could\ not\ find\ file\ '%0'.=Hindi mahanap ang file na '%0'. Error\ opening\ file=May mali sa pag bukas ng file -Number\ of\ entries\ successfully\ imported=Ang bilang ng mga entry ay matagumpay na na-import + Error\ while\ fetching\ from\ %0=Error habang kinukuha mula sa %0 Unable\ to\ open\ link.=Hindi mabuksan ang link. @@ -1254,4 +1252,3 @@ Related\ articles=Kaugnay na mga artikulo - diff --git a/src/main/resources/l10n/JabRef_tr.properties b/src/main/resources/l10n/JabRef_tr.properties index 82ecc75e33d..52a1c4931c9 100644 --- a/src/main/resources/l10n/JabRef_tr.properties +++ b/src/main/resources/l10n/JabRef_tr.properties @@ -419,8 +419,6 @@ Import\ preferences=İçe aktarma tercihleri Import\ preferences\ from\ file=Dosyadan içe aktarma tercihleri -Imported\ entries=İçe aktarılmış girdiler - Importer\ class=Importer sınıfı Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Altgrupları içer\: Seçildiğinde, bu grup ya da altgruplarındaki girdileri göster @@ -912,7 +910,7 @@ Could\ not\ find\ file\ '%0'.='%0' dosyası bulunamadı. Error\ opening\ file=Dosya açmada hata Error\ opening\ file\ '%0'=Dosya açmada hata '%0' -Number\ of\ entries\ successfully\ imported=Girdi sayısı başarıyla içe aktarıldı + Error\ while\ fetching\ from\ %0=%0'dan getirme sırasında hata Unable\ to\ open\ link.=Bağlantı açılamadı. @@ -2512,4 +2510,3 @@ More\ options...=Daha fazla seçenekler... - diff --git a/src/main/resources/l10n/JabRef_uk.properties b/src/main/resources/l10n/JabRef_uk.properties index 5cc234c1557..d06e34795db 100644 --- a/src/main/resources/l10n/JabRef_uk.properties +++ b/src/main/resources/l10n/JabRef_uk.properties @@ -669,6 +669,5 @@ Proxy\ requires\ password=Потрібен пароль проксі-серве - diff --git a/src/main/resources/l10n/JabRef_vi.properties b/src/main/resources/l10n/JabRef_vi.properties index bbb77af2c96..e2dfb886985 100644 --- a/src/main/resources/l10n/JabRef_vi.properties +++ b/src/main/resources/l10n/JabRef_vi.properties @@ -328,8 +328,6 @@ Import\ preferences=Nhập các tùy thích Import\ preferences\ from\ file=Nhập các tùy thích từ tập tin -Imported\ entries=Các mục được nhập - Importer\ class=Lớp ĐịnhdạngNhập Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=Đưa vào các nhóm con\: Khi được chọn, xem các mục chứa trong nhóm này hoặc các nhóm phụ của nó @@ -679,7 +677,7 @@ Could\ not\ move\ file\ '%0'.=Không thể chuyển tập tin '%0'. Could\ not\ find\ file\ '%0'.=Không tìm thấy tập tin '%0'. Error\ opening\ file=Lỗi khi đang mở tập tin -Number\ of\ entries\ successfully\ imported=Số mục được nhập vào thành công + Error\ while\ fetching\ from\ %0=Lỗi khi lấy về từ %0 Unable\ to\ open\ link.=Không thể mở liên kết. @@ -1058,6 +1056,5 @@ Path\ to\ %0=Đường dẫn đến %0 - diff --git a/src/main/resources/l10n/JabRef_zh_CN.properties b/src/main/resources/l10n/JabRef_zh_CN.properties index 05322f51a14..d9803cbca90 100644 --- a/src/main/resources/l10n/JabRef_zh_CN.properties +++ b/src/main/resources/l10n/JabRef_zh_CN.properties @@ -412,8 +412,6 @@ Import\ preferences=导入首选项设置 Import\ preferences\ from\ file=从文件中导入首选项设置 -Imported\ entries=已导入记录 - Importer\ class=Importer 类 Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group\ or\ its\ subgroups=包含子分组:当分组被选中时,显示所有它和它的子分组中的记录 @@ -889,7 +887,7 @@ Could\ not\ move\ file\ '%0'.=无法移动文件 '%0' Could\ not\ find\ file\ '%0'.=无法找到文件 '%0'。 Error\ opening\ file=打开文件错误 -Number\ of\ entries\ successfully\ imported=成功导入的记录数 + Error\ while\ fetching\ from\ %0=从 %0 抓取发生错误 Unable\ to\ open\ link.=无法打开链接。 @@ -2445,4 +2443,3 @@ Related\ articles=相关文章 - diff --git a/src/main/resources/l10n/JabRef_zh_TW.properties b/src/main/resources/l10n/JabRef_zh_TW.properties index 9df6e435673..706f0e1f4b0 100644 --- a/src/main/resources/l10n/JabRef_zh_TW.properties +++ b/src/main/resources/l10n/JabRef_zh_TW.properties @@ -322,8 +322,6 @@ Import\ preferences=匯入偏好設定 Import\ preferences\ from\ file=從檔案匯入偏好設定 -Imported\ entries=已匯入條目 - I\ Agree=我同意 @@ -616,6 +614,7 @@ Error\ opening\ file=開啟檔案錯誤 + Rename\ field=重新命名欄位 @@ -1047,4 +1046,3 @@ Related\ articles=相關文章 - From 96d4211dd7c186a864abee1c1a39ce3fbe41ed26 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 31 Oct 2024 20:53:20 +0100 Subject: [PATCH 03/40] Add ADR for "entry(s)" (#12127) * Replace "entry(ies)" by "entry(s)" * Add ADR-0040 * Fix typo * Update 0040-use-one-form-for-singular-and-plural.md Refine Option 1 --- docs/code-howtos/localization.md | 3 +- ...40-use-one-form-for-singular-and-plural.md | 95 +++++++++++++++++++ src/main/java/org/jabref/gui/LibraryTab.java | 6 +- .../externalfiles/DownloadFullTextAction.java | 2 +- src/main/resources/l10n/JabRef_en.properties | 6 +- 5 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 docs/decisions/0040-use-one-form-for-singular-and-plural.md diff --git a/docs/code-howtos/localization.md b/docs/code-howtos/localization.md index 568ad369529..7ef71486d2f 100644 --- a/docs/code-howtos/localization.md +++ b/docs/code-howtos/localization.md @@ -45,8 +45,9 @@ To write a localized string in FXML file, prepend it with `%`, like in this code ## General hints * Use the String you want to localize directly, do not use members or local variables: `Localization.lang("Translate me");` instead of `Localization.lang(someVariable)` (possibly in the form `someVariable = Localization.lang("Translate me")` -* Use `%x`-variables where appropriate: `Localization.lang("Exported %0 entries.", number)` instead of `Localization.lang("Exported ") + number + Localization.lang(" entries.");` +* Use `%x`-variables where appropriate: `Localization.lang("Exported %0 entry(s).", number)` instead of `Localization.lang("Exported ") + number + Localization.lang(" entry(s).");` * Use a full stop/period (".") to end full sentences +* For pluralization, use a combined form. E.g., `Localization.lang("checked %0 entry(s)")`. ## Checking for correctness diff --git a/docs/decisions/0040-use-one-form-for-singular-and-plural.md b/docs/decisions/0040-use-one-form-for-singular-and-plural.md new file mode 100644 index 00000000000..d09007a5458 --- /dev/null +++ b/docs/decisions/0040-use-one-form-for-singular-and-plural.md @@ -0,0 +1,95 @@ +--- +nav_order: 40 +parent: Decision Records +--- + + +# Use one language string for pluralization localization + +## Context and Problem Statement + +For user-facing messages, sometimes, it needs to be counted: E.g., 1 entry updated, 2 entries updated, etc. + +In some languages, there is not only "one" and "more than one", but other forms: + +* zero → “لم نزرع أي شجرة حتى الآن” +* one → “لقد زرعنا شجرة ١ حتى الآن” +* two → “لقد زرعنا شجرتين ٢ حتى الآن” +* few → “لقد زرعنا ٣ شجرات حتى الآن” +* many → “لقد زرعنا ١١ شجرة حتى الآن” +* other → “لقد زرعنا ١٠٠ شجرة حتى الآن” + +(Example is from [Pluralization: A Guide to Localizing Plurals](https://phrase.com/blog/posts/pluralization/)) + +How to localize pluralization? + +## Decision Drivers + +* Good English language +* Good localization to other languages + +## Considered Options + +* Use one language string for pluralization (no explicit pluralization) +* Use singular and plural +* Handling of multiple forms + +## Decision Outcome + +Chosen option: "Use one form only (no explicit pluralization)", because it is the most easiest to handle in the code. + +## Pros and Cons of the Options + +### Use one language string for pluralization (no explicit pluralization) + +Example: + +- `Imported 0 entry(s)` +- `Imported 1 entry(s)` +- `Imported 12 entry(s)` + +There are sub alternatives here: + +* `Imported %0 entry(ies)`. +* `Number of entries imported: %0` (always use "other" plural form) + +These arguments are for the general case of using a single text for all kinds of numbers: + +* Good, because easy to handle in the code +* Bad, because reads strange in English UI + +### Use singular and plural + +Example: + +- `Imported 0 entries` +- `Imported 1 entry` +- `Imported 12 entries` + +* Good, because reads well in English +* Bad, because all localizations need to take an `if` check for the count +* Bad, because Arabic not localized properly + +### Handling of multiple forms + +Example: + +- `Imported 0 entries` +- `Imported 1 entry` +- `Imported 12 entries` + +Code: `Localization.lang("Imported %0 entries", "Imported %0 entry.", "Imported %0 entries.", "Imported %0 entries.", "Imported %0 entries.", "Imported %0 entries.", count)` + +* Good, because reads well in English +* Bad, because sophisticated localization handling is required +* Bad, because no Java library for handling pluralization is known +* Bad, because Arabic not localized properly + +## More Information + +- [Language Plural Rules](https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html) +- [Unicode CLDR Project's Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules) +- [Implementation in Mozilla Firefox](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/PluralRules) +- [SX discussion on plural forms](https://english.stackexchange.com/a/90283/66058) + + diff --git a/src/main/java/org/jabref/gui/LibraryTab.java b/src/main/java/org/jabref/gui/LibraryTab.java index 49c417623b9..f7579709894 100644 --- a/src/main/java/org/jabref/gui/LibraryTab.java +++ b/src/main/java/org/jabref/gui/LibraryTab.java @@ -902,7 +902,7 @@ public void insertEntries(final List entries) { public void copyEntry() { int entriesCopied = doCopyEntry(getSelectedEntries()); if (entriesCopied >= 0) { - dialogService.notify(Localization.lang("Copied %0 entry(ies)", entriesCopied)); + dialogService.notify(Localization.lang("Copied %0 entry(s)", entriesCopied)); } else { dialogService.notify(Localization.lang("Copy failed", entriesCopied)); } @@ -966,7 +966,7 @@ public void cutEntry() { int entriesDeleted = doDeleteEntry(StandardActions.CUT, mainTable.getSelectedEntries()); if (entriesCopied == entriesDeleted) { - dialogService.notify(Localization.lang("Cut %0 entry(ies)", entriesCopied)); + dialogService.notify(Localization.lang("Cut %0 entry(s)", entriesCopied)); } else { dialogService.notify(Localization.lang("Cut failed", entriesCopied)); undoManager.undo(); @@ -979,7 +979,7 @@ public void cutEntry() { */ public void deleteEntry() { int entriesDeleted = doDeleteEntry(StandardActions.DELETE_ENTRY, mainTable.getSelectedEntries()); - dialogService.notify(Localization.lang("Deleted %0 entry(ies)", entriesDeleted)); + dialogService.notify(Localization.lang("Deleted %0 entry(s)", entriesDeleted)); } public void deleteEntry(BibEntry entry) { diff --git a/src/main/java/org/jabref/gui/externalfiles/DownloadFullTextAction.java b/src/main/java/org/jabref/gui/externalfiles/DownloadFullTextAction.java index e476883b7f5..48d321b1d81 100644 --- a/src/main/java/org/jabref/gui/externalfiles/DownloadFullTextAction.java +++ b/src/main/java/org/jabref/gui/externalfiles/DownloadFullTextAction.java @@ -25,7 +25,7 @@ import org.slf4j.LoggerFactory; /** - * Try to download fulltext PDF for selected entry(ies) by following URL or DOI link. + * Try to download fulltext PDF for selected entry(s) by following URL or DOI link. */ public class DownloadFullTextAction extends SimpleCommand { diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 8a8de5c18eb..2a4ab3bef81 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2769,9 +2769,9 @@ Pushing\ citations\ to\ TeXShop\ is\ only\ possible\ on\ macOS\!=Pushing citatio Single\ instance=Single instance -Copied\ %0\ entry(ies)=Copied %0 entry(ies) -Cut\ %0\ entry(ies)=Cut %0 entry(ies) -Deleted\ %0\ entry(ies)=Deleted %0 entry(ies) +Copied\ %0\ entry(s)=Copied %0 entry(s) +Cut\ %0\ entry(s)=Cut %0 entry(s) +Deleted\ %0\ entry(s)=Deleted %0 entry(s) Enable\ Journal\ Information\ Fetching?=Enable Journal Information Fetching? Would\ you\ like\ to\ enable\ fetching\ of\ journal\ information?\ This\ can\ be\ changed\ later\ in\ %0\ >\ %1.=Would you like to enable fetching of journal information? This can be changed later in %0 > %1. From 9bde0370e2aa7da1a979b522ac1a8878d6459934 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Fri, 1 Nov 2024 13:43:53 +0100 Subject: [PATCH 04/40] Change time for assign-issue --- .github/workflows/assign-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/assign-issue.yml b/.github/workflows/assign-issue.yml index a4c8899c249..07450aec692 100644 --- a/.github/workflows/assign-issue.yml +++ b/.github/workflows/assign-issue.yml @@ -2,7 +2,7 @@ name: Assign Issue on: schedule: - - cron: 0 0 * * * + - cron: 4 12 * * * issue_comment: types: [created] workflow_dispatch: From f0e8d74fd56857c18e51657e6e4c7f68618b3dd7 Mon Sep 17 00:00:00 2001 From: gabenogu Date: Fri, 1 Nov 2024 13:35:57 -0400 Subject: [PATCH 05/40] Changes to FileColumn allowing mouse click access to multiple files(.md, .png, etc.) (#12085) * Made changes to FileColumn allowing for specific files to be accesed by mouse click. * Made minor changes to 'case EXTRAFILE' for readability. * ran rewriteRun * remove checkstyle and sort case --------- Co-authored-by: Siedlerchr --- .../gui/maintable/MainTableColumnFactory.java | 2 +- .../gui/maintable/columns/FileColumn.java | 31 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java b/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java index d4d9b8fb576..94a3362ac29 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java +++ b/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java @@ -120,12 +120,12 @@ public MainTableColumnFactory(BibDatabaseContext database, } } break; - default: case NORMALFIELD: if (!column.getQualifier().isBlank()) { returnColumn = createFieldColumn(column, tooltip); } break; + default: } return returnColumn; } diff --git a/src/main/java/org/jabref/gui/maintable/columns/FileColumn.java b/src/main/java/org/jabref/gui/maintable/columns/FileColumn.java index ce1fc758ef3..974b5fd111e 100644 --- a/src/main/java/org/jabref/gui/maintable/columns/FileColumn.java +++ b/src/main/java/org/jabref/gui/maintable/columns/FileColumn.java @@ -98,8 +98,35 @@ public FileColumn(MainTableColumnModel model, .getGraphicNode()); new ValueTableCellFactory>() - .withGraphic((entry, linkedFiles) -> createFileIcon(entry, linkedFiles.stream().filter(linkedFile -> - linkedFile.getFileType().equalsIgnoreCase(fileType)).collect(Collectors.toList()))) + .withGraphic((entry, linkedFiles) -> createFileIcon(entry, linkedFiles.stream() + .filter(linkedFile -> linkedFile.getFileType().equalsIgnoreCase(fileType)) + .collect(Collectors.toList()))) + .withOnMouseClickedEvent((entry, linkedFiles) -> event -> { + List filteredFiles = linkedFiles.stream() + .filter(linkedFile -> linkedFile.getFileType().equalsIgnoreCase(fileType)) + .collect(Collectors.toList()); + + if (event.getButton() == MouseButton.PRIMARY) { + if (filteredFiles.size() == 1) { + // Only one file - open directly + LinkedFileViewModel linkedFileViewModel = new LinkedFileViewModel(filteredFiles.getFirst(), + entry.getEntry(), database, taskExecutor, dialogService, preferences); + linkedFileViewModel.open(); + } else if (filteredFiles.size() > 1) { + // Multiple files - show context menu to choose file + ContextMenu contextMenu = new ContextMenu(); + for (LinkedFile linkedFile : filteredFiles) { + LinkedFileViewModel linkedFileViewModel = new LinkedFileViewModel(linkedFile, + entry.getEntry(), database, taskExecutor, dialogService, preferences); + MenuItem menuItem = new MenuItem(linkedFileViewModel.getTruncatedDescriptionAndLink(), + linkedFileViewModel.getTypeIcon().getGraphicNode()); + menuItem.setOnAction(e -> linkedFileViewModel.open()); + contextMenu.getItems().add(menuItem); + } + contextMenu.show(((Node) event.getSource()), event.getScreenX(), event.getScreenY()); + } + } + }) .install(this); } From 7d58f3ccda455536019d4d151a642e240e351999 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 1 Nov 2024 19:08:16 +0100 Subject: [PATCH 06/40] New Crowdin updates (#12141) * New translations jabref_en.properties (French) * New translations jabref_en.properties (Polish) * New translations jabref_en.properties (Portuguese, Brazilian) * New translations jabref_en.properties (Spanish) * New translations jabref_en.properties (German) * New translations jabref_en.properties (Italian) --- src/main/resources/l10n/JabRef_de.properties | 3 --- src/main/resources/l10n/JabRef_es.properties | 3 --- src/main/resources/l10n/JabRef_fr.properties | 3 --- src/main/resources/l10n/JabRef_it.properties | 6 +++--- src/main/resources/l10n/JabRef_pl.properties | 4 +++- src/main/resources/l10n/JabRef_pt_BR.properties | 3 --- 6 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/main/resources/l10n/JabRef_de.properties b/src/main/resources/l10n/JabRef_de.properties index 8821a4c157c..bbbda40df12 100644 --- a/src/main/resources/l10n/JabRef_de.properties +++ b/src/main/resources/l10n/JabRef_de.properties @@ -2722,9 +2722,6 @@ Pushing\ citations\ to\ TeXShop\ is\ only\ possible\ on\ macOS\!=Zitate in TeXSh Single\ instance=Einzelne Instanz -Copied\ %0\ entry(ies)=Kopierte %0 Einträge -Cut\ %0\ entry(ies)=%0 Eintrage ausgeschnitten -Deleted\ %0\ entry(ies)=%0 Einträge gelöscht Enable\ Journal\ Information\ Fetching?=Journalinformationen abrufen? Would\ you\ like\ to\ enable\ fetching\ of\ journal\ information?\ This\ can\ be\ changed\ later\ in\ %0\ >\ %1.=Möchten Sie das Abrufen von Journal-Informationen aktivieren? Dies kann später in %0 > %1 geändert werden. diff --git a/src/main/resources/l10n/JabRef_es.properties b/src/main/resources/l10n/JabRef_es.properties index f1c3a696856..3b7fbba315a 100644 --- a/src/main/resources/l10n/JabRef_es.properties +++ b/src/main/resources/l10n/JabRef_es.properties @@ -2456,9 +2456,6 @@ Related\ articles=Artículos relacionados -Copied\ %0\ entry(ies)=Se copiaron %0 entradas -Cut\ %0\ entry(ies)=Se cortaron %0 entradas -Deleted\ %0\ entry(ies)=Se eliminaron %0 entradas Enable=Activar Keep\ disabled=Mantener desactivado diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties index 08b6901222e..6b04d5c36ec 100644 --- a/src/main/resources/l10n/JabRef_fr.properties +++ b/src/main/resources/l10n/JabRef_fr.properties @@ -2758,9 +2758,6 @@ Pushing\ citations\ to\ TeXShop\ is\ only\ possible\ on\ macOS\!=L'envoi des cit Single\ instance=Instance unique -Copied\ %0\ entry(ies)=%0 entrée(s) copié(es) -Cut\ %0\ entry(ies)=%0 entrée(s) coupé(es) -Deleted\ %0\ entry(ies)=%0 entrée(s) supprimée(s) Enable\ Journal\ Information\ Fetching?=Activer la récupération des informations des journaux ? Would\ you\ like\ to\ enable\ fetching\ of\ journal\ information?\ This\ can\ be\ changed\ later\ in\ %0\ >\ %1.=Voulez-vous activer la récupération des informations des journaux ? Cela peut être modifié plus tard dans %0 > %1. diff --git a/src/main/resources/l10n/JabRef_it.properties b/src/main/resources/l10n/JabRef_it.properties index ba022aa21be..9151455d45e 100644 --- a/src/main/resources/l10n/JabRef_it.properties +++ b/src/main/resources/l10n/JabRef_it.properties @@ -2738,9 +2738,9 @@ Pushing\ citations\ to\ TeXShop\ is\ only\ possible\ on\ macOS\!=Inviare le cita Single\ instance=Singola istanza -Copied\ %0\ entry(ies)=Copiate %0 voci -Cut\ %0\ entry(ies)=Taglia %0 voci -Deleted\ %0\ entry(ies)=Cancellate %0 voci +Copied\ %0\ entry(s)=Copiate %0 voci +Cut\ %0\ entry(s)=Taglia %0 voci +Deleted\ %0\ entry(s)=Cancellate %0 voci Enable\ Journal\ Information\ Fetching?=Abilitare il recupero delle informazioni della rivista? Would\ you\ like\ to\ enable\ fetching\ of\ journal\ information?\ This\ can\ be\ changed\ later\ in\ %0\ >\ %1.=Vuoi abilitare il recupero delle informazioni della rivista? Questo può essere modificato in seguito in %0 > %1. diff --git a/src/main/resources/l10n/JabRef_pl.properties b/src/main/resources/l10n/JabRef_pl.properties index 622c5a5f5ff..11da1bb4b10 100644 --- a/src/main/resources/l10n/JabRef_pl.properties +++ b/src/main/resources/l10n/JabRef_pl.properties @@ -1875,7 +1875,9 @@ Show\ tab\ 'Related\ articles'=Pokaż zakładkę 'Powiązane artykuły' -Copied\ %0\ entry(ies)=Skopiowano %0 wpis(ów) +Copied\ %0\ entry(s)=Skopiowano %0 wpisów +Cut\ %0\ entry(s)=Wycięto %0 wpisów +Deleted\ %0\ entry(s)=Skasowano %0 wpisów diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties index 86b343aa259..2b364b26a71 100644 --- a/src/main/resources/l10n/JabRef_pt_BR.properties +++ b/src/main/resources/l10n/JabRef_pt_BR.properties @@ -2759,9 +2759,6 @@ Pushing\ citations\ to\ TeXShop\ is\ only\ possible\ on\ macOS\!=Só é possíve Single\ instance=Instância única -Copied\ %0\ entry(ies)=Copiou %0 entrada(s) -Cut\ %0\ entry(ies)=Cortar %0 entrada(s) -Deleted\ %0\ entry(ies)=%0 entrada(s) excluída(s) Enable\ Journal\ Information\ Fetching?=Ativar busca de informações do periódico? Would\ you\ like\ to\ enable\ fetching\ of\ journal\ information?\ This\ can\ be\ changed\ later\ in\ %0\ >\ %1.=Você gostaria de habilitar a busca de informações de periódicos? Isto pode ser alterado posteriormente em %0 > %1. From a66bc6c6fffe53174a70c7c68dafa9fb76f666fa Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sat, 2 Nov 2024 10:49:14 +0100 Subject: [PATCH 07/40] Update and rename 0040-use-one-form-for-singular-and-plural.md to 0041-use-one-form-for-singular-and-plural.md --- ...d-plural.md => 0041-use-one-form-for-singular-and-plural.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename docs/decisions/{0040-use-one-form-for-singular-and-plural.md => 0041-use-one-form-for-singular-and-plural.md} (99%) diff --git a/docs/decisions/0040-use-one-form-for-singular-and-plural.md b/docs/decisions/0041-use-one-form-for-singular-and-plural.md similarity index 99% rename from docs/decisions/0040-use-one-form-for-singular-and-plural.md rename to docs/decisions/0041-use-one-form-for-singular-and-plural.md index d09007a5458..94c53ca6239 100644 --- a/docs/decisions/0040-use-one-form-for-singular-and-plural.md +++ b/docs/decisions/0041-use-one-form-for-singular-and-plural.md @@ -1,5 +1,5 @@ --- -nav_order: 40 +nav_order: 41 parent: Decision Records --- From 96f3bc32464893d1d674fa0128ffbaab555caaad Mon Sep 17 00:00:00 2001 From: damgam0288 <94230112+damgam0288@users.noreply.github.com> Date: Sat, 2 Nov 2024 20:49:49 +1100 Subject: [PATCH 08/40] Add ADR 0040 - Display front cover for books in Preview Panel (#12122) * Create 0040-display-front-cover-in-preview-tab.md * Remove numbers from headings in 0040-display-front-cover-in-preview-tab.md * Fix bad reason in PreviewPanel option 0040-display-front-cover-in-preview-tab.md * Remove bad links in 0040-display-front-cover-in-preview-tab.md * Add images for ADR 0040-display-book-cover * Fix image links in 0040-display-front-cover-in-preview-tab.md --- ...0040-display-front-cover-in-preview-tab.md | 61 ++++++++++++++++++ .../decisions/0040-placement-in-maintable.png | Bin 0 -> 62668 bytes .../0040-placement-in-new-sidepane.png | Bin 0 -> 77031 bytes .../0040-placement-in-preview-panel.png | Bin 0 -> 80218 bytes docs/decisions/0040-placement-in-sidepane.png | Bin 0 -> 63397 bytes 5 files changed, 61 insertions(+) create mode 100644 docs/decisions/0040-display-front-cover-in-preview-tab.md create mode 100644 docs/decisions/0040-placement-in-maintable.png create mode 100644 docs/decisions/0040-placement-in-new-sidepane.png create mode 100644 docs/decisions/0040-placement-in-preview-panel.png create mode 100644 docs/decisions/0040-placement-in-sidepane.png diff --git a/docs/decisions/0040-display-front-cover-in-preview-tab.md b/docs/decisions/0040-display-front-cover-in-preview-tab.md new file mode 100644 index 00000000000..48b57d644c3 --- /dev/null +++ b/docs/decisions/0040-display-front-cover-in-preview-tab.md @@ -0,0 +1,61 @@ +--- +parent: Decision Records +nav_order: 40 +--- + +# Display front cover for book citations in the Preview tab + +## Context and Problem Statement + +* Users have requested that the front covers of book citations are displayed in JabRef. +* This is discussed on the [JabRef forum](https://discourse.jabref.org/t/display-cover-images-for-books/3647) and raised as a [feature request](https://github.com/JabRef/jabref/issues/10120). +* We need to decide where the book cover should be placed. + +## Decision Drivers + +* It should not be obtrusive or distracting since the main use of JabRef is for articles not books. +* It should not obstruct the view of existing GUI components, specifically the MainTable or the information in the EntryEditor's tabs. + +## Considered Options + +Place the book cover in: + +1. The existing SidePane +2. A new SidePane +3. The Preview panel of the EntryEditor +4. A SplitPane next to the MainTable + +## Decision Outcome + +Chosen option: "The PreviewPanel of the EntryEditor". + +## Pros and Cons of the Options + +### Existing SidePane + +![Image: Placement in SidePane](0040-placement-in-sidepane.png) + +* Good, because it would be unobtrusive +* Bad, because it would crowd other panels in the SidePane +* Bad, because changing the size of the SidePane would affect both the MainTable and the EntryEditor. + +### New right-sided SidePane + +![Image: Placement in the new right-sided SidePane](0040-placement-in-new-sidepane.png) + +* Good, if integrated together with entry preview because it would make it easier to view a citation's preview. +* Bad, because an extra SidePane would make the interface overly complex. + +### The PreviewPanel of the EntryEditor + +![Image: Placement in the Preview Panel](0040-placement-in-preview-panel.png) + +* Good, because it would not be obtrusive or distracting. +* Bad, if the Entry Editor is closed, users will have to open the Entry Editor and navigate to the "Preview" or "Required fields" tab to see the cover. + +### SplitPane next to the MainTable + +![Image: Placement next to the Main Table](0040-placement-in-maintable.png) + +* Good, because changing the size of this SplitPane would [only affect the MainTable](https://github.com/user-attachments/assets/4e458099-ca5c-41bc-a33b-ce4240d7df82). +* Bad, because it would obstruct some columns in the MainTable. diff --git a/docs/decisions/0040-placement-in-maintable.png b/docs/decisions/0040-placement-in-maintable.png new file mode 100644 index 0000000000000000000000000000000000000000..37704645e130070b52934bc05ce6798a5b84152a GIT binary patch literal 62668 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

C-o*?FHKSH{dBK7GQ$FGntj45HQ-wY8d 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 yXY^zA_cdIqq4Xifr{9}g-iNYx>-+KaXK1}q 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%0AylFkPmaGT(-sg4v$VT-QPk7u z?G*B^xK;<1eQezz_Bjr+`?NhpPId}LtHHKbCAsxlafsJyw@GuM($-5R$11-d(@Qj7 z$Hdi$7r*=>{z=CvhMM3V90ZjbB%q)^K4#Z=o}iwiUaMHeOmzxP?&=GK%*&LDc(@)a~NloA9c^q;3fvs+)X|^D$i! zEWe-zS5LVAL&v?2o8ymqgVtYFnW|99dFRG|$l>+E}(20*%1`v`kw@; zUfWP%x@Eu1KdiKfD)L?S&)fX-efA7(TBQz5!5%^`6goPEv$pr|cbkC^rIDkt#gvpm z*s!?V%8*U#t1=@Z*)5klKK)=Db>h}U~8<0RMSEIdp0xqUcb*=yHFOnJ~pO+<@O_;+oX^4vdpg$@t3 zz+2&L4|os)#fG}-g`fFJB>d!`XlInk0b$?7BEEVhUe|T9T0YV|3kNvkV`GqpTKi*W z7-5;ZWYJjoV7zPB14CEMe^?nb1_joEL=j4zA^?nF77!5Fl7R-eW(mMJG5O%*{qlg< zSTY{VUT~+(Pv_A>BEF?j>Wo~ejjKzx4IZ^eVf~O?RFJITR-Y;H^FE#nePdecB2f94 zTHK{G6RTMglh+`M%|(JVKuWU^$~rtOwcaiB{hod)GuEu#{>4#RrP||%;Jca+ZE*5I z#sc3F9ScljneTr0d&O@C^PrGGuB)1wT1G{0Ou^#&7e035V|}sx_4L?r>Tgs3<;ZA2EpX3c4Ii0g$!= z7t1yTd1;Py+JX)OCG$nK){ug%0CRv?^Y^+ntqB*n<+s@96a(zTrvx*j zllmzn;-(cZ=gK<+kCD|7e`Zv!K6C!FMQyu;D<4<2+^LM$a{+oJ;u_#S1@Dat=4&Et zE9;w{X4HKjTyho6`GWKt@rhLCY)*eo_9R-i=$!(H|H98abnwfSv-QiZwgXHKtd0|u zoXqrDTE;Svn+QM++C@>dXE60)_>PeEqLWi&BDNfC;*JX1tY~A6PcJiALb@^wf+a|}z?~;j) zz=l=OKTy$1B3i)f_FxYgf7#xUu;pD~)8?K=veg4w3oRNabpkos(Cmco-AFLw9qK)# z4djqOq0&`4I{uEE*RSY6GRbx3%^wn%MgdC3Ya0C`A!1%{(u(?{tr~O+sAnx@USy~K z!UiQX_mu53#_#&Nc5eStbw$ZpNn`HAC-KP{9O~fT^F@=q@6yOXPT1Az?y?MI%7DJ}qozmcg!G41P#AafF+79kplKr2df&yl_ z^!Si(pK1n>TAk|PpMX^}C<2KAvPQ4X4Gozd&o-;%U8brz!P}6iJ@n!DUXXT@-;%iD zM#SWn0(G)EmeBMUmrTcwBC0=4*{nRE{@%j^se^I_p?pLaG+^CPQ`+uRg5IS=aNOD4 zoBAB*4(Dt{Kk*u3ORdGB4PMstWlc9zUyvpTX}8JJ33}T>V^xA&gJHQS&JzcwX=Kmw zhQ5pC=3I+oc%2A<9Pv} zST3!7shV0JwKR*&{l+%Wf00(E1yoK4H~mFjG?_J3<{Z~$rOw*j z^{QQ*xnY*L>u!7*{{4EHw|q{h8X;3z7IlgIn@y-=t*p2cKd9V2Br z!M#xW>!o{xEpzMdI|P_p7cgbD9@%E)rIJ5T=bHhc=iK?A7GYQTDArOC0eX|wt4I_} z(mI7?K*I3OcUJ2B( ze!O>}*^8OUJEefaPN-DtH3!K2>xTM3H}4FDjAhbt)LUY zf47)VZZOkj|3y7chlWbM{wfjv;BGN>H8nM6ce=DL0LIHywmmR5W`e$f0mvn|kD02j zfIM+2>(jj8NlpJE)7luW%4AF|S3U>U=S|$-=*rW!Nk%|89KL?x+S#~&r-TJ~uD8Em zXABx`4##wNYWHtuHfLJ#0u5l6Pcq7F-hsLzA|d-DctjiQh77>u_U3CFYk4?uuxyM$ zm<<8vS)Wr^$b|>m4>_#*MJ8>P#?(UZs^dQcNzxxaJ3DJ@Z_nFBou*#Q|Lzuu692!6 zin%ctZyOJW@RKxSo?jU-(79aMF^=T%=G%f@R0g*Vpz=R7gBPcNF$zzA{~vzN(c)Y} zbai#*2_LaU*0WBsEESn>#lgizFKbp$z)XBCl*mRHUth@@;?Nx8^MZAdoM<=P8nclX zN5af!$iR<6AE2Xijt0zfTH<)q0(*c6LpY+>>)BNGt*P=zJ00D<*2fku zb$krr>q^S57yEh>_w(b0B|Q?Y+I?CE8#siAP&#(Ytf3Rt5)NS;wKcrmsUh0BnQF@S zJx#QGOUhP!e^f~|)TK)PPkPX<=WV@(xb6Xy5PA{c%VbhAek!4w9nmGXfga9A%uWrq>}fm0JLRpBf3?P9+~CxoRLg@#u8;5 zIyTefkbMKjVkc=8|5fJ!y-(k4Ol23cj<4`pXtUTZbe_a4XUUG4J01`>Dp#Z-mshGn zt7vPzKYqQ?*usmLq0E(vF|#X>Yy|1(x5B4KMLM;&3*53t4DQuRjJr;1KM$lShtA1> z^f$VPH4h;w!O+X%)vk{s8fNUcp6({^BU;3lJV+MJuh9{h{YWs;Z`r)F%4n`()k?pP zQt=jX+WIJd*41rkU$kWv{E`PXo7M8TG>Vr!x=}EOT~|VCmeulLG`v7#vyU;)Kn;y@l!7$eB~2?dNG+ za;>kWrNu+|0NtDk02vg{H}CB1M24SGzjaGVRaKRu!Py(;>a<6Wb}e*74j}H!8lb@; zuelrOq)5{n|D2tv-}xPv|LW&YkGqm(n7IPJUU8)<18WfJ`T4@``T6^U>Z*y5<|mBI z`qXs>x;!ujtOCJVhUCYAN{~p<)~HtUn{{y(Y%HcWy%(4=8;t_PGH!Z$`d8J})m7BL z(^1}x7Ofrs2xNH>`d$h8pitcr0PUwibf*p}M;Y+Poi4|7#I+&w>1m9xOyhC`$zpk; zeoLHohd#tXm6u+`uYsN*tspBclvaF~V-7uwxxqc^+@?ZXI_~pyDe~C$hSDmIgJ}4Bup#z7*>i}Bd z))AW3`t0wJ7C^mjLVJ~ZJ^RPM^s}ZYPzo&k{Ay@)HZTMerL%9H8_36lwp>UmCp5Jm z10U2B1$}ZFHm4HrL+35>BxL}>(S1O5yzAsoXM3cuun<`gBrYMrEUG0gE`Bmr$Q&W= zF!+TJeQ%V4!qT5WobH}RIoYgFqU=!;ocz{w3IaLg1|~qPeMj4SE(n@bJuBvQ|NT+^ zNQ6$41Ss5-2L1ys7w?xUnL8JN`)@>lH?TfWl7^!~r*Q4~ze1ZMHr*+m6htH7*cE{m zcwwlK?71_J-8J38F*kltzT90zNvT&fWQ;BtFf&pmcB?gEOa)rP` zq9EmtqNbz*(Z$x^`B((nk9CCBQzgE{shQ>F?&4&a|7C2D-5}KBsat+8z}0KxJFAZ| zh3AOCkBofCD95sag~MH;^-f#=9ofI%BBt&offi@0eX`H0eFzpi({Qp)kkjCTsEdTv zUTufoi=#9a_J)jtW2>MAC{x)7{pXkxOH`dxtO%p*R|VmRwbOv#w!CO@INGgHr(fVp z4lB##022q&L_g`>I8co_fQI~Q-c)!61WE=F2a?7M^Tmx_sYg4Y>4SWQ3xHpqF?mL?|KC8in9R% z18Q$RjrYfr%!1VUY5V^yv?s$Hhu@sx!i0*Jwa~VHzYJiaHwB=ow=u%B)(dJiP9*Zj zNCj?tKy`263ig9UTMR|ytS^q@i}$vR!}utF0%-tX_)V35pl)|X*Q)e+CrwmxLZb41 zbRmBq7MmLB$Uwb&?FJAk)Jx$Qb)P{0I(OxN*w0PsTb~{>hSCIL9zoLq^+t;Aeb4-&71Wd>z0^md0%Z|gECi^Kg2;Qd9RhOep7PR@KXzk$l91Tdu z3!2r%MZ)~oTNvS+&6}jgJ5IS z_jb*bq&;~7yPT)V?6kW;)jxg3JZQ_R!A}i{?f{S*LV(Vh=W5n>?wpRa62ar~TQm)h z?E%DYZ=J_$WD&U)I{Z6=Qq|AE%4JI3+Rf$@~E42*PQ#0XRT}v#2%*<04Q7+z-iZNjp!4Z{>0)dUnV8CKLj>@qnQ`I>#KgYdlXzEL|FKLoq~&-cA50){G-^jsPO%P) z_=biC#nDTU$t>u;)*}a}Ct3hk(ZV?L!bBe;F(?JvCZ+KT-l4APS|| z;Ox&DRpp^0^rBe99&~lhB%RuKQ14al&Z>*|z^ZWzsfHv*9$^7>4$d(UU`E4x*N$gK&M#^0# zW0moQ^$I0kek_+V=zk&ZPvPd1;blBM#8=M!(wXG1G1VBX#cfRK;93 z7L0j|kh`VLAw;+Ai;ha0JQFOJ>m4srX1b$dJaU8!{uY?N(B)DL8KX@0{`@Hg>@^H0 z2p#Wx6Enqu5yBNtDB2h8P#%qA|&Vd zKQhU9d0P1kDQ>t_S6#MrymQ)m1t{J8#$MK6?zx)X=0uQv{b`6-nyQd2Qk|WN=uJ-v zc?T3-jFbcd*5K}(n2DH3r>M_m8>F+_yz+f!V^pD-R`JKye(#qr_W*$Q7ichPG0{K= zs9Hof>=-O=wmw82qRZJofF08N=O!3+f`6v7Qt$XvJMKS!$!YKP1&j}Au@Vv=T$r7) zYIo##JS`%t*$v2{03GB(puDQ3IA|>&r}BjeTnwIqaa)r@a6^hK0vrt6{lE3fIh#=> zT?tSchAW(m3ruS-HwFPLY001+A9fipe)(=lWkfD?**QB4TEDh+a}$ALUl0dqc0kUV zF)wTLpaQP|{5uPJy8fT$mL2#YIS>R8BB!3CAq4>JxYV$FBA5UG|M8xx;?c1^hUC?{ z`QDm2w11&9GK_D?YE)oteZ3U|A2*@$7zmmHh3w}*Ap4*`Qn-a0$I;BaUF=>2*WM;- zD@Lu1Cg$eip%+&652|1)R584w7%#Pf-~1`Ysa8x*&MZklX!P+#8e3B6_UsKfzEQc_ z**Gv*{v!UEasRaeed08AP0~`p7CU_xgY?=&ee6mt7%sPV>PD$GOQ~|;Kw<(Ryd7XERK{TG2>@m-ZcJC z9FJ6uzVNZgbXRg%<%Az!DgbAn-csQl7%VpDVwB%;k=w&`2Qfjd>g5`veipGK;lhNV z_Vpz|^`Q8Q6`X)!N8v8WT^rnDbp;I+)aeM!4f>@R(5mvwr~q|qk9`lMYB0TW$>LoW!l$Di1 zu4;p%F+UIqG?}wjWM^SvQ4_b1&J*;h_=U4Wxp{apK+X*X)v~-mhxZQ*wTf5&7mRZ1 zfd7k@{m)rXpFW+nV4&--hJ5}N!;s9i@VXCmx<@+N{mb5;3J?~jcgrY@oqJRm`_Y=R zP-$kvASGb#NntE)rRZ)zx&!t4Kj_RorU`jYmp)%$rV09skUwIU?NkVGrz%?Bah&qv zjP+o+?&^mcE2O1I-JtmDdJGQTyNw2p!i)@IBk{+6BVjf%&r#x)tmOf*sZ=}RlMLiB zcnUP+4KmBD^pT8=`rg|n$paPm8>>vrWm{U^1#fHDXd%yB=-!(b88=X$eDvAl3hz?q zdILHkZ`_c&mCO>ko{}t4?x*To;W}M2>EZ=w-1oSikLZUG#lvzbCxKQk)O39gGRHTYj3JH<#svD$0Bq^M37y zHQ9#q6dO=|9oBSB7iM6ZzJ<>vWAr6BfNNPbf{~%q7?TB*(Mce^suK;fAc0Cp_leVJ zpuhh_zFwioq2^16GFp|_yuB_rYImi;P65ft*HtAxFv>*rDFY3A!+B!3&CxezI%b$N zPoTolDUwCXFsa)XTayV~z8M6c$&$-u$5_w??cgg3&-TA!<63W+G5~G*NnmMr+B};vYRnkCZzQd*76(jUptq ze*Q6eUs%Sok_TM|xE0SxInG7jb6QFIZzolobjMmB$4?6;ei7nft`B{EEP5`m*G?u>*VW#j7yF&M61ec#>nc&_-e{%*ls0WWseh<&Dp{Gz0U=x)8ar|G>D22TYu zolwuK4YJDoeXRNN7O+-1JU`aztu>%HvDGs$8@(ykNJ7!H-WMX3>BbI2s;DRlG~o5L z@e+^6IK@GoT`ge_kjmfx7D$+7*`vl!Km_RIn77?uv;a6d{vN+vvvzC@QIh_S7io@D=zG(AZzt3Ep(v(11-%xKNTYV1=lGR7x$XKj0; zmXn}X&m34w!qw;I`V`-vs&3fGJC?c=G~l4qy3?(>Gj@#2acg56(a7wA3IwS5NXL>> z<5b-x*zd=e4@TXjt)=7nqjC-Qc719DaLtj-LtNU+YsjT*@Q_$~L~Cz`C_Y;9#1me5 zd8}Hn+YF-+Qh_kmn^An7UHU{Ar|J97#_sS)1}?;~4AEpSY@X<_<*?dtJhIMhR~*r> zq88v|dqvGXOisE^MlNV>+kv63Kc+FufZo0tSW6kTwK9+a$)sP@QDn7IYC~P!vS)Yw$H(8pWKyAS)|^r;?+h2-*Ur5 zi|!`XlCQl;=g)y|lOfp~UH-kywcH@vqMZN3!azhXGbDafr*7#H!|hhOAwo-@8> zoh$Hycd&6Y!-u<_(Cc`S*wftMXy_qbnjDiiX?!$r({-}z?^`i9Br0|WZ-ilO3_F4b z=Usd1oZ`t}x5nC~L}UDm^Wc$E$VU9xtE@SS@}NW3FJn9h#uy6i4qu)!9quU12@P13 z057pk?RqI0xp{kXr}PL9x_cAu?=G-~9FOAmZ$(xy&%YKtI-dAYxSGJy632#)o&v`@_pXt(z z+>KYo8yP-+3Mck?e*`I-IB>pg)q$>M@`Gg*d-^Y09b#|$o(ufcxBm4SQi>)|UjvK& z@Lk@Cd4JK+@suAh<<|&zM^#IP+yrSioPPPB^^F{7(3fV(xBlJ>DW~cQU1y71ddbXu z-rvOLFIGf4R6+t-*Pp!vl=1<~vC96V!-RUj*d8vyVLq%)+W^GG3m17I^DfVg*e@ zu{%=|G#~n%Ohb@&HkWkLD#tszQ5ndfTFFF$#@?z10XXtwOZ?X6p!}L5XgT^3P}ETw z`gS1X_D(+DuDJ|(ls5qym3~s^Fer%LX_nu)_S?uDW-m1fXxVdspXla>7gSD_op}K8 zXNkc5k0n4@i(616087N@7dIqu?LkPW!J_a}VwTA1qrmqpqwOw41yH7Fh^ zh%i*~67r`~0MlU$xv_q}c^(-r)jrIjnTDF5bf3i!D3(AlRvDIX{if~I!9 mXq7G3(fB|>y_^F__ZY(`FEDe=)Le%cqS@Z{Pb^|fK4j^ literal 0 HcmV?d00001 diff --git a/docs/decisions/0040-placement-in-preview-panel.png b/docs/decisions/0040-placement-in-preview-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..7ddebfdf40b8f034bc809a471cd4e2072c65a2db GIT binary patch literal 80218 zcmdSBcT`jD*EWcvq9CFIBK=Y6Ri)RUh)4@U5JZ|tlioWdHsApSr1wN>=tX*sih%T9 zq=nuglt6%xWKQt+zVpsn-ybu7e6wa)%Vjv^oZR=```+c+*G}kjuqrJz3pE7=1+Ch% zC%P0Am-{IwE@oan4_q-AW1#{5JLj&e`k11mmu(IB<$}#4tw$6TiCd!yw(U3aT;%sGEL(a4^}Y`Dtq-(roz1O z_Ss$U2x?lntV6k4&QL-_)aG=J^Rnv#l2c-d)B_C|nV4pR?yS0lqy=ByS(sB@mOuJE zugrrbaWbWqueL7j!;QR^5Q=8RO)Aw07Ut5wYyS?-l5v?Rb6p_edJx6a&pBCC*f&bNr6y(?K4b+Yv#~|Z8tcm|$R75lb>-dj{)f84fFmG%CIpj09n*5t7OQpC;=8lZMSeK2$b z-JfcUzD+X`1?-pI0lSRr1sM;7s0BZb{OmN3Ei)gN-{g8#oMZW~?vJb7@dF;NBEwGU zOk6qlvaGog{?h-_O?kG8#`ML>E%2O)<}0t<+$Z{F!d%DQWJsK3kmtna#SwGY+2Qfw z;qlvy^l~_^Ws&inkx8gNWO79mE_7^cjE=1zbo%LWUT|9(U(t1a8bQ^cfDl}B zB#;~u+#;SIEEjd98~B?my`>MTm-639*d9BE+ULf3vdi`*x!`5Je<(q41bQ;yh(Ls+<^6d?5Ezo9~m| z+pFO}sdo$b^LvbDs9e!mzitdEbB~B2#bUlPiVBBmM0X(Y%8(&WMJbtrCDE+|9@sWj zO?pc01~SLw4_J%%cl#ls{_YIdONS||Qe-@}CK!IbhmfFwk@5kX<2uThXjfy^B3M#y zik8kCBBF?Ei}Xm9WYfPNe%E}dOl|zW1Bchm8c7Y6N1$f`>y+LKo;`60DAyFkd)*Xr zC)~7P`@zMt6ZB5Kvn#D$h`hD6uQyssNvG}2hqx6|4=-2&J8K^L#Qj5!ofg5!$cv6y z{vWbv+h}4^{!gVk^;XSCQ{Ai)HiJ&)8wR?(0>6zLirJ(&D1n(q+l5+_d`9m8o=8O3N$-S&|&% z;C#?|CJqV(L$BpwD_h7HW?fMk-MPHzduWCI+VDP*?dmMl)&6d|x7qw3CeuH4_S)oA z(DT<>nYWbrPNmqif?(?@Yi7q&i;K0+;ms3~msj%ba{~l+Kju+Rik4ii;=3!e(z}?g zg5kS3~jzJzYkTHQPFE06o0W6uD?H959r#yJ*bVKMym$>6UF(3Z0t#01_} zzvZl4(`gAdNszqQ^B$62U459erphM%=9#g!ujAI}mK-Z!O24%D&8y1X#<@yr1Z46| z8Js@pTEla6)BGms1`84UIbNE&dYTW3e(Pao*-;jIE6r{y^Ci-k{IRKH@}BFCU8%82 z?%SGH28^z~>4szTX;H?}KI`vQztJO?Ei_GP&BQsaxwesU;!CZi;#ALC!Pn13Jt6of zB*Su7(xXrlox3B)VpK{~8N+yhLBn2?YT5owKd?F6fR;jkTn^-?i%`Q z@m{WX8<)y|ouZEQDY2zI2)%Ywt$Z8@Va=qjhB@1*TB2ijjhZj8sD3#b^U5Q;Q>N|f z@qG(dP>v-g53rB7+u1J`FZ?x2QxSizrjqWoJxU~_pjq7l+Pc)Vfx86h2o4pr{f}I5 z*LSht=;2S=TZwFll6Ns}1sWIiArG_G3G-pKO@!V$F)24{*@gc+k%Py1CKq_({CC^- zND~s~hndMi5C*!NfFP{n3TrS9pC`mpbV0s9?f%abB%0?0e1u`WpJEmx>2#zaCS;)G z#w8lN8#11xD`$Q}DT>i^^fVd-EdCmfgrUz+ljk zoD!D)&zV~Kt82wnqf%lDMk@ISC6Xa*(pwW%asqK#CUP<>_YAn;^~BL%IzATNQcFfW3Vn@68Ld{b^ulq9)dT+ZZ_SYkz`s8;|0j zhbPAUBNH|S8PimAN?|O{W;F5ZP1i!z-nCE2qT_0g;TRVY>Xgk*(dLFe?_E?cA9m2{ z$dAhvS1Sbu*$~LWd2qTIa4~>gSmpBf^+G-A=wY5Pemm>Cf_*cLdYZ z1K)E%i0TaGg}>x-411Ccc_~)nU7eDrIu6-KklNVYGjrwVCL$HfFe@cKFh0`032NfV zOF2W)a?C_xV;B+{@t*`{lXFlZ&1)-^`j4I6&5+L<{!6XAXg5MD1j)t%eSAkx*`n}@ zS)ttDEaR(pxWBZ*$#|?c@$IAGVcfeEb7d+`XnQ{$+;<9_g&ZAi%g}pjVX=_e+Qo6) z<1T1gh<=4CGnwH%0V2X|Q1^Xa&*$+kL@J#0TjXl_ zwaf85wP)C!u(vmT`R(MmwY0f5fN+=|imIPYiV8UT?8E%`5%>^kmy@0a?dEdZNq?|{ z)8fAwA1~1g1?m=+9Y?aup#utuIBf+fui-CZef=$0&Te{5x=988dwc(b<9)He`%-GS zoc8x3U-~V-2MB8N(9G$?vGQM{hL-Q8D9AR`lXz(^GL=TR1J*O zcPdbFa2Iu=Ng`sJ0#%GRBz{hh(DW79VJDEvE4!CBZ$}lGb`_pE>FENE^GM727+xZ{ z2nkgf?PQKW8S$o*UV3~b*;&l!xBowS0;JUegXY9bCGkU@g&Gbp-@Tj?r9$3RKb|L1 zxidI7z18G-X0n)+=mxA5(!j^d^V5dSIAU$nN~c^FZwZ`D^lj9lLFnBy4*r8cTpdjX z$Hj0|^3mXc$!<@Xs#fVC5z|VSH{HP5EWZ+z%hc$Qut-=5-fzawCD83MqK-OFfAMn? zlvGXa$*O!uy|H}fpalAcbbM1{^rN=#9@NL1v26Yj$3e(BP6VaJit&{8wIueD1_#nP zF4gUA8c=hAWqf0K$)yX0Ua~++%N4&cv%nRNefmVuRA3l_duM)pZ1-70R}`O1K6l~s*~dua<5P8;7sT07h-RkFw7g*q!HHE9xsE06Yx_9$O< z)A_j0R1wsjX=K?_)6@ie3Q6yoWBl|N;|%09o?FqQCI1lHE<@g|g2ut2i#qhdxV&<2 zOCmbZsqg5U5U$o6lqN03OjmhV0;1s-nb5@vF8)JL6>`#HMF4U&PizPCXRxg+Ct>kh z*G(K3)6;u>gmpR4@mp)fl!T9cR>kS*6HoM~h*b?0&5qk(!31HUG%4f zYxVV5nX)B(qf(~c3F@jO7UV5LmR3c3{snVAQ|PGp_O3d?=6J;B1mW-P_AM(0scXNH zVbm(STOahIV$}GwhuPJiG3oSu)G`lPXGU+;Hc@_Ul-Tqe=2v7a35uTnay5zulvt>f zA?9d82Th{{w%Nb$VK^&J(ok)OS)>midYg7U>H^GAVXZW(&?WoZl$bgUkt)C4#py(x zz!T6$r#+B)w^A|C?m%mDn#10R_99x<+;^En(~pGvw)aktDLAN$x+vXPmZX91kOzms zCZ`~bsDHTE^AiR93M?-c=dY;mCs$U<-%FQ_XOq0>sNhlf5@}NN4>L*}q{m}MX!0`t zsotfL76vMc<()o3G1Y|*m2x!W@~C45&0q%dz%X{8eZ&S?!4x3KHoi|eM) zR)yI@qpRFePGIO{K&Mn`ai(anoc0`zZYJC}{}sLfq!_DL_j_-1(Q;`EOf*K_MqH_}UjW97dMFhEW^yzL5278lr!+W?E)b_FgWXX0JFlj#r~%-iC~4 zP)rx9QzC~APIiSP{!DB#kM#JtI_K&#etxAt1vRwGD~-YY>M%e*&q34hqRPNj^1@sV z|76ouuP$UvGi8^pH|brhI?&_a%J=A$VnXi4OciB+)NWZ{U)NPyF|KjQ?^ukPej8H< z@zmOhRZ9z7(Hc-=BI53jL_)RYT^^@z#t%}-x3e{xAfCJr}tDUdOTlWD_0MrM@~-4 z5=X)HhIXPfiPP}jRNajb)$gJS2bGQa#bS;bD~f+t7Fr9KBFhh6}-7As*@*mkTB0*GR3ep*;(oyncf2FUq?K-#2 z%|G+bBHbzArB%H*ag)e@(u1DZFDjDvrTZ#y7$}+qc3i@EuB)59+qwMesHgRh#mA~D zd5xD6&AkIsyR9Pr>UfU&ksSI`qr(6t;DoldY_X&iYh>RZXp3XG z?2^#*a`?&(vo`ptG#Q@wx|08=$=}=f(|W~OREv!g*?xeI;fa#k&iC+Tf(4?7L|)+P z2u%bNK0k#h0EwfZsDBA~`VUX;%JAw$u^bBgY2X@dO;_=o$~nv2zcSsB)@eF(+4PC% zSyAldvhG=0)SrF7GsDhA7UfrQ z|HI8cRrUsaS8w0{YKDU9-0KgO@8UzK>g3e@{DXBNE8^=k0LxVgbDw0=u6n?&;`*}k z294(&&hwImPVrSvLQ-=3Ple4&Z~7$UEHQ6Pf-C(e1@-vYYf1J)!tf~N;V^s8@<&b~5d_k#Z zpOIBB#fEvQa6)wez!h7{gS4fn*j$uQP{L>tdJoBDX12Q?EQOvR9wt~`@SNRwbWimv zJYY4+o5OSGmum}d^G}60W+o*i#pTuM>0l6R%9y?(25zO zV%X1>6k((4&GGUqZG<8Lk0T9*+e1&fK*f_~+@@10yB5K)#ZB+#{k+fyU>P;e=&z4H z2Genxa+{I-;MVlg1BDLbW#&7xKjuPBjEn>U1^XrM{3t3fe-Hrw(;SFTdSEfHPqE6= z{APoHX1w;GSa{NVdqNBlz>OBFDE4Uu@6m)}IRuorRIB^&{ScHWG+9}vDDPJ7G|AlA z5`2|S(P1|4WAM{(KAkFsu%96*J*iTdnWhF{&j)gcP?D;4bEBO_W0A0D$Y&z96~iIB z`Yt#)m`K2Ldh|aU*`alj0BIXEHLo2r8KCwi+P36k9`w&XBGCD_uijg4W0&y_sCka>0P5$DOeW<=jMA=|k1Zmc(tk!wAhKzD$!{Kw*r3sjEaXj8M3JKv}F zzOoF;no-PWj#pGspu8hQ4XWIA<7ZA!Uz{z3N0ZH9+od`AyDbP)IV^(Tsu0557$5w6 zkJr<{tZ6W4?9hg(gj%~^65-1D;zd;E)?`gclvp7CFwk);0d_)k##P(A>-kK1ZFT=x zn{+J4bJh9n+uMo(J~e$SdX9ZVJDnsLbZ7Fh4y1aA>jZ%~+3yW>Nnn*`gk_B$^Pn3*pd6OYj|1AbyxS!uKif|MPCNY@xhG0KC2P|cRNltTh zDupu+Hps&0d%+&~S-$f~0Rxod%IQjs^0<|^ZReBcNHzllzKU*q396!5kV)F}JMmbk zOWq?~aPM}>rQ}NfxCSYXLb&PxaNr~z#-AG*H3S+g6xVo2`UzV9ignbkN&|j{*#lPRqBXuL21tGDLQOFH3 z`0tUGn7$Y9ySFW_E&Fu=|_EoB~hO&EfuG|{k$_15Dju)Z{l*l zhpNAhd}F;A#$tMjCLdnOp9fdf5l@-{To7?L(kxNY8IqmL zvs;sxF5$8B&d3=iZI>@+iA9?nG`|g*mMb$oFrK@XtrZRae5aE-jRU$_hbOt48uJS^ zKKiUt%q*Wr!fPW2_(>k|Zt}{PaG=vKZ$4Uk&F@~Yx&(gToo@o59ZDD;mk;oqa7rZL z9*7OT8Vl-1V1%!wCv?0!z~H80BZ*)G8m`M)f8jW*hmgoN4ZWJLno51ZchZAl3PD4z zu}DhNo1`dr2=#{o&?uMgNi0J7~2fBHGfOkbSJoRR1 zp`!1EPONH(LKL$Y&!&vimfH)rpcZ?FTvnVRQj1eQ59TAl$nsKDUPxQPweyg@fity% z&u*>g+Ek!Z<8E8+IJ8T@#H^OfGp7`5k`;AcfOuezSQph+~*`j)rYUq zV*d9dO84!mvOG6iNSW0}WRJ5mT~Pfn`UBuzH1yKl#>at^S$Rw!>1F>g#gRqK?dTnG z$utd~If<|`5tSFn40-EvbjLyr=ZR3Pa(4XF>~64UXZgwCr}>Lp(l3lA81y=_-U1?- zyMO8G?VVB_0Xlhjc<^3k>8Pdj=!n_5`30$zM4a4t&*!AYHCp74??WpTXJljm*$1n3 zv3kjlR5LDohb^>oEa0TbWuRAPA&E%1mK3l$jzdTiC}B_sA4>PlN;Uen2b<efJd}+;%EgUBOs8NCFmy|KOcii^4&IUZ;g-aWYgYNe9@``QS$8E zy|9FHp{`%np7WzpICI@}ysL&-7rR7tq}HQd4sh~~)381RlMH{cq2nxu;zO-9ziFb> zG#%)0s!eKxbOLLXDyiX_TGN>WVqX;VNILp-d%O;rac4X2LBPxM(%&r)fOcKYX@m68 zy==_6z-#H^>p<8;&(tf3eKMK(;ujB2{m{q(_8pP5@_Ul*;b5{$^D@&bu>6>lbOKt? z9a}%NF>EkRQEwCs?`m$9^q2O;gq!aF%qM zx~Iij-s`v`9isyl{Y|@ORJ@J2M9y9rdV6^x>-hJo4=f^03Re3s=t@ZwUzWWQcSqAFlQddcb z2|rxa@+}gt=xsT_ank89!r;WP4)Cz8qD{>fHocc$3rDa$uw0*80A$6~nH=(ncc%4V z(o4kn)z1CQ($)$};!my?2kgKK2~N zNpxp;sEeF^aT7nqXBF=in3Q%6^7xgLL!Hk*gp<%#1fi2o7hsK{>#k<<>T za#>q2C;~XoUX`xVPssI+4M{10@R0*; z-w!vy*p9Qp&D#5Ud)ouo{0qKjU(1V5`5^**bDC1m6 z+NMX_n5lpcWt=fR)QNx(?}f()*f~x%;{;)R7p0m8Bb1#$!c9j zSMBUCp$M-JQBHIUC*21mJTG99tq0(5NOQ~(%x@{a2y^Qi2drN%3ffMt)AsjgK&i3| zztw=EFm&u0ZF`JDo(YmwybQf#PT7Ki2GU6%uBsJVgXjLq(bD^<%o{(^ggNj`O{_*X zXtv8&y*?i5L#0W5HOuJEH^(%4Ixo@@RO2p5%-ZvDv)=m&GbF_R9`s>f*7M&+4A7rE1B1N}?S6gf zw%L+|{p{Seo<>gMB_miBPRS}ewdCo%28g}v)i5~fy5a%)v~|A}b<#2i?e>4pE=Bl) zB64B~+Xf&G_<5bK&KIoP$Gh}8brp@+JyxUj1!q0gNT7HNg+!*wD>@IC0x|_W%1dc@ zY-F)ulbEVa=tJbA{70v`TFKX;nce(s*_EMoF28?deG?m)um8t=-Ct>=FZ^-x&~ict6cX8~>C$uN;%(+A`YwYB^?xw*>|g1sDyLdW-yFgE%^uTK1i!3P^*-}z5jISB!q zjgZWQ=fB0D3O~065thVs<`Om(Q$ka|HR0p(Vf!5*x}XErYIzx$;qbU(N7>r@Un){o z#*2L)&b{N{i`aF+M$-arNV5K%RG+VM$nI%jf-$FDFd9cRUC>Nlmb(H7rD$#cDfFfQLD9UAy4YScUnSd(*j=Nm#sD#oST~Nv1~hUoz%2w z^8r0qyE`5zi>ThU^Dm8a#E>7av9Tq-dMn}H`J~s7Z8$ym_Dlt?E~xa{DjFv^ zmL>)5eh;uTTnFlq-AM_jUGGd9SczLC37n}T|K|OnKmj}RmRzsKq#FAr-CEZAp7DW} z=F=L^ZtU8qGHMWhYVlB6)_?RtajsT04xwlqj@O@c_&wo476{>7uFME^TZkHlnvKdh0H%PlPn#h#%WH2hoHw8fX~wY3!|&*7_wF~0+3MBFp|up9p0U5DtBT`hZeqEz(6 z-C01@GM8=ht(Nuta7E<92e>_UkJr%1qa#k!tEdoKcAp`p-YDHR`Y44>(Y^?|lGFA+ zqCbEN-9DkF#EwXVurBg-l9-C=+a2N zCNqxiRnp!A;)occ%82+WXTZ*POJ~6uijr=4P~pbCI{74LnvhjDXI5FOJFdd1D08xp zcAWGkosPl6Sh{v6QlwZ9w`qbNQQ}9~2M=+S8U{rhDV1x0LuheSsCoP1sA+G67ARA1 zD|$RXOk4o|T#T+3D^c>M>FbZ3@f`;WM47emdVpmD6uK@9ot;+TIp)Bfqc^aR@rg3* zhu54l_7AourB2BJ)NqH4^2$Y6!1fXVR9p!H{4WW!LE6jWls%?_?Y~bMo+5)?*!^mt zf@BY#4u0%Gk4J_ssQ$`{^P-(dt8tqtk^L%o9{KkC;LiSD0j-V(pCwCH0->k97hlm> zGn~P~vOt|KET(h#d+JfFQCNMw>YARMmYkj6o0haXjd?r!Z@fM!=}q&wyxae##(v|0 zs*7A6@$udNFhy(KUL0Ly)KPbX;$3F8R{xNrpS{s?g;y7%O#GE_se)aA#lq-jTX$zV zc;d;}Wm0BUvJ5vWOpSDdurJzti?Or(ct&}#Q=J`YP-ccr4@?u(QzI4pbdNeL!Li6F{ySBeUwi2x z(p!^_Ig$EzZ`$6n!@a!XVgUDW2AB)3s_l?fE1)VirVz(i996ygjo1n=4pw z?Yx|q*FS0kBb78FDe#wACGhKEA?6zjW#*$cgB5Z?jAE|+F?HclkxX1nj!FAXY1wag zKhp7tXo`eUtr|VVFJpStvc2QQAbR82Wu~aG36Pk5cP7;S-0luB= zl7y8;SR~&3E?3nOz{WD);|4^_1~_dmi(|@yO1q^3+Cd&!o!$0RR@R!zKL(iL*j#d4 z7bR^`Iir>qTp`S0pa>=h*&hpZcJ4Eu085&#v+w(TLz$Xzb=Aya89CSlz>4BXJv8OX zr)g`L7H5tY;e_Kl)Dn#SM`t360g6%10W@> z+j2!q?O|y7av#8n&Z|#ss=`fo?O2stf=q(QMw#BOg)hW4NgZEwJ>v6T4~=cXkV^m% znlN54MgtXPgY(qP5ckVo8Ec1n>GHgX;4WhX=5-VFS=ShnVK*mEd3pWBQkb{O(sNC| zgu!C+wV|7pmfLBx7S<+7@IiiRB$TN%Mr>@Ta>zPD&0&1JaX0waK=RfH?h4MA;?|=! zDK$x6KQ6lRU)C6`coyM@S(|%#3&rPpo?_y8w)0T`9ZGUIJUueKU4YK#)v6<|(=nY~ z(a0Lvo5*StL%Vx;Sy(UiGSc$gam=h>fOUr;bU8X;1klXnfatkb57xhCfaV~2@cPQLy^~?KYUJW0v_F`Mc z&NQA#R-J&?O|LZwkxl-StI-u`7HOB)M@<&(kx_wMu(;B|hzM_j3)qe)cU(iX6gE5O z;|0I_v*hPBM?O!pz}ZsNjp2^fjud zxP_f4DZU2H-&+g9f#>M`kNEd^sK1)%mrS@EGhsrTIe!!Dsv3~Khs770x<|37X-~}U z^p1pw_dYsKM(>OIGg*S?6xzrs;ps2Wyd-KXFo1XWZaj~-S^W3TfCGD_$M4H?GENS4R488|1yCJ3W?b!R&aPn31s03(XQ6>-_)-k|f0NvtoCczKdYrTw6Mn zNtOBAcBqXuboi}*PfWS4P|6o_Mw1`C6QexWN^{rZsZEb~$^-;_{vt)ct7GqEr8U7w zDsUr%%s`~4=%?SDPEC6T`c1qf59t-^>F*1jSp@Q3Il`7bmW_X~uj3PcD=oWhC6II# z*UZ!}4`DbZxlr1JBtjG#bXsU5)m(Q_NII?9k#iFMhfJCEV)VN0#agqC?p4^RZJ|?x z7M{-bArzfX?$k^Nbo7|XlN!tjKBkC0{f49vfZFGpBX4yP4D&jjbIo^1|5n%yhWDkc zRW^YJIAnK+sp|kSmXgpQU!Zn4V+S|B>r4XD-#-B{G=FD$Ii1K}ONY=>8O91t8->V`2{Xh*;KA2O^lU4zPVjPVon6iPO4 z#T?Ifdi1~lD0&>8Jjcs0pGz276N~yRq7scL12;Ps(?8ex5dTXx$1ep1R!ol$UfWC(L^W)0$5`;(CC2%9-82i z={UYf6dLyr4|`x>@~*9k+lIU9tPrWc6vw|-wEKZDgN7X{hj2dRk+E8yj@p{4;+5Ce zSgT}+@MJUS99;ogD4)Z(n21&>u8Ti__8_fudV2)NOgX|uG0`mG6*8c-Vc)|bgOy$*03m=fK~=pWwX^o4O;x)+Cl+pUtX{t(U(mp3 zTvyk4*&p)hRM>V5!KNM@Vza)<3bw}BH_0BYc4unQKzADqYNA3}VrZlyWn}8YUq&kw zzq&8wJ$-6INugkJbh{d0$CKMA%!84~r&5kHhX7m}{Idvxv{Jm3m?T+MFZ?`nhu;%G zAX>Bw%{KKzmqbhH5J6EX56yM`z80%rmWv{*EQ~`b`zQpftGBJ}rdJgl@6d-mP?yj?Dt#tLA{9wpzXS$rAQIm;MdcYjY3RpT={d`iMp`gX9L* zAS$5GHC@WvsuTy9;Z^2`mPb2tRaF=LG32a=blN&398$n0Wqq{7gdhTGEQ#=gSNUMm zu-*7LR4h{^#}LR$n4&t@a~am@gi@e7_1rJm#WutYa(LZdJ@ogQ|FHNojZsR$Rn@Mn zsTN)&qFC>nmHjq;Q=tzIMAwX+U+hvVC8@96HTU7mT)H)g7u`;gQs*fOURqdK99dR5 zPF9y&7#&x1K29ik={;1#K}|*^pyIK|fWAmX80hxQ4My$M4+)d!v2RCC?*xu)qymY3 ze#REEEu!#c7XJkHc z^a+WB4Z1phk2eZ5m(=q3cw~fC%wnTT%w2uysjCdPoQZm9OlECNleGP#w@vqVUxPK{ zIHkFlre4bW-;_S5R61t(9&%mr3k=_D2A%7y2!~x`l0NtR-|zXVdFX2Qxxq2-&Chsq z05NuMi>9J;eBiG>W(1UfjmOv2Jvv=I)7?&iUfJa|^-83=zApmpLozoA2O`3PQrES-*D3WFi4KLBZUrd2bux^m6rwRGD>7?J@O>lzeG72 z)RvJEIg6F_n^HN1Bb)t}SXtw4@aA~j9hXc4{s%4sC7-*mP<;I+3%rc}e&yZc3t)xc zKwFrF>P|sXT2pzjDc4Q=#c!W$$6f&y-++~ff^1VoDmz~vUWu#WJ&z{@{0NEEb zH!B7(0N$6{=7En3V^8FoSqnhk0KoezY3GyaDV_st8VWr+vvQqW1zLZpW^=EjPLI1X_$J>{8CK}a`#_k&#nsq8Wd#+{=)EMIi-e#iA zdVS}5@f=YTXS6d0AZfo3$Xxjv7_6b+sm+_Kr6jRBgzS4y#UX9oopeVzcoRTxfe|(P zu@aLezk`Cf=a+$e=2j3Rc`U$ABlUMy2te_$IdBQH#JQjRj9+O4a2Xvr3MFs;ijX04 zZ%x7N?eNP?02>EMO38R;15}~KU8(8kwg9!Il#0w*NC!A8+mkh-43DeGd=i8rnE-+e z7&4N9BmZ0gV+GP#r7!9%W4B|GEHCIN@-DH{qyeq*`sG}F7AR{i>CQ(y+H0RXK1uJ^ zJ9w9Y!`Y+%!m{`dw^%83!lrM&VA#p(cn-R{&R!vD|fOqF{NC550$ngICrh`$Vh=_=LPd~3t)|86A0hkiG`T4-W;GM>~{NiF- zXP+|`NUmCl`aZz2;ZTWRrnVuoM>ePG$cF#`MF8~t-&6_;zi5*NFW^^zK;tv}{XLNM zdC;4cKg#h<&{2%aRCf=mxRSQ&2$(`0pfP~y@%B42@L^fN>?06YfMJolV7p!HJx zvfH^xNmF33g$ z+?{>C0&xTB)c+>T-`1r&yYYWe=l>UM`v1+BG)njT?1eJU{KCR;4Uc#r zJhcMTtpIzo>1zJj$RNf4rV)S~>!r?k*K(>q*uk3Zm-QkHxd`mme!HsUNHI~$yVuu4 znNPD3+eV+O>PTTyQc@x!GVr3>aq?Cod39fL1wM306*`5}Afp%%PBg+OCP9&20y>vq zbE{SBM?F5PP0mdHsTldafcaivq)Ti2%)!D4H;LJdVfa&KYj3RXV1nWo;g%d}xBtv6 z%OgO66@k5KTy7>AyKLZ~`$46OY=37&{tmW&wJ8Xg^;rDn)7?OOum;sQ5EUwk3J*O2 z32P+|y&u{g^83Z-OR-gE*~;4CvzB2)#LiCu6t5c+!T&X=C~?L}#7YBextZ055?e2g zyOJhZjE9VV@!gPYi#5t_P@rX(6F7iX`zwxytcW)E*#h5T0M{A0x=Xcblp3~eISwPvxiDNo)2L#ku)sSXIAwFq8K?P1b# zuS}HFGq2E-2EnLjbon*gL?bv(1&w42g^ObYO+2?MJ!C1Xcj|X8-!w(IduceM?1mE7>GyGJPjt zdHLrqqEwCvpT9WkMyEhejgTgN^5#%@V7IBRGlAVIO=Eo_Xaj6Z{-C?iHAff;cUir- z!bWc(@b$kG9Zvc?qv==PiE~ls%GC~UR*zKeGpgi@r_(~Xs7-NbEmUqr@J)1R&Q@ZR zMHinu3AN!2I5N_fq>@n!hxcX!W+3CfXYj9s-?0sYY0j4XUe6COnSRFKT^IGw zEG!4}Y7uY)lw$n&XHEsKX*hM}9{V4Tzwzo8_AU zOOSw?X#$-v~czLGAUe8+$i}Ru2I5`ts%i3EnJqfrV^A&zVi=rLD9U7_?`_ zvFWPUdMbH8=1IGx_&A8CO%GP>8ia?#i9dzuLJ%G`8F_Mg6WDvP7TAkfkCSq*`>hdFbOUL(BJ%gu9$WyMmsX>=*z=jZd%d5j zR>L*rt(2pY%M_fZ-;L(`dKYA^z!-7kEKnsIF_APY(kdz?{Y4W>y{X%e)+$=`=r60^XQ0Cj z)H^228rVH{ez@kxa{03}s+BFHJtvR7i~kjj7q=cR1Gp?RM-hlcD{yjKH~Q~#>+~K%j zzWaezgQQ@;m#yz?HGoN6zWOVX;{x4kl0IM$0BBTNBx3u#>ZXCQT})PQ4${mi6L}erv>{I6m8fL7%n3 z#QBccR~sgka~(1`QLS5TjsE)k4%)0WjHr0&A1v;Rc-&(_^R%(Uq-b(~SSOv6BBLpv&iZPnN~;15CsvD(&jJ$+E}fan!M{1O>P$nL|(J zlSyrIENCD1HjM>5*!?}W!o3W|MgMv+CXYpd*R=llGw@s4fPHNtN9?6%V-gG_R_`Hx zEXeHP3*hLqL+k~x+5(yh_p|_pja+0Mk7YH)sTR^{;Py{K9#n`Yv6m^+ou z267D8HBzI)C9-_LB!plhR%`^UPmXz8#l&)WgVZ^1Z({VD53P>~q5Im>E7(zg{!8RB zeTK|%FRJ(E5R~27r|3t_sZjwX$H%rTnVgup(}&ifwS?7a)5qjPAa=2(eHvWL1OvMk zRS0X}_58+ewTZJKKK7v(?;+Opx!IdKm~RvAa=cc!r|PLbhYdq& zFDy^gdSb=6gW>KYMPf#*+ND9EiMb)mf^LFCeF#tR^1EDw-ozKb1<|_QsUl_S;7H-M zFJBWIX45Q)hY$>OWx!EB>L;~%m41U#{Jl-duy4@)MU7&w*VMpw6!3i-nUMcI2yilh zkyop}$v9>sQSr9$p;u1hj_`C+%SVt$&u%EB1Af3KHS;B7~zJm$I`j z%Jex6KaICW{yc@0To&e(6^@qPs_0OmGkG9W7_&G-T{ z$)~NM0PZm|GSZskR+I|cI@rHZFqW&jDA-=nwZfAN6_Qh6f%RvEN*N&QwR_CU zgdVu7_vWyH_P*5WJ?8T z!18Riv|r>r?`u*_N7_T+M62||NS}dlR%D7hM4irdY-a3#IQzy6E*VQTkP(9&pNsThx~Sn*2X5=MUxnBtuk&a$ip@mXl+QG5@2N zG7dKl3MLCS@9f3goAwM{r10xnR$v|5W0N?)kI`hF=#OUJ@=nc;83)=J*8 zPMpjOS;sJAm)-~5)?o5zx^cc;tWB?Gqbxr9PkwUj%}~agKyO1m0WCLmWF3wEuc}+G zIwBsnA@<6XffLaVVLY;rryTVhvPOj|<;e*)?@qaT@+ElaS40KO~?D1!j`X4>hO z7&9}S%S+-Gobg#Tpg{-Ns~Y!7xc&ONj|OGYoJjsPHb*#tjznx3(eYhR#H2sO43b`X z{@_LJXMB7dcnF$0TOZfE|G zuO5riRfx@1^uWl3dhVAtL1*qDBHDU1)Qd^h#%iBWkBSksuLF!bCM17@%ACpp)2lrb za8u&;AfMrd+zKh|GR37|EFUx|B?FY7BKKOf0MjKrImc&rFesRpxDv_fIGeGf4@g3 z{>#<0OWD6@DX@1NbpLKfNrjsdNeP+11eCEgkpH?i(nk7QJ-xg3KZ|PeqbVr zfA3vu58e+&iGT=uoW+rXO*5QM3JOc3pkK5v?)nRkU zxt@1PnOl4xBz9oP!yi0`9ag%7`c+BM!@%huL~^>KLXTOiU7Ow3#$y|NBQ0Ur#}Id+ z>Sq;(&Fb-O?KH#y;@2e6F1U;0=23olAT<>#vO{T*mZ6KzcwC%uQA}?`5|!(%f0uH-SuGETm2j3x~_k!z& zbnZh9wd(M{P%`odZl$N_u7>!;GFbFqzBw*vQV!QoeeB~v$iZF!8yNpZ9V=!s@Z8P{DnJ_RP&m}#Qw#^s9TdyHHYpHI>~X$JlI~?aB_`vs z&+1`ghoPk51X2%F3(S;sQ_AyidN_BgS4a4t%U5j>ce&hpw2!H7&{kUtS@BH^A=Y=W>_ z$-wFRM7`?@bmX$hTg>7uVg;*n79vfzx|WWAw);rQx^$okP^K?o;&XTnu{m@n#fhR~ zGnXXraV(sLxXy%fJxF+&1QvtF zU`Pk001by}yRs>3fLo7x7|O5neh9~fGj*oXp`mKDXF_WD{RO<0aVMnc>ID>1d71R8 zs@D5Tq85fz;h{9_-d>>uT~+5NN< zt8rUCTq?B*clG0PZ@kBL#Yzw5T#z{JTF15kjXwdaxlkBCHiU`EUSipH+HMqb0W>qN z&R6IvSCgbK-iiIKvjoMhdfUV46*SY2+Fr-D{vArfX~Hx7irivd1U5v2PkJd5Hd|N6 z9~fZR^<{Zn%w?hGo^9z#=*zbA2PPv_((8w19q$~A&V-MJEbd#kUL+OS zGFgiG+=^LzZA$8{*aQC(n@8kgEUv+GHiU`4O*nK(KwBqqXNz|Vt-*^sBNCM%ucD3jlt;ms1e7jtQ8V$OQNGj--urI^BFowi-lYF^G|($>f` z^)x4Loh&bfA9!-8lIxOFRnh5lno|M$%y#z`a0{i(@*^dV$w2pmV7BJSioniNXyMO($wD zPK8gpqeoWb{-f-*iKy(+fHs|Rduo3?O4#{|oN}4%Y2Y3?Ww-lD$_TY1ox_Re#|xPr zKXJ6YuqW(!%o^e-38U?{*3O$V;FN7ex7cm9^_sb_JEN7Nt}zj=0+IbG^_>dN zw0a;k?9qy0Lx(-o76s+0+AGr|{x{%}i*-b(pH>#@7})(9Og@~=CX8zM^K7PjjfO6J z#A|~?uE=RGjY0Ea@rzAvlZ&aTYOfcq>L>OpF){}`b2+CLM0;4(V_vJ;82Gd?%qEH_ zM5BWU5A^BFX-;=_@$?w$4$^Qn>y=oCuR4CwmBZhkFfOME66M2CV<}@y$84B%=QJvxQ!FfF|}T%B)?^*BLZ;a~(4B_l+>&Nl@& zaF+0bM%}zOMBCyn$6l&pp!_;{J_|%qd+s2&%d@=zZ%u+h&nT<}QTLM=hW#d0Hm5=D zs3@?N9@L)Rgp|;_@UT_6O zxZ!D89nGlB*oqzDor1U5acaH2sWdRl#)2IYkCiw`^lT6#sg6b@Fd+JZFNoNV$6{Ab9Ay0=p6WwnVtjSm{voJb-Q{7PFh%F(hh13n{BhmoMxFZt!R)tX zGxR!s_PnQxZP{uPDlW8S@duGS^uBRe?Q74AntFdOM*rx7U#^PAgtms{$H$R#TA-)T zer$q<`UM@b6!c~3+|e9*u?w~X8%*E~`!*wMD0j#RZh3eo#|O_+O&Yn(-#G**(rE2k zzk(FAMch={*Jk9;G2g=LhSq;h?4xDV=ylHv9E%5Jko2aaO3Ogs$_58{%v(C`<+0D$ zxvgssbe)^Gql&IQCU=pnSkx5LrBT^6-hM1TuBoek6wds3Eya(n=TeySV&vIHKw?B` zU{&*0N;tyJIZ*wvj5SsMB>qE-zh05nIS2~`fr)}-QLO%m{6 zB2N3JRO%cS`_zM~?UZvK&UP+*#{K+dNSSIdj+*Ywar#VwLFK@rzj>c(N@K)pi}m*~ zd9{ta03ufzzb1n8Kz1cRVd2i`jwxBr5W9L5(#)1Ja}-`dT@UK^i+eHy1fT3(p~Ejr z7I5B2lVQX-hYa&na&gMt8zvy`bS6ZRAE?T;xa2%EEbo?gm3zNVGPgJ<_Vzsdp_lIQ z(7TOnrkb1u+6{XZ&fj=qr|7kO=5-fGjw0pkHnqF{7GJ_ZnH83DJ=oIT?x`Ky2+L3dy>|m-zpYot+l&_Liv)hTIge4stL4(-q#iD*1`58%7ho~>tH zt;Jtbgf#9Lb~SDqBOabEczX$Frn@y+=lHA|%8ZJWKAfcyAU>T~X5fkP)~*gbYo)-U zJ5&K}4GQJBWF7P3fgbhLLk}x_oj=FOyu4-cv+~?ng#1D{F!%la3UpRJ<6G@JPfKHv2AOY4OYKm{Nl0i^1WfU60hcd$Xw~9 zxhg3Ch1VXW0!4sk3HZm|h1Pi60nxskJmD z1Q9`Ne3*JQKpkgLa`@|R)G^MLm$LKrz?AV!LuQcEg&$95(?I-tSkoGjcT1kEQ;|wZ z+9G{C$4OF{au(4o0o?!|H@PeiTN_t#v(6Z4Z|uhjxLz7GHQ?QS>z=RHhpP;4Vta^q zi22}_H!hSM6U=8f?zrsK9RJ|QLL1du8%PCbbHfvZm6eXW&QU!)#5x?OL17;`-VTJmJIpE?s z#w@JIaw_|6Yi8~@spf-?qW}aVK=ksb`+2XV;%s8^iDr(2dVI+<)1Lv3K=*E?OTDOw z%oaT=u&QmVSS_eV{kb5m0Bifb9=s{1l~^m29%sgarQE?wn zF__Ouj;*=6X$@9Yq~WUKHf}oG>~A|KnDcp%)l0R5ySk`$;Ran14@Oz6LaXdt1?ytURw3q~h zHcULk#a_**8x>#8vV$VMDbyFuyTEe3AzZ_mA|#Lv_U#FyzU?o6`zqVw=aU&PtZuWN z`of*px-!6hY&kyS@LH7eph~V0Kdf+7MpvK?W=cgA{!tRh#cxaAl0_y@)F}W;L4ktG zGKd8@y}a1r_hJy~myqikd`3o8C>7ASMQD1IL7^1pw-UJbj{w*_`9O>)3 zukt79LpmgMl_l!afpUPQF^R~}dgcOcVeoJ8>7)Onb%N6I=hi3*)c@{BvilPzd6<8r z*UY|1ZGbN<)NMze2KkLx(JW>Y;F*#HQRLHG06`Jp=O#-5f%v)n#`=1aJ>ok(CFN!3 zioqnox2ty6(&Ga*jDRaMqj|Zc89>6roqJ1K@6VIt8**Bn?FM?dg5S4<;(f&;I*Z+L zUHRRJ9k_uaA6#8;)b#BE0Kk9`FS+qc%d^v7k4vem1F6I}wyS-9bhRfb!IHj(sa_cP zmq%rF7vRvwqgk(r9K>;$sy3RsK>=3j@9n3YQ20v@}oz^jwM z4C#zpgTN&1f+ymBGyk!ohQl}CP9FbVWkP2Vr%n}MyZccGVa{*1ZcZaBUjUsF^y%Xu$QNvEZ1B%V z=mhwvpabxs;z`YiU!O82h(R1H^8E>fBNs8_V4`o~#xxp%y{4q;X7_r^9lph=-}UXO z>LG{$Pe7{So)^2#vH(r0xWp{eMN)JjoNcKiZjQpBSwd=Rw}zbnCU%5Ki1`Ixc6s^S z3GR%>Uo?MnkrqvR_sVa@@+pMXhDtE-c7iv(Hv;8@(uaDc=CW1t58{1TAvnl{N!*wo zNpfx#f5zr!Gd3Mg67)kzPD`I;)tzN!q}nD2K7}t&fhXxvm*u=j;lJISV-y`%z7QQ~ z8h;o`=e~X`J>LCnjFrT7?iXuooV$Fc@KBJj2mMKd;alr|I%20+HHNL3s8SYFm|KG;;aq!dpGE>u6NJHj zn*a!@IEV|dZ~S)uSY4ECDH>@?gAHC7$$Zc2;L|$|JHe716q%)i#Te$5Ye{Q9m^QTz z``xUwyG?23>_+WV>;x@cm2V)a;DQEczkkDl2pPUZSz%Y`B1cUvdTjLcaAvTvfZClN z{su9S063HOVeXMYFe3z^SEMqjW)kBD`Zel>^>K>}C_?&mT})C4~erqYeVv(OpdJ zSF~b63arxyk;*zS)SvXpatqsnAd@7TaDD$(rskXJzzoMY%s3_Hn~oQ5|*@C3`i#UKQDzSnu`RYz+fuZ^R?o*xCF4lpE$G|BO-$CX*xbl60at++m` z)Obj-?$PnGsYvf6(|S!h`JJ(<1s@5ho~XFKa8~*mwcd*qd5`pru}Ybp8q1LgL2TV= z#W5K*N-}11O9_to(QjB}J}$k>U@-S{{c=-Z{=^!@q>%-G^2M zw2^y=&}L5*imUS(i+$~&z=Hdv{xcM_0n?uyQev(>{Hda1gRHD)W-!aAG03mTcf5O7 z2xT}E3N->K+j-JTpt>aA*y%Wgg?Pz6A7c$*4FJON9tn4KY3bICq*u0D1p{OJAaHve zx|v4>woq*I{>SrTX!i%jBycP)f%PYUYQJN^16PK(j$Gpe6VlgX>M4G(U)#COcn%s% z^gV`ju)Mg8uWKC%_#0jI6m7bah+_ufCzf5$e4op3_0fb0c&aA=^=f98?u9tb2zcCG z)ovufnOIoN!K?#eE^wG9swgSpmmt5;Hc1k2(0(GE0r1)6p#<1nNc-M0l*vrdKdU30d)k-6?}L}hrp;7UgHnH zs^467YoKxku%W+y`|4JDdB{U_fS;7P;TiXOpMet6`s)hcO?6jf=fzD0C+O- z$1y4?%5Z|Z2WH>8c;z2g=gY)zO$o8rU|`ZNpK46}CGDRSzWPwmNNyPy0l`E`ur^Mn zd$Ev5E+~OgBY0jI=d2ZeJuSGQ_hO7qf-hoFRzn;7s{eMKbcY`Kr{E9YSe0n#bYUt* z-h_8)$Tteb8A5l6d?i8BR^>gxSG;t18jG0M$Upgzab#8Uf4~&}3mf?_G2#Ch{wQ|X zCJ{b;&~{dSy+Bd`zEe34eyKP97cb&zQ2H(aMwSpzpR0U&XM%UfBX^NiIg|tfa3#eE z&)%SuPh|YXft3}6ZF`W_!%|HRsp^YT=~wR)r#(F}>;sfhTA7hIOE4a)-s_+O!)=9` zIc76kw^_BX?|u}w$t_tSYtpn7gFDJ&J$P88)Ee59f?+Ok{9TOpWTCxGBeeWwMYYr0 z?c0ny6)S`D9)VM~%I}Yt(Rg~N#QKvzQp&2T64VTh4i5`n_j-sGnG?W%2uM61Ws2kl zLPY4=G1I|YNtp1&%)By?p|lixCl=$XFhVS6!Zh1vGYihk_yADsxf@zzwok*SfOEaT zarHzX&Oa8o-FhMMv61f~@Uu?Zs?9Xvk=Aa}-V4{Gby0k^&>r^yxb1t38L0&Y>t$z- z?MD1}V%4>!P7A|6!Hkory>2`Jy^~Z-fftqnXYz;72{#m+??!GmB1gpY;%B`NG1(Ii zJ?-=z9{e)yvJV>C%ff|KPyOTHP!u?CRhHv%9ba_5XfN2a4kP4xj^MSC#k%tSi`Ry@ z&5<~OfTsY4SM`q2&%v{jJaRr#$q?DXv=1s*Z4!y|VD8A0Gr>V|_(^p4Q(Fq!!h-CN zYn~V4&x_yA2?T}$0@TbWT^N&j!!Kw>=pLzXo$6H^QIQgPc&c{;6=ew`5CJP50@j16 z)p5$=oW0D^P}*VdIsM=<6nAS3=>?(ucww28?zj!_mSZ7>9A9i0y-kt?f{FT zhTS(>dxNBc!eluuyIC27Z$rU{GdJGtx52{hk$L51AogJ)BHeP&4iPNq=-AlfQIu6XU_qWEt%Ikp*lo#q z4`w47D!_w68XUlwK)eHPD4_wAf>c@5KS!x@h!`b^_+d~dat9{M*Lrx7{tS&{J%hJ{{dY) zg>mnD-5E_0qzl{H=K>ML}$4@T#JRm{je#%1yWL!Sq+Ipv%>8lA9EG{F%;pqCH;uSni-!= zhXyct3;py7pK)wBC?}l!y%^&WBS)e%a6?pMq0EAdAvVoc<5N&T01~|`gd6aaA^pCd zdMIX06o0bF-dMo*&VsHRDT}QiC=z!!{cV!&@G8DQwWatwRCeP&uIO!U_MHIm>)H$N zS&MHb1(+rzF4|`C$=F#0k67h3E-bdshmYfWz6kw1|a*Cu;R{m6(vUM<9( zI`EY2-{T~ay78d3m=Kk{B;cE{FeDVnij zn&N=SlS`wD-L8x%38`%LaFOpkPA%{TEqvu7E(EF=o5zt9=c(XGP5EX)DsyY>m}>_? zoZEbO-Zq-o0v*?}AO1W4T;0wVdge)D7kahx#2t16WBi#lX~D~4$L_p%*R`Lmn&)de ze#9=?$tH|x09%(6UPMCf;|>!Ghc_sZVDVU`Ht6%5HB9rwT`j9}!kjU#`w)#HErD|gZA2pl<1J}FXb=M= zUPV%X$;?bYD)s!--CF-c$Ap1uw1NH)V|rAXv=upP$~2uYeW{_4hgdtS%rpdbZc8Tz zU&qtKhQZb_kx6_Rn9ACA2EwwLKY{ zRJ=B+$9`)Lgi!c{%=cmRu#@G=dtOTbdx~YaVy8 z;MmzFbQ{xhWW+lco-k6znd(osEWUBq%ed-}#a;%m8OGIVnmH-gN-+Y=jEmzl9&~@fAvpI zgqLlzpxwFPRx*B@Wb}&~HXCPvds~owL2q>a z(E|>3zF#lVFZaoB zd~-COwelBvpN9@!CY$PO+*klu|x7&$@4|EoEaBy4&u-KxbbbuMCQ z`-2gQda2Y-ALTZ_e)qS~>E0Jl<`dE{u1VBUJ!n|-+)egwN@Yn6bZrb4mwV9JR8(Y; zmHAC;VS>ALvG0?PP^<9XW>7VjZg=ul$-+B7!`2$jqX=)?vQ4m!jKwL1iT*XH*&xMmVb#rXo zvK2cXv`GR=F#zVjD@Nf&fD8%bD`+3fTC7ImH}OwG;B$?~>5S=^QawJcq6FYP*{?jL zRym8#c-aZi=7}q^u^-Z;q9ZbgcsSsxZ0|(3S0WvkO20cD`v7F7?5z?=NKXuc+~NpJ z1uNZBpk3We#b)t~VNklA&9bhfO+SAxwef!2!eH0a&D=(GwaO7@lHZ?}P0H6&;qmXL z>A=d>WxAoD-Ca}ms`o`IV2!ja+z5!b)9y5ioX|Nhkf|;Ov=aU8fYjbsbn3gek_|fk zk74ZB^P#WK;60e}ver>6q+FMbzN4#yad&`9wT0_2aOS7V*00scdD};}iw~@{i@`Uh z*#}KXaaF6LeT{Qk5|s)18A-T`VKouLcG;i|THX9Q5m$*>u91vwSNvtJPoy_HPc)+Ng`CnJMJQh>$crx$q1dU1~DAnZD3 zM)(-g-!VFKua3v+5^W_$BR^gR(Jj!+a7ohkgj4A2>@nn^E4hy9`qb7z2k6 z_Iu3=_>4c)?{{v04-Kj2EW~2_mfml?U%zTa%eE3xcQI5o>tsvVf%gy~6iOygGYPfI zWI_(3$u*5jZpncy!S_6SWch6vXtVRyih>4^P`bvP6X`W#My&afex$Kt5lGdQk8Lp| zPfGAWgZI7@KZ6v{HHnKy`Jg+8(zzba|At?mDJuH!>kJ=4yK;Kn4}ie56LSbBs~P$> zycgBO*~(0qg>db;Tg4w%5^r zpA90L!a#ddnqFM7dbckRul95#pghh5OvXx`hYga#qx*~7=e*w$=&%nF?%~jVd z1Ti!(kW0$ojq3_U^Ll37C8ExQpC8c`Dym+mNc%x8=`Y$3YbqL97s~4D>PXHe$|{%D z+#@#yAiq8dVm0*Icr%5cS&KKrl1>!R#ree#IL(v1UMRJrb}f7=7Mnxb7I{8vk(#Iw zX+u*}Q!!DR7n-(KN%^mA`U^X0KUnoQ8#&$h{BC@hiq^)hFi&IdW~uzD3evCZTQg41 z(~cfUQuO_nC%>-Zm9=uSRLM29koLoUnk03YN%%un8P6=_cSy^$*F#HL#(RB^&_`*` z@Fr0=BUW#I}DJivxQr&Gzrg z&F9xEJc;ns>;Ghx4&IZIT<4emeW~rgFUT2AgZyB4`WL<_iU!ND8u|d`VF%pz- z=j8E_*XuoG3(Wo8UGc3ac4MRFb|m=F2a2GG~@@?!Q1V$5~W$8P~to-?L!(2&ev z;LqmP8y&6>^PILz!NjykE>?xfC88cFRVtLANX5zhH=TzeS}#F8L24IgXe#v4`LM<6-demr+(E6F6+ zsF%N!p1C?-?0mTX+m`KUOlQGatC#2MT+5qC5wr2(`n-H45G>XUOb<63$yP?J3y+gV z5>QPbH(zg0USGQ=LCEtBA6h;ICFT%n99fu{*!$-ip(EvEG(8cYiVLKv0EibuVBR_3jAP~-H@ zO9QJ|z@^+%x>B(<%H{HO1p&=z38lWBhRn3LDb{=(1f+ac^C>nqQUEg2;5Aa?H4K+Y z7LthPhUBJni~ecIsD|8f2~oGw2SIfaRFxpq|8;#H0?lbfvDHaoMVhl@j2u3Ag>if% zT0-Z$D5f<~_W4dlu@71%fOpKsQ$k)K0Ya~6L4DtS zt7O!Dg>x2dDI*{3C&PX(d<{o{)D>RZR#1(8x2aZ-g@K<>L7MB31xn{!SLgeHhTKZ* zvI+V=EQlQg9RswwtofU?V9|r7B&~!t@6@C~lao=zB(7H|ZdFPH%+@{f664`aY3{`z z{AuqZ8Ng~alnGS)M>fX}Rr1%~QfG1l&@Lhad(Cdp2OTV1Up$FO22x7fDzNZB5j)(F zbCOf|OY#@6H=w3NpoGpj=XvWkHZdXCnhMAwxgS-9v*Fy3>c4h!Wj)jY+JN{+X+5+R z8dncJLyLLwH^?E=9P2u5isJlVZJ+;})92s)C~N{8NkAl|T*&3i23~F)#+X(=>i28n zDsP|y6*Yx$xijqt_N1(pr}p1BklA?)SQl+vtF0*WIu=DGn{cuNDllLNqqXmFn zz$ZcMmG_VdVz!Ef|I1uUXNdYu7|FTT3@A~{CEO3ci@Y=`25=nOg0!&PN(i_E()ME^vm3Ik()VXJ~ zAb$E1>OBTMrM&X4!}eNd=tdL}?t7^D6dzf*N(e#{fWil6+d=B|)Vfq5k_rcuY$ASE zy3>B3kE9B&bk9+%FBd@Dqy4blAf&*c7RhC2XLl{Vkg(5mN0K*CQBH0!#P{F})dTz# zg}-OwFUdY}0d*%s(YX-N6a(>I@}KI_KJfetUcz$8gZL=`$^7wE{?Buk*9l7P8_X1m zK(^}kAdIwcoV z*om;p z&)z=t#JWm2^POwIIuhcNP>JgolJxTchOSPkwr^-!qj*@Tfh8y@>=9r-PYji$s^F7^Q2TV6@h44*@s&$*%>0P2bd4^A||A% z`)7&q-))!wY@dZ?V#JJqT9aP5+f_xmVvTc~*3D^){pD^c?$bqp)LP&`d^vBP95UL7 z$O6(apuU@H+xK@V;?3G8Rg25H@^aa>Gf-x5Kl&A4vohG)jH$5xGnzJQRjbtb0)Uyo zzJ-ZB0ce;i*VDc7AO^jT5C96xeqW%y(BhAi`YJL1PAM^4W!{f$}LPmA3@UIdI@}PjQjCo0gawlpEfw zgOpVGz$2enZ*=jJCpJ9dbbRxYr`4@;Yg~I!a|7ylhy_ zH00QoWomQ7sYsF(o7CKd-dnDqann;WzR?Jv0_duLHz1USoc0!ha@{7H5g0;z79ac+ z@(DDrO?F2tj@1N!$`Dw>+BkUfx$@*)kwXa>CcVxuiC7N1?kMI&!my)_(Y%wtc(y7J z4Ji|VERz8i+0@zD;RdK16_N{~vvSzzw|eJqt{scm+5k1Yz)T!+$?xV4po{zbLSIofQ}nfBNA-$-=32%n&bB**f;jN*DTg&Cu?4{)m?sQ?~gwlFlu+By_)V772KIqhi=s^IqfklJK4ndm);6fmPE&$1qlmi^t z0^pOa0oN&-g=Uj7WEQ}%3Upe9q8;94kq>|FVRBJI^a}&{IWWiwkO!EccM)&2fF=}x za}hEd%Y!k4VOp1LjNHK@bObt^UoNnpFuV$Bl&AysL7DGXtBKyAC7E|iuoO4@CgX%t z>%pqaE3xRa;~kP*{&KR$ub7DS_q+a9V-oNhzDD02?n)Zf^nehm76<3g+w?-flh@)% zaqR+(9rm4kuuXq+RvzYW1(Aw3*kO4;D#hFax)L4So6>iWFF9vVdqBZ}oMYqXOJO1G z@4w$Xrq>quN!6ETz5U5_{>|Sd4QSsF=U-OwwJUMGJ@2yP+%ELO)$Kv`b747U#hu&b zFa;x5?3jpSdr+&!iKkncRQ5x&{8Gh^hl9otJB5M-ElrM+jCFZkBzc+=(eW=SgJZ1@ z>nU%#h+^lX-gv((A4JvFrIDI6UaGegY<5853Ls#mT`#6L>`UOsV%G%#ndm_XpR+$h zuPxa8GQwf*7iV4#zziXTduS*HcU7@D3AtTQI_c`F0iuT4WaNvrt!j0RFsqzfljmC{`D%%+h2kkqcC8NlFJgov?rD(PIAzd z!NwW@37>a3I^G1bQ+MlJW|h{LVvN9INs@jQR5S03OSP=;)9^iPqWZ8Ao2NQ4QR^Dn zGAX4mNO?ib4jemxMS<^i(v?MF5j)O(jO2aYHq#z$QOgb@s!g~#kiVMe@a8K&1iM&| zj`GD+PX9#}fN%n4S;$_*wFyI|BtUWu_iG6RB{xQEQ#~Yi37^Ks3-WR;k zkd_}i1&yQ|N&W4K+q+sGnL`LYLL_k?uz2jXlY=?38xSS;f;#|KgI3mci)&sBL_+~t zYu8G)swb@Ta{}7S2ElIe*2RzS=gs-9=@H@E)%e<^zZ=cMYjOMik})}%Hik9SoqO7( zFX1gf5;*}R7HE`*!&)LY#t%B{CD9EQ;i5}cic9efvRJqY8-FPS$gQulODSyXX&XB~ z!4ChDDwp<78DOFTxNu=)L_kz_%<1a#0vi};!?Gug20iySzNiK&(!Pk901K20Oh~>c z#Rk%GJz!ABWlMb*^@jVjZYaWj?dQ5LMX7c>C&hBP)U5Nbl%@?6jALt#?Iw9xNK7h) z!%#JKto3VkEwBrKzwZo!5tuV4XcveGKl|tO6>^2+jiSqHK~53G{E{HXI>%ZnFR8Ta zgfIa3t7R3CSnK&q-6>ItX;Wj&=>%dqR}ZN7B~RzvgLuF&Ao9B>We|fpxGt5QZjwWJbzK%N*D>I$;lOT1)3~gV66c z@j=4GxZ}6&``+FG;sPa``wud6ddNeLAueNJ2~Fu7MC zY;G9Ge9H71Jb2d=T%UK9>fzHb$G3pkD;iSYvF@N+0vuJnUo__J8+X5h*lqpCBfBu? z-DZ47ANlvsIZ7=zfHR_6>*^%mtr7Cz@MnkGm1WGvDE^aNB&H*w3`#M?pY+ECDxUn? z1-eFKq<`)M4p2wbT85KV=EYnu3$}=oVRJ~#WaN0YLK-BChUR$8TFKC?Y87SA;Q*kG zLfs>X`qmHg0C3LO*q4f^1lS)C5^908ffeLX{S=YZ0A>uAO3`$xoSstH5A24=Zp}Qv zby_7j&F_gim_lSM*w-_X5hr@a1bt4NJT}MRrn(n|8i20>pEHt~zY{pw#oFOt z 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 WnG&J)Y~ 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

    @ejuNd9oL66v( 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 F{{j+iMBe}a literal 0 HcmV?d00001 From 935b5df738f1aa1403e1c16abcb760de9ea2f43b Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sat, 2 Nov 2024 11:11:40 +0100 Subject: [PATCH 09/40] Add entry to CHANGELOG.md (#12142) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b32d30f3c0c..38e1c8b26c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -111,6 +111,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv - We fixed an issue where we display warning message for moving attached open files. [#10121](https://github.com/JabRef/jabref/issues/10121) - We fixed an issue where it was not possible to select selecting content of other user's comments.[#11106](https://github.com/JabRef/jabref/issues/11106) - We fixed an issue where web search preferences "Custom API key" table modifications not discarded. [#11925](https://github.com/JabRef/jabref/issues/11925) +- We fixed an issue when opening attached files in [extra file columns](https://docs.jabref.org/finding-sorting-and-cleaning-entries/filelinks#adding-additional-columns-to-entry-table-for-file-types). [#12005](https://github.com/JabRef/jabref/issues/12005) - We fixed an issue where trying to open a library from a failed mounted directory on Mac would cause an error. [#10548](https://github.com/JabRef/jabref/issues/10548) - We fixed an issue where identifier paste couldn't work with Unicode REPLACEMENT CHARACTER. [#11986](https://github.com/JabRef/jabref/issues/11986) From cd332b4142788e188c175054f0f1c31f716a8f82 Mon Sep 17 00:00:00 2001 From: Christoph Date: Sat, 2 Nov 2024 19:27:07 +0100 Subject: [PATCH 10/40] New translations jabref_en.properties (Portuguese, Brazilian) (#12143) --- src/main/resources/l10n/JabRef_pt_BR.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties index 2b364b26a71..13adb892764 100644 --- a/src/main/resources/l10n/JabRef_pt_BR.properties +++ b/src/main/resources/l10n/JabRef_pt_BR.properties @@ -2759,6 +2759,9 @@ Pushing\ citations\ to\ TeXShop\ is\ only\ possible\ on\ macOS\!=Só é possíve Single\ instance=Instância única +Copied\ %0\ entry(s)=%0 entrada(s) copiada(s) +Cut\ %0\ entry(s)=Cortar %0 entrada(s) +Deleted\ %0\ entry(s)=%0 entrada(s) excluída(s) Enable\ Journal\ Information\ Fetching?=Ativar busca de informações do periódico? Would\ you\ like\ to\ enable\ fetching\ of\ journal\ information?\ This\ can\ be\ changed\ later\ in\ %0\ >\ %1.=Você gostaria de habilitar a busca de informações de periódicos? Isto pode ser alterado posteriormente em %0 > %1. From b563c05381e288e0573e7af2c445cae3caf9e4da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:20:56 +0000 Subject: [PATCH 11/40] Bump org.jetbrains.kotlin:kotlin-stdlib-jdk8 from 2.0.20 to 2.0.21 (#12146) Bumps [org.jetbrains.kotlin:kotlin-stdlib-jdk8](https://github.com/JetBrains/kotlin) from 2.0.20 to 2.0.21. - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.20...v2.0.21) --- updated-dependencies: - dependency-name: org.jetbrains.kotlin:kotlin-stdlib-jdk8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 4cdf160b67a..9512ff6006d 100644 --- a/build.gradle +++ b/build.gradle @@ -365,7 +365,7 @@ dependencies { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' } // GemxFX also (transitively) depends on kotlin - implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.20' + implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21' // endregion implementation 'commons-io:commons-io:2.17.0' From 80b0234a9ca1b02374eebc61f3ae493051a44842 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:20:56 +0000 Subject: [PATCH 12/40] Bump org.apache.velocity:velocity-engine-core from 2.3 to 2.4.1 (#12147) Bumps org.apache.velocity:velocity-engine-core from 2.3 to 2.4.1. --- updated-dependencies: - dependency-name: org.apache.velocity:velocity-engine-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 9512ff6006d..7f0344c9dce 100644 --- a/build.gradle +++ b/build.gradle @@ -354,7 +354,7 @@ dependencies { exclude group: 'org.jetbrains.kotlin' } - implementation 'org.apache.velocity:velocity-engine-core:2.3' + implementation 'org.apache.velocity:velocity-engine-core:2.4.1' implementation platform('ai.djl:bom:0.30.0') implementation 'ai.djl:api' implementation 'ai.djl.huggingface:tokenizers' From 1a8bb2b2b5b0d683020560cfe44cdd3e65e62985 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:23:33 +0000 Subject: [PATCH 13/40] Bump com.fasterxml.jackson.dataformat:jackson-dataformat-yaml (#12148) Bumps [com.fasterxml.jackson.dataformat:jackson-dataformat-yaml](https://github.com/FasterXML/jackson-dataformats-text) from 2.18.0 to 2.18.1. - [Commits](https://github.com/FasterXML/jackson-dataformats-text/compare/jackson-dataformats-text-2.18.0...jackson-dataformats-text-2.18.1) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7f0344c9dce..7f2302f598f 100644 --- a/build.gradle +++ b/build.gradle @@ -203,7 +203,7 @@ dependencies { implementation group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '7.0.0.202409031743-r' - implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.18.0' + implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.18.1' implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.18.0' implementation 'com.fasterxml:aalto-xml:1.3.3' From 52d43e9c8ed7d1e5c6978240f699de449cc57a82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:30:51 +0000 Subject: [PATCH 14/40] Bump com.konghq:unirest-modules-gson from 4.4.4 to 4.4.5 (#12149) Bumps [com.konghq:unirest-modules-gson](https://github.com/Kong/unirest-java) from 4.4.4 to 4.4.5. - [Release notes](https://github.com/Kong/unirest-java/releases) - [Changelog](https://github.com/Kong/unirest-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/Kong/unirest-java/compare/v4.4.4...v4.4.5) --- updated-dependencies: - dependency-name: com.konghq:unirest-modules-gson dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7f2302f598f..a92db59e2bb 100644 --- a/build.gradle +++ b/build.gradle @@ -264,7 +264,7 @@ dependencies { // region HTTP clients implementation 'org.jsoup:jsoup:1.18.1' implementation 'com.konghq:unirest-java-core:4.4.4' - implementation 'com.konghq:unirest-modules-gson:4.4.4' + implementation 'com.konghq:unirest-modules-gson:4.4.5' implementation 'org.apache.httpcomponents.client5:httpclient5:5.4' // endregion From 5e1def4982d85ad1c677fb2ec684550feb19b92d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:40:23 +0000 Subject: [PATCH 15/40] Bump org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2 (#12150) Bumps org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2 from 3.1.8 to 3.1.9. --- updated-dependencies: - dependency-name: org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a92db59e2bb..70befe38f8c 100644 --- a/build.gradle +++ b/build.gradle @@ -315,7 +315,7 @@ dependencies { // HTTP server // implementation 'org.glassfish.jersey.containers:jersey-container-netty-http:3.1.1' implementation 'org.glassfish.jersey.containers:jersey-container-grizzly2-http:3.1.9' - testImplementation 'org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2:3.1.8' + testImplementation 'org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2:3.1.9' // Allow objects "magically" to be mapped to JSON using GSON // implementation 'org.glassfish.jersey.media:jersey-media-json-gson:3.1.1' From 8255d41590902b8f0fef7ef53696322ab7718f1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:59:27 +0000 Subject: [PATCH 16/40] Bump buildres/abbrv.jabref.org from `1ad9773` to `0fdf991` (#12151) Bumps [buildres/abbrv.jabref.org](https://github.com/JabRef/abbrv.jabref.org) from `1ad9773` to `0fdf991`. - [Release notes](https://github.com/JabRef/abbrv.jabref.org/releases) - [Commits](https://github.com/JabRef/abbrv.jabref.org/compare/1ad9773b13c37a919207a0e412c6615f42453e99...0fdf99147a8a5fc8ae7ccd79ad4e0029e736e4a3) --- updated-dependencies: - dependency-name: buildres/abbrv.jabref.org dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- buildres/abbrv.jabref.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildres/abbrv.jabref.org b/buildres/abbrv.jabref.org index 1ad9773b13c..0fdf99147a8 160000 --- a/buildres/abbrv.jabref.org +++ b/buildres/abbrv.jabref.org @@ -1 +1 @@ -Subproject commit 1ad9773b13c37a919207a0e412c6615f42453e99 +Subproject commit 0fdf99147a8a5fc8ae7ccd79ad4e0029e736e4a3 From ae2a3f9ab169b53799c3c93e256ae3afdc20819b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 15:01:27 +0000 Subject: [PATCH 17/40] Bump src/main/resources/csl-styles from `1931353` to `49af15c` (#12152) Bumps [src/main/resources/csl-styles](https://github.com/citation-style-language/styles) from `1931353` to `49af15c`. - [Release notes](https://github.com/citation-style-language/styles/releases) - [Commits](https://github.com/citation-style-language/styles/compare/1931353cec337cb62ef3f9049a78e4f91a3834b9...49af15c4f5bca025b6b18ca48c447016586f01e7) --- updated-dependencies: - dependency-name: src/main/resources/csl-styles dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/main/resources/csl-styles | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/csl-styles b/src/main/resources/csl-styles index 1931353cec3..49af15c4f5b 160000 --- a/src/main/resources/csl-styles +++ b/src/main/resources/csl-styles @@ -1 +1 @@ -Subproject commit 1931353cec337cb62ef3f9049a78e4f91a3834b9 +Subproject commit 49af15c4f5bca025b6b18ca48c447016586f01e7 From 84fa5a6c977007b492c34c2a4792c33277a16cae Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 4 Nov 2024 22:26:04 +0100 Subject: [PATCH 18/40] New translations jabref_en.properties (French) (#12153) --- src/main/resources/l10n/JabRef_fr.properties | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties index 6b04d5c36ec..0eb9f0640d3 100644 --- a/src/main/resources/l10n/JabRef_fr.properties +++ b/src/main/resources/l10n/JabRef_fr.properties @@ -1003,6 +1003,7 @@ Error\ opening\ file=Erreur lors de l'ouverture du fichier Error\ opening\ file\ '%0'=Erreur lors de l'ouverture du fichier '%0' File\ '%0'\ already\ linked=Le fichier '%0' est déjà lié +%0\ entry(s)\ imported=%0 entrée(s) importée(s) Error\ while\ fetching\ from\ %0=Erreur au cours de la collecte %0 @@ -1757,6 +1758,8 @@ Remote\ services=Services distants Cannot\ use\ port\ %0\ for\ remote\ operation;\ another\ application\ may\ be\ using\ it.\ Try\ specifying\ another\ port.=Le port %0 ne peut pas être utilisé pour une opération à distance ; un autre logiciel pourrait être en train de l'utiliser. Essayer de spécifier un autre port. Grobid\ URL=URL de Grobid Allow\ sending\ PDF\ files\ and\ raw\ citation\ strings\ to\ a\ JabRef\ online\ service\ (Grobid)\ to\ determine\ Metadata.\ This\ produces\ better\ results.=Autoriser l'envoi de fichiers PDF et de chaînes de citation brutes à un service en ligne de JabRef (Grobid) pour déterminer les métadonnées. Cela donne de meilleurs résultats. +Send\ to\ Grobid=Envoyer à Grobid +Do\ not\ send=Ne pas envoyer Proxy\ requires\ password=Le proxy nécessite un mot de passe Proxy\ configuration=Configuration du Proxy @@ -2643,6 +2646,12 @@ Generate\ summaries\ for\ entries\ in\ the\ group=Générer des résumés pour l Generating\ summaries\ for\ %0=Génération de résumés pour %0 Ingestion\ started\ for\ group\ "%0".=Le traitement a commencé pour le groupe « %0 ». Summarization\ started\ for\ group\ "%0".=Résumé démarré pour le groupe « %0 ». +Reset\ templates\ to\ default=Réinitialiser les modèles par défaut +Templates=Modèles +System\ message\ for\ chatting=Message système pour le tchat +User\ message\ for\ chatting=Message de l'utilisateur pour le tchat +Completion\ text\ for\ summarization\ of\ a\ chunk=Texte de complétion pour la synthèse d'un fragment +Completion\ text\ for\ summarization\ of\ several\ chunks=Texte de complétion pour la synthèse de plusieurs fragments Link=Lien Source\ URL=URL de la source @@ -2758,6 +2767,9 @@ Pushing\ citations\ to\ TeXShop\ is\ only\ possible\ on\ macOS\!=L'envoi des cit Single\ instance=Instance unique +Copied\ %0\ entry(s)=%0 entrée(s) copiée(s) +Cut\ %0\ entry(s)=%0 entrée(s) coupée(s) +Deleted\ %0\ entry(s)=%0 entrée(s) supprimée(s) Enable\ Journal\ Information\ Fetching?=Activer la récupération des informations des journaux ? Would\ you\ like\ to\ enable\ fetching\ of\ journal\ information?\ This\ can\ be\ changed\ later\ in\ %0\ >\ %1.=Voulez-vous activer la récupération des informations des journaux ? Cela peut être modifié plus tard dans %0 > %1. From d77dcbdaffc1a76fe10c3ee114fcd4a420d682e4 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Tue, 5 Nov 2024 11:09:51 +0200 Subject: [PATCH 19/40] Fix summarization templates (#12154) --- src/main/java/org/jabref/logic/ai/AiDefaultPreferences.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/logic/ai/AiDefaultPreferences.java b/src/main/java/org/jabref/logic/ai/AiDefaultPreferences.java index 704b33c9f29..8e4b50d9cb0 100644 --- a/src/main/java/org/jabref/logic/ai/AiDefaultPreferences.java +++ b/src/main/java/org/jabref/logic/ai/AiDefaultPreferences.java @@ -107,7 +107,7 @@ public String toString() { Mention any significant experiments, data, or discussions presented in the paper. DOCUMENT: - $document + $text OVERVIEW:""", @@ -116,7 +116,7 @@ public String toString() { of the paper. Now your task is to combine all of the notes in one structured message. SUMMARIES: - $summaries + $chunks FINAL OVERVIEW:""" ); From a83cdaa2524b7e24aadf70f97a0700b6abcbacf4 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Tue, 5 Nov 2024 11:34:51 +0200 Subject: [PATCH 20/40] Fix AI settings (#12158) --- .../jabref/gui/preferences/ai/AiTabViewModel.java | 12 ++++++++---- src/main/java/org/jabref/logic/ai/AiPreferences.java | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jabref/gui/preferences/ai/AiTabViewModel.java b/src/main/java/org/jabref/gui/preferences/ai/AiTabViewModel.java index 2cb019cf968..c47da76d38b 100644 --- a/src/main/java/org/jabref/gui/preferences/ai/AiTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/ai/AiTabViewModel.java @@ -125,20 +125,20 @@ public AiTabViewModel(CliPreferences preferences) { }); this.customizeExpertSettings.addListener((observableValue, oldValue, newValue) -> - disableExpertSettings.set(!newValue || !enableAi.get()) + disableExpertSettings.set(!newValue || !enableAi.get()) ); this.selectedAiProvider.addListener((observable, oldValue, newValue) -> { List models = AiDefaultPreferences.getAvailableModels(newValue); + disableApiBaseUrl.set(newValue == AiProvider.HUGGING_FACE || newValue == AiProvider.GEMINI); + // When we setAll on Hugging Face, models are empty, and currentChatModel become null. - // It becomes null beause currentChatModel is binded to combobox, and this combobox becomes empty. + // It becomes null because currentChatModel is bound to combobox, and this combobox becomes empty. // For some reason, custom edited value in the combobox will be erased, so we need to store the old value. String oldChatModel = currentChatModel.get(); chatModelsList.setAll(models); - disableApiBaseUrl.set(newValue == AiProvider.HUGGING_FACE || newValue == AiProvider.GEMINI); - if (oldValue != null) { switch (oldValue) { case OPEN_AI -> { @@ -199,6 +199,10 @@ public AiTabViewModel(CliPreferences preferences) { }); this.currentChatModel.addListener((observable, oldValue, newValue) -> { + if (newValue == null) { + return; + } + switch (selectedAiProvider.get()) { case OPEN_AI -> openAiChatModel.set(newValue); case MISTRAL_AI -> mistralAiChatModel.set(newValue); diff --git a/src/main/java/org/jabref/logic/ai/AiPreferences.java b/src/main/java/org/jabref/logic/ai/AiPreferences.java index de1025e72d7..9b6787e2d4d 100644 --- a/src/main/java/org/jabref/logic/ai/AiPreferences.java +++ b/src/main/java/org/jabref/logic/ai/AiPreferences.java @@ -256,7 +256,7 @@ public StringProperty gpt4AllChatModelProperty() { } public String getGpt4AllChatModel() { - return huggingFaceChatModel.get(); + return gpt4AllChatModel.get(); } public void setGpt4AllChatModel(String gpt4AllChatModel) { From 4705977685c6b0551a8d40458abced473501d245 Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 5 Nov 2024 22:53:56 +0100 Subject: [PATCH 21/40] New Crowdin updates (#12160) * New translations jabref_en.properties (German) * New translations jabref_en.properties (Turkish) --- src/main/resources/l10n/JabRef_de.properties | 61 +++++++++++++++++++- src/main/resources/l10n/JabRef_tr.properties | 10 +++- 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/src/main/resources/l10n/JabRef_de.properties b/src/main/resources/l10n/JabRef_de.properties index bbbda40df12..6c35cb304a1 100644 --- a/src/main/resources/l10n/JabRef_de.properties +++ b/src/main/resources/l10n/JabRef_de.properties @@ -103,8 +103,11 @@ Available\ import\ formats=Verfügbare Importformate Show\ BibTeX\ source=BibTeX-Quellcode anzeigen Show/edit\ %0\ source=%0-Quelltext anzeigen/editieren +Background\ tasks=Hintergrund Job +Background\ tasks\ are\ running=Hintergrundprozesse laufen +Background\ tasks\ are\ finished=Hintergrundprozesse beendet Browse=Durchsuchen @@ -122,6 +125,7 @@ Case\ sensitive=Groß-/Kleinschreibung change\ assignment\ of\ entries=Änderung der zugewiesenen Einträge +Catalogues\ used\ for\ 'Search\ pre-configured'=Kataloge für 'Vorkonfigurierte Suche' verwendet Change\ case=Groß- und Kleinschreibung @@ -269,6 +273,8 @@ Search\ groups\ migration\ of\ %0=Suchgruppenmigration von %0 The\ search\ groups\ syntax\ is\ outdated.\ Do\ you\ want\ to\ migrate\ to\ the\ new\ syntax?=Die Suchgruppen-Syntax ist veraltet. Möchten Sie zur neuen Syntax migrieren? Migrate=Migrieren Keep\ as\ is=Unverändert belassen +Search\ group\ migration\ failed=Suchgruppenmigration fehlgeschlagen +The\ search\ group\ '%0'\ could\ not\ be\ migrated.\ Please\ enter\ the\ new\ search\ expression.=Die Suchgruppe '%0' konnte nicht migriert werden. Bitte geben Sie den neuen Suchbegriff ein. Edit=Bearbeiten Edit\ file\ type=Dateityp bearbeiten @@ -313,6 +319,8 @@ Extract\ References\ (online)=Referenzen extrahieren (online) Processing...=In Bearbeitung... Processing\ "%0"...=Verarbeite "%0"... Processing\ PDF(s)=Verarbeite PDF(s) +Processing\ %0=Verarbeitung %0 +Importing\ files\ into\ %1\ |\ %2\ of\ %0\ file(s)\ processed.=Importiere Datei(en) in %1 | %2 von %0 Datei(en) bearbeitet. Processing\ a\ large\ number\ of\ files=Verarbeitung einer großen Anzahl an Dateien You\ are\ about\ to\ process\ %0\ files.\ Continue?=Sie sind dabei %0 Dateien zu verarbeiten. Fortfahren? @@ -481,6 +489,8 @@ Independent\ group\:\ When\ selected,\ view\ only\ this\ group's\ entries=Unabh I\ Agree=Ich stimme zu Indexing\ bib\ fields\ for\ %0=Indizierung von Bib-Feldern für %0 +Indexing\ %0=Indiziere %0 +Indexing\ files\ for\ %1\ |\ %2\ of\ %0\ file(s)\ indexed.=Indiziere Datei(en) für %1 | %2 von %0 Datei(en) indiziert. %0\ of\ %1\ entries\ added\ to\ the\ index.=%0 von %1 Einträgen zum Index hinzugefügt. %0\ of\ %1\ entries\ removed\ from\ the\ index.=%0 von %1 Einträgen aus dem Index entfernt. Removing\ entries\ from\ index\ for\ %0=Entferne Einträge aus dem Index für %0 @@ -797,15 +807,19 @@ Character\ encoding\ '%0'\ is\ not\ supported.=Die Zeichenkodierung '%0' wird ni Filter\ search\ results=Suchergebnisse filtern Filter\ by\ groups=Nach Gruppe filtern Invert\ groups=Gruppen umkehren -Scroll\ to\ previous\ match\ category=Zur vorherigen Übereinstimmungskategorie scrollen -Scroll\ to\ next\ match\ category=Zur nächsten Übereinstimmungskategorie scrollen +Scroll\ to\ previous\ match\ category=Vorherige Trefferkategorie anzeigen +Scroll\ to\ next\ match\ category=Nächste Trefferkategorie anzeigen Search=Suchen Search...=Suchen... Searching...=Suche läuft... Finished\ Searching=Suche beendet Search\ expression=Suchausdruck +This\ only\ affects\ unfielded\ terms.\ For\ using\ RegEx\ in\ a\ fielded\ term,\ use\ \=~\ operator.=Dies betrifft nur Felder ohne Feldnamen. Um RegEx in einem Feld mit Feldnamen zu verwenden, benutzen Sie den \=~ Operator. +This\ only\ affects\ unfielded\ terms.\ For\ using\ case-sensitive\ in\ a\ fielded\ term,\ use\ \=\!\ operator.=Dies betrifft nur Felder ohne Feldnamen. Für die Groß-/Kleinschreibung in einem Feld mit Feldnamen verwenden Sie den \=\! Operator. Fulltext\ search=Volltextsuche +Enable\ indexing=Indizierung aktivieren +Fulltext\ search\ requires\ the\ setting\ 'Automatically\ index\ all\ linked\ files\ for\ fulltext\ search'\ to\ be\ enabled.\ Do\ you\ want\ to\ enable\ indexing\ now?=Für die Volltextsuche muss die Einstellung 'Alle verknüpften Dateien automatisch für die Volltextsuche indizieren' aktiviert sein. Möchten Sie die Indizierung jetzt aktivieren? Help\ on\ regular\ expression\ search=Hilfe zur Suche mit regulärem Ausdruck Searching\ for\ duplicates...=Suche nach doppelten Einträgen... @@ -813,6 +827,7 @@ Searching\ for\ files=Suche nach Dateien Use\ regular\ expression\ search=Suche mit regulärem Ausdruck benutzen search\ expression=Suchausdruck Free\ search\ expression=Freier Suchausdruck +Illegal\ search\ expression=Ungültiger Suchbegriff No\ search\ matches.=Keine Übereinstimmungen gefunden. Web\ search=Internetrecherche Search\ results=Suchergebnisse @@ -827,6 +842,7 @@ Clear\ search=Suche zurücksetzen Search\ document\ identifier\ online=Suche online nach Dokumentenbezeichner Search\ for\ unlinked\ local\ files=Suche nach nicht verlinkten Dateien Search\ full\ text\ documents\ online=Suche Volltextdokumente online +Hint\:\n\nTo\ search\ all\ fields\ for\ Smith,\ enter\:\nsmith\n\nTo\ search\ the\ field\ author\ for\ Smith\ and\ the\ field\ title\ for\ electrical,\ enter\:\nauthor\=Smith\ AND\ title\=electrical=Tipp\:\n\nUm alle Felder nach Smith zu durchsuchen, geben Sie ein\:\nsmith\n\nUm das Feld author nach Smith und das Feld title nach electrical zu durchsuchen, geben Sie ein\:\nauthor\: Smith AND title\: electrical Search\ term\ is\ empty.=Suchbegriff ist leer. Invalid\ regular\ expression.=Ungültiger regulärer Ausdruck. Searching\ for\ a\ keyword=Suche nach einem Schlüsselwort @@ -987,7 +1003,9 @@ Could\ not\ move\ file\ '%0'.=Datei '%0' konnte nicht verschoben werden. Could\ not\ find\ file\ '%0'.=Datei '%0' nicht gefunden. Error\ opening\ file=Fehler beim Öffnen der Datei Error\ opening\ file\ '%0'=Fehler beim Öffnen der Datei '%0' +File\ '%0'\ already\ linked=Datei '%0' bereits verknüpft +%0\ entry(s)\ imported=Keine Einträge importiert Error\ while\ fetching\ from\ %0=Fehler beim Abrufen von %0 @@ -1038,6 +1056,7 @@ Waiting\ for\ background\ tasks\ to\ finish.\ Quit\ anyway?=Warte auf das Beende Find\ and\ remove\ duplicate\ citation\ keys=Doppelte Zitationsschlüssel suchen und entfernen Expected\ syntax\ for\ --fetch\='\:'=Erwartete Syntax für --fetch\='\:' +Library-specific\ file\ directory=Bibliothekseigener Dateipfad User-specific\ file\ directory=Benutzerdefiniertes Dateiverzeichnis LaTeX\ file\ directory=LaTeX-Dateiverzeichnis @@ -1625,7 +1644,7 @@ Found\ overlapping\ ranges=Überlappende Bereiche gefunden Found\ touching\ ranges=Sich berührende Bereiche gefunden Note\:\ Use\ the\ placeholder\ %DIR%\ for\ the\ location\ of\ the\ opened\ library\ file.=Hinweis\: %DIR% als Platzhalter für den Speicherort der Bibliothek benutzen. -Error\ occurred\ while\ executing\ the\ command\ "%0".=Während der Ausführung des Befehls "%0" ist ein Fehler aufgetreten. +Error\ occurred\ while\ executing\ the\ command\ "%0".=Während der Ausführung des Befehls \"%0\" ist ein Fehler aufgetreten. Reformat\ ISSN=Formatiere ISSN Computer\ science=Informatik @@ -1741,6 +1760,8 @@ Remote\ services=Remote-Dienste Cannot\ use\ port\ %0\ for\ remote\ operation;\ another\ application\ may\ be\ using\ it.\ Try\ specifying\ another\ port.=Port %0 konnte nicht für externen Zugriff genutzt werden; er wird möglicherweise von einer anderen Anwendung benutzt. Versuchen Sie einen anderen Port. Grobid\ URL=Grobid URL Allow\ sending\ PDF\ files\ and\ raw\ citation\ strings\ to\ a\ JabRef\ online\ service\ (Grobid)\ to\ determine\ Metadata.\ This\ produces\ better\ results.=Erlaube das Senden von PDF-Dateien und Rohzitaten an einen JabRef Online-Dienst (Grobid) um Metadaten zu ermitteln. Dies führt zu besseren Ergebnissen. +Send\ to\ Grobid=An Grobid senden +Do\ not\ send=Nicht senden Proxy\ requires\ password=Proxy benötigt ein Passwort Proxy\ configuration=Proxy Einstellungen @@ -1782,6 +1803,7 @@ See\ what\ has\ been\ changed\ in\ the\ JabRef\ versions=Beschreibt was in den v Referenced\ citation\ key\ '%0'\ does\ not\ exist=Referenzierter Zitationsschlüssel '%0' existiert nicht Full\ text\ document\ for\ entry\ %0\ already\ linked.=Volltextdokument für Eintrag %0 bereits verknüpft. Download\ full\ text\ documents=Volltext-Dokumente herunterladen +You\ are\ attempting\ to\ download\ full\ text\ documents\ for\ %0\ entries.\nJabRef\ will\ send\ at\ least\ one\ request\ per\ entry\ to\ a\ publisher.=Sie versuchen, Volltextdokumente für %0 Einträge herunterzuladen.\nJabRef sendet mindestens eine Anfrage pro Eintrag an einen Verlag. last\ four\ nonpunctuation\ characters\ should\ be\ numerals=Die letzten vier Nichtinterpunktionszeichen sollten Ziffern sein Author=Autor @@ -2112,7 +2134,18 @@ This\ operation\ requires\ an\ open\ library.=Dieser Vorgang erfordert eine offe Add\ to\ current\ library=Zur aktuellen Bibliothek hinzufügen %0\ entries\ were\ parsed\ from\ your\ query.=%0 Einträge wurden aus Ihrer Anfrage extrahiert. Your\ text\ is\ being\ parsed...=Ihr Text wird analysiert... +LLM=LLM +Please\ verify\ any\ information\ provided.=Bitte prüfen Sie die angegebenen Informationen. +Warning\:\ plain\ citation\ parsing\ may\ generate\ inaccurate\ or\ inappropriate\ responses.=Warnung\: Ungenaue Ergebnisse bei einfacher Zitatverarbeitung möglich. New\ entry\ from\ plain\ text\ (online)=Neuer Eintrag aus reinem Text (online) +Parser\ choice=Parser-Auswahl +Plain\ Citations\ Parser=Parser für einfache Zitate +Please\ enter\ the\ plain\ citations\ to\ parse\ from\ separated\ by\ double\ empty\ lines.=Einfache Zitate bitte mit zwei Leerzeilen trennen. +Rule-based=Regelbasiert +Starts\ the\ parsing\ and\ adds\ the\ resulting\ entries\ to\ the\ currently\ opened\ database=Startet die Auswertung und fügt die Einträge zur geöffneten Datenbank hinzu +Unable\ to\ parse\ plain\ citations.\ Detailed\ information\:\ %0=Einfache Zitate konnten nicht verarbeitet werden. Details\: %0 +Default\ plain\ citation\ parser=Standard-Parser für einfache Zitate +Grobid=Grobid Citation\ key\ filters=Zitationsschlüssel-Filter Field\ filters=Feld-Filter @@ -2607,6 +2640,20 @@ RAG\ minimum\ score\ must\ be\ a\ number=RAG Mindestpunktzahl muss numerisch sei RAG\ minimum\ score\ must\ be\ greater\ than\ 0\ and\ less\ than\ 1=RAG-Mindestpunktzahl muss größer als 0 und kleiner als 1 sein Temperature\ must\ be\ a\ number=Temperatur muss numerisch sein If\ you\ have\ chosen\ %0\ as\ an\ AI\ provider,\ the\ privacy\ policy\ of\ %0\ applies.\ You\ find\ it\ at\ %1.=Wenn Sie %0 als KI-Anbieter gewählt haben, gilt die Datenschutzrichtlinie von %0. Sie finden sie unter %1. +Automatically\ generate\ embeddings\ for\ new\ entries=Einbettungen für neue Einträge automatisch erstellen +Automatically\ generate\ summaries\ for\ new\ entries=Zusammenfassungen für neue Einträge automatisch erstellen +Connection=Verbindung +Generate\ embeddings\ for\ linked\ files\ in\ the\ group=Einbettungen für verknüpfte Dateien in der Gruppe erstellen +Generate\ summaries\ for\ entries\ in\ the\ group=Zusammenfassungen für Einträge in der Gruppe erstellen +Generating\ summaries\ for\ %0=Generiere Zusammenfassungen für %0 +Ingestion\ started\ for\ group\ "%0".=Einlesen für Gruppe '%0' gestartet. +Summarization\ started\ for\ group\ "%0".=Zusammenfassung für Gruppe '%0' gestartet. +Reset\ templates\ to\ default=Vorlagen zurücksetzen +Templates=Vorlagen +System\ message\ for\ chatting=Systemnachricht (Chat) +User\ message\ for\ chatting=Benutzernachricht +Completion\ text\ for\ summarization\ of\ a\ chunk=Ergänzung zur Zusammenfassung eines Abschnitts +Completion\ text\ for\ summarization\ of\ several\ chunks=Ergänzung zur Zusammenfassung mehrerer Abschnitte Link=Link Source\ URL=Quellen-URL @@ -2722,6 +2769,9 @@ Pushing\ citations\ to\ TeXShop\ is\ only\ possible\ on\ macOS\!=Zitate in TeXSh Single\ instance=Einzelne Instanz +Copied\ %0\ entry(s)=%0 Eintrag/Einträge kopiert +Cut\ %0\ entry(s)=%0 Eintrag(e) ausgeschnitten +Deleted\ %0\ entry(s)=%0 Eintrag/Einträge gelöscht Enable\ Journal\ Information\ Fetching?=Journalinformationen abrufen? Would\ you\ like\ to\ enable\ fetching\ of\ journal\ information?\ This\ can\ be\ changed\ later\ in\ %0\ >\ %1.=Möchten Sie das Abrufen von Journal-Informationen aktivieren? Dies kann später in %0 > %1 geändert werden. @@ -2754,4 +2804,9 @@ Currently\ selected\ JStyle\:\ '%0' = Derzeit ausgewählter JStyle\: '%0' Currently\ selected\ CSL\ Style\:\ '%0' = Derzeit ausgewählter CSL-Stil\: '%0' Store\ url\ for\ downloaded\ file=Url für heruntergeladene Datei speichern +Compare\ with\ existing\ entry=Mit vorhandenem Eintrag vergleichen +Library\ Entry=Bibliothekseintrag +Citation\ Entry=Zitationseintrag +File\ Move\ Errors=Fehler beim Verschieben von Dateien +Could\ not\ move\ file\ %0.\ Please\ close\ this\ file\ and\ retry.=Datei %0 konnte nicht verschoben werden. Bitte schließen Sie diese Datei und versuchen Sie es erneut. diff --git a/src/main/resources/l10n/JabRef_tr.properties b/src/main/resources/l10n/JabRef_tr.properties index 52a1c4931c9..f6241c68cb3 100644 --- a/src/main/resources/l10n/JabRef_tr.properties +++ b/src/main/resources/l10n/JabRef_tr.properties @@ -50,6 +50,7 @@ Added\ group\ "%0".="%0" grubu eklendi. Added\ string\:\ '%0'=Dizge eklendi\: '%0' Added\ string=Dizge eklendi Edit\ strings=Dizgeleri düzenle +Duplicate\ string\ name\:\ '%0'='%0' adlı metin zaten mevcut Modified\ string=Değiştirilmiş dizge Modified\ string\:\ '%0' =Değiştirilmiş dizge\: '%0' New\ string=Yeni dizge @@ -68,6 +69,10 @@ Add\ new\ String=Yeni Dizge Ekle String\ constants=Dizge sabitleri Must\ not\ be\ empty\!=Boş olmamalı\! A\ string\ with\ the\ label\ '%0'\ already\ exists.='%0' etiketine sahip bir dizge zaten mevcut. +String\ constant\ "%0"\ was\ not\ imported\ because\ it\ is\ not\ a\ valid\ string\ constant='%0' metin değeri geçerli bir metin değeri olmadığı için içe aktarılamadı +String\ constant\ %0\ was\ not\ imported\ because\ it\ already\ exists\ in\ this\ library=Bu kitaplıkta %0 metin sabiti zaten mevcut. İçe aktarma işlemi başarısız oldu +Could\ not\ import\ the\ following\ string\ constants\:\n\ %0=İçe aktarılamayan metin sabitleri\:\n%0 +Importing\ String\ constants=Metin sabitleri içe aktarılıyor All\ entries=Tüm girdiler @@ -95,9 +100,12 @@ Available\ export\ formats=Mevcut dışa aktarım biçemleri Available\ import\ formats=Mevcut içe aktarım biçemleri %0\ source=%0 kaynağı +Show\ BibTeX\ source=BibTeX kaynağını görüntüle Show/edit\ %0\ source=%0 kaynağın göster/düzenle +Background\ tasks=Arkaplan işlemleri +Background\ tasks\ are\ running=Arkaplan işlemleri devam ediyor Browse=Göz at @@ -1532,7 +1540,7 @@ Found\ overlapping\ ranges=Örtüşen aralıklar bulundu Found\ touching\ ranges=Birbirine komşu aralıklar bulundu Note\:\ Use\ the\ placeholder\ %DIR%\ for\ the\ location\ of\ the\ opened\ library\ file.=Not\: Açık kütüphane dosyasının konumu için %DIR% yer tutucusunu kullan. -Error\ occurred\ while\ executing\ the\ command\ "%0".="%0" komutu çalıştırılırken hata oluştu. +Error\ occurred\ while\ executing\ the\ command\ "%0".=\"%0\" komutu çalıştırılırken hata oluştu. Reformat\ ISSN=ISSN'i yeniden biçimlendir Computer\ science=Bilgisayar bilimi From 897253e0496ca2edbb20070045869b7673dd5b33 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 8 Nov 2024 13:10:29 +0100 Subject: [PATCH 22/40] New translations jabref_en.properties (French) (#12164) --- src/main/resources/l10n/JabRef_fr.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties index 0eb9f0640d3..44205cf0320 100644 --- a/src/main/resources/l10n/JabRef_fr.properties +++ b/src/main/resources/l10n/JabRef_fr.properties @@ -814,6 +814,8 @@ Search...=Recherche... Searching...=Recherche... Finished\ Searching=Recherche terminée Search\ expression=Expression à rechercher +This\ only\ affects\ unfielded\ terms.\ For\ using\ RegEx\ in\ a\ fielded\ term,\ use\ \=~\ operator.=Cela ne concerne que les champs sans nom de champ. Pour utiliser RegEx dans un terme en champ, utilisez l'opérateur \=~ . +This\ only\ affects\ unfielded\ terms.\ For\ using\ case-sensitive\ in\ a\ fielded\ term,\ use\ \=\!\ operator.=Cela ne concerne que les termes sans nom de champ. Pour la sensibilité à la casse dans un champ avec nom de champ, utilisez l'opérateur \=\! . Fulltext\ search=Recherche dans les documents Enable\ indexing=Activer l'indexation @@ -1642,7 +1644,7 @@ Found\ overlapping\ ranges=Plages se chevauchant trouvées Found\ touching\ ranges=Plages contiguës trouvées Note\:\ Use\ the\ placeholder\ %DIR%\ for\ the\ location\ of\ the\ opened\ library\ file.=Note \: Utiliser le paramètre %DIR% pour le répertoire du fichier ouvert. -Error\ occurred\ while\ executing\ the\ command\ "%0".=Une erreur est survenue lors de l'exécution de la commande "%0". +Error\ occurred\ while\ executing\ the\ command\ "%0".=Une erreur est survenue lors de l'exécution de la commande \"%0\". Reformat\ ISSN=Reformater l'ISSN Computer\ science=Informatique (en anglais) From 5009767c11bf6164119dd0b1b4299b49e9c7f7b3 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sat, 9 Nov 2024 15:40:26 +0100 Subject: [PATCH 23/40] Update JDK from 21 to 23 (#12166) * Update JDK from 21 to 23 * Update dependencies * Also use JDK 23 for JavaFX EA build * Use correct tag --- .devcontainer/devcontainer.json | 2 +- .github/workflows/deployment-arm64.yml | 2 +- .github/workflows/deployment-jdk-ea.yml | 2 +- .github/workflows/deployment.yml | 2 +- .github/workflows/tests-fetchers.yml | 2 +- .github/workflows/tests.yml | 16 +++++++------- .github/workflows/update-gradle-wrapper.yml | 2 +- .gitpod.Dockerfile | 2 +- build.gradle | 10 ++++----- .../intellij-12-build.md | 22 +++++++++---------- 10 files changed, 31 insertions(+), 31 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4aaeec87a3f..8c9b29c28c2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -31,7 +31,7 @@ // Install java. // See https://github.com/devcontainers/features/tree/main/src/java#options for details. "ghcr.io/devcontainers/features/java:1": { - "version": "21.0.2-tem", + "version": "23.0.1-tem", "installGradle": false, "jdkDistro": "Temurin" } diff --git a/.github/workflows/deployment-arm64.yml b/.github/workflows/deployment-arm64.yml index c739da3c8dc..b2d795d313d 100644 --- a/.github/workflows/deployment-arm64.yml +++ b/.github/workflows/deployment-arm64.yml @@ -78,7 +78,7 @@ jobs: - name: Setup JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Clean up keychain run: | diff --git a/.github/workflows/deployment-jdk-ea.yml b/.github/workflows/deployment-jdk-ea.yml index 73fb0ab6bc0..8cdf1e63e1e 100644 --- a/.github/workflows/deployment-jdk-ea.yml +++ b/.github/workflows/deployment-jdk-ea.yml @@ -37,7 +37,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest, buildjet-8vcpu-ubuntu-2204-arm] - jdk: [21] + jdk: [23] javafx: [24] include: - os: ubuntu-latest diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index bf28113ae68..543ce7057dc 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -90,7 +90,7 @@ jobs: - name: Setup JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 diff --git a/.github/workflows/tests-fetchers.yml b/.github/workflows/tests-fetchers.yml index dc091bd67f4..e02bfca4916 100644 --- a/.github/workflows/tests-fetchers.yml +++ b/.github/workflows/tests-fetchers.yml @@ -48,7 +48,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b4ab5b8bd26..5907a2aef9b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -37,7 +37,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Run checkstyle reporter uses: dbelyaev/action-checkstyle@master @@ -65,7 +65,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 @@ -87,7 +87,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 @@ -175,7 +175,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 @@ -218,7 +218,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 @@ -259,7 +259,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 @@ -309,7 +309,7 @@ jobs: if: github.ref == 'refs/heads/main' uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 @@ -342,7 +342,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 diff --git a/.github/workflows/update-gradle-wrapper.yml b/.github/workflows/update-gradle-wrapper.yml index efd0339950d..d0081709026 100644 --- a/.github/workflows/update-gradle-wrapper.yml +++ b/.github/workflows/update-gradle-wrapper.yml @@ -15,7 +15,7 @@ jobs: - name: Setup JDK uses: actions/setup-java@v4 with: - java-version: 21.0.5 + java-version: 23.0.1 distribution: 'temurin' - name: Update Gradle Wrapper diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile index 0e80edc3ec8..61c8da1a8e2 100644 --- a/.gitpod.Dockerfile +++ b/.gitpod.Dockerfile @@ -5,4 +5,4 @@ FROM gitpod/workspace-full # All available versions can be listed using sdk ls java # More information about SDKMAN available at https://github.com/sdkman/sdkman-cli#sdkman-cli RUN bash -c ". /home/gitpod/.sdkman/bin/sdkman-init.sh \ - && sdk install java 21-open" + && sdk install java 23-open" diff --git a/build.gradle b/build.gradle index 70befe38f8c..047504964c0 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ import org.jabref.build.xjc.XjcTask plugins { id 'application' - id 'com.github.andygoossens.modernizer' version '1.9.3' + id 'com.github.andygoossens.modernizer' version '1.10.0' id 'me.champeau.jmh' version '0.7.2' @@ -15,7 +15,7 @@ plugins { id 'org.openjfx.javafxplugin' version '0.1.0' - id 'org.beryx.jlink' version '3.0.1' + id 'org.beryx.jlink' version '3.1.0-rc-1' // nicer test outputs during running and completion // Homepage: https://github.com/radarsh/gradle-test-logger-plugin @@ -45,8 +45,8 @@ group = "org.jabref" version = project.findProperty('projVersion') ?: '100.0.0' java { - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 + sourceCompatibility = JavaVersion.VERSION_23 + targetCompatibility = JavaVersion.VERSION_23 // Workaround needed for Eclipse, probably because of https://github.com/gradle/gradle/issues/16922 // Should be removed as soon as Gradle 7.0.1 is released ( https://github.com/gradle/gradle/issues/16922#issuecomment-828217060 ) @@ -60,7 +60,7 @@ java { // - .github/workflows/tests*.yml // - .github/workflows/update-gradle-wrapper.yml // - docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(23) // See https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JvmVendorSpec.html for a full list // vendor = JvmVendorSpec.AMAZON } diff --git a/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md b/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md index 7d86ae38001..85fd85cf130 100644 --- a/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md +++ b/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md @@ -6,24 +6,24 @@ nav_order: 12 # Step 2: Set up the build system: JDK and Gradle -## Ensure that JDK 21 is available to IntelliJ +## Ensure that JDK 23 is available to IntelliJ -Ensure you have a Java 21 SDK configured by navigating to **File > Project Structure... > Platform Settings > SDKs**.
    +Ensure you have a Java 23 SDK configured by navigating to **File > Project Structure... > Platform Settings > SDKs**.
    **Note:** In some MacBooks, `Project Structure` can be found at the "IntelliJ" button of the app menu instead of at "File". -{% figure caption:"JDKs 11, 14, and 15 shown in available SDKs. JDK 21 is missing." %} +{% figure caption:"JDKs 11, 14, and 15 shown in available SDKs. JDK 23 is missing." %} ![Plattform Settings - SDKs](intellij-choose-jdk-adoptopenjdk-on-windows-project-settings.png) {% endfigure %} -If there is another JDK than JDK 21 selected, click on the plus button and choose "Download JDK..." +If there is another JDK than JDK 23 selected, click on the plus button and choose "Download JDK..." {% figure caption:"Download JDK..." %} ![Plattform Settings - SDKs - plus button - Download JDK...](guidelines-select-download-jdk.png) {% endfigure %} -Select JDK version 21 and then Eclipse Temurin. +Select JDK version 23 and then Eclipse Temurin. -{% figure caption:"Example for JDK 21 - Choose Eclipse Temurin" %} +{% figure caption:"Example for JDK 23 - Choose Eclipse Temurin" %} ![Download Eclipse Temurin](guidelines-intellij-select-jdk-eclipse-temurin.png) {% endfigure %} @@ -33,10 +33,10 @@ After clicking "Download", IntelliJ installs Eclipse Temurin: ![IntelliJ installs Eclipse Temurin](guidelines-intellij-installs-temurin.png) {% endfigure %} -Navigate to **Project Settings > Project** and ensure that the projects' SDK is Java 21. +Navigate to **Project Settings > Project** and ensure that the projects' SDK is Java 23. -{% figure caption:"Project SDK is pinned to the downloaded SDK (showing JDK 21 as example)" %} -![Project SDK is JDK 21](guidelines-intellij-project-settings-jdk.png) +{% figure caption:"Project SDK is pinned to the downloaded SDK (showing JDK 23 as example)" %} +![Project SDK is JDK 23](guidelines-intellij-project-settings-jdk.png) {% endfigure %} Click "OK" to store the changes. @@ -44,9 +44,9 @@ Click "OK" to store the changes. ## Ensure correct JDK setting for Gradle Navigate to **File > Settings... > Build, Execution, Deployment > Build Tools > Gradle** and select the "Project SDK" as the Gradle JVM at the bottom. -If that does not exist, just select JDK 21. +If that does not exist, just select JDK 23. -{% figure caption:"Gradle JVM is project SDK (showing "Projekt SDK temurin-21" as example)" %} +{% figure caption:"Gradle JVM is project SDK (showing "Projekt SDK temurin-23" as example)" %} ![Gradle JVM is project SDK](guidelines-intellij-settings-gradle-gradlejvm-is-projectjvm.png) {% endfigure %} From b8dcbbb893fa7354ebae61b59872fbb36988462f Mon Sep 17 00:00:00 2001 From: Christoph Date: Sun, 10 Nov 2024 18:29:29 +0100 Subject: [PATCH 24/40] New translations jabref_en.properties (Portuguese, Brazilian) (#12170) --- src/main/resources/l10n/JabRef_pt_BR.properties | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties index 13adb892764..152bcd4c081 100644 --- a/src/main/resources/l10n/JabRef_pt_BR.properties +++ b/src/main/resources/l10n/JabRef_pt_BR.properties @@ -1640,7 +1640,7 @@ Found\ overlapping\ ranges=Intervalos sobrepostos encontrados Found\ touching\ ranges=Intervalos que se tocam foram encontrados Note\:\ Use\ the\ placeholder\ %DIR%\ for\ the\ location\ of\ the\ opened\ library\ file.=Nota\: Use o %DIR% para definir a localização do arquivo da biblioteca aberta. -Error\ occurred\ while\ executing\ the\ command\ "%0".=Ocorreu um erro ao executar o comando "%0". +Error\ occurred\ while\ executing\ the\ command\ "%0".=Ocorreu um erro ao executar o comando \"%0\". Reformat\ ISSN=Reformatar ISSN Computer\ science=Ciência da computação @@ -2644,6 +2644,10 @@ Generate\ summaries\ for\ entries\ in\ the\ group=Gerar resumos para referência Generating\ summaries\ for\ %0=Gerando resumos para %0 Ingestion\ started\ for\ group\ "%0".=Assimilação iniciada para o grupo "%0". Summarization\ started\ for\ group\ "%0".=Resumo iniciado para o grupo "%0". +System\ message\ for\ chatting=Mensagem de sistema para bate-papo +User\ message\ for\ chatting=Mensagem de usuário para bate-papo +Completion\ text\ for\ summarization\ of\ a\ chunk=Texto de conclusão para o resumo de um pedaço +Completion\ text\ for\ summarization\ of\ several\ chunks=Texto de conclusão para o resumo de vários pedaços Link=Linkar Source\ URL=URL de origem From dc2d3002af2c0180ad09b47f6d565bf10ee56dd6 Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:25:03 +0100 Subject: [PATCH 25/40] Extract preview panel (#12165) * initial * Add some code comments * Fix OpenRewrite * Fix checkstyle * Fix CommentsTabTest * Try to move * Fix imports * WIP * Add JavaDoc * Add checks for present PreviewPanel * Fi xsetCurrentlyEditedEntry * Fix single tab preview * Remove comment * Remove OffersPreview interface * Disable setupMainPanel * Remove orphaned constructor and method arguments * WIP * Set PreviewPanel into a SplitPane to be removable * Add workaround * Nearly working * Introduce TabWithPreviewPanel (and final fixes) * Add CHANGELOG.md entry * Remove parameters * Add JavaDoc comment --------- Co-authored-by: Oliver Kopp --- CHANGELOG.md | 1 + src/main/java/org/jabref/gui/LibraryTab.java | 3 - .../collab/DatabaseChangesResolverDialog.java | 3 +- .../entrychange/EntryChangeDetailsView.java | 3 +- .../jabref/gui/entryeditor/CommentsTab.java | 20 +--- .../gui/entryeditor/DeprecatedFieldsTab.java | 23 ++-- .../entryeditor/DetailOptionalFieldsTab.java | 16 +-- .../jabref/gui/entryeditor/EntryEditor.java | 61 ++++++---- .../gui/entryeditor/EntryEditorTab.java | 9 ++ .../gui/entryeditor/FieldsEditorTab.java | 113 +++++++++--------- .../ImportantOptionalFieldsTab.java | 16 +-- .../jabref/gui/entryeditor/OffersPreview.java | 14 --- .../entryeditor/OptionalFieldsTabBase.java | 16 +-- .../gui/entryeditor/OtherFieldsTab.java | 20 +--- .../jabref/gui/entryeditor/PreviewTab.java | 55 ++------- .../gui/entryeditor/RequiredFieldsTab.java | 24 ++-- .../gui/entryeditor/TabWithPreviewPanel.java | 34 ++++++ .../gui/entryeditor/UserDefinedFieldsTab.java | 22 ++-- .../FulltextSearchResultsTab.java | 2 + .../ExternalFilesEntryLinker.java | 15 ++- .../gui/externalfiles/ImportHandler.java | 2 +- .../jabref/gui/fieldeditors/FieldEditors.java | 4 - .../org/jabref/gui/frame/JabRefFrame.java | 3 +- .../gui/maintable/MainTableColumnFactory.java | 2 +- .../gui/maintable/MainTableTooltip.java | 7 +- .../gui/maintable/columns/FieldColumn.java | 2 +- .../gui/openoffice/StyleSelectDialogView.java | 3 +- .../gui/preferences/preview/PreviewTab.java | 3 +- .../org/jabref/gui/preview/PreviewPanel.java | 82 +++++++------ .../org/jabref/gui/preview/PreviewViewer.java | 75 +++++++----- .../gui/search/GlobalSearchResultDialog.java | 3 +- .../jabref/logic/cleanup/CleanupWorker.java | 6 +- .../logic/cleanup/MoveFilesCleanup.java | 7 +- .../logic/cleanup/RenamePdfCleanup.java | 7 +- .../gui/entryeditor/CommentsTabTest.java | 12 +- .../logic/cleanup/MoveFilesCleanupTest.java | 2 +- .../logic/cleanup/RenamePdfCleanupTest.java | 2 +- 37 files changed, 347 insertions(+), 345 deletions(-) delete mode 100644 src/main/java/org/jabref/gui/entryeditor/OffersPreview.java create mode 100644 src/main/java/org/jabref/gui/entryeditor/TabWithPreviewPanel.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 38e1c8b26c9..f1126b31a18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -113,6 +113,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv - We fixed an issue where web search preferences "Custom API key" table modifications not discarded. [#11925](https://github.com/JabRef/jabref/issues/11925) - We fixed an issue when opening attached files in [extra file columns](https://docs.jabref.org/finding-sorting-and-cleaning-entries/filelinks#adding-additional-columns-to-entry-table-for-file-types). [#12005](https://github.com/JabRef/jabref/issues/12005) - We fixed an issue where trying to open a library from a failed mounted directory on Mac would cause an error. [#10548](https://github.com/JabRef/jabref/issues/10548) +- We fixed an issue when the preview was out of sync. [#9172](https://github.com/JabRef/jabref/issues/9172) - We fixed an issue where identifier paste couldn't work with Unicode REPLACEMENT CHARACTER. [#11986](https://github.com/JabRef/jabref/issues/11986) ### Removed diff --git a/src/main/java/org/jabref/gui/LibraryTab.java b/src/main/java/org/jabref/gui/LibraryTab.java index f7579709894..208e91dacb2 100644 --- a/src/main/java/org/jabref/gui/LibraryTab.java +++ b/src/main/java/org/jabref/gui/LibraryTab.java @@ -589,9 +589,6 @@ public void showAndEdit(BibEntry entry) { entryEditor.requestFocus(); } - /** - * Removes the bottom component. - */ public void closeBottomPane() { mode = PanelMode.MAIN_TABLE; splitPane.getItems().remove(entryEditor); diff --git a/src/main/java/org/jabref/gui/collab/DatabaseChangesResolverDialog.java b/src/main/java/org/jabref/gui/collab/DatabaseChangesResolverDialog.java index 7c86ee9950b..3c0be42e6ed 100644 --- a/src/main/java/org/jabref/gui/collab/DatabaseChangesResolverDialog.java +++ b/src/main/java/org/jabref/gui/collab/DatabaseChangesResolverDialog.java @@ -99,7 +99,8 @@ public boolean areAllChangesDenied() { @FXML private void initialize() { - PreviewViewer previewViewer = new PreviewViewer(database, dialogService, preferences, themeManager, taskExecutor); + PreviewViewer previewViewer = new PreviewViewer(dialogService, preferences, themeManager, taskExecutor); + previewViewer.setDatabaseContext(database); DatabaseChangeDetailsViewFactory databaseChangeDetailsViewFactory = new DatabaseChangeDetailsViewFactory(database, dialogService, themeManager, preferences, entryTypesManager, previewViewer, taskExecutor); viewModel = new ExternalChangesResolverViewModel(changes, undoManager); diff --git a/src/main/java/org/jabref/gui/collab/entrychange/EntryChangeDetailsView.java b/src/main/java/org/jabref/gui/collab/entrychange/EntryChangeDetailsView.java index 8cdabe824ef..f62934e7732 100644 --- a/src/main/java/org/jabref/gui/collab/entrychange/EntryChangeDetailsView.java +++ b/src/main/java/org/jabref/gui/collab/entrychange/EntryChangeDetailsView.java @@ -40,7 +40,8 @@ public EntryChangeDetailsView(BibEntry oldEntry, onDisk.getStyleClass().add("lib-change-header"); // we need a copy here as we otherwise would set the same entry twice - PreviewViewer previewClone = new PreviewViewer(databaseContext, dialogService, preferences, themeManager, taskExecutor); + PreviewViewer previewClone = new PreviewViewer(dialogService, preferences, themeManager, taskExecutor); + previewClone.setDatabaseContext(databaseContext); // The scroll bar used is not part of ScrollPane, but the attached WebView. WebView previewCloneView = (WebView) previewClone.getContent(); diff --git a/src/main/java/org/jabref/gui/entryeditor/CommentsTab.java b/src/main/java/org/jabref/gui/entryeditor/CommentsTab.java index 1930d618d9c..c9053f0a4bf 100644 --- a/src/main/java/org/jabref/gui/entryeditor/CommentsTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/CommentsTab.java @@ -16,26 +16,22 @@ import javafx.scene.layout.Priority; import javafx.scene.layout.RowConstraints; -import org.jabref.gui.DialogService; import org.jabref.gui.autocompleter.SuggestionProviders; import org.jabref.gui.fieldeditors.FieldEditorFX; import org.jabref.gui.fieldeditors.FieldNameLabel; import org.jabref.gui.fieldeditors.MarkdownEditor; import org.jabref.gui.icon.IconTheme; import org.jabref.gui.preferences.GuiPreferences; -import org.jabref.gui.theme.ThemeManager; +import org.jabref.gui.preview.PreviewPanel; import org.jabref.gui.undo.RedoAction; import org.jabref.gui.undo.UndoAction; -import org.jabref.gui.util.OptionalObjectProperty; import org.jabref.logic.journals.JournalAbbreviationRepository; import org.jabref.logic.l10n.Localization; -import org.jabref.logic.util.TaskExecutor; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.field.UserSpecificCommentField; -import org.jabref.model.search.query.SearchQuery; public class CommentsTab extends FieldsEditorTab { public static final String NAME = "Comments"; @@ -51,25 +47,17 @@ public CommentsTab(GuiPreferences preferences, UndoManager undoManager, UndoAction undoAction, RedoAction redoAction, - DialogService dialogService, - ThemeManager themeManager, - TaskExecutor taskExecutor, JournalAbbreviationRepository journalAbbreviationRepository, - OptionalObjectProperty searchQueryProperty) { - super( - false, + PreviewPanel previewPanel) { + super(false, databaseContext, suggestionProviders, undoManager, undoAction, redoAction, - dialogService, preferences, - themeManager, - taskExecutor, journalAbbreviationRepository, - searchQueryProperty - ); + previewPanel); this.defaultOwner = preferences.getOwnerPreferences().getDefaultOwner().toLowerCase(Locale.ROOT).replaceAll("[^a-z0-9]", "-"); setText(Localization.lang("Comments")); setGraphic(IconTheme.JabRefIcons.COMMENT.getGraphicNode()); diff --git a/src/main/java/org/jabref/gui/entryeditor/DeprecatedFieldsTab.java b/src/main/java/org/jabref/gui/entryeditor/DeprecatedFieldsTab.java index c4f75a09893..6bef4bf0dd8 100644 --- a/src/main/java/org/jabref/gui/entryeditor/DeprecatedFieldsTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/DeprecatedFieldsTab.java @@ -9,24 +9,20 @@ import javafx.scene.control.Tooltip; -import org.jabref.gui.DialogService; import org.jabref.gui.autocompleter.SuggestionProviders; import org.jabref.gui.icon.IconTheme; import org.jabref.gui.preferences.GuiPreferences; -import org.jabref.gui.theme.ThemeManager; +import org.jabref.gui.preview.PreviewPanel; import org.jabref.gui.undo.RedoAction; import org.jabref.gui.undo.UndoAction; -import org.jabref.gui.util.OptionalObjectProperty; import org.jabref.logic.journals.JournalAbbreviationRepository; import org.jabref.logic.l10n.Localization; -import org.jabref.logic.util.TaskExecutor; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.database.BibDatabaseMode; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.BibEntryType; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.entry.field.Field; -import org.jabref.model.search.query.SearchQuery; import com.tobiasdiez.easybind.EasyBind; @@ -40,14 +36,21 @@ public DeprecatedFieldsTab(BibDatabaseContext databaseContext, UndoManager undoManager, UndoAction undoAction, RedoAction redoAction, - DialogService dialogService, GuiPreferences preferences, - ThemeManager themeManager, BibEntryTypesManager entryTypesManager, - TaskExecutor taskExecutor, JournalAbbreviationRepository journalAbbreviationRepository, - OptionalObjectProperty searchQueryProperty) { - super(false, databaseContext, suggestionProviders, undoManager, undoAction, redoAction, dialogService, preferences, themeManager, taskExecutor, journalAbbreviationRepository, searchQueryProperty); + PreviewPanel previewPanel) { + super( + false, + databaseContext, + suggestionProviders, + undoManager, + undoAction, + redoAction, + preferences, + journalAbbreviationRepository, + previewPanel + ); this.entryTypesManager = entryTypesManager; setText(Localization.lang("Deprecated fields")); diff --git a/src/main/java/org/jabref/gui/entryeditor/DetailOptionalFieldsTab.java b/src/main/java/org/jabref/gui/entryeditor/DetailOptionalFieldsTab.java index a10d6aff476..48fb2ef017f 100644 --- a/src/main/java/org/jabref/gui/entryeditor/DetailOptionalFieldsTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/DetailOptionalFieldsTab.java @@ -2,19 +2,15 @@ import javax.swing.undo.UndoManager; -import org.jabref.gui.DialogService; import org.jabref.gui.autocompleter.SuggestionProviders; import org.jabref.gui.preferences.GuiPreferences; -import org.jabref.gui.theme.ThemeManager; +import org.jabref.gui.preview.PreviewPanel; import org.jabref.gui.undo.RedoAction; import org.jabref.gui.undo.UndoAction; -import org.jabref.gui.util.OptionalObjectProperty; import org.jabref.logic.journals.JournalAbbreviationRepository; import org.jabref.logic.l10n.Localization; -import org.jabref.logic.util.TaskExecutor; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntryTypesManager; -import org.jabref.model.search.query.SearchQuery; public class DetailOptionalFieldsTab extends OptionalFieldsTabBase { @@ -25,13 +21,10 @@ public DetailOptionalFieldsTab(BibDatabaseContext databaseContext, UndoManager undoManager, UndoAction undoAction, RedoAction redoAction, - DialogService dialogService, GuiPreferences preferences, - ThemeManager themeManager, BibEntryTypesManager entryTypesManager, - TaskExecutor taskExecutor, JournalAbbreviationRepository journalAbbreviationRepository, - OptionalObjectProperty searchQueryProperty) { + PreviewPanel previewPanel) { super( Localization.lang("Optional fields 2"), false, @@ -40,13 +33,10 @@ public DetailOptionalFieldsTab(BibDatabaseContext databaseContext, undoManager, undoAction, redoAction, - dialogService, preferences, - themeManager, entryTypesManager, - taskExecutor, journalAbbreviationRepository, - searchQueryProperty + previewPanel ); } } diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java index b42152dd9a4..3a2bd6f2258 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java @@ -2,7 +2,6 @@ import java.io.File; import java.nio.file.Path; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; @@ -43,6 +42,7 @@ import org.jabref.gui.menus.ChangeEntryTypeMenu; import org.jabref.gui.mergeentries.FetchAndMergeEntry; import org.jabref.gui.preferences.GuiPreferences; +import org.jabref.gui.preview.PreviewPanel; import org.jabref.gui.theme.ThemeManager; import org.jabref.gui.undo.CountingUndoManager; import org.jabref.gui.undo.RedoAction; @@ -69,6 +69,7 @@ import com.tobiasdiez.easybind.EasyBind; import com.tobiasdiez.easybind.Subscription; import jakarta.inject.Inject; +import org.jspecify.annotations.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -91,6 +92,7 @@ public class EntryEditor extends BorderPane { private final BibDatabaseContext databaseContext; private final EntryEditorPreferences entryEditorPreferences; private final ExternalFilesEntryLinker fileLinker; + private final PreviewPanel previewPanel; private final DirectoryMonitorManager directoryMonitorManager; private final UndoAction undoAction; private final RedoAction redoAction; @@ -121,7 +123,6 @@ public class EntryEditor extends BorderPane { @Inject private AiService aiService; private final List allPossibleTabs; - private final Collection previewTabs; public EntryEditor(LibraryTab libraryTab, UndoAction undoAction, RedoAction redoAction) { this.libraryTab = libraryTab; @@ -135,14 +136,22 @@ public EntryEditor(LibraryTab libraryTab, UndoAction undoAction, RedoAction redo .load(); this.entryEditorPreferences = preferences.getEntryEditorPreferences(); - this.fileLinker = new ExternalFilesEntryLinker(preferences.getExternalApplicationsPreferences(), preferences.getFilePreferences(), databaseContext, dialogService); + this.fileLinker = new ExternalFilesEntryLinker(preferences.getExternalApplicationsPreferences(), preferences.getFilePreferences(), dialogService, stateManager); + this.previewPanel = new PreviewPanel( + dialogService, + preferences.getKeyBindingRepository(), + preferences, + themeManager, + taskExecutor, + stateManager, + libraryTab.searchQueryProperty()); + this.previewPanel.setDatabase(databaseContext); setupKeyBindings(); this.allPossibleTabs = createTabs(); - this.previewTabs = this.allPossibleTabs.stream().filter(OffersPreview.class::isInstance).map(OffersPreview.class::cast).toList(); - setupDragAndDrop(libraryTab); + setupDragAndDrop(); EasyBind.subscribe(tabbed.getSelectionModel().selectedItemProperty(), tab -> { EntryEditorTab activeTab = (EntryEditorTab) tab; @@ -155,11 +164,18 @@ public EntryEditor(LibraryTab libraryTab, UndoAction undoAction, RedoAction redo (obs, oldValue, newValue) -> { if (currentlyEditedEntry != null) { adaptVisibleTabs(); + Tab tab = tabbed.getSelectionModel().selectedItemProperty().get(); + if (newValue && tab instanceof FieldsEditorTab fieldsEditorTab) { + fieldsEditorTab.removePreviewPanelFromThisTab(); + } + if (tab instanceof TabWithPreviewPanel previewTab) { + previewTab.handleFocus(); + } } }); } - private void setupDragAndDrop(LibraryTab libraryTab) { + private void setupDragAndDrop() { this.setOnDragOver(event -> { if (event.getDragboard().hasFiles()) { event.acceptTransferModes(TransferMode.COPY, TransferMode.MOVE, TransferMode.LINK); @@ -267,21 +283,21 @@ private void navigateToNextEntry() { private List createTabs() { List tabs = new LinkedList<>(); - tabs.add(new PreviewTab(databaseContext, dialogService, preferences, themeManager, taskExecutor, libraryTab.searchQueryProperty())); + tabs.add(new PreviewTab(databaseContext, preferences, previewPanel)); // Required, optional (important+detail), deprecated, and "other" fields - tabs.add(new RequiredFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, dialogService, preferences, themeManager, bibEntryTypesManager, taskExecutor, journalAbbreviationRepository, libraryTab.searchQueryProperty())); - tabs.add(new ImportantOptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, dialogService, preferences, themeManager, bibEntryTypesManager, taskExecutor, journalAbbreviationRepository, libraryTab.searchQueryProperty())); - tabs.add(new DetailOptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, dialogService, preferences, themeManager, bibEntryTypesManager, taskExecutor, journalAbbreviationRepository, libraryTab.searchQueryProperty())); - tabs.add(new DeprecatedFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, dialogService, preferences, themeManager, bibEntryTypesManager, taskExecutor, journalAbbreviationRepository, libraryTab.searchQueryProperty())); - tabs.add(new OtherFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, dialogService, preferences, themeManager, bibEntryTypesManager, taskExecutor, journalAbbreviationRepository, libraryTab.searchQueryProperty())); + tabs.add(new RequiredFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, preferences, bibEntryTypesManager, journalAbbreviationRepository, previewPanel)); + tabs.add(new ImportantOptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, preferences, bibEntryTypesManager, journalAbbreviationRepository, previewPanel)); + tabs.add(new DetailOptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, preferences, bibEntryTypesManager, journalAbbreviationRepository, previewPanel)); + tabs.add(new DeprecatedFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, preferences, bibEntryTypesManager, journalAbbreviationRepository, previewPanel)); + tabs.add(new OtherFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, preferences, bibEntryTypesManager, journalAbbreviationRepository, previewPanel)); // Comment Tab: Tab for general and user-specific comments - tabs.add(new CommentsTab(preferences, databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, dialogService, themeManager, taskExecutor, journalAbbreviationRepository, libraryTab.searchQueryProperty())); + tabs.add(new CommentsTab(preferences, databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, journalAbbreviationRepository, previewPanel)); Map> entryEditorTabList = getAdditionalUserConfiguredTabs(); for (Map.Entry> tab : entryEditorTabList.entrySet()) { - tabs.add(new UserDefinedFieldsTab(tab.getKey(), tab.getValue(), databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, dialogService, preferences, themeManager, taskExecutor, journalAbbreviationRepository, libraryTab.searchQueryProperty())); + tabs.add(new UserDefinedFieldsTab(tab.getKey(), tab.getValue(), databaseContext, libraryTab.getSuggestionProviders(), undoManager, undoAction, redoAction, preferences, journalAbbreviationRepository, previewPanel)); } tabs.add(new MathSciNetTab()); @@ -374,8 +390,12 @@ public BibEntry getCurrentlyEditedEntry() { return currentlyEditedEntry; } - public void setCurrentlyEditedEntry(BibEntry currentlyEditedEntry) { - this.currentlyEditedEntry = Objects.requireNonNull(currentlyEditedEntry); + public void setCurrentlyEditedEntry(@NonNull BibEntry currentlyEditedEntry) { + if (Objects.equals(this.currentlyEditedEntry, currentlyEditedEntry)) { + return; + } + + this.currentlyEditedEntry = currentlyEditedEntry; // Subscribe to type changes for rebuilding the currently visible tab if (typeSubscription != null) { @@ -385,16 +405,13 @@ public void setCurrentlyEditedEntry(BibEntry currentlyEditedEntry) { typeSubscription = EasyBind.subscribe(this.currentlyEditedEntry.typeProperty(), type -> { typeLabel.setText(new TypedBibEntry(currentlyEditedEntry, databaseContext.getMode()).getTypeForDisplay()); adaptVisibleTabs(); + setupToolBar(); getSelectedTab().notifyAboutFocus(currentlyEditedEntry); }); - adaptVisibleTabs(); - setupToolBar(); - if (entryEditorPreferences.showSourceTabByDefault()) { tabbed.getSelectionModel().select(sourceTab); } - getSelectedTab().notifyAboutFocus(currentlyEditedEntry); } private EntryEditorTab getSelectedTab() { @@ -457,10 +474,10 @@ public void setFocusToField(Field field) { } public void nextPreviewStyle() { - this.previewTabs.forEach(OffersPreview::nextPreviewStyle); + this.previewPanel.nextPreviewStyle(); } public void previousPreviewStyle() { - this.previewTabs.forEach(OffersPreview::previousPreviewStyle); + this.previewPanel.previousPreviewStyle(); } } diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditorTab.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditorTab.java index 1ac5ec4149b..61a89bd055b 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditorTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditorTab.java @@ -5,8 +5,13 @@ import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.types.EntryType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public abstract class EntryEditorTab extends Tab { + private static final Logger LOGGER = LoggerFactory.getLogger(EntryEditorTab.class); + protected BibEntry currentEntry; /** @@ -37,6 +42,10 @@ protected void handleFocus() { */ public void notifyAboutFocus(BibEntry entry) { if (!entry.equals(currentEntry) || !entry.getType().equals(currentEntryType)) { + // TODO: Shouldn't "bindToEntry" called when changing the entry? + LOGGER.trace("Tab got focus with different entry (or entry type) {}", entry); + LOGGER.trace("Different entry: {}", entry.equals(currentEntry)); + LOGGER.trace("Different entry type: {}", !entry.getType().equals(currentEntryType)); currentEntry = entry; currentEntryType = entry.getType(); bindToEntry(entry); diff --git a/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java b/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java index 4814dbb2776..eec4567e718 100644 --- a/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java @@ -24,47 +24,43 @@ import javafx.scene.layout.Region; import javafx.scene.layout.RowConstraints; -import org.jabref.gui.DialogService; import org.jabref.gui.autocompleter.SuggestionProviders; import org.jabref.gui.fieldeditors.FieldEditorFX; import org.jabref.gui.fieldeditors.FieldEditors; import org.jabref.gui.fieldeditors.FieldNameLabel; import org.jabref.gui.preferences.GuiPreferences; import org.jabref.gui.preview.PreviewPanel; -import org.jabref.gui.theme.ThemeManager; import org.jabref.gui.undo.RedoAction; import org.jabref.gui.undo.UndoAction; -import org.jabref.gui.util.OptionalObjectProperty; import org.jabref.logic.journals.JournalAbbreviationRepository; -import org.jabref.logic.util.TaskExecutor; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; -import org.jabref.model.search.query.SearchQuery; import com.tobiasdiez.easybind.EasyBind; import com.tobiasdiez.easybind.Subscription; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * A single tab displayed in the EntryEditor holding several FieldEditors. */ -abstract class FieldsEditorTab extends EntryEditorTab implements OffersPreview { - protected final BibDatabaseContext databaseContext; +abstract class FieldsEditorTab extends TabWithPreviewPanel { + + private static final Logger LOGGER = LoggerFactory.getLogger(FieldsEditorTab.class); + protected final Map editors = new LinkedHashMap<>(); protected GridPane gridPane; private final boolean isCompressed; private final SuggestionProviders suggestionProviders; private final UndoAction undoAction; private final RedoAction redoAction; - private final DialogService dialogService; private final GuiPreferences preferences; - private final ThemeManager themeManager; - private final TaskExecutor taskExecutor; private final JournalAbbreviationRepository journalAbbreviationRepository; - private PreviewPanel previewPanel; private final UndoManager undoManager; - private final OptionalObjectProperty searchQueryProperty; + private Collection fields = new ArrayList<>(); + @SuppressWarnings("FieldCanBeLocal") private Subscription dividerPositionSubscription; @@ -74,24 +70,17 @@ public FieldsEditorTab(boolean compressed, UndoManager undoManager, UndoAction undoAction, RedoAction redoAction, - DialogService dialogService, GuiPreferences preferences, - ThemeManager themeManager, - TaskExecutor taskExecutor, JournalAbbreviationRepository journalAbbreviationRepository, - OptionalObjectProperty searchQueryProperty) { + PreviewPanel previewPanel) { + super(databaseContext, previewPanel); this.isCompressed = compressed; - this.databaseContext = Objects.requireNonNull(databaseContext); this.suggestionProviders = Objects.requireNonNull(suggestionProviders); this.undoManager = Objects.requireNonNull(undoManager); this.undoAction = undoAction; this.redoAction = redoAction; - this.dialogService = Objects.requireNonNull(dialogService); this.preferences = Objects.requireNonNull(preferences); - this.themeManager = themeManager; - this.taskExecutor = Objects.requireNonNull(taskExecutor); this.journalAbbreviationRepository = Objects.requireNonNull(journalAbbreviationRepository); - this.searchQueryProperty = searchQueryProperty; } private static void addColumn(GridPane gridPane, int columnIndex, List