feat: docking host + add-node toolbar + node context menu
- Dockspace host (PassthruCentralNode) bajo la toolbar para que las
ventanas Viewport/Legend/Inspector/Stats puedan dockearse dentro de la
app principal.
- Toolbar: input "Add node" con auto-deteccion de tipo (text/email/
ip_address/url/domain/phone). Insert en operations.db + reload.
- Context menu (right-click sobre nodo): Change type, Duplicate, Delete,
submenu "Run enricher" (placeholder hasta issues 0001-0003).
- Inspector: vecinos ahora muestran etiqueta de relacion ("-> employs",
"<- owns") usando rel_types[].name como label de arista.
- Default relation label k_default_relation_name="RELATED_TO" para
relaciones creadas sin nombre semantico explicito.
- Indice EntityIndex (FNV1a hash -> sql id) reconstruido tras cada load
para resolver mutaciones desde el grafo en memoria.
Issues planteadas para iteraciones siguientes:
- 0001: chat con Claude sobre el grafo (HTTP + tool-use)
- 0002: enricher GLiNER+GLiREL desde nodo texto
- 0003: enricher web (fetch URL/dominio + extract text)
- 0004: vista tabla por tipo de entidad
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
struct GraphData;
|
||||
struct GraphViewportState;
|
||||
|
||||
@@ -35,6 +37,7 @@ struct AppState {
|
||||
bool panel_legend = true;
|
||||
bool panel_inspector = true;
|
||||
bool panel_stats = true;
|
||||
bool panel_viewport = true;
|
||||
bool show_filters_modal = false;
|
||||
bool show_open_modal = false;
|
||||
|
||||
@@ -47,6 +50,24 @@ struct AppState {
|
||||
|
||||
// Labels overlay
|
||||
bool labels_enabled = true;
|
||||
|
||||
// Path activo de operations.db (para CRUD desde toolbar / contextmenu).
|
||||
// main.cpp lo escribe tras cargar y los handlers lo leen.
|
||||
std::string input_db_path;
|
||||
|
||||
// Add-node toolbar input.
|
||||
char add_buf[256] = {};
|
||||
|
||||
// Triggers de mutacion — main.cpp los procesa y dispara reload.
|
||||
bool want_add_node = false; // commit del input add_buf
|
||||
bool want_delete_node = false; // delete del nodo en ctx_node
|
||||
bool want_duplicate_node = false;
|
||||
bool want_change_type = false; // a ctx_new_type
|
||||
int ctx_node = -1; // node_idx objetivo
|
||||
char ctx_new_type[64] = {};
|
||||
|
||||
// Context menu state — popup global identificado por nombre.
|
||||
bool ctx_open_request = false; // se setea en on_context_menu
|
||||
};
|
||||
|
||||
// Toolbar superior (Open file, Layout selector, Filters..., Fit, Save layout).
|
||||
|
||||
Reference in New Issue
Block a user