-
-
Notifications
You must be signed in to change notification settings - Fork 141
New schematic machinery and removal of Q3PtrList #1266
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
I confirm that the markers and label jump are fixed after the recent commits. I have encountered a crash when deleting a fragment in the complex schematic, but I cannot catch it anymore. Probably the recent commits has fixes this problem too. I will report if I find conditions to reproduce. Nevertheless, the new schematic editor is almost ready. I am planning to merge this PR soon. Don't forget to put an indicator of the wiring more (orthogonal/diagonal) on the status bar at the bottom of main window. |
Just to clarify the things: these are not modes, but different ways to connect two points offered by wire planners. Wire planners take two points (e.g. A and B) as input and return a sequence of points which when connected one by one establish a wired connection between A and B. So it's possible to have a wire planner which offers V-shaped, П-shaped, etc. connection between two input points. Diagonal wires are just result of work of the simplest wire planner 🙂
I'm okay with the idea, but what's the purpose of it? I mean when a wire is being created its form is visible on the screen… What use case I don't get?
What about the settings like Just in case, here are descriptions:
|
The idea is to give user a hint to press RMB to change the wiring. The caption may be like Orthogonal: press RMB to switch to diagonal
The |
Got it! Somethings like this? wiring-mode-hint.mov |
Yes, this would be acceptable. |
|
I have found a bugs with export schematic to graphic files.
Here is the test schematic: |
|
That's probably due to broken diagrams' bounding ("zoom to selected" is also affected). I'll look into it 🤝 |
|
The problem with diagram export has been fixed by the recent commits. |
|
I am merging this PR. The remaining things may be fixed in a separate patches. @wawuwo , Please stay connected. Some feedback may appear after the users will test the continuous build. |
|
By the way, when do you plan to freeze before 25.2.0? |
|
The earliest possible release date for v25.2.0 is end of July. The latest is September. Everything should be ready by the July. We have plenty of time to implement remaining things. |
- remove macros isHWireLabel, isHMovingLabel, etc. - always use 'isLabel' type for labels Some of the removed macros, such as isHMovingLabel are pre-ra3xdh#1266 legacy and are no longer in use. The distinction between HWireLabel and VWireLabel is relevant only during painting a label and can be inferred directly from the host wire of the label. No need to keep dedicated label types for that. Node and wire labels can be distinguished via their respective host elements, accessible through "owner()".
- remove macros isHWireLabel, isHMovingLabel, etc. - always use 'isLabel' type for labels Some of the removed macros, such as isHMovingLabel are pre-ra3xdh#1266 legacy and are no longer in use. The distinction between HWireLabel and VWireLabel is relevant only during painting a label and can be inferred directly from the host wire of the label. No need to keep dedicated label types for that. Node and wire labels can be distinguished via their respective host elements, accessible through "owner()".
Hi!
In short: this is a big rework of schematic engine which defines the way all mutations (moving, mirroring, etc.) are performed.
I've been working on this for several months (don't mind the commit history, I've rewritten it). Multiple turned-out-to-be-unpromising approaches, dead branches, dozens of cherry-picks and rebases, a lot of consumed brain fuel and finally it's seems to be if not completely done but at least working. Of course some code is kind of "crude", "dirty" and suboptimal, I hope to polish it eventually.
Internally it's a complete rework the greatest feature of which is no dependency on any of Q3PtrList-specific features. So it's another step towards replacing Q3PtrList with something modern.
From the users' side this PR offers several new features:
non-orthogonal wires
https://github.com/user-attachments/assets/62d25721-6812-4405-926c-b8778874e992
non-destructive mutations (connected elements remain connected after rotating, mirroring etc.)
https://github.com/user-attachments/assets/d9d24c8a-5e08-4db8-95a0-350509d571fc
https://github.com/user-attachments/assets/648ffc94-d698-4d4f-80e8-dfa6e9c00b3e
selection of form of reconnecting-wires while moving elements
https://github.com/user-attachments/assets/be42e7da-b030-438e-8eb9-0227248e9bc3
It also possible that this PR fixes some bugs related to schematic mutations.
The bad part is that I had rewrite a lot of code in order to make different parts work like a single coherent system. A lot of opportunities to break something. Also, this PR migrates the build to C++20 which might be a breaking change.
Anyway, I'd like to get some feedback. I did a little testing on my own, but it cannot be reasonably compared to a real "battle-test". There can be bugs or new behaviour may seem unusual or even off-putting. This is an early-preview version, there is inevitably something to fix and adjust.
In short, these issues have to be addressed: