Rotated log files limited to ten saved logs with timestamped and
counted file names. Logs written to writeable files directory. Formats
and file names hard coded with expression templates fro efficiency,
but with the ability to provide a user-defined configuration file that
overrides the hard-coded defaults. The configuration file must be in
the configuration files directory and named wsjtx_log_config.ini.
where possible audio devices that disappear are not forgotten until
the user selects another device, this should allow temporarily missing
devices or forgetting to switch on devices before starting WSJT-X to
be handled more cleanly. If all else fails, visiting the Settings
dialog and clicking OK should get things going again. Note that we
still do not have a reliable way of detecting failed audio out
devices, in that case selecting another device and then returning to
the original should work.
Enumerating audio devices is expensive and on Linux may take many
seconds per device. To avoid lengthy blocking behaviour until it is
absolutely necessary, audio devices are not enumerated until one of
the "Settings->Audio" device drop-down lists is opened. Elsewhere when
devices must be discovered the enumeration stops as soon as the
configured device is discovered. A status bar message is posted when
audio devices are being enumerated as a reminder that the UI may block
while this is happening.
The message box warning about unaccounted-for input audio samples now
only triggers when >5 seconds of audio appears to be missing or over
provided. Hopefully this will make the warning less annoying for those
that are using audio sources with high and/or variable latencies. A
status bar message is still posted for any amount of audio input
samples unaccounted for >1/5 second, this message appearing a lot
should be considered as notification that there is a problem with the
audio sub-system, system load is too high, or time synchronization is
stepping the PC clock rather than adjusting the frequency to maintain
monotonic clock ticks.
uses a settings file to define log sink back-ends, by default uses
:/wsjtx_log_config.ini from the resources file-system. Users may
override by placing their own wsjtx_log_config.ini into the WSJT-X
config location. The settings file format is as described in the Boost
log
documentation (https://www.boost.org/doc/libs/1_74_0/libs/log/doc/html/log/detailed/utilities.html#log.detailed.utilities.setup.settings_file)
with the additional feature that allows some pre-defined variables to
be expanded. The predefined variables refer to standard locations in
the file-system, and allow log files and rotation target directory
paths to be specified. The pre-defined variables are:
DesktopLocation
DocumentsLocation
TempLocation
HomeLocation
CacheLocation
GenericCacheLocation
GenericDataLocation
AppDataLocation
and must be used enclosed on braces and preceded by a '$'
character. E.g. to define the pattern for a sink's log file:
FileName="${AppLocalDataLocation}/wsjtx_syslog.log"
this would place the log file wsjtx_syslog.log in the WSJT-X log files
directory, on all platforms.
Requires Boost libraries to be available as an external library.
On Debian style Linux distributions:
sudo apt install boost-dev-all
On Red Hat style Linux distributions:
sudo dnf install boost-dev
On macOS install Boost from a suitable Open Source package manager,
e.g. MacPorts:
sudo port install boost
If building WSJT-X packages on macOS for distribution you must build
boost and its dependants from sources with a suitable macports.conf
file specifying the target macOS version (10.12 at present). To build
Boost from sources in this case:
sudo port -s install boost
On MS Windows boost must be built from sources using the correct MinGW
compilers, i.e. the Qt tools 32- or 64-bit g++ for each target
bit-width respectively. To build boost something along the lines of
the following recipe should be used:
1) Download the boost ZIP source archive from
https://sourceforge.net/projects/boost/, the latest release should be
OK, at the time of writing that was 1.74,
2) create a directory for the sources:
MKDIR C:\boost-install
and extract the boost sources there.
3) Bootstrap and build Boost.Build. If you are building both 32- and
64-bit variants then do this twice, each from the correct MinGW
terminal session for the necessary tool-chain. Specify a unique
install directory for each variant (--prefix=). I use C:\Tools as a
root directory for external libraries and tools, choose whatever suits
your development environment.
CD C:\boost-install\boost_1_74_0\tools\build
bootstrap.bat gcc
b2 --prefix="C:\Tools\boost-build\MinGW32" install
CD C:\boost-install\boost_1_74_0\tools\build
bootstrap.bat gcc
b2 --prefix="C:\Tools\boost-build\MinGW64" install
4) Build Boost. If you are building both 32- and 64-bit variants then
do this twice, each from the correct MinGW terminal session for the
necessary tool-chain. Specify a unique build and install directory for
each variant (--build-dir= and --prefix=). I use C:\Tools as a root
directory for external libraries and tools, choose whatever suits your
development environment.
SET Path=%Path%;C:\Tools\boost-build\MinGW32\bin
CD C:\boost-install\boost_1_74_0
b2 --build-dir="C:\boost-install\boost_1_74_0\build" ^
--build-type=complete ^
--prefix="C:\Tools\boost\MinGW32" ^
toolset=gcc install
SET Path=%Path%;C:\Tools\boost-build\MinGW32\bin
CD C:\boost-install\boost_1_74_0
b2 --build-dir="C:\boost-install\boost_1_74_0\build" ^
--build-type=complete ^
--prefix="C:\Tools\boost\MinGW32" ^
toolset=gcc address-model=64 install
5) Once successfully built the sources directory and build trees
within can be deleted. The build products are contained in the install
directories (C:\Tools\boost-build and C:\Tools\boost in my case).
6) Update your development environment to include the boost headers
and libraries. In my case I have scripts that set up 32- and 64-bit
environments, they need to be modified to include the appropriate
boost library directories on the Path environment variable so that
applications linked to Boost libraries can locate the DLLs. For
32-bit:
SET Path=C:\Tools\boost\MinGW32\lib;%Path%
For 64-bit:
SET Path=C:\Tools\boost\MinGW64\lib;%Path%
7) To build WSJT-X CMake will need to be able to locate the Boost
libraries. I do that using tool-chain files for each of 32- and 64-bit
in both Debug and Release configurations which are passed to the CMake
configuration invocation using the -DCMAKE_TOOLCHAIN_FILE= variable
assignment. In the tool-chain files you need to add the appropriate
Boost installation directory to the CMAKE_PREFIX_PATH variable,
something like:
set (BOOSTDIR C:/Tools/boost/MinGW32)
...
set (CMAKE_PREFIX_PATH ${BOOSTDIR} ${QTDIR} ...
adjust as needed for 32- or 64-bit variants.
polynomial fit is done over 400 Hz bandwidth for T/R periods longer
than 15s, and over approx. 600 Hz (10 times the signal bandwidth) for
T/R period of 15s.
polynomial fit is done over 400 Hz bandwidth for T/R periods longer
than 15s, and over approx. 600 Hz (10 times the signal bandwidth) for
T/R period of 15s.
Passing `--language en', '-l en-US', or `-l en_US` now takes a special
action to not load any translations using the current locale. This
allows the current system UI language not to influence an translations
loaded via the command line override when the native en-US is wanted.
This allows the Spanish UI translation to work, for now, for all
Spanish speaking locales. If necessary we can make it es-ES if other
translators feel it is not a good base for their Spanish variant. OTOH
if they just need to l10n a few strings then, say for Argentina, then
they can do that in an wsjtx_es_AR.ts and untranslated strings there
will fall back to the ones in wsjtx_es.ts automatically. This happens
because of teh way the application loads multiple translation files in
an order suitable for that to happen.
Xavi, EA3W, assures me that all Catalan dialects and variants are
essentially the same, so there's no need to have country variant
specific Catalan translation files.
Re-enabling the WSJT-X i18n facilities. This allows translation files
to be created for languages that are automatically used to lookup
translatable strings. To enable a new language the language name must
be added to the CMakeLists.txt LANGUAGES list variable in BCP47 format
(i.e. en_US, en_GB, pt_PT, ...). Do one build with the CMake option
UPDATE_TRANSLATIONS enabled (do not leave it enabled as there is a
danger of loosing existing translated texts), that will create a fresh
translations/wsjtx_<lang>.ts file which should be immediately checked
in with the CMakeLists.txt change. The .ts should then be updated by
the translator using the Qt Linguist tool to add translations. Check
in the updated .ts file to complete the initial translation process
for that language.
To aid translators their WIP .ts file may be tested by releasing
(using the lrelease tool or from the Linguist menu) a .qm file and
placing that .qm file in the current directory before starting
WSJT-X. The translations will be used if the system locale matches the
file name. If the system locale does not match the file name; the
language may be overridden by setting the LANG environment variable.
For example if a wsjtx_pt_PT.qm file is in the current directory
WSJT-X will use it for translation lookups, regardless of the current
system locale setting, if the LANG variable is set to pt_PT or pt-PT.
On MS Windows from a command prompt:
set LANG=pt_PT
C:\WSJT\wsjtx\bin\wsjtx
elsewhere:
LANG=pt_PT wsjtx
The tool record_time_signal is designed to measure the performance of
QAudioInput. The intended use is to record a short period of live
audio from an on-air time signal of known good quaility, the basic
required parameters are an audio input device, an output file name
(.WAV), a start second in a minute, and a duration in seconds. So for
example to record the time signal ticks and fast data at the top of
the minute:
$ record_time_signal -o wwv.wav -s 55 -d 15
will record 15s of audio at 48000Hz sample rate, stereo, from the
default audio input device, starting at second 55. This will use a
separate timer to stop the recording which is likely to leave the
output file a little short due to buffer latency. The buffer size can
be adjusted using the '-b <buffered-frames>' option.
The tool also supoorts a different mechanism to time the recording
which uses the audio progress via a notify signal. This should ensure
at least the requested duration is recorded The shorter the notify
interval the closer teh final size shoould be to the requested
duration. Use the '-d <interval-ms>' option to adjust the notify
interval.
$ record_time_signal -o wwv.wav -s 55 -d 15 -n 100
Non-default audio devices can be selected, use the '-I' option to list
the available input devices with an index number that can be used to
select the device using the 'R <device-number>' option.
Other options are available, use '-h' for details.
Basic validation, must have non-empty exchange sent and received.
Abstracted log view window widget behaviour into a base class. Turned
on auto resize to row height in log view windows and enabled
alternating colours. Convert empty fields to NULL when inserting new
log table rows to signify missing data. Trap insert row errors when
adding to contest log table so that logging can be held back if
constraints are not met. Re-factored log QSO processing to try insert
row into log table first and pop up a message box if constraints are
not met, this pops up the Log QSO window in case it was initiated by
an auto log event.
This change incorporates a reorganization of the GUI code with
widgets, validators, models, and item delegates being moved to
sub-directories.
Relax the requirements of the ForeignKeyDelegate and related
CandidateKeyFilter classes to allow them to work with constant model
pointers for both referenced and referencing models.
Settings option to highlight not worked before entities/grids/calls by
mode. Fix issues with highlighting decodes and generally refactor the
internal workings of ADIF and QSO recording for worked before
detection.
Includes a new settings facility with the highlighting being contrled
by a new model class and a modified QListView to display the data for
editing. Edits include enable and disable check boxes, a contextual
pop-up menu to adjust backkground and foreground colours.
Still to be implemented are priorities for highlighting
categories. This will be adjustable by drag and drop in the Colors
settings panel, it is already implemented by the priority order has no
effect on highlighting of decodes yet.
The LotW users data file fetch and time since user's last upload is
now controled from the settings dialog.
This change also drops support for Qt versions before 5.5 so that many
workarounds for earlier versions can be removed.
Debug trace is slightly modified to make better use of the Qt built in
facilities to format and synchronize cross thread messaging.
Add lines to the sources.exclude file to select paths and wildcards
that will be excluded from source tarballs. See the tar
--exclude-from=FILE option for syntax.
If a source directory that is used to build targets is included then
those targets should be defined in a CMakeLists.txt file in the same
directory and the following syntax should be used in the parent
CMakeLists.txt script to ensue the parent CMakeLists.txt file remains
valid when the excluded directory is not present:
if (EXITS ${CMAKE_SOURCE_DIR}/optional-source-dir AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/optional-source-dir)
add_subdirectory (optional-source-dir)
endif ()
- Add file contrib/lotw-user-activity.csv, install in data_dir().
- Add suggested frequencies on 20 and 40m for testing FT8 v2.0 messages.
- Add a timeout date (Nov 1 2018) beyond which -rc1 will not run.
- Change Versions.cmake to indicate v2.0.0-rc1.