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).
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 ##
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
= 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
*/

View File

@ -309,6 +309,8 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
}
revalidate();
});
if (Settings.getInstance().get(Keys.SETTINGS_DEFAULT_TREESELECT))
treeCheckBox.doClick();
toolBar.add(viewHelp.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")) {
@Override
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()) {
FormatToExpression.setDefaultFormat(Settings.getInstance().get(Keys.SETTINGS_EXPRESSION_FORMAT));
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);
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_LANGUAGE);
INT_LIST.add(Keys.SETTINGS_EXPRESSION_FORMAT);
INT_LIST.add(Keys.SETTINGS_DEFAULT_TREESELECT);
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.Sync;
import de.neemann.digital.lang.Lang;
import de.neemann.gui.ErrorMessage;
import de.neemann.gui.IconCreator;
import de.neemann.gui.LineBreaker;
import de.neemann.gui.ToolTipAction;
import de.neemann.gui.*;
import javax.swing.*;
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_LARGE = 50;
private static final int DRAG_DISTANCE = (int) (SIZE2 * Screen.getInstance().getScaling());
private final Main parent;
private final ElementLibrary library;
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());
Graphics2D gr2 = buffer.createGraphics();
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);
}
enableAntiAlias(gr2);
gr2.setColor(Color.WHITE);
gr2.fillRect(0, 0, getWidth(), getHeight());
gr2.transform(transform);
@ -576,11 +571,20 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
Graphics2D gr2 = (Graphics2D) g;
AffineTransform oldTrans = gr2.getTransform();
gr2.transform(transform);
enableAntiAlias(gr2);
GraphicSwing gr = new GraphicSwing(gr2, (int) (2 / transform.getScaleX()));
activeMouseController.drawTo(gr);
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
public void circuitHasChanged() {
hasChanged = true;
@ -799,7 +803,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
private boolean wasMoved(MouseEvent e) {
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

View File

@ -45,7 +45,6 @@ public class SelectTree extends JTree {
if (path != null && path.getPathCount() > 0) {
LibraryNode node = (LibraryNode) path.getLastPathComponent();
if (node.isLeaf() && node.isUnique()) {
clearSelection();
try {
ElementTypeDescription d = node.getDescription();
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>
<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_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_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_pins">Pinbelegung</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_moreThenOneRomFound">Mehr als einen Programmspeicher gefunden. Es darf nur einen Programmspeicher geben.</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>
<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_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_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_pins">Pin assignment</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_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>