236 lines
8.0 KiB
C++
236 lines
8.0 KiB
C++
#include "NetworkConfigWidget.h"
|
|
#include "ui_NetworkConfigWidget.h"
|
|
|
|
#include <QFont>
|
|
#include <QList>
|
|
|
|
NetworkConfigWidget::NetworkConfigWidget(bool showPlcConfig, bool showTcpConfig, QWidget* parent)
|
|
: QWidget(parent)
|
|
, ui(new Ui::NetworkConfigWidget)
|
|
{
|
|
setupUI(showPlcConfig, showTcpConfig);
|
|
}
|
|
|
|
NetworkConfigWidget::~NetworkConfigWidget()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void NetworkConfigWidget::setupUI(bool showPlcConfig, bool showTcpConfig)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
QFont font;
|
|
font.setPointSize(16);
|
|
|
|
setStyleSheet(
|
|
"QLabel { color: rgb(221, 225, 233); background-color: transparent; }"
|
|
"QLineEdit, QComboBox { color: rgb(221, 225, 233); background-color: rgb(47, 48, 52); "
|
|
"border: 1px solid rgb(70, 72, 78); padding: 4px; }"
|
|
"QComboBox QAbstractItemView { color: rgb(221, 225, 233); background-color: rgb(47, 48, 52); "
|
|
"selection-background-color: rgb(70, 100, 150); }"
|
|
"QGroupBox { color: rgb(221, 225, 233); border: 1px solid rgb(100, 100, 100); "
|
|
"border-radius: 4px; margin-top: 12px; padding-top: 8px; }"
|
|
"QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; }");
|
|
|
|
const QList<QWidget*> widgets = findChildren<QWidget*>();
|
|
for (QWidget* widget : widgets) {
|
|
widget->setFont(font);
|
|
}
|
|
|
|
m_comboEulerOrder = ui->comboEulerOrder;
|
|
m_comboOutputEulerOrder = ui->comboOutputEulerOrder;
|
|
m_comboPoseOutputOrder = ui->comboPoseOutputOrder;
|
|
m_comboByteOrder = ui->comboByteOrder;
|
|
|
|
m_labelEulerOrder = ui->labelEulerOrder;
|
|
m_labelOutputEulerOrder = ui->labelOutputEulerOrder;
|
|
m_labelPoseOutputOrder = ui->labelPoseOutputOrder;
|
|
|
|
m_groupPlc = ui->groupPlc;
|
|
m_editPlcIp = ui->editPlcIp;
|
|
m_editPlcPort = ui->editPlcPort;
|
|
m_editAddrPhotoRequest = ui->editAddrPhotoRequest;
|
|
m_editAddrDataComplete = ui->editAddrDataComplete;
|
|
m_editAddrCoordDataStart = ui->editAddrCoordDataStart;
|
|
|
|
m_groupTcp = ui->groupTcp;
|
|
m_editTcpPort = ui->editTcpPort;
|
|
|
|
initEulerOrderComboBox();
|
|
initOutputEulerOrderComboBox();
|
|
initPoseOutputOrderComboBox();
|
|
initByteOrderComboBox();
|
|
|
|
m_groupPlc->setVisible(showPlcConfig);
|
|
m_groupTcp->setVisible(showTcpConfig);
|
|
}
|
|
|
|
void NetworkConfigWidget::initEulerOrderComboBox()
|
|
{
|
|
m_comboEulerOrder->addItem(QStringLiteral("RZ-RY-RX (外旋ZYX)"), EULER_ORDER_ZYX);
|
|
m_comboEulerOrder->addItem(QStringLiteral("RX-RY-RZ (外旋XYZ)"), EULER_ORDER_XYZ);
|
|
m_comboEulerOrder->addItem(QStringLiteral("RZ-RX-RY (外旋ZXY)"), EULER_ORDER_ZXY);
|
|
m_comboEulerOrder->addItem(QStringLiteral("RY-RX-RZ (外旋YXZ)"), EULER_ORDER_YXZ);
|
|
m_comboEulerOrder->addItem(QStringLiteral("RY-RZ-RX (外旋YZX)"), EULER_ORDER_YZX);
|
|
m_comboEulerOrder->addItem(QStringLiteral("RX-RZ-RY (外旋XZY)"), EULER_ORDER_XZY);
|
|
m_comboEulerOrder->setCurrentIndex(0);
|
|
}
|
|
|
|
void NetworkConfigWidget::initOutputEulerOrderComboBox()
|
|
{
|
|
m_comboOutputEulerOrder->addItem(QStringLiteral("RZ-RY-RX (外旋ZYX)"), EULER_ORDER_ZYX);
|
|
m_comboOutputEulerOrder->addItem(QStringLiteral("RX-RY-RZ (外旋XYZ)"), EULER_ORDER_XYZ);
|
|
m_comboOutputEulerOrder->addItem(QStringLiteral("RZ-RX-RY (外旋ZXY)"), EULER_ORDER_ZXY);
|
|
m_comboOutputEulerOrder->addItem(QStringLiteral("RY-RX-RZ (外旋YXZ)"), EULER_ORDER_YXZ);
|
|
m_comboOutputEulerOrder->addItem(QStringLiteral("RY-RZ-RX (外旋YZX)"), EULER_ORDER_YZX);
|
|
m_comboOutputEulerOrder->addItem(QStringLiteral("RX-RZ-RY (外旋XZY)"), EULER_ORDER_XZY);
|
|
m_comboOutputEulerOrder->setCurrentIndex(0);
|
|
}
|
|
|
|
void NetworkConfigWidget::initPoseOutputOrderComboBox()
|
|
{
|
|
m_comboPoseOutputOrder->addItem(QStringLiteral("RX-RY-RZ"), NET_POSE_OUTPUT_RX_RY_RZ);
|
|
m_comboPoseOutputOrder->addItem(QStringLiteral("RX-RZ-RY"), NET_POSE_OUTPUT_RX_RZ_RY);
|
|
m_comboPoseOutputOrder->addItem(QStringLiteral("RY-RX-RZ"), NET_POSE_OUTPUT_RY_RX_RZ);
|
|
m_comboPoseOutputOrder->addItem(QStringLiteral("RY-RZ-RX"), NET_POSE_OUTPUT_RY_RZ_RX);
|
|
m_comboPoseOutputOrder->addItem(QStringLiteral("RZ-RX-RY"), NET_POSE_OUTPUT_RZ_RX_RY);
|
|
m_comboPoseOutputOrder->addItem(QStringLiteral("RZ-RY-RX"), NET_POSE_OUTPUT_RZ_RY_RX);
|
|
m_comboPoseOutputOrder->setCurrentIndex(0);
|
|
}
|
|
|
|
void NetworkConfigWidget::initByteOrderComboBox()
|
|
{
|
|
m_comboByteOrder->addItem(QStringLiteral("大端序(ABCD)"), NET_BYTE_ORDER_BIG);
|
|
m_comboByteOrder->addItem(QStringLiteral("小端序(DCBA)"), NET_BYTE_ORDER_LITTLE);
|
|
m_comboByteOrder->setCurrentIndex(0);
|
|
}
|
|
|
|
void NetworkConfigWidget::setConfig(const NetworkConfigData& config)
|
|
{
|
|
m_configCache = config;
|
|
|
|
int idx = m_comboEulerOrder->findData(config.eulerOrder);
|
|
if (idx >= 0) {
|
|
m_comboEulerOrder->setCurrentIndex(idx);
|
|
}
|
|
|
|
idx = m_comboOutputEulerOrder->findData(config.outputEulerOrder);
|
|
if (idx >= 0) {
|
|
m_comboOutputEulerOrder->setCurrentIndex(idx);
|
|
}
|
|
|
|
idx = m_comboPoseOutputOrder->findData(config.poseOutputOrder);
|
|
if (idx >= 0) {
|
|
m_comboPoseOutputOrder->setCurrentIndex(idx);
|
|
}
|
|
|
|
idx = m_comboByteOrder->findData(config.byteOrder);
|
|
if (idx >= 0) {
|
|
m_comboByteOrder->setCurrentIndex(idx);
|
|
}
|
|
|
|
if (m_editPlcIp) {
|
|
m_editPlcIp->setText(config.plcServerIp);
|
|
}
|
|
if (m_editPlcPort) {
|
|
m_editPlcPort->setText(QString::number(config.plcServerPort));
|
|
}
|
|
if (m_editAddrPhotoRequest) {
|
|
m_editAddrPhotoRequest->setText(QString::number(config.addrPhotoRequest));
|
|
}
|
|
if (m_editAddrDataComplete) {
|
|
m_editAddrDataComplete->setText(QString::number(config.addrDataComplete));
|
|
}
|
|
if (m_editAddrCoordDataStart) {
|
|
m_editAddrCoordDataStart->setText(QString::number(config.addrCoordDataStart));
|
|
}
|
|
if (m_editTcpPort) {
|
|
m_editTcpPort->setText(QString::number(config.tcpServerPort));
|
|
}
|
|
}
|
|
|
|
NetworkConfigData NetworkConfigWidget::getConfig() const
|
|
{
|
|
NetworkConfigData config = m_configCache;
|
|
config.eulerOrder = m_comboEulerOrder->currentData().toInt();
|
|
config.outputEulerOrder = m_comboOutputEulerOrder->currentData().toInt();
|
|
config.poseOutputOrder = m_comboPoseOutputOrder->currentData().toInt();
|
|
config.byteOrder = m_comboByteOrder->currentData().toInt();
|
|
|
|
if (m_editPlcIp) {
|
|
config.plcServerIp = m_editPlcIp->text().trimmed();
|
|
}
|
|
if (m_editPlcPort) {
|
|
config.plcServerPort = m_editPlcPort->text().toInt();
|
|
}
|
|
if (m_editAddrPhotoRequest) {
|
|
config.addrPhotoRequest = m_editAddrPhotoRequest->text().toInt();
|
|
}
|
|
if (m_editAddrDataComplete) {
|
|
config.addrDataComplete = m_editAddrDataComplete->text().toInt();
|
|
}
|
|
if (m_editAddrCoordDataStart) {
|
|
config.addrCoordDataStart = m_editAddrCoordDataStart->text().toInt();
|
|
}
|
|
if (m_editTcpPort) {
|
|
config.tcpServerPort = m_editTcpPort->text().toInt();
|
|
}
|
|
|
|
return config;
|
|
}
|
|
|
|
int NetworkConfigWidget::eulerOrder() const
|
|
{
|
|
return m_comboEulerOrder->currentData().toInt();
|
|
}
|
|
|
|
int NetworkConfigWidget::outputEulerOrder() const
|
|
{
|
|
return m_comboOutputEulerOrder->currentData().toInt();
|
|
}
|
|
|
|
int NetworkConfigWidget::poseOutputOrder() const
|
|
{
|
|
return m_comboPoseOutputOrder->currentData().toInt();
|
|
}
|
|
|
|
int NetworkConfigWidget::dirVectorInvert() const
|
|
{
|
|
return m_configCache.dirVectorInvert;
|
|
}
|
|
|
|
int NetworkConfigWidget::byteOrder() const
|
|
{
|
|
return m_comboByteOrder->currentData().toInt();
|
|
}
|
|
|
|
int NetworkConfigWidget::longAxisDir() const
|
|
{
|
|
return m_configCache.longAxisDir;
|
|
}
|
|
|
|
void NetworkConfigWidget::setExtrinsicControlsVisible(bool visible)
|
|
{
|
|
auto applyVisibility = [visible](QWidget* w) {
|
|
if (w) w->setVisible(visible);
|
|
};
|
|
|
|
applyVisibility(m_labelEulerOrder);
|
|
applyVisibility(m_comboEulerOrder);
|
|
applyVisibility(m_labelOutputEulerOrder);
|
|
applyVisibility(m_comboOutputEulerOrder);
|
|
applyVisibility(m_labelPoseOutputOrder);
|
|
applyVisibility(m_comboPoseOutputOrder);
|
|
}
|
|
|
|
void NetworkConfigWidget::setPoseOutputOrderVisible(bool visible)
|
|
{
|
|
if (m_labelPoseOutputOrder) {
|
|
m_labelPoseOutputOrder->setVisible(visible);
|
|
}
|
|
if (m_comboPoseOutputOrder) {
|
|
m_comboPoseOutputOrder->setVisible(visible);
|
|
}
|
|
}
|