127 lines
3.6 KiB
C++
127 lines
3.6 KiB
C++
|
/*
|
||
|
* Copyright (C) 2014 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/gui/CloneWindow.hh"
|
||
|
#include "gazebo/gui/CloneWindowPrivate.hh"
|
||
|
#include "gazebo/gui/qt.h"
|
||
|
|
||
|
using namespace gazebo;
|
||
|
using namespace gui;
|
||
|
|
||
|
/////////////////////////////////////////////////
|
||
|
CloneWindow::CloneWindow(QWidget *_parent)
|
||
|
: QDialog(_parent),
|
||
|
dataPtr(new CloneWindowPrivate())
|
||
|
{
|
||
|
this->dataPtr->validPort = false;
|
||
|
|
||
|
this->setWindowTitle(tr("Gazebo: Cloning a simulation"));
|
||
|
this->setWindowFlags(Qt::Window | Qt::WindowCloseButtonHint |
|
||
|
Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint);
|
||
|
|
||
|
// Create the main layout for this widget.
|
||
|
QVBoxLayout *mainLayout = new QVBoxLayout;
|
||
|
|
||
|
QFrame *frame = new QFrame;
|
||
|
|
||
|
// Port information.
|
||
|
QLabel *portInfo = new QLabel(
|
||
|
"Select the port that the new server will use for connections.\n"
|
||
|
"Please check that the port is not used by any other process.\n");
|
||
|
|
||
|
// Port widget.
|
||
|
QHBoxLayout *portLayout = new QHBoxLayout;
|
||
|
QLabel *portLabel = new QLabel("Cloned server port (1025-65535):");
|
||
|
this->dataPtr->portEdit = new QLineEdit("11346");
|
||
|
this->dataPtr->portEdit->setFixedWidth(50);
|
||
|
this->dataPtr->portEdit->setMaxLength(5);
|
||
|
this->dataPtr->portEdit->setValidator(new QIntValidator(1025, 65535, this));
|
||
|
portLayout->setContentsMargins(4, 4, 4, 30);
|
||
|
portLayout->addWidget(portLabel);
|
||
|
portLayout->addWidget(this->dataPtr->portEdit);
|
||
|
|
||
|
// Buttons.
|
||
|
QHBoxLayout *buttonLayout = new QHBoxLayout;
|
||
|
QPushButton *cancelButton = new QPushButton("Cancel");
|
||
|
connect(cancelButton, SIGNAL(clicked()), this, SLOT(OnCancel()));
|
||
|
this->dataPtr->okayButton = new QPushButton("Ok");
|
||
|
connect(this->dataPtr->okayButton, SIGNAL(clicked()), this, SLOT(OnOkay()));
|
||
|
buttonLayout->addWidget(cancelButton);
|
||
|
buttonLayout->addStretch(2);
|
||
|
buttonLayout->addWidget(this->dataPtr->okayButton);
|
||
|
|
||
|
// Compose the main frame.
|
||
|
mainLayout->addWidget(portInfo);
|
||
|
mainLayout->addWidget(frame);
|
||
|
mainLayout->addLayout(portLayout);
|
||
|
mainLayout->addLayout(buttonLayout);
|
||
|
mainLayout->setContentsMargins(8, 8, 4, 4);
|
||
|
|
||
|
// Assign the mainlayout to this widget.
|
||
|
this->setLayout(mainLayout);
|
||
|
this->layout()->setSizeConstraint(QLayout::SetFixedSize);
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////
|
||
|
CloneWindow::~CloneWindow()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////
|
||
|
int CloneWindow::GetPort()
|
||
|
{
|
||
|
if (this->dataPtr->validPort)
|
||
|
return this->dataPtr->port;
|
||
|
else
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////
|
||
|
int CloneWindow::Port() const
|
||
|
{
|
||
|
if (this->dataPtr->validPort)
|
||
|
return this->dataPtr->port;
|
||
|
else
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////
|
||
|
bool CloneWindow::IsValidPort() const
|
||
|
{
|
||
|
return this->dataPtr->validPort;
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////
|
||
|
void CloneWindow::Update()
|
||
|
{
|
||
|
this->dataPtr->port =
|
||
|
this->dataPtr->portEdit->text().toInt(&this->dataPtr->validPort);
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////
|
||
|
void CloneWindow::OnOkay()
|
||
|
{
|
||
|
this->done(QDialog::Accepted);
|
||
|
this->Update();
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////
|
||
|
void CloneWindow::OnCancel()
|
||
|
{
|
||
|
this->done(QDialog::Rejected);
|
||
|
}
|