24#ifndef PANEL_REMOTE_SYMBOL_H
25#define PANEL_REMOTE_SYMBOL_H
34#include <nlohmann/json_fwd.hpp>
35#include <wx/filename.h>
48#define REMOTE_SYMBOL_SESSION_VERSION 1
88 nlohmann::json aParameters = nlohmann::json::object(),
89 std::optional<int> aResponseTo = std::nullopt,
90 const wxString& aStatus = wxS(
"OK" ),
91 const std::string& aData = std::string(),
92 const wxString& aErrorCode = wxEmptyString,
93 const wxString& aErrorMessage = wxEmptyString );
96 const wxString& aErrorCode,
const wxString& aErrorMessage );
100 bool aGlobalTable, wxString& aError )
const;
102 bool aGlobalTable, wxString& aError )
const;
105 bool receiveFootprint(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
107 bool receiveSymbol(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
109 bool receive3DModel(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
111 bool receiveSPICEModel(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
113 bool receiveComponent(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
114 wxString& aError, nlohmann::json* aResponseParams =
nullptr );
121 wxString
jsonString(
const nlohmann::json& aObject,
const char* aKey )
const;
125 std::vector<uint8_t>& aOutPayload,
126 wxString& aError )
const;
129 const std::vector<uint8_t>& aInput,
130 std::vector<uint8_t>& aOutput,
131 wxString& aError )
const;
134 const std::vector<uint8_t>& aData,
135 wxString& aError )
const;
138 const wxString& aLibItemName,
139 wxString& aError )
const;
147 std::shared_ptr<PLUGIN_CONTENT_MANAGER>
m_pcm;
Define a library symbol object.
wxString sanitizeFileComponent(const wxString &aComponent, const wxString &aDefault) const
std::optional< wxString > extractUrlFromJson(const wxString &aJsonContent) const
void sendRpcMessage(const wxString &aCommand, nlohmann::json aParameters=nlohmann::json::object(), std::optional< int > aResponseTo=std::nullopt, const wxString &aStatus=wxS("OK"), const std::string &aData=std::string(), const wxString &aErrorCode=wxEmptyString, const wxString &aErrorMessage=wxEmptyString)
bool receiveSymbol(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError)
wxString m_activeDataSourceUrl
void onWebViewLoaded(wxWebViewEvent &aEvent)
bool HasDataSources() const
void onKicadMessage(const wxString &aMessage)
bool m_webViewLoadedBound
void handleRemoteLogin(const nlohmann::json &aParams, int aMessageId)
wxString sanitizedPrefix() const
void showMessage(const wxString &aMessage)
wxString jsonString(const nlohmann::json &aObject, const char *aKey) const
bool writeBinaryFile(const wxFileName &aFile, const std::vector< uint8_t > &aData, wxString &aError) const
void handleRpcMessage(const nlohmann::json &aMessage)
std::vector< PCM_INSTALLATION_ENTRY > m_dataSources
bool receiveFootprint(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError)
bool ensureSymbolLibraryEntry(const wxFileName &aLibraryFile, const wxString &aNickname, bool aGlobalTable, wxString &aError) const
wxString currentDataSourceKey() const
void respondWithError(const wxString &aCommand, int aResponseTo, const wxString &aErrorCode, const wxString &aErrorMessage)
std::optional< wxFileName > findDataSourceJson(const PCM_INSTALLATION_ENTRY &aEntry) const
PANEL_REMOTE_SYMBOL(SCH_EDIT_FRAME *aParent)
wxChoice * m_dataSourceChoice
bool decompressIfNeeded(const std::string &aCompression, const std::vector< uint8_t > &aInput, std::vector< uint8_t > &aOutput, wxString &aError) const
bool decodeBase64Payload(const std::string &aMessage, std::vector< uint8_t > &aOutPayload, wxString &aError) const
void RefreshDataSources()
wxString sanitizeForScript(const std::string &aJson) const
void beginSessionHandshake()
std::unique_ptr< LIB_SYMBOL > loadSymbolFromPayload(const std::vector< uint8_t > &aPayload, const wxString &aLibItemName, wxString &aError) const
void LoadCookies()
Restore WebView cookies from settings.
bool receiveComponent(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError, nlohmann::json *aResponseParams=nullptr)
void onConfigure(wxCommandEvent &aEvent)
bool ensureDestinationRoot(wxFileName &aOutDir, wxString &aError) const
void SaveCookies()
Store WebView cookies to settings for persistence across sessions.
wxString normalizeDataSourceUrl(const wxString &aUrl) const
bool loadDataSource(size_t aIndex)
void onRemoteLoginResult(wxCommandEvent &aEvent)
bool ensureFootprintLibraryEntry(const wxFileName &aLibraryDir, const wxString &aNickname, bool aGlobalTable, wxString &aError) const
bool receiveSPICEModel(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError)
BITMAP_BUTTON * m_configButton
std::shared_ptr< PLUGIN_CONTENT_MANAGER > m_pcm
void loadStoredUserIdForActiveSource()
WEBVIEW_PANEL * m_webView
bool receive3DModel(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError)
void storeUserIdForActiveSource(const wxString &aUserId)
BITMAP_BUTTON * m_refreshButton
std::unique_ptr< REMOTE_LOGIN_SERVER > m_loginServer
void onRefresh(wxCommandEvent &aEvent)
void onDataSourceChanged(wxCommandEvent &aEvent)
bool placeDownloadedSymbol(const wxString &aNickname, const wxString &aLibItemName, wxString &aError)
Schematic editor (Eeschema) main window.