Skip to content

Dev#7

Open
joaonery1 wants to merge 42 commits into
mainfrom
dev
Open

Dev#7
joaonery1 wants to merge 42 commits into
mainfrom
dev

Conversation

@joaonery1

Copy link
Copy Markdown
Collaborator

No description provided.

joao.nery1@hotmail.com and others added 30 commits February 25, 2026 09:45
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.
joaonery1 and others added 12 commits April 5, 2026 12:45
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant