g2o
Loading...
Searching...
No Matches
viewer_properties_widget.cpp
Go to the documentation of this file.
1// g2o - General Graph Optimization
2// Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard
3//
4// This file is part of g2o.
5//
6// g2o is free software: you can redistribute it and/or modify
7// it under the terms of the GNU General Public License as published by
8// the Free Software Foundation, either version 3 of the License, or
9// (at your option) any later version.
10//
11// g2o is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15//
16// You should have received a copy of the GNU General Public License
17// along with g2o. If not, see <http://www.gnu.org/licenses/>.
18
20
21#include <QLineEdit>
22#include <cassert>
23#include <iostream>
24
25#include "g2o/stuff/property.h"
26#include "g2o_qglviewer.h"
27
28#ifdef __GNUC__
29#include <cxxabi.h>
30#endif
31
32using namespace std;
33
34using namespace g2o;
35
39static std::string demangleName(const std::string& fullPropName) {
40#ifdef __GNUC__
41 // find :: and extract the mangled class name from the whole string
42 string mangledName;
43 string propName;
44 string::size_type found = fullPropName.rfind("::");
45 if (found != string::npos) {
46 mangledName = fullPropName.substr(0, found);
47 propName = fullPropName.substr(found);
48 } else {
49 mangledName = propName;
50 }
51
52 int status;
53 char* s = abi::__cxa_demangle(mangledName.c_str(), 0, 0, &status);
54 if (status != 0) {
55 free(s);
56 return fullPropName;
57 } else {
58 std::string demangled(s);
59 free(s);
60 return demangled + propName;
61 }
62#else
63 // TODO for other compilers
64 return fullPropName;
65#endif
66}
67
69 : PropertiesWidget(parent), _viewer(nullptr) {}
70
72
75
76 // draw with the new properties
78 _viewer->update();
79}
80
85
87 const std::string& propertyName) const {
88 return demangleName(propertyName);
89}
void setProperties(g2o::PropertyMap *properties)
virtual void applyProperties()
void setViewer(g2o::G2oQGLViewer *viewer)
ViewerPropertiesWidget(QWidget *parent=0)
virtual std::string humanReadablePropName(const std::string &probName) const
OpenGL based viewer for the graph.
void setUpdateDisplay(bool updateDisplay)
DrawAction::Parameters * parameters()
Definition jet.h:876
static std::string demangleName(const std::string &fullPropName)