25 #include <QGridLayout>
29 #define EMERGENCY_STOP_PROXY "EmergencyStopMaster"
30 #define EMERGENCY_STOP_TOPIC_NAME "EmergencyStop"
35 mainWindow(mainWindow),
36 iconNormal(QPixmap::fromImage(QImage(QString::fromUtf8(
":/icons/emergency-stop.png")))),
37 iconDark(QPixmap::fromImage(QImage(QString::fromUtf8(
":/icons/emergency-stop-dark.png"))))
39 qRegisterMetaType<EmergencyStopState>(
"EmergencyStopState");
42 icon.addPixmap(iconNormal, QIcon::Normal,
QIcon::Off);
43 icon.addPixmap(iconDark, QIcon::Normal,
QIcon::On);
45 QGridLayout* layout =
new QGridLayout(this->
getWidget());
46 button =
new QToolButton();
47 button->setCheckable(
true);
48 button->setIcon(icon);
49 button->setIconSize(QSize(68, 28));
50 button->setToolTip(QString::fromStdString(
"Controls the EmergencyStop. When pressed the EmergencyStop is active. Shortcut: Pause Key"));
51 button->setVisible(
false);
52 layout->addWidget(button, 0, 0);
54 layout->setContentsMargins(0, 0, 0, 0);
56 emergencyStopShortcut =
new QShortcut(this->
getWidget());
57 emergencyStopShortcut->setContext(Qt::ApplicationShortcut);
58 emergencyStopShortcut->setKey(Qt::Key_Pause);
59 connect(emergencyStopShortcut, SIGNAL(activated()),
this, SLOT(
clicked()));
62 std::stringstream
str;
63 str <<
"After EmergencyStop was activated, you have to wait "
64 << deactivationWaitPeriod.count() <<
" ms before you can deactivate it.";
65 button->setToolTip(QString::fromStdString(
str.str()));
82 QMetaObject::invokeMethod(button,
"setVisible", Qt::QueuedConnection, Q_ARG(
bool,
true));
83 QMetaObject::invokeMethod(
this,
"setChecked", Qt::QueuedConnection, Q_ARG(EmergencyStopState, emergencyStopMasterPrx->getEmergencyStopState()));
88 QMetaObject::invokeMethod(button,
"setVisible", Qt::QueuedConnection, Q_ARG(
bool,
false));
104 QMetaObject::invokeMethod(
this,
"setChecked", Qt::QueuedConnection, Q_ARG(EmergencyStopState, state));
109 EmergencyStopState state = emergencyStopMasterPrx->getEmergencyStopState();
112 case EmergencyStopState::eEmergencyStopActive :
113 if (clock_t::now() > timeLastActivated + deactivationWaitPeriod)
115 emergencyStopMasterPrx->setEmergencyStopState(EmergencyStopState::eEmergencyStopInactive);
119 button->setChecked(
true);
122 case EmergencyStopState::eEmergencyStopInactive :
123 emergencyStopMasterPrx->setEmergencyStopState(EmergencyStopState::eEmergencyStopActive);
133 void EmergencyStopWidget::setChecked(
const EmergencyStopState state)
137 case EmergencyStopState::eEmergencyStopActive :
138 button->setChecked(
true);
140 case EmergencyStopState::eEmergencyStopInactive :
141 button->setChecked(
false);
142 timeLastActivated = clock_t::now();
145 button->setChecked(
false);