/*
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 "commandwidget.h"
#include "ui_commandwidget.h"
#include
#include
#include
#include
CommandWidget::CommandWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::CommandWidget)
{
ui->setupUi(this);
#ifdef Q_OS_WIN
ui->pbDelete->setIcon(QIcon(":/icons/list-remove"));
#endif // Q_OS_WIN
connect(ui->pbDelete, &QPushButton::clicked, this, &CommandWidget::onDeleteClicked);
connect(ui->pbSend, &QPushButton::clicked, this, &CommandWidget::onSendClicked);
connect(ui->pbASCII, &QPushButton::toggled, this, &CommandWidget::onASCIIToggled);
}
CommandWidget::~CommandWidget()
{
delete ui;
}
void CommandWidget::onDeleteClicked()
{
this->deleteLater();
}
void CommandWidget::onSendClicked()
{
auto command = ui->leCommand->text();
if (command.isEmpty())
{
qWarning() << "Enter a command to send!";
ui->leCommand->setFocus(Qt::OtherFocusReason);
return;
}
if (isASCIIMode())
{
qDebug() << "Sending:" << command;
emit sendCommand(ui->leCommand->unEscapedText().toLatin1());
}
else // hex mode
{
command = command.remove(' ');
// check if nibbles are missing
if (command.size() % 2 == 1)
{
qWarning() << "HEX command is missing a nibble at the end!";
ui->leCommand->setFocus(Qt::OtherFocusReason);
// highlight the byte that is missing a nibble (last byte obviously)
int textSize = ui->leCommand->text().size();
ui->leCommand->setSelection(textSize-1, textSize);
return;
}
qDebug() << "Sending HEX:" << command;
emit sendCommand(QByteArray::fromHex(command.toLatin1()));
}
}
void CommandWidget::onASCIIToggled(bool checked)
{
ui->leCommand->setMode(checked);
}
bool CommandWidget::isASCIIMode()
{
return ui->pbASCII->isChecked();
}
void CommandWidget::setName(QString name)
{
ui->leName->setText(name);
}
QString CommandWidget::name()
{
return ui->leName->text();
}
void CommandWidget::setFocusToEdit()
{
ui->leCommand->setFocus(Qt::OtherFocusReason);
}