From 4afed92ba93ee53f68a2572688273e202536fcc0 Mon Sep 17 00:00:00 2001 From: David Kekesi Date: Wed, 30 Oct 2024 19:34:27 +0100 Subject: [PATCH] view button on modelcard works --- SpeckleConnector/Connector.vcxproj | 2 + SpeckleConnector/Connector.vcxproj.filters | 6 +++ .../Browser/Bridge/Base/BaseBridge.cpp | 2 + .../Interface/Browser/Bridge/Base/OpenUrl.cpp | 22 ++++++++++ .../Interface/Browser/Bridge/Base/OpenUrl.h | 41 +++++++++++++++++++ 5 files changed, 73 insertions(+) create mode 100644 SpeckleConnector/Connector/Interface/Browser/Bridge/Base/OpenUrl.cpp create mode 100644 SpeckleConnector/Connector/Interface/Browser/Bridge/Base/OpenUrl.h diff --git a/SpeckleConnector/Connector.vcxproj b/SpeckleConnector/Connector.vcxproj index 8c72f5b..9005564 100644 --- a/SpeckleConnector/Connector.vcxproj +++ b/SpeckleConnector/Connector.vcxproj @@ -105,6 +105,7 @@ + @@ -161,6 +162,7 @@ + diff --git a/SpeckleConnector/Connector.vcxproj.filters b/SpeckleConnector/Connector.vcxproj.filters index 867cf2a..48eac5b 100644 --- a/SpeckleConnector/Connector.vcxproj.filters +++ b/SpeckleConnector/Connector.vcxproj.filters @@ -246,6 +246,9 @@ Connector\Interface\Browser\Bridge\Base + + Connector\Interface\Browser\Bridge\Base + @@ -417,5 +420,8 @@ Connector\Interface\Browser\Bridge\Base + + Connector\Interface\Browser\Bridge\Base + \ No newline at end of file diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/BaseBridge.cpp b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/BaseBridge.cpp index 05f7ee5..3f985fe 100644 --- a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/BaseBridge.cpp +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/BaseBridge.cpp @@ -8,6 +8,7 @@ #include "Connector/Interface/Browser/Bridge/Base/RemoveModel.h" #include "Connector/Interface/Browser/Bridge/Base/UpdateModel.h" #include "Connector/Interface/Browser/Bridge/Base/HighlightModel.h" +#include "Connector/Interface/Browser/Bridge/Base/OpenUrl.h" #include "Speckle/Event/Type/ProjectEvent.h" using namespace connector::interfac::browser::bridge; @@ -26,6 +27,7 @@ BaseBridge::BaseBridge() : BrowserBridge{"baseBinding"} { addMethod(); addMethod(); addMethod(); + addMethod(); } //BaseBridge::BaseBridge /*-------------------------------------------------------------------- diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/OpenUrl.cpp b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/OpenUrl.cpp new file mode 100644 index 0000000..ddfe254 --- /dev/null +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/OpenUrl.cpp @@ -0,0 +1,22 @@ +#include "Connector/Interface/Browser/Bridge/Base/OpenUrl.h" + +using namespace connector::interfac::browser::bridge; +using namespace speckle::utility; + +/*-------------------------------------------------------------------- + Default constructor + --------------------------------------------------------------------*/ +OpenUrl::OpenUrl() : BridgeMethod{"OpenUrl", [&](const SendArgs& args) { + run(args); +}} {} + + +/*-------------------------------------------------------------------- + Opens an url + + url: The URL to open + --------------------------------------------------------------------*/ +void OpenUrl::run(const String& url) const { + std::string command = "start " + url; + system(command.c_str()); +} //OpenUrl::run diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/OpenUrl.h b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/OpenUrl.h new file mode 100644 index 0000000..aa8fa35 --- /dev/null +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/OpenUrl.h @@ -0,0 +1,41 @@ +#ifndef CONNECTOR_INTERFACE_BRIDGE_OPEN_URL +#define CONNECTOR_INTERFACE_BRIDGE_OPEN_URL + +#include "Active/Serialise/CargoHold.h" +#include "Active/Serialise/Item/Wrapper/ValueWrap.h" +#include "Speckle/Interface/Browser/Bridge/BridgeMethod.h" + +namespace connector::interfac::browser::bridge { + + class ConnectorConfig; + + ///Argument parameter for a string + using StringHold = active::serialise::CargoHold, speckle::utility::String>; + ///Argument type for this method + using SendArgs = speckle::interfac::browser::bridge::JSArgType; + + /*! + JS Function class to highlight elements from the selected model card in the open document + */ + class OpenUrl : public speckle::interfac::browser::bridge::BridgeMethod { + public: + + // MARK: - Constructors + + /*! + Constructor + */ + OpenUrl(); + + // MARK: - Functions (const) + + /*! + Opens an url + @param url The URL to open + */ + void run(const speckle::utility::String& url) const; + }; + +} + +#endif //CONNECTOR_INTERFACE_BRIDGE_OPEN_URL