diff --git a/SpeckleConnector/Connector.xcodeproj/project.pbxproj b/SpeckleConnector/Connector.xcodeproj/project.pbxproj index ed5b4b7..d96ff81 100644 --- a/SpeckleConnector/Connector.xcodeproj/project.pbxproj +++ b/SpeckleConnector/Connector.xcodeproj/project.pbxproj @@ -51,6 +51,8 @@ 21D0BDA82C8F33AC0077E104 /* ModelCard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21D0BDA72C8F33AC0077E104 /* ModelCard.cpp */; }; 21D0BDAB2C8F363E0077E104 /* CardSetting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21D0BDAA2C8F363E0077E104 /* CardSetting.cpp */; }; 21D0BDCF2C92DAC60077E104 /* AddModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21D0BDCB2C92DAC60077E104 /* AddModel.cpp */; }; + 21D0BDD42C935D1A0077E104 /* UpdateModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21D0BDD22C935D1A0077E104 /* UpdateModel.cpp */; }; + 21D0BDD72C935DAE0077E104 /* RemoveModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21D0BDD52C935DAE0077E104 /* RemoveModel.cpp */; }; 21D1E9AD2BF14AF200957EAA /* BIMData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21D1E9152BF14AEC00957EAA /* BIMData.framework */; }; 21D1E9AE2BF14AF200957EAA /* TeamworkPortalServerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21D1E9162BF14AEC00957EAA /* TeamworkPortalServerClient.framework */; }; 21D1E9AF2BF14AF200957EAA /* GDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21D1E9172BF14AEC00957EAA /* GDL.framework */; }; @@ -330,6 +332,10 @@ 21D0BDAA2C8F363E0077E104 /* CardSetting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CardSetting.cpp; sourceTree = ""; }; 21D0BDCB2C92DAC60077E104 /* AddModel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AddModel.cpp; sourceTree = ""; }; 21D0BDCE2C92DAC60077E104 /* AddModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddModel.h; sourceTree = ""; }; + 21D0BDD22C935D1A0077E104 /* UpdateModel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UpdateModel.cpp; sourceTree = ""; }; + 21D0BDD32C935D1A0077E104 /* UpdateModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpdateModel.h; sourceTree = ""; }; + 21D0BDD52C935DAE0077E104 /* RemoveModel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveModel.cpp; sourceTree = ""; }; + 21D0BDD62C935DAE0077E104 /* RemoveModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveModel.h; sourceTree = ""; }; 21D1E9152BF14AEC00957EAA /* BIMData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = BIMData.framework; path = "../Archicad 27/Support/Frameworks/BIMData.framework"; sourceTree = ""; }; 21D1E9162BF14AEC00957EAA /* TeamworkPortalServerClient.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TeamworkPortalServerClient.framework; path = "../Archicad 27/Support/Frameworks/TeamworkPortalServerClient.framework"; sourceTree = ""; }; 21D1E9172BF14AEC00957EAA /* GDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GDL.framework; path = "../Archicad 27/Support/Frameworks/GDL.framework"; sourceTree = ""; }; @@ -922,6 +928,10 @@ 21B67CA82C77329800FD64FC /* GetSourceApplicationName.h */, 21B67CA92C77329800FD64FC /* GetSourceApplicationVersion.cpp */, 21B67CAA2C77329800FD64FC /* GetSourceApplicationVersion.h */, + 21D0BDD52C935DAE0077E104 /* RemoveModel.cpp */, + 21D0BDD62C935DAE0077E104 /* RemoveModel.h */, + 21D0BDD22C935D1A0077E104 /* UpdateModel.cpp */, + 21D0BDD32C935D1A0077E104 /* UpdateModel.h */, ); path = Base; sourceTree = ""; @@ -1359,9 +1369,11 @@ 21B67CD92C78C83800FD64FC /* TestBridge.cpp in Sources */, 214B7A372C764BCD00D586C1 /* UpdateConfig.cpp in Sources */, 21B67CC02C775A0D00FD64FC /* GetDocumentInfo.cpp in Sources */, + 21D0BDD42C935D1A0077E104 /* UpdateModel.cpp in Sources */, 21B67CE72C78D23B00FD64FC /* ConnectorConfig.cpp in Sources */, 21B67CAD2C77329800FD64FC /* GetSourceApplicationName.cpp in Sources */, 21D0BDA82C8F33AC0077E104 /* ModelCard.cpp in Sources */, + 21D0BDD72C935DAE0077E104 /* RemoveModel.cpp in Sources */, 21B67CDC2C78C88000FD64FC /* SayHi.cpp in Sources */, 21F69F122C677BC0008B6A06 /* ConnectorMenu.cpp in Sources */, 21F69F8D2C70D7EE008B6A06 /* GetAccounts.cpp in Sources */, diff --git a/SpeckleConnector/Connector/Database/Model/Card/ModelCardDatabase.cpp b/SpeckleConnector/Connector/Database/Model/Card/ModelCardDatabase.cpp index c0c1e84..aa6175b 100644 --- a/SpeckleConnector/Connector/Database/Model/Card/ModelCardDatabase.cpp +++ b/SpeckleConnector/Connector/Database/Model/Card/ModelCardDatabase.cpp @@ -88,6 +88,16 @@ void ModelCardDatabase::write(const ModelCard& card) const { } //ModelCardDatabase::write +/*-------------------------------------------------------------------- + Erase a card + + cardID: The ID of the card to erase + --------------------------------------------------------------------*/ +void ModelCardDatabase::erase(const speckle::utility::String& cardID) const { + m_store->erase(cardID); +} //ModelCardDatabase::erase + + /*-------------------------------------------------------------------- Get a serialisation wrapper for the database diff --git a/SpeckleConnector/Connector/Database/Model/Card/ModelCardDatabase.h b/SpeckleConnector/Connector/Database/Model/Card/ModelCardDatabase.h index a732da2..90a770b 100644 --- a/SpeckleConnector/Connector/Database/Model/Card/ModelCardDatabase.h +++ b/SpeckleConnector/Connector/Database/Model/Card/ModelCardDatabase.h @@ -39,6 +39,11 @@ namespace connector::database { @param card The card to write */ void write(const ModelCard& card) const; + /*! + Erase a card + @param cardID The ID of the card to erase + */ + void erase(const speckle::utility::String& cardID) const; /*! Get a serialisation wrapper for the database @return A database wrapper diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/AddModel.cpp b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/AddModel.cpp index c7eb19c..262be5c 100644 --- a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/AddModel.cpp +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/AddModel.cpp @@ -1,6 +1,5 @@ #include "Connector/Interface/Browser/Bridge/Base/AddModel.h" -#include "Active/Serialise/CargoHold.h" #include "Connector/Connector.h" #include "Connector/Database/Model/Card/ModelCardDatabase.h" #include "Connector/Interface/Browser/Bridge/Base/Arg/DocumentInfo.h" diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/BaseBridge.cpp b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/BaseBridge.cpp index 94c5127..f40155f 100644 --- a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/BaseBridge.cpp +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/BaseBridge.cpp @@ -1,10 +1,13 @@ #include "Connector/Interface/Browser/Bridge/Base/BaseBridge.h" +#include "Connector/Interface/Browser/Bridge/Base/AddModel.h" #include "Connector/Interface/Browser/Bridge/Base/GetConnectorVersion.h" #include "Connector/Interface/Browser/Bridge/Base/GetDocumentInfo.h" #include "Connector/Interface/Browser/Bridge/Base/GetDocumentState.h" #include "Connector/Interface/Browser/Bridge/Base/GetSourceApplicationName.h" #include "Connector/Interface/Browser/Bridge/Base/GetSourceApplicationVersion.h" +#include "Connector/Interface/Browser/Bridge/Base/RemoveModel.h" +#include "Connector/Interface/Browser/Bridge/Base/UpdateModel.h" using namespace connector::interfac::browser::bridge; @@ -13,9 +16,12 @@ using namespace connector::interfac::browser::bridge; --------------------------------------------------------------------*/ BaseBridge::BaseBridge() : BrowserBridge{"baseBinding"} { //Add bridge methods + addMethod(); addMethod(); addMethod(); addMethod(); addMethod(); addMethod(); + addMethod(); + addMethod(); } //BaseBridge::BaseBridge diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/RemoveModel.cpp b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/RemoveModel.cpp new file mode 100644 index 0000000..ca7d0e7 --- /dev/null +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/RemoveModel.cpp @@ -0,0 +1,35 @@ +#include "Connector/Interface/Browser/Bridge/Base/RemoveModel.h" + +#include "Connector/Connector.h" +#include "Connector/Database/Model/Card/ModelCardDatabase.h" +#include "Connector/Interface/Browser/Bridge/Base/Arg/DocumentInfo.h" + +using namespace active::container; +using namespace active::serialise; +using namespace connector::database; +using namespace connector::interfac::browser::bridge; +using namespace speckle::utility; + +namespace { + + using WrappedValue = active::serialise::CargoHold; + +} + +/*-------------------------------------------------------------------- + Default constructor + --------------------------------------------------------------------*/ +RemoveModel::RemoveModel() : BridgeMethod{"RemoveModel", [&](ModelCardEventWrapper card) { + return run(card.get()); +}} {} + + +/*-------------------------------------------------------------------- + Add a model card to document storage + + card: The card to add + --------------------------------------------------------------------*/ +void RemoveModel::run(ModelCard& card) const { + if (auto modelCardDBase = connector()->getModelCardDatabase(); modelCardDBase != nullptr) + modelCardDBase->erase(card.getID()); +} //RemoveModel::run diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/RemoveModel.h b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/RemoveModel.h new file mode 100644 index 0000000..00c8aab --- /dev/null +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/RemoveModel.h @@ -0,0 +1,40 @@ +#ifndef CONNECTOR_INTERFACE_BRIDGE_REMOVE_MODEL +#define CONNECTOR_INTERFACE_BRIDGE_REMOVE_MODEL + +#include "Active/Serialise/CargoHold.h" +#include "Active/Serialise/Package/Wrapper/PackageWrap.h" +#include "Connector/Database/Model/Card/ModelCard.h" +#include "Speckle/Interface/Browser/Bridge/BridgeMethod.h" + +namespace connector::interfac::browser::bridge { + + ///Argument parameter for a string + using CardHold = active::serialise::CargoHold; + ///Argument type for this method + using ModelCardEventWrapper = speckle::interfac::browser::bridge::JSArgType; + + /*! + JS Function class to add a model card to the document storage + */ + class RemoveModel : public speckle::interfac::browser::bridge::BridgeMethod { + public: + + // MARK: - Constructors + + /*! + Default constructor + */ + RemoveModel(); + + // MARK: - Functions (const) + + /*! + Add a model card to document storage + @param card The card to add + */ + void run(connector::database::ModelCard& card) const; + }; + +} + +#endif //CONNECTOR_INTERFACE_BRIDGE_REMOVE_MODEL diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/UpdateModel.cpp b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/UpdateModel.cpp new file mode 100644 index 0000000..301349a --- /dev/null +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/UpdateModel.cpp @@ -0,0 +1,35 @@ +#include "Connector/Interface/Browser/Bridge/Base/UpdateModel.h" + +#include "Connector/Connector.h" +#include "Connector/Database/Model/Card/ModelCardDatabase.h" +#include "Connector/Interface/Browser/Bridge/Base/Arg/DocumentInfo.h" + +using namespace active::container; +using namespace active::serialise; +using namespace connector::database; +using namespace connector::interfac::browser::bridge; +using namespace speckle::utility; + +namespace { + + using WrappedValue = active::serialise::CargoHold; + +} + +/*-------------------------------------------------------------------- + Default constructor + --------------------------------------------------------------------*/ +UpdateModel::UpdateModel() : BridgeMethod{"UpdateModel", [&](ModelCardEventWrapper card) { + return run(card.get()); +}} {} + + +/*-------------------------------------------------------------------- + Add a model card to document storage + + card: The card to add + --------------------------------------------------------------------*/ +void UpdateModel::run(ModelCard& card) const { + if (auto modelCardDBase = connector()->getModelCardDatabase(); modelCardDBase != nullptr) + modelCardDBase->write(card); +} //UpdateModel::run diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/UpdateModel.h b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/UpdateModel.h new file mode 100644 index 0000000..41ea93b --- /dev/null +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Base/UpdateModel.h @@ -0,0 +1,40 @@ +#ifndef CONNECTOR_INTERFACE_BRIDGE_UPDATE_MODEL +#define CONNECTOR_INTERFACE_BRIDGE_UPDATE_MODEL + +#include "Active/Serialise/CargoHold.h" +#include "Active/Serialise/Package/Wrapper/PackageWrap.h" +#include "Connector/Database/Model/Card/ModelCard.h" +#include "Speckle/Interface/Browser/Bridge/BridgeMethod.h" + +namespace connector::interfac::browser::bridge { + + ///Argument parameter for a string + using CardHold = active::serialise::CargoHold; + ///Argument type for this method + using ModelCardEventWrapper = speckle::interfac::browser::bridge::JSArgType; + + /*! + JS Function class to add a model card to the document storage + */ + class UpdateModel : public speckle::interfac::browser::bridge::BridgeMethod { + public: + + // MARK: - Constructors + + /*! + Default constructor + */ + UpdateModel(); + + // MARK: - Functions (const) + + /*! + Add a model card to document storage + @param card The card to add + */ + void run(connector::database::ModelCard& card) const; + }; + +} + +#endif //CONNECTOR_INTERFACE_BRIDGE_UPDATE_MODEL