pcbjam/wasm/kiplatform/environment.cpp

120 lines
2.7 KiB
C++
Raw Normal View History

/*
* WASM implementation of kiplatform/environment.h
* Provides environment and path functions for browser environment
*/
#include <kiplatform/environment.h>
#include <wx/string.h>
#include <wx/window.h>
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#endif
namespace KIPLATFORM
{
namespace ENV
{
void Init()
{
// No special initialization needed for WASM
}
bool MoveToTrash( const wxString& aPath, wxString& aError )
{
// No trash/recycle bin in browser - just delete
aError = wxT( "Trash not available in browser environment" );
return false;
}
bool IsNetworkPath( const wxString& aPath )
{
// All paths in WASM virtual filesystem are local
return false;
}
wxString GetDocumentsPath()
{
// Use virtual filesystem path
return wxT( "/home/kicad/documents" );
}
wxString GetUserConfigPath()
{
// Use virtual filesystem path for config
return wxT( "/home/kicad/.config/kicad" );
}
wxString GetUserDataPath()
{
// Use virtual filesystem path for data
return wxT( "/home/kicad/.local/share/kicad" );
}
wxString GetUserLocalDataPath()
{
// Same as data path in WASM
return wxT( "/home/kicad/.local/share/kicad" );
}
wxString GetUserCachePath()
{
// Use virtual filesystem path for cache
return wxT( "/home/kicad/.cache/kicad" );
}
bool GetSystemProxyConfig( const wxString& aURL, PROXY_CONFIG& aCfg )
{
// No proxy configuration in browser - browser handles networking
return false;
}
bool VerifyFileSignature( const wxString& aPath )
{
// No code signing verification in WASM
return true;
}
wxString GetAppUserModelId()
{
// Windows-specific, return empty
return wxEmptyString;
}
void SetAppDetailsForWindow( wxWindow* aWindow, const wxString& aRelaunchCommand,
const wxString& aRelaunchDisplayName )
{
// Windows-specific, no-op
}
wxString GetCommandLineStr()
{
// No command line in browser
return wxEmptyString;
}
void AddToRecentDocs( const wxString& aPath )
{
// Could implement via localStorage if needed
#ifdef __EMSCRIPTEN__
EM_ASM({
try {
var recent = JSON.parse(localStorage.getItem('kicad_recent_docs') || '[]');
var path = UTF8ToString($0);
// Remove if already exists
recent = recent.filter(function(p) { return p !== path; });
// Add to front
recent.unshift(path);
// Keep only last 10
recent = recent.slice(0, 10);
localStorage.setItem('kicad_recent_docs', JSON.stringify(recent));
} catch(e) {
console.warn('Failed to save recent docs:', e);
}
}, aPath.utf8_str().data());
#endif
}
} // namespace ENV
} // namespace KIPLATFORM