Giter Site home page Giter Site logo

antares's People

Contributors

dependabot[bot] avatar flandreas avatar fnoah avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

antares's Issues

Default light color property isn't applied

There are currently 2 issues with the circuit's "Default light color" property:

  • It doesn't get applied when adding light emitter components such as LED
  • The property editor tells "From system settings", but the color displayed in the dropdown is always white

UnexpectedError when dragging wire

When dragging wire from right to left and going over the starting point, an unexpected error occurs (see attached movie).

issue.mov

java.lang.NullPointerException
at ch.scorpion.jabbah.graph.view.net.edge.EdgeViewImpl.moveSegment(SourceFile:471)
at ch.scorpion.jabbah.graph.view.net.edge.EdgeViewImpl.moveSegment(SourceFile:370)
at ch.scorpion.jabbah.graph.view.net.edge.e.d(SourceFile:1067)
at ch.scorpion.jabbah.edit.g.J.e(SourceFile:198)
at ch.scorpion.jabbah.edit.d.j.f(SourceFile:186)
at ch.scorpion.jabbah.c.g.H.mouseDragged(SourceFile:314)
at java.desktop/java.awt.AWTEventMulticaster.mouseDragged(Unknown Source)
at java.desktop/java.awt.AWTEventMulticaster.mouseDragged(Unknown Source)
at java.desktop/java.awt.Component.processMouseMotionEvent(Unknown Source)
at java.desktop/javax.swing.JComponent.processMouseMotionEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
2021-02-18 19:34:56,796 ERROR [AWT-EventQueue-0] (SourceFile:26) - Unexpected error: null
java.lang.NullPointerException
at ch.scorpion.jabbah.graph.view.net.edge.EdgeViewImpl.moveSegment(SourceFile:471)
at ch.scorpion.jabbah.graph.view.net.edge.EdgeViewImpl.moveSegment(SourceFile:370)
at ch.scorpion.jabbah.graph.view.net.edge.e.d(SourceFile:1067)
at ch.scorpion.jabbah.edit.g.J.e(SourceFile:198)
at ch.scorpion.jabbah.edit.d.j.f(SourceFile:186)
at ch.scorpion.jabbah.c.g.H.mouseDragged(SourceFile:314)
at java.desktop/java.awt.AWTEventMulticaster.mouseDragged(Unknown Source)
at java.desktop/java.awt.AWTEventMulticaster.mouseDragged(Unknown Source)
at java.desktop/java.awt.Component.processMouseMotionEvent(Unknown Source)
at java.desktop/javax.swing.JComponent.processMouseMotionEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

Draw inactive Controls as "disabled"

Controls are interactive elements from sub circuits that are placed on the symbol of the sub circuit. If flat simulation is used AND the sub circuit uses a script, the models of the controls are never really updated during the simulation. Such Controls in symbols can confuse the user, for example when the display (the initial value) 0000 as the content of a register, although
this doesn't reflect the real value. Therefore, draw those controls as "disabled".

Preference setting for switch propagation delay

Add a new preference setting for configuring the default propagation delay of switches. This value will also be used as propagation delay when the user clicks on a circuit input. Version 0.3.0 uses a hardcoded value of 1'000 ns for interactive circuit input clicks, which is too large compared to typical gate propagation delay, because it will dominate in graphical signal curves in the upcoming oscilloscope feature.

Undoing complex wiring can fail

Undoing complex wiring using the undo system (especially when using junctions and) can sometimes scramble the wires. This is due to the fact that the design of the undo system uses "undo logic", which is error prone. Explore using a "event sourcing" based approach.

Transistor

Add a transistor component (n-type, p-type)

Splash screen not shown at start-up

Although a splash-screen is part of the software (and displayed when starting the built JAR directly), it is not displayed when starting installations that have been installed by the installers. At least on macOS.

Statistics for "deep" and "flat"

Version 0.1 of Antares calculates statistics (number of components per type) only by deep traversal in the circuit graph, recursively expanding all subcircuits. It would be interesting to see to what degree the component graph is cut down by using scripts. Calculate two separate statistics, one for "deep" circuit structure and another for "flat" circuit structure.

Renaming circuit when clicking breadcrumb

Small suggestion concerning the renaming of a circuit: It would be convenient to have the ability to double-click the breadcrumb in order to rename the current circuit, which could be confirmed by pressing the enter key.
Screenshot 2021-02-18 at 19 31 08

