feat(web): wire pl_editor + symbol_editor tools (open, wizard-skip, UI)
Add the two newly WASM-ported editors to the web app the same way as the existing tools: - pl_editor (drawing-sheet, .kicad_wks): PL_EDITOR_FRAME overrides OpenProjectFiles, so it gets the generic kicadOpenFile embind hook (wasm/bindings/pl_editor_embind.cpp) for deterministic open. Mapped .kicad_wks -> pl_editor in EXTENSION_TOOL. - symbol_editor (symbol library): SYMBOL_EDIT_FRAME does NOT override OpenProjectFiles, so it's treated as file-less (boot standalone, opens libraries via its own UI). Added to FILELESS_TOOLS. Both boot through single_top.cpp's STARTWIZARD, so both seed config to skip the first-run wizard (TOOL_NEEDS_CONFIG_SEED) and get a /usr/bin/<binary> argv0. contract: add to TOOLS, plus a TOOL_LABELS map for friendly names. The project UI now renders file-less launch links generically from FILELESS_TOOLS and per-file "Open in <label>" links from EXTENSION_TOOL (auto file-type detection), so adding a tool needs no UI edits. Verified in-browser: pl_editor opens a .kicad_wks (renders the sheet), symbol_editor boots wizard-free; both with 0 console errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c77fed2ef1
commit
8341573c5c
4 changed files with 92 additions and 12 deletions
44
wasm/bindings/pl_editor_embind.cpp
Normal file
44
wasm/bindings/pl_editor_embind.cpp
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Embind bindings for KiCad pl_editor (drawing-sheet / page-layout editor) WASM.
|
||||
*
|
||||
* Picked up automatically by scripts/kicad/build-kicad-target.sh when building
|
||||
* the pl_editor app (it compiles wasm/bindings/<app>_embind.cpp if present).
|
||||
*/
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
#include <emscripten/bind.h>
|
||||
#include <kiway_player.h>
|
||||
#include <kiway.h>
|
||||
#include <vector>
|
||||
#include <wx/app.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/window.h>
|
||||
|
||||
using namespace emscripten;
|
||||
|
||||
// Programmatically open a drawing-sheet file (.kicad_wks) in the running editor
|
||||
// frame, without UI automation. Mirrors single_top.cpp's MacOpenFile path: the
|
||||
// editor frame is the app's top window and is a KIWAY_PLAYER (PL_EDITOR_FRAME
|
||||
// overrides OpenProjectFiles). Returns the result of OpenProjectFiles, or false
|
||||
// if no frame is available — letting the JS caller fall back to driving
|
||||
// File→Open.
|
||||
bool kicadOpenFile( std::string path )
|
||||
{
|
||||
KIWAY_PLAYER* frame =
|
||||
wxTheApp ? static_cast<KIWAY_PLAYER*>( wxTheApp->GetTopWindow() ) : nullptr;
|
||||
|
||||
if( !frame )
|
||||
return false;
|
||||
|
||||
if( wxWindow* blocking = frame->Kiway().GetBlockingDialog() )
|
||||
blocking->Close( true );
|
||||
|
||||
return frame->OpenProjectFiles(
|
||||
std::vector<wxString>( 1, wxString::FromUTF8( path.c_str() ) ) );
|
||||
}
|
||||
|
||||
EMSCRIPTEN_BINDINGS(pl_editor) {
|
||||
// Programmatic file open (preferred over UI automation from the web app).
|
||||
function("kicadOpenFile", &kicadOpenFile);
|
||||
}
|
||||
#endif
|
||||
Loading…
Reference in a new issue