Skip to content
Snippets Groups Projects
Commit 72352859 authored by Raphael's avatar Raphael
Browse files

use the optimised way to get valueChangedSignal of a DescribedWidget for...

use the optimised way to get valueChangedSignal of a DescribedWidget for functions in the RobotUnitGuiPlugin
parent 9664906f
No related branches found
No related tags found
No related merge requests found
......@@ -392,26 +392,17 @@ namespace armarx
head->addItem(new QSpacerItem {0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum});
l->addLayout(head);
}
params = WidgetDescription::makeDescribedWidget(w);
params = WidgetDescription::makeDescribedWidget(w, this);
paramValues = params->getVariants();
params->setContentsMargins(0, 0, 0, 0);
l->addWidget(params);
connect(params, SIGNAL(valueChangedSignal(std::string, VariantBasePtr)), this, SLOT(paramsChanged()));
}
compress->addItem(new QSpacerItem {0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum});
}
void RobotUnitLVL1ControllersWidgetRemoteFunction::paramsChanged()
{
if (execOnParamChange->isChecked())
{
execFunction();
}
}
void RobotUnitLVL1ControllersWidgetRemoteFunction::execFunction()
{
const auto variants = params->getVariants();
if (variants.empty())
if (paramValues.empty())
{
ARMARX_INFO << deactivateSpam(1) << "calling function " << functionName << " with no parameters\n";
}
......@@ -419,7 +410,7 @@ namespace armarx
{
std::stringstream ss;
ss << "calling function " << functionName << " with parameters:\n";
for (const auto& pair : variants)
for (const auto& pair : paramValues)
{
if (pair.second)
{
......@@ -440,6 +431,15 @@ namespace armarx
}
ARMARX_INFO << deactivateSpam(1) << ss.str();
}
ctrl->callDescribedFunction(functionName, variants);
ctrl->callDescribedFunction(functionName, paramValues);
}
void RobotUnitLVL1ControllersWidgetRemoteFunction::valueChangedSlot(std::string name, VariantBasePtr value)
{
paramValues[std::move(name)] = std::move(value);
if (execOnParamChange->isChecked())
{
execFunction();
}
}
}
......@@ -128,13 +128,12 @@ namespace armarx
};
class RobotUnitLVL1ControllersWidgetRemoteFunction : public QWidget
class RobotUnitLVL1ControllersWidgetRemoteFunction : public WidgetDescription::ValueChangedListenerInterface
{
Q_OBJECT
public:
RobotUnitLVL1ControllersWidgetRemoteFunction(const std::string& functionName, const LVL1ControllerInterfacePrx& ctrl, const WidgetDescription::WidgetPtr& w);
private slots:
void paramsChanged();
void execFunction();
private:
std::string functionName;
......@@ -142,6 +141,11 @@ namespace armarx
QCheckBox* execOnParamChange;
WidgetDescription::DescribedWidgetBase* params;
std::map<std::string, VariantBasePtr> paramValues;
public slots:
virtual void valueChangedSlot(std::string name, VariantBasePtr value) override;
};
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment