mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-30 08:23:37 -04:00
Merge branch 'master' into undo
This commit is contained in:
commit
a0cbecfa55
@ -53,6 +53,8 @@ If you want to send a bug report or feature request please use the GitHub
|
|||||||
[issue tracker](https://github.com/hneemann/Digital/issues/new).
|
[issue tracker](https://github.com/hneemann/Digital/issues/new).
|
||||||
This helps me to improve Digital, so do not hesitate.
|
This helps me to improve Digital, so do not hesitate.
|
||||||
|
|
||||||
|
You can also send a private message to [digital-simulator@web.de](mailto:digital-simulator@web.de).
|
||||||
|
|
||||||
## Motivation ##
|
## Motivation ##
|
||||||
|
|
||||||
Below I would like to explain briefly the reasons which led me to start a new development:
|
Below I would like to explain briefly the reasons which led me to start a new development:
|
||||||
|
@ -252,6 +252,13 @@ public final class Keys {
|
|||||||
public static final Key<Language> SETTINGS_LANGUAGE
|
public static final Key<Language> SETTINGS_LANGUAGE
|
||||||
= new Key<>("Language", new Language());
|
= new Key<>("Language", new Language());
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default state of the tree view
|
||||||
|
*/
|
||||||
|
public static final Key<Boolean> SETTINGS_DEFAULT_TREESELECT
|
||||||
|
= new Key<>("defTreeSelect", false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The GUI expression string representation
|
* The GUI expression string representation
|
||||||
*/
|
*/
|
||||||
|
@ -309,6 +309,8 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
|
|||||||
}
|
}
|
||||||
revalidate();
|
revalidate();
|
||||||
});
|
});
|
||||||
|
if (Settings.getInstance().get(Keys.SETTINGS_DEFAULT_TREESELECT))
|
||||||
|
treeCheckBox.doClick();
|
||||||
|
|
||||||
toolBar.add(viewHelp.createJButtonNoText());
|
toolBar.add(viewHelp.createJButtonNoText());
|
||||||
toolBar.add(zoomIn.createJButtonNoText());
|
toolBar.add(zoomIn.createJButtonNoText());
|
||||||
@ -511,11 +513,13 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
|
|||||||
ToolTipAction editSettings = new ToolTipAction(Lang.get("menu_editSettings")) {
|
ToolTipAction editSettings = new ToolTipAction(Lang.get("menu_editSettings")) {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
Language oldLang = Settings.getInstance().get(Keys.SETTINGS_LANGUAGE);
|
final Language oldLang = Settings.getInstance().get(Keys.SETTINGS_LANGUAGE);
|
||||||
|
final boolean oldIeeeShapes = Settings.getInstance().get(Keys.SETTINGS_IEEE_SHAPES);
|
||||||
if (new AttributeDialog(Main.this, Settings.SETTINGS_KEYS, Settings.getInstance().getAttributes()).showDialog()) {
|
if (new AttributeDialog(Main.this, Settings.SETTINGS_KEYS, Settings.getInstance().getAttributes()).showDialog()) {
|
||||||
FormatToExpression.setDefaultFormat(Settings.getInstance().get(Keys.SETTINGS_EXPRESSION_FORMAT));
|
FormatToExpression.setDefaultFormat(Settings.getInstance().get(Keys.SETTINGS_EXPRESSION_FORMAT));
|
||||||
final Language newLang = Settings.getInstance().getAttributes().get(Keys.SETTINGS_LANGUAGE);
|
final Language newLang = Settings.getInstance().getAttributes().get(Keys.SETTINGS_LANGUAGE);
|
||||||
if (!newLang.equals(oldLang)) {
|
final boolean newIeeeShapes = Settings.getInstance().get(Keys.SETTINGS_IEEE_SHAPES);
|
||||||
|
if (!newLang.equals(oldLang) || (oldIeeeShapes != newIeeeShapes)) {
|
||||||
Lang.setLanguage(newLang);
|
Lang.setLanguage(newLang);
|
||||||
JOptionPane.showMessageDialog(Main.this, Lang.get("msg_restartNeeded"));
|
JOptionPane.showMessageDialog(Main.this, Lang.get("msg_restartNeeded"));
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ public final class Settings implements AttributeListener {
|
|||||||
INT_LIST.add(Keys.SETTINGS_IEEE_SHAPES);
|
INT_LIST.add(Keys.SETTINGS_IEEE_SHAPES);
|
||||||
INT_LIST.add(Keys.SETTINGS_LANGUAGE);
|
INT_LIST.add(Keys.SETTINGS_LANGUAGE);
|
||||||
INT_LIST.add(Keys.SETTINGS_EXPRESSION_FORMAT);
|
INT_LIST.add(Keys.SETTINGS_EXPRESSION_FORMAT);
|
||||||
|
INT_LIST.add(Keys.SETTINGS_DEFAULT_TREESELECT);
|
||||||
INT_LIST.add(Keys.SETTINGS_ATF1502_FITTER);
|
INT_LIST.add(Keys.SETTINGS_ATF1502_FITTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,10 +22,7 @@ import de.neemann.digital.gui.components.modification.ModifyAttributes;
|
|||||||
import de.neemann.digital.gui.sync.NoSync;
|
import de.neemann.digital.gui.sync.NoSync;
|
||||||
import de.neemann.digital.gui.sync.Sync;
|
import de.neemann.digital.gui.sync.Sync;
|
||||||
import de.neemann.digital.lang.Lang;
|
import de.neemann.digital.lang.Lang;
|
||||||
import de.neemann.gui.ErrorMessage;
|
import de.neemann.gui.*;
|
||||||
import de.neemann.gui.IconCreator;
|
|
||||||
import de.neemann.gui.LineBreaker;
|
|
||||||
import de.neemann.gui.ToolTipAction;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -64,6 +61,8 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
private static final int MOUSE_BORDER_SMALL = 10;
|
private static final int MOUSE_BORDER_SMALL = 10;
|
||||||
private static final int MOUSE_BORDER_LARGE = 50;
|
private static final int MOUSE_BORDER_LARGE = 50;
|
||||||
|
|
||||||
|
private static final int DRAG_DISTANCE = (int) (SIZE2 * Screen.getInstance().getScaling());
|
||||||
|
|
||||||
private final Main parent;
|
private final Main parent;
|
||||||
private final ElementLibrary library;
|
private final ElementLibrary library;
|
||||||
private final HashSet<Drawable> highLighted;
|
private final HashSet<Drawable> highLighted;
|
||||||
@ -547,11 +546,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
buffer = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().createCompatibleImage(getWidth(), getHeight());
|
buffer = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().createCompatibleImage(getWidth(), getHeight());
|
||||||
|
|
||||||
Graphics2D gr2 = buffer.createGraphics();
|
Graphics2D gr2 = buffer.createGraphics();
|
||||||
if (antiAlias) {
|
enableAntiAlias(gr2);
|
||||||
gr2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
|
||||||
gr2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
|
||||||
gr2.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
|
|
||||||
}
|
|
||||||
gr2.setColor(Color.WHITE);
|
gr2.setColor(Color.WHITE);
|
||||||
gr2.fillRect(0, 0, getWidth(), getHeight());
|
gr2.fillRect(0, 0, getWidth(), getHeight());
|
||||||
gr2.transform(transform);
|
gr2.transform(transform);
|
||||||
@ -576,11 +571,20 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
Graphics2D gr2 = (Graphics2D) g;
|
Graphics2D gr2 = (Graphics2D) g;
|
||||||
AffineTransform oldTrans = gr2.getTransform();
|
AffineTransform oldTrans = gr2.getTransform();
|
||||||
gr2.transform(transform);
|
gr2.transform(transform);
|
||||||
|
enableAntiAlias(gr2);
|
||||||
GraphicSwing gr = new GraphicSwing(gr2, (int) (2 / transform.getScaleX()));
|
GraphicSwing gr = new GraphicSwing(gr2, (int) (2 / transform.getScaleX()));
|
||||||
activeMouseController.drawTo(gr);
|
activeMouseController.drawTo(gr);
|
||||||
gr2.setTransform(oldTrans);
|
gr2.setTransform(oldTrans);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void enableAntiAlias(Graphics2D gr2) {
|
||||||
|
if (antiAlias) {
|
||||||
|
gr2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||||
|
gr2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
||||||
|
gr2.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void circuitHasChanged() {
|
public void circuitHasChanged() {
|
||||||
hasChanged = true;
|
hasChanged = true;
|
||||||
@ -799,7 +803,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
|
|
||||||
private boolean wasMoved(MouseEvent e) {
|
private boolean wasMoved(MouseEvent e) {
|
||||||
Vector d = new Vector(e.getX(), e.getY()).sub(pos);
|
Vector d = new Vector(e.getX(), e.getY()).sub(pos);
|
||||||
return Math.abs(d.x) > SIZE2 || Math.abs(d.y) > SIZE2;
|
return Math.abs(d.x) > DRAG_DISTANCE || Math.abs(d.y) > DRAG_DISTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -45,7 +45,6 @@ public class SelectTree extends JTree {
|
|||||||
if (path != null && path.getPathCount() > 0) {
|
if (path != null && path.getPathCount() > 0) {
|
||||||
LibraryNode node = (LibraryNode) path.getLastPathComponent();
|
LibraryNode node = (LibraryNode) path.getLastPathComponent();
|
||||||
if (node.isLeaf() && node.isUnique()) {
|
if (node.isLeaf() && node.isUnique()) {
|
||||||
clearSelection();
|
|
||||||
try {
|
try {
|
||||||
ElementTypeDescription d = node.getDescription();
|
ElementTypeDescription d = node.getDescription();
|
||||||
component.setPartToInsert(new VisualElement(d.getName()).setShapeFactory(shapeFactory));
|
component.setPartToInsert(new VisualElement(d.getName()).setShapeFactory(shapeFactory));
|
||||||
|
@ -641,6 +641,8 @@ Sind evtl. die Namen der Variablen nicht eindeutig?</string>
|
|||||||
Pinzuordnung bei der Programmierung eines CPLD verwendet.</string>
|
Pinzuordnung bei der Programmierung eines CPLD verwendet.</string>
|
||||||
<string name="key_pinCount">Pinanzahl DIL</string>
|
<string name="key_pinCount">Pinanzahl DIL</string>
|
||||||
<string name="key_pinCount_tt">Anzahl der Pins des DILs. Wird hier eine 0 eingetragen, wird die Anzahl automatisch bestimmt.</string>
|
<string name="key_pinCount_tt">Anzahl der Pins des DILs. Wird hier eine 0 eingetragen, wird die Anzahl automatisch bestimmt.</string>
|
||||||
|
<string name="key_defTreeSelect">Baumansicht beim Start aktivieren.</string>
|
||||||
|
<string name="key_defTreeSelect_tt">Wenn gesetzt, wird die Baumansicht beim Start automatisch aktiviert.</string>
|
||||||
|
|
||||||
<string name="lib_Logic">Logisch</string>
|
<string name="lib_Logic">Logisch</string>
|
||||||
<string name="lib_arithmetic">Arithmetik</string>
|
<string name="lib_arithmetic">Arithmetik</string>
|
||||||
@ -827,7 +829,7 @@ Die Icons stammen aus dem Tango Desktop Project.</string>
|
|||||||
<string name="msg_missingShape_N">Es fehlt ein Diagramm für {0}</string>
|
<string name="msg_missingShape_N">Es fehlt ein Diagramm für {0}</string>
|
||||||
<string name="msg_pins">Pinbelegung</string>
|
<string name="msg_pins">Pinbelegung</string>
|
||||||
<string name="msg_pinMap_pin_N_is_N">Pin {0}: {1}</string>
|
<string name="msg_pinMap_pin_N_is_N">Pin {0}: {1}</string>
|
||||||
<string name="msg_restartNeeded">Die Änderung der Sprache erfordert einen Neustart!</string>
|
<string name="msg_restartNeeded">Die Änderung der Einstellung erfordert einen Neustart!</string>
|
||||||
<string name="msg_noRomFound">Kein ROM im Model gefunden! Ein ROM muss als Programmspeicher gewählt werden!</string>
|
<string name="msg_noRomFound">Kein ROM im Model gefunden! Ein ROM muss als Programmspeicher gewählt werden!</string>
|
||||||
<string name="msg_moreThenOneRomFound">Mehr als einen Programmspeicher gefunden. Es darf nur einen Programmspeicher geben.</string>
|
<string name="msg_moreThenOneRomFound">Mehr als einen Programmspeicher gefunden. Es darf nur einen Programmspeicher geben.</string>
|
||||||
<string name="msg_enterAnExpression">Geben Sie einen Ausdruck ein:</string>
|
<string name="msg_enterAnExpression">Geben Sie einen Ausdruck ein:</string>
|
||||||
|
@ -631,7 +631,8 @@ The names of the variables may not be unique.</string>
|
|||||||
the pin assignment when programming a CPLD.</string>
|
the pin assignment when programming a CPLD.</string>
|
||||||
<string name="key_pinCount">Number of DIL pins</string>
|
<string name="key_pinCount">Number of DIL pins</string>
|
||||||
<string name="key_pinCount_tt">Number of pins. A zero means that the number od pins is determined automatically.</string>
|
<string name="key_pinCount_tt">Number of pins. A zero means that the number od pins is determined automatically.</string>
|
||||||
|
<string name="key_defTreeSelect">Component tree view is visible at startup.</string>
|
||||||
|
<string name="key_defTreeSelect_tt">If set, the component tree view is enabled at startup.</string>
|
||||||
|
|
||||||
<string name="lib_Logic">Logic</string>
|
<string name="lib_Logic">Logic</string>
|
||||||
<string name="lib_arithmetic">Arithmetic</string>
|
<string name="lib_arithmetic">Arithmetic</string>
|
||||||
@ -817,7 +818,7 @@ The icons are taken from the Tango Desktop Project.</string>
|
|||||||
<string name="msg_missingShape_N">Shape {0} is missing</string>
|
<string name="msg_missingShape_N">Shape {0} is missing</string>
|
||||||
<string name="msg_pins">Pin assignment</string>
|
<string name="msg_pins">Pin assignment</string>
|
||||||
<string name="msg_pinMap_pin_N_is_N">Pin {0}: {1}</string>
|
<string name="msg_pinMap_pin_N_is_N">Pin {0}: {1}</string>
|
||||||
<string name="msg_restartNeeded">To change the GUI language a restart is required!</string>
|
<string name="msg_restartNeeded">A restart is required for the changes to take effect!</string>
|
||||||
<string name="msg_noRomFound">No ROM found! ROM needs to be set to be program memory.</string>
|
<string name="msg_noRomFound">No ROM found! ROM needs to be set to be program memory.</string>
|
||||||
<string name="msg_moreThenOneRomFound">More then one ROM found! Only one ROM must be set to be program memory.</string>
|
<string name="msg_moreThenOneRomFound">More then one ROM found! Only one ROM must be set to be program memory.</string>
|
||||||
<string name="msg_remoteUnknownCommand">Command {0} unknown!</string>
|
<string name="msg_remoteUnknownCommand">Command {0} unknown!</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user