feat(#17): Sub-VI con connector pane — implementación completa#63
Merged
Conversation
Fase 1 — Modelo y serialización: - Añadido campo `file` al prototipo de nodo (model.red) - Helper `load-subvi-connector` carga connector desde .qvi - Helper `make-subvi-node` crea nodo con file + config - `serialize-nodes` emite `file:` para nodos subvi - `load-vi` parsea sección `connector:` del qvi-diagram Fase 2 — Compilador (parcial): - Registrado bloque 'subvi en blocks.red - Función `compile-subvi-call` genera llamadas a sub-VI - Caso 'subvi en compile-body (headless) y compile-diagram (UI) Tests: 462 PASS (actualizado a 41 bloques) Refs: #17 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- compile-diagram: recopila subvi-files y subvi-names para includes - format-qvi: emite #include de sub-VIs con save/restore de qtorres-runtime - format-qvi: genera context [exec: func []] para VIs con connector (/subvi) - compile-subvi-call: usa patrón nombre/exec para llamadas - save-vi: detecta connector y usa /subvi para generar código apropiado Arquitectura revisada (D4, D5): - Caller: #include %subvi.qvi + qtorres-runtime + nombre/exec args - Callee: nombre: context [exec: func [...]] + standalone guard Tests: 462 PASS Refs: #17 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- canvas-render.red: in-ports/out-ports leen de config/connector para nodos 'subvi - canvas-render.red: renderizado de puertos dinámicos según connector - canvas-dialogs.red: función palette-add-subvi con file picker - canvas-dialogs.red: botón "Sub-VI" en la paleta El sub-VI se renderiza con: - Label "SUBVI" + nombre de función - Puertos de entrada/salida dinámicos desde el connector - Colores según el tipo de bloque 'function Tests: 462 PASS Refs: #17 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Actualizados los ejemplos para usar la nueva arquitectura: suma-subvi.qvi: - Código generado usa context [exec: func [A B] [...]] - Standalone guard con view layout para ejecución directa - Helpers de runtime incluidos programa-con-subvi.qvi: - Código generado con #include %suma-subvi.qvi - Patrón save/restore de qtorres-runtime - Llamadas a sub-VI: suma/exec args - Modo headless y UI con either Tests: 462 PASS Refs: #17 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…bels - runner.red: carga do subvi/file antes de compile-body; try devuelve none para evitar error "result has no value" cuando el código termina en print - qtorres.red btn-run: carga contextos sub-VI igual que runner antes de do code - compiler.red compile-body/with-prints: elimina compose/deep, construye bloque print con append/only para evitar error en bloques anidados - canvas-render.red: corrige precedencia (length? inputs) / 3; añade subvi-port-label que convierte 'p1 → "A" para mostrar labels en canvas - model.red load-subvi-connector: lee title desde Red header (src/2), no meta - file-io.red: serializa/carga connector con formato pin/label/id; corrige #include sin %% duplicado; load-node-list usa make-subvi-node - canvas-dialogs.red: request-file/filter recibe block! ["QVI" %*.qvi] - ejemplos: suma-subvi.qvi y programa-con-subvi.qvi actualizados a pin-format; añade programa_con_qvi.qvi (creado desde el editor, Run verificado = 130.0) - CLAUDE.md: marca #17 completado, próximo paso #18 462 tests PASS Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
compile-subvi-callgenerafunc-name/exec arg1 arg2 → out-var;compile-body/with-printscorregido (sincomposeen bloques anidados).qvide sub-VIs referenciados antes de ejecutar el body, cargando elcontext [exec: func [...] [...]]que necesita la llamadasubvi-port-labelconvierte'p1→"A"para mostrar el nombre real del puerto en el diagrama;in-ports/out-portscorregidos (precedencia/)pin:/label:/id:;#includesin%%doble;load-node-listusamake-subvi-noderequest-file/filterrecibeblock!suma-subvi.qvi,programa-con-subvi.qviactualizados; añadeprograma_con_qvi.qvicreado desde el editor (Run verificado = 130.0)Test plan
red-cli tests/run-all.red)red examples/suma-subvi.qviejecuta standalonered examples/programa_con_qvi.qviejecuta standalone con Front PanelCloses #17
🤖 Generated with Claude Code