Add free-text notes per button/encoder action
Lets you record what a binding actually does (e.g. "Save in Fusion
360") alongside the auto-generated label ("Strg+S"). Notes live in a
new "note" field on every action dict, purely local like profile
names -- the firmware struct has no room for strings, and
pack_config/unpack_config already only touch type/data so the extra
key round-trips harmlessly.
Two things had to be handled carefully: changing a button's key/type
must not wipe its note (all set_button_*/set_encoder_* setters and the
edit dialog now carry the previous note forward), and re-reading from
the board must not erase notes either, since the firmware doesn't know
about them -- versapad_combined.merge_notes() restores them onto the
freshly-fetched state by button/encoder index.
Editable via the Programmiermodus dialog (new text field), visible on
both the desktop card (grown from 84 to 114px to fit it) and the
browser view. MCP server gets set_button_note()/set_encoder_note() so
notes can be set programmatically too.
This commit is contained in:
parent
9f0ae12794
commit
4b5da69174
8 changed files with 173 additions and 41 deletions
|
|
@ -124,7 +124,9 @@ class MacroStepsDialog(_ModalDialog):
|
|||
|
||||
class ActionEditDialog(_ModalDialog):
|
||||
"""Ergebnis in self.action / self.led nach run()==True. led bleibt None
|
||||
wenn led_in None war (Encoder -- keine eigene Farbe)."""
|
||||
wenn led_in None war (Encoder -- keine eigene Farbe). self.action enthaelt
|
||||
immer ein "note"-Feld (freie Notiz, was die Aktion tut -- rein lokal wie
|
||||
Profilnamen, geht nie aufs Board)."""
|
||||
|
||||
def __init__(self, parent, title, action, led, macros):
|
||||
super().__init__(parent, title)
|
||||
|
|
@ -134,8 +136,15 @@ class ActionEditDialog(_ModalDialog):
|
|||
self.led = None
|
||||
|
||||
row = 0
|
||||
note_row = tk.Frame(self, bg=BG2)
|
||||
note_row.grid(row=row, column=0, columnspan=3, sticky="w", padx=12, pady=(12, 4)); row += 1
|
||||
tk.Label(note_row, text="Notiz:", bg=BG2, fg=TEXT_DIM, font=("Segoe UI", 9)).pack(side="left")
|
||||
self._note_var = tk.StringVar(value=action.get("note", ""))
|
||||
tk.Entry(note_row, textvariable=self._note_var, width=36, bg=BG, fg=TEXT,
|
||||
insertbackground=TEXT, relief="flat").pack(side="left", padx=6)
|
||||
|
||||
tk.Label(self, text="Aktion", bg=BG2, fg=TEXT_DIM, font=("Segoe UI", 9, "bold")).grid(
|
||||
row=row, column=0, sticky="w", padx=12, pady=(12, 4)); row += 1
|
||||
row=row, column=0, sticky="w", padx=12, pady=(4, 4)); row += 1
|
||||
|
||||
self._type_var = tk.StringVar(value=action["type"])
|
||||
type_frame = tk.Frame(self, bg=BG2)
|
||||
|
|
@ -320,6 +329,7 @@ class ActionEditDialog(_ModalDialog):
|
|||
else:
|
||||
action = {"type": "None", "data": 0}
|
||||
|
||||
action["note"] = self._note_var.get()
|
||||
self.action = action
|
||||
if self._led is not None:
|
||||
r, g, b = self._led_color
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue