mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-23 12:38:53 -04:00
Make message boxes more platform independent with a wrapper
Instead of using the Qt QMessageBox class directly a new class MessageBox (MessageBox.hpp) has been added to deal with platform independence issues like the title not being shown on Mac OS X. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6861 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
d375f0c874
commit
3f1ea9d10c
@ -197,6 +197,7 @@ set (WSJT_QT_CONF_DESTINATION ${QT_CONF_DESTINATION} CACHE PATH "Path for the qt
|
||||
#
|
||||
set (wsjt_qt_CXXSRCS
|
||||
qt_helpers.cpp
|
||||
MessageBox.cpp
|
||||
MetaDataRegistry.cpp
|
||||
NetworkServerLookup.cpp
|
||||
revision_utils.cpp
|
||||
|
@ -141,7 +141,6 @@
|
||||
#include <QAudioDeviceInfo>
|
||||
#include <QAudioInput>
|
||||
#include <QDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QAction>
|
||||
#include <QFileDialog>
|
||||
#include <QDir>
|
||||
@ -163,6 +162,7 @@
|
||||
#include <QScopedPointer>
|
||||
#include <QDebug>
|
||||
|
||||
#include "pimpl_impl.hpp"
|
||||
#include "qt_helpers.hpp"
|
||||
#include "MetaDataRegistry.hpp"
|
||||
#include "SettingsGroup.hpp"
|
||||
@ -176,8 +176,7 @@
|
||||
#include "FrequencyList.hpp"
|
||||
#include "StationList.hpp"
|
||||
#include "NetworkServerLookup.hpp"
|
||||
|
||||
#include "pimpl_impl.hpp"
|
||||
#include "MessageBox.hpp"
|
||||
|
||||
#include "ui_Configuration.h"
|
||||
#include "moc_Configuration.cpp"
|
||||
@ -386,7 +385,6 @@ private:
|
||||
void enumerate_rigs ();
|
||||
void set_rig_invariants ();
|
||||
bool validate ();
|
||||
void message_box (QString const& reason, QString const& detail = QString ());
|
||||
void fill_port_combo_box (QComboBox *);
|
||||
Frequency apply_calibration (Frequency) const;
|
||||
Frequency remove_calibration (Frequency) const;
|
||||
@ -819,7 +817,8 @@ Configuration::impl::impl (Configuration * self, QDir const& temp_directory,
|
||||
QDir data_dir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)};
|
||||
if (!data_dir.mkpath ("."))
|
||||
{
|
||||
QMessageBox::critical (this, "WSJT-X", tr ("Create data directory error: ") + data_dir.absolutePath ());
|
||||
MessageBox::critical_message (this, tr ("Failed to create data directory"),
|
||||
tr ("path: \"%1\"").arg (data_dir.absolutePath ()));
|
||||
throw std::runtime_error {"Failed to create data directory"};
|
||||
}
|
||||
|
||||
@ -829,8 +828,9 @@ Configuration::impl::impl (Configuration * self, QDir const& temp_directory,
|
||||
default_azel_directory_ = data_dir;
|
||||
if (!default_save_directory_.mkpath (save_dir) || !default_save_directory_.cd (save_dir))
|
||||
{
|
||||
QMessageBox::critical (this, "WSJT-X", tr ("Create Directory", "Cannot create directory \"") +
|
||||
default_save_directory_.absoluteFilePath (save_dir) + "\".");
|
||||
MessageBox::critical_message (this, tr ("Failed to create save directory"),
|
||||
tr ("path: \"%1\%")
|
||||
.arg (default_save_directory_.absoluteFilePath (save_dir)));
|
||||
throw std::runtime_error {"Failed to create save directory"};
|
||||
}
|
||||
|
||||
@ -840,9 +840,10 @@ Configuration::impl::impl (Configuration * self, QDir const& temp_directory,
|
||||
QString samples_dir {"samples"};
|
||||
if (!default_save_directory_.mkpath (samples_dir))
|
||||
{
|
||||
QMessageBox::critical (this, "WSJT-X", tr ("Create Directory", "Cannot create directory \"") +
|
||||
default_save_directory_.absoluteFilePath (samples_dir) + "\".");
|
||||
throw std::runtime_error {"Failed to create save directory"};
|
||||
MessageBox::critical_message (this, tr ("Failed to create samples directory"),
|
||||
tr ("path: \"%1\"")
|
||||
.arg (default_save_directory_.absoluteFilePath (samples_dir)));
|
||||
throw std::runtime_error {"Failed to create samples directory"};
|
||||
}
|
||||
|
||||
// copy in any new sample files to the sample directory
|
||||
@ -1537,20 +1538,20 @@ bool Configuration::impl::validate ()
|
||||
if (ui_->sound_input_combo_box->currentIndex () < 0
|
||||
&& !QAudioDeviceInfo::availableDevices (QAudio::AudioInput).empty ())
|
||||
{
|
||||
message_box (tr ("Invalid audio input device"));
|
||||
MessageBox::critical_message (this, tr ("Invalid audio input device"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ui_->sound_output_combo_box->currentIndex () < 0
|
||||
&& !QAudioDeviceInfo::availableDevices (QAudio::AudioOutput).empty ())
|
||||
{
|
||||
message_box (tr ("Invalid audio output device"));
|
||||
MessageBox::critical_message (this, tr ("Invalid audio out device"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ui_->PTT_method_button_group->checkedButton ()->isEnabled ())
|
||||
{
|
||||
message_box (tr ("Invalid PTT method"));
|
||||
MessageBox::critical_message (this, tr ("Invalid PTT method"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1560,7 +1561,7 @@ bool Configuration::impl::validate ()
|
||||
&& (ptt_port.isEmpty ()
|
||||
|| combo_box_item_disabled == ui_->PTT_port_combo_box->itemData (ui_->PTT_port_combo_box->findText (ptt_port), Qt::UserRole - 1)))
|
||||
{
|
||||
message_box (tr ("Invalid PTT port"));
|
||||
MessageBox::critical_message (this, tr ("Invalid PTT port"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1858,20 +1859,6 @@ void Configuration::impl::reject ()
|
||||
QDialog::reject ();
|
||||
}
|
||||
|
||||
void Configuration::impl::message_box (QString const& reason, QString const& detail)
|
||||
{
|
||||
QMessageBox mb;
|
||||
mb.setText (reason);
|
||||
if (!detail.isEmpty ())
|
||||
{
|
||||
mb.setDetailedText (detail);
|
||||
}
|
||||
mb.setStandardButtons (QMessageBox::Ok);
|
||||
mb.setDefaultButton (QMessageBox::Ok);
|
||||
mb.setIcon (QMessageBox::Critical);
|
||||
mb.exec ();
|
||||
}
|
||||
|
||||
void Configuration::impl::on_font_push_button_clicked ()
|
||||
{
|
||||
next_font_ = QFontDialog::getFont (0, next_font_, this);
|
||||
@ -2120,10 +2107,10 @@ void Configuration::impl::delete_frequencies ()
|
||||
|
||||
void Configuration::impl::on_reset_frequencies_push_button_clicked (bool /* checked */)
|
||||
{
|
||||
if (QMessageBox::Yes == QMessageBox::question (this, tr ("Reset Working Frequencies")
|
||||
, tr ("Are you sure you want to discard your current "
|
||||
"working frequencies and replace them with default "
|
||||
"ones?")))
|
||||
if (MessageBox::Yes == MessageBox::query_message (this, tr ("Reset Working Frequencies")
|
||||
, tr ("Are you sure you want to discard your current "
|
||||
"working frequencies and replace them with default "
|
||||
"ones?")))
|
||||
{
|
||||
next_frequencies_.reset_to_defaults ();
|
||||
}
|
||||
@ -2197,7 +2184,8 @@ bool Configuration::impl::have_rig ()
|
||||
{
|
||||
if (!open_rig ())
|
||||
{
|
||||
QMessageBox::critical (this, "WSJT-X", tr ("Failed to open connection to rig"));
|
||||
MessageBox::critical_message (this, tr ("Rig control error")
|
||||
, tr ("Failed to open connection to rig"));
|
||||
}
|
||||
return rig_active_;
|
||||
}
|
||||
@ -2401,7 +2389,7 @@ void Configuration::impl::handle_transceiver_failure (QString const& reason)
|
||||
|
||||
if (isVisible ())
|
||||
{
|
||||
message_box (tr ("Rig failure"), reason);
|
||||
MessageBox::critical_message (this, tr ("Rig failure"), reason);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3,11 +3,11 @@
|
||||
#include <QApplication>
|
||||
#include <QString>
|
||||
#include <QPalette>
|
||||
#include <QMessageBox>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
|
||||
#include "qt_helpers.hpp"
|
||||
#include <MessageBox.hpp>
|
||||
|
||||
HelpTextWindow::HelpTextWindow (QString const& title, QString const& file_name, QFont const& font, QWidget * parent)
|
||||
: QLabel {parent, Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint}
|
||||
@ -15,9 +15,9 @@ HelpTextWindow::HelpTextWindow (QString const& title, QString const& file_name,
|
||||
QFile source {file_name};
|
||||
if (!source.open (QIODevice::ReadOnly | QIODevice::Text))
|
||||
{
|
||||
QMessageBox::warning (this, QApplication::applicationName ()
|
||||
, "Cannot open \"" + source.fileName ()
|
||||
+ "\" for reading:" + source.errorString ());
|
||||
MessageBox::warning_message (this, tr ("Help file error")
|
||||
, tr ("Cannot open \"%1\" for reading").arg (source.fileName ())
|
||||
, tr ("Error: %1").arg (source.errorString ()));
|
||||
return;
|
||||
}
|
||||
setText (QTextStream {&source}.readAll ());
|
||||
|
101
MessageBox.cpp
Normal file
101
MessageBox.cpp
Normal file
@ -0,0 +1,101 @@
|
||||
#include "MessageBox.hpp"
|
||||
|
||||
#include <QDialogButtonBox>
|
||||
#include <QPushButton>
|
||||
|
||||
#include "revision_utils.hpp"
|
||||
|
||||
MessageBox::MessageBox (QWidget * parent)
|
||||
: QMessageBox {parent}
|
||||
{
|
||||
setWindowTitle (program_title ());
|
||||
}
|
||||
|
||||
MessageBox::MessageBox (Icon icon, QString const& text, StandardButtons buttons
|
||||
, QWidget * parent, Qt::WindowFlags flags)
|
||||
: QMessageBox {icon, program_title (), text, buttons, parent, flags}
|
||||
{
|
||||
}
|
||||
|
||||
void MessageBox::about_message (QWidget * parent, QString const& text)
|
||||
{
|
||||
QMessageBox::about (parent, program_title (), text);
|
||||
}
|
||||
|
||||
void MessageBox::about_Qt_message (QWidget * parent)
|
||||
{
|
||||
QMessageBox::aboutQt (parent, program_title ());
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
QMessageBox::StandardButton show_it (QWidget *parent, MessageBox::Icon icon
|
||||
, QString const& text
|
||||
, QString const& informative
|
||||
, QString const& detail
|
||||
, MessageBox::StandardButtons buttons
|
||||
, MessageBox::StandardButton default_button)
|
||||
{
|
||||
MessageBox mb {icon, text, MessageBox::NoButton, parent};
|
||||
QDialogButtonBox * button_box = mb.findChild<QDialogButtonBox *> ();
|
||||
Q_ASSERT (button_box);
|
||||
|
||||
uint mask = MessageBox::FirstButton;
|
||||
while (mask <= MessageBox::LastButton) {
|
||||
uint sb = buttons & mask;
|
||||
mask <<= 1;
|
||||
if (!sb)
|
||||
continue;
|
||||
QPushButton * button = mb.addButton (static_cast<MessageBox::StandardButton> (sb));
|
||||
// Choose the first accept role as the default
|
||||
if (mb.defaultButton ())
|
||||
continue;
|
||||
if ((default_button == MessageBox::NoButton
|
||||
&& button_box->buttonRole (button) == QDialogButtonBox::AcceptRole)
|
||||
|| (default_button != MessageBox::NoButton
|
||||
&& sb == static_cast<uint> (default_button)))
|
||||
mb.setDefaultButton (button);
|
||||
}
|
||||
mb.setInformativeText (informative);
|
||||
mb.setDetailedText (detail);
|
||||
if (mb.exec() == -1)
|
||||
return MessageBox::Cancel;
|
||||
return mb.standardButton (mb.clickedButton ());
|
||||
}
|
||||
}
|
||||
|
||||
auto MessageBox::information_message (QWidget * parent, QString const& text
|
||||
, QString const& informative
|
||||
, QString const& detail
|
||||
, StandardButtons buttons
|
||||
, StandardButton default_button) -> StandardButton
|
||||
{
|
||||
return show_it (parent, Information, text, informative, detail, buttons, default_button);
|
||||
}
|
||||
|
||||
auto MessageBox::query_message (QWidget * parent, QString const& text
|
||||
, QString const& informative
|
||||
, QString const& detail
|
||||
, StandardButtons buttons
|
||||
, StandardButton default_button) -> StandardButton
|
||||
{
|
||||
return show_it (parent, Question, text, informative, detail, buttons, default_button);
|
||||
}
|
||||
|
||||
auto MessageBox::warning_message (QWidget * parent, QString const& text
|
||||
, QString const& informative
|
||||
, QString const& detail
|
||||
, StandardButtons buttons
|
||||
, StandardButton default_button) -> StandardButton
|
||||
{
|
||||
return show_it (parent, Warning, text, informative, detail, buttons, default_button);
|
||||
}
|
||||
|
||||
auto MessageBox::critical_message (QWidget * parent, QString const& text
|
||||
, QString const& informative
|
||||
, QString const& detail
|
||||
, StandardButtons buttons
|
||||
, StandardButton default_button) -> StandardButton
|
||||
{
|
||||
return show_it (parent, Critical, text, informative, detail, buttons, default_button);
|
||||
}
|
58
MessageBox.hpp
Normal file
58
MessageBox.hpp
Normal file
@ -0,0 +1,58 @@
|
||||
#ifndef MESSAGE_BOX_HPP__
|
||||
#define MESSAGE_BOX_HPP__
|
||||
|
||||
#include <QMessageBox>
|
||||
|
||||
// get rid of the nasty MS define
|
||||
#ifdef MessageBox
|
||||
#undef MessageBox
|
||||
#endif
|
||||
|
||||
//
|
||||
// MessageBox - wrap the Qt QMessageBox class to give a more platform
|
||||
// neutral and functional interface
|
||||
//
|
||||
class MessageBox
|
||||
: public QMessageBox
|
||||
{
|
||||
public:
|
||||
explicit MessageBox (QWidget * parent = nullptr);
|
||||
explicit MessageBox (Icon, QString const& text, StandardButtons = NoButton
|
||||
, QWidget * parent = nullptr
|
||||
, Qt::WindowFlags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
|
||||
|
||||
static void about_message (QWidget * parent, QString const& text);
|
||||
static void about_Qt_message (QWidget * parent);
|
||||
static StandardButton information_message (QWidget * parent, QString const& text
|
||||
, QString const& informative = QString {}
|
||||
, QString const& detail = QString {}
|
||||
, StandardButtons buttons = Ok
|
||||
, StandardButton default_button = NoButton);
|
||||
static StandardButton query_message (QWidget * parent, QString const& text
|
||||
, QString const& informative = QString {}
|
||||
, QString const& detail = QString {}
|
||||
, StandardButtons buttons = Yes | No
|
||||
, StandardButton default_button = NoButton);
|
||||
static StandardButton warning_message (QWidget * parent, QString const& text
|
||||
, QString const& informative = QString {}
|
||||
, QString const& detail = QString {}
|
||||
, StandardButtons buttons = Ok
|
||||
, StandardButton default_button = NoButton);
|
||||
static StandardButton critical_message (QWidget * parent, QString const& text
|
||||
, QString const& informative = QString {}
|
||||
, QString const& detail = QString {}
|
||||
, StandardButtons buttons = Ok
|
||||
, StandardButton default_button = NoButton);
|
||||
private:
|
||||
// hide the parent static functions so that users use our versions
|
||||
// above that are correctly branded and have better platform
|
||||
// independence
|
||||
using QMessageBox::about;
|
||||
using QMessageBox::aboutQt;
|
||||
using QMessageBox::information;
|
||||
using QMessageBox::question;
|
||||
using QMessageBox::warning;
|
||||
using QMessageBox::critical;
|
||||
};
|
||||
|
||||
#endif
|
@ -14,7 +14,6 @@
|
||||
#include <QMenu>
|
||||
#include <QAction>
|
||||
#include <QActionGroup>
|
||||
#include <QMessageBox>
|
||||
#include <QDialog>
|
||||
#include <QLineEdit>
|
||||
#include <QRegularExpression>
|
||||
@ -30,6 +29,8 @@
|
||||
|
||||
#include "SettingsGroup.hpp"
|
||||
#include "qt_helpers.hpp"
|
||||
#include "SettingsGroup.hpp"
|
||||
#include "MessageBox.hpp"
|
||||
|
||||
#include "pimpl_impl.hpp"
|
||||
|
||||
@ -551,11 +552,11 @@ void MultiSettings::impl::clone_into_configuration (QMainWindow * main_window)
|
||||
if (sources.size () && (1 == sources.size () || QDialog::Accepted == dialog.exec ()))
|
||||
{
|
||||
QString source_name {1 == sources.size () ? sources.at (0) : dialog.name ()};
|
||||
if (QMessageBox::Yes == QMessageBox::question (main_window,
|
||||
tr ("Clone Into Configuration"),
|
||||
tr ("Confirm overwrite of all values for configuration \"%1\" with values from \"%2\"?")
|
||||
.arg (target_name)
|
||||
.arg (source_name)))
|
||||
if (MessageBox::Yes == MessageBox::query_message (main_window,
|
||||
tr ("Clone Into Configuration"),
|
||||
tr ("Confirm overwrite of all values for configuration \"%1\" with values from \"%2\"?")
|
||||
.arg (target_name)
|
||||
.arg (source_name)))
|
||||
{
|
||||
// grab the data to clone from
|
||||
if (source_name == current_group_name)
|
||||
@ -597,10 +598,10 @@ void MultiSettings::impl::reset_configuration (QMainWindow * main_window)
|
||||
{
|
||||
auto const& target_name = active_sub_menu_->title ();
|
||||
|
||||
if (QMessageBox::Yes != QMessageBox::question (main_window,
|
||||
tr ("Reset Configuration"),
|
||||
tr ("Confirm reset to default values for configuration \"%1\"?")
|
||||
.arg (target_name)))
|
||||
if (MessageBox::Yes != MessageBox::query_message (main_window,
|
||||
tr ("Reset Configuration"),
|
||||
tr ("Confirm reset to default values for configuration \"%1\"?")
|
||||
.arg (target_name)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -680,10 +681,10 @@ void MultiSettings::impl::delete_configuration (QMainWindow * main_window)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (QMessageBox::Yes != QMessageBox::question (main_window,
|
||||
tr ("Delete Configuration"),
|
||||
tr ("Confirm deletion of configuration \"%1\"?")
|
||||
.arg (target_name)))
|
||||
if (MessageBox::Yes != MessageBox::query_message (main_window,
|
||||
tr ("Delete Configuration"),
|
||||
tr ("Confirm deletion of configuration \"%1\"?")
|
||||
.arg (target_name)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -4,10 +4,10 @@
|
||||
#include <QSettings>
|
||||
#include <QtWidgets>
|
||||
|
||||
#include "pimpl_impl.hpp"
|
||||
#include "SettingsGroup.hpp"
|
||||
#include "SampleDownloader/Directory.hpp"
|
||||
|
||||
#include "pimpl_impl.hpp"
|
||||
#include "MessageBox.hpp"
|
||||
|
||||
#include "moc_SampleDownloader.cpp"
|
||||
|
||||
@ -124,7 +124,7 @@ SampleDownloader::impl::impl (QSettings * settings
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this, "Input Error", "Invalid URL format");
|
||||
MessageBox::warning_message (this, tr ("Input Error"), tr ("Invalid URL format"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -11,7 +11,6 @@
|
||||
#include <QNetworkReply>
|
||||
#include <QTreeWidgetItem>
|
||||
#include <QTreeWidgetItemIterator>
|
||||
#include <QMessageBox>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonParseError>
|
||||
#include <QJsonArray>
|
||||
@ -22,6 +21,7 @@
|
||||
#include "DirectoryNode.hpp"
|
||||
#include "FileNode.hpp"
|
||||
#include "revision_utils.hpp"
|
||||
#include "MessageBox.hpp"
|
||||
|
||||
#include "moc_Directory.cpp"
|
||||
|
||||
@ -89,7 +89,7 @@ bool Directory::url_root (QUrl root)
|
||||
|
||||
void Directory::error (QString const& title, QString const& message)
|
||||
{
|
||||
QMessageBox::warning (this, title, message);
|
||||
MessageBox::warning_message (this, title, message);
|
||||
}
|
||||
|
||||
bool Directory::refresh ()
|
||||
@ -107,10 +107,10 @@ bool Directory::refresh ()
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this
|
||||
, tr ("URL Error")
|
||||
, tr ("Invalid URL:\n\"%1\"")
|
||||
.arg (url.toDisplayString ()));
|
||||
MessageBox::warning_message (this
|
||||
, tr ("URL Error")
|
||||
, tr ("Invalid URL:\n\"%1\"")
|
||||
.arg (url.toDisplayString ()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -126,16 +126,16 @@ void Directory::download_finished (bool success)
|
||||
auto content = QJsonDocument::fromJson (contents.readAll (), &json_status);
|
||||
if (json_status.error)
|
||||
{
|
||||
QMessageBox::warning (this
|
||||
, tr ("JSON Error")
|
||||
, tr ("Contents file syntax error %1 at character offset %2")
|
||||
.arg (json_status.errorString ()).arg (json_status.offset));
|
||||
MessageBox::warning_message (this
|
||||
, tr ("JSON Error")
|
||||
, tr ("Contents file syntax error %1 at character offset %2")
|
||||
.arg (json_status.errorString ()).arg (json_status.offset));
|
||||
return;
|
||||
}
|
||||
if (!content.isArray ())
|
||||
{
|
||||
QMessageBox::warning (this, tr ("JSON Error")
|
||||
, tr ("Contents file top level must be a JSON array"));
|
||||
MessageBox::warning_message (this, tr ("JSON Error")
|
||||
, tr ("Contents file top level must be a JSON array"));
|
||||
return;
|
||||
}
|
||||
QTreeWidgetItem * parent {invisibleRootItem ()};
|
||||
@ -146,11 +146,11 @@ void Directory::download_finished (bool success)
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this, tr ("File System Error")
|
||||
, tr ("Failed to open \"%1\"\nError: %2 - %3")
|
||||
.arg (contents.fileName ())
|
||||
.arg (contents.error ())
|
||||
.arg (contents.errorString ()));
|
||||
MessageBox::warning_message (this, tr ("File System Error")
|
||||
, tr ("Failed to open \"%1\"\nError: %2 - %3")
|
||||
.arg (contents.fileName ())
|
||||
.arg (contents.error ())
|
||||
.arg (contents.errorString ()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -183,10 +183,10 @@ void Directory::parse_entries (QJsonArray const& entries, QDir const& dir, QTree
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this
|
||||
, tr ("URL Error")
|
||||
, tr ("Invalid URL:\n\"%1\"")
|
||||
.arg (url.toDisplayString ()));
|
||||
MessageBox::warning_message (this
|
||||
, tr ("URL Error")
|
||||
, tr ("Invalid URL:\n\"%1\"")
|
||||
.arg (url.toDisplayString ()));
|
||||
}
|
||||
}
|
||||
else if ("directory" == type)
|
||||
@ -202,34 +202,34 @@ void Directory::parse_entries (QJsonArray const& entries, QDir const& dir, QTree
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this, tr ("JSON Error")
|
||||
, tr ("Contents entries must be a JSON array"));
|
||||
MessageBox::warning_message (this, tr ("JSON Error")
|
||||
, tr ("Contents entries must be a JSON array"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this, tr ("JSON Error")
|
||||
, tr ("Contents entries must have a valid type"));
|
||||
MessageBox::warning_message (this, tr ("JSON Error")
|
||||
, tr ("Contents entries must have a valid type"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this, tr ("JSON Error")
|
||||
, tr ("Contents entries must have a valid name"));
|
||||
MessageBox::warning_message (this, tr ("JSON Error")
|
||||
, tr ("Contents entries must have a valid name"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this, tr ("JSON Error")
|
||||
, tr ("Contents entries must be JSON objects"));
|
||||
MessageBox::warning_message (this, tr ("JSON Error")
|
||||
, tr ("Contents entries must be JSON objects"));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning (this, tr ("JSON Error")
|
||||
, tr ("Contents directories must be relative and within \"%1\"")
|
||||
.arg (samples_dir_name));
|
||||
MessageBox::warning_message (this, tr ("JSON Error")
|
||||
, tr ("Contents directories must be relative and within \"%1\"")
|
||||
.arg (samples_dir_name));
|
||||
}
|
||||
}
|
||||
|
||||
@ -295,5 +295,5 @@ void Directory::update (QTreeWidgetItem * item)
|
||||
void Directory::authentication (QNetworkReply * /* reply */
|
||||
, QAuthenticator * /* authenticator */)
|
||||
{
|
||||
QMessageBox::warning (this, "Network Error", "Authentication required");
|
||||
MessageBox::warning_message (this, tr ("Network Error"), tr ("Authentication required"));
|
||||
}
|
||||
|
@ -4,9 +4,9 @@
|
||||
#include <QUrl>
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
#include <QMessageBox>
|
||||
|
||||
#include "Directory.hpp"
|
||||
#include "MessageBox.hpp"
|
||||
|
||||
FileNode::FileNode (QTreeWidgetItem * parent
|
||||
, QNetworkAccessManager * network_manager
|
||||
@ -26,7 +26,7 @@ FileNode::FileNode (QTreeWidgetItem * parent
|
||||
|
||||
void FileNode::error (QString const& title, QString const& message)
|
||||
{
|
||||
QMessageBox::warning (treeWidget (), title, message);
|
||||
MessageBox::warning_message (treeWidget (), title, message);
|
||||
}
|
||||
|
||||
bool FileNode::sync (bool local)
|
||||
|
@ -81,7 +81,7 @@ MessageAggregatorMainWindow::MessageAggregatorMainWindow ()
|
||||
|
||||
// connect up server
|
||||
connect (server_, &MessageServer::error, [this] (QString const& message) {
|
||||
QMessageBox::warning (this, tr ("Network Error"), message);
|
||||
QMessageBox::warning (this, QApplication::applicationName (), tr ("Network Error"), message);
|
||||
});
|
||||
connect (server_, &MessageServer::client_opened, this, &MessageAggregatorMainWindow::add_client);
|
||||
connect (server_, &MessageServer::client_closed, this, &MessageAggregatorMainWindow::remove_client);
|
||||
|
@ -5,7 +5,6 @@
|
||||
#include <QApplication>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
#include <QMessageBox>
|
||||
#include <QSettings>
|
||||
#include <QDateTime>
|
||||
#include <QStandardPaths>
|
||||
@ -13,6 +12,7 @@
|
||||
#include <QDebug>
|
||||
|
||||
#include "commons.h"
|
||||
#include "MessageBox.hpp"
|
||||
#include "Configuration.hpp"
|
||||
#include "SettingsGroup.hpp"
|
||||
#include "qt_helpers.hpp"
|
||||
@ -214,8 +214,9 @@ void Astro::check_split ()
|
||||
{
|
||||
if (doppler_tracking () && !configuration_->split_mode ())
|
||||
{
|
||||
QMessageBox::warning (this, "Doppler Tracking",
|
||||
"Split operating is required for Doppler tracking");
|
||||
MessageBox::warning_message (this, tr ("Doppler Tracking Error"),
|
||||
tr ("Split operating is required for Doppler tracking"),
|
||||
tr ("Go to \"Menu->File->Settings->Radio\" to enable split operation"));
|
||||
ui_->rbNoDoppler->click ();
|
||||
}
|
||||
}
|
||||
|
13
logqso.cpp
13
logqso.cpp
@ -7,9 +7,9 @@
|
||||
#include <QDebug>
|
||||
|
||||
#include "logbook/adif.h"
|
||||
#include "MessageBox.hpp"
|
||||
|
||||
#include "ui_logqso.h"
|
||||
|
||||
#include "moc_logqso.cpp"
|
||||
|
||||
LogQSO::LogQSO(QString const& programTitle, QSettings * settings, QWidget *parent)
|
||||
@ -112,17 +112,16 @@ void LogQSO::accept()
|
||||
adifile.init(adifilePath);
|
||||
if (!adifile.addQSOToFile(hisCall,hisGrid,mode,rptSent,rptRcvd,date,time,band,comments,name,strDialFreq,m_myCall,m_myGrid,m_txPower))
|
||||
{
|
||||
QMessageBox m;
|
||||
m.setText("Cannot open file \"" + adifilePath + "\".");
|
||||
m.exec();
|
||||
MessageBox::warning_message (this, tr ("Log file error"),
|
||||
tr ("Cannot open \"%1\"").arg (adifilePath));
|
||||
}
|
||||
|
||||
//Log this QSO to file "wsjtx.log"
|
||||
static QFile f {QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("wsjtx.log")};
|
||||
if(!f.open(QIODevice::Text | QIODevice::Append)) {
|
||||
QMessageBox m;
|
||||
m.setText("Cannot open file \"" + f.fileName () + "\" for append:" + f.errorString ());
|
||||
m.exec();
|
||||
MessageBox::warning_message (this, tr ("Log file error"),
|
||||
tr ("Cannot open \"%1\" for append").arg (f.fileName ()),
|
||||
tr ("Error: %1").arg (f.errorString ()));
|
||||
} else {
|
||||
QString logEntry=m_dateTime.date().toString("yyyy-MMM-dd,") +
|
||||
m_dateTime.time().toString("hh:mm,") + hisCall + "," +
|
||||
|
51
main.cpp
51
main.cpp
@ -17,7 +17,6 @@
|
||||
#include <QDir>
|
||||
#include <QStandardPaths>
|
||||
#include <QStringList>
|
||||
#include <QMessageBox>
|
||||
#include <QLockFile>
|
||||
#include <QStack>
|
||||
|
||||
@ -36,6 +35,7 @@
|
||||
#include "lib/init_random_seed.h"
|
||||
#include "Radio.hpp"
|
||||
#include "FrequencyList.hpp"
|
||||
#include "MessageBox.hpp" // last to avoid nasty MS macro definitions
|
||||
|
||||
extern "C" {
|
||||
// Fortran procedures we need
|
||||
@ -127,19 +127,19 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (!parser.parse (a.arguments ()))
|
||||
{
|
||||
QMessageBox::critical (nullptr, a.applicationName (), parser.errorText ());
|
||||
MessageBox::critical_message (nullptr, a.translate ("main", "Command line error"), parser.errorText ());
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (parser.isSet (help_option))
|
||||
{
|
||||
QMessageBox::information (nullptr, a.applicationName (), parser.helpText ());
|
||||
MessageBox::information_message (nullptr, a.translate ("main", "Command line help"), parser.helpText ());
|
||||
return 0;
|
||||
}
|
||||
else if (parser.isSet (version_option))
|
||||
{
|
||||
QMessageBox::information (nullptr, a.applicationName (), a.applicationVersion ());
|
||||
MessageBox::information_message (nullptr, a.translate ("main", "Application version"), a.applicationVersion ());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -181,18 +181,19 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
if (QLockFile::LockFailedError == instance_lock.error ())
|
||||
{
|
||||
auto button = QMessageBox::question (nullptr
|
||||
, QApplication::applicationName ()
|
||||
, QObject::tr ("Another instance may be running, try to remove stale lock file?")
|
||||
, QMessageBox::Yes | QMessageBox::Retry | QMessageBox::No
|
||||
, QMessageBox::Yes);
|
||||
auto button = MessageBox::query_message (nullptr
|
||||
, a.translate ("main", "Another instance may be running")
|
||||
, a.translate ("main", "try to remove stale lock file?")
|
||||
, QString {}
|
||||
, MessageBox::Yes | MessageBox::Retry | MessageBox::No
|
||||
, MessageBox::Yes);
|
||||
switch (button)
|
||||
{
|
||||
case QMessageBox::Yes:
|
||||
case MessageBox::Yes:
|
||||
instance_lock.removeStaleLockFile ();
|
||||
break;
|
||||
|
||||
case QMessageBox::Retry:
|
||||
case MessageBox::Retry:
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -216,18 +217,19 @@ int main(int argc, char *argv[])
|
||||
if (!temp_dir.mkpath (unique_directory)
|
||||
|| !temp_dir.cd (unique_directory))
|
||||
{
|
||||
QMessageBox::critical (nullptr,
|
||||
"WSJT-X",
|
||||
QObject::tr ("Create temporary directory error: ") + temp_dir.absolutePath ());
|
||||
MessageBox::critical_message (nullptr,
|
||||
a.translate ("main", "Failed to create a temporary directory"),
|
||||
a.translate ("main", "Path: \"%1\"").arg (temp_dir.absolutePath ()));
|
||||
throw std::runtime_error {"Failed to create a temporary directory"};
|
||||
}
|
||||
if (!temp_dir.isReadable () || !(temp_ok = QTemporaryFile {temp_dir.absoluteFilePath ("test")}.open ()))
|
||||
{
|
||||
if (QMessageBox::Cancel == QMessageBox::critical (nullptr,
|
||||
"WSJT-X",
|
||||
QObject::tr ("Create temporary directory error:\n%1\n"
|
||||
"Another application may be locking the directory").arg (temp_dir.absolutePath ()),
|
||||
QMessageBox::Retry | QMessageBox::Cancel))
|
||||
auto button = MessageBox::critical_message (nullptr,
|
||||
a.translate ("main", "Failed to create a usable temporary directory"),
|
||||
a.translate ("main", "Another application may be locking the directory"),
|
||||
a.translate ("main", "Path: \"%1\"").arg (temp_dir.absolutePath ()),
|
||||
MessageBox::Retry | MessageBox::Cancel);
|
||||
if (MessageBox::Cancel == button)
|
||||
{
|
||||
throw std::runtime_error {"Failed to create a usable temporary directory"};
|
||||
}
|
||||
@ -270,8 +272,9 @@ int main(int argc, char *argv[])
|
||||
|
||||
if(!mem_jt9.attach()) {
|
||||
if (!mem_jt9.create(sizeof(struct dec_data))) {
|
||||
QMessageBox::critical (nullptr, "Error", "Unable to create shared memory segment.");
|
||||
exit(1);
|
||||
MessageBox::critical_message (nullptr, a.translate ("main", "Shared memory error"),
|
||||
a.translate ("main", "Unable to create shared memory segment"));
|
||||
throw std::runtime_error {"Shared memory error"};
|
||||
}
|
||||
}
|
||||
memset(mem_jt9.data(),0,sizeof(struct dec_data)); //Zero all decoding params in shared memory
|
||||
@ -319,13 +322,13 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
catch (std::exception const& e)
|
||||
{
|
||||
QMessageBox::critical (nullptr, a.applicationName (), e.what ());
|
||||
MessageBox::critical_message (nullptr, a.translate ("main", "Fatal error"), e.what ());
|
||||
std::cerr << "Error: " << e.what () << '\n';
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
QMessageBox::critical (nullptr, a.applicationName (), QObject::tr ("Unexpected error"));
|
||||
std::cerr << "Unexpected error\n";
|
||||
MessageBox::critical_message (nullptr, a.translate ("main", "Unexpected fatal error"));
|
||||
std::cerr << "Unexpected fatal error\n";
|
||||
throw; // hoping the runtime might tell us more about the exception
|
||||
}
|
||||
return -1;
|
||||
|
180
mainwindow.cpp
180
mainwindow.cpp
@ -168,6 +168,8 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
m_config {temp_directory, m_settings, this},
|
||||
m_WSPR_band_hopping {m_settings, &m_config, this},
|
||||
m_WSPR_tx_next {false},
|
||||
m_rigErrorMessageBox {MessageBox::Critical, tr ("Rig Control Error")
|
||||
, MessageBox::Cancel | MessageBox::Ok | MessageBox::Retry},
|
||||
m_wideGraph (new WideGraph(m_settings)),
|
||||
m_echoGraph (new EchoGraph(m_settings)),
|
||||
m_fastGraph (new FastGraph(m_settings)),
|
||||
@ -346,9 +348,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
|
||||
// parts of the rig error message box that are fixed
|
||||
m_rigErrorMessageBox.setInformativeText (tr ("Do you want to reconfigure the radio interface?"));
|
||||
m_rigErrorMessageBox.setStandardButtons (QMessageBox::Cancel | QMessageBox::Ok | QMessageBox::Retry);
|
||||
m_rigErrorMessageBox.setDefaultButton (QMessageBox::Ok);
|
||||
m_rigErrorMessageBox.setIcon (QMessageBox::Critical);
|
||||
m_rigErrorMessageBox.setDefaultButton (MessageBox::Ok);
|
||||
|
||||
// start audio thread and hook up slots & signals for shutdown management
|
||||
// these objects need to be in the audio thread so that invoking
|
||||
@ -544,7 +544,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
auto const& result = m_saveWAVWatcher.future ().result ();
|
||||
if (!result.isEmpty ()) // error
|
||||
{
|
||||
QMessageBox::critical (this, tr("Error writing WAV file"), result);
|
||||
MessageBox::critical_message (this, tr("Error Writing WAV File"), result);
|
||||
}
|
||||
});
|
||||
|
||||
@ -665,8 +665,10 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
{
|
||||
int iret=killbyname("jt9.exe");
|
||||
if(iret == 603) break;
|
||||
if(iret != 0) msgBox("KillByName return code: " +
|
||||
QString::number(iret));
|
||||
if(iret != 0)
|
||||
MessageBox::warning_message (this, tr ("Error Killing jt9.exe Process")
|
||||
, tr ("KillByName return code: %1")
|
||||
.arg (iret));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -682,8 +684,8 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
{
|
||||
if (!quitFile.remove ())
|
||||
{
|
||||
msgBox ("Error removing \"" + quitFile.fileName () +
|
||||
"\" - OK to retry.");
|
||||
MessageBox::query_message (this, tr ("Error removing \"%1\"").arg (quitFile.fileName ())
|
||||
, tr ("Click OK to retry"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1288,10 +1290,10 @@ void MainWindow::fastSink(qint64 frames)
|
||||
}
|
||||
|
||||
void MainWindow::showSoundInError(const QString& errorMsg)
|
||||
{QMessageBox::critical(this, tr("Error in SoundInput"), errorMsg);}
|
||||
{MessageBox::critical_message (this, tr ("Error in Sound Input"), errorMsg);}
|
||||
|
||||
void MainWindow::showSoundOutError(const QString& errorMsg)
|
||||
{QMessageBox::critical(this, tr("Error in SoundOutput"), errorMsg);}
|
||||
{MessageBox::critical_message (this, tr ("Error in Sound Output"), errorMsg);}
|
||||
|
||||
void MainWindow::showStatusMessage(const QString& statusMsg)
|
||||
{statusBar()->showMessage(statusMsg);}
|
||||
@ -1589,7 +1591,9 @@ void MainWindow::statusChanged()
|
||||
<< ui->rptSpinBox->value() << ";" << m_modeTx << endl;
|
||||
f.close();
|
||||
} else {
|
||||
msgBox (tr ("Cannot open \"%1\" for writing: %2").arg (f.fileName ()).arg (f.errorString ()));
|
||||
MessageBox::warning_message (this, tr ("Status File Error")
|
||||
, tr ("Cannot open \"%1\" for writing: %2")
|
||||
.arg (f.fileName ()).arg (f.errorString ()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1729,10 +1733,12 @@ void MainWindow::subProcessFailed (QProcess * process, int exit_code, QProcess::
|
||||
if (argument.contains (' ')) argument = '"' + argument + '"';
|
||||
arguments << argument;
|
||||
}
|
||||
msgBox (tr ("Subprocess failed with exit code %1\nRunning:%2\n%3")
|
||||
.arg (exit_code)
|
||||
.arg (process->program () + ' ' + arguments.join (' '))
|
||||
.arg (QString {process->readAllStandardError()}));
|
||||
MessageBox::critical_message (this, tr ("Subprocess Error")
|
||||
, tr ("Subprocess failed with exit code %1")
|
||||
.arg (exit_code)
|
||||
, tr ("Running: %1\n%2")
|
||||
.arg (process->program () + ' ' + arguments.join (' '))
|
||||
.arg (QString {process->readAllStandardError()}));
|
||||
QTimer::singleShot (0, this, SLOT (close ()));
|
||||
m_valid = false; // ensures exit if still constructing
|
||||
}
|
||||
@ -1748,9 +1754,10 @@ void MainWindow::subProcessError (QProcess * process, QProcess::ProcessError)
|
||||
if (argument.contains (' ')) argument = '"' + argument + '"';
|
||||
arguments << argument;
|
||||
}
|
||||
msgBox (tr ("Subprocess error\nRunning: %1\n%2")
|
||||
.arg (process->program () + ' ' + arguments.join (' '))
|
||||
.arg (process->errorString ()));
|
||||
MessageBox::critical_message (this, tr ("Subprocess error")
|
||||
, tr ("Running: %1\n%2")
|
||||
.arg (process->program () + ' ' + arguments.join (' '))
|
||||
.arg (process->errorString ()));
|
||||
QTimer::singleShot (0, this, SLOT (close ()));
|
||||
m_valid = false; // ensures exit if still constructing
|
||||
}
|
||||
@ -1785,18 +1792,11 @@ void MainWindow::on_stopButton_clicked() //stopButton
|
||||
monitor (false);
|
||||
m_loopall=false;
|
||||
if(m_bRefSpec) {
|
||||
// msgBox("Reference spectrum saved.");
|
||||
// MessageBox::information_message (this, tr ("Reference spectrum saved"));
|
||||
m_bRefSpec=false;
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::msgBox (QString const& text)
|
||||
{
|
||||
msgBox0.setText (text);
|
||||
QApplication::alert (this);
|
||||
msgBox0.exec ();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionOnline_User_Guide_triggered() //Display manual
|
||||
{
|
||||
#if defined (CMAKE_BUILD)
|
||||
@ -1979,10 +1979,10 @@ void MainWindow::diskDat() //diskDat()
|
||||
//Delete ../save/*.wav
|
||||
void MainWindow::on_actionDelete_all_wav_files_in_SaveDir_triggered()
|
||||
{
|
||||
if (QMessageBox::Yes == QMessageBox::warning(this, "Confirm Delete",
|
||||
"Are you sure you want to delete all *.wav and *.c2 files in\n" +
|
||||
QDir::toNativeSeparators(m_config.save_directory ().absolutePath ()) + " ?",
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)) {
|
||||
auto button = MessageBox::query_message (this, tr ("Confirm Delete"),
|
||||
tr ("Are you sure you want to delete all *.wav and *.c2 files in \"%1\"?")
|
||||
.arg (QDir::toNativeSeparators (m_config.save_directory ().absolutePath ())));
|
||||
if (MessageBox::Yes == button) {
|
||||
Q_FOREACH (auto const& file
|
||||
, m_config.save_directory ().entryList ({"*.wav", "*.c2"}, QDir::Files | QDir::Writable)) {
|
||||
m_config.save_directory ().remove (file);
|
||||
@ -2255,7 +2255,9 @@ void::MainWindow::fast_decode_done()
|
||||
out << message.mid(0,n-2) << endl;
|
||||
f.close();
|
||||
} else {
|
||||
msgBox (tr ("Cannot open \"%1\" for append: %2").arg (f.fileName ()).arg (f.errorString ()));
|
||||
MessageBox::warning_message (this, tr ("File Open Error")
|
||||
, tr ("Cannot open \"%1\" for append: %2")
|
||||
.arg (f.fileName ()).arg (f.errorString ()));
|
||||
}
|
||||
|
||||
if(m_mode=="JT9" or m_mode=="JTMSK" or m_mode=="MSK144") {
|
||||
@ -2342,7 +2344,9 @@ void MainWindow::readFromStdout() //readFromStdout
|
||||
out << t.mid(0,n-2) << endl;
|
||||
f.close();
|
||||
} else {
|
||||
msgBox (tr ("Cannot open \"%1\" for append: %2").arg (f.fileName ()).arg (f.errorString ()));
|
||||
MessageBox::warning_message (this, tr ("File Open Error")
|
||||
, tr ("Cannot open \"%1\" for append: %2")
|
||||
.arg (f.fileName ()).arg (f.errorString ()));
|
||||
}
|
||||
|
||||
if (m_config.insert_blank () && m_blankLine)
|
||||
@ -2591,13 +2595,15 @@ void MainWindow::guiUpdate()
|
||||
if (m_auto) auto_tx_mode (false);
|
||||
if(onAirFreq!=m_onAirFreq0) {
|
||||
m_onAirFreq0=onAirFreq;
|
||||
auto const& message = tr ("Please choose another Tx frequency.\n"
|
||||
"WSJT-X will not knowingly transmit another\n"
|
||||
"mode in the WSPR sub-band on 30 m.");
|
||||
auto const& message = tr ("Please choose another Tx frequency."
|
||||
" WSJT-X will not knowingly transmit another"
|
||||
" mode in the WSPR sub-band on 30m.");
|
||||
#if QT_VERSION >= 0x050400
|
||||
QTimer::singleShot (0, [=] {msgBox (message);}); // don't block guiUpdate
|
||||
QTimer::singleShot (0, [=] { // don't block guiUpdate
|
||||
MessageBox::warning_message (this, tr ("WSPR Guard Band"), message);
|
||||
});
|
||||
#else
|
||||
msgBox (message);
|
||||
MessageBox::warning_message (this, tr ("WSPR Guard Band"), message);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -2745,9 +2751,11 @@ void MainWindow::guiUpdate()
|
||||
auto const& message = tr ("Cannot open \"%1\" for append: %2")
|
||||
.arg (f.fileName ()).arg (f.errorString ());
|
||||
#if QT_VERSION >= 0x050400
|
||||
QTimer::singleShot (0, [=] {msgBox (message);}); // don't block guiUpdate
|
||||
QTimer::singleShot (0, [=] { // don't block guiUpdate
|
||||
MessageBox::warning_message (this, tr ("Log File Error"), message);
|
||||
});
|
||||
#else
|
||||
msgBox (message);
|
||||
MessageBox::warning_message (this, tr ("Log File Error"), message);
|
||||
#endif
|
||||
}
|
||||
if (m_config.TX_messages ())
|
||||
@ -2849,9 +2857,11 @@ void MainWindow::guiUpdate()
|
||||
auto const& message = tr ("Cannot open \"%1\" for append: %2")
|
||||
.arg (f.fileName ()).arg(f.errorString ());
|
||||
#if QT_VERSION >= 0x050400
|
||||
QTimer::singleShot (0, [=] {msgBox (message);}); // don't block guiUpdate
|
||||
QTimer::singleShot (0, [=] { // don't block guiUpdate
|
||||
MessageBox::warning_message (this, tr ("Log File Error"), message);
|
||||
});
|
||||
#else
|
||||
msgBox (message);
|
||||
MessageBox::warning_message (this, tr ("Log File Error"), message);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -2971,8 +2981,9 @@ void MainWindow::startTx2()
|
||||
<< m_currentMessage << " " + m_mode << endl;
|
||||
f.close();
|
||||
} else {
|
||||
msgBox (tr ("Cannot open \"%1\" for append: %2")
|
||||
.arg (f.fileName ()).arg (f.errorString ()));
|
||||
MessageBox::warning_message (this, tr ("Log File Error"),
|
||||
tr ("Cannot open \"%1\" for append: %2")
|
||||
.arg (f.fileName ()).arg (f.errorString ()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3095,7 +3106,10 @@ void MainWindow::doubleClickOnCall(bool shift, bool ctrl)
|
||||
{
|
||||
QTextCursor cursor;
|
||||
QString t; //Full contents
|
||||
if(m_mode=="ISCAT") msgBox("Double-click not presently implemented for ISCAT mode");
|
||||
if(m_mode=="ISCAT") {
|
||||
MessageBox::information_message (this,
|
||||
"Double-click not presently implemented for ISCAT mode");
|
||||
}
|
||||
if(shift) t=""; //Silence compiler warning
|
||||
if(m_decodedText2) {
|
||||
cursor=ui->decodedTextBrowser->textCursor();
|
||||
@ -3574,7 +3588,8 @@ void MainWindow::on_lookupButton_clicked() //Lookup button
|
||||
void MainWindow::on_addButton_clicked() //Add button
|
||||
{
|
||||
if(ui->dxGridEntry->text()=="") {
|
||||
msgBox("Please enter a valid grid locator.");
|
||||
MessageBox::warning_message (this, tr ("Add to CALL3.TXT")
|
||||
, tr ("Please enter a valid grid locator"));
|
||||
return;
|
||||
}
|
||||
m_call3Modified=false;
|
||||
@ -3582,10 +3597,9 @@ void MainWindow::on_addButton_clicked() //Add button
|
||||
QString hisgrid=ui->dxGridEntry->text().trimmed();
|
||||
QString newEntry=hisCall + "," + hisgrid;
|
||||
|
||||
// int ret = QMessageBox::warning(this, "Add",
|
||||
// newEntry + "\n" + "Is this station known to be active on EME?",
|
||||
// QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||
// if(ret==QMessageBox::Yes) {
|
||||
// int ret = MessageBox::query_message(this, tr ("Add to CALL3.TXT"),
|
||||
// tr ("Is %1 known to be active on EME?").arg (newEntry));
|
||||
// if(ret==MessageBox::Yes) {
|
||||
// newEntry += ",EME,,";
|
||||
// } else {
|
||||
newEntry += ",,,";
|
||||
@ -3593,7 +3607,9 @@ void MainWindow::on_addButton_clicked() //Add button
|
||||
|
||||
QFile f1 {m_dataDir.absoluteFilePath ("CALL3.TXT")};
|
||||
if(!f1.open(QIODevice::ReadWrite | QIODevice::Text)) {
|
||||
msgBox("Cannot open \"" + f1.fileName () + "\" for read/write:" + f1.errorString ());
|
||||
MessageBox::warning_message (this, tr ("Add to CALL3.TXT")
|
||||
, tr ("Cannot open \"%1\" for read/write: %2")
|
||||
.arg (f1.fileName ()).arg (f1.errorString ()));
|
||||
return;
|
||||
}
|
||||
if(f1.size()==0) {
|
||||
@ -3604,7 +3620,9 @@ void MainWindow::on_addButton_clicked() //Add button
|
||||
}
|
||||
QFile f2 {m_dataDir.absoluteFilePath ("CALL3.TMP")};
|
||||
if(!f2.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||
msgBox("Cannot open \"" + f2.fileName () + "\" for writing:" + f2.errorString ());
|
||||
MessageBox::warning_message (this, tr ("Add to CALL3.TXT")
|
||||
, tr ("Cannot open \"%1\" for writing: %2")
|
||||
.arg (f2.fileName ()).arg (f2.errorString ()));
|
||||
return;
|
||||
}
|
||||
QTextStream in(&f1); //Read from CALL3.TXT
|
||||
@ -3626,11 +3644,10 @@ void MainWindow::on_addButton_clicked() //Add button
|
||||
out << s + "\n";
|
||||
m_call3Modified=true;
|
||||
} else if(hc==hc2) {
|
||||
QString t=s + "\n\n is already in CALL3.TXT\n" +
|
||||
"Do you wish to replace it?";
|
||||
int ret = QMessageBox::warning(this, "Add",t,
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||
if(ret==QMessageBox::Yes) {
|
||||
QString t {tr ("%1\nis already in CALL3.TXT"
|
||||
", do you wish to replace it?").arg (s)};
|
||||
int ret = MessageBox::query_message (this, tr ("Add to CALL3.TXT"), t);
|
||||
if(ret==MessageBox::Yes) {
|
||||
out << newEntry + "\n";
|
||||
m_call3Modified=true;
|
||||
}
|
||||
@ -4112,7 +4129,7 @@ void MainWindow::on_actionWSPR_2_triggered()
|
||||
|
||||
void MainWindow::on_actionWSPR_15_triggered()
|
||||
{
|
||||
msgBox("WSPR-15 is not yet available");
|
||||
MessageBox::information_message (this, tr ("WSPR-15 is not yet available"));
|
||||
switch_mode (Modes::WSPR);
|
||||
}
|
||||
|
||||
@ -4315,10 +4332,9 @@ void MainWindow::on_inGain_valueChanged(int n)
|
||||
|
||||
void MainWindow::on_actionErase_ALL_TXT_triggered() //Erase ALL.TXT
|
||||
{
|
||||
int ret = QMessageBox::warning(this, "Confirm Erase",
|
||||
"Are you sure you want to erase file ALL.TXT ?",
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||
if(ret==QMessageBox::Yes) {
|
||||
int ret = MessageBox::query_message (this, tr ("Confirm Erase"),
|
||||
tr ("Are you sure you want to erase file ALL.TXT?"));
|
||||
if(ret==MessageBox::Yes) {
|
||||
QFile f {m_dataDir.absoluteFilePath ("ALL.TXT")};
|
||||
f.remove();
|
||||
m_RxLog=1;
|
||||
@ -4327,10 +4343,9 @@ void MainWindow::on_actionErase_ALL_TXT_triggered() //Erase ALL.TXT
|
||||
|
||||
void MainWindow::on_actionErase_wsjtx_log_adi_triggered()
|
||||
{
|
||||
int ret = QMessageBox::warning(this, "Confirm Erase",
|
||||
"Are you sure you want to erase file wsjtx_log.adi ?",
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||
if(ret==QMessageBox::Yes) {
|
||||
int ret = MessageBox::query_message (this, tr ("Confirm Erase"),
|
||||
tr ("Are you sure you want to erase file wsjtx_log.adi?"));
|
||||
if(ret==MessageBox::Yes) {
|
||||
QFile f {m_dataDir.absoluteFilePath ("wsjtx_log.adi")};
|
||||
f.remove();
|
||||
}
|
||||
@ -4742,7 +4757,9 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
|
||||
<< m_mode << endl;
|
||||
f2.close();
|
||||
} else {
|
||||
msgBox("Cannot open \"" + f2.fileName () + "\" for append:" + f2.errorString ());
|
||||
MessageBox::warning_message (this, tr ("File Error")
|
||||
,tr ("Cannot open \"%1\" for append: %2")
|
||||
.arg (f2.fileName ()).arg (f2.errorString ()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -4771,10 +4788,10 @@ void MainWindow::handle_transceiver_failure (QString const& reason)
|
||||
update_dynamic_property (ui->readFreq, "state", "error");
|
||||
ui->readFreq->setEnabled (true);
|
||||
on_stopTxButton_clicked ();
|
||||
rigFailure ("Rig Control Error", reason);
|
||||
rigFailure (reason);
|
||||
}
|
||||
|
||||
void MainWindow::rigFailure (QString const& reason, QString const& detail)
|
||||
void MainWindow::rigFailure (QString const& reason)
|
||||
{
|
||||
if (m_first_error)
|
||||
{
|
||||
@ -4784,21 +4801,20 @@ void MainWindow::rigFailure (QString const& reason, QString const& detail)
|
||||
}
|
||||
else
|
||||
{
|
||||
m_rigErrorMessageBox.setText (reason);
|
||||
m_rigErrorMessageBox.setDetailedText (detail);
|
||||
m_rigErrorMessageBox.setDetailedText (reason);
|
||||
|
||||
// don't call slot functions directly to avoid recursion
|
||||
switch (m_rigErrorMessageBox.exec ())
|
||||
{
|
||||
case QMessageBox::Ok:
|
||||
case MessageBox::Ok:
|
||||
QTimer::singleShot (0, this, SLOT (on_actionSettings_triggered ()));
|
||||
break;
|
||||
|
||||
case QMessageBox::Retry:
|
||||
case MessageBox::Retry:
|
||||
QTimer::singleShot (0, this, SLOT (rigOpen ()));
|
||||
break;
|
||||
|
||||
case QMessageBox::Cancel:
|
||||
case MessageBox::Cancel:
|
||||
QTimer::singleShot (0, this, SLOT (close ()));
|
||||
break;
|
||||
}
|
||||
@ -5287,12 +5303,14 @@ void MainWindow::postWSPRDecode (bool is_new, QStringList parts)
|
||||
|
||||
void MainWindow::networkError (QString const& e)
|
||||
{
|
||||
if (QMessageBox::Retry == QMessageBox::warning (this, tr ("Network Error")
|
||||
, tr ("Error: %1\nUDP server %2:%3")
|
||||
.arg (e)
|
||||
.arg (m_config.udp_server_name ())
|
||||
.arg (m_config.udp_server_port ())
|
||||
, QMessageBox::Cancel | QMessageBox::Retry, QMessageBox::Cancel))
|
||||
if (MessageBox::Retry == MessageBox::warning_message (this, tr ("Network Error")
|
||||
, tr ("Error: %1\nUDP server %2:%3")
|
||||
.arg (e)
|
||||
.arg (m_config.udp_server_name ())
|
||||
.arg (m_config.udp_server_port ())
|
||||
, QString {}
|
||||
, MessageBox::Cancel | MessageBox::Retry
|
||||
, MessageBox::Cancel))
|
||||
{
|
||||
// retry server lookup
|
||||
m_messageClient->set_server (m_config.udp_server_name ());
|
||||
@ -5428,7 +5446,9 @@ void MainWindow::WSPR_history(Frequency dialFreq, int ndecodes)
|
||||
out << t1 << endl;
|
||||
f.close();
|
||||
} else {
|
||||
msgBox("Cannot open \"" + f.fileName () + "\" for append:" + f.errorString ());
|
||||
MessageBox::warning_message (this, tr ("File Error")
|
||||
, tr ("Cannot open \"%1\" for append: %2")
|
||||
.arg (f.fileName ()).arg (f.errorString ()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "decodedtext.h"
|
||||
#include "commons.h"
|
||||
#include "astro.h"
|
||||
#include "MessageBox.hpp"
|
||||
|
||||
#define NUM_JT4_SYMBOLS 206 //(72+31)*2, embedded sync
|
||||
#define NUM_JT65_SYMBOLS 126 //63 data + 63 sync
|
||||
@ -290,7 +291,7 @@ private:
|
||||
Configuration m_config;
|
||||
WSPRBandHopping m_WSPR_band_hopping;
|
||||
bool m_WSPR_tx_next;
|
||||
QMessageBox m_rigErrorMessageBox;
|
||||
MessageBox m_rigErrorMessageBox;
|
||||
QScopedPointer<SampleDownloader> m_sampleDownloader;
|
||||
|
||||
QScopedPointer<WideGraph> m_wideGraph;
|
||||
@ -434,8 +435,6 @@ private:
|
||||
QLabel band_hopping_label;
|
||||
QProgressBar progressBar;
|
||||
|
||||
QMessageBox msgBox0;
|
||||
|
||||
QFuture<void> m_wav_future;
|
||||
QFutureWatcher<void> m_wav_future_watcher;
|
||||
QFutureWatcher<void> watcher3;
|
||||
@ -514,7 +513,6 @@ private:
|
||||
void writeSettings();
|
||||
void createStatusBar();
|
||||
void updateStatusBar();
|
||||
void msgBox(QString const&);
|
||||
void genStdMsgs(QString rpt);
|
||||
void clearDX ();
|
||||
void lookup();
|
||||
@ -525,7 +523,7 @@ private:
|
||||
bool gridOK(QString g);
|
||||
bool shortList(QString callsign);
|
||||
void transmit (double snr = 99.);
|
||||
void rigFailure (QString const& reason, QString const& detail);
|
||||
void rigFailure (QString const& reason);
|
||||
void pskSetLocal ();
|
||||
void displayDialFrequency ();
|
||||
void transmitDisplay (bool);
|
||||
|
@ -4,13 +4,13 @@
|
||||
#include "ui_widegraph.h"
|
||||
#include "commons.h"
|
||||
#include "Configuration.hpp"
|
||||
#include "MessageBox.hpp"
|
||||
#include "moc_widegraph.cpp"
|
||||
|
||||
static float swide[MAX_SCREENSIZE];
|
||||
|
||||
namespace
|
||||
{
|
||||
auto user_defined = QObject::tr ("User Defined");
|
||||
float swide[MAX_SCREENSIZE];
|
||||
}
|
||||
|
||||
WideGraph::WideGraph(QSettings * settings, QWidget *parent) :
|
||||
@ -367,9 +367,7 @@ void WideGraph::readPalette () //readPalette
|
||||
}
|
||||
catch (std::exception const& e)
|
||||
{
|
||||
QMessageBox msgBox0;
|
||||
msgBox0.setText(e.what());
|
||||
msgBox0.exec();
|
||||
MessageBox::warning_message (this, tr ("Read Palette"), e.what ());
|
||||
}
|
||||
}
|
||||
|
||||
@ -412,9 +410,7 @@ void WideGraph::on_adjust_palette_push_button_clicked (bool) //Adjust Palette
|
||||
}
|
||||
catch (std::exception const& e)
|
||||
{
|
||||
QMessageBox msgBox0;
|
||||
msgBox0.setText(e.what());
|
||||
msgBox0.exec();
|
||||
MessageBox::warning_message (this, tr ("Read Palette"), e.what ());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,4 +33,13 @@
|
||||
#define WSJTX_STRINGIZE1(x) #x
|
||||
#define WSJTX_STRINGIZE(x) WSJTX_STRINGIZE1(x)
|
||||
|
||||
/* consistent UNICODE behaviour */
|
||||
#ifndef UNICODE
|
||||
# undef _UNICODE
|
||||
#else
|
||||
# ifndef _UNICODE
|
||||
# define _UNICODE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user