diff --git a/src/widgets/movementwidget.cpp b/src/widgets/movementwidget.cpp index 5a13533..75a1504 100644 --- a/src/widgets/movementwidget.cpp +++ b/src/widgets/movementwidget.cpp @@ -1,95 +1,98 @@ /* AtCore Test Client Copyright (C) <2018> Author: Chris Rizzitello - rizzitello@kde.org This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include "axiscontrol.h" #include "movementwidget.h" -MovementWidget::MovementWidget(QWidget *parent) : +MovementWidget::MovementWidget(bool showHomeAndDisableWidgets, QWidget *parent) : QWidget(parent) { auto mainLayout = new QVBoxLayout; auto hBoxLayout = new QHBoxLayout; - - auto newButton = new QPushButton(tr("Home All")); - hBoxLayout->addWidget(newButton); - connect(newButton, &QPushButton::clicked, [this] { - emit(homeAllPressed()); - }); - - newButton = new QPushButton(tr("Home X")); - hBoxLayout->addWidget(newButton); - connect(newButton, &QPushButton::clicked, [this] { - emit(homeXPressed()); - }); - - newButton = new QPushButton(tr("Home Y")); - hBoxLayout->addWidget(newButton); - connect(newButton, &QPushButton::clicked, [this] { - emit(homeYPressed()); - }); - - newButton = new QPushButton(tr("Home Z")); - hBoxLayout->addWidget(newButton); - connect(newButton, &QPushButton::clicked, [this] { - emit(homeZPressed()); - }); - mainLayout->addLayout(hBoxLayout); - + auto newButton = new QPushButton; + + if( showHomeAndDisableWidgets) { + newButton = new QPushButton(tr("Home All")); + hBoxLayout->addWidget(newButton); + connect(newButton, &QPushButton::clicked, [this] { + emit(homeAllPressed()); + }); + + newButton = new QPushButton(tr("Home X")); + hBoxLayout->addWidget(newButton); + connect(newButton, &QPushButton::clicked, [this] { + emit(homeXPressed()); + }); + + newButton = new QPushButton(tr("Home Y")); + hBoxLayout->addWidget(newButton); + connect(newButton, &QPushButton::clicked, [this] { + emit(homeYPressed()); + }); + + newButton = new QPushButton(tr("Home Z")); + hBoxLayout->addWidget(newButton); + connect(newButton, &QPushButton::clicked, [this] { + emit(homeZPressed()); + }); + mainLayout->addLayout(hBoxLayout); + + newButton = new QPushButton(tr("Disable Motors")); + mainLayout->addWidget(newButton); + connect(newButton, &QPushButton::clicked, [this] { + emit(disableMotorsPressed()); + }); + + } comboMoveAxis = new QComboBox; comboMoveAxis->addItem(tr("Move X Axis to")); comboMoveAxis->addItem(tr("Move Y Axis to")); comboMoveAxis->addItem(tr("Move Z Axis to")); sbMoveAxis = new QDoubleSpinBox; sbMoveAxis->setRange(0, 200); newButton = new QPushButton(tr("Go")); connect(newButton, &QPushButton::clicked, this, [this] { if (comboMoveAxis->currentIndex() == 0) { emit(absoluteMove(QLatin1Char('X'), sbMoveAxis->value())); } else if (comboMoveAxis->currentIndex() == 1) { emit(absoluteMove(QLatin1Char('Y'), sbMoveAxis->value())); } else if (comboMoveAxis->currentIndex() == 2) { emit(absoluteMove(QLatin1Char('Z'), sbMoveAxis->value())); } }); hBoxLayout = new QHBoxLayout; hBoxLayout->addWidget(comboMoveAxis); hBoxLayout->addWidget(sbMoveAxis); hBoxLayout->addWidget(newButton); mainLayout->addLayout(hBoxLayout); - newButton = new QPushButton(tr("Disable Motors")); - mainLayout->addWidget(newButton); - connect(newButton, &QPushButton::clicked, [this] { - emit(disableMotorsPressed()); - }); - auto axisControl = new AxisControl; mainLayout->addWidget(axisControl); connect(axisControl, &AxisControl::clicked, this, &MovementWidget::relativeMove); setLayout(mainLayout); } diff --git a/src/widgets/movementwidget.h b/src/widgets/movementwidget.h index 6af4a25..c916dd1 100644 --- a/src/widgets/movementwidget.h +++ b/src/widgets/movementwidget.h @@ -1,48 +1,94 @@ /* AtCore Test Client Copyright (C) <2018> Author: Chris Rizzitello - rizzitello@kde.org This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma once #include #include #include #include "atcorewidgets_export.h" /* Usage: * - * Create a instance of the movement widget. + * Create a instance of the movement widget. This widget will provide Basic Movement Controls. Create it with "showHomeAndDisableWidgets" false if your client provides its own actions for homing and disabling the motors. */ class ATCOREWIDGETS_EXPORT MovementWidget : public QWidget { Q_OBJECT public: - MovementWidget(QWidget *parent = nullptr); + /** + * @brief Create a Movement Widget + * @param showHomeAndDisableWidgets: set False to hide the Home and Disable Motors buttons [default = true] + * @param parent: Parent of this widget. + */ + MovementWidget(bool showHomeAndDisableWidgets = true, QWidget *parent = nullptr); signals: + /** + * @brief The Home All button was clicked. + * This should be connected to AtCore::home() + */ void homeAllPressed(); + + /** + * @brief The Home X button was clicked. + * This should be connected to AtCore::home(AtCore::X) + */ void homeXPressed(); + + /** + * @brief The Home Y button was clicked. + * This should be connected to AtCore::home(AtCore::Y) + */ void homeYPressed(); + + /** + * @brief The Home Z button was clicked. + * This should be connected to AtCore::home(AtCore::Z) + */ void homeZPressed(); + + /** + * @brief The Disable Motors button was clicked. + * This should be connected to AtCore::disableMotors(0) + */ + void disableMotorsPressed(); + + /** + * @brief An absoluteMove was requested + * This should be connected to AtCore::move(axis,value) + * @param axis: the axis to move + * @param value: where to move + */ void absoluteMove(const QLatin1Char &axis, const double &value); + + /** + * @brief A relativeMove was requested. + * This should connect to a function that does the following + * AtCore::setRelativePosition() + * AtCore::move(axis, value) + * AtCore::setAbsolutePosition() + * @param axis: the axis to move. + * @param value: the value to move it by. + */ void relativeMove(const QLatin1Char &axis, const double &value); - void disableMotorsPressed(); private: QComboBox *comboMoveAxis = nullptr; QDoubleSpinBox *sbMoveAxis = nullptr; };