Alain Emilia Anna Zscheile
5a26c02b4e
refactor(ApplyGeometryEdit): make 'apply' take 'GeometryEdit' by reference
2024-12-08 16:20:05 +00:00
Alain Emilia Anna Zscheile
27a4b61c4d
refactor(topola): get rid of unnecessary clones and lookups
2024-12-08 16:20:05 +00:00
Mikolaj Wielgus
c87224e99a
docs(router): add and rewrite some navmesh and navcord docstrings
2024-12-07 05:53:39 +01:00
Alain Emilia Anna Zscheile
0fe23c9c71
build: put `specctra` module into separate crate
2024-12-06 14:38:00 +01:00
Alain Emilia Anna Zscheile
3bd6a927b9
refactor(specctra/mesadata): more idiomatic Option handling
2024-12-04 15:39:41 +00:00
Alain Emilia Anna Zscheile
5b7f4588a0
feat(specctra/mesadata): deduplicate net names
2024-12-04 15:39:41 +00:00
Alain Emilia Anna Zscheile
0b9d3c0a00
fix(specctra/design): invalid references shouldn't panic during serialization
2024-12-04 15:39:41 +00:00
Alain Emilia Anna Zscheile
0a862a7e5f
refactor(specctra/structure): get rid of code duplication in Vec<Point>
2024-12-04 15:39:41 +00:00
Alain Emilia Anna Zscheile
da72118255
fix(specctra): return error when point fails to parse first f64
2024-12-04 15:39:41 +00:00
Mikolaj Wielgus
b8adfec817
fix(geometry): fix bend joint order and correct tangent clockwiseness
...
Now bends should cease to seemingly randomly invert their order.
2024-12-04 04:45:39 +01:00
Mikolaj Wielgus
2703f662ac
fix(autorouter): have band removal and via placement in undo/redo
2024-12-03 23:54:18 +01:00
Mikolaj Wielgus
c2daf9fbfe
feat(autorouter): use recorded edit applying for undo/redo
2024-12-03 08:35:11 +01:00
Mikolaj Wielgus
d17a34c0f6
fix(geometry,router,autorouter): some more fixes for edit recording
2024-12-03 00:39:02 +01:00
Alain Emilia Anna Zscheile
5aae676fb8
refactor(specctra/read): put read_quoted into a separate function again
2024-12-02 22:45:32 +01:00
Alain Emilia Anna Zscheile
e493c16053
fix(specctra/read): panic when return_token would override cached token
2024-12-02 22:41:23 +01:00
Alain Emilia Anna Zscheile
9ddc83e72a
feat(specctra/read): separate function to discard peeked char
...
This is useful to get rid of the pattern "self.next_char().unwrap();",
which makes it harder to assess panic safety of parsing code
(which should never panic via its public interface)
2024-12-02 22:41:23 +01:00
Alain Emilia Anna Zscheile
1d0c2cf953
fix(specctra): less (possible) panic!s in read_string
2024-12-02 22:41:23 +01:00
Mikolaj Wielgus
fe8fd3909f
fix(autorouter,router): actually propagate the edit out of route steppers
...
I forgot to do this earlier, and didn't notice because I didn't test
it. There are still a few changes to be done before recording and edit
applying is functional.
2024-12-02 05:56:37 +01:00
Mikolaj Wielgus
0760fb2da3
docs(drawing,router): rephrase docstrings some more
2024-12-02 01:25:45 +01:00
Mikolaj Wielgus
638979364c
docs(drawing): rephrase docstrings
2024-12-01 23:42:40 +01:00
Mikolaj Wielgus
db9d897315
refactor(autorouter): store edits in history entries
2024-11-29 03:45:48 +01:00
Mikolaj Wielgus
66cdf6fe4e
fix(geometry): don't check invariants on R-tree bbox init methods
2024-11-28 06:34:49 +01:00
Mikolaj Wielgus
9b1b135715
feat(board,layout,drawing): implement edit applying interface
2024-11-28 06:17:29 +01:00
Mikolaj Wielgus
847654b5c3
refactor(geometry): move edit application to new trait
2024-11-28 05:36:13 +01:00
Mikolaj Wielgus
a838310ecb
feat(geometry): add interface to apply edits
2024-11-28 05:15:39 +01:00
Mikolaj Wielgus
f17c8ce756
refactor(geometry): split out some initialization from node creation
...
This code will be shared with the routines implementing edit
application, which I will be implementing soon.
2024-11-26 03:06:16 +01:00
Mikolaj Wielgus
1f55e92026
refactor(geometry): move edit code to its own file
2024-11-25 22:42:25 +01:00
Alain Emilia Anna Zscheile
2d1af33204
build: put egui and cli into separate crates
...
* build(ci): try to fix CI
* build: use workspace dependencies for deduplication / drift avoidance
2024-11-20 15:44:02 +01:00
Alain Emilia Anna Zscheile
9dad83d221
fix(contracts,drawing): geometry_with_rtree -> recording_geometry_with_rtree
...
Fixes #105 .
2024-11-20 15:41:22 +01:00
Mikolaj Wielgus
fd22413057
feat(egui): set title to filename of opened DSN file
2024-11-20 00:57:03 +01:00
Mikolaj Wielgus
20e682243d
feat(egui,wasm): set `lang` attribute to current language
2024-11-19 23:14:04 +01:00
Alain Emilia Anna Zscheile
98d237270d
chore: fix cargo fmt
2024-11-16 16:10:54 +01:00
Szpachlarz
c528265f1a
docs(interactor): document activity.rs
2024-11-15 21:55:31 +00:00
Szpachlarz
6f2e6bd70e
docs(interactor): document interactor.rs
2024-11-15 21:55:31 +00:00
hakki
566ce37a6b
invoker: resolves ' https://codeberg.org/topola/topola/pulls/101#issuecomment-2438542 '
2024-11-15 21:55:08 +00:00
hakki
63804a0297
invoker: added trait description
2024-11-15 21:55:08 +00:00
hakki
7a01a76738
docs: resolved https://codeberg.org/fogti notes
2024-11-15 21:55:08 +00:00
hakki
aae99a9656
docs: Invoker initial docs
2024-11-15 21:55:08 +00:00
Alain Emilia Anna Zscheile
ddbaf2abe5
chore: fix cargo fmt
2024-11-15 20:46:29 +01:00
Mikolaj Wielgus
d6fe67a373
feat(board,layout,drawing): implement edit recording
...
Not stored in the undo/redo objects yet.
2024-11-13 00:00:56 +00:00
Mikolaj Wielgus
ad1b43b806
feat(geometry): implement recording geometry changes to edit objects
2024-11-13 00:00:56 +00:00
hakki
c1271e570e
docs: navigation mesh documented
2024-10-29 19:53:47 +01:00
hakki
75d41f983a
docs: add general description
2024-10-29 19:14:33 +01:00
Tomasz Cichoń
509e032dbc
specctra: echo the imported units when exporting
2024-10-28 23:30:10 +01:00
Tomasz Cichoń
77c0fa2272
specctra: various fixes to import
2024-10-27 07:19:12 +01:00
hakki
de0ba42e18
layout: general info about the module
2024-10-22 15:39:27 +00:00
Mikolaj Wielgus
2ef645bbaf
fix(cli,tests): set routed_band_width to 100.0 where I forgot
...
This was making the CLI build and tests fail because my second previous
commit was botched.
For future reference, I fixed the *.cmd files by running the following
in Fish shell:
```
for f in tests/**.cmd
jq ".done?.[].Autoroute[1].router_options.routed_band_width |= 100.0" $f | sponge $f
end
```
2024-10-22 14:58:20 +02:00
Mikolaj Wielgus
7d75f918e7
feat(autorouter): add pointroute execution, which routes to a point
...
Not available as a command (for now?). Hasn't been tested yet.
2024-10-22 00:40:40 +02:00
Mikolaj Wielgus
dc11b5d8ff
feat(egui,autorouter): make it possible to set routed band width
2024-10-21 02:48:04 +02:00
Mikolaj Wielgus
e62bac69ef
refactor(interactor,egui): pass pointer position down to interactions
2024-10-19 02:10:41 +02:00
Mikolaj Wielgus
1638a289ed
fix(egui): rename "Properties" to "Preferences"
...
I managed to conflate these two because both start with "Pr".
2024-10-17 23:41:37 +02:00
Mikolaj Wielgus
ac92623454
refactor(egui): move Properties menu to its own method
2024-10-14 23:24:13 +02:00
Mikolaj Wielgus
941a271339
fix(egui): show language display names instead of codes
2024-10-14 04:26:12 +02:00
Mikolaj Wielgus
4b66e585c5
feat(egui): add radio buttons to choose language
2024-10-14 02:50:05 +02:00
Mikolaj Wielgus
90afd70f2a
refactor(egui): move action definitions to a separate file
2024-10-14 01:34:59 +02:00
Mikolaj Wielgus
894326e3d5
fix(egui): actually impl. F1 keyboard shortcut for opening doc
2024-10-13 22:38:00 +02:00
Mikolaj Wielgus
2bc090b132
feat(egui): add `Help > Online Documentation` menu button
2024-10-13 16:25:04 +02:00
Mikolaj Wielgus
c1df3ba8ad
refactor: move `Interactor<...>` and friends to new module dir, `interactor`
2024-10-12 17:21:34 +02:00
Mikolaj Wielgus
23d1eaa722
refactor: make `Step::step(...)` return `ControlFlow<...>`
...
This is an iteration on what was suggested in
https://codeberg.org/topola/topola/pulls/79 .
This removes the need to create a new status type for steppers that
have only one intermediate state, and removes unidiomatic `TryInto<...>`
usage to determine if a stepper has finished.
2024-10-12 05:38:57 +02:00
Mikolaj Wielgus
a9e42eef17
refactor: make `Step`'s error an associated type
...
This was suggested in https://codeberg.org/topola/topola/pulls/79 .
2024-10-12 05:38:57 +02:00
Mikolaj Wielgus
6104e761d2
refactor: autogenerate getters with `derive-getters` crate
2024-10-11 18:43:15 +02:00
Mikolaj Wielgus
bdc021cb6e
refactor: destruct with `.dissolve()` autogenerated with `derive-getters` crate
...
Introduces `derive-getters` as a dependency.
2024-10-11 16:54:53 +02:00
Mikolaj Wielgus
3766ade270
refactor(egui): report invoker error one outside of `Interactor`
2024-10-11 03:20:36 +02:00
Mikolaj Wielgus
489f55a8b0
refactor(egui): split out some activity code to new module, `interactor`
2024-10-11 02:50:42 +02:00
Mikolaj Wielgus
3e9e3c69c9
refactor(egui): make `ActivityContext` generic over mesadata type
2024-10-11 00:05:40 +02:00
Alain Emilia Anna Zscheile
5c377e805b
general refactor: omit unnecessary clones
2024-10-10 12:21:54 +00:00
Alain Emilia Anna Zscheile
4f40c26bac
chore(autorouter): let ExecutionStepper::step_catch_err take Autorouter as context
2024-10-10 12:21:54 +00:00
Mikolaj Wielgus
8559734336
refactor: rename "trace" to "navcord", "tracer" to "navcorder"
...
Navcord stands for "navigation cord". I try to prefix anything that is
specific to the navmesh with the "nav-" prefix. I chose the word "cord"
as analogy to the terms "umbilical cord" (and by extension, umbilical
cable), and "power cord".
Calling this "trace" was misleading, as this term has other meanings
that are relevant to Topola: "trace" may refer to a debugging trace, and
more importantly, to a PCB track.
I've also shortened two comments that I found to mention the navcord as
"traces" during substitution.
2024-10-10 03:00:27 +02:00
Alain Emilia Anna Zscheile
911c974cfc
fix(egui/MenuBar): temporarily comment out all partial conditional enabled UIs
...
This is workaround for https://github.com/emilk/egui/issues/4774
(and can be reverted once that bug is fixed).
Here, we comment out all `ui.add_enabled_ui(..., |ui| ...);` wrappers
which don't cover whole menus (the bug above should only affect menus
in which only some items are disabled).
2024-10-09 19:43:23 +02:00
Alain Emilia Anna Zscheile
ae66a35b8f
egui: reset activity on error
2024-10-08 19:52:12 +02:00
Alain Emilia Anna Zscheile
e26b1c13ed
feat(egui): also disable activity buttons if some activity hasn't finished yet
2024-10-08 19:52:12 +02:00
Alain Emilia Anna Zscheile
b5c637e68b
egui/MenuBar: grey out workspace-tied commands when no workspace is loaded
2024-10-08 19:52:09 +02:00
Alain Emilia Anna Zscheile
e66fbe292b
egui/Viewport: merge zoom_to_fit part into paint, merge into update method
2024-10-08 13:47:39 +02:00
Alain Emilia Anna Zscheile
1420995492
fix(egui): temporarily move 'Place Via' keyboard flip out of workspace conditional
2024-10-08 13:38:31 +02:00
Alain Emilia Anna Zscheile
49f4063ac4
egui/MenuBar: reduce code duplication for Workspace Activities
2024-10-08 13:38:28 +02:00
Alain Emilia Anna Zscheile
d03e5c63a0
chore(egui): get rid of unused imports
2024-10-08 13:37:16 +02:00
Alain Emilia Anna Zscheile
bff11a5617
egui/Workspace: get rid of unnecessary Arc<Mutex<...>>
2024-10-08 13:33:49 +02:00
Alain Emilia Anna Zscheile
fd9bd439a7
egui/MenuBar: swap order of condition checking (check maybe_workspace first)
2024-10-08 13:32:19 +02:00
Alain Emilia Anna Zscheile
69f2ce3c2e
egui: add structure Workspace for two-phase workflow
2024-10-08 13:32:17 +02:00
Mikolaj Wielgus
f02b7be878
style(egui): update to match locale string tags
2024-10-08 04:49:43 +02:00
Alain Emilia Anna Zscheile
d0058ef5fd
router: get rid of unnecessary RouterError
2024-10-06 00:22:32 +02:00
Alain Emilia Anna Zscheile
01deaa4b12
build(contracts): use contracts-try v0.7 from crates.io
...
`contracts-try` is now developed at
https://codeberg.org/topola/contracts-try and was extracted
from this repo, and rebased upon the original
crate sources to ensure proper attribution.
This removes the `vendored` directory.
2024-10-06 00:18:56 +02:00
Alain Emilia Anna Zscheile
6f237077e3
fix(egui/MenuBar): fix deprecation warning about theme buttons
...
warning: use of deprecated function `egui::global_dark_light_mode_buttons`: Use global_theme_preference_buttons instead
--> src/bin/topola-egui/menu_bar.rs:242:36
|
242 | egui::widgets::global_dark_light_mode_buttons(ui);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(deprecated)]` on by default
2024-10-05 23:56:48 +02:00
Alain Emilia Anna Zscheile
04ab1ce69b
router: TraceStepper is not a real stepper
...
Contributes towards solving #82 properly later.
2024-10-05 23:14:17 +02:00
Mikolaj Wielgus
74ef5e356f
refactor(egui): add empty skeleton for interactions
2024-10-05 03:56:21 +02:00
Mikolaj Wielgus
a9b72334f7
refactor(egui): wrap `Invoker<...>` inside new `ActivityContext`
2024-10-04 22:43:17 +02:00
Mikolaj Wielgus
8b9d4074e4
chore: perform forgotten rename of `command.rs` to `execution.rs`
2024-10-04 22:00:40 +02:00
hakki
5f6045a758
Board: added docs
2024-10-04 20:23:06 +02:00
Alain Emilia Anna Zscheile
68d4589e81
egui: run cargo fmt
2024-10-04 02:16:45 +02:00
Alain Emilia Anna Zscheile
ee9ccf5fd6
egui/ErrorDialog: fix spurious renames
2024-10-04 02:13:30 +02:00
Alain Emilia Anna Zscheile
d24acb601b
egui: get rid of FileHandlerData
2024-10-04 02:11:19 +02:00
Alain Emilia Anna Zscheile
4fef94a5c5
egui: get rid of overabstraction file_handler::push_file_to_read
2024-10-04 02:11:19 +02:00
Alain Emilia Anna Zscheile
25a692aab9
egui/file_handler: run parsing in file loader thread
...
- also embed I/O errors with other errors
2024-10-04 02:11:17 +02:00
Alain Emilia Anna Zscheile
1a46504dd5
egui: replace FileSender/FileReceiver with FileHandler
2024-10-04 02:09:29 +02:00
Mikolaj Wielgus
f21808776e
egui: give more systematic names to translatable strings
...
The names are now based on where the strings are used in the GUI. This
will hopefully make it easier for translators to locate where they are
in the user interface.
I've prefixed all translatable string names with "tr-" to prevent
accidentally substitute unrelated strings in a mass replace.
Once I push this commit, I will also protect `locales/**`, so that
all future changes to strings pass a PR review process to reduce the
probability of errors. This will also make it easier to have a freeze
for translatable strings if we end up having a release schedule in the
future.
2024-10-03 20:26:38 +02:00
Alain Emilia Anna Zscheile
24f0a1c699
feat(egui): add utility method Overlay::take_selection
2024-10-03 17:03:27 +02:00
Alain Emilia Anna Zscheile
af312a8a13
chore(egui): fix warnings about unused result of Option::insert
2024-10-03 17:02:10 +02:00
Alain Emilia Anna Zscheile
5319e1f976
chore: run cargo fmt to fix lint errors
2024-10-03 16:56:09 +02:00
Alain Emilia Anna Zscheile
fa81cd360a
egui: get rid of unnecessary persistence of langid, separate into Config struct
2024-10-03 13:37:52 +02:00
hakki
2f672d41c2
Autorouter: general modules descriptions ( #65 )
...
This PR consists of general modules descriptions as well as initial `autoroute.rs` docs
Reviewed-on: https://codeberg.org/topola/topola/pulls/65
Co-authored-by: hakki <hakki@noreply.codeberg.org>
Co-committed-by: hakki <hakki@noreply.codeberg.org>
2024-10-02 22:46:32 +00:00
Tomasz Cichoń
c9509d8336
egui: fix remaining compile error
2024-10-02 17:31:09 +02:00
Tomasz Cichoń
cbe9d8fc1c
egui: update main to compile with eframe 0.29
...
These lines are basically copied from eframe_template, as before.
2024-10-02 17:30:27 +02:00
Tomasz Cichoń
1ade5a25d2
egui: add more layer names colors are assigned to in GUI
2024-10-02 11:31:10 +02:00
Tomasz Cichoń
336cea11e8
specctra, specctra_derive: rewrite logic inspecting macro attributes
...
This allows parsing more complicated attribute syntax, here needed to
specify multiple names for a `Vec` field.
2024-10-02 11:29:16 +02:00
Mikolaj Wielgus
9159312ea5
egui: add button and key to abort execution
...
It actually finishes execution, as I haven't implemented actual aborting
yet.
2024-10-02 02:32:06 +02:00
Mikolaj Wielgus
bfcae7f308
egui: change "squeeze under" to "squeeze through under"
...
It's about pushing through a constrained space, not about squeezing
per se. I'm not using the word "push" because this term will probably be
restricted to a mechanism that is very different internally.
2024-10-02 01:12:46 +02:00
Alain Emilia Anna Zscheile
697b637205
chore: fix clippy error by temporarily allowing it
2024-10-01 23:39:36 +02:00
Alain Emilia Anna Zscheile
161fa002c1
chore(egui): fix rust warnings
2024-10-01 20:50:38 +00:00
Alain Emilia Anna Zscheile
5e3ccf2560
chore: cargo fmt
2024-10-01 20:50:38 +00:00
Alain Emilia Anna Zscheile
f653a96eb0
chore: trivial fixes of clippy warnings
2024-10-01 20:50:38 +00:00
Mikolaj Wielgus
e08a59cd74
stepper: add `Abort` trait to abort steppers
2024-10-01 19:07:40 +02:00
Mikolaj Wielgus
5448474857
terminology: distinguish between "command" and its "execution"
2024-10-01 16:01:11 +02:00
Mikolaj Wielgus
cc0bf1845a
terminology: suffix some single-verb object type names with "Stepper"
2024-10-01 14:27:57 +02:00
Alain Emilia Anna Zscheile
632bfb7b63
chore: fix unused mutablility/variables
2024-10-01 09:58:06 +02:00
Alain Emilia Anna Zscheile
1a6340c6f1
chore: remove unused imports
2024-10-01 09:54:46 +02:00
Mikolaj Wielgus
8a1bc9e3b1
egui: commit forgotten files
2024-10-01 05:45:23 +02:00
Mikolaj Wielgus
001e4bcdcf
egui: rename "top" and "bottom" to "menu bar" and "status bar"
...
These are more recognizable terms.
2024-10-01 05:36:25 +02:00
Alain Emilia Anna Zscheile
f4d7d5a5a5
egui: log errors
2024-09-30 22:33:45 +02:00
Alain Emilia Anna Zscheile
82574d2976
egui: add error messages dialog
2024-09-30 22:33:23 +02:00
Alain Emilia Anna Zscheile
b738a425e4
specctra/read: don't repeat character retrieval code
2024-09-30 19:24:27 +00:00
Alain Emilia Anna Zscheile
1ec85552bb
Cargo.toml: reduce dependencies of CLI, WASM
2024-09-30 18:53:12 +02:00
Alain Emilia Anna Zscheile
507ca01bfc
Cargo.toml: get rid of unnecessary dependencies
2024-09-30 18:46:19 +02:00
Mikolaj Wielgus
169e843736
egui: further make an `Activity` enum with error and status types
2024-09-30 03:40:53 +02:00
Mikolaj Wielgus
c8a40860af
egui: s/ExecuteWithStatus/ActivityWithStatus, move it to own file
2024-09-30 01:36:22 +02:00
Alain Emilia Anna Zscheile
a700bd8c20
egui/layers: remove unnecessary TryInto usage
2024-09-29 23:18:40 +02:00
Alain Emilia Anna Zscheile
ea8c525e1f
egui/top: get rid of unnecessary .clone()s
2024-09-29 23:18:40 +02:00
Alain Emilia Anna Zscheile
e6eae238be
egui: fix action-quit key (Ctrl+V -> more intuitive Ctrl+Q)
2024-09-29 23:18:40 +02:00
hakki
8a12ce350c
SpecctraDocs: added ommited Module descriptions
2024-09-29 19:22:05 +00:00
Mikolaj Wielgus
41f01c780f
cli: fix build error due to wrong import path
2024-09-29 16:18:54 +02:00
Mikolaj Wielgus
592c168742
egui: show unit (s) in frame timestep's slider
2024-09-29 03:55:59 +02:00
Mikolaj Wielgus
96af3bcd7f
egui: add frame timestep slider
2024-09-29 03:17:14 +02:00
Mikolaj Wielgus
1c7042c8c3
autorouter: move `Execute` and `ExecuteWithStatus` to own file
2024-09-29 03:17:07 +02:00
Tomasz Cichoń
eb0f45e3fb
specctra: don't use imported layer indices internally
...
We don't need to re-export them, so using them only makes the logic more
brittle.
2024-09-29 01:12:12 +02:00
Tomasz Cichoń
947ecf2e1c
specctra: clean up the hack related to layer import
2024-09-29 00:04:18 +02:00
Tomasz Cichoń
479791ea02
Merge branch 'develop' of https://codeberg.org/topola/topola into develop
2024-09-28 22:11:09 +02:00
Mikolaj Wielgus
55be63b942
egui: remove long-superseded `channel_text()` routine
2024-09-28 21:39:22 +02:00
Alain Emilia Anna Zscheile
12f43a112e
specctra/design: get rid of unnecessary re-inserts of bimap entries
...
This code should've been redundant since introduction of bimap usage for
layer<->layername and net<->netname lookup.
2024-09-28 13:29:54 +02:00
Alain Emilia Anna Zscheile
60d9880ab2
specctra/design: remove code duplication at padstack lookup
2024-09-28 13:29:54 +02:00
Alain Emilia Anna Zscheile
cd12775f46
specctra/design: refactor Self::layer calls to avoid repetition
2024-09-28 13:29:54 +02:00
Alain Emilia Anna Zscheile
dc4ce2fbc7
math, spectra: factor out PointWithRotation
2024-09-28 13:29:47 +02:00
Tomasz Cichoń
dfb2c20f1d
specctra: a hack to attempt loading layers from EasyEDA
2024-09-28 11:16:47 +02:00
Tomasz Cichoń
479646d503
specctra: propagate line/column info to returned error type
2024-09-28 10:04:47 +02:00
Tomasz Cichoń
b7027ae603
specctra: changes for compatibility with EasyEDA
2024-09-28 07:22:26 +02:00
Tomasz Cichoń
2a0b6464ae
specctra: ignore case of list heads while parsing
2024-09-28 04:37:34 +02:00
Alain Emilia Anna Zscheile
c42eab0126
vendored/contracts: fix overly verbose type annotations for enum results
...
This fixes issue #15 .
2024-09-28 00:38:16 +02:00
hakki
ee9f4b5566
Write Specctra module documentation for Topola's library API ( #34 )
...
Reviewed-on: https://codeberg.org/topola/topola/pulls/34
Co-authored-by: hakki <hakki@noreply.codeberg.org>
Co-committed-by: hakki <hakki@noreply.codeberg.org>
2024-09-27 10:29:23 +00:00
Mikolaj Wielgus
e1b56875ed
egui: base web app on newer version of official eframe template
2024-09-17 01:52:19 +02:00
Mikolaj Wielgus
be03f190a0
egui: replace erroneous `.unwrap()` with try expression
2024-09-17 00:38:05 +02:00
Szpachlarz
a2b8550c12
egui: fix wasm32 build errors
2024-09-16 00:39:10 +02:00
Mikolaj Wielgus
92f82ff332
egui: give 20% margin from each side when zooming to fit
2024-09-15 12:22:37 +02:00
Mikolaj Wielgus
a31bb43791
egui: zoom to fit every time new board is loaded
2024-09-14 16:23:40 +02:00
Mikolaj Wielgus
86b583e6c9
egui: add option to hide layer manager
2024-09-11 21:47:44 +02:00
Mikolaj Wielgus
0239a49c73
egui: implement zooming to fit
2024-09-11 16:03:18 +02:00
Mikolaj Wielgus
89717f2b6e
egui: show root bbox
...
Helpful for debugging geometrical transformations.
2024-09-11 13:38:50 +02:00
Mikolaj Wielgus
8c671e5a2c
egui: allocate whole available height for canvas
2024-09-10 22:54:44 +02:00
Mikolaj Wielgus
0cdec86900
cli: fix build error due to lack of CLI build testing
2024-09-10 17:21:19 +02:00
Mikolaj Wielgus
d4079ef077
cargo: bump egui/eframe version from 0.26.0 to 0.28.1
2024-09-10 17:04:15 +02:00
Mikolaj Wielgus
cf52c95113
egui: arrange the menus more typically
2024-09-09 15:25:40 +02:00
Mikolaj Wielgus
4b6e3e0a5c
egui,router: add option to toggle squeezing
2024-09-01 01:24:52 +02:00
Mikolaj Wielgus
0b7e5f1b9b
egui,autorouter,router: add option to toggle wrapping around bands
2024-08-31 14:12:38 +02:00
Mikolaj Wielgus
4d0c38664e
router: have a binavvertex on each bend
2024-08-31 01:37:27 +02:00
Mikolaj Wielgus
59f88e854c
egui: expose autorouter options in the GUI
2024-08-31 00:49:40 +02:00
Mikolaj Wielgus
a52515f6d3
autorouter: add option to disable presorting by pairwise detours
2024-08-30 23:11:25 +02:00
Mikolaj Wielgus
f7f2e8ea49
autorouter: if band removal fails, propagate error instead of panicking
2024-08-30 16:32:37 +02:00
Mikolaj Wielgus
2105e8c7cf
drawing: rename "rails" and "wraparoundables" to "gears"
2024-08-29 05:24:05 +02:00
Mikolaj Wielgus
994b9e8e9b
navmesh: some rearrangements in preparation for interactive routing
2024-08-29 02:04:27 +02:00
Mikolaj Wielgus
72e630543d
autorouter: if unable to route to compare detours, assume equal
2024-08-26 01:33:18 +02:00
Hakki
817fd5e57f
cli: add help/manpages ( #29 )
...
Fixes https://codeberg.org/topola/topola/issues/24
Reviewed on https://codeberg.org/topola/topola/pulls/29
Co-authored-by: Hakki <hakki@noreply.codeberg.org>
Co-committed-by: Hakki <hakki@noreply.codeberg.org>
2024-08-25 20:18:16 +00:00
Mikolaj Wielgus
63d3e345aa
egui,autorouter: add action and command to measure length of bands
2024-08-23 04:14:06 +02:00
Mikolaj Wielgus
4e37f5715b
egui: source GUI strings from Fluent files
2024-08-11 00:13:30 +02:00
Mikolaj Wielgus
0257568410
egui: load locale language on startup
2024-08-08 17:12:04 +02:00
Mikolaj Wielgus
41bd60ea59
cli: fix compile errors
2024-08-08 11:28:44 +02:00
Mikolaj Wielgus
a04caeae9c
translation: upload placeholder Fluent files to test Weblate
2024-08-07 20:53:55 +02:00
Mikolaj Wielgus
deb2fffbf1
autorouter: show whole detour compare animation
2024-08-06 21:29:23 +02:00
Mikolaj Wielgus
c9d99c2c1f
autorouter: sort by pairwise total detour lengths before autorouting
2024-08-06 15:43:25 +02:00
Mikolaj Wielgus
33206567e3
egui,autorouter: display message once command completes
2024-08-06 02:34:54 +02:00
Mikolaj Wielgus
c12eea5b4d
autorouter: don't crash after comparing detours
2024-08-05 23:05:10 +02:00
Mikolaj Wielgus
47d8e82344
egui,autorouter: make detour comparison invokable from GUI
2024-08-05 13:14:56 +02:00
Mikolaj Wielgus
b2c9305cea
autorouter: add new compare command to be used for sorting later
2024-08-05 04:33:51 +02:00
Mikolaj Wielgus
43b48e78e3
router: use `Step` trait for `Astar` too
2024-08-04 18:50:58 +02:00
Mikolaj Wielgus
ece9c4aa5a
autorouter,router: put stepper finishing in `Step` trait too
2024-08-04 16:36:11 +02:00
Mikolaj Wielgus
7830806834
router: use `Step` and new `StepBack` traits in `Route` and `Trace`
2024-08-03 19:17:00 +02:00
Mikolaj Wielgus
1305487c7f
autorouter: use new `Step` trait for stepping
2024-08-03 16:40:04 +02:00
Mikolaj Wielgus
5b32797022
autorouter: return a different status every time routing a band finishes
2024-08-01 12:56:24 +02:00
Mikolaj Wielgus
fcffb76de4
autorouter: create new command: Remove Selected Bands
2024-07-25 01:46:54 +02:00
Mikolaj Wielgus
b568f2d790
autorouter: split selection into pin selection and band selection
2024-07-24 14:59:28 +02:00
Mikolaj Wielgus
3bf4d2cdb1
autorouter,board: use both band uids and band termsegs
2024-07-24 02:27:11 +02:00
Mikolaj Wielgus
f7126dfa33
egui,autorouter: implement selecting bands
2024-07-23 13:36:57 +02:00
Mikolaj Wielgus
5da6ec4463
drawing: create methods for obtaining UIDs for bands
2024-07-23 02:03:55 +02:00
Mikolaj Wielgus
95c1c0b8b9
drawing: use shared band traversal code
2024-07-23 00:02:20 +02:00
Mikolaj Wielgus
61babd179a
egui: fix selection of polys and vias
2024-07-22 11:10:52 +02:00
Mikolaj Wielgus
ca27804c64
drawing: move band length measurement to new band refobject
2024-07-21 16:45:36 +02:00
Mikolaj Wielgus
57c970e22e
drawing: obtain `HeadRef` via new trait for abstract reference objects
2024-07-21 14:49:43 +02:00
Mikolaj Wielgus
0552dd3f33
egui: put debug visualization checkboxes in a dropdown menu
2024-07-21 13:59:08 +02:00
Mikolaj Wielgus
a644ac276b
egui: add widget to control showing bboxes
2024-07-19 23:11:38 +02:00
Mikolaj Wielgus
c17c004aae
cli: hard-code routing only the first layer by default
...
A temporary measure before we provide better layer control and prevent
duplication of routes.
2024-07-16 20:39:19 +02:00
Mikolaj Wielgus
a9f42e1d8f
cli: by default, assume output filename is input's with .ses extension
2024-07-16 20:33:40 +02:00
Mikolaj Wielgus
87fd5d5d05
cli: make command file argument named and optional
2024-07-16 15:45:42 +02:00
Mikolaj Wielgus
ace5709e5d
cleanup: `cargo fix`, `cargo fmt` to reduce number of error messages
2024-07-15 13:14:17 +02:00
Mikolaj Wielgus
b0068c5f09
cli: rename the CLI binary to from `topola-cli` to shorter `topola`
2024-07-15 12:02:17 +02:00
Mikolaj Wielgus
cd6c9fbe76
sdl2-bench: remove the SDL2 bench (aka. SDL2 demo) entirely
...
First, from now on I'm going to call the "SDL2 demo" the "SDL2 bench",
as a demo is software that exists to demonstrate, whereas its purpose
lately has been only fast prototyping, as we switched to make all demo
animations in the Egui port anyway.
Second, I'm removing the SDL2 bench anyway as it's a maintenance burden
that lost its utility. It's also affected by a bug in Pathfinder that
makes it impossible to zoom beyond a certain threshold which would
require someone to dig into Pathfinder's codebase, a task I don't think
anyone is interested in.
2024-07-15 01:31:45 +02:00
Szpachlarz
f72eac2636
Add: --help and --version commands
2024-07-13 15:09:45 +02:00
Szpachlarz
8d2db0a0dc
cli: implement SES export
2024-07-13 14:48:38 +02:00
Tomasz Cichoń
9e2a0acab0
specctra: add export of bends (downgraded to line segment chains)
2024-07-12 15:14:15 +02:00
Tomasz Cichoń
e28b7f7f9d
geometry, egui: fixes and cleanup of math related to bend shapes
2024-07-12 12:01:21 +02:00
Tomasz Cichoń
8c3a3f1e72
specctra, egui: add menu option for specctra session export
2024-07-10 17:17:26 +02:00
Mikolaj Wielgus
be9ff3a85a
layout: rename "zone" to "poly"
...
We'll keep the term "zone" for higher-level concepts.
2024-07-09 23:09:39 +02:00
Mikolaj Wielgus
71a2a3ebbf
sdl2-demo: fix compilation errors
2024-07-09 19:53:52 +02:00
Mikolaj Wielgus
3fd31746af
drawing: make not having infringables the default when adding canes
...
The previous commit only did it for inserted canes.
2024-07-09 18:56:34 +02:00
Mikolaj Wielgus
1c07eb96ac
drawing: for now, make adding canes have no infringables
2024-07-09 17:01:29 +02:00
Mikolaj Wielgus
c34cd730c5
egui: add keyboard shortcuts and basic action abstraction
2024-07-09 13:10:02 +02:00
Mikolaj Wielgus
c36ccc287a
autorouter: improve error handling by removing some unwraps
2024-07-08 13:25:58 +02:00
Mikolaj Wielgus
f4054783d1
cleanup: remove committed output file and commented-out code
2024-07-08 02:06:55 +02:00
Mikolaj Wielgus
b9a99237a1
egui: clear selection when routing is initiated
2024-07-08 02:01:17 +02:00
Szpachlarz
e706134ed0
cli: create basic cli application
...
it is possible to load design and history,
not yet possible to export results.
2024-07-07 12:05:53 +02:00
Mikolaj Wielgus
2368feded1
egui: fix saving history files
2024-07-06 15:02:59 +02:00
Mikolaj Wielgus
3a7e504c29
egui: implement loading history in WASM
2024-07-06 00:08:35 +02:00
Mikolaj Wielgus
0745604658
egui: put sender and receiver in wrapper objects
2024-07-05 18:02:54 +02:00
Mikolaj Wielgus
e9ba5cd9b3
specctra: move file opening code outside, operate on `BufRead` instead
2024-07-04 23:55:58 +02:00
Mikolaj Wielgus
fd23be7a8a
router: step on successful probes
2024-07-04 13:52:26 +02:00
Mikolaj Wielgus
b48ce70aad
egui: add timer to control update frequency
2024-07-04 01:02:40 +02:00
Mikolaj Wielgus
def3f84d6a
egui,autorouter,router: highlight current obstacle
2024-07-04 00:39:08 +02:00
Mikolaj Wielgus
b6cb89c017
egui,autorouter,router: display infringement shapes (aka. "ghosts")
2024-07-03 21:00:50 +02:00
Mikolaj Wielgus
727eb37c6e
router: have probing and visiting as separate states
...
This feels overengineered, but I need something like this for better
debuginfo.
2024-07-03 18:12:07 +02:00
Mikolaj Wielgus
806742736a
cleanup: get rid of `*Trait` names for traits, use verbs and sentences
2024-07-03 13:40:37 +02:00
Mikolaj Wielgus
b1f60847b3
drawing: move head length measurement methods to new refstruct
2024-07-03 03:37:14 +02:00
Mikolaj Wielgus
3c03b2dfa1
geometry: create `MeasureLength` trait to measure lengths
2024-07-02 23:33:29 +02:00
Mikolaj Wielgus
27d1c9e712
router: step on every probe, not only navvertices
2024-07-02 02:36:42 +02:00
Mikolaj Wielgus
3c578ccada
egui: display both CW and CCW navvertices separately
2024-07-01 21:21:08 +02:00
Mikolaj Wielgus
47c888d21b
egui,autorouter,router: restore highlighting active navmesh edges
2024-07-01 18:56:41 +02:00
Mikolaj Wielgus
03f996721d
egui: restore drawing yellow dots at routing source and target
2024-07-01 14:09:17 +02:00
Mikolaj Wielgus
edf81feccc
egui: restore highlighting selected node shapes
2024-07-01 12:12:27 +02:00
Mikolaj Wielgus
2259a75d92
egui,autorouter: restore displaying navmesh
2024-07-01 00:50:24 +02:00
Mikolaj Wielgus
ee6eeac6d8
egui: step through every band routing step, once per frame
...
At last! We finally have that implemented without concurrency.
2024-06-29 22:40:06 +02:00
Mikolaj Wielgus
6cadcd3b41
egui: remove most of usages of shared-state parallelism
2024-06-29 17:11:29 +02:00
Mikolaj Wielgus
fd5a95103d
autorouter: step through every band routing step, not merely over bands
2024-06-29 03:07:20 +02:00
Mikolaj Wielgus
ea991314b2
board: remove `.remove_band()` method
2024-06-28 19:35:25 +02:00
Mikolaj Wielgus
00b997b60e
egui: fix compilation error -- import `Trace` from trace, not tracer
2024-06-28 17:15:52 +02:00
Mikolaj Wielgus
da1438195a
router: create new `Router` object, a wrapper over `Layout`
2024-06-28 14:46:15 +02:00
Mikolaj Wielgus
244367c4d7
router: rename `Router` to `Route`
...
`Router`, soon to be written, will be a wrapper over `Board`.
2024-06-28 01:12:37 +02:00
Mikolaj Wielgus
4fa97509e4
router: split out `Trace` to its own file and give it its own methods
...
We'll be following this pattern:
* `Autorouter` - `Autoroute`,
* `Router` - `Route` (not yet done),
* `Tracer` - `Trace`.
Agent nouns (ending with -er) denote the object that holds large and
"unportable" parts of the state (such as `Board`, `Layout`, `Drawing`,
`Geometry`), while verbs (ending with -e) denote holders of other, more
"portable" parts of the state.
2024-06-27 23:58:02 +02:00
Mikolaj Wielgus
664bbee0b9
router: make `Astar` own the navmesh
2024-06-27 21:24:49 +02:00
Mikolaj Wielgus
0b3ebdbe3c
router: make it possible for `Astar` to own its graph
...
We aren't using this yet however because it requires a substantial
rearrangement of `Router`'s code.
2024-06-27 15:07:58 +02:00
Mikolaj Wielgus
0419904b3f
router: re-encapsulate graph in `Navmesh` and vertices in `VertexIndex`
...
As in previous commit, this was done in the past, but I removed it when
improving `Navmesh` to hold each navvertex instead of calculating tem
during access.
2024-06-26 22:34:59 +02:00
Mikolaj Wielgus
5254f768e5
router: implement (again) graph traversal traits for `Navmesh`
...
These were implemented in the past, but I removed it when I made
`Navmesh` store each navvertex instead of calculating tem on the fly.
2024-06-26 20:27:29 +02:00
Mikolaj Wielgus
114329a1ef
router: don't store `&'a mut Layout` in `Router`
...
First step towards removing multithreading in code in favor of stepping
over the routing process.
2024-06-26 13:39:57 +02:00
Mikolaj Wielgus
43d84dc29e
router: restore calculation of probe length (was temp. hardcoded to 0.0)
2024-06-26 00:47:16 +02:00
Mikolaj Wielgus
3fe305b99a
sdl2-demo: fix compilation errors
2024-06-25 15:31:21 +02:00
Mikolaj Wielgus
b6cfcc8518
router: don't panic if wraparound navvertex has no cw
...
This may happen if target's guidecircle is in line of sight but its
center is not.
2024-06-25 15:00:15 +02:00
Mikolaj Wielgus
3ce8cfcabc
autorouter: fix redo operation
...
Redone operation was only dispatched, not truly executed.
2024-06-25 11:20:59 +02:00