/* Copyright © 2015 Hasan Yavuz Özderya This file is part of serialplot. serialplot 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. serialplot 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 serialplot. If not, see . */ #include "commandpanel.h" #include "ui_commandpanel.h" #include #include CommandPanel::CommandPanel(QSerialPort* port, QWidget *parent) : QWidget(parent), ui(new Ui::CommandPanel), _menu(trUtf8("Commands")), _newCommandAction(trUtf8("New Command"), this) { serialPort = port; ui->setupUi(this); ui->scrollAreaWidgetContents->setLayout(new QVBoxLayout); #ifdef Q_OS_WIN ui->pbNew->setIcon(QIcon(":/icons/list-add")); #endif // Q_OS_WIN connect(ui->pbNew, &QPushButton::clicked, this, &CommandPanel::newCommand); connect(&_newCommandAction, &QAction::triggered, this, &CommandPanel::newCommand); _menu.addAction(&_newCommandAction); command_name_counter = 0; newCommand(); // add an empty slot by default } CommandPanel::~CommandPanel() { delete ui; } void CommandPanel::newCommand() { auto command = new CommandWidget(); command_name_counter++; command->setName(trUtf8("Command ") + QString::number(command_name_counter)); ui->scrollAreaWidgetContents->layout()->addWidget(command); command->setFocusToEdit(); connect(command, &CommandWidget::sendCommand, this, &CommandPanel::sendCommand); } void CommandPanel::sendCommand(QByteArray command) { if (!serialPort->isOpen()) { qCritical() << "Port is not open!"; return; } if (serialPort->write(command) < 0) { qCritical() << "Send command failed!"; } } QMenu* CommandPanel::menu() { return &_menu; } QAction* CommandPanel::newCommandAction() { return &_newCommandAction; }