Not logging dupes seems to cuase problems with QSL matching where the
Hound fails to log when an RR73 message is not succesfully
received. By logging dupes a later retry by a Hound to complete a QSO
will be recorded in the Fox's log.
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
Where tool tips are defined in rich text, equivalent pain test
accessible descriptions have been added so that screen readers do not
announce HTML tags.
Refactored date time delegates to use a simpler default editor via a
default item editor factory for QDateTime values, the editor is a
standard QDateTimeEdit with a format that includes seconds and renders
assuming the time is UTC.
Modified the Cabrillo log and Fox log database table models to provide
QDateTime items for the edit role of date time fields, and formated
date time strings including seconds and assumed as UTC for the display
role.
This include inverting the order of table view rows so the newest is
at the top, without that the Qt MVC interactions when using a database
table based model is too slow and complex to manage.
The table views now have sort by column capability in the normal way
(click column header to reverse sort order) for timely logging and
non-disruption of Tx starts the log view should be sorted in
descending time order and scrolled to the last row added. Without that
Fox and contest logging will work but serious delays may be invoked
that disrupt operation.
Pending edits are now discarded when adding a new log contest or Fox
log record. Also switch to commit on fields change edit strategy so
there should be no pending edits now anyway.
Move to OnRowChange edit strategy for log tables so that deletes from
view can be implemented cleanly.
Improve layout of log view tables by resizing to contents.
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.