diff --git a/ACT/LibMCEnv.xml b/ACT/LibMCEnv.xml index fde5418f..05539eb0 100644 --- a/ACT/LibMCEnv.xml +++ b/ACT/LibMCEnv.xml @@ -5850,7 +5850,30 @@ - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.h b/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.h index 496e5ec5..4a9439ab 100644 --- a/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.h +++ b/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.h @@ -10817,6 +10817,54 @@ typedef LibMCEnvResult (*PLibMCEnvUIEnvironment_GetMachineParameterAsIntegerPtr) */ typedef LibMCEnvResult (*PLibMCEnvUIEnvironment_GetMachineParameterAsBoolPtr) (LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, bool * pValue); +/** +* sets a string parameter of a state machine +* +* @param[in] pUIEnvironment - UIEnvironment instance. +* @param[in] pMachineInstance - State machine instance name +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] pValue - New Parameter Value +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvUIEnvironment_SetMachineParameterPtr) (LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, const char * pValue); + +/** +* sets a double parameter of a state machine +* +* @param[in] pUIEnvironment - UIEnvironment instance. +* @param[in] pMachineInstance - State machine instance name +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] dValue - New Parameter Value +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvUIEnvironment_SetMachineParameterAsDoublePtr) (LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, LibMCEnv_double dValue); + +/** +* sets an integer parameter of a state machine +* +* @param[in] pUIEnvironment - UIEnvironment instance. +* @param[in] pMachineInstance - State machine instance name +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] nValue - New Parameter Value +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvUIEnvironment_SetMachineParameterAsIntegerPtr) (LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, LibMCEnv_int64 nValue); + +/** +* sets a boolean parameter of a state machine +* +* @param[in] pUIEnvironment - UIEnvironment instance. +* @param[in] pMachineInstance - State machine instance name +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] bValue - New Parameter Value +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvUIEnvironment_SetMachineParameterAsBoolPtr) (LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, bool bValue); + /** * returns a string property of a UI element on the client * @@ -12573,6 +12621,10 @@ typedef struct { PLibMCEnvUIEnvironment_GetMachineParameterAsDoublePtr m_UIEnvironment_GetMachineParameterAsDouble; PLibMCEnvUIEnvironment_GetMachineParameterAsIntegerPtr m_UIEnvironment_GetMachineParameterAsInteger; PLibMCEnvUIEnvironment_GetMachineParameterAsBoolPtr m_UIEnvironment_GetMachineParameterAsBool; + PLibMCEnvUIEnvironment_SetMachineParameterPtr m_UIEnvironment_SetMachineParameter; + PLibMCEnvUIEnvironment_SetMachineParameterAsDoublePtr m_UIEnvironment_SetMachineParameterAsDouble; + PLibMCEnvUIEnvironment_SetMachineParameterAsIntegerPtr m_UIEnvironment_SetMachineParameterAsInteger; + PLibMCEnvUIEnvironment_SetMachineParameterAsBoolPtr m_UIEnvironment_SetMachineParameterAsBool; PLibMCEnvUIEnvironment_GetUIPropertyPtr m_UIEnvironment_GetUIProperty; PLibMCEnvUIEnvironment_GetUIPropertyAsUUIDPtr m_UIEnvironment_GetUIPropertyAsUUID; PLibMCEnvUIEnvironment_GetUIPropertyAsDoublePtr m_UIEnvironment_GetUIPropertyAsDouble; diff --git a/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.hpp b/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.hpp index c4269a6a..bad24b28 100644 --- a/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.hpp +++ b/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.hpp @@ -3681,6 +3681,10 @@ class CUIEnvironment : public CBase { inline LibMCEnv_double GetMachineParameterAsDouble(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName); inline LibMCEnv_int64 GetMachineParameterAsInteger(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName); inline bool GetMachineParameterAsBool(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName); + inline void SetMachineParameter(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const std::string & sValue); + inline void SetMachineParameterAsDouble(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const LibMCEnv_double dValue); + inline void SetMachineParameterAsInteger(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const LibMCEnv_int64 nValue); + inline void SetMachineParameterAsBool(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const bool bValue); inline std::string GetUIProperty(const std::string & sElementPath, const std::string & sPropertyName); inline std::string GetUIPropertyAsUUID(const std::string & sElementPath, const std::string & sPropertyName); inline LibMCEnv_double GetUIPropertyAsDouble(const std::string & sElementPath, const std::string & sPropertyName); @@ -4836,6 +4840,10 @@ class CUIEnvironment : public CBase { pWrapperTable->m_UIEnvironment_GetMachineParameterAsDouble = nullptr; pWrapperTable->m_UIEnvironment_GetMachineParameterAsInteger = nullptr; pWrapperTable->m_UIEnvironment_GetMachineParameterAsBool = nullptr; + pWrapperTable->m_UIEnvironment_SetMachineParameter = nullptr; + pWrapperTable->m_UIEnvironment_SetMachineParameterAsDouble = nullptr; + pWrapperTable->m_UIEnvironment_SetMachineParameterAsInteger = nullptr; + pWrapperTable->m_UIEnvironment_SetMachineParameterAsBool = nullptr; pWrapperTable->m_UIEnvironment_GetUIProperty = nullptr; pWrapperTable->m_UIEnvironment_GetUIPropertyAsUUID = nullptr; pWrapperTable->m_UIEnvironment_GetUIPropertyAsDouble = nullptr; @@ -14011,6 +14019,42 @@ class CUIEnvironment : public CBase { if (pWrapperTable->m_UIEnvironment_GetMachineParameterAsBool == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_UIEnvironment_SetMachineParameter = (PLibMCEnvUIEnvironment_SetMachineParameterPtr) GetProcAddress(hLibrary, "libmcenv_uienvironment_setmachineparameter"); + #else // _WIN32 + pWrapperTable->m_UIEnvironment_SetMachineParameter = (PLibMCEnvUIEnvironment_SetMachineParameterPtr) dlsym(hLibrary, "libmcenv_uienvironment_setmachineparameter"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_UIEnvironment_SetMachineParameter == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_UIEnvironment_SetMachineParameterAsDouble = (PLibMCEnvUIEnvironment_SetMachineParameterAsDoublePtr) GetProcAddress(hLibrary, "libmcenv_uienvironment_setmachineparameterasdouble"); + #else // _WIN32 + pWrapperTable->m_UIEnvironment_SetMachineParameterAsDouble = (PLibMCEnvUIEnvironment_SetMachineParameterAsDoublePtr) dlsym(hLibrary, "libmcenv_uienvironment_setmachineparameterasdouble"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_UIEnvironment_SetMachineParameterAsDouble == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_UIEnvironment_SetMachineParameterAsInteger = (PLibMCEnvUIEnvironment_SetMachineParameterAsIntegerPtr) GetProcAddress(hLibrary, "libmcenv_uienvironment_setmachineparameterasinteger"); + #else // _WIN32 + pWrapperTable->m_UIEnvironment_SetMachineParameterAsInteger = (PLibMCEnvUIEnvironment_SetMachineParameterAsIntegerPtr) dlsym(hLibrary, "libmcenv_uienvironment_setmachineparameterasinteger"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_UIEnvironment_SetMachineParameterAsInteger == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_UIEnvironment_SetMachineParameterAsBool = (PLibMCEnvUIEnvironment_SetMachineParameterAsBoolPtr) GetProcAddress(hLibrary, "libmcenv_uienvironment_setmachineparameterasbool"); + #else // _WIN32 + pWrapperTable->m_UIEnvironment_SetMachineParameterAsBool = (PLibMCEnvUIEnvironment_SetMachineParameterAsBoolPtr) dlsym(hLibrary, "libmcenv_uienvironment_setmachineparameterasbool"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_UIEnvironment_SetMachineParameterAsBool == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_UIEnvironment_GetUIProperty = (PLibMCEnvUIEnvironment_GetUIPropertyPtr) GetProcAddress(hLibrary, "libmcenv_uienvironment_getuiproperty"); #else // _WIN32 @@ -18690,6 +18734,22 @@ class CUIEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_UIEnvironment_GetMachineParameterAsBool == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_uienvironment_setmachineparameter", (void**)&(pWrapperTable->m_UIEnvironment_SetMachineParameter)); + if ( (eLookupError != 0) || (pWrapperTable->m_UIEnvironment_SetMachineParameter == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcenv_uienvironment_setmachineparameterasdouble", (void**)&(pWrapperTable->m_UIEnvironment_SetMachineParameterAsDouble)); + if ( (eLookupError != 0) || (pWrapperTable->m_UIEnvironment_SetMachineParameterAsDouble == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcenv_uienvironment_setmachineparameterasinteger", (void**)&(pWrapperTable->m_UIEnvironment_SetMachineParameterAsInteger)); + if ( (eLookupError != 0) || (pWrapperTable->m_UIEnvironment_SetMachineParameterAsInteger == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcenv_uienvironment_setmachineparameterasbool", (void**)&(pWrapperTable->m_UIEnvironment_SetMachineParameterAsBool)); + if ( (eLookupError != 0) || (pWrapperTable->m_UIEnvironment_SetMachineParameterAsBool == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_uienvironment_getuiproperty", (void**)&(pWrapperTable->m_UIEnvironment_GetUIProperty)); if ( (eLookupError != 0) || (pWrapperTable->m_UIEnvironment_GetUIProperty == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -32898,6 +32958,54 @@ class CUIEnvironment : public CBase { return resultValue; } + /** + * CUIEnvironment::SetMachineParameter - sets a string parameter of a state machine + * @param[in] sMachineInstance - State machine instance name + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] sValue - New Parameter Value + */ + void CUIEnvironment::SetMachineParameter(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const std::string & sValue) + { + CheckError(m_pWrapper->m_WrapperTable.m_UIEnvironment_SetMachineParameter(m_pHandle, sMachineInstance.c_str(), sParameterGroup.c_str(), sParameterName.c_str(), sValue.c_str())); + } + + /** + * CUIEnvironment::SetMachineParameterAsDouble - sets a double parameter of a state machine + * @param[in] sMachineInstance - State machine instance name + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] dValue - New Parameter Value + */ + void CUIEnvironment::SetMachineParameterAsDouble(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const LibMCEnv_double dValue) + { + CheckError(m_pWrapper->m_WrapperTable.m_UIEnvironment_SetMachineParameterAsDouble(m_pHandle, sMachineInstance.c_str(), sParameterGroup.c_str(), sParameterName.c_str(), dValue)); + } + + /** + * CUIEnvironment::SetMachineParameterAsInteger - sets an integer parameter of a state machine + * @param[in] sMachineInstance - State machine instance name + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] nValue - New Parameter Value + */ + void CUIEnvironment::SetMachineParameterAsInteger(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const LibMCEnv_int64 nValue) + { + CheckError(m_pWrapper->m_WrapperTable.m_UIEnvironment_SetMachineParameterAsInteger(m_pHandle, sMachineInstance.c_str(), sParameterGroup.c_str(), sParameterName.c_str(), nValue)); + } + + /** + * CUIEnvironment::SetMachineParameterAsBool - sets a boolean parameter of a state machine + * @param[in] sMachineInstance - State machine instance name + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] bValue - New Parameter Value + */ + void CUIEnvironment::SetMachineParameterAsBool(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const bool bValue) + { + CheckError(m_pWrapper->m_WrapperTable.m_UIEnvironment_SetMachineParameterAsBool(m_pHandle, sMachineInstance.c_str(), sParameterGroup.c_str(), sParameterName.c_str(), bValue)); + } + /** * CUIEnvironment::GetUIProperty - returns a string property of a UI element on the client * @param[in] sElementPath - Path of UI Element. Fails if element does not exist. diff --git a/Framework/InterfacesCore/libmcenv_abi.hpp b/Framework/InterfacesCore/libmcenv_abi.hpp index 6f55059c..e736aacf 100644 --- a/Framework/InterfacesCore/libmcenv_abi.hpp +++ b/Framework/InterfacesCore/libmcenv_abi.hpp @@ -10830,6 +10830,54 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_uienvironment_getmachineparameterasint */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_uienvironment_getmachineparameterasbool(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, bool * pValue); +/** +* sets a string parameter of a state machine +* +* @param[in] pUIEnvironment - UIEnvironment instance. +* @param[in] pMachineInstance - State machine instance name +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] pValue - New Parameter Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_uienvironment_setmachineparameter(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, const char * pValue); + +/** +* sets a double parameter of a state machine +* +* @param[in] pUIEnvironment - UIEnvironment instance. +* @param[in] pMachineInstance - State machine instance name +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] dValue - New Parameter Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_uienvironment_setmachineparameterasdouble(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, LibMCEnv_double dValue); + +/** +* sets an integer parameter of a state machine +* +* @param[in] pUIEnvironment - UIEnvironment instance. +* @param[in] pMachineInstance - State machine instance name +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] nValue - New Parameter Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_uienvironment_setmachineparameterasinteger(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, LibMCEnv_int64 nValue); + +/** +* sets a boolean parameter of a state machine +* +* @param[in] pUIEnvironment - UIEnvironment instance. +* @param[in] pMachineInstance - State machine instance name +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] bValue - New Parameter Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_uienvironment_setmachineparameterasbool(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, bool bValue); + /** * returns a string property of a UI element on the client * diff --git a/Framework/InterfacesCore/libmcenv_interfaces.hpp b/Framework/InterfacesCore/libmcenv_interfaces.hpp index c68df9f6..7d8e0a4f 100644 --- a/Framework/InterfacesCore/libmcenv_interfaces.hpp +++ b/Framework/InterfacesCore/libmcenv_interfaces.hpp @@ -8328,6 +8328,42 @@ class IUIEnvironment : public virtual IBase { */ virtual bool GetMachineParameterAsBool(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName) = 0; + /** + * IUIEnvironment::SetMachineParameter - sets a string parameter of a state machine + * @param[in] sMachineInstance - State machine instance name + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] sValue - New Parameter Value + */ + virtual void SetMachineParameter(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const std::string & sValue) = 0; + + /** + * IUIEnvironment::SetMachineParameterAsDouble - sets a double parameter of a state machine + * @param[in] sMachineInstance - State machine instance name + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] dValue - New Parameter Value + */ + virtual void SetMachineParameterAsDouble(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const LibMCEnv_double dValue) = 0; + + /** + * IUIEnvironment::SetMachineParameterAsInteger - sets an integer parameter of a state machine + * @param[in] sMachineInstance - State machine instance name + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] nValue - New Parameter Value + */ + virtual void SetMachineParameterAsInteger(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const LibMCEnv_int64 nValue) = 0; + + /** + * IUIEnvironment::SetMachineParameterAsBool - sets a boolean parameter of a state machine + * @param[in] sMachineInstance - State machine instance name + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] bValue - New Parameter Value + */ + virtual void SetMachineParameterAsBool(const std::string & sMachineInstance, const std::string & sParameterGroup, const std::string & sParameterName, const bool bValue) = 0; + /** * IUIEnvironment::GetUIProperty - returns a string property of a UI element on the client * @param[in] sElementPath - Path of UI Element. Fails if element does not exist. diff --git a/Framework/InterfacesCore/libmcenv_interfacewrapper.cpp b/Framework/InterfacesCore/libmcenv_interfacewrapper.cpp index 8551f1df..119fcb76 100644 --- a/Framework/InterfacesCore/libmcenv_interfacewrapper.cpp +++ b/Framework/InterfacesCore/libmcenv_interfacewrapper.cpp @@ -32711,6 +32711,141 @@ LibMCEnvResult libmcenv_uienvironment_getmachineparameterasbool(LibMCEnv_UIEnvir } } +LibMCEnvResult libmcenv_uienvironment_setmachineparameter(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, const char * pValue) +{ + IBase* pIBaseClass = (IBase *)pUIEnvironment; + + try { + if (pMachineInstance == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterGroup == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pValue == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sMachineInstance(pMachineInstance); + std::string sParameterGroup(pParameterGroup); + std::string sParameterName(pParameterName); + std::string sValue(pValue); + IUIEnvironment* pIUIEnvironment = dynamic_cast(pIBaseClass); + if (!pIUIEnvironment) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + pIUIEnvironment->SetMachineParameter(sMachineInstance, sParameterGroup, sParameterName, sValue); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCEnvResult libmcenv_uienvironment_setmachineparameterasdouble(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, LibMCEnv_double dValue) +{ + IBase* pIBaseClass = (IBase *)pUIEnvironment; + + try { + if (pMachineInstance == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterGroup == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sMachineInstance(pMachineInstance); + std::string sParameterGroup(pParameterGroup); + std::string sParameterName(pParameterName); + IUIEnvironment* pIUIEnvironment = dynamic_cast(pIBaseClass); + if (!pIUIEnvironment) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + pIUIEnvironment->SetMachineParameterAsDouble(sMachineInstance, sParameterGroup, sParameterName, dValue); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCEnvResult libmcenv_uienvironment_setmachineparameterasinteger(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, LibMCEnv_int64 nValue) +{ + IBase* pIBaseClass = (IBase *)pUIEnvironment; + + try { + if (pMachineInstance == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterGroup == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sMachineInstance(pMachineInstance); + std::string sParameterGroup(pParameterGroup); + std::string sParameterName(pParameterName); + IUIEnvironment* pIUIEnvironment = dynamic_cast(pIBaseClass); + if (!pIUIEnvironment) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + pIUIEnvironment->SetMachineParameterAsInteger(sMachineInstance, sParameterGroup, sParameterName, nValue); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCEnvResult libmcenv_uienvironment_setmachineparameterasbool(LibMCEnv_UIEnvironment pUIEnvironment, const char * pMachineInstance, const char * pParameterGroup, const char * pParameterName, bool bValue) +{ + IBase* pIBaseClass = (IBase *)pUIEnvironment; + + try { + if (pMachineInstance == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterGroup == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sMachineInstance(pMachineInstance); + std::string sParameterGroup(pParameterGroup); + std::string sParameterName(pParameterName); + IUIEnvironment* pIUIEnvironment = dynamic_cast(pIBaseClass); + if (!pIUIEnvironment) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + pIUIEnvironment->SetMachineParameterAsBool(sMachineInstance, sParameterGroup, sParameterName, bValue); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_uienvironment_getuiproperty(LibMCEnv_UIEnvironment pUIEnvironment, const char * pElementPath, const char * pPropertyName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer) { IBase* pIBaseClass = (IBase *)pUIEnvironment; @@ -36845,6 +36980,14 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_uienvironment_getmachineparameterasinteger; if (sProcName == "libmcenv_uienvironment_getmachineparameterasbool") *ppProcAddress = (void*) &libmcenv_uienvironment_getmachineparameterasbool; + if (sProcName == "libmcenv_uienvironment_setmachineparameter") + *ppProcAddress = (void*) &libmcenv_uienvironment_setmachineparameter; + if (sProcName == "libmcenv_uienvironment_setmachineparameterasdouble") + *ppProcAddress = (void*) &libmcenv_uienvironment_setmachineparameterasdouble; + if (sProcName == "libmcenv_uienvironment_setmachineparameterasinteger") + *ppProcAddress = (void*) &libmcenv_uienvironment_setmachineparameterasinteger; + if (sProcName == "libmcenv_uienvironment_setmachineparameterasbool") + *ppProcAddress = (void*) &libmcenv_uienvironment_setmachineparameterasbool; if (sProcName == "libmcenv_uienvironment_getuiproperty") *ppProcAddress = (void*) &libmcenv_uienvironment_getuiproperty; if (sProcName == "libmcenv_uienvironment_getuipropertyasuuid") diff --git a/Implementation/LibMCEnv/libmcenv_uienvironment.cpp b/Implementation/LibMCEnv/libmcenv_uienvironment.cpp index 739d1626..f0173b09 100644 --- a/Implementation/LibMCEnv/libmcenv_uienvironment.cpp +++ b/Implementation/LibMCEnv/libmcenv_uienvironment.cpp @@ -1198,3 +1198,35 @@ IMachineConfigurationHandler* CUIEnvironment::CreateMachineConfigurationHandler( { return new CMachineConfigurationHandler(m_pUISystemState->getDataModel()); } + +void CUIEnvironment::SetMachineParameter(const std::string& sMachineInstance, + const std::string& sParameterGroup, const std::string& sParameterName, const std::string& sValue) +{ + auto pParameterHandler = m_pUISystemState->getStateMachineData()->getParameterHandler(sMachineInstance); + auto pGroup = pParameterHandler->findGroup(sParameterGroup, true); + pGroup->setParameterValueByName(sParameterName, sValue); +} + +void CUIEnvironment::SetMachineParameterAsDouble(const std::string& sMachineInstance, + const std::string& sParameterGroup, const std::string& sParameterName, LibMCEnv_double dValue) +{ + auto pParameterHandler = m_pUISystemState->getStateMachineData()->getParameterHandler(sMachineInstance); + auto pGroup = pParameterHandler->findGroup(sParameterGroup, true); + pGroup->setDoubleParameterValueByName(sParameterName, dValue); +} + +void CUIEnvironment::SetMachineParameterAsInteger(const std::string& sMachineInstance, + const std::string& sParameterGroup, const std::string& sParameterName, LibMCEnv_int64 nValue) +{ + auto pParameterHandler = m_pUISystemState->getStateMachineData()->getParameterHandler(sMachineInstance); + auto pGroup = pParameterHandler->findGroup(sParameterGroup, true); + pGroup->setIntParameterValueByName(sParameterName, nValue); +} + +void CUIEnvironment::SetMachineParameterAsBool(const std::string& sMachineInstance, + const std::string& sParameterGroup, const std::string& sParameterName, bool bValue) +{ + auto pParameterHandler = m_pUISystemState->getStateMachineData()->getParameterHandler(sMachineInstance); + auto pGroup = pParameterHandler->findGroup(sParameterGroup, true); + pGroup->setBoolParameterValueByName(sParameterName, bValue); +} diff --git a/Implementation/LibMCEnv/libmcenv_uienvironment.hpp b/Implementation/LibMCEnv/libmcenv_uienvironment.hpp index 9ba33b23..095ae662 100644 --- a/Implementation/LibMCEnv/libmcenv_uienvironment.hpp +++ b/Implementation/LibMCEnv/libmcenv_uienvironment.hpp @@ -130,6 +130,15 @@ class CUIEnvironment : public virtual IUIEnvironment, public virtual CBase { bool GetMachineParameterAsBool(const std::string& sMachineInstance, const std::string& sParameterGroup, const std::string& sParameterName) override; + void SetMachineParameter(const std::string& sMachineInstance, const std::string& sParameterGroup, const std::string& sParameterName, const std::string& sValue) override; + + void SetMachineParameterAsDouble(const std::string& sMachineInstance, const std::string& sParameterGroup, const std::string& sParameterName, LibMCEnv_double dValue) override; + + void SetMachineParameterAsInteger(const std::string& sMachineInstance, const std::string& sParameterGroup, const std::string& sParameterName, LibMCEnv_int64 nValue) override; + + void SetMachineParameterAsBool(const std::string& sMachineInstance, const std::string& sParameterGroup, const std::string& sParameterName, bool bValue) override; + + std::string GetUIProperty(const std::string& sElementPath, const std::string& sPropertyName) override; std::string GetUIPropertyAsUUID(const std::string& sElementPath, const std::string& sPropertyName) override;