feat(tahuantinsuyu): fase 2 — CRUD UX sobre el tree (menú, modales, form natal)

Right-click sobre el explorador izquierdo abre menú contextual cuyas
opciones dependen del target (raíz, group, contact o chart). Modales
flotantes para crear/renombrar usando yahweh-widget-text-input; un
form más completo de 11 campos para la birth data al crear cartas
natales. Borrar pide confirmación por window.prompt nativo.

- tahuantinsuyu-store: rename_contact, rename_chart, move_group,
  move_contact (los `move_*` para fase posterior de drag-to-nest).
- tahuantinsuyu-tree: estado interno (Menu, Modal enum, ChartForm),
  handlers de ContextMenuRequested, render overlays.
  Soporta seis modales: rename de g/c/h, create group/contact, form
  natal completo con parseo + reporte de errores inline.
  Auto-expande el contact tras crear una carta.
  Nuevo evento TreeEvent::HierarchyChanged tras cada mutación.
- shell: maneja HierarchyChanged sin propagar selección.

`cargo check` y `cargo test` verdes. Fase 3 viene con engine real
contra eternal-astrology + pintado de la rueda.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-16 01:13:17 +00:00
parent c48638fe87
commit bcb92b537e
5 changed files with 943 additions and 18 deletions
+8
View File
@@ -82,6 +82,14 @@ impl Shell {
let selection = match ev {
TreeEvent::Selected(s) => s,
TreeEvent::Opened(s) => s,
TreeEvent::HierarchyChanged => {
// El tree ya hizo refresh internamente; el canvas/panel
// se enteran cuando llegue una nueva Selección. Fase 3
// podría re-disparar la última selección para que el
// thumbnail grid se actualice si era una vista de grupo.
cx.notify();
return;
}
};
self.apply_selection(selection.clone(), cx);
}