diff --git a/source/ArmarXGui/libraries/ArmarXGuiComponentPlugins/RemoteGuiComponentPlugin.cpp b/source/ArmarXGui/libraries/ArmarXGuiComponentPlugins/RemoteGuiComponentPlugin.cpp index 180037ef3c4cabf630474faea42227268a7a85be..9c3d69430d80cb61728deb97891fb75ab2988b43 100644 --- a/source/ArmarXGui/libraries/ArmarXGuiComponentPlugins/RemoteGuiComponentPlugin.cpp +++ b/source/ArmarXGui/libraries/ArmarXGuiComponentPlugins/RemoteGuiComponentPlugin.cpp @@ -58,6 +58,25 @@ namespace armarx::plugins create(name, data); } + void RemoteGuiComponentPlugin::createOrUpdateTab(const std::string& name, const RemoteGui::WidgetPtr& widget, + unsigned long guiTaskPeriod) + { + std::lock_guard g{_tabsMutex}; + if (!hasTab(name)) + { + throw armarx::LocalException("Can only update Tab with a name for an already existing Tab"); + } + auto& data = _tabs[name]; + if (data.task) + { + data.task->stop(); + data.task = nullptr; + } + data.taskPeriod = guiTaskPeriod; + data.widget = widget; + create(name, data); + } + RemoteGui::TabProxy& RemoteGuiComponentPlugin::getTab(const std::string& name) { ARMARX_CHECK_EXPRESSION(hasTab(name)); diff --git a/source/ArmarXGui/libraries/ArmarXGuiComponentPlugins/RemoteGuiComponentPlugin.h b/source/ArmarXGui/libraries/ArmarXGuiComponentPlugins/RemoteGuiComponentPlugin.h index c1a1324fef74824065e3a802916367bb13303d36..bb45dee6a09d8b2612781e614ce6351cc7d70eb0 100644 --- a/source/ArmarXGui/libraries/ArmarXGuiComponentPlugins/RemoteGuiComponentPlugin.h +++ b/source/ArmarXGui/libraries/ArmarXGuiComponentPlugins/RemoteGuiComponentPlugin.h @@ -68,6 +68,10 @@ namespace armarx::plugins TabTask guiTaskFnc, unsigned long guiTaskPeriod = 10); + void createOrUpdateTab(const std::string& name, + const RemoteGui::WidgetPtr& widget, + unsigned long guiTaskPeriod = 10); + template<class T> enable_if_auto_gui_cfg<T> createOrUpdateTab(