20#ifndef PANEL_REMOTE_SYMBOL_H
21#define PANEL_REMOTE_SYMBOL_H
36#include <wx/filename.h>
39#include <nlohmann/json_fwd.hpp>
48class wxSysColourChangedEvent;
51#define REMOTE_SYMBOL_SESSION_VERSION 1
79 const wxString& aAccessToken );
84 void sendRpcReply(
const wxString& aCommand,
int aResponseTo,
85 nlohmann::json aParameters = nlohmann::json::object() );
86 void sendRpcError(
const wxString& aCommand,
int aResponseTo,
const wxString& aErrorCode,
87 const wxString& aErrorMessage );
89 nlohmann::json aParameters = nlohmann::json::object() );
100 bool receiveComponent(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
101 bool aPlaceSymbol, wxString& aError );
102 bool receiveFootprint(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
103 wxString& aError,
LIB_ID* aOutLibId =
nullptr );
104 bool receiveSymbol(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
106 const std::vector<LIB_ID>& aFootprintLinks = {} );
107 bool receive3DModel(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
109 bool receiveSPICEModel(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
115 wxString& aError )
const;
116 bool decompressIfNeeded(
const std::string& aCompression,
const std::vector<uint8_t>& aInput,
117 std::vector<uint8_t>& aOutput, wxString& aError )
const;
A logical library item identifier and consists of various portions much like a URI.
Define a library symbol object.
void onWebViewLoaded(wxWebViewEvent &aEvent)
bool HasDataSources() const
void onKicadMessage(const wxString &aMessage)
void showMessage(const wxString &aMessage)
wxString m_pendingProviderId
void handleRpcMessage(const nlohmann::json &aMessage)
wxFileName cookieFilePath(const wxString &aProviderId) const
void loadProviderPage(const REMOTE_PROVIDER_METADATA &aMetadata, const wxString &aAccessToken)
void sendRpcError(const wxString &aCommand, int aResponseTo, const wxString &aErrorCode, const wxString &aErrorMessage)
int m_selectedProviderIndex
bool loadProvider(int aIndex)
bool signOutProvider(const REMOTE_PROVIDER_ENTRY &aProvider, wxString &aError)
bool receiveFootprint(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError, LIB_ID *aOutLibId=nullptr)
OAUTH_SESSION m_pendingOAuthSession
bool receiveComponentManifest(const nlohmann::json &aParams, bool aPlaceSymbol, wxString &aError)
void sendRpcEnvelope(nlohmann::json aEnvelope)
bool m_hasSelectedProviderMetadata
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
REMOTE_PROVIDER_METADATA m_selectedProviderMetadata
bool decodeBase64Payload(const std::string &aMessage, std::vector< uint8_t > &aOutPayload, wxString &aError) const
void RefreshDataSources()
void clearCookies(bool aDeleteSavedCookieFile=true)
wxString sanitizeForScript(const std::string &aJson) const
bool receiveSymbol(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError, const std::vector< LIB_ID > &aFootprintLinks={})
void beginSessionHandshake()
void onOAuthLoopback(wxCommandEvent &aEvent)
void onConfigure(wxCommandEvent &aEvent)
bool receiveComponent(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, bool aPlaceSymbol, wxString &aError)
void sendRpcReply(const wxString &aCommand, int aResponseTo, nlohmann::json aParameters=nlohmann::json::object())
bool startInteractiveLogin(const REMOTE_PROVIDER_ENTRY &aProvider, const REMOTE_PROVIDER_METADATA &aMetadata, wxString &aError)
std::vector< REMOTE_PROVIDER_ENTRY > m_providerEntries
wxString loadAccessToken(const REMOTE_PROVIDER_ENTRY &aProvider)
void sendRpcNotification(const wxString &aCommand, nlohmann::json aParameters=nlohmann::json::object())
bool receiveSPICEModel(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError)
BITMAP_BUTTON * m_configButton
void onDarkModeToggle(wxSysColourChangedEvent &aEvent)
REMOTE_PROVIDER_CLIENT m_providerClient
SECURE_TOKEN_STORE m_tokenStore
WEBVIEW_PANEL * m_webView
bool receive3DModel(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError)
BITMAP_BUTTON * m_refreshButton
~PANEL_REMOTE_SYMBOL() override
void onRefresh(wxCommandEvent &aEvent)
void bootstrapAuthenticatedSession(const REMOTE_PROVIDER_METADATA &aMetadata, const wxString &aAccessToken)
REMOTE_PROVIDER_OAUTH_SERVER_METADATA m_pendingOAuthMetadata
std::unique_ptr< OAUTH_LOOPBACK_SERVER > m_oauthLoopbackServer
std::optional< OAUTH_TOKEN_SET > loadTokens(const REMOTE_PROVIDER_ENTRY &aProvider) const
void onDataSourceChanged(wxCommandEvent &aEvent)
Schematic editor (Eeschema) main window.