Sharper icons

The icons look quite blurry, especially on high resolution displays. Add higher resolution icons and choose depending on the screens DPI.

Break component

Introduce a new break circuit component with one input. If the input is asserted, the simulation is suspended if it runs in single step mode. This can be used for example in a microprocessor circuit to implement a "single machine instruction" mode if a breakpoint is activated whenever the microprogram returns to address 0.

Repainting errors in text components

If the text of a text component (or a rectangular component containing text) is larger than the surrounding box, repainting errors occur when moving the component.
Fixes:

  • Respect text bounding box when calculating text component bounding box
  • Clip text to surrounding box in case of rectangular components (rect, ellipse etc.)

Show scripts even if not circuit author

The properties of an object can only be edited by the author of a circuit. Since script properties show their scripts in a popup editor, an Antares user is not able to inspect the scripts of standard library components, because he is not the author of the standard library circuits. This prevents Antares users from studying the scripts used in the standard library.

Change the property editor of script properties such that it opens the script in a read-only popup editor.

Extend scripting DSL

Add the following functions to the scripting DSL:

  • Word.subword()
  • Word.shiftLeft()
  • Word.shiftRight
  • CircuitElemModelBridge.load()
  • CIrcuitElemModelBridge.store()
  • CIrcuitElemModelBridge.hexWord()
  • CIrcuitElemModelBridge.undefinedWord()

Pull resistor

Add a new built-in component that allows to add pull-up and pull-down resistors to circuits.

Draw text of selected rectangles

When selecting a rectangle with a text, the text is currently not drawn. The selection model consists only of the boundary of the rectangle. This can lead to disorientation when selecting multiple rectangles with text. Display the entire contents of the rectangle view using the selection color.

In addition, in order to make this work correctly, it is necessary that component draw their background with full transparency when being selected.

Choose user language in preferences

The language in which the UI is presented is currently taken from the operating system settings. In addition, a command line parameter allows to choose the language at startup time, although this is not transparent to the normal user. Let the user change the language in the preferences window. Antares has to be restarted after changing that preference.

Inconsistent editability of memory contents

  • memory contents should be editable even when opened during simulation
  • don't allow to edit RAM while in edit mode (as it is reset when simulation is started)
  • update main circuit after cell has been changed
  • same edibility of memory contents in popup and in desktop subview

Suggestion: add one or multiple small videos to the front page

