Remove redo; undo rename on a device
Redo is gone in both file and device mode: the Edit menu entry, Ctrl/Cmd+Y and Ctrl/Cmd+Shift+Z, and the redo stack. An undone step is dropped. Undoing past the last save now leaves the saved depth unreachable, so a new edit cannot be mistaken for the saved state. Renames on a device are undoable: LiveRenameCommand renames back on the device first, and warns and clears history if the device refuses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -47,7 +47,7 @@ not inside the window. Tk always hands it to the system menu bar.
|
||||
| `app_state.py` | Preferences, runtime state, widget handles, `mark_dirty`/`mark_clean` | no |
|
||||
| `sax_dom.py` | `meta` bit-packing codec, component path resolution | no |
|
||||
| `schema.py` | Kit manifest loading, slot inheritance, slot visibility rules | no |
|
||||
| `undo.py` | Undo/redo stack of reversible DOM commands | no |
|
||||
| `undo.py` | Undo stack of reversible commands (DOM, and the device in live mode) | no |
|
||||
| `wiresheet.py` | Grid, component boxes, link routing and painting | yes |
|
||||
| `properties.py` | The Properties view: every slot of one component, read and written | yes |
|
||||
| `link_view.py` | The Link View: every link touching one component, drawn around it | yes |
|
||||
@@ -74,7 +74,16 @@ invisible to every other module. Every mutation of "the document changed" goes t
|
||||
(which also removes the `<kit>` entry placing it may have added) and
|
||||
`DeleteComponentCommand` (which restores the removed `<link>` entries at their original
|
||||
indices, reinserting in ascending order so the indices stay valid) and `SlotValueCommand`
|
||||
(one Save from the Properties view, however many slots it changed). Nothing in
|
||||
(one Save from the Properties view, however many slots it changed). There is no redo.
|
||||
|
||||
On a device the same steps are undoable, and each undo is sent there: `undo.py` has
|
||||
live subclasses for moves, slot edits and renames, and `sax_file` has
|
||||
`LiveComponentCommand` and `LiveLinkCommand`. Deleting a component first reads its
|
||||
whole subtree back from the device (config, children, links, place among its
|
||||
siblings), so undo can recreate it; the device hands out new ids, which the DOM
|
||||
elements take on. An undo that does not fully reach the device warns and clears the
|
||||
history, and so does every view change, since opening a sheet rebuilds the DOM from the
|
||||
device. Nothing in
|
||||
`undo.py` touches Tk; `main` registers a refresh callback at startup, which is what keeps
|
||||
`sax_file` and `wiresheet` free to push commands without an import cycle.
|
||||
|
||||
@@ -84,7 +93,6 @@ Undoing back to the depth of the last save clears the dirty tint rather than lea
|
||||
|---|---|
|
||||
| `Ctrl`/`Cmd` + `S` | Save (direct overwrite) |
|
||||
| `Ctrl`/`Cmd` + `Z` | Undo |
|
||||
| `Ctrl`/`Cmd` + `Y` or `Ctrl`/`Cmd` + `Shift` + `Z` | Redo |
|
||||
| `Del` / `Backspace` | Delete selected component |
|
||||
| `Ctrl`/`Cmd` + `B` | Show or hide the tree/palette column |
|
||||
| `Ctrl` + `W` | Tidy Layout: re-flow the open sheet |
|
||||
|
||||
Reference in New Issue
Block a user