/*Copyright © 2017 Hasan Yavuz ÖzderyaThis file is part of serialplot.serialplot is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with serialplot. If not, see <http://www.gnu.org/licenses/>.*/#include "commandwidget.h"#include "ui_commandwidget.h"#include <QRegExp>#include <QRegExpValidator>#include <QtDebug>#include <QIcon>CommandWidget::CommandWidget(QWidget *parent) :QWidget(parent),ui(new Ui::CommandWidget),_sendAction(this){ui->setupUi(this);#ifdef Q_OS_WINui->pbDelete->setIcon(QIcon(":/icons/list-remove"));#endif // Q_OS_WINconnect(ui->pbDelete, &QPushButton::clicked, this, &CommandWidget::onDeleteClicked);connect(ui->pbSend, &QPushButton::clicked, this, &CommandWidget::onSendClicked);connect(ui->pbASCII, &QPushButton::toggled, this, &CommandWidget::onASCIIToggled);connect(ui->leName, &QLineEdit::textChanged, [this](QString text){this->_sendAction.setText(text);});connect(&_sendAction, &QAction::triggered, this, &CommandWidget::onSendClicked);}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);emit focusRequested();return;}if (isASCIIMode()){qDebug() << "Sending " << name() << ":" << command;emit sendCommand(ui->leCommand->unEscapedText().toLatin1());}else // hex mode{command = command.remove(' ');// check if nibbles are missingif (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::setASCIIMode(bool enabled){if (enabled){ui->pbASCII->setChecked(true);}else{ui->pbHEX->setChecked(true);}}void CommandWidget::setName(QString name){ui->leName->setText(name);}QString CommandWidget::name(){return ui->leName->text();}void CommandWidget::setFocusToEdit(){ui->leCommand->setFocus(Qt::OtherFocusReason);}QAction* CommandWidget::sendAction(){return &_sendAction;}QString CommandWidget::commandText(){return ui->leCommand->text();}void CommandWidget::setCommandText(QString str){ui->leCommand->selectAll();ui->leCommand->insert(str);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。