kopia lustrzana https://gitlab.com/eliggett/wfview
Merge branch 'master' into QT6.2
commit
0d9c7b5e30
|
@ -12,7 +12,7 @@ aboutbox::aboutbox(QWidget *parent) :
|
||||||
ui->logoBtn->setIcon(QIcon(":resources/wfview.png"));
|
ui->logoBtn->setIcon(QIcon(":resources/wfview.png"));
|
||||||
ui->logoBtn->setStyleSheet("Text-align:left");
|
ui->logoBtn->setStyleSheet("Text-align:left");
|
||||||
|
|
||||||
ui->topText->setText("wfview version 1.2d");
|
ui->topText->setText("wfview version " + QString(WFVIEW_VERSION));
|
||||||
|
|
||||||
QString head = QString("<html><head></head><body>");
|
QString head = QString("<html><head></head><body>");
|
||||||
QString copyright = QString("Copyright 2017-2021 Elliott H. Liggett, W6EL. All rights reserved. wfview source code is <a href=\"https://gitlab.com/eliggett/wfview/-/blob/master/LICENSE\">licensed</a> under the GNU GPLv3.");
|
QString copyright = QString("Copyright 2017-2021 Elliott H. Liggett, W6EL. All rights reserved. wfview source code is <a href=\"https://gitlab.com/eliggett/wfview/-/blob/master/LICENSE\">licensed</a> under the GNU GPLv3.");
|
||||||
|
|
22
main.cpp
22
main.cpp
|
@ -37,7 +37,12 @@ int main(int argc, char *argv[])
|
||||||
QString currentArg;
|
QString currentArg;
|
||||||
|
|
||||||
|
|
||||||
const QString helpText = QString("\nUsage: -p --port /dev/port, -h --host remotehostname, -c --civ 0xAddr, -l --logfile filename.log, -s --settings filename.ini, -d --debug\n"); // TODO...
|
const QString helpText = QString("\nUsage: -p --port /dev/port, -h --host remotehostname, -c --civ 0xAddr, -l --logfile filename.log, -s --settings filename.ini, -d --debug, -v --version\n"); // TODO...
|
||||||
|
const QString version = QString("wfview version: %1 (Git:%2 on %3 at %4 by %5@%6)\nOperating System: %7 (%8)\nBuild Qt Version %9. Current Qt Version: %10\n")
|
||||||
|
.arg(QString(WFVIEW_VERSION))
|
||||||
|
.arg(GITSHORT).arg(__DATE__).arg(__TIME__).arg(UNAME).arg(HOST)
|
||||||
|
.arg(QSysInfo::prettyProductName()).arg(QSysInfo::buildCpuArchitecture())
|
||||||
|
.arg(QT_VERSION_STR).arg(qVersion());
|
||||||
|
|
||||||
for(int c=1; c<argc; c++)
|
for(int c=1; c<argc; c++)
|
||||||
{
|
{
|
||||||
|
@ -88,12 +93,21 @@ int main(int argc, char *argv[])
|
||||||
c += 1;
|
c += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((currentArg == "--help"))
|
else if ((currentArg == "-?") || (currentArg == "--help"))
|
||||||
{
|
{
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
QMessageBox::information(0, "wfview help", helpText);
|
QMessageBox::information(0, "wfview help", helpText);
|
||||||
#else
|
#else
|
||||||
std::cout << helpText.toStdString();
|
std::cout << helpText.toStdString();
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if ((currentArg == "-v") || (currentArg == "--version"))
|
||||||
|
{
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
QMessageBox::information(0, "wfview version", version);
|
||||||
|
#else
|
||||||
|
std::cout << version.toStdString();
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -117,9 +131,7 @@ int main(int argc, char *argv[])
|
||||||
// Set handler
|
// Set handler
|
||||||
qInstallMessageHandler(messageHandler);
|
qInstallMessageHandler(messageHandler);
|
||||||
|
|
||||||
qInfo(logSystem()) << QString("Starting wfview: build %1 on %2 at %3 by %5@%6").arg(GITSHORT).arg(__DATE__).arg(__TIME__).arg(UNAME).arg(HOST);
|
qInfo(logSystem()) << version;
|
||||||
qInfo(logSystem()) << QString("Operating System: %1 (%2)").arg(QSysInfo::prettyProductName()).arg(QSysInfo::buildCpuArchitecture());
|
|
||||||
qInfo(logSystem()) << QString("Build Qt Version %1. Current Qt Version: %2").arg(QT_VERSION_STR).arg(qVersion());
|
|
||||||
qDebug(logSystem()) << QString("SerialPortCL as set by parser: %1").arg(serialPortCL);
|
qDebug(logSystem()) << QString("SerialPortCL as set by parser: %1").arg(serialPortCL);
|
||||||
qDebug(logSystem()) << QString("remote host as set by parser: %1").arg(hostCL);
|
qDebug(logSystem()) << QString("remote host as set by parser: %1").arg(hostCL);
|
||||||
qDebug(logSystem()) << QString("CIV as set by parser: %1").arg(civCL);
|
qDebug(logSystem()) << QString("CIV as set by parser: %1").arg(civCL);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
QToolTip {
|
QToolTip {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
background-color: #5A7566;
|
background-color: #5A7566;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 0px; /*remove padding, for fix combobox tooltip.*/
|
padding: 0px; /*remove padding, for fix combobox tooltip.*/
|
||||||
|
@ -8,7 +8,7 @@ QToolTip {
|
||||||
|
|
||||||
QWidget {
|
QWidget {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
selection-background-color: #3daee9;
|
selection-background-color: #3daee9;
|
||||||
selection-color: #eff0f1;
|
selection-color: #eff0f1;
|
||||||
background-clip: border;
|
background-clip: border;
|
||||||
|
@ -34,7 +34,7 @@ QCheckBox {
|
||||||
}
|
}
|
||||||
|
|
||||||
QCheckBox:disabled {
|
QCheckBox:disabled {
|
||||||
color: #76797C;
|
color: #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QCheckBox::indicator,
|
QCheckBox::indicator,
|
||||||
|
@ -105,7 +105,7 @@ QRadioButton {
|
||||||
}
|
}
|
||||||
|
|
||||||
QRadioButton:disabled {
|
QRadioButton:disabled {
|
||||||
color: #76797C;
|
color: #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRadioButton::indicator {
|
QRadioButton::indicator {
|
||||||
|
@ -149,7 +149,7 @@ QRadioButton::indicator:unchecked:disabled {
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenuBar {
|
QMenuBar {
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,11 +159,11 @@ QMenuBar::item {
|
||||||
|
|
||||||
QMenuBar::item:selected {
|
QMenuBar::item:selected {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenuBar::item:pressed {
|
QMenuBar::item:pressed {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
background-color: #3daee9;
|
background-color: #3daee9;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
margin-bottom: -1px;
|
margin-bottom: -1px;
|
||||||
|
@ -171,7 +171,7 @@ QMenuBar::item:pressed {
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenu {
|
QMenu {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
}
|
}
|
||||||
|
@ -248,11 +248,11 @@ QMenu::right-arrow {
|
||||||
|
|
||||||
QWidget:disabled {
|
QWidget:disabled {
|
||||||
color: #454545;
|
color: #454545;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
}
|
}
|
||||||
|
|
||||||
QAbstractItemView {
|
QAbstractItemView {
|
||||||
alternate-background-color: #31363b;
|
alternate-background-color: #313131;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
border: 1px solid #3A3939;
|
border: 1px solid #3A3939;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
|
@ -274,7 +274,7 @@ QLineEdit {
|
||||||
background-color: #232629;
|
background-color: #232629;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
}
|
}
|
||||||
|
@ -284,7 +284,7 @@ QAbstractItemView QLineEdit {
|
||||||
}
|
}
|
||||||
|
|
||||||
QGroupBox {
|
QGroupBox {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
@ -299,7 +299,7 @@ QGroupBox::title {
|
||||||
|
|
||||||
QAbstractScrollArea {
|
QAbstractScrollArea {
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,7 +426,7 @@ QScrollBar::sub-page:vertical {
|
||||||
QTextEdit {
|
QTextEdit {
|
||||||
background-color: #232629;
|
background-color: #232629;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPlainTextEdit {
|
QPlainTextEdit {
|
||||||
|
@ -434,14 +434,14 @@ QPlainTextEdit {
|
||||||
;
|
;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QHeaderView::section {
|
QHeaderView::section {
|
||||||
background-color: #76797C;
|
background-color: #767676;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSizeGrip {
|
QSizeGrip {
|
||||||
|
@ -451,24 +451,24 @@ QSizeGrip {
|
||||||
}
|
}
|
||||||
|
|
||||||
QMainWindow::separator {
|
QMainWindow::separator {
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
color: white;
|
color: white;
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
spacing: 2px;
|
spacing: 2px;
|
||||||
border: 1px dashed #76797C;
|
border: 1px dashed #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMainWindow::separator:hover {
|
QMainWindow::separator:hover {
|
||||||
background-color: #787876;
|
background-color: #787876;
|
||||||
color: white;
|
color: white;
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
spacing: 2px;
|
spacing: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenu::separator {
|
QMenu::separator {
|
||||||
height: 1px;
|
height: 1px;
|
||||||
background-color: #76797C;
|
background-color: #767676;
|
||||||
color: white;
|
color: white;
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
|
@ -477,12 +477,12 @@ QMenu::separator {
|
||||||
|
|
||||||
QFrame {
|
QFrame {
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFrame[frameShape="0"] {
|
QFrame[frameShape="0"] {
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
border: 1px transparent #76797C;
|
border: 1px transparent #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStackedWidget {
|
QStackedWidget {
|
||||||
|
@ -491,7 +491,7 @@ QStackedWidget {
|
||||||
|
|
||||||
QToolBar {
|
QToolBar {
|
||||||
border: 1px transparent #393838;
|
border: 1px transparent #393838;
|
||||||
background: 1px solid #31363b;
|
background: 1px solid #313131;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -512,14 +512,14 @@ QToolBar::separator:vertical {
|
||||||
}
|
}
|
||||||
|
|
||||||
QToolButton#qt_toolbar_ext_button {
|
QToolButton#qt_toolbar_ext_button {
|
||||||
background: #58595a
|
background: #585858
|
||||||
}
|
}
|
||||||
|
|
||||||
QPushButton {
|
QPushButton {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-color: #76797C;
|
border-color: #767676;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
|
@ -527,7 +527,7 @@ QPushButton {
|
||||||
}
|
}
|
||||||
|
|
||||||
QPushButton:disabled {
|
QPushButton:disabled {
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-color: #454545;
|
border-color: #454545;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
|
@ -553,14 +553,14 @@ QPushButton:pressed {
|
||||||
QComboBox {
|
QComboBox {
|
||||||
selection-background-color: #3daee9;
|
selection-background-color: #3daee9;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
min-width: 75px;
|
min-width: 75px;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPushButton:checked {
|
QPushButton:checked {
|
||||||
background-color: #76797C;
|
background-color: #767676;
|
||||||
border-color: #6A6969;
|
border-color: #6A6969;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -585,7 +585,7 @@ QComboBox:on {
|
||||||
QComboBox QAbstractItemView {
|
QComboBox QAbstractItemView {
|
||||||
background-color: #232629;
|
background-color: #232629;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
selection-background-color: #18465d;
|
selection-background-color: #18465d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -612,7 +612,7 @@ QComboBox::down-arrow:focus {
|
||||||
|
|
||||||
QAbstractSpinBox {
|
QAbstractSpinBox {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
background-color: #232629;
|
background-color: #232629;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
|
@ -664,7 +664,7 @@ QTabWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
QTabWidget::pane {
|
QTabWidget::pane {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
@ -702,9 +702,9 @@ QTabBar::close-button:pressed {
|
||||||
|
|
||||||
QTabBar::tab:top {
|
QTabBar::tab:top {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-bottom: 1px transparent black;
|
border-bottom: 1px transparent black;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
min-width: 50px;
|
min-width: 50px;
|
||||||
border-top-left-radius: 2px;
|
border-top-left-radius: 2px;
|
||||||
|
@ -714,7 +714,7 @@ QTabBar::tab:top {
|
||||||
QTabBar::tab:top:selected {
|
QTabBar::tab:top:selected {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
background-color: #54575B;
|
background-color: #54575B;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-bottom: 2px solid #3daee9;
|
border-bottom: 2px solid #3daee9;
|
||||||
border-top-left-radius: 2px;
|
border-top-left-radius: 2px;
|
||||||
border-top-right-radius: 2px;
|
border-top-right-radius: 2px;
|
||||||
|
@ -729,9 +729,9 @@ QTabBar::tab:top:!selected:hover {
|
||||||
|
|
||||||
QTabBar::tab:bottom {
|
QTabBar::tab:bottom {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-top: 1px transparent black;
|
border-top: 1px transparent black;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border-bottom-left-radius: 2px;
|
border-bottom-left-radius: 2px;
|
||||||
border-bottom-right-radius: 2px;
|
border-bottom-right-radius: 2px;
|
||||||
|
@ -741,7 +741,7 @@ QTabBar::tab:bottom {
|
||||||
QTabBar::tab:bottom:selected {
|
QTabBar::tab:bottom:selected {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
background-color: #54575B;
|
background-color: #54575B;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-top: 2px solid #3daee9;
|
border-top: 2px solid #3daee9;
|
||||||
border-bottom-left-radius: 2px;
|
border-bottom-left-radius: 2px;
|
||||||
border-bottom-right-radius: 2px;
|
border-bottom-right-radius: 2px;
|
||||||
|
@ -756,9 +756,9 @@ QTabBar::tab:bottom:!selected:hover {
|
||||||
|
|
||||||
QTabBar::tab:left {
|
QTabBar::tab:left {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-left: 1px transparent black;
|
border-left: 1px transparent black;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border-top-right-radius: 2px;
|
border-top-right-radius: 2px;
|
||||||
border-bottom-right-radius: 2px;
|
border-bottom-right-radius: 2px;
|
||||||
|
@ -768,7 +768,7 @@ QTabBar::tab:left {
|
||||||
QTabBar::tab:left:selected {
|
QTabBar::tab:left:selected {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
background-color: #54575B;
|
background-color: #54575B;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-left: 2px solid #3daee9;
|
border-left: 2px solid #3daee9;
|
||||||
border-top-right-radius: 2px;
|
border-top-right-radius: 2px;
|
||||||
border-bottom-right-radius: 2px;
|
border-bottom-right-radius: 2px;
|
||||||
|
@ -783,9 +783,9 @@ QTabBar::tab:left:!selected:hover {
|
||||||
|
|
||||||
QTabBar::tab:right {
|
QTabBar::tab:right {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-right: 1px transparent black;
|
border-right: 1px transparent black;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border-top-left-radius: 2px;
|
border-top-left-radius: 2px;
|
||||||
border-bottom-left-radius: 2px;
|
border-bottom-left-radius: 2px;
|
||||||
|
@ -795,7 +795,7 @@ QTabBar::tab:right {
|
||||||
QTabBar::tab:right:selected {
|
QTabBar::tab:right:selected {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
background-color: #54575B;
|
background-color: #54575B;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-right: 2px solid #3daee9;
|
border-right: 2px solid #3daee9;
|
||||||
border-top-left-radius: 2px;
|
border-top-left-radius: 2px;
|
||||||
border-bottom-left-radius: 2px;
|
border-bottom-left-radius: 2px;
|
||||||
|
@ -822,7 +822,7 @@ QTabBar QToolButton::left-arrow:disabled {
|
||||||
}
|
}
|
||||||
|
|
||||||
QDockWidget {
|
QDockWidget {
|
||||||
background: #31363b;
|
background: #313131;
|
||||||
border: 1px solid #403F3F;
|
border: 1px solid #403F3F;
|
||||||
titlebar-close-icon: url(:/qss_icons/rc/close.png);
|
titlebar-close-icon: url(:/qss_icons/rc/close.png);
|
||||||
titlebar-normal-icon: url(:/qss_icons/rc/undock.png);
|
titlebar-normal-icon: url(:/qss_icons/rc/undock.png);
|
||||||
|
@ -848,7 +848,7 @@ QDockWidget::float-button:pressed {
|
||||||
|
|
||||||
QTreeView,
|
QTreeView,
|
||||||
QListView {
|
QListView {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
background-color: #232629;
|
background-color: #232629;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -980,7 +980,7 @@ QSlider::handle:vertical {
|
||||||
|
|
||||||
QToolButton {
|
QToolButton {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border: 1px transparent #76797C;
|
border: 1px transparent #767676;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
margin: 3px;
|
margin: 3px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
|
@ -990,7 +990,7 @@ QToolButton[popupMode="1"] {
|
||||||
/* only for MenuButtonPopup */
|
/* only for MenuButtonPopup */
|
||||||
padding-right: 20px;
|
padding-right: 20px;
|
||||||
/* make way for the popup button */
|
/* make way for the popup button */
|
||||||
border: 1px #76797C;
|
border: 1px #767676;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -998,7 +998,7 @@ QToolButton[popupMode="2"] {
|
||||||
/* only for InstantPopup */
|
/* only for InstantPopup */
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
/* make way for the popup button */
|
/* make way for the popup button */
|
||||||
border: 1px #76797C;
|
border: 1px #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QToolButton:hover,
|
QToolButton:hover,
|
||||||
|
@ -1030,7 +1030,7 @@ QToolButton::menu-indicator {
|
||||||
/* the subcontrols below are used only in the MenuButtonPopup mode */
|
/* the subcontrols below are used only in the MenuButtonPopup mode */
|
||||||
|
|
||||||
QToolButton::menu-button {
|
QToolButton::menu-button {
|
||||||
border: 1px transparent #76797C;
|
border: 1px transparent #767676;
|
||||||
border-top-right-radius: 6px;
|
border-top-right-radius: 6px;
|
||||||
border-bottom-right-radius: 6px;
|
border-bottom-right-radius: 6px;
|
||||||
/* 16px width + 4px for border = 20px allocated above */
|
/* 16px width + 4px for border = 20px allocated above */
|
||||||
|
@ -1043,7 +1043,7 @@ QToolButton::menu-arrow {
|
||||||
}
|
}
|
||||||
|
|
||||||
QToolButton::menu-arrow:open {
|
QToolButton::menu-arrow:open {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPushButton::menu-indicator {
|
QPushButton::menu-indicator {
|
||||||
|
@ -1053,8 +1053,8 @@ QPushButton::menu-indicator {
|
||||||
}
|
}
|
||||||
|
|
||||||
QTableView {
|
QTableView {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
gridline-color: #31363b;
|
gridline-color: #313131;
|
||||||
background-color: #232629;
|
background-color: #232629;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1078,7 +1078,7 @@ QListView::item:selected:active {
|
||||||
}
|
}
|
||||||
|
|
||||||
QHeaderView {
|
QHeaderView {
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
border: 1px transparent;
|
border: 1px transparent;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
|
@ -1086,17 +1086,17 @@ QHeaderView {
|
||||||
}
|
}
|
||||||
|
|
||||||
QHeaderView::section {
|
QHeaderView::section {
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
QHeaderView::section::vertical::first,
|
QHeaderView::section::vertical::first,
|
||||||
QHeaderView::section::vertical::only-one {
|
QHeaderView::section::vertical::only-one {
|
||||||
border-top: 1px solid #76797C;
|
border-top: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QHeaderView::section::vertical {
|
QHeaderView::section::vertical {
|
||||||
|
@ -1105,7 +1105,7 @@ QHeaderView::section::vertical {
|
||||||
|
|
||||||
QHeaderView::section::horizontal::first,
|
QHeaderView::section::horizontal::first,
|
||||||
QHeaderView::section::horizontal::only-one {
|
QHeaderView::section::horizontal::only-one {
|
||||||
border-left: 1px solid #76797C;
|
border-left: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QHeaderView::section::horizontal {
|
QHeaderView::section::horizontal {
|
||||||
|
@ -1129,8 +1129,8 @@ QHeaderView::up-arrow {
|
||||||
}
|
}
|
||||||
|
|
||||||
QTableCornerButton::section {
|
QTableCornerButton::section {
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
border: 1px transparent #76797C;
|
border: 1px transparent #767676;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1141,9 +1141,9 @@ QToolBox {
|
||||||
|
|
||||||
QToolBox::tab {
|
QToolBox::tab {
|
||||||
color: #eff0f1;
|
color: #eff0f1;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-bottom: 1px transparent #31363b;
|
border-bottom: 1px transparent #313131;
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
border-top-right-radius: 5px;
|
border-top-right-radius: 5px;
|
||||||
}
|
}
|
||||||
|
@ -1151,7 +1151,7 @@ QToolBox::tab {
|
||||||
QToolBox::tab:selected {
|
QToolBox::tab:selected {
|
||||||
/* italicize selected tabs */
|
/* italicize selected tabs */
|
||||||
font: italic;
|
font: italic;
|
||||||
background-color: #31363b;
|
background-color: #313131;
|
||||||
border-color: #3daee9;
|
border-color: #3daee9;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1161,16 +1161,16 @@ QStatusBar::item {
|
||||||
|
|
||||||
QFrame[height="3"],
|
QFrame[height="3"],
|
||||||
QFrame[width="3"] {
|
QFrame[width="3"] {
|
||||||
background-color: #76797C;
|
background-color: #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSplitter::handle {
|
QSplitter::handle {
|
||||||
border: 1px dashed #76797C;
|
border: 1px dashed #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSplitter::handle:hover {
|
QSplitter::handle:hover {
|
||||||
background-color: #787876;
|
background-color: #787876;
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSplitter::handle:horizontal {
|
QSplitter::handle:horizontal {
|
||||||
|
@ -1182,7 +1182,7 @@ QSplitter::handle:vertical {
|
||||||
}
|
}
|
||||||
|
|
||||||
QProgressBar {
|
QProgressBar {
|
||||||
border: 1px solid #76797C;
|
border: 1px solid #767676;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,8 @@
|
||||||
|
|
||||||
rigCommander::rigCommander()
|
rigCommander::rigCommander()
|
||||||
{
|
{
|
||||||
|
rigState.mutex = new QMutex();
|
||||||
|
QMutexLocker locker(rigState.mutex);
|
||||||
rigState.filter = 0;
|
rigState.filter = 0;
|
||||||
rigState.mode = 0;
|
rigState.mode = 0;
|
||||||
rigState.ptt = 0;
|
rigState.ptt = 0;
|
||||||
|
@ -33,6 +35,7 @@ rigCommander::rigCommander()
|
||||||
rigCommander::~rigCommander()
|
rigCommander::~rigCommander()
|
||||||
{
|
{
|
||||||
closeComm();
|
closeComm();
|
||||||
|
delete rigState.mutex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -569,12 +572,16 @@ void rigCommander::setFrequency(unsigned char vfo, freqt freq)
|
||||||
|
|
||||||
cmdPayload.append(freqPayload);
|
cmdPayload.append(freqPayload);
|
||||||
if (vfo == 0) {
|
if (vfo == 0) {
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.vfoAFreq = freq;
|
rigState.vfoAFreq = freq;
|
||||||
|
rigState.mutex->unlock();
|
||||||
cmdPayload.prepend('\x00');
|
cmdPayload.prepend('\x00');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.vfoBFreq = freq;
|
rigState.vfoBFreq = freq;
|
||||||
|
rigState.mutex->unlock();
|
||||||
cmdPayload.prepend(vfo);
|
cmdPayload.prepend(vfo);
|
||||||
cmdPayload.prepend('\x25');
|
cmdPayload.prepend('\x25');
|
||||||
}
|
}
|
||||||
|
@ -702,6 +709,8 @@ void rigCommander::setMode(mode_info m)
|
||||||
payload.append(m.filter);
|
payload.append(m.filter);
|
||||||
|
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
|
|
||||||
|
QMutexLocker locker(rigState.mutex);
|
||||||
rigState.mode = m.reg;
|
rigState.mode = m.reg;
|
||||||
rigState.filter = m.filter;
|
rigState.filter = m.filter;
|
||||||
}
|
}
|
||||||
|
@ -733,6 +742,7 @@ void rigCommander::setMode(unsigned char mode, unsigned char modeFilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
|
QMutexLocker locker(rigState.mutex);
|
||||||
rigState.mode = mode;
|
rigState.mode = mode;
|
||||||
rigState.filter = modeFilter;
|
rigState.filter = modeFilter;
|
||||||
|
|
||||||
|
@ -753,6 +763,7 @@ void rigCommander::setDataMode(bool dataOn, unsigned char filter)
|
||||||
payload.append("\x00\x00", 2); // data mode off, bandwidth not defined per ICD.
|
payload.append("\x00\x00", 2); // data mode off, bandwidth not defined per ICD.
|
||||||
}
|
}
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
|
QMutexLocker locker(rigState.mutex);
|
||||||
rigState.datamode = dataOn;
|
rigState.datamode = dataOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1020,6 +1031,7 @@ void rigCommander::setPTT(bool pttOn)
|
||||||
QByteArray payload("\x1C\x00", 2);
|
QByteArray payload("\x1C\x00", 2);
|
||||||
payload.append((char)pttOn);
|
payload.append((char)pttOn);
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
|
QMutexLocker locker(rigState.mutex);
|
||||||
rigState.ptt = pttOn;
|
rigState.ptt = pttOn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1241,16 +1253,22 @@ void rigCommander::parseCommand()
|
||||||
break;
|
break;
|
||||||
case '\x0F':
|
case '\x0F':
|
||||||
emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]);
|
emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.duplex = (duplexMode)(unsigned char)payloadIn[1];
|
rigState.duplex = (duplexMode)(unsigned char)payloadIn[1];
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x11':
|
case '\x11':
|
||||||
emit haveAttenuator((unsigned char)payloadIn.at(1));
|
emit haveAttenuator((unsigned char)payloadIn.at(1));
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.attenuator = (unsigned char)payloadIn.at(1);
|
rigState.attenuator = (unsigned char)payloadIn.at(1);
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x12':
|
case '\x12':
|
||||||
emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2));
|
emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2));
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.antenna = (unsigned char)payloadIn.at(1);
|
rigState.antenna = (unsigned char)payloadIn.at(1);
|
||||||
rigState.rxAntenna = (bool)payloadIn.at(2);
|
rigState.rxAntenna = (bool)payloadIn.at(2);
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x14':
|
case '\x14':
|
||||||
// read levels
|
// read levels
|
||||||
|
@ -1346,7 +1364,6 @@ void rigCommander::parseLevels()
|
||||||
// "INDEX: 00 01 02 03 04 "
|
// "INDEX: 00 01 02 03 04 "
|
||||||
// "DATA: 14 02 00 78 fd "
|
// "DATA: 14 02 00 78 fd "
|
||||||
|
|
||||||
|
|
||||||
if(payloadIn[0] == '\x14')
|
if(payloadIn[0] == '\x14')
|
||||||
{
|
{
|
||||||
switch(payloadIn[1])
|
switch(payloadIn[1])
|
||||||
|
@ -1355,18 +1372,24 @@ void rigCommander::parseLevels()
|
||||||
// AF level - ignore if LAN connection.
|
// AF level - ignore if LAN connection.
|
||||||
if (udp == Q_NULLPTR) {
|
if (udp == Q_NULLPTR) {
|
||||||
emit haveAfGain(level);
|
emit haveAfGain(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.afGain = level;
|
rigState.afGain = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '\x02':
|
case '\x02':
|
||||||
// RX RF Gain
|
// RX RF Gain
|
||||||
emit haveRfGain(level);
|
emit haveRfGain(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.rfGain = level;
|
rigState.rfGain = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x03':
|
case '\x03':
|
||||||
// Squelch level
|
// Squelch level
|
||||||
emit haveSql(level);
|
emit haveSql(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.squelch = level;
|
rigState.squelch = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x07':
|
case '\x07':
|
||||||
// Twin BPF Inner, or, IF-Shift level
|
// Twin BPF Inner, or, IF-Shift level
|
||||||
|
@ -1385,12 +1408,16 @@ void rigCommander::parseLevels()
|
||||||
case '\x0A':
|
case '\x0A':
|
||||||
// TX RF level
|
// TX RF level
|
||||||
emit haveTxPower(level);
|
emit haveTxPower(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.txPower = level;
|
rigState.txPower = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x0B':
|
case '\x0B':
|
||||||
// Mic Gain
|
// Mic Gain
|
||||||
emit haveMicGain(level);
|
emit haveMicGain(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.micGain = level;
|
rigState.micGain = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x0C':
|
case '\x0C':
|
||||||
// CW Keying Speed - ignore for now
|
// CW Keying Speed - ignore for now
|
||||||
|
@ -1401,7 +1428,9 @@ void rigCommander::parseLevels()
|
||||||
case '\x0E':
|
case '\x0E':
|
||||||
// compressor level
|
// compressor level
|
||||||
emit haveCompLevel(level);
|
emit haveCompLevel(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.compLevel = level;
|
rigState.compLevel = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x12':
|
case '\x12':
|
||||||
// NB level - ignore for now
|
// NB level - ignore for now
|
||||||
|
@ -1409,17 +1438,23 @@ void rigCommander::parseLevels()
|
||||||
case '\x15':
|
case '\x15':
|
||||||
// monitor level
|
// monitor level
|
||||||
emit haveMonitorLevel(level);
|
emit haveMonitorLevel(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.monitorLevel = level;
|
rigState.monitorLevel = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x16':
|
case '\x16':
|
||||||
// VOX gain
|
// VOX gain
|
||||||
emit haveVoxGain(level);
|
emit haveVoxGain(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.voxGain = level;
|
rigState.voxGain = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x17':
|
case '\x17':
|
||||||
// anti-VOX gain
|
// anti-VOX gain
|
||||||
emit haveAntiVoxGain(level);
|
emit haveAntiVoxGain(level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.antiVoxGain = level;
|
rigState.antiVoxGain = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1437,42 +1472,58 @@ void rigCommander::parseLevels()
|
||||||
case '\x02':
|
case '\x02':
|
||||||
// S-Meter
|
// S-Meter
|
||||||
emit haveMeter(meterS, level);
|
emit haveMeter(meterS, level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.sMeter = level;
|
rigState.sMeter = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x04':
|
case '\x04':
|
||||||
// Center (IC-R8600)
|
// Center (IC-R8600)
|
||||||
emit haveMeter(meterCenter, level);
|
emit haveMeter(meterCenter, level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.sMeter = level;
|
rigState.sMeter = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x11':
|
case '\x11':
|
||||||
// RF-Power meter
|
// RF-Power meter
|
||||||
emit haveMeter(meterPower, level);
|
emit haveMeter(meterPower, level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.powerMeter = level;
|
rigState.powerMeter = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x12':
|
case '\x12':
|
||||||
// SWR
|
// SWR
|
||||||
emit haveMeter(meterSWR, level);
|
emit haveMeter(meterSWR, level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.swrMeter = level;
|
rigState.swrMeter = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x13':
|
case '\x13':
|
||||||
// ALC
|
// ALC
|
||||||
emit haveMeter(meterALC, level);
|
emit haveMeter(meterALC, level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.alcMeter = level;
|
rigState.alcMeter = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x14':
|
case '\x14':
|
||||||
// COMP dB reduction
|
// COMP dB reduction
|
||||||
emit haveMeter(meterComp, level);
|
emit haveMeter(meterComp, level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.compMeter = level;
|
rigState.compMeter = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x15':
|
case '\x15':
|
||||||
// VD (12V)
|
// VD (12V)
|
||||||
emit haveMeter(meterVoltage, level);
|
emit haveMeter(meterVoltage, level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.voltageMeter = level;
|
rigState.voltageMeter = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x16':
|
case '\x16':
|
||||||
// ID
|
// ID
|
||||||
emit haveMeter(meterCurrent, level);
|
emit haveMeter(meterCurrent, level);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.currentMeter = level;
|
rigState.currentMeter = level;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -2379,6 +2430,7 @@ void rigCommander::parsePTT()
|
||||||
// PTT on
|
// PTT on
|
||||||
emit havePTTStatus(true);
|
emit havePTTStatus(true);
|
||||||
}
|
}
|
||||||
|
QMutexLocker locker(rigState.mutex);
|
||||||
rigState.ptt = (bool)payloadIn[2];
|
rigState.ptt = (bool)payloadIn[2];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2398,6 +2450,7 @@ void rigCommander::parseRegisters1A()
|
||||||
|
|
||||||
// "INDEX: 00 01 02 03 04 "
|
// "INDEX: 00 01 02 03 04 "
|
||||||
// "DATA: 1a 06 01 03 fd " (data mode enabled, filter width 3 selected)
|
// "DATA: 1a 06 01 03 fd " (data mode enabled, filter width 3 selected)
|
||||||
|
QMutexLocker locker(rigState.mutex);
|
||||||
|
|
||||||
switch(payloadIn[01])
|
switch(payloadIn[01])
|
||||||
{
|
{
|
||||||
|
@ -2440,24 +2493,32 @@ void rigCommander::parseRegister1B()
|
||||||
// "Repeater tone"
|
// "Repeater tone"
|
||||||
tone = decodeTone(payloadIn);
|
tone = decodeTone(payloadIn);
|
||||||
emit haveTone(tone);
|
emit haveTone(tone);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.ctcss = tone;
|
rigState.ctcss = tone;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x01':
|
case '\x01':
|
||||||
// "TSQL tone"
|
// "TSQL tone"
|
||||||
tone = decodeTone(payloadIn);
|
tone = decodeTone(payloadIn);
|
||||||
emit haveTSQL(tone);
|
emit haveTSQL(tone);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.tsql = tone;
|
rigState.tsql = tone;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x02':
|
case '\x02':
|
||||||
// DTCS (DCS)
|
// DTCS (DCS)
|
||||||
tone = decodeTone(payloadIn, tinv, rinv);
|
tone = decodeTone(payloadIn, tinv, rinv);
|
||||||
emit haveDTCS(tone, tinv, rinv);
|
emit haveDTCS(tone, tinv, rinv);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.dtcs = tone;
|
rigState.dtcs = tone;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
case '\x07':
|
case '\x07':
|
||||||
// "CSQL code (DV mode)"
|
// "CSQL code (DV mode)"
|
||||||
tone = decodeTone(payloadIn);
|
tone = decodeTone(payloadIn);
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.csql = tone;
|
rigState.csql = tone;
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -2469,6 +2530,7 @@ void rigCommander::parseRegister16()
|
||||||
//"INDEX: 00 01 02 03 "
|
//"INDEX: 00 01 02 03 "
|
||||||
//"DATA: 16 5d 00 fd "
|
//"DATA: 16 5d 00 fd "
|
||||||
// ^-- mode info here
|
// ^-- mode info here
|
||||||
|
|
||||||
switch(payloadIn.at(1))
|
switch(payloadIn.at(1))
|
||||||
{
|
{
|
||||||
case '\x5d':
|
case '\x5d':
|
||||||
|
@ -2477,7 +2539,9 @@ void rigCommander::parseRegister16()
|
||||||
case '\x02':
|
case '\x02':
|
||||||
// Preamp
|
// Preamp
|
||||||
emit havePreamp((unsigned char)payloadIn.at(2));
|
emit havePreamp((unsigned char)payloadIn.at(2));
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.preamp = (unsigned char)payloadIn.at(2);
|
rigState.preamp = (unsigned char)payloadIn.at(2);
|
||||||
|
rigState.mutex->unlock();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -3790,7 +3854,10 @@ void rigCommander::parseFrequency()
|
||||||
|
|
||||||
freq.MHzDouble = frequencyMhz;
|
freq.MHzDouble = frequencyMhz;
|
||||||
|
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.vfoAFreq = freq;
|
rigState.vfoAFreq = freq;
|
||||||
|
rigState.mutex->unlock();
|
||||||
|
|
||||||
emit haveFrequency(freq);
|
emit haveFrequency(freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3868,8 +3935,10 @@ void rigCommander::parseMode()
|
||||||
} else {
|
} else {
|
||||||
filter = 0;
|
filter = 0;
|
||||||
}
|
}
|
||||||
|
rigState.mutex->lock();
|
||||||
rigState.mode = (unsigned char)payloadIn[01];
|
rigState.mode = (unsigned char)payloadIn[01];
|
||||||
rigState.filter = filter;
|
rigState.filter = filter;
|
||||||
|
rigState.mutex->unlock();
|
||||||
emit haveMode((unsigned char)payloadIn[01], filter);
|
emit haveMode((unsigned char)payloadIn[01], filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
#define RIGCOMMANDER_H
|
#define RIGCOMMANDER_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QMutex>
|
||||||
|
#include <QMutexLocker>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include "commhandler.h"
|
#include "commhandler.h"
|
||||||
|
@ -60,6 +62,7 @@ struct timekind {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rigStateStruct {
|
struct rigStateStruct {
|
||||||
|
QMutex *mutex;
|
||||||
freqt vfoAFreq;
|
freqt vfoAFreq;
|
||||||
freqt vfoBFreq;
|
freqt vfoBFreq;
|
||||||
unsigned char currentVfo;
|
unsigned char currentVfo;
|
||||||
|
|
|
@ -175,7 +175,9 @@ void rigCtlClient::socketReadyRead()
|
||||||
|
|
||||||
QStringList command = commandBuffer.mid(num).split(" ");
|
QStringList command = commandBuffer.mid(num).split(" ");
|
||||||
|
|
||||||
if (command[0] == '\xf0' || command[0] == "chk_vfo")
|
QMutexLocker locker(rigState->mutex);
|
||||||
|
|
||||||
|
if (command[0] == 0xf0 || command[0] == "chk_vfo")
|
||||||
{
|
{
|
||||||
QString resp;
|
QString resp;
|
||||||
if (longReply) {
|
if (longReply) {
|
||||||
|
|
|
@ -47,7 +47,7 @@ void transceiverAdjustments::on_IFShiftSlider_valueChanged(int value)
|
||||||
unsigned char outer = ui->TPBFOuterSlider->value();
|
unsigned char outer = ui->TPBFOuterSlider->value();
|
||||||
int shift = value - previousIFShift;
|
int shift = value - previousIFShift;
|
||||||
inner = qMax( 0, qMin(255,int (inner + shift)) );
|
inner = qMax( 0, qMin(255,int (inner + shift)) );
|
||||||
outer =qMax( 0, qMin(255,int (outer + shift)) );
|
outer = qMax( 0, qMin(255,int (outer + shift)) );
|
||||||
|
|
||||||
ui->TPBFInnerSlider->setValue(inner);
|
ui->TPBFInnerSlider->setValue(inner);
|
||||||
ui->TPBFOuterSlider->setValue(outer);
|
ui->TPBFOuterSlider->setValue(outer);
|
||||||
|
|
34
wfmain.cpp
34
wfmain.cpp
|
@ -2257,14 +2257,22 @@ void wfmain:: getInitialRigState()
|
||||||
issueDelayedCommand(cmdGetMode);
|
issueDelayedCommand(cmdGetMode);
|
||||||
|
|
||||||
// From left to right in the UI:
|
// From left to right in the UI:
|
||||||
issueDelayedCommand(cmdGetDataMode);
|
if (rigCaps.hasTransmit)
|
||||||
issueDelayedCommand(cmdGetModInput);
|
{
|
||||||
issueDelayedCommand(cmdGetModDataInput);
|
issueDelayedCommand(cmdGetDataMode);
|
||||||
|
issueDelayedCommand(cmdGetModInput);
|
||||||
|
issueDelayedCommand(cmdGetModDataInput);
|
||||||
|
}
|
||||||
issueDelayedCommand(cmdGetRxGain);
|
issueDelayedCommand(cmdGetRxGain);
|
||||||
issueDelayedCommand(cmdGetAfGain);
|
issueDelayedCommand(cmdGetAfGain);
|
||||||
issueDelayedCommand(cmdGetSql);
|
issueDelayedCommand(cmdGetSql);
|
||||||
issueDelayedCommand(cmdGetTxPower);
|
|
||||||
issueDelayedCommand(cmdGetCurrentModLevel); // level for currently selected mod sources
|
if (rigCaps.hasTransmit)
|
||||||
|
{
|
||||||
|
issueDelayedCommand(cmdGetTxPower);
|
||||||
|
issueDelayedCommand(cmdGetCurrentModLevel); // level for currently selected mod sources
|
||||||
|
}
|
||||||
|
|
||||||
issueDelayedCommand(cmdGetSpectrumRefLevel);
|
issueDelayedCommand(cmdGetSpectrumRefLevel);
|
||||||
issueDelayedCommand(cmdGetDuplexMode);
|
issueDelayedCommand(cmdGetDuplexMode);
|
||||||
|
|
||||||
|
@ -2273,8 +2281,12 @@ void wfmain:: getInitialRigState()
|
||||||
issueDelayedCommand(cmdDispEnable);
|
issueDelayedCommand(cmdDispEnable);
|
||||||
issueDelayedCommand(cmdSpecOn);
|
issueDelayedCommand(cmdSpecOn);
|
||||||
}
|
}
|
||||||
issueDelayedCommand(cmdGetModInput);
|
|
||||||
issueDelayedCommand(cmdGetModDataInput);
|
if (rigCaps.hasTransmit)
|
||||||
|
{
|
||||||
|
issueDelayedCommand(cmdGetModInput);
|
||||||
|
issueDelayedCommand(cmdGetModDataInput);
|
||||||
|
}
|
||||||
|
|
||||||
if(rigCaps.hasCTCSS)
|
if(rigCaps.hasCTCSS)
|
||||||
{
|
{
|
||||||
|
@ -3547,8 +3559,10 @@ void wfmain::receiveMode(unsigned char mode, unsigned char filter)
|
||||||
|
|
||||||
// Note: we need to know if the DATA mode is active to reach mode-D
|
// Note: we need to know if the DATA mode is active to reach mode-D
|
||||||
// some kind of queued query:
|
// some kind of queued query:
|
||||||
if(rigCaps.hasDataModes)
|
if (rigCaps.hasDataModes && rigCaps.hasTransmit)
|
||||||
|
{
|
||||||
issueDelayedCommand(cmdGetDataMode);
|
issueDelayedCommand(cmdGetDataMode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wfmain::receiveDataModeStatus(bool dataEnabled)
|
void wfmain::receiveDataModeStatus(bool dataEnabled)
|
||||||
|
@ -5525,8 +5539,8 @@ void wfmain::on_debugBtn_clicked()
|
||||||
{
|
{
|
||||||
qInfo(logSystem()) << "Debug button pressed.";
|
qInfo(logSystem()) << "Debug button pressed.";
|
||||||
// issueDelayedCommand(cmdGetRigID);
|
// issueDelayedCommand(cmdGetRigID);
|
||||||
emit getRigCIV();
|
//emit getRigCIV();
|
||||||
//trxadj->show();
|
trxadj->show();
|
||||||
//setRadioTimeDatePrep();
|
//setRadioTimeDatePrep();
|
||||||
//wf->setInteraction(QCP::iRangeZoom, true);
|
//wf->setInteraction(QCP::iRangeZoom, true);
|
||||||
//wf->setInteraction(QCP::iRangeDrag, true);
|
//wf->setInteraction(QCP::iRangeDrag, true);
|
||||||
|
|
31
wfmain.ui
31
wfmain.ui
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>946</width>
|
<width>948</width>
|
||||||
<height>582</height>
|
<height>554</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -2684,6 +2684,12 @@
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="audioOutputCombo">
|
<widget class="QComboBox" name="audioOutputCombo">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>300</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="accessibleName">
|
<property name="accessibleName">
|
||||||
<string>Audio Output Selector</string>
|
<string>Audio Output Selector</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -2698,11 +2704,30 @@
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="audioInputCombo">
|
<widget class="QComboBox" name="audioInputCombo">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>300</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="accessibleName">
|
<property name="accessibleName">
|
||||||
<string>Audio Input Selector</string>
|
<string>Audio Input Selector</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_8">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -2840,7 +2865,7 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>946</width>
|
<width>948</width>
|
||||||
<height>22</height>
|
<height>22</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -11,6 +11,8 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
|
||||||
TARGET = wfview
|
TARGET = wfview
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
|
|
||||||
|
DEFINES += WFVIEW_VERSION=\\\"1.2d\\\"
|
||||||
|
|
||||||
CONFIG(debug, release|debug) {
|
CONFIG(debug, release|debug) {
|
||||||
# For Debug builds only:
|
# For Debug builds only:
|
||||||
QMAKE_CXXFLAGS += -faligned-new
|
QMAKE_CXXFLAGS += -faligned-new
|
||||||
|
|
Ładowanie…
Reference in New Issue