diff --git a/Compiled/Logisim-ITA.exe b/Compiled/Logisim-ITA.exe
old mode 100644
new mode 100755
index 136ff4e9..1cfac781
Binary files a/Compiled/Logisim-ITA.exe and b/Compiled/Logisim-ITA.exe differ
diff --git a/Compiled/Logisim-ITA.jar b/Compiled/Logisim-ITA.jar
index fd937364..ef65bdf9 100644
Binary files a/Compiled/Logisim-ITA.jar and b/Compiled/Logisim-ITA.jar differ
diff --git a/Logisim-Fork/.classpath b/Logisim-Fork/.classpath
deleted file mode 100644
index c95a786a..00000000
--- a/Logisim-Fork/.classpath
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Logisim-Fork/.gitignore b/Logisim-Fork/.gitignore
index 03bcabef..33aaa16d 100644
--- a/Logisim-Fork/.gitignore
+++ b/Logisim-Fork/.gitignore
@@ -1,4 +1,8 @@
/module-info.class
/KAppemblerListener.class
/bin/
-target/
\ No newline at end of file
+target/
+/.settings/
+/.classpath
+/.vscode/
+/.idea/
diff --git a/Logisim-Fork/.settings/org.eclipse.jdt.core.prefs b/Logisim-Fork/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 445e8ebd..00000000
--- a/Logisim-Fork/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,106 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Logisim-Fork/.settings/org.eclipse.m2e.core.prefs b/Logisim-Fork/.settings/org.eclipse.m2e.core.prefs
deleted file mode 100644
index f897a7f1..00000000
--- a/Logisim-Fork/.settings/org.eclipse.m2e.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-activeProfiles=
-eclipse.preferences.version=1
-resolveWorkspaceProjects=true
-version=1
diff --git a/Logisim-Fork/pom.xml b/Logisim-Fork/pom.xml
index cb58dfdb..709e344f 100644
--- a/Logisim-Fork/pom.xml
+++ b/Logisim-Fork/pom.xml
@@ -13,6 +13,7 @@
8
8
+ UTF-8
@@ -63,6 +64,34 @@
+
+
+ com.akathist.maven.plugins.launch4j
+ launch4j-maven-plugin
+ 2.0.1
+
+
+ generate-exe
+ package
+
+ launch4j
+
+
+
+
+ ${project.build.directory}/${project.artifactId}-ITA.exe
+ ${project.build.directory}/${project.build.finalName}-jar-with-dependencies.jar
+ false
+ gui
+ src/main/java/resources/logisim/img/logisim-icon.ico
+
+ 1.8.0
+
+
+ com.cburch.logisim.Main
+
+
+
diff --git a/Logisim-Fork/src/main/java/com/cburch/logisim/Main.java b/Logisim-Fork/src/main/java/com/cburch/logisim/Main.java
index f25c0485..fea4d6e2 100644
--- a/Logisim-Fork/src/main/java/com/cburch/logisim/Main.java
+++ b/Logisim-Fork/src/main/java/com/cburch/logisim/Main.java
@@ -33,7 +33,7 @@
public class Main {
// current version
- public static final LogisimVersion VERSION = LogisimVersion.get(2, 16, 1, 4, LogisimVersion.getVariantFromFile());
+ public static final LogisimVersion VERSION = LogisimVersion.get(2, 16, 2, 0, LogisimVersion.getVariantFromFile());
// the version of the file you're using, equals to current version if new file
public static LogisimVersion FILE_VERSION;
diff --git a/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/Analyze.java b/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/Analyze.java
index fe8b999e..4873546d 100644
--- a/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/Analyze.java
+++ b/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/Analyze.java
@@ -9,6 +9,7 @@
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
+import java.util.regex.Pattern;
import com.cburch.logisim.analyze.model.AnalyzerModel;
import com.cburch.logisim.analyze.model.Entry;
@@ -21,6 +22,7 @@
import com.cburch.logisim.instance.StdAttr;
import com.cburch.logisim.proj.Project;
import com.cburch.logisim.std.wiring.Pin;
+import com.cburch.logisim.util.StringUtil;
public class Analyze {
@@ -298,43 +300,21 @@ public int compare(Instance ac, Instance bc) {
* throw new AnalyzeException.Conflict(); } } expressionMap.put(p2, e); } } } }
*/
+ // This function check label name
private static String toValidLabel(String label) {
- if (label == null)
- return null;
- StringBuilder end = null;
- StringBuilder ret = new StringBuilder();
- boolean afterWhitespace = false;
- for (int i = 0; i < label.length(); i++) {
+ StringBuilder buildLabel = new StringBuilder(); //StringBuilder for hold string in building
+ for(int i = 0; i < label.length(); i++) {
char c = label.charAt(i);
- if (Character.isJavaIdentifierStart(c)) {
- if (afterWhitespace) {
- // capitalize words after the first one
- c = Character.toTitleCase(c);
- afterWhitespace = false;
- }
- ret.append(c);
- } else if (Character.isJavaIdentifierPart(c)) {
- // If we can't place it at the start, we'll dump it
- // onto the end.
- if (ret.length() > 0) {
- ret.append(c);
- } else {
- if (end == null)
- end = new StringBuilder();
- end.append(c);
- }
- afterWhitespace = false;
- } else if (Character.isWhitespace(c)) {
- afterWhitespace = true;
- } else {
- ; // just ignore any other characters
+ int unicode = label.codePointAt(i); // Get character unicode
+ if((unicode < 8192 || unicode > 8207) && (unicode < 8234 || unicode > 8239) && (unicode < 8298 || unicode > 8303)) { // Check that it is not a prohibited Unicode
+ buildLabel.append(c); // Add character on final string
}
}
- if (end != null && ret.length() > 0)
- ret.append(end.toString());
- if (ret.length() == 0)
+ String newLabel = buildLabel.toString().trim();
+ if(newLabel.length() > 0) // If is find a character or number
+ return newLabel; // Return a final string
+ else
return null;
- return ret.toString();
}
private Analyze() {
diff --git a/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/Splitter.java b/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/Splitter.java
index 53355717..9dd42d91 100644
--- a/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/Splitter.java
+++ b/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/Splitter.java
@@ -103,8 +103,8 @@ private synchronized void configureComponent() {
@Override
public void configureMenu(JPopupMenu menu, Project proj) {
menu.addSeparator();
- menu.add(new SplitterDistributeItem(proj, this, 1));
menu.add(new SplitterDistributeItem(proj, this, -1));
+ menu.add(new SplitterDistributeItem(proj, this, 1));
}
@Override
@@ -195,15 +195,15 @@ public String getToolTip(ComponentUserEvent e) {
appendBuf(buf, beginString, bit_end.length - 1);
String base;
switch (bits) {
- case 0:
- base = Strings.get("splitterSplit0Tip");
- break;
- case 1:
- base = Strings.get("splitterSplit1Tip");
- break;
- default:
- base = Strings.get("splitterSplitManyTip");
- break;
+ case 0:
+ base = Strings.get("splitterSplit0Tip");
+ break;
+ case 1:
+ base = Strings.get("splitterSplit1Tip");
+ break;
+ default:
+ base = Strings.get("splitterSplitManyTip");
+ break;
}
return StringUtil.format(base, buf.toString());
} else {
diff --git a/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/SplitterAttributes.java b/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/SplitterAttributes.java
index 28ee94d3..81f4f33d 100644
--- a/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/SplitterAttributes.java
+++ b/Logisim-Fork/src/main/java/com/cburch/logisim/circuit/SplitterAttributes.java
@@ -18,6 +18,8 @@
import com.cburch.logisim.instance.StdAttr;
class SplitterAttributes extends AbstractAttributeSet {
+
+ public static int order=0;
static class BitOutAttribute extends Attribute {
int which;
BitOutOption[] options;
@@ -103,6 +105,7 @@ public String toString() {
}
}
+ //the list of selection for the splitter attributes
public static final AttributeOption APPEAR_LEGACY = new AttributeOption("legacy",
Strings.getter("splitterAppearanceLegacy"));
public static final AttributeOption APPEAR_LEFT = new AttributeOption("left",
@@ -117,6 +120,18 @@ public String toString() {
Strings.getter("splitterAppearanceAttr"),
new AttributeOption[] { APPEAR_LEFT, APPEAR_RIGHT, APPEAR_CENTER, APPEAR_LEGACY });
+ //////////////////////////////////////////////////////dis///////////////////////////////////////////////////
+ public static final AttributeOption APPEAR_ASS = new AttributeOption("ascending",
+ Strings.getter("splitterDistributeAscending"));
+
+ public static final AttributeOption APPEAR_DESS = new AttributeOption("descending",
+ Strings.getter("splitterDistributeDescending"));
+ public static final Attribute ATTR_ORDER = Attributes.forOption("order",
+ Strings.getter("splitterDistribute"),
+ new AttributeOption[] { APPEAR_ASS, APPEAR_DESS });
+
+ ////////////////////////////////////////////////////////////dis/////////////////////////////////////////////
+
public static final Attribute ATTR_WIDTH = Attributes.forBitWidth("incoming",
Strings.getter("splitterBitWidthAttr"));
@@ -124,11 +139,13 @@ public String toString() {
Strings.getter("splitterFanOutAttr"), 1, 32);
private static final List> INIT_ATTRIBUTES = Arrays
- .asList(new Attribute>[] { StdAttr.FACING, ATTR_FANOUT, ATTR_WIDTH, ATTR_APPEARANCE, });
+ .asList(new Attribute>[] { StdAttr.FACING, ATTR_FANOUT, ATTR_WIDTH, ATTR_APPEARANCE,ATTR_ORDER });
private static final String unchosen_val = "none";
static byte[] computeDistribution(int fanout, int bits, int order) {
+ //order=-1; -1== 3,2,1,0 1=0,1,2,3 order of bits
+ order=SplitterAttributes.order; //i think i can call it bypass
byte[] ret = new byte[bits];
if (order >= 0) {
if (fanout >= bits) {
@@ -181,6 +198,8 @@ static byte[] computeDistribution(int fanout, int bits, int order) {
private ArrayList> attrs = new ArrayList>(INIT_ATTRIBUTES);
private SplitterParameters parameters;
AttributeOption appear = APPEAR_LEFT;
+ AttributeOption ordershow=APPEAR_ASS;
+
Direction facing = Direction.EAST;
byte fanout = 4; // number of ends this splits into
byte[] bit_end = new byte[4]; // how each bit maps to an end (0 if nowhere);
@@ -282,6 +301,7 @@ public SplitterParameters getParameters() {
return ret;
}
+ // val that will remain in the text box after selection
@Override
public V getValue(Attribute attr) {
if (attr == StdAttr.FACING) {
@@ -292,6 +312,8 @@ public V getValue(Attribute attr) {
return (V) BitWidth.create(bit_end.length);
} else if (attr == ATTR_APPEARANCE) {
return (V) appear;
+ } else if (attr == ATTR_ORDER) {
+ return (V) ordershow;
} else if (attr instanceof BitOutAttribute) {
BitOutAttribute bitOut = (BitOutAttribute) attr;
return (V) Integer.valueOf(bit_end[bitOut.which]);
@@ -300,6 +322,7 @@ public V getValue(Attribute attr) {
}
}
+ //what happends when the one of the selection is selected
@Override
public void setValue(Attribute attr, V value) {
if (attr == StdAttr.FACING) {
@@ -322,7 +345,24 @@ public void setValue(Attribute attr, V value) {
bit_end = new byte[width.getWidth()];
configureOptions();
configureDefaults();
- } else if (attr == ATTR_APPEARANCE) {
+
+/////////////////////////////////////////button order///////////////////////////////
+ } else if (value == APPEAR_ASS) {
+ SplitterAttributes.order=1;
+ ordershow = (AttributeOption) value;
+ configureOptions();
+ configureDefaults();
+
+ } else if (value == APPEAR_DESS) {
+ SplitterAttributes.order =-1;
+ ordershow = (AttributeOption) value;
+ configureOptions();
+ configureDefaults();
+
+ }
+///////////////////////////////////////button order////////////////////////////////
+
+ else if (attr == ATTR_APPEARANCE) {
appear = (AttributeOption) value;
parameters = null;
} else if (attr instanceof BitOutAttribute) {
diff --git a/Logisim-Fork/src/main/java/com/cburch/logisim/comp/TextField.java b/Logisim-Fork/src/main/java/com/cburch/logisim/comp/TextField.java
index 6b63112b..a4716960 100644
--- a/Logisim-Fork/src/main/java/com/cburch/logisim/comp/TextField.java
+++ b/Logisim-Fork/src/main/java/com/cburch/logisim/comp/TextField.java
@@ -67,38 +67,7 @@ public void draw(Graphics g) {
g.setColor(color);
int x = this.x;
int y = this.y;
- FontMetrics fm = g.getFontMetrics();
- requestLongestWidth(fm);
- int width = ( longestWidth == 0 && fm.stringWidth(text) > 0) ? longestWidth = fm.stringWidth(text) : longestWidth; //if longestWidth is zero but stringWidth(text) is > 0 requestLongestWidth() didn't find any TextFieldCaret object
- int ascent = fm.getAscent();
- int descent = fm.getDescent();
- switch (halign) {
- case TextField.H_CENTER:
- x -= width / 2;
- break;
- case TextField.H_RIGHT:
- x -= width;
- break;
- default:
- break;
- }
- switch (valign) {
- case TextField.V_TOP:
- y += ascent;
- break;
- case TextField.V_CENTER:
- y += ascent / 2;
- break;
- case TextField.V_CENTER_OVERALL:
- y += (ascent - descent) / 2;
- break;
- case TextField.V_BOTTOM:
- y -= descent;
- break;
- default:
- break;
- }
- g.drawString(text, x, y);
+ GraphicsUtil.drawText(g, text, x, y, halign, valign);
g.setFont(oldFont);
g.setColor(oldColor);
}
diff --git a/Logisim-Fork/src/main/java/com/cburch/logisim/gui/log/LogFrame.java b/Logisim-Fork/src/main/java/com/cburch/logisim/gui/log/LogFrame.java
index ec263fd8..2f8fd07c 100644
--- a/Logisim-Fork/src/main/java/com/cburch/logisim/gui/log/LogFrame.java
+++ b/Logisim-Fork/src/main/java/com/cburch/logisim/gui/log/LogFrame.java
@@ -12,6 +12,7 @@
import java.util.Map;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
@@ -41,6 +42,8 @@ public void actionPerformed(ActionEvent event) {
if (src == clearLog) {
getModel().clearAllLogs();
getModel().fireSelectionChanged(new ModelEvent());
+ } else if (src == alwaysOnTop) {
+ setAlwaysOnTopWindow(alwaysOnTop.isSelected());
}
}
@@ -61,6 +64,7 @@ public void localeChanged() {
panels[i].localeChanged();
}
clearLog.setText(Strings.get("clearLogButton"));
+ alwaysOnTop.setText(Strings.get("alwaysOnTopCheckBox"));
windowManager.localeChanged();
}
@@ -145,6 +149,7 @@ private static String computeTitle(Model data, Project proj) {
private JTabbedPane tabbedPane;
private JButton clearLog = new JButton();
+ private JCheckBox alwaysOnTop = new JCheckBox();
public LogFrame(Project project) {
this.project = project;
@@ -165,6 +170,9 @@ public LogFrame(Project project) {
JPanel buttonPanel = new JPanel();
buttonPanel.add(clearLog);
clearLog.addActionListener(myListener);
+
+ buttonPanel.add(alwaysOnTop);
+ alwaysOnTop.addActionListener(myListener);
Container contents = getContentPane();
tabbedPane.setPreferredSize(new Dimension(450, 300));
@@ -234,4 +242,8 @@ public void setVisible(boolean value) {
}
super.setVisible(value);
}
+
+ public void setAlwaysOnTopWindow (boolean value) {
+ super.setAlwaysOnTop(value);
+ }
}
diff --git a/Logisim-Fork/src/main/java/com/cburch/logisim/std/ttl/Ttl74283.java b/Logisim-Fork/src/main/java/com/cburch/logisim/std/ttl/Ttl74283.java
index 9719c038..b9949a3e 100644
--- a/Logisim-Fork/src/main/java/com/cburch/logisim/std/ttl/Ttl74283.java
+++ b/Logisim-Fork/src/main/java/com/cburch/logisim/std/ttl/Ttl74283.java
@@ -9,7 +9,7 @@ public class Ttl74283 extends AbstractTtlGate {
public Ttl74283() {
super("74283", (byte) 16, new byte[] { 1, 4, 9, 10, 13 },
- new String[] { "∑2", "B2", "A2", "∑1", "A1", "B1", "CIN", "C4", "∑4", "B4", "A4", "∑3", "A3", "B3" });
+ new String[] { "\u03a32", "B2", "A2", "\u03a31", "A1", "B1", "CIN", "C4", "\u03a34", "B4", "A4", "\u03a33", "A3", "B3" });
}
@Override
diff --git a/Logisim-Fork/src/main/java/resources/logisim/de/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/de/circuit.properties
index feee3fe1..75c39867 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/de/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/de/circuit.properties
@@ -54,6 +54,7 @@ splitterAppearanceCenter = Mittig
splitterAppearanceRight = Rechts
splitterDistributeAscending = Aufsteigend verteilen
splitterDistributeDescending = Absteigend verteilen
+splitterDistribute = Bitverteilung
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/de/log.properties b/Logisim-Fork/src/main/java/resources/logisim/de/log.properties
index 1400711b..dc8bc41a 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/de/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/de/log.properties
@@ -5,6 +5,7 @@ logFrameTitle= Logisim: Log %s von %s
logFrameMenuItem= %s: Log
closeButton= Fenster schlie\u00dfen
clearLogButton = Alle Logs löschen
+alwaysOnTopCheckBox = Immer oben
#
# SelectionPanel.java
#
@@ -41,4 +42,4 @@ fileExistsTitle= Datei exisitiert bereits.
fileExistsMessage= Die Datei "%s" existiert bereits.
fileOverwriteOption= \u00dcberschreiben
fileAppendOption= Anf\u00fcgen
-fileCancelOption= Abbrechen
\ No newline at end of file
+fileCancelOption= Abbrechen
diff --git a/Logisim-Fork/src/main/java/resources/logisim/el/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/el/circuit.properties
index baf7176f..b7ab43fb 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/el/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/el/circuit.properties
@@ -50,6 +50,9 @@ splitterBitWidthAttr= \u0395\u03cd\u03c1\u03bf\u03c2 Bit \u0395\u03b9\u03c3\u03c
splitterFanOutAttr= \u0392\u03b1\u03b8\u03bc\u03cc\u03c2 \u039f\u03b4\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2
splitterBitAttr= Bit %s
splitterBitNone= \u039a\u03b1\u03bd\u03ad\u03bd\u03b1
+splitterDistributeAscending = \u0391\u03cd\u03be\u03b7\u03c3\u03b7\u0020\u03c4\u03b7\u03c2\u0020\u03b4\u03b9\u03b1\u03bd\u03bf\u03bc\u03ae\u03c2
+splitterDistributeDescending = \u03a6\u03b8\u03af\u03bd\u03bf\u03c5\u03c3\u03b1\u0020\u03ba\u03b1\u03c4\u03b1\u03bd\u03bf\u03bc\u03ae
+splitterDistribute = \u039a\u03b1\u03c4\u03b1\u03bd\u03bf\u03bc\u03ae\u000a bit
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/el/log.properties b/Logisim-Fork/src/main/java/resources/logisim/el/log.properties
index 066ba6e4..f45407c5 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/el/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/el/log.properties
@@ -4,6 +4,7 @@
logFrameTitle= Logisim: \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae %s \u03b1\u03c0\u03cc %s
logFrameMenuItem= %s: Log
closeButton= \u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03a0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5
+alwaysOnTopCheckBox = \u03A0\u03AC\u03BD\u03C4\u03B1 \u03C3\u03C4\u03B7\u03BD \u03BA\u03BF\u03C1\u03C5\u03C6\u03AE
#
# SelectionPanel.java
#
@@ -38,4 +39,4 @@ fileExistsTitle= \u0391\u03c1\u03c7\u03b5\u03af\u03bf \u03a5\u03c0\u03ac\u03c1\u
fileExistsMessage= \u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf "%s" \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7.
fileOverwriteOption= \u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7
fileAppendOption= \u03a0\u03c1\u03bf\u03c3\u03ac\u03c1\u03c4\u03b7\u03c3\u03b7
-fileCancelOption= \u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7
\ No newline at end of file
+fileCancelOption= \u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7
diff --git a/Logisim-Fork/src/main/java/resources/logisim/en/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/en/circuit.properties
index 6f16a897..76d49425 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/en/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/en/circuit.properties
@@ -57,6 +57,7 @@ splitterAppearanceCenter = Centered
splitterAppearanceRight = Right-handed
splitterDistributeAscending = Distribute Ascending
splitterDistributeDescending = Distribute Descending
+splitterDistribute = Bit Distribute
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/en/comp.properties b/Logisim-Fork/src/main/java/resources/logisim/en/comp.properties
index 919bdeaa..8657de55 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/en/comp.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/en/comp.properties
@@ -1,6 +1,6 @@
#
# comp/TextFieldCaret.java
#
-MultilineTip = Press shift + enter to return
+MultilineTip = Press shift + enter to add a new line
diff --git a/Logisim-Fork/src/main/java/resources/logisim/en/log.properties b/Logisim-Fork/src/main/java/resources/logisim/en/log.properties
index fa9a7124..cc1fc822 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/en/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/en/log.properties
@@ -5,6 +5,7 @@ logFrameTitle = Logisim: Log %s of %s
logFrameMenuItem = %s: Log
closeButton = Close Window
clearLogButton = Clear All Logs
+alwaysOnTopCheckBox = Always on top
#
# SelectionPanel.java
#
@@ -41,4 +42,4 @@ fileExistsTitle = File Already Exists
fileExistsMessage = The file "%s" already exists.
fileOverwriteOption = Overwrite
fileAppendOption = Append
-fileCancelOption = Cancel
\ No newline at end of file
+fileCancelOption = Cancel
diff --git a/Logisim-Fork/src/main/java/resources/logisim/es/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/es/circuit.properties
index 5dfab443..01ecd306 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/es/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/es/circuit.properties
@@ -56,6 +56,9 @@ splitterBitWidthAttr = Bits De Entrada
splitterFanOutAttr = Fan Out
splitterBitAttr = Bit %s
splitterBitNone = Nada
+splitterDistributeAscending = Aumento de la distribución
+splitterDistributeDescending = Distribución descendente
+splitterDistribute = Distribución de bit
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/es/log.properties b/Logisim-Fork/src/main/java/resources/logisim/es/log.properties
index 2f25fc70..4bc6810f 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/es/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/es/log.properties
@@ -5,6 +5,7 @@ logFrameTitle = Logisim: Registro %s de %s
logFrameMenuItem = %s: Registro
closeButton = Cerrar Ventana
clearLogButton = Limpiar Todos Los Logs
+alwaysOnTopCheckBox = Siempre en la cima
#
# SelectionPanel.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/fr/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/fr/circuit.properties
index f2f26ea3..d96ca23e 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/fr/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/fr/circuit.properties
@@ -57,6 +57,7 @@ splitterAppearanceCenter = Centr
splitterAppearanceRight = A droite
splitterDistributeAscending = Distribué en montant
splitterDistributeDescending = Distribué en descendant
+splitterDistribute = Répartition des bits
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/fr/log.properties b/Logisim-Fork/src/main/java/resources/logisim/fr/log.properties
index 7f651e0d..12718ece 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/fr/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/fr/log.properties
@@ -5,6 +5,7 @@ logFrameTitle = Logisim: Log %s de %s
logFrameMenuItem = %s: Log
closeButton = Fermer la fenêtre
clearLogButton = Effacer Tout Logs
+alwaysOnTopCheckBox = Toujours au top
#
# SelectionPanel.java
#
@@ -41,4 +42,4 @@ fileExistsTitle = Le fichier existe d
fileExistsMessage = Le fichier "%s" existe déjà.
fileOverwriteOption = Ecraser
fileAppendOption = Ajouter
-fileCancelOption = Annuler
\ No newline at end of file
+fileCancelOption = Annuler
diff --git a/Logisim-Fork/src/main/java/resources/logisim/img/logisim-icon.ico b/Logisim-Fork/src/main/java/resources/logisim/img/logisim-icon.ico
new file mode 100644
index 00000000..af37d0ff
Binary files /dev/null and b/Logisim-Fork/src/main/java/resources/logisim/img/logisim-icon.ico differ
diff --git a/Logisim-Fork/src/main/java/resources/logisim/it/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/it/circuit.properties
index 1e3351c7..f004aa54 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/it/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/it/circuit.properties
@@ -57,6 +57,7 @@ splitterAppearanceCenter = Centrato
splitterAppearanceRight = Rivolto a destra
splitterDistributeAscending = Distribuzione Crescente
splitterDistributeDescending = Distribuzione Decrescente
+splitterDistribute = Distribuzione bit
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/it/gui.properties b/Logisim-Fork/src/main/java/resources/logisim/it/gui.properties
index 988372a3..e12250dc 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/it/gui.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/it/gui.properties
@@ -103,7 +103,7 @@ statsTotalWith = TOTALE (con sottocircuiti)
projectViewToolboxTip = Mostra circuito e librerie del progetto nel pannello di esplorazione
projectViewSimulationTip = Visualizza gerarchia simulazione nel pannello di esplorazione
projectEditLayoutTip = Modifica vista layout del circuito
-projectEditAppearanceTip = Modifica vista layout sottocircuito del circuito
+projectEditAppearanceTip = Modifica l'aspetto del sottocircuito del circuito visualizzato
#
# gui/main/ToolboxToolbarModel.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/it/log.properties b/Logisim-Fork/src/main/java/resources/logisim/it/log.properties
index 58921d6a..960bde48 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/it/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/it/log.properties
@@ -5,6 +5,7 @@ logFrameTitle = Logisim: Log %s di %s
logFrameMenuItem = %s: Log
closeButton = Chiudi Finestra
clearLogButton = Pulisci Tutti Log
+alwaysOnTopCheckBox = Sempre in primo piano
#
# SelectionPanel.java
#
@@ -41,4 +42,4 @@ fileExistsTitle = Il file esiste gi
fileExistsMessage = Il file "%s" esiste già.
fileOverwriteOption = Sovrascrivi
fileAppendOption = Aggiungi
-fileCancelOption = Annulla
\ No newline at end of file
+fileCancelOption = Annulla
diff --git a/Logisim-Fork/src/main/java/resources/logisim/pt/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/pt/circuit.properties
index 452aa111..4afa8143 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/pt/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/pt/circuit.properties
@@ -57,6 +57,7 @@ splitterAppearanceCenter = Central
splitterAppearanceRight = À direita
splitterDistributeAscending = Distribuir em ordem crescente
splitterDistributeDescending = Distribuir em ordem decrescente
+splitterDistribute = Distribuição de bits
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/pt/log.properties b/Logisim-Fork/src/main/java/resources/logisim/pt/log.properties
index 59b7ed73..4c44d42a 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/pt/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/pt/log.properties
@@ -5,6 +5,7 @@ logFrameTitle= Logisim: Registro %s de %s
logFrameMenuItem= %s: Registro
closeButton= Fechar janela
clearLogButton = Limpar todos os logs
+alwaysOnTopCheckBox = Sempre no topo
#
# SelectionPanel.java
#
@@ -41,4 +42,4 @@ fileExistsTitle= Arquivo j
fileExistsMessage= Arquivo "%s" já existente.
fileOverwriteOption= Sobrescrever
fileAppendOption= Acrescentar
-fileCancelOption= Cancelar
\ No newline at end of file
+fileCancelOption= Cancelar
diff --git a/Logisim-Fork/src/main/java/resources/logisim/ru/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/ru/circuit.properties
index a0ba5e6a..c35ebb9c 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/ru/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/ru/circuit.properties
@@ -57,6 +57,7 @@ splitterAppearanceCenter= \u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443
splitterAppearanceRight= \u041f\u0440\u0430\u0432\u043e\u0440\u0443\u043a\u0438\u0439
splitterDistributeAscending= \u0420\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e
splitterDistributeDescending= \u0420\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e
+splitterDistribute = \u0411\u0438\u0442\u043e\u0432\u043e\u0435\u0020\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/ru/log.properties b/Logisim-Fork/src/main/java/resources/logisim/ru/log.properties
index 15ee1df6..a018e50f 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/ru/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/ru/log.properties
@@ -4,6 +4,7 @@
logFrameTitle= Logisim: \u0436\u0443\u0440\u043d\u0430\u043b %s \u0438\u0437 %s
logFrameMenuItem= %s: \u0436\u0443\u0440\u043d\u0430\u043b
closeButton= \u0417\u0430\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e
+alwaysOnTopCheckBox = \u0412\u0441\u0435\u0433\u0434\u0430 \u043D\u0430 \u0432\u044B\u0441\u043E\u0442\u0435
#
# SelectionPanel.java
#
@@ -38,4 +39,4 @@ fileExistsTitle= \u0424\u0430\u0439\u043b \u0443\u0436\u0435 \u0441\u0443\u0449\
fileExistsMessage= \u0424\u0430\u0439\u043b "%s" \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.
fileOverwriteOption= \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c
fileAppendOption= \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c
-fileCancelOption= \u041e\u0442\u043c\u0435\u043d\u0430
\ No newline at end of file
+fileCancelOption= \u041e\u0442\u043c\u0435\u043d\u0430
diff --git a/Logisim-Fork/src/main/java/resources/logisim/zh/circuit.properties b/Logisim-Fork/src/main/java/resources/logisim/zh/circuit.properties
index bfcb2581..ddfd54f6 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/zh/circuit.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/zh/circuit.properties
@@ -57,6 +57,7 @@ splitterAppearanceCenter = \u4E2D\u5FC3\u5F0F
splitterAppearanceRight = \u53F3\u624B\u5F0F
splitterDistributeAscending = \u5206\u7EBF\u7AEF\u5347\u5E8F\u6392\u5217
splitterDistributeDescending = \u5206\u7EBF\u7AEF\u964D\u5E8F\u6392\u5217
+splitterDistribute = \u6bd4\u7279\u5206\u5e03
#
# circuit/WireClass.java
#
diff --git a/Logisim-Fork/src/main/java/resources/logisim/zh/log.properties b/Logisim-Fork/src/main/java/resources/logisim/zh/log.properties
index 0f5149cc..95f4027c 100644
--- a/Logisim-Fork/src/main/java/resources/logisim/zh/log.properties
+++ b/Logisim-Fork/src/main/java/resources/logisim/zh/log.properties
@@ -5,6 +5,7 @@ logFrameTitle = Logisim: \u65E5\u5FD7 %s of %s
logFrameMenuItem = %s: \u65E5\u5FD7
closeButton = \u5173\u95ED\u7A97\u53E3
clearLogButton = \u6E05\u9664\u6240\u6709\u65E5\u5FD7
+alwaysOnTopCheckBox = \u59CB\u7EC8\u4F4D\u4E8E\u9876\u90E8
#
# SelectionPanel.java
#
@@ -41,4 +42,4 @@ fileExistsTitle = \u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728
fileExistsMessage = \u6587\u4EF6 "%s" \u5DF2\u7ECF\u5B58\u5728
fileOverwriteOption = \u8986\u76D6
fileAppendOption = \u8FFD\u52A0
-fileCancelOption = \u53D6\u6D88
\ No newline at end of file
+fileCancelOption = \u53D6\u6D88
diff --git a/README.md b/README.md
index b86a715f..3f5bde01 100644
--- a/README.md
+++ b/README.md
@@ -84,7 +84,7 @@ I fixed this problem but if you open an old file containing gates with those att
## EXE and JAR downloads + microprocessor project
All in our website [here](https://logisim.altervista.org)
## How to compile & use
-The project uses maven, from `Logisim/Logisim-Form` run `mvn package` or use your ide and import the directory as a maven project,
+The project uses maven, from `Logisim/Logisim-Fork` run `mvn package` or use your ide and import the directory as a maven project,
the output file is `target/Logisim-jar-with-dependencies.jar`
If you use ecplise, or a older version of Logisim:
diff --git a/version.xml b/version.xml
index ef776fc3..1169ede4 100644
--- a/version.xml
+++ b/version.xml
@@ -2,11 +2,16 @@
https://github.com/LogisimIt/Logisim/raw/master/Compiled/Logisim-ITA.jar
- 2.16.1.4
+ 2.16.2.0
https://github.com/LogisimIt/Logisim/raw/master/Compiled/Logisim-ITA.exe
- 2.16.1.4
+ 2.16.2.0
-* Added multi-line text editing
-* Added simplified RAM/ROM mode
+ * Added button to reverse the bit distribution in the splitter
+ * Added "Always on top" checkbox in the Logging window
+ * Updated labels
+ * Corrected Italian translation key "projectEditAppearanceTip"
+ * Tunnel label
+ * Corrected Italian translation key "projectEditAppearanceTip"
+ * Tunnel label