v0.4.8: seven UX fixes for the BAL inheritance plugin

- #04: Raw/Date selector now reappears on the WILL/HEIR tabs when switching to
  ADVANCED (and when a raw value is pushed from the wizard), keeping the current
  value/editor. New BalTimeEditWidget.apply_user_type_visibility() wired into
  WillSettingsWidget for both the locktime and check-alive boxes.
- #3: Building Will report window minimum height 500 -> 450 px.
- #5: 'User Type' setting moved to the bottom, above 'Rebroadcast transactions'.
- #6: enabling ADVANCED now requires typing 'at My Risk' (case-insensitive);
  wrong phrase or cancel reverts to BASIC. QInputDialog added to common import.
- #7a: on CHECK with an emptied wallet, an extra reassuring line is shown on
  'Checking your will': 'Inheritance already executed (on blockchain)' in GREEN
  (CONFIRMED) or 'Inheritance in mempool (waiting confirmation)' in ORANGE
  (MEMPOOL). New _executed_inheritance_status() helper.
- #7b: 'Balance is too low, or CheckAlive is in the past. Skipped' (space added)
  recoloured to ORANGE instead of red.
- Reset button renamed 'Reset setting' -> 'Reset to Default Setting'.
- Added tests/test_group_h_v048.py (8 tests). Version 0.4.7 -> 0.4.8.
  Full suite: 266 passed; ruff clean; CHANGELOG #24; memory updated (#04 done).
This commit is contained in:
2026-06-28 23:02:40 -04:00
parent 0f2b3a4146
commit 33e8a7533d
11 changed files with 425 additions and 38 deletions

View File

@@ -355,6 +355,41 @@ the label) would also fix TASK #03. Keep them linked: solving "unify invalidate"
classic window (PROCEDURE 1) resolves #03 automatically. If implemented separately, the minimal fix is to
add set_label("BAL Invalidate transaction") in the PROCEDURE 2 broadcast path.
### TASK #04 — Raw/Date selector combo not shown on the WILL/HEIR tabs (only inside the wizard)
**User (translated from Italian):** "when I select Advanced in the plugin settings, the Raw mode of the
locktime and check-alive boxes only appears inside the wizard, and no longer on the Will and Heir tabs,
even if I tick the 'panel editable fee and date' setting. Inside the wizard it works perfectly; outside the
wizard only the DATE works." Plus: "if I set Raw inside the wizard for check-alive/locktime, then on the
Will/Heir tabs the raw number appears, but NOT the box to choose Raw or Date."
**ANALYSIS (already done, confirmed by reading the code):**
- Each date/locktime field is `BalTimeEditWidget` (widgets.py). Its `__init__` reads `is_basic_mode()` ONCE
(line ~293) and, in BASIC, hides the Raw/Date combo (line ~336 `self.combo.setVisible(False)`).
- The WILL/HEIR tab toolbars are created ONCE and REUSED for the whole session (not rebuilt on USER TYPE
change), so the combo stays in its initial (hidden) state.
- `apply_user_type_visibility()` (widgets.py ~888), called from `BalWindow.update_all()` (window.py ~1343)
on a BASIC<->ADVANCED switch, ONLY toggles the Check-Alive ROW visibility (`threshold.setVisible(not basic)`,
line ~919). It NEVER touches `self.combo.setVisible(...)` nor the editor.
- Raw value showing but combo hidden: when the wizard saves a raw value, `update_setting_widgets` ->
`update_widget_value` -> `set_value(raw)` writes the value into the active editor (so the raw NUMBER shows),
and `update_combo_setting_widgets` -> `set_index` sets the combo INDEX to Raw "behind the scenes" — but the
combo is still `setVisible(False)`, so the selector box stays invisible.
- The wizard works only because it is RECREATED on every open (re-reads the current mode).
**ROOT CAUSE (unified):** the Raw/Date combo on the toolbars is hidden permanently at `__init__` and nothing
ever makes it visible again, neither on ADVANCED switch nor when a raw value arrives.
**PROPOSED FIX (to detail in PLAN):** add a method to `BalTimeEditWidget` (e.g. `apply_user_type_visibility()`)
that re-reads `is_basic_mode()` and does `self.combo.setVisible(not basic)` WITHOUT changing the current value
or editor (per user req #1: keep current value to avoid confusion between date and inheritance). Call it from
`WillSettingsWidget.apply_user_type_visibility()` for BOTH `locktime` AND `threshold` (per user req #2: applies
to both boxes). So toggling BASIC<->ADVANCED, and a raw value pushed from the wizard, both correctly reveal the
combo on the already-existing WILL/HEIR toolbars without restarting Electrum.
**USER CONFIRMATIONS:** (1) on ADVANCED, show the combo but KEEP the current value/editor (do not reset) to
avoid confusing date vs inheritance; (2) applies to BOTH locktime AND check-alive boxes.
### TASK #04 STATUS: DONE in v0.4.8 (user approved, implemented this session).
### Fix: added BalTimeEditWidget.apply_user_type_visibility() (shows/hides the Raw/Date
### combo, keeps current value/editor) and wired it into WillSettingsWidget.apply_user_type_visibility()
### for BOTH locktime and threshold. Delivered together with the other v0.4.8 UX changes.
### DO NOT ACT on #01/#02/#03. Saved to to-do list only. Wait for user to add more or to choose one;
### then DISCOVER -> PLAN -> wait OK (R4) -> zip-first.