243 lines
8.6 KiB
C++
243 lines
8.6 KiB
C++
/*
|
|
* Copyright (C) 2012 Open Source Robotics Foundation
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*/
|
|
|
|
#include "gazebo/common/Assert.hh"
|
|
|
|
#include "gazebo/gui/building/StairsInspectorDialog.hh"
|
|
#include "gazebo/gui/building/StairsInspectorDialogPrivate.hh"
|
|
|
|
using namespace gazebo;
|
|
using namespace gui;
|
|
|
|
/////////////////////////////////////////////////
|
|
StairsInspectorDialog::StairsInspectorDialog(QWidget *_parent)
|
|
: BaseInspectorDialog(_parent), dataPtr(new StairsInspectorDialogPrivate)
|
|
{
|
|
this->setObjectName("stairsInspectorDialog");
|
|
|
|
this->setWindowTitle(tr("Stairs Inspector"));
|
|
this->setWindowFlags(Qt::Window | Qt::WindowCloseButtonHint |
|
|
Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint);
|
|
|
|
QLabel *stairsLabel = new QLabel(tr("Stairs Name: "));
|
|
this->dataPtr->stairsNameLabel = new QLabel(tr(""));
|
|
|
|
QHBoxLayout *nameLayout = new QHBoxLayout;
|
|
nameLayout->addWidget(stairsLabel);
|
|
nameLayout->addWidget(this->dataPtr->stairsNameLabel);
|
|
|
|
QLabel *startXLabel = new QLabel(tr("x: "));
|
|
QLabel *startYLabel = new QLabel(tr("y: "));
|
|
|
|
this->dataPtr->startXSpinBox = new QDoubleSpinBox;
|
|
this->dataPtr->startXSpinBox->setRange(-1000, 1000);
|
|
this->dataPtr->startXSpinBox->setSingleStep(0.001);
|
|
this->dataPtr->startXSpinBox->setDecimals(3);
|
|
this->dataPtr->startXSpinBox->setValue(0.000);
|
|
this->dataPtr->startXSpinBox->setAlignment(Qt::AlignRight);
|
|
QLabel *startXUnitLabel = new QLabel(tr("m"));
|
|
startXUnitLabel->setMaximumWidth(40);
|
|
|
|
this->dataPtr->startYSpinBox = new QDoubleSpinBox;
|
|
this->dataPtr->startYSpinBox->setRange(-1000, 1000);
|
|
this->dataPtr->startYSpinBox->setSingleStep(0.001);
|
|
this->dataPtr->startYSpinBox->setDecimals(3);
|
|
this->dataPtr->startYSpinBox->setValue(0.000);
|
|
this->dataPtr->startYSpinBox->setAlignment(Qt::AlignRight);
|
|
QLabel *startYUnitLabel = new QLabel(tr("m"));
|
|
startYUnitLabel->setMaximumWidth(40);
|
|
|
|
QGridLayout *startXYLayout = new QGridLayout;
|
|
startXYLayout->addWidget(startXLabel, 0, 0);
|
|
startXYLayout->addWidget(this->dataPtr->startXSpinBox, 0, 1);
|
|
startXYLayout->addWidget(startXUnitLabel, 0, 2);
|
|
startXYLayout->addWidget(startYLabel, 1, 0);
|
|
startXYLayout->addWidget(this->dataPtr->startYSpinBox, 1, 1);
|
|
startXYLayout->addWidget(startYUnitLabel, 1, 2);
|
|
|
|
QGroupBox *positionGroupBox = new QGroupBox(tr("Position"));
|
|
positionGroupBox->setLayout(startXYLayout);
|
|
|
|
QLabel *widthLabel = new QLabel(tr("Width: "));
|
|
QLabel *depthLabel = new QLabel(tr("Depth: "));
|
|
QLabel *heightLabel = new QLabel(tr("Height: "));
|
|
|
|
this->dataPtr->widthSpinBox = new QDoubleSpinBox;
|
|
this->dataPtr->widthSpinBox->setRange(0, 1000);
|
|
this->dataPtr->widthSpinBox->setSingleStep(0.001);
|
|
this->dataPtr->widthSpinBox->setDecimals(3);
|
|
this->dataPtr->widthSpinBox->setValue(0.000);
|
|
this->dataPtr->widthSpinBox->setAlignment(Qt::AlignRight);
|
|
QLabel *widthUnitLabel = new QLabel(tr("m"));
|
|
widthUnitLabel->setMaximumWidth(40);
|
|
|
|
this->dataPtr->depthSpinBox = new QDoubleSpinBox;
|
|
this->dataPtr->depthSpinBox->setRange(0, 1000);
|
|
this->dataPtr->depthSpinBox->setSingleStep(0.001);
|
|
this->dataPtr->depthSpinBox->setDecimals(3);
|
|
this->dataPtr->depthSpinBox->setValue(0.000);
|
|
this->dataPtr->depthSpinBox->setAlignment(Qt::AlignRight);
|
|
QLabel *depthUnitLabel = new QLabel(tr("m"));
|
|
depthUnitLabel->setMaximumWidth(40);
|
|
|
|
this->dataPtr->heightSpinBox = new QDoubleSpinBox;
|
|
this->dataPtr->heightSpinBox->setRange(0, 1000);
|
|
this->dataPtr->heightSpinBox->setSingleStep(0.001);
|
|
this->dataPtr->heightSpinBox->setDecimals(3);
|
|
this->dataPtr->heightSpinBox->setValue(0.000);
|
|
this->dataPtr->heightSpinBox->setAlignment(Qt::AlignRight);
|
|
QLabel *heightUnitLabel = new QLabel(tr("m"));
|
|
heightUnitLabel->setMaximumWidth(40);
|
|
|
|
QLabel *stepsLabel = new QLabel(tr("# Steps: "));
|
|
this->dataPtr->stepsSpinBox = new QSpinBox;
|
|
this->dataPtr->stepsSpinBox->setRange(1, 1000);
|
|
this->dataPtr->stepsSpinBox->setSingleStep(1);
|
|
this->dataPtr->stepsSpinBox->setValue(1);
|
|
this->dataPtr->stepsSpinBox->setAlignment(Qt::AlignRight);
|
|
QLabel *stepsDummyLabel = new QLabel(tr(" "));
|
|
|
|
QGridLayout *sizeLayout = new QGridLayout;
|
|
sizeLayout->addWidget(widthLabel, 0, 0);
|
|
sizeLayout->addWidget(this->dataPtr->widthSpinBox, 0, 1);
|
|
sizeLayout->addWidget(widthUnitLabel, 0, 2);
|
|
sizeLayout->addWidget(depthLabel, 1, 0);
|
|
sizeLayout->addWidget(this->dataPtr->depthSpinBox, 1, 1);
|
|
sizeLayout->addWidget(depthUnitLabel, 1, 2);
|
|
sizeLayout->addWidget(heightLabel, 2, 0);
|
|
sizeLayout->addWidget(this->dataPtr->heightSpinBox, 2, 1);
|
|
sizeLayout->addWidget(heightUnitLabel, 2, 2);
|
|
sizeLayout->addWidget(stepsLabel, 3, 0);
|
|
sizeLayout->addWidget(this->dataPtr->stepsSpinBox, 3, 1);
|
|
sizeLayout->addWidget(stepsDummyLabel, 3, 2);
|
|
|
|
QGroupBox *sizeGroupBox = new QGroupBox(tr("Size"));
|
|
sizeGroupBox->setLayout(sizeLayout);
|
|
|
|
this->InitColorComboBox();
|
|
QHBoxLayout *colorLayout = new QHBoxLayout;
|
|
QLabel *colorLabel = new QLabel(tr("Color: "));
|
|
colorLayout->addWidget(colorLabel);
|
|
colorLayout->addWidget(this->colorComboBox);
|
|
|
|
this->InitTextureComboBox();
|
|
QHBoxLayout *textureLayout = new QHBoxLayout;
|
|
QLabel *textureLabel = new QLabel(tr("Texture: "));
|
|
textureLayout->addWidget(textureLabel);
|
|
textureLayout->addWidget(this->textureComboBox);
|
|
|
|
QHBoxLayout *buttonsLayout = new QHBoxLayout;
|
|
QPushButton *cancelButton = new QPushButton(tr("&Cancel"));
|
|
connect(cancelButton, SIGNAL(clicked()), this, SLOT(OnCancel()));
|
|
QPushButton *applyButton = new QPushButton(tr("&Apply"));
|
|
connect(applyButton, SIGNAL(clicked()), this, SLOT(OnApply()));
|
|
QPushButton *OKButton = new QPushButton(tr("&OK"));
|
|
OKButton->setDefault(true);
|
|
connect(OKButton, SIGNAL(clicked()), this, SLOT(OnOK()));
|
|
buttonsLayout->addWidget(cancelButton);
|
|
buttonsLayout->addWidget(applyButton);
|
|
buttonsLayout->addWidget(OKButton);
|
|
buttonsLayout->setAlignment(Qt::AlignRight);
|
|
|
|
QVBoxLayout *mainLayout = new QVBoxLayout;
|
|
mainLayout->addLayout(nameLayout);
|
|
mainLayout->addWidget(positionGroupBox);
|
|
mainLayout->addWidget(sizeGroupBox);
|
|
mainLayout->addLayout(colorLayout);
|
|
mainLayout->addLayout(textureLayout);
|
|
mainLayout->addLayout(buttonsLayout);
|
|
|
|
this->setLayout(mainLayout);
|
|
this->layout()->setSizeConstraint(QLayout::SetFixedSize);
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
StairsInspectorDialog::~StairsInspectorDialog()
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
ignition::math::Vector2d StairsInspectorDialog::StartPosition() const
|
|
{
|
|
return ignition::math::Vector2d(
|
|
this->dataPtr->startXSpinBox->value(),
|
|
this->dataPtr->startYSpinBox->value());
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
double StairsInspectorDialog::Width() const
|
|
{
|
|
return this->dataPtr->widthSpinBox->value();
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
double StairsInspectorDialog::Depth() const
|
|
{
|
|
return this->dataPtr->depthSpinBox->value();
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
double StairsInspectorDialog::Height() const
|
|
{
|
|
return this->dataPtr->heightSpinBox->value();
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
int StairsInspectorDialog::Steps() const
|
|
{
|
|
return this->dataPtr->stepsSpinBox->value();
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
void StairsInspectorDialog::SetName(const std::string &_name)
|
|
{
|
|
this->dataPtr->stairsNameLabel->setText(tr(_name.c_str()));
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
void StairsInspectorDialog::SetStartPosition(
|
|
const ignition::math::Vector2d &_pos)
|
|
{
|
|
this->dataPtr->startXSpinBox->setValue(_pos.X());
|
|
this->dataPtr->startYSpinBox->setValue(_pos.Y());
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
void StairsInspectorDialog::SetWidth(const double _width)
|
|
{
|
|
this->dataPtr->widthSpinBox->setValue(_width);
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
void StairsInspectorDialog::SetDepth(const double _depth)
|
|
{
|
|
this->dataPtr->depthSpinBox->setValue(_depth);
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
void StairsInspectorDialog::SetHeight(const double _height)
|
|
{
|
|
this->dataPtr->heightSpinBox->setValue(_height);
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
void StairsInspectorDialog::SetSteps(int _steps)
|
|
{
|
|
this->dataPtr->stepsSpinBox->setValue(_steps);
|
|
}
|