hneemann / Digital

A digital logic designer and circuit simulator.
GNU General Public License v3.0
4.34k stars 439 forks source link

High DPI support could be improved #6

Closed guiweber closed 7 years ago

guiweber commented 7 years ago

On a high DPI screen, the text, icons and buttons are very small and hard to read.

Here is a screenshot of the settings window. The font size used for the title is scaled properly and is easy to read. However everything inside the window is much smaller than it should be and hard to read.

image

hneemann commented 7 years ago

Can you try the assembler application? How does it look like on your display?

guiweber commented 7 years ago

The text in the assembler application is indeed more legible, but still small. However, the icons and the scroll bar are the same size and would benefit from twice as large.

Here is a side by side screenshot: image

Also, here is a side by side screenshot with the Arduino IDE where the text and icons and controls are, in my opinion, scaled to the perfect size on my screen: image

hneemann commented 7 years ago

Could you please try the current digital head revision? How does it look like on your display?

guiweber commented 7 years ago

Sure, but would you mind providing an exe or jar file?

hneemann commented 7 years ago

You can find a pre release version here.

guiweber commented 7 years ago

The font size and icons are now the perfect size. There are still a few minor issues where some items are too small:

hneemann commented 7 years ago

I have fixed the most issues you mentioned. Thank you for your feedback. By the way: Which kind of screen you are using? It seems to me that it has far more then 200dpi.

guiweber commented 7 years ago

Thanks!

My screen is a 15 inches laptop screen with a 4k resolution, which brings it close to 300dpi.

By the way, is there a library for Digital that provides the 74xx series TTL modules? I was checking out Digital as a candidate to replace Logisim for a logical circuit class but we need to have the 74xx series modules available out of the box.

hneemann commented 7 years ago

Are you interested in the logic functions only or in something looking like a 74xx dil IC on the screen, including the real pin positions and so on?

guiweber commented 7 years ago

I'm looking for something with the real pin positions as this really help the students when they get to assemble their physical circuit afterward.

hneemann commented 7 years ago

Did you think of something like this test

or this?

trafic

guiweber commented 7 years ago

Yes, that is exactly what I am looking for!

hneemann commented 7 years ago

I have added a DIL package shape which can be used to represent an embedded circuit. But there are a whole bunch of available circuits and I do not have time to create all of them. And I also do not need this myself, because I use a CPLD in my lab exercises. Which 74xx-ICs do you need for your lab exercises?

hneemann commented 7 years ago

Here is a pre release version including the new DIL features. If you like, you can play around with the new examples.

guiweber commented 7 years ago

Thanks, I'll let you know when I have a chance to take a look, probably next week. Cheers!

guiweber commented 7 years ago

Hi @hneemann

I tested the DIL feature and it would work very well for our needs. Most of the 74xx IC that we need are already there but I could help add the others if any are missing. What is your ETA for a release with this feature?

There is a lot I love in Digital, but there are several usability issues that would still drive me to use Logisim instead. I have noted them below, let me know what you think and if you have questions.

Finally, I found two minor enhancements that could be added while comparing with logisim:

hneemann commented 7 years ago

Hi @guiweber,

thank you again for your feedback.

Our lab classes are currently underway and I do not want to release a new version before these are not finished. I plan to release a new version in two weeks.

Here are my remarks about your comments:

guiweber commented 7 years ago

Thanks for your answer @hneemann I think I have identified a bug that was causing several of the issues I was telling you about. My biggest remaining concern would be with the wire routing system.

Selecting and moving wires

Selecting and moving components

Drawing wire does not work well on my 4k HiDPI monitor for some reason.

Even on my regular monitor, mouse clicks sometimes don't seem to register when selecting a component in the tree view for placement.

Clicking on the connectors of components to attach wires can also be tricky (the click area seems small).

Right clicking on a selected component doesn't open the component's property window.

Selecting a component in Logisim shows the properties of the component under the component tree view, which makes it much faster to change the component's properties.

Short circuits during the simulation generate a pop-up when the short happens, which is very annoying.

Also, Logisim shows the initial circuit state (colored wires) before the simulation starts, which allows identifying issues while designing the circuit.

hneemann commented 7 years ago

Hi @guiweber,

guiweber commented 7 years ago

Moving wires and components I now better understand the design choice that was made regarding wires. As for the CTRL+Click, while it is documented, in my opinion it does not follow the Principle of least astonishment. However, considering that wires lose their connections when moving single wires, I agree with you that it is rarely useful to move a single wire and it doesn't really matter how easy or intuitive it is to move a single wire.

But there may be a balance to strike between the current system and implementing full wire routing. What about making straight wires (that were placed in a vertical or horizontal orientation by the user) remain straight and keep their connections when moving a component with wires or when moving a single wire? This would go a long way in making component movement easier and making the circuit look nice after a component has been moved. It would certainly reduce the number of wires that have to be drawn again after moving a component. Angled wires could keep the same behavior and change angle when moved in relation to a component.

Simulation during component placement There are several use cases. For students, it allows them to see immediately if there is an outstanding issue with the circuit when they add a component (e.g. a short circuit).

Also, it can be useful if you have a large circuit and want to modify/debug something that affects only a single state of the circuit. Logisim allows you to set your circuit in the right state then to make changes and see how it affects the circuit without restarting the simulation and having to re-set your inputs every time.

hneemann commented 7 years ago

Moving wires and components Maybe it is worth to rethink the way wires are drawn and components are moved. Today i experimented with drawing lines always horizontal and vertical and the possibility to switch to diagonal mode if needed. This looks good so far.

Simulation during component placement A input can have a default state which is set, when the model is started. And there is a function "Set Inputs" in the Edit menu which reads the actual state of all inputs in the running model and makes them the new default state. This may help in the latter case.

hneemann commented 7 years ago

Hi @guiweber I have added a undo function. It was simpler than i thought. If you use Digital it would be nice if you could use the HEAD revision to play around with the new functions. If you are not able to build digital from the sources you can use this version.

guiweber commented 7 years ago

Awesome : ) Thanks @hneemann !