From 690b01e169f6a59ffc503391dc42cd4320f28b42 Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Wed, 29 Apr 2026 00:08:40 +0200 Subject: [PATCH] refactor(shaders_lab): usar AppConfig.panels + layouts_cb (issue 0043) --- cpp/apps/shaders_lab/main.cpp | 39 +++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/cpp/apps/shaders_lab/main.cpp b/cpp/apps/shaders_lab/main.cpp index 6c3d4067..c7ccb01f 100644 --- a/cpp/apps/shaders_lab/main.cpp +++ b/cpp/apps/shaders_lab/main.cpp @@ -16,7 +16,6 @@ #include "gfx/shaderlab_db.h" #include "core/panel_menu.h" #include "core/layouts_menu.h" -#include "core/app_menubar.h" #include "core/layout_storage.h" #include "compiler.h" @@ -24,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -73,6 +71,18 @@ static bool g_show_controls = true; static bool g_show_functions = true; static bool g_show_generated = true; +// Tabla de paneles toggleables que fn::run_app pasa a app_menubar cada frame. +// Vive en el ambito del archivo para poder referenciarse desde main(). +static constexpr fn_ui::PanelToggle k_panels[] = { + {"Code", "Ctrl+1", &g_show_code}, + {"DAG Pipeline", "Ctrl+2", &g_show_dag}, + {"Canvas Code", "Ctrl+3", &g_show_canvas_c}, + {"Canvas DAG", "Ctrl+4", &g_show_canvas_d}, + {"Controls", "Ctrl+5", &g_show_controls}, + {"Functions", "Ctrl+6", &g_show_functions}, + {"Generated GLSL","Ctrl+7", &g_show_generated}, +}; + // ── Layouts (named ImGui ini snapshots persisted in shaders_lab.db) ─────── // El storage opaco encapsula la BD y el blob pendiente. Los callbacks // envuelven save/apply/delete/reset y se pasan a app_menubar tal cual. @@ -220,17 +230,8 @@ static void render() { ImGui::DockSpaceOverViewport(0, ImGui::GetMainViewport()); - // --- Menubar (View + Layouts) --- - fn_ui::PanelToggle toggles[] = { - {"Code", "Ctrl+1", &g_show_code}, - {"DAG Pipeline", "Ctrl+2", &g_show_dag}, - {"Canvas Code", "Ctrl+3", &g_show_canvas_c}, - {"Canvas DAG", "Ctrl+4", &g_show_canvas_d}, - {"Controls", "Ctrl+5", &g_show_controls}, - {"Functions", "Ctrl+6", &g_show_functions}, - {"Generated GLSL","Ctrl+7", &g_show_generated}, - }; - fn_ui::app_menubar(toggles, std::size(toggles), &g_layout_cb); + // Menubar (View + Layouts + Settings + About) la invoca fn::run_app a + // partir de AppConfig::panels y AppConfig::layouts_cb. // --- Code window --- if (g_show_code) { @@ -402,9 +403,15 @@ int main() { }; fn::AppConfig cfg; - cfg.title = "shaders_lab"; - cfg.width = 1600; - cfg.height = 900; + cfg.title = "shaders_lab"; + cfg.width = 1600; + cfg.height = 900; + cfg.about = {.name = "shaders_lab", + .version = "0.1.0", + .description = "Live GLSL shader playground with DAG pipeline"}; + cfg.panels = k_panels; + cfg.panel_count = sizeof(k_panels) / sizeof(k_panels[0]); + cfg.layouts_cb = &g_layout_cb; int rc = fn::run_app(cfg, render); fn::gfx::canvas_destroy(g_canvas_code);