Conversation
Add complete GUI implementation with Cantata-style node editor: - glyph_registry.py: catalog of 74 VGL functions with ports/params - canvas.py: node editor with glyph create/delete/expand, connections, Cantata-style execution color feedback (gray→black→white) - sidebar_glyphs.py: function palette with category headers + search - toolbar.py: File/Run/View menus with file dialogs and key handlers - log_panel.py: thread-safe real-time execution log panel - wksp_io.py: .wksp serialize/deserialize reusing readWorkflow.py - runner.py: subprocess execution with stdout parsing for glyph status - app.py: Dear PyGui layout and render loop - doc/PRD and doc/TECHSPEC added
Add Examples menu to toolbar organized in sub-menus by category: - 2D: Demo, Demo Gray, Demo RGB, Drive segmentation - Fundus: Fundus retina, Fundus v2 - 3D: 3D Demo, 3D Functions - ND: ND Basic, ND Total, ND + Strel type/window Each entry loads the workflow directly into the canvas. Shows confirmation dialog if canvas has unsaved changes. Disabled items shown for files that don't exist on disk.
- Add 13 .cvdef interface descriptors for CV operations (BlurSq3, Convolution, Copy, Dilate, Erode, Invert, Max, Min, Rgb2Gray, Sub, Sum, SwapRgb, Threshold) - Extend interpretador.pl with CV mode (-cv flag): generates cv2py_shaders.py wrappers and appends CV elif blocks to execWorkflowGen.py - Add VGL_CV_CONTEXT bitmask (16) to vglConst.py and vglContext.py - Add CV glyph handlers (Load, Create, Save) to execWorkflowGen.py template - Update execWorkflow.py with CV operation support - Add 5 sample OpenCV workflows (.wksp files) - Add Makefile_python targets for CV workflows and generator
…ical sort - execWorkflow.py: handle 'vglLoadImage' as alias for vglLoad2dImage - execWorkflow.py: add ProcedureBegin handler for sub-workflow execution - readWorkflow.py: fix double-append bug; set sub_workspace.name = proc_name - execWorkflowGen.py: minor adjustments - wksp_io.py: implement topological sort for save order (fixes execution order) - wksp_io.py: full procedure save/load support (ProcedureBegin/End, ExtPort) - wksp_io.py: legacy format compatibility for External Input in main workspace
…alidation - history.py: undo/redo via state snapshots (max 50 entries) - canvas.py: Ctrl+scroll zoom; fit-to-screen; auto-layout LR/TB - canvas.py: node status themes (ready/running/done/error) - canvas.py: category color themes per node type (toggleable) - canvas.py: right-click context menu (node: info/duplicate/delete; canvas: add node) - canvas.py: copy/paste/duplicate nodes (Ctrl+C/V/D) - canvas.py: node image preview after ShowImage execution - canvas.py: file dialog opens in current file directory - canvas.py: file param input is readonly (use ... button) - runner.py: workflow validation before execution (required ports, file params) - runner.py: execution timing; per-node status update via queue - runner.py: queue_node_preview for ShowImage thumbnail in node - log_panel.py: per-line color classification + timestamps + copy button - sidebar_glyphs.py: drag-and-drop from sidebar to canvas - procedure_canvas.py: full sub-workflow (procedure) editor with ExtInput/ExtOutput - i18n.py: full PT-BR/EN translation system for all UI strings - config.py: persistent config (language, recent files) via config.json - image_preview.py: ShowImage popup with PIL + numpy; texture registry - app.py: render loop integrating all flush queues and status bar
…u and export - toolbar.py: Recent Files submenu (max 10, persisted in config) - toolbar.py: Export Canvas as PNG (mss/scrot/ImageMagick fallback chain) - toolbar.py: Help menu with keyboard shortcuts dialog and About dialog - toolbar.py: Ctrl+C/V/D handlers for copy/paste/duplicate - toolbar.py: toggle category colors in View menu - glyph_registry.py: CATEGORY_COLORS map for per-category node theming - status_bar.py: bottom status bar (file, node count, link count, zoom, device) - FEATURES.md: comprehensive feature list - SAMPLES/procedures/exemplo_procedure_gui.wksp: example procedure workflow
feat(gui): VGLGui — editor visual de workflows (Dear PyGui)
Add OpenCV (CV) module support to VGLGui
- Register 13 CV functions (VGL_CV library) in glyph_registry with dedicated cyan category color - Add CV handlers to execWorkflow.py so runner can execute them - Create 4 sample workflows: basico, morfologia, operacoes, pipeline - Add drag-and-drop dialog to reorder Examples menu categories - Fix non-ASCII chars (em dash, arrows) showing as ? in DPG menus - Add cat_cv i18n key and CV to _CATEGORY_KEY mapping
- Remove all drag-and-drop dead code from sidebar_glyphs.py (bind_sidebar_handlers, _drag_state, _start_drag, _cancel_drag, _on_drag_move, _on_drag_release, _make_drag_start_callback) - Remove bind_sidebar_handlers import/call from app.py - Add SAMPLES/fundus_cv.wksp: OpenCV version of fundus retina pipeline (Rgb2Gray -> Gaussian 1x51 -> 51x1 -> Dilate -> Erode -> Sub -> Threshold) - Add fundus_cv.wksp to Examples menu under CV (OpenCV) - Move CV category after Procedures in sidebar order
feat(cv): add OpenCV module to GUI
… 2021, Camadas 3-4) - executor_server.py: servidor FastAPI com REST + WebSocket para execução de workflows - runner.py: refatorado como cliente HTTP/WS (assinaturas públicas preservadas) - app.py: start/stop automático do servidor no ciclo de vida da GUI - wksp_io.py: extrair _write_wksp() + adicionar save_wksp_to_string() - execWorkflow.py: adicionar _check_skip() para parar glyph específico via sinal externo - requirements.txt: fastapi, uvicorn[standard], httpx, websockets
Permite monitorar e controlar o executor_server independente da GUI: python vgl_client.py status --job <id> python vgl_client.py monitor --job <id> python vgl_client.py run <arquivo.wksp> python vgl_client.py stop --job <id> python vgl_client.py skip <glyph_id> --job <id>
vglClInit estava hardcoded com GPU. Agora lê sys.argv[2] para inicializar CPU ou GPU corretamente.
_build_func_map só parseava linhas Glyph:, causando procedures sem colorização no canvas durante execução.
- Add GET /current endpoint to executor_server.py so clients can discover the active job without knowing the job_id - Refactor _current_job() in vgl_client.py to use /current instead of a stub that always returned None - All commands (status, stop, skip, monitor) now auto-detect the current job when --job is omitted
- _build_func_map: detectar formato antigo de .wksp (sem campo vazio após func) e usar índice correto para glyph_id - Adicionar _SKIP_RE para parsear [SKIP] do stdout e emitir evento glyph_done com status=skipped - gui/app.py: adicionar handler SIGTERM para terminar executor_server quando GUI for encerrada via sinal; chamar _stop_server() explicitamente após dpg.destroy_context()
- executor_server.py: dashboard HTML em GET / com monitor em tempo real, breakpoints por glyph e preview de imagens intermediárias - executor_server.py: novos endpoints POST/DELETE /breakpoint, POST /continue, GET /preview e GET / (dashboard) - executor_server.py: emissão de eventos glyph_paused e glyph_resumed - execWorkflow.py: adicionar _check_pause() com polling por sinal de continue
Antes, o #job-info ficava como "sem job ativo" até o WebSocket fechar e o onclose completar o fetch /status — causando confusão quando o usuário abria o dashboard após um job já terminado. Agora connectJob() atualiza job-info imediatamente com o status conhecido (/current já o retorna), sem esperar o WS fechar. Também adiciona botão ↺ para reconectar manualmente ao job ativo.
…imagens 2D em laco
feat: dashboard web com debugger de breakpoints
…dos workflows - execs/ → data/scripts/ (ss.p renomeado para fundus_cv_benchmark.py) - Arquivos descartáveis removidos (1_good.JPG, PYTHON_TEST.txt, PYTHON_TEXT.TXT) - 6 workflows com paths de output corrigidos (images/ → out/, paths relativos → out/3d/) - Makefile_python atualizado para data/workflows/ + target runbatch adicionado - .gitignore atualizado: html/* e latex/* → doc/doxygen/html/* e doc/doxygen/latex/* - FEATURES.md, PRD_VGLGui_Interface.md, TECHSPEC_VGLGui_Interface.md removidos do tracking (movidos para .rascunhos/)
refactor: reorganizar estrutura de dados do repositório
feat(bench): adicionar execBench.py para benchmark de funções VGL
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.
No description provided.