From 410df92bd70b2200a618ca4d88b3914bdc0662c1 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 13 Apr 2020 13:19:09 +0100 Subject: [PATCH] Add function to connect to a remote host from python --- qrenderdoc/Code/CaptureContext.cpp | 18 ++++++++++++++++++ qrenderdoc/Code/CaptureContext.h | 2 ++ qrenderdoc/Code/Interface/QRDInterface.h | 6 ++++++ qrenderdoc/Windows/PythonShell.cpp | 4 ++++ 4 files changed, 30 insertions(+) diff --git a/qrenderdoc/Code/CaptureContext.cpp b/qrenderdoc/Code/CaptureContext.cpp index 2b7939f25..98711813f 100644 --- a/qrenderdoc/Code/CaptureContext.cpp +++ b/qrenderdoc/Code/CaptureContext.cpp @@ -1450,6 +1450,24 @@ void CaptureContext::SetEventID(const rdcarray &exclude, uint3 RefreshUIStatus(exclude, updateSelectedEvent, updateEvent); } +void CaptureContext::ConnectToRemoteServer(RemoteHost host) +{ + rdcarray hosts = Config().GetRemoteHosts(); + + int hostIdx = -1; + for(int32_t i = 0; i < hosts.count(); i++) + { + if(hosts[i].Hostname() == host.Hostname()) + { + hostIdx = i; + break; + } + } + + if(hostIdx >= 0) + m_MainWindow->setRemoteHost(hostIdx); +} + void CaptureContext::SetRemoteHost(int hostIdx) { m_MainWindow->setRemoteHost(hostIdx); diff --git a/qrenderdoc/Code/CaptureContext.h b/qrenderdoc/Code/CaptureContext.h index 4429b84d3..321d65ef1 100644 --- a/qrenderdoc/Code/CaptureContext.h +++ b/qrenderdoc/Code/CaptureContext.h @@ -183,6 +183,8 @@ public: void MarkMessagesRead() override { m_UnreadMessageCount = 0; } void AddMessages(const rdcarray &msgs) override; + void ConnectToRemoteServer(RemoteHost host) override; + rdcstr GetNotes(const rdcstr &key) override { return m_Notes[key]; } void SetNotes(const rdcstr &key, const rdcstr &contents) override; rdcarray GetBookmarks() override { return m_Bookmarks; } diff --git a/qrenderdoc/Code/Interface/QRDInterface.h b/qrenderdoc/Code/Interface/QRDInterface.h index eea25519c..9364b381e 100644 --- a/qrenderdoc/Code/Interface/QRDInterface.h +++ b/qrenderdoc/Code/Interface/QRDInterface.h @@ -1204,6 +1204,12 @@ See :meth:`ReplaceResource`. )"); virtual IReplayManager &Replay() = 0; + DOCUMENT(R"(Connect to a remote server. + +:param RemoteHost host: The host to connect to. +)"); + virtual void ConnectToRemoteServer(RemoteHost host) = 0; + DOCUMENT(R"(Check whether or not a capture is currently loaded. :return: ``True`` if a capture is loaded. diff --git a/qrenderdoc/Windows/PythonShell.cpp b/qrenderdoc/Windows/PythonShell.cpp index 8a60f7be6..fa27c55c0 100644 --- a/qrenderdoc/Windows/PythonShell.cpp +++ b/qrenderdoc/Windows/PythonShell.cpp @@ -173,6 +173,10 @@ struct CaptureContextInvoker : ICaptureContext return (m_Ctx.*ptr)(params...); } + virtual void ConnectToRemoteServer(RemoteHost host) override + { + InvokeVoidFunction(&ICaptureContext::ConnectToRemoteServer, host); + } virtual WindowingData CreateWindowingData(QWidget *window) override { return InvokeRetFunction(&ICaptureContext::CreateWindowingData, window);