As the title says: create some short videos without sound for the Antares front page (and maybe also for subsequent pages.

For example like this (it's a little big though and unfortunately a GIF):

keyboard_lcd

I think Antares capabilities are much more apparent in videos.

Alternatively put some screenshots on the front page ๐Ÿ˜‰

Too short circuit input propagation delay when clicked

Circuit inputs can also be toggled by the user with the mouse, if they are part of the top-level circuit. Their default propagation delay of 1 ns is also applied when being clicked by the user. If a circuit input (with attribute "toggle" unset) drives the clock input of a D-flipflop, a very short click/release by the user doesn't trigger the flipflop, because the resulting impulse is too short for the edge detection component of the D-flipflop is implemented in the standard library, especially if the current simulation speed is small.

When being clicked by the user, a circuit input should apply the same propagation delay like a normal switch, something like 1000 ns.

Dark UI theme

The FlafLaf look & feel used by Antares already supports a dark theme. When using a dark Antares theme (such as "CRT"), the UI should also use the dark FlatLaf theme

Improve unexpected error window

Hi @flandreas

Small suggestion for the unexpected error window:
antares-error

It would be helpful if you added something like a "copy error to clipboard" button and added a clickable link to the right bug tracker (I assumed it's this one.)

Hint for other users wanting to report an error: Go to "File/Export Log file". Open the generated zip file and copy the relevant exception (Most likely starting on a line containing "ERROR".

Library folder "Frequently used"

Both built-in libraries "Base" and "Standard" should have a folder containing frequently used components: Input, Output, Switch, LED, NOT, AND, OR.

Rotate ports and pins

In addition to set the orientation of ports (inputs, outputs and input/outputs in the circuit editor) and pins (in the symbol editor), ports and pins can now also be rotated by 90 degrees counterclockwise using the keyboard or the menu item.

Properties not visible with initial settings

When starting Antares the first time with initial settings, the properties panel in the lower left part of the window is not visible, because the library tree takes too much space. This confuses users.

Error when starting simulation

Hi @flandreas

Very nice progress in Antares 0.3.0, congrats!

So I played around with Antares 0.3.0 and following exception occured, when I clicked on the yellow highlighted part of the imported Tannenbaum project (looks very neat btw!):

antares-micro-ex

2021-01-23 09:05:53,161 ERROR [AWT-EventQueue-0] (SourceFile:26) - Unexpected error: null
  java.util.ConcurrentModificationException
	  at java.base/java.util.ArrayList$Itr.checkForComodification(Unknown Source)
	  at java.base/java.util.ArrayList$Itr.next(Unknown Source)
	  at ch.scorpion.jabbah.c.b.a.update(SourceFile:196)
	  at ch.scorpion.antares.view.input.SwitchView.updateLabels(SourceFile:413)
	  at ch.scorpion.antares.view.input.SwitchView.modelExchanged(SourceFile:148)
	  at ch.scorpion.antares.view.input.SwitchView.modelExchanged(SourceFile:59)
	  at ch.scorpion.jabbah.graph.view.AbstractGraphElementView.setModel(SourceFile:41)
	  at ch.scorpion.antares.view.input.SwitchView.bindToModel(SourceFile:321)
	  at ch.scorpion.antares.view.input.SwitchView.bindToModel(SourceFile:59)
	  at ch.scorpion.jabbah.graph.container.ControlViewComponent.bindToGraph(SourceFile:172)
	  at ch.scorpion.jabbah.graph.view.vertice.SubGraphVerticeViewImpl.bind(SourceFile:316)
	  at ch.scorpion.jabbah.graph.view.graph.GraphViewImpl.bind(SourceFile:151)
	  at ch.scorpion.jabbah.graph.g.aE.a(SourceFile:5216)
	  at ch.scorpion.jabbah.graph.g.aU.invoke(SourceFile:1105)
	  at ch.scorpion.jabbah.base.b.a.b(SourceFile:73)
	  at ch.scorpion.jabbah.d.e.o.b(SourceFile:1348)
	  at ch.scorpion.jabbah.graph.g.a.l.invoke(SourceFile:1195)
	  at ch.scorpion.jabbah.base.Q.run(SourceFile:22)
	  at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
	  at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	  at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	  at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	  at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	  at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	  at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	  at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	  at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	  at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	  at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	  at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	  at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

I couldn't reproduce this error and I don't think it's very important. But the dialog told me to report it ;)

Cheers

Reconnect wire to existing wire

The end of a connected wire can be dragged around and be reconnected to another port or left open, but it is currently not possible to reconnect it to an existing wire to producing a junction.

Help menu for online manual

Add a help menu with a menu item "Documentation" that opens the online manual from antarescircuit.io in a browser window.

Wire description and tooltip

Allow the user to set a description attribute on wires, and show it a a tooltip. During simulation, show also the current signal of the wire in the tooltip.

Customizable tunnel symbol

The choice of the Antares tunnel symbol might be questionable. Implement an alternative, more standard-like "arrow" symbol and let the user choose in the preferences which one he wants to use.

Doesn't start in initial environments

Antares 0.3 cannot be started on environments (PCs) where it has never been executed. When starting, it looks for the file "Antares.pref" in the application's home directory and refuses to continue if the file is not found.

Slow clock causes high CPU load

When using a clock at 1 Hz even in a minimal circuit, the CPU load is too high during simulation. This is because the simulation engine is busy polling the simulation queue at a high frequency. Improve the polling strategy by deferring the next polling to the smallest execution time in the simulation queue.

Snapping of graphical component doesn't work

Pure graphical components like rectangles or circle don't perform component-to-component snapping, but just snap at the component's location. Instead, a rectangle should snap at its both sides and at the center, both horizontally and vertically. The reason for the bug is that graphical elements are wrapped by special wrapper when being added to a graph drawing, and this wrapper doesn't correctly forward snapping behavior to the wrapped graphical component.

Descriptions in rectangular components

Rectanguar components like rectangles and circles now have a description property. The description is displayed as a tooltip if the mouse is moved over the displayed text of the rectangle (if there is a text at all). This is primarily useful for rectangles of style "Subsystem", where it can be used to explain a subsystem in more detail.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.