From 508d1db5139a7f189d6eac835df62930bbdfdd51 Mon Sep 17 00:00:00 2001 From: Bane Stojkovic Date: Tue, 17 Feb 2026 20:44:50 +0100 Subject: [PATCH] Added 'Auto-Unit Conversion' configuration which automatically converts between metric and imperial units based on the ruler unit preference --- .../java/org/diylc/common/IPlugInPort.java | 2 + .../org/diylc/common/PropertyWrapper.java | 27 +- .../java/org/diylc/core/measures/Size.java | 16 +- .../org/diylc/core/measures/SizeUnit.java | 21 +- .../org/diylc/core/measures/SizeUnitType.java | 5 + .../diylc-core/src/main/resources/update.xml | 56 ++-- .../src/main/resources/update_archive.xml | 40 +++ .../org/diylc/core/measures/SizeTest.java | 242 ++++++++++++++++++ .../swing/plugins/config/ConfigPlugin.java | 3 + .../src/main/resources/lang/Deutsch.txt | 1 + .../src/main/resources/lang/English.txt | 1 + .../src/main/resources/lang/Español.txt | 1 + .../src/main/resources/lang/Français.txt | 1 + .../src/main/resources/lang/Italiano.txt | 1 + .../src/main/resources/lang/Nederlands.txt | 1 + .../src/main/resources/lang/Português.txt | 1 + .../src/main/resources/lang/Srpski.txt | 1 + .../src/main/resources/lang/हिंदी.txt | 1 + .../src/main/resources/lang/简体中文.txt | 1 + 19 files changed, 376 insertions(+), 46 deletions(-) create mode 100644 diylc/diylc-core/src/main/java/org/diylc/core/measures/SizeUnitType.java create mode 100644 diylc/diylc-core/src/test/java/org/diylc/core/measures/SizeTest.java diff --git a/diylc/diylc-core/src/main/java/org/diylc/common/IPlugInPort.java b/diylc/diylc-core/src/main/java/org/diylc/common/IPlugInPort.java index cdb94cf8..c6099ada 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/common/IPlugInPort.java +++ b/diylc/diylc-core/src/main/java/org/diylc/common/IPlugInPort.java @@ -88,6 +88,8 @@ public interface IPlugInPort extends ISelectionProcessor, IMouseProcessor, IKeyP public static final String CACHING_ENABLED_KEY = "cachingEnabled"; public static final String FONT_SCALE_FACTOR_KEY = "fontScaleFactor"; public static final String SHOW_RESIZE_DIMENSIONS_TOOLTIP_KEY = "showResizeDimensionsTooltip"; + public static final String AUTO_UNIT_CONVERSION_KEY = "autoUnitConversion"; + public static final String RULER_IN_SUBDIVISION_2 = "base of 2"; public static final String RULER_IN_SUBDIVISION_10 = "base of 10"; diff --git a/diylc/diylc-core/src/main/java/org/diylc/common/PropertyWrapper.java b/diylc/diylc-core/src/main/java/org/diylc/common/PropertyWrapper.java index 084e784e..dea6060d 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/common/PropertyWrapper.java +++ b/diylc/diylc-core/src/main/java/org/diylc/common/PropertyWrapper.java @@ -24,8 +24,11 @@ package org.diylc.common; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.diylc.appframework.miscutils.ConfigurationManager; import org.diylc.core.IDynamicPropertySource; import org.diylc.core.IPropertyValidator; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; /** * Entity class for editable properties extracted from component objects. Represents a single @@ -65,7 +68,29 @@ public class PropertyWrapper implements Cloneable { public void readFrom(Object object) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException { this.ownerObject = object; - this.value = getGetter().invoke(object); + Object value = getGetter().invoke(object); + value = convertUnitsIfNeeded(value); + this.value = value; + } + + private static Object convertUnitsIfNeeded(Object value) { + if (ConfigurationManager.getInstance().readBoolean(IPlugInPort.AUTO_UNIT_CONVERSION_KEY, true) + && value instanceof Size sizeValue) { + SizeUnit preferredUnit; + if (ConfigurationManager.getInstance().readBoolean(IPlugInPort.METRIC_KEY, true)) { + preferredUnit = SizeUnit.mm; + } + else { + preferredUnit = SizeUnit.in; + } + if (preferredUnit.getType() != sizeValue.getUnit().getType()) { + SizeUnit targetUnit = SizeUnit.ConversionMapping.get(sizeValue.getUnit()); + if (targetUnit != null) { + value = sizeValue.convertToUnits(targetUnit); + } + } + } + return value; } // public void readUniqueFrom(IDIYComponent component) diff --git a/diylc/diylc-core/src/main/java/org/diylc/core/measures/Size.java b/diylc/diylc-core/src/main/java/org/diylc/core/measures/Size.java index 315de999..50bdaeec 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/core/measures/Size.java +++ b/diylc/diylc-core/src/main/java/org/diylc/core/measures/Size.java @@ -46,11 +46,21 @@ public class Size extends AbstractMeasure implements Comparable return getValue() * getUnit().getFactor() / SizeUnit.in.getFactor() * Constants.PIXELS_PER_INCH; } - public double convertToUnits(SizeUnit unit) { + /** + * Converts this size to the given unit. Returns a new Size with the same + * physical length expressed in the target unit. + */ + public Size convertToUnits(SizeUnit unit) { if (unit == getUnit()) { - return this.getValue(); + return new Size(roundTo4Decimals(getValue()), unit); } - return convertToPixels() * SizeUnit.px.getFactor(); + double lengthInBase = getValue() * getUnit().getFactor(); + double valueInTargetUnit = lengthInBase / unit.getFactor(); + return new Size(roundTo4Decimals(valueInTargetUnit), unit); + } + + private static double roundTo4Decimals(double value) { + return Math.round(value * 10000) / 10000.0; } @Override diff --git a/diylc/diylc-core/src/main/java/org/diylc/core/measures/SizeUnit.java b/diylc/diylc-core/src/main/java/org/diylc/core/measures/SizeUnit.java index ebf23d78..8d6831eb 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/core/measures/SizeUnit.java +++ b/diylc/diylc-core/src/main/java/org/diylc/core/measures/SizeUnit.java @@ -23,18 +23,35 @@ package org.diylc.core.measures; import org.diylc.utils.Constants; +import java.util.Map; + public enum SizeUnit implements Unit { - px(25.4d / Constants.PIXELS_PER_INCH), mm(1d), cm(10d), m(1e3d), in(25.4d), ft(25.4d * 12), yd(9144d); + px(25.4d / Constants.PIXELS_PER_INCH, SizeUnitType.Digital), + mm(1d, SizeUnitType.Metric), + cm(10d, SizeUnitType.Metric), + m(1e3d, SizeUnitType.Metric), + in(25.4d, SizeUnitType.Imperial), + ft(25.4d * 12, SizeUnitType.Imperial), + yd(9144d, SizeUnitType.Imperial); double factor; + SizeUnitType type; - private SizeUnit(double factor) { + private SizeUnit(double factor, SizeUnitType type) { this.factor = factor; + this.type = type; } @Override public double getFactor() { return factor; } + + public SizeUnitType getType() { + return type; + } + + public static final Map ConversionMapping = + Map.of(mm, in, cm, in, m, yd, in, mm, ft, cm, yd, m); } diff --git a/diylc/diylc-core/src/main/java/org/diylc/core/measures/SizeUnitType.java b/diylc/diylc-core/src/main/java/org/diylc/core/measures/SizeUnitType.java new file mode 100644 index 00000000..bf2f066a --- /dev/null +++ b/diylc/diylc-core/src/main/java/org/diylc/core/measures/SizeUnitType.java @@ -0,0 +1,5 @@ +package org.diylc.core.measures; + +public enum SizeUnitType { + Metric, Imperial, Digital +} diff --git a/diylc/diylc-core/src/main/resources/update.xml b/diylc/diylc-core/src/main/resources/update.xml index 4203ffb5..9cd0157e 100644 --- a/diylc/diylc-core/src/main/resources/update.xml +++ b/diylc/diylc-core/src/main/resources/update.xml @@ -1,45 +1,5 @@ - - - 5 - 4 - 0 - - 2025-05-13 00:00:00.000 CET - - - - NEW_FEATURE - 'AI Analyzer' feature added which uses AI to scan the circuit diagram and report issues and suggestions - - - IMPROVEMENT - Significantly improve rendering performance of most components - - - IMPROVEMENT - 'Open Jack 1/4"' and 'Potentiometer Panel' now tolerate connections anywhere on the lugs instead of dead center only - - - IMPROVEMENT - Increased maximum number of switching combinations to 256 for circuit analysis - - - BUG_FIX - 'Pilot Lamp Holder' component can sometimes hang the application - - - BUG_FIX - Fixed the issue with embedding image files into DIY projects - - - BUG_FIX - Fixed the issue with some components (e.g. DIP IC) jumping when showing underside of a board - - - https://github.com/bancika/diy-layout-creator/releases - 5 @@ -388,5 +348,21 @@ https://github.com/bancika/diy-layout-creator/releases + + + 5 + 12 + 0 + + 2026-02-15 00:00:00.000 CET + + + + NEW_FEATURE + Added 'Auto-Unit Conversion' configuration which automatically converts between metric and imperial units based on the ruler unit preference + + + https://github.com/bancika/diy-layout-creator/releases + diff --git a/diylc/diylc-core/src/main/resources/update_archive.xml b/diylc/diylc-core/src/main/resources/update_archive.xml index c23f0f0c..25637dd9 100644 --- a/diylc/diylc-core/src/main/resources/update_archive.xml +++ b/diylc/diylc-core/src/main/resources/update_archive.xml @@ -5017,5 +5017,45 @@ https://github.com/bancika/diy-layout-creator/releases + + + 5 + 4 + 0 + + 2025-05-13 00:00:00.000 CET + + + + NEW_FEATURE + 'AI Analyzer' feature added which uses AI to scan the circuit diagram and report issues and suggestions + + + IMPROVEMENT + Significantly improve rendering performance of most components + + + IMPROVEMENT + 'Open Jack 1/4"' and 'Potentiometer Panel' now tolerate connections anywhere on the lugs instead of dead center only + + + IMPROVEMENT + Increased maximum number of switching combinations to 256 for circuit analysis + + + BUG_FIX + 'Pilot Lamp Holder' component can sometimes hang the application + + + BUG_FIX + Fixed the issue with embedding image files into DIY projects + + + BUG_FIX + Fixed the issue with some components (e.g. DIP IC) jumping when showing underside of a board + + + https://github.com/bancika/diy-layout-creator/releases + diff --git a/diylc/diylc-core/src/test/java/org/diylc/core/measures/SizeTest.java b/diylc/diylc-core/src/test/java/org/diylc/core/measures/SizeTest.java new file mode 100644 index 00000000..2b1e9ff4 --- /dev/null +++ b/diylc/diylc-core/src/test/java/org/diylc/core/measures/SizeTest.java @@ -0,0 +1,242 @@ +/* + + DIY Layout Creator (DIYLC). + Copyright (c) 2009-2025 held jointly by the individual authors. + + This file is part of DIYLC. + + DIYLC is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + DIYLC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DIYLC. If not, see . + +*/ +package org.diylc.core.measures; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class SizeTest { + + private static final double DELTA = 1e-9; + + // --- convertToUnits: same unit --- + + @Test + public void convertToUnits_sameUnit_returnsNewSizeWithValueRoundedTo4Decimals() { + Size size = new Size(1.23456789, SizeUnit.mm); + Size result = size.convertToUnits(SizeUnit.mm); + assertNotSame(size, result); + assertEquals(SizeUnit.mm, result.getUnit()); + assertEquals(1.2346, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_sameUnit_roundsTo4Decimals() { + assertEquals(2.3457, new Size(2.3456789, SizeUnit.cm).convertToUnits(SizeUnit.cm).getValue(), DELTA); + assertEquals(0.5, new Size(0.5, SizeUnit.in).convertToUnits(SizeUnit.in).getValue(), DELTA); + } + + // --- convertToUnits: metric ↔ metric --- + + @Test + public void convertToUnits_mmToCm() { + Size size = new Size(10.0, SizeUnit.mm); + Size result = size.convertToUnits(SizeUnit.cm); + assertEquals(SizeUnit.cm, result.getUnit()); + assertEquals(1.0, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_cmToMm() { + Size size = new Size(2.5, SizeUnit.cm); + Size result = size.convertToUnits(SizeUnit.mm); + assertEquals(SizeUnit.mm, result.getUnit()); + assertEquals(25.0, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_mmToM() { + Size size = new Size(1500.0, SizeUnit.mm); + Size result = size.convertToUnits(SizeUnit.m); + assertEquals(SizeUnit.m, result.getUnit()); + assertEquals(1.5, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_mToMm() { + Size size = new Size(0.5, SizeUnit.m); + Size result = size.convertToUnits(SizeUnit.mm); + assertEquals(SizeUnit.mm, result.getUnit()); + assertEquals(500.0, result.getValue(), DELTA); + } + + // --- convertToUnits: imperial ↔ imperial --- + + @Test + public void convertToUnits_inToFt() { + Size size = new Size(24.0, SizeUnit.in); + Size result = size.convertToUnits(SizeUnit.ft); + assertEquals(SizeUnit.ft, result.getUnit()); + assertEquals(2.0, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_ftToIn() { + Size size = new Size(1.0, SizeUnit.ft); + Size result = size.convertToUnits(SizeUnit.in); + assertEquals(SizeUnit.in, result.getUnit()); + assertEquals(12.0, result.getValue(), DELTA); + } + + // --- convertToUnits: metric ↔ imperial --- + + @Test + public void convertToUnits_mmToIn() { + Size size = new Size(25.4, SizeUnit.mm); + Size result = size.convertToUnits(SizeUnit.in); + assertEquals(SizeUnit.in, result.getUnit()); + assertEquals(1.0, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_inToMm() { + Size size = new Size(1.0, SizeUnit.in); + Size result = size.convertToUnits(SizeUnit.mm); + assertEquals(SizeUnit.mm, result.getUnit()); + assertEquals(25.4, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_cmToIn() { + Size size = new Size(2.54, SizeUnit.cm); + Size result = size.convertToUnits(SizeUnit.in); + assertEquals(SizeUnit.in, result.getUnit()); + assertEquals(1.0, result.getValue(), DELTA); + } + + // --- convertToUnits: rounding to 4 decimal places --- + + @Test + public void convertToUnits_resultIsRoundedTo4Decimals() { + Size size = new Size(1.0, SizeUnit.mm); + Size result = size.convertToUnits(SizeUnit.in); + // 1 mm = 1/25.4 in ≈ 0.03937007874015748... + assertEquals(0.0394, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_roundingDown() { + Size size = new Size(1.23441, SizeUnit.mm); + Size result = size.convertToUnits(SizeUnit.mm); + assertEquals(1.2344, result.getValue(), DELTA); + } + + @Test + public void convertToUnits_roundingUp() { + Size size = new Size(1.23446, SizeUnit.mm); + Size result = size.convertToUnits(SizeUnit.mm); + assertEquals(1.2345, result.getValue(), DELTA); + } + + // --- parseSize --- + + @Test + public void parseSize_mm() { + Size size = Size.parseSize("10.5mm"); + assertEquals(10.5, size.getValue(), DELTA); + assertEquals(SizeUnit.mm, size.getUnit()); + } + + @Test + public void parseSize_cm() { + Size size = Size.parseSize("2.54cm"); + assertEquals(2.54, size.getValue(), DELTA); + assertEquals(SizeUnit.cm, size.getUnit()); + } + + @Test + public void parseSize_in() { + Size size = Size.parseSize("1in"); + assertEquals(1.0, size.getValue(), DELTA); + assertEquals(SizeUnit.in, size.getUnit()); + } + + @Test + public void parseSize_caseInsensitive() { + Size size = Size.parseSize("5 MM"); + assertEquals(5.0, size.getValue(), DELTA); + assertEquals(SizeUnit.mm, size.getUnit()); + } + + @Test(expected = IllegalArgumentException.class) + public void parseSize_unknownUnit_throws() { + Size.parseSize("10 xyz"); + } + + // --- fromPixels --- + + @Test + public void fromPixels_roundTripWithConvertToPixels() { + Size original = new Size(1.0, SizeUnit.in); + double pixels = original.convertToPixels(); + Size fromPixels = Size.fromPixels(pixels, SizeUnit.in); + assertEquals(original.getValue(), fromPixels.getValue(), 0.01); + assertEquals(original.getUnit(), fromPixels.getUnit()); + } + + // --- scale --- + + @Test + public void scale() { + Size size = new Size(10.0, SizeUnit.mm); + Size scaled = size.scale(2.0); + assertEquals(20.0, scaled.getValue(), DELTA); + assertEquals(SizeUnit.mm, scaled.getUnit()); + } + + // --- compareTo --- + + @Test + public void compareTo_samePhysicalSize_returnsZero() { + Size a = new Size(25.4, SizeUnit.mm); + Size b = new Size(1.0, SizeUnit.in); + assertEquals(0, a.compareTo(b)); + } + + @Test + public void compareTo_smaller_returnsNegative() { + Size a = new Size(1.0, SizeUnit.mm); + Size b = new Size(1.0, SizeUnit.cm); + assertTrue(a.compareTo(b) < 0); + } + + @Test + public void compareTo_larger_returnsPositive() { + Size a = new Size(10.0, SizeUnit.mm); + Size b = new Size(1.0, SizeUnit.mm); + assertTrue(a.compareTo(b) > 0); + } + + // --- clone --- + + @Test + public void clone_returnsEqualSize() throws CloneNotSupportedException { + Size size = new Size(3.14, SizeUnit.cm); + Size cloned = size.clone(); + assertNotSame(size, cloned); + assertEquals(size.getValue(), cloned.getValue(), DELTA); + assertEquals(size.getUnit(), cloned.getUnit()); + } +} diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/config/ConfigPlugin.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/config/ConfigPlugin.java index 9bd3222c..c9cc43e0 100644 --- a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/config/ConfigPlugin.java +++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/config/ConfigPlugin.java @@ -84,6 +84,9 @@ public class ConfigPlugin implements IPlugIn { swingUI.injectMenuAction( ActionFactory.getInstance().createConfigAction(plugInPort, "Auto-Create Pads", SolderPadAutoCreator.AUTO_PADS_KEY, false), CONFIG_MENU); + swingUI.injectMenuAction( + ActionFactory.getInstance().createConfigAction(plugInPort, "Auto-Convert Units", + IPlugInPort.AUTO_UNIT_CONVERSION_KEY, true), CONFIG_MENU); swingUI.injectMenuAction( ActionFactory.getInstance().createConfigAction(plugInPort, "Auto-Edit Mode", IPlugInPort.AUTO_EDIT_KEY, true), CONFIG_MENU); diff --git a/diylc/diylc-swing/src/main/resources/lang/Deutsch.txt b/diylc/diylc-swing/src/main/resources/lang/Deutsch.txt index adc6cde0..8a6bffb3 100644 --- a/diylc/diylc-swing/src/main/resources/lang/Deutsch.txt +++ b/diylc/diylc-swing/src/main/resources/lang/Deutsch.txt @@ -24,6 +24,7 @@ Anti-Aliasing|Anti-Aliasing Arrow Size|Pfeilgröße Author|Verfasser Auto-Create Pads|Automatische Erstellung von Lötpads +Auto-Convert Units|Automatische Umrechnung der Einheiten Auto-Edit Mode|Automatischer Bearbeitungsmodus Base|Basis Below|Unter diff --git a/diylc/diylc-swing/src/main/resources/lang/English.txt b/diylc/diylc-swing/src/main/resources/lang/English.txt index c14a7b12..df5e73a0 100644 --- a/diylc/diylc-swing/src/main/resources/lang/English.txt +++ b/diylc/diylc-swing/src/main/resources/lang/English.txt @@ -22,6 +22,7 @@ Anti-Aliasing Arrow Size Author Auto-Create Pads +Auto-Convert Units Auto-Edit Mode Base Below diff --git a/diylc/diylc-swing/src/main/resources/lang/Español.txt b/diylc/diylc-swing/src/main/resources/lang/Español.txt index dcda6acc..fd51a08d 100644 --- a/diylc/diylc-swing/src/main/resources/lang/Español.txt +++ b/diylc/diylc-swing/src/main/resources/lang/Español.txt @@ -22,6 +22,7 @@ Anti-Aliasing|Suavizado Arrow Size|Tamaño de Flecha Author|Autor Auto-Create Pads|Creación Automática de Pads +Auto-Convert Units|Conversión automática de unidades Auto-Edit Mode|Modo de Edición Automática Base|Base Below|Debajo diff --git a/diylc/diylc-swing/src/main/resources/lang/Français.txt b/diylc/diylc-swing/src/main/resources/lang/Français.txt index 47e68b6d..406eda51 100644 --- a/diylc/diylc-swing/src/main/resources/lang/Français.txt +++ b/diylc/diylc-swing/src/main/resources/lang/Français.txt @@ -22,6 +22,7 @@ Anti-Aliasing|Anti-aliasing Arrow Size|Taille de la flèche Author|Auteur Auto-Create Pads|Création automatique des pads +Auto-Convert Units|Conversion automatique des unités Auto-Edit Mode|Mode d'édition automatique Base|Base Below|Ci-dessous diff --git a/diylc/diylc-swing/src/main/resources/lang/Italiano.txt b/diylc/diylc-swing/src/main/resources/lang/Italiano.txt index 7134450e..99b3ed45 100644 --- a/diylc/diylc-swing/src/main/resources/lang/Italiano.txt +++ b/diylc/diylc-swing/src/main/resources/lang/Italiano.txt @@ -24,6 +24,7 @@ Apply Variant|Applica variante Arrow Size|Dimensione Freccia Author|Autore Auto-Create Pads|Creazione Automatica dei Pad +Auto-Convert Units|Conversione automatica delle unità Auto-Edit Mode|Modalità di Editaggio Automatica Base|Base Below|Sotto diff --git a/diylc/diylc-swing/src/main/resources/lang/Nederlands.txt b/diylc/diylc-swing/src/main/resources/lang/Nederlands.txt index 35bd6fb6..0613a2ea 100644 --- a/diylc/diylc-swing/src/main/resources/lang/Nederlands.txt +++ b/diylc/diylc-swing/src/main/resources/lang/Nederlands.txt @@ -24,6 +24,7 @@ Anti-Aliasing|Anti-aliasing Arrow Size|Pijlgrootte Author|Ontwerper Auto-Create Pads|Automatisch aanmaken van soldeereilandjes +Auto-Convert Units|Automatische eenheidsconversie Auto-Edit Mode|Automatisch bewerken modus Base|Basis Below|Onder diff --git a/diylc/diylc-swing/src/main/resources/lang/Português.txt b/diylc/diylc-swing/src/main/resources/lang/Português.txt index fc4140af..a0a280c8 100644 --- a/diylc/diylc-swing/src/main/resources/lang/Português.txt +++ b/diylc/diylc-swing/src/main/resources/lang/Português.txt @@ -22,6 +22,7 @@ Anti-Aliasing|Suavizado Arrow Size|Tamanho da Flecha Author|Autor Auto-Create Pads|Criação Automática de Pads +Auto-Convert Units|Conversão automática de unidades Auto-Edit Mode|Modo de Edição Automática Base|Base Below|Abaixo diff --git a/diylc/diylc-swing/src/main/resources/lang/Srpski.txt b/diylc/diylc-swing/src/main/resources/lang/Srpski.txt index 7cb6b545..b2f926dc 100644 --- a/diylc/diylc-swing/src/main/resources/lang/Srpski.txt +++ b/diylc/diylc-swing/src/main/resources/lang/Srpski.txt @@ -22,6 +22,7 @@ Anti-Aliasing Arrow Size|Veličina Strelice Author|Autor Auto-Create Pads|Auto-Kreiranje Pad +Auto-Convert Units|Automatska konverzija jedinica Auto-Edit Mode|Automatsko Editovanje Base|Osnova Below|Ispod diff --git a/diylc/diylc-swing/src/main/resources/lang/हिंदी.txt b/diylc/diylc-swing/src/main/resources/lang/हिंदी.txt index 29fdc2bb..68136c6e 100644 --- a/diylc/diylc-swing/src/main/resources/lang/हिंदी.txt +++ b/diylc/diylc-swing/src/main/resources/lang/हिंदी.txt @@ -22,6 +22,7 @@ Anti-Aliasing|एंटी-अलियासिंग Arrow Size|तीर का आकार Author|लेखक Auto-Create Pads|ऑटो-क्रिएट पैड +Auto-Convert Units|स्वचालित इकाई रूपांतरण Auto-Edit Mode|ऑटो-एडिट मोड Base|आधार Below|नीचे diff --git a/diylc/diylc-swing/src/main/resources/lang/简体中文.txt b/diylc/diylc-swing/src/main/resources/lang/简体中文.txt index 228e616d..ee0e695c 100644 --- a/diylc/diylc-swing/src/main/resources/lang/简体中文.txt +++ b/diylc/diylc-swing/src/main/resources/lang/简体中文.txt @@ -22,6 +22,7 @@ Anti-Aliasing|抗锯齿 Arrow Size|箭头大小 Author|作者 Auto-Create Pads|自动创建焊盘 +Auto-Convert Units|自动转换单位 Auto-Edit Mode|自动编辑模式 Base|基座 Below|下方