mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-24 21:28:41 -05:00
Prep for v1.4.0-rc4
Merged from wsjtx-1.4 branch. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5002 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
21bf2b6b31
commit
e0c37eda14
@ -198,12 +198,6 @@ set (wsjt_qt_CXXSRCS
|
||||
DXLabSuiteCommanderTransceiver.cpp
|
||||
)
|
||||
|
||||
set (ConfigTest_CXXSRCS
|
||||
Configuration.cpp
|
||||
TestConfiguration.cpp
|
||||
ConfigTest.cpp
|
||||
)
|
||||
|
||||
set (jt9_CXXSRCS
|
||||
lib/ipcomm.cpp
|
||||
)
|
||||
@ -234,11 +228,6 @@ set (wsjtx_CXXSRCS
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
set (ConfigTest_CXXSRCS
|
||||
${ConfigTest_CXXSRCS}
|
||||
OmniRigTransceiver.cpp
|
||||
)
|
||||
|
||||
set (wsjt_CXXSRCS
|
||||
${wsjt_CXXSRCS}
|
||||
killbyname.cpp
|
||||
@ -367,11 +356,6 @@ set (wsjt_CSRCS
|
||||
lib/wrapkarn.c
|
||||
)
|
||||
|
||||
set (ConfigTest_UISRCS
|
||||
TestConfiguration.ui
|
||||
Configuration.ui
|
||||
)
|
||||
|
||||
set (wsjt_qt_UISRCS
|
||||
wf_palette_design_dialog.ui
|
||||
)
|
||||
@ -389,7 +373,6 @@ set (all_CXXSRCS
|
||||
${wsjt_CXXSRCS}
|
||||
${wsjt_qt_CXXSRCS}
|
||||
${jt9_CXXSRCS}
|
||||
${ConfigTest_CXXSRCS}
|
||||
${wsjtx_CXXSRCS}
|
||||
)
|
||||
|
||||
@ -692,7 +675,6 @@ endif ()
|
||||
|
||||
# UI generation
|
||||
qt5_wrap_ui (wsjt_qt_GENUISRCS ${wsjt_qt_UISRCS})
|
||||
qt5_wrap_ui (ConfigTest_GENUISRCS ${ConfigTest_UISRCS})
|
||||
qt5_wrap_ui (wsjtx_GENUISRCS ${wsjtx_UISRCS})
|
||||
|
||||
# Resource generation
|
||||
@ -775,11 +757,6 @@ else (${OPENMP_FOUND} OR APPLE)
|
||||
endif (${OPENMP_FOUND} OR APPLE)
|
||||
qt5_use_modules (jt9 Core)
|
||||
|
||||
# build configuration dialog and transceiver interface test application
|
||||
#add_executable (ConfigTest ${ConfigTest_CXXSRCS} ${ConfigTest_GENUISRCS} wsjtx.rc)
|
||||
#target_link_libraries (ConfigTest wsjt wsjt_qt ${hamlib_LIBRARIES})
|
||||
#qt5_use_modules (ConfigTest Widgets OpenGL Network Multimedia)
|
||||
|
||||
# build the main application
|
||||
add_executable (wsjtx MACOSX_BUNDLE
|
||||
${wsjtx_CXXSRCS}
|
||||
|
@ -1,64 +0,0 @@
|
||||
#include <iostream>
|
||||
#include <exception>
|
||||
|
||||
#include <locale.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QSettings>
|
||||
#include <QDir>
|
||||
#include <QDebug>
|
||||
|
||||
#include "revision_utils.hpp"
|
||||
#include "GetUserId.hpp"
|
||||
#include "TraceFile.hpp"
|
||||
#include "TestConfiguration.hpp"
|
||||
#include "AudioDevice.hpp"
|
||||
#include "TransceiverFactory.hpp"
|
||||
#include "Configuration.hpp"
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
try
|
||||
{
|
||||
QApplication application {argc, argv};
|
||||
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
|
||||
// consistent format, do this after
|
||||
// instantiating QApplication so
|
||||
// that GUI has correct l18n
|
||||
|
||||
// get a unique id from the user
|
||||
auto id = get_user_id ();
|
||||
|
||||
// open a user specific trace file
|
||||
TraceFile trace_file {QDir {QApplication::applicationDirPath () + "/logs"}.absoluteFilePath (id + "_config_test.log")};
|
||||
|
||||
// announce to log file
|
||||
qDebug () << program_title (revision ()) + " - Program startup";
|
||||
|
||||
// open user specific settings
|
||||
QSettings settings {QDir {QApplication::applicationDirPath () + "/settings"}.absoluteFilePath (id + "_config_test.ini"), QSettings::IniFormat};
|
||||
|
||||
// the test GUI
|
||||
TestConfiguration main_window ("ConfigTest", &settings);
|
||||
|
||||
// hook up close down mechanism
|
||||
QObject::connect (&application, SIGNAL (lastWindowClosed ()), &application, SLOT (quit ()));
|
||||
|
||||
// start event loop
|
||||
auto status = application.exec();
|
||||
qDebug () << "Normal exit with status: " << status;
|
||||
return status;
|
||||
}
|
||||
catch (std::exception const& e)
|
||||
{
|
||||
qDebug () << "Error exit: " << e.what () << '\n';
|
||||
std::cerr << "Error: " << e.what () << '\n';
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
qDebug () << "Unknown error exit\n";
|
||||
std::cerr << "Unexpected error\n";
|
||||
throw; // hoping the runtime might tell us more about the exception
|
||||
}
|
||||
return -1;
|
||||
}
|
@ -1,471 +0,0 @@
|
||||
#include "TestConfiguration.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QSettings>
|
||||
#include <QMainWindow>
|
||||
#include <QLabel>
|
||||
#include <QDir>
|
||||
#include <QMessageBox>
|
||||
#include <QLineEdit>
|
||||
#include <QDebug>
|
||||
#include <QSortFilterProxyModel>
|
||||
|
||||
#include "revision_utils.hpp"
|
||||
#include "Bands.hpp"
|
||||
#include "FrequencyList.hpp"
|
||||
#include "Configuration.hpp"
|
||||
#include "LiveFrequencyValidator.hpp"
|
||||
|
||||
#include "pimpl_impl.hpp"
|
||||
|
||||
#include "ui_TestConfiguration.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
char const * const title = "Configuration Test v" WSJTX_STRINGIZE (CONFIG_TEST_VERSION_MAJOR) "." WSJTX_STRINGIZE (CONFIG_TEST_VERSION_MINOR) "." WSJTX_STRINGIZE (CONFIG_TEST_VERSION_PATCH) ", " WSJTX_STRINGIZE (SVNVERSION);
|
||||
|
||||
// these undocumented flag values when stored in (Qt::UserRole - 1)
|
||||
// of a ComboBox item model index allow the item to be enabled or
|
||||
// disabled
|
||||
int const combo_box_item_enabled (32 | 1);
|
||||
int const combo_box_item_disabled (0);
|
||||
|
||||
auto LCD_error = "-- Error --";
|
||||
}
|
||||
|
||||
class status_bar_frequency final
|
||||
: public QLabel
|
||||
{
|
||||
public:
|
||||
status_bar_frequency (QString const& prefix, QWidget * parent = 0)
|
||||
: QLabel {parent}
|
||||
, prefix_ {prefix}
|
||||
{
|
||||
}
|
||||
|
||||
void setText (QString const& text)
|
||||
{
|
||||
QLabel::setText (prefix_ + " Frequency: " + text);
|
||||
}
|
||||
|
||||
private:
|
||||
QString prefix_;
|
||||
};
|
||||
|
||||
class TestConfiguration::impl final
|
||||
: public QMainWindow
|
||||
{
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
using Frequency = Radio::Frequency;
|
||||
|
||||
explicit impl (QString const& instance_key, QSettings *, QWidget * parent = nullptr);
|
||||
|
||||
void closeEvent (QCloseEvent *) override;
|
||||
|
||||
Q_SIGNAL void new_frequency (Frequency) const;
|
||||
Q_SIGNAL void new_tx_frequency (Frequency = 0, bool rationalise_mode = true) const;
|
||||
|
||||
private:
|
||||
Q_SLOT void on_configuration_action_triggered ();
|
||||
Q_SLOT void on_band_combo_box_activated (int);
|
||||
Q_SLOT void on_mode_combo_box_activated (int);
|
||||
Q_SLOT void on_PTT_push_button_clicked (bool);
|
||||
Q_SLOT void on_split_push_button_clicked (bool);
|
||||
Q_SLOT void on_TX_offset_spin_box_valueChanged (int);
|
||||
Q_SLOT void on_sync_push_button_clicked (bool);
|
||||
|
||||
Q_SLOT void handle_transceiver_update (Transceiver::TransceiverState);
|
||||
Q_SLOT void handle_transceiver_failure (QString);
|
||||
|
||||
void information_message_box (QString const& reason, QString const& detail);
|
||||
void read_settings ();
|
||||
void write_settings ();
|
||||
void load_models ();
|
||||
void sync_rig ();
|
||||
void band_changed (Frequency);
|
||||
void frequency_changed (Frequency);
|
||||
|
||||
Ui::test_configuration_main_window * ui_;
|
||||
QSettings * settings_;
|
||||
QString callsign_;
|
||||
Configuration configuration_dialog_;
|
||||
bool updating_models_; // hold off UI reaction while adjusting models
|
||||
bool band_edited_;
|
||||
|
||||
Transceiver::TransceiverState rig_state_;
|
||||
|
||||
Frequency desired_frequency_;
|
||||
|
||||
status_bar_frequency RX_frequency_;
|
||||
status_bar_frequency TX_frequency_;
|
||||
};
|
||||
|
||||
#include "TestConfiguration.moc"
|
||||
|
||||
TestConfiguration::TestConfiguration (QString const& instance_key, QSettings * settings, QWidget * parent)
|
||||
: m_ {instance_key, settings, parent}
|
||||
{
|
||||
}
|
||||
|
||||
TestConfiguration::~TestConfiguration ()
|
||||
{
|
||||
}
|
||||
|
||||
TestConfiguration::impl::impl (QString const& instance_key, QSettings * settings, QWidget * parent)
|
||||
: QMainWindow {parent}
|
||||
, ui_ {new Ui::test_configuration_main_window}
|
||||
, settings_ {settings}
|
||||
, configuration_dialog_ {instance_key, settings, this}
|
||||
, updating_models_ {false}
|
||||
, band_edited_ {false}
|
||||
, desired_frequency_ {0u}
|
||||
, RX_frequency_ {"RX"}
|
||||
, TX_frequency_ {"TX"}
|
||||
{
|
||||
ui_->setupUi (this);
|
||||
|
||||
setWindowTitle (program_title (revision ()));
|
||||
|
||||
// mode "Unknown" is display only
|
||||
ui_->mode_combo_box->setItemData (ui_->mode_combo_box->findText ("Unknown"), combo_box_item_disabled, Qt::UserRole - 1);
|
||||
|
||||
// setup status bar widgets
|
||||
statusBar ()->insertPermanentWidget (0, &TX_frequency_);
|
||||
statusBar ()->insertPermanentWidget (0, &RX_frequency_);
|
||||
|
||||
// assign push button ids
|
||||
ui_->TX_button_group->setId (ui_->vfo_0_TX_push_button, 0);
|
||||
ui_->TX_button_group->setId (ui_->vfo_1_TX_push_button, 1);
|
||||
|
||||
// enable live band combo box entry validation and action
|
||||
auto band_validator = new LiveFrequencyValidator {ui_->band_combo_box
|
||||
, configuration_dialog_.bands ()
|
||||
, configuration_dialog_.frequencies ()
|
||||
, this};
|
||||
ui_->band_combo_box->setValidator (band_validator);
|
||||
connect (band_validator, &LiveFrequencyValidator::valid, this, &TestConfiguration::impl::band_changed);
|
||||
connect (ui_->band_combo_box->lineEdit (), &QLineEdit::textEdited, [this] (QString const&) {band_edited_ = true;});
|
||||
|
||||
// hook up band data model
|
||||
ui_->band_combo_box->setModel (configuration_dialog_.frequencies ());
|
||||
|
||||
// combo box drop downs are limited to the drop down selector width,
|
||||
// this almost random increase improves the situation
|
||||
ui_->band_combo_box->view ()->setMinimumWidth (ui_->band_combo_box->view ()->sizeHintForColumn (0) + 10);
|
||||
|
||||
// hook up configuration signals
|
||||
connect (&configuration_dialog_, &Configuration::transceiver_update, this, &TestConfiguration::impl::handle_transceiver_update);
|
||||
connect (&configuration_dialog_, &Configuration::transceiver_failure, this, &TestConfiguration::impl::handle_transceiver_failure);
|
||||
|
||||
// hook up configuration slots
|
||||
connect (this, &TestConfiguration::impl::new_frequency, &configuration_dialog_, &Configuration::transceiver_frequency);
|
||||
connect (this, &TestConfiguration::impl::new_tx_frequency, &configuration_dialog_, &Configuration::transceiver_tx_frequency);
|
||||
|
||||
load_models ();
|
||||
|
||||
read_settings ();
|
||||
|
||||
show ();
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::closeEvent (QCloseEvent * e)
|
||||
{
|
||||
write_settings ();
|
||||
|
||||
QMainWindow::closeEvent (e);
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::on_configuration_action_triggered ()
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_configuration_action_triggered";
|
||||
if (QDialog::Accepted == configuration_dialog_.exec ())
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_configuration_action_triggered: Configuration changed";
|
||||
qDebug () << "TestConfiguration::on_configuration_action_triggered: rig is" << configuration_dialog_.rig_name ();
|
||||
|
||||
if (configuration_dialog_.restart_audio_input ())
|
||||
{
|
||||
qDebug () << "Audio Device Changes - Configuration changes require an audio input device to be restarted";
|
||||
}
|
||||
if (configuration_dialog_.restart_audio_output ())
|
||||
{
|
||||
qDebug () << "Audio Device Changes - Configuration changes require an audio output device to be restarted";
|
||||
}
|
||||
|
||||
load_models ();
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_configuration_action_triggered: Confiugration changes cancelled";
|
||||
}
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::on_band_combo_box_activated (int index)
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_band_combo_box_activated: " << ui_->band_combo_box->currentText ();
|
||||
|
||||
auto model = configuration_dialog_.frequencies ();
|
||||
auto value = model->data (model->index (index, 2), Qt::DisplayRole).toString ();
|
||||
|
||||
if (configuration_dialog_.bands ()->data (QModelIndex {}).toString () == value)
|
||||
{
|
||||
ui_->band_combo_box->lineEdit ()->setStyleSheet ("QLineEdit {color: yellow; background-color : red;}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ui_->band_combo_box->lineEdit ()->setStyleSheet ({});
|
||||
}
|
||||
|
||||
ui_->band_combo_box->setCurrentText (value);
|
||||
|
||||
auto f = model->data (model->index (index, 0), Qt::UserRole + 1).value<Frequency> ();
|
||||
|
||||
band_edited_ = true;
|
||||
band_changed (f);
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::band_changed (Frequency f)
|
||||
{
|
||||
if (band_edited_)
|
||||
{
|
||||
band_edited_ = false;
|
||||
frequency_changed (f);
|
||||
sync_rig ();
|
||||
}
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::frequency_changed (Frequency f)
|
||||
{
|
||||
desired_frequency_ = f;
|
||||
|
||||
// lookup band
|
||||
auto bands_model = configuration_dialog_.bands ();
|
||||
ui_->band_combo_box->setCurrentText (bands_model->data (bands_model->find (f)).toString ());
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::on_sync_push_button_clicked (bool /* checked */)
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_sync_push_button_clicked";
|
||||
|
||||
auto model = configuration_dialog_.frequencies ();
|
||||
auto model_index = model->index (ui_->band_combo_box->currentIndex (), 0);
|
||||
desired_frequency_ = model->data (model_index, Qt::UserRole + 1).value<Frequency> ();
|
||||
|
||||
sync_rig ();
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::on_mode_combo_box_activated (int index)
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_vfo_A_mode_combo_box_activated: " << static_cast<Transceiver::MODE> (index);
|
||||
|
||||
// reset combo box back to current mode and let status update do the actual change
|
||||
ui_->mode_combo_box->setCurrentIndex (rig_state_.mode ());
|
||||
|
||||
Q_EMIT configuration_dialog_.transceiver_mode (static_cast<Transceiver::MODE> (index));
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::on_TX_offset_spin_box_valueChanged (int value)
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_TX_offset_spin_box_editingFinished: " << value;
|
||||
|
||||
Q_EMIT new_tx_frequency (rig_state_.frequency () + value);
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::on_PTT_push_button_clicked (bool checked)
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_PTT_push_button_clicked: " << (checked ? "true" : "false");
|
||||
|
||||
// reset button and let status update do the actual checking
|
||||
ui_->PTT_push_button->setChecked (rig_state_.ptt ());
|
||||
|
||||
Q_EMIT configuration_dialog_.transceiver_ptt (checked);
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::on_split_push_button_clicked (bool checked)
|
||||
{
|
||||
qDebug () << "TestConfiguration::on_split_push_button_clicked: " << (checked ? "true" : "false");
|
||||
|
||||
// reset button and let status update do the actual checking
|
||||
ui_->split_push_button->setChecked (rig_state_.split ());
|
||||
|
||||
if (checked)
|
||||
{
|
||||
Q_EMIT new_tx_frequency (rig_state_.frequency () + ui_->TX_offset_spin_box->value ());
|
||||
}
|
||||
else
|
||||
{
|
||||
Q_EMIT new_tx_frequency ();
|
||||
}
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::sync_rig ()
|
||||
{
|
||||
if (!updating_models_)
|
||||
{
|
||||
if (configuration_dialog_.transceiver_online (true))
|
||||
{
|
||||
if (configuration_dialog_.split_mode ())
|
||||
{
|
||||
Q_EMIT new_frequency (desired_frequency_);
|
||||
Q_EMIT new_tx_frequency (desired_frequency_ + ui_->TX_offset_spin_box->value ());
|
||||
}
|
||||
else
|
||||
{
|
||||
Q_EMIT new_frequency (desired_frequency_);
|
||||
Q_EMIT new_tx_frequency ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::handle_transceiver_update (Transceiver::TransceiverState s)
|
||||
{
|
||||
rig_state_ = s;
|
||||
|
||||
auto model = configuration_dialog_.frequencies ();
|
||||
bool valid {false};
|
||||
for (int row = 0; row < model->rowCount (); ++row)
|
||||
{
|
||||
auto working_frequency = model->data (model->index (row, 0), Qt::UserRole + 1).value<Frequency> ();
|
||||
if (std::abs (static_cast<Radio::FrequencyDelta> (working_frequency - s.frequency ())) < 10000)
|
||||
{
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
if (!valid)
|
||||
{
|
||||
ui_->vfo_0_lcd_number->setStyleSheet ("QLCDNumber {background-color: red;}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ui_->vfo_0_lcd_number->setStyleSheet (QString {});
|
||||
}
|
||||
|
||||
ui_->vfo_0_lcd_number->display (Radio::pretty_frequency_MHz_string (s.frequency ()));
|
||||
|
||||
if (s.split ())
|
||||
{
|
||||
ui_->vfo_1_lcd_number->display (Radio::pretty_frequency_MHz_string (s.tx_frequency ()));
|
||||
|
||||
valid = false;
|
||||
for (int row = 0; row < model->rowCount (); ++row)
|
||||
{
|
||||
auto working_frequency = model->data (model->index (row, 0), Qt::UserRole + 1).value<Frequency> ();
|
||||
if (std::abs (static_cast<Radio::FrequencyDelta> (working_frequency - s.tx_frequency ())) < 10000)
|
||||
{
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
if (!valid)
|
||||
{
|
||||
ui_->vfo_1_lcd_number->setStyleSheet ("QLCDNumber {background-color: red;}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ui_->vfo_1_lcd_number->setStyleSheet (QString {});
|
||||
}
|
||||
ui_->vfo_1_lcd_number->show ();
|
||||
ui_->vfo_1_TX_push_button->show ();
|
||||
}
|
||||
else
|
||||
{
|
||||
ui_->vfo_1_lcd_number->hide ();
|
||||
ui_->vfo_1_TX_push_button->hide ();
|
||||
}
|
||||
|
||||
frequency_changed (s.frequency ());
|
||||
|
||||
ui_->radio_widget->setEnabled (s.online ());
|
||||
|
||||
ui_->mode_combo_box->setCurrentIndex (s.mode ());
|
||||
|
||||
RX_frequency_.setText (Radio::pretty_frequency_MHz_string (s.frequency ()));
|
||||
TX_frequency_.setText (Radio::pretty_frequency_MHz_string (s.split () ? s.tx_frequency () : s.frequency ()));
|
||||
|
||||
ui_->TX_button_group->button (s.split ())->setChecked (true);
|
||||
|
||||
ui_->PTT_push_button->setChecked (s.ptt ());
|
||||
|
||||
ui_->split_push_button->setChecked (s.split ());
|
||||
|
||||
ui_->radio_widget->setEnabled (s.online ());
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::handle_transceiver_failure (QString reason)
|
||||
{
|
||||
ui_->radio_widget->setEnabled (false);
|
||||
|
||||
ui_->vfo_0_lcd_number->display (LCD_error);
|
||||
ui_->vfo_1_lcd_number->display (LCD_error);
|
||||
information_message_box ("Rig failure", reason);
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::read_settings ()
|
||||
{
|
||||
settings_->beginGroup ("TestConfiguration");
|
||||
resize (settings_->value ("window/size", size ()).toSize ());
|
||||
move (settings_->value ("window/pos", pos ()).toPoint ());
|
||||
restoreState (settings_->value ("window/state", saveState ()).toByteArray ());
|
||||
ui_->band_combo_box->setCurrentText (settings_->value ("Band").toString ());
|
||||
settings_->endGroup ();
|
||||
|
||||
settings_->beginGroup ("Configuration");
|
||||
callsign_ = settings_->value ("MyCall").toString ();
|
||||
settings_->endGroup ();
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::write_settings ()
|
||||
{
|
||||
settings_->beginGroup ("TestConfiguration");
|
||||
settings_->setValue ("window/size", size ());
|
||||
settings_->setValue ("window/pos", pos ());
|
||||
settings_->setValue ("window/state", saveState ());
|
||||
settings_->setValue ("Band", ui_->band_combo_box->currentText ());
|
||||
settings_->endGroup ();
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::load_models ()
|
||||
{
|
||||
updating_models_ = true;
|
||||
|
||||
ui_->frequency_group_box->setTitle (configuration_dialog_.rig_name ());
|
||||
// if (auto rig = configuration_dialog_.rig (false)) // don't open radio
|
||||
if (configuration_dialog_.transceiver_online (false)) // don't open radio
|
||||
{
|
||||
Q_EMIT configuration_dialog_.sync_transceiver (true);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui_->radio_widget->setEnabled (false);
|
||||
ui_->vfo_0_lcd_number->display (Radio::pretty_frequency_MHz_string (static_cast<Frequency> (0)));
|
||||
ui_->vfo_1_lcd_number->display (Radio::pretty_frequency_MHz_string (static_cast<Frequency> (0)));
|
||||
}
|
||||
|
||||
if (!configuration_dialog_.split_mode ())
|
||||
{
|
||||
ui_->vfo_1_lcd_number->hide ();
|
||||
ui_->vfo_1_TX_push_button->hide ();
|
||||
}
|
||||
|
||||
updating_models_ = false;
|
||||
}
|
||||
|
||||
void TestConfiguration::impl::information_message_box (QString const& reason, QString const& detail)
|
||||
{
|
||||
qDebug () << "TestConfiguration::information_message_box: reason =" << reason << "detail =" << detail;
|
||||
QMessageBox mb;
|
||||
mb.setWindowFlags (mb.windowFlags () | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
|
||||
mb.setText (reason);
|
||||
if (!detail.isEmpty ())
|
||||
{
|
||||
mb.setDetailedText (detail);
|
||||
}
|
||||
mb.setStandardButtons (QMessageBox::Ok);
|
||||
mb.setDefaultButton (QMessageBox::Ok);
|
||||
mb.setIcon (QMessageBox::Information);
|
||||
mb.exec ();
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
#ifndef TEST_CONFIGURATION_HPP_
|
||||
#define TEST_CONFIGURATION_HPP_
|
||||
|
||||
#include "pimpl_h.hpp"
|
||||
|
||||
class QString;
|
||||
class QSettings;
|
||||
class QWidget;
|
||||
|
||||
class TestConfiguration final
|
||||
{
|
||||
public:
|
||||
explicit TestConfiguration (QString const& instance_key, QSettings *, QWidget * parent = nullptr);
|
||||
~TestConfiguration ();
|
||||
|
||||
private:
|
||||
class impl;
|
||||
pimpl<impl> m_;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,627 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>test_configuration_main_window</class>
|
||||
<widget class="QMainWindow" name="test_configuration_main_window">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>550</width>
|
||||
<height>227</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>550</width>
|
||||
<height>227</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Configuration Test</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="radio_widget" native="true">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QGroupBox" name="frequency_group_box">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Frequency</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLCDNumber" name="vfo_0_lcd_number">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="digitCount">
|
||||
<number>12</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLCDNumber" name="vfo_1_lcd_number">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="digitCount">
|
||||
<number>12</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="vfo_0_TX_push_button">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QPushButton {
|
||||
border: 2px solid #8f8f91;
|
||||
border-radius: 6px;
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 #f6f7fa, stop: 1 #dadbde);
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
QPushButton:checked {
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 #ff2a2e, stop: 1 #ffc6ca);
|
||||
}
|
||||
|
||||
QPushButton:flat {
|
||||
border: none; /* no border for a flat push button */
|
||||
}
|
||||
|
||||
QPushButton:default {
|
||||
border-color: navy; /* make the default button prominent */
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string notr="true">TX_button_group</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="vfo_1_TX_push_button">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QPushButton {
|
||||
border: 2px solid #8f8f91;
|
||||
border-radius: 6px;
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 #f6f7fa, stop: 1 #dadbde);
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
QPushButton:checked {
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 #ff2a2e, stop: 1 #ffc6ca);
|
||||
}
|
||||
|
||||
QPushButton:flat {
|
||||
border: none; /* no border for a flat push button */
|
||||
}
|
||||
|
||||
QPushButton:default {
|
||||
border-color: navy; /* make the default button prominent */
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string notr="true">TX_button_group</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QGroupBox" name="mode_group_box">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Mode</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QComboBox" name="mode_combo_box">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Unknown</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CW</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CW_R</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>USB</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>LSB</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>FSK</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>FSK_R</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>DIG_U</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>DIG_L</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>AM</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>FM</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>DIG_FM</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="PTT_push_button">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QPushButton {
|
||||
border: 2px solid #8f8f91;
|
||||
border-radius: 6px;
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 #9aff9a, stop: 1 #2aff2e);
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
QPushButton:checked {
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 #ff2b2e, stop: 1 #ff979a);
|
||||
}
|
||||
|
||||
QPushButton:flat {
|
||||
border: none; /* no border for a flat push button */
|
||||
}
|
||||
|
||||
QPushButton:default {
|
||||
border-color: navy; /* make the default button prominent */
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>PTT</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<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>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="split_push_button">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QPushButton {
|
||||
border: 2px solid #8f8f91;
|
||||
border-radius: 6px;
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 #9aff9a, stop: 1 #2aff2e);
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
QPushButton:checked {
|
||||
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 #ff2b2e, stop: 1 #ff979a);
|
||||
}
|
||||
|
||||
QPushButton:flat {
|
||||
border: none; /* no border for a flat push button */
|
||||
}
|
||||
|
||||
QPushButton:default {
|
||||
border-color: navy; /* make the default button prominent */
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Split</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<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>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<item>
|
||||
<widget class="QLabel" name="TX_offset_label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Split Offset:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>TX_offset_spin_box</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="TX_offset_spin_box">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string> Hz</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-10000</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>10000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>100</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="band_label">
|
||||
<property name="text">
|
||||
<string>Band:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>band_combo_box</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="band_combo_box">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="insertPolicy">
|
||||
<enum>QComboBox::NoInsert</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="sync_push_button">
|
||||
<property name="text">
|
||||
<string>Sync</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menu_bar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>550</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="file_menu">
|
||||
<property name="title">
|
||||
<string>&File</string>
|
||||
</property>
|
||||
<addaction name="exit_action"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="options_menu">
|
||||
<property name="title">
|
||||
<string>&Options</string>
|
||||
</property>
|
||||
<addaction name="configuration_action"/>
|
||||
</widget>
|
||||
<addaction name="file_menu"/>
|
||||
<addaction name="options_menu"/>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="status_bar"/>
|
||||
<widget class="QToolBar" name="toolBar">
|
||||
<property name="windowTitle">
|
||||
<string>toolBar</string>
|
||||
</property>
|
||||
<attribute name="toolBarArea">
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
<action name="exit_action">
|
||||
<property name="text">
|
||||
<string>E&xit</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="configuration_action">
|
||||
<property name="text">
|
||||
<string>&Configuration</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>exit_action</sender>
|
||||
<signal>triggered()</signal>
|
||||
<receiver>test_configuration_main_window</receiver>
|
||||
<slot>close()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>-1</x>
|
||||
<y>-1</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>261</x>
|
||||
<y>214</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<buttongroups>
|
||||
<buttongroup name="TX_button_group"/>
|
||||
</buttongroups>
|
||||
</ui>
|
@ -4,7 +4,3 @@ set (WSJTX_VERSION_MINOR 5)
|
||||
set (WSJTX_VERSION_PATCH 0)
|
||||
set (WSJTX_RC 0) # release candidate number, comment out or zero for development versions
|
||||
set (WSJTX_VERSION_IS_RELEASE 0) # set to 1 for final release build
|
||||
|
||||
set (CONFIG_TEST_VERSION_MAJOR 0)
|
||||
set (CONFIG_TEST_VERSION_MINOR 2)
|
||||
set (CONFIG_TEST_VERSION_PATCH 13)
|
||||
|
@ -1,6 +1,7 @@
|
||||
set (ASCIIDOC_MANS
|
||||
man1/wsjtx.1.txt
|
||||
man1/jt65code.1.txt
|
||||
man1/rigctl-wsjtx.1.txt
|
||||
man1/rigctld-wsjtx.1.txt
|
||||
)
|
||||
|
||||
|
29
manpages/man1/rigctl-wsjtx.1.txt
Normal file
29
manpages/man1/rigctl-wsjtx.1.txt
Normal file
@ -0,0 +1,29 @@
|
||||
:doctype: manpage
|
||||
:man source: AsciiDoc
|
||||
:man version: {revnumber}
|
||||
:man manual: WSJT-X Manual
|
||||
= rigctl-wsjtx(1)
|
||||
|
||||
== NAME
|
||||
|
||||
rigctl-wsjtx - Hamlib 3 rigctld server.
|
||||
|
||||
== SYNOPSIS
|
||||
|
||||
*rigctl-wsjtx* [OPTIONS]
|
||||
|
||||
== DESCRIPTION
|
||||
|
||||
*wsjtx* uses a version of the *hamlib* CAT control library. This
|
||||
library is heavily modified over the current release version of
|
||||
*hamlib*. If a *wsjtx* user wishes to use the *hamlib* network rig
|
||||
server *rigctld* to remotely control their transceiver; then this
|
||||
special version of the *rigctl* client should be used since that too
|
||||
has the modified *hamlib* code embedded with it.
|
||||
|
||||
WSJT-X home page:: http://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html
|
||||
|
||||
WSJT-X User's Guide:: http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjtx-main-toc2.html
|
||||
|
||||
== OPTIONS
|
||||
Refer to the *hamlib* documentation.
|
Loading…
Reference in New Issue
Block a user