24 #include <mars/data_broker/DataBrokerInterface.h> 26 #include <QVBoxLayout> 32 namespace data_broker_gui {
34 using data_broker::DataItem;
35 using data_broker::DataInfo;
36 using data_broker::DataBrokerInterface;
44 main_gui::BaseWidget(parent, cfg,
"DataBrokerWidget"),
45 mainLib(mainLib), libManager(libManager),
46 pDialog(new main_gui::PropertyDialog(parent)),
47 dataBroker(_dataBroker),
52 setStyleSheet(
"padding:0px;");
53 QVBoxLayout *vLayout =
new QVBoxLayout();
54 vLayout->setContentsMargins(1, 1, 1, 1);
55 pDialog->setStyleSheet(
"margin: 0px;");
68 std::vector<DataInfo> infoList;
69 std::vector<DataInfo>::iterator it;
72 for(it=infoList.begin(); it!=infoList.end(); ++it) {
93 newParam.
info = _info;
108 dataPackage.
get(
"dataId", (
long*)&newInfo.
dataId);
109 dataPackage.
get(
"flags", (
int*)&newInfo.
flags);
113 newInfo.
dataName,
"_REALTIME_", 250);
117 map<unsigned long, paramWrapper>::iterator it;
122 it->second.dataPackage = dataPackage;
138 map<unsigned long, paramWrapper>::iterator it;
139 map<unsigned long, paramWrapper> tmpList;
145 for(
unsigned int i = 0; i < it->second.dataPackage.size(); ++i) {
146 std::map<QString, QVariant> attr;
147 attr[
"singleStep"] = 0.01;
148 attr[
"decimals"] = 7;
150 path.append(it->second.info.groupName);
152 path.append(it->second.info.dataName);
153 if(it->second.dataPackage.size() > 1) {
155 path.append(it->second.dataPackage[i].getName());
157 item = &it->second.dataPackage[i];
158 QtVariantProperty *guiElem;
184 QString::fromStdString(item->
s));
191 guiElem->setEnabled(
false);
193 it->second.guiElements.push_back(guiElem);
194 if(!it->second.guiElements.empty()) {
203 if(it->second.guiElements.empty()) {
204 tmpList[it->first] = it->second;
217 if(it !=
paramList.end() && !it->second.guiElements.empty()) {
218 for(
unsigned int i = 0; i < it->second.guiElements.size(); ++i) {
219 QtVariantProperty *guiElem = it->second.guiElements[i];
220 if(!guiElem)
continue;
222 item = &it->second.dataPackage[i];
226 guiElem->setValue(QVariant(item->
d));
230 guiElem->setValue(QVariant(item->
f));
234 guiElem->setValue(QVariant(item->
i));
238 guiElem->setValue(QVariant((
int)item->
l));
242 guiElem->setValue(QVariant(item->
b));
246 guiElem->setValue(QVariant(QString::fromStdString(item->
s)));
264 map<QtVariantProperty*, paramWrapper>::iterator it;
265 map<QtVariantProperty*, paramWrapper*>::iterator it3;
276 std::vector<DataInfo> infoList;
277 std::vector<DataInfo>::iterator it;
278 bool newShowAll = value.toBool();
288 map<QtVariantProperty*, paramWrapper*>::iterator bar;
301 for(it=infoList.begin(); it!=infoList.end(); ++it) {
315 std::vector<QtVariantProperty*>::iterator it2;
316 for(it2 = it3->second->guiElements.begin();
317 it2 != it3->second->guiElements.end() && *it2 != property;
320 item = &it3->second->dataPackage[idx];
325 dValue = value.toDouble();
326 if(dValue != item->
d) {
332 fValue = value.toFloat();
333 if(fValue != item->
f) {
339 lValue = value.toLongLong();
340 if(lValue != item->
l) {
346 iValue = value.toInt();
347 if(iValue != item->
i) {
353 bValue = value.toBool();
354 if(bValue != item->
b) {
360 sValue = value.toString().toStdString();
361 if(sValue != item->
s) {
372 it3->second->dataPackage);
void destroyWindow(QWidget *w)
virtual bool unregisterAsyncReceiver(ReceiverInterface *receiver, const std::string &groupName, const std::string &dataName)=0
unregister a receiver from receiving callbacks for certain group/data
std::string dataName
A name describing this DataPackage within the group The groupName-dataName combination should be uniq...
class containing a single value.
void setPropCallback(PropertyCallback *pc)
Sets the callback object.
virtual bool registerSyncReceiver(ReceiverInterface *receiver, const std::string &groupName, const std::string &dataName, int callbackParam=0)=0
register a receiver to receive a synchronous callback for a certain stream
virtual bool registerTimedReceiver(ReceiverInterface *receiver, const std::string &groupName, const std::string &dataName, const std::string &timerName, int updatePeriod, int callbackParam=0)=0
registers a receiver for a group/data with a timer
void removeGenericProperty(QtVariantProperty *property)
Removes the property.
virtual bool unregisterTimedReceiver(ReceiverInterface *receiver, const std::string &groupName, const std::string &dataName, const std::string &timerName)=0
unregister a receiver from receiving callbacks from a timer for certain group/data ...
bool get(const std::string &itemName, T *val) const
gets the value of the DataItem with the given name
unsigned long dataId
A unique numeric identifier assigned by the DataBroker.
virtual const std::vector< DataInfo > getDataList(PackageFlag flag=DATA_PACKAGE_NO_FLAG) const =0
get a list of all DataInfo items currently in the DataBroker
std::string groupName
A name describing the group/category this belongs to.
void setButtonBoxVisibility(bool visible)
Sets the visibility of the button box.
bool isPropertyVisible(QtProperty *prop) const
LibInterface * getLibrary(const std::string &libName)
Copyright 2012, DFKI GmbH Robotics Innovation Center.
virtual unsigned long pushData(const std::string &groupName, const std::string &dataName, const DataPackage &dataPackage, const ReceiverInterface *producer, PackageFlag flags)=0
pushes a DataPackage into the DataBroker
virtual bool unregisterSyncReceiver(ReceiverInterface *receiver, const std::string &groupName, const std::string &dataName)=0
unregister a receiver from receiving callbacks for certain group/data
DataType type
the type of the DataItem
virtual const DataPackage getDataPackage(unsigned long dataId) const =0
get the DataPackage with a given dataId
data_broker::DataPackage dataPackage
Class containing information about a DataPackage.
A collection of DataItems.
The interface every DataBroker should implement.
QtVariantProperty * addGenericProperty(const std::string &path, int type, const QVariant &value, std::map< QString, QVariant > *attributes=NULL, QStringList *options=NULL)
Creates a property.
data_broker::DataInfo info
ErrorNumber releaseLibrary(const std::string &libName)
Releases a previously acquired library.