mirror of
https://github.com/moveit/moveit_task_constructor.git
synced 2025-11-04 14:49:57 +08:00
save panel settings
This commit is contained in:
parent
3d07e34522
commit
2451d0c4d5
@ -146,6 +146,16 @@ void TaskDisplay::reset()
|
||||
trajectory_visual_->reset();
|
||||
}
|
||||
|
||||
void TaskDisplay::save(rviz::Config config) const
|
||||
{
|
||||
Display::save(config);
|
||||
}
|
||||
|
||||
void TaskDisplay::load(const rviz::Config &config)
|
||||
{
|
||||
Display::load(config);
|
||||
}
|
||||
|
||||
void TaskDisplay::onEnable()
|
||||
{
|
||||
Display::onEnable();
|
||||
|
||||
@ -77,8 +77,10 @@ public:
|
||||
|
||||
void loadRobotModel();
|
||||
|
||||
virtual void update(float wall_dt, float ros_dt);
|
||||
virtual void reset();
|
||||
void update(float wall_dt, float ros_dt) override;
|
||||
void reset() override;
|
||||
void save(rviz::Config config) const;
|
||||
void load(const rviz::Config &config);
|
||||
|
||||
// overrides from Display
|
||||
virtual void onInitialize();
|
||||
|
||||
@ -142,11 +142,13 @@ void TaskPanel::onInitialize()
|
||||
void TaskPanel::save(rviz::Config config) const
|
||||
{
|
||||
rviz::Panel::save(config);
|
||||
d_ptr->tasks_widget->save(config.mapMakeChild("tasks_view"));
|
||||
}
|
||||
|
||||
void TaskPanel::load(const rviz::Config& config)
|
||||
{
|
||||
rviz::Panel::load(config);
|
||||
d_ptr->tasks_widget->load(config.mapGetChild("tasks_view"));
|
||||
}
|
||||
|
||||
void TaskPanel::showStageDockWidget()
|
||||
@ -247,6 +249,57 @@ TaskView::TaskView(QWidget *parent)
|
||||
onCurrentStageChanged(d->tasks_view->currentIndex(), QModelIndex());
|
||||
}
|
||||
|
||||
void TaskView::save(rviz::Config config)
|
||||
{
|
||||
auto writeSplitterSizes = [&config](QSplitter* splitter, const QString& key) {
|
||||
rviz::Config group = config.mapMakeChild(key);
|
||||
for (int s : splitter->sizes()) {
|
||||
rviz::Config item = group.listAppendNew();
|
||||
item.setValue(s);
|
||||
}
|
||||
};
|
||||
writeSplitterSizes(d_ptr->tasks_property_splitter, "property_splitter");
|
||||
writeSplitterSizes(d_ptr->tasks_solutions_splitter, "solutions_splitter");
|
||||
|
||||
auto writeColumnSizes = [&config](QTreeView* view, const QString& key) {
|
||||
rviz::Config group = config.mapMakeChild(key);
|
||||
for (int c = 0, end = view->header()->count(); c != end; ++c) {
|
||||
rviz::Config item = group.listAppendNew();
|
||||
item.setValue(view->columnWidth(c));
|
||||
}
|
||||
};
|
||||
writeColumnSizes(d_ptr->tasks_view, "tasks_view_columns");
|
||||
writeColumnSizes(d_ptr->solutions_view, "solutions_view_columns");
|
||||
}
|
||||
|
||||
void TaskView::load(const rviz::Config &config)
|
||||
{
|
||||
if (!config.isValid()) return;
|
||||
|
||||
auto readSizes = [&config](const QString& key) {
|
||||
rviz::Config group = config.mapGetChild(key);
|
||||
QList<int> sizes, empty;
|
||||
for (int i = 0; i < group.listLength(); ++i) {
|
||||
rviz::Config item = group.listChildAt(i);
|
||||
if (item.getType() != rviz::Config::Value) return empty;
|
||||
QVariant value = item.getValue();
|
||||
bool ok = false;
|
||||
int int_value = value.toInt(&ok);
|
||||
if (!ok) return empty;
|
||||
sizes << int_value;
|
||||
}
|
||||
return sizes;
|
||||
};
|
||||
d_ptr->tasks_property_splitter->setSizes(readSizes("property_splitter"));
|
||||
d_ptr->tasks_solutions_splitter->setSizes(readSizes("solutions_splitter"));
|
||||
|
||||
int column = 0;
|
||||
for (int w : readSizes("tasks_view_columns"))
|
||||
d_ptr->tasks_view->setColumnWidth(++column, w);
|
||||
for (int w : readSizes("solutions_view_columns"))
|
||||
d_ptr->tasks_view->setColumnWidth(++column, w);
|
||||
}
|
||||
|
||||
void TaskView::addTask()
|
||||
{
|
||||
QModelIndex current = d_ptr->tasks_view->currentIndex();
|
||||
|
||||
@ -97,6 +97,9 @@ class TaskView : public QWidget {
|
||||
public:
|
||||
TaskView(QWidget* parent = 0);
|
||||
|
||||
void save(rviz::Config config);
|
||||
void load(const rviz::Config& config);
|
||||
|
||||
public Q_SLOTS:
|
||||
void addTask();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user