Merge branch 'master' into undo

This commit is contained in:
hneemann 2017-05-26 10:26:56 +02:00
commit a0cbecfa55
8 changed files with 36 additions and 16 deletions

View File

@ -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:

View File

@ -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
*/ */

View File

@ -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"));
} }

View File

@ -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);
} }

View File

@ -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

View File

@ -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));

View File

@ -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>

View File

@ -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>