20#ifndef PANEL_REMOTE_SYMBOL_H
21#define PANEL_REMOTE_SYMBOL_H
35#include <wx/filename.h>
38#include <nlohmann/json_fwd.hpp>
47class wxSysColourChangedEvent;
50#define REMOTE_SYMBOL_SESSION_VERSION 1
76 const wxString& aAccessToken );
81 void sendRpcReply(
const wxString& aCommand,
int aResponseTo,
82 nlohmann::json aParameters = nlohmann::json::object() );
83 void sendRpcError(
const wxString& aCommand,
int aResponseTo,
const wxString& aErrorCode,
84 const wxString& aErrorMessage );
86 nlohmann::json aParameters = nlohmann::json::object() );
97 bool receiveComponent(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
98 bool aPlaceSymbol, wxString& aError );
99 bool receiveFootprint(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
101 bool receiveSymbol(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
103 bool receive3DModel(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
105 bool receiveSPICEModel(
const nlohmann::json& aParams,
const std::vector<uint8_t>& aPayload,
111 wxString& aError )
const;
112 bool decompressIfNeeded(
const std::string& aCompression,
const std::vector<uint8_t>& aInput,
113 std::vector<uint8_t>& aOutput, wxString& aError )
const;
115 const wxString& aLibItemName,
116 wxString& aError )
const;
Define a library symbol object.
bool receiveSymbol(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError)
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)
bool receiveFootprint(const nlohmann::json &aParams, const std::vector< uint8_t > &aPayload, wxString &aError)
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)
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
void beginSessionHandshake()
void onOAuthLoopback(wxCommandEvent &aEvent)
std::unique_ptr< LIB_SYMBOL > loadSymbolFromPayload(const std::vector< uint8_t > &aPayload, const wxString &aLibItemName, wxString &aError) const
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.