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
81 nlohmann::json aParameters = nlohmann::json::object(),
82 std::optional<int> aResponseTo = std::nullopt,
83 const wxString& aStatus = wxS(
"OK" ),
84 const std::string& aData = std::string(),
85 const wxString& aErrorCode = wxEmptyString,
86 const wxString& aErrorMessage = wxEmptyString );
89 const wxString& aErrorCode,
const wxString& aErrorMessage );
93 bool aGlobalTable, wxString& aError )
const;
95 bool aGlobalTable, wxString& aError )
const;
98 bool receiveFootprint(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
100 bool receiveSymbol(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
102 bool receive3DModel(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
104 bool receiveSPICEModel(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
106 bool receiveComponent(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
107 wxString& aError, nlohmann::json* aResponseParams =
nullptr );
114 wxString
jsonString(
const nlohmann::json& aObject,
const char* aKey )
const;
118 std::vector<uint8_t>& aOutPayload,
119 wxString& aError )
const;
122 const std::vector<uint8_t>& aInput,
123 std::vector<uint8_t>& aOutput,
124 wxString& aError )
const;
127 const std::vector<uint8_t>& aData,
128 wxString& aError )
const;
131 const wxString& aLibItemName,
132 wxString& aError )
const;
140 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
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
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.