33 const QSize TermNode::LiteralNodeSize(50, 50);
34 const QSize TermNode::ExpressionNodeSize(30, 30);
35 const QSize TermNode::ConditionRootNodeSize(50, 50);
38 QTableWidget* checksTable,
42 ConditionHandlerInterfacePrx handler) :
43 TreeNode(scene), conditionId(conditionId), manager(manager), handler(handler)
46 this->checksTable = checksTable;
52 switch (term->getType())
57 graphicsItem->
setPixmap(QPixmap(
":/icons/arrow-right.png"));
66 OperationPtr::dynamicCast(term)->getOperationString().c_str());
73 graphicsItem->
setPixmap(QPixmap(
":/icons/wave.png"));
85 graphicsItem->setToolTip(ss.str().c_str());
99 scene->addItem(graphicsItem);
100 graphicsItem->hide();
103 if (checksTable && (term->getType() == eLiteral))
105 updateChecksTable(term);
119 graphicsItem->
setRect(boundingBox);
120 graphicsItem->show();
132 std::unique_lock lock(dataMutex);
137 VariantPtr var = VariantPtr::dynamicCast(curDatafield->getDataField());
138 auto valueString = var->getOutputValueOnly();
139 return QString::fromStdString(valueString);
141 catch (std::exception& e)
145 return "Retrieval Failed";
157 std::unique_lock lock(dataMutex);
161 QTableWidgetItem* item =
new QTableWidgetItem(
"true");
163 checksTable->setItem(literalRow,
eStateCol, item);
168 QTableWidgetItem* item =
new QTableWidgetItem(
"false");
170 checksTable->setItem(literalRow,
eStateCol, item);
178 std::unique_lock lock(dataMutex);
181 CheckConfiguration config = literal->getCheckConfiguration();
184 checksTable->insertRow(checksTable->rowCount());
185 literalRow = checksTable->rowCount() - 1;
189 DataFieldIdentifierPtr::dynamicCast(config.dataFieldIdentifier);
191 if (dataFieldIdentifier)
193 literaldatafieldName = dataFieldIdentifier->getIdentifierStr().c_str();
194 checksTable->setItem(
197 new QTableWidgetItem(dataFieldIdentifier->getIdentifierStr().c_str()));
198 ObserverInterfacePrx prx =
199 manager->getProxy<ObserverInterfacePrx>(dataFieldIdentifier->getObserverName());
203 if (prx->existsChannel(dataFieldIdentifier->channelName))
206 prx, dataFieldIdentifier->channelName, dataFieldIdentifier->datafieldName);
209 catch (std::exception& e)
217 checksTable->setItem(literalRow,
eDataFieldCol,
new QTableWidgetItem(
"NULL"));
218 literaldatafieldName =
"";
221 ARMARX_INFO <<
"updating " << dataFieldIdentifier->getIdentifierStr();
224 checksTable->setItem(
225 literalRow,
eCheckTypeCol,
new QTableWidgetItem(config.checkName.c_str()));
228 ParameterList::iterator iter = config.checkParameters.begin();
229 std::stringstream parameters;
231 while (iter != config.checkParameters.end())
233 VariantPtr var = VariantPtr::dynamicCast(*iter);
234 parameters << var <<
", ";
238 checksTable->setItem(
239 literalRow,
eParametersCol,
new QTableWidgetItem(parameters.str().c_str()));
247 connect(
this, SIGNAL(
literalClicked(
int)), checksTable, SLOT(selectRow(
int)));
254 checksTable->resizeColumnsToContents();
262 std::unique_lock lock(dataMutex);
263 truthy = curDatafield && literaldatafieldName ==
264 curDatafield->getDataFieldIdentifier()->getIdentifierStr();
277 if (term->getType() == eLiteral)
286 QList<QTableWidgetItem*> selectedItems = checksTable->selectedItems();
288 int size = selectedItems.size();
292 QTableWidgetItem* widget = selectedItems.front();
293 int row = checksTable->row(widget);
295 if (row == literalRow)
306 std::unique_lock lock(dataMutex);
307 checksTable->setItem(literalRow,
eCurrentValueCol,
new QTableWidgetItem(valueString));