Load a base language translation file if found. E.g. if locale
language is es-AR then wsjtx_es.qm will be loaded before
wsjtx_es_AR.qm. this allows partial translations for languages where
variants or dialects only require some translated strings to be
different from the base language translations. the aim is to greatly
simplify the work of translators, particularly when doing updates to
translations.
Windows makes this more complex than necessary.
On all systems the packaged translation file in the resources
:/Translations directory wsjtx_<lang>.qm will be loaded if <lang>
matches the current system locale. Otherwise the native translatable
strings will be used (en_US is assumed for the native language).
On all systems a wsjtx_<lang>.qm compiled translation file in the
current working directory will be loaded if <lang> matches the current
system locale language and country (wsjtx_en_GB.qm for a locale of
en-GB).
On non-Windows systems the locale used above can be set for just the
wsjtx instance being tested by setting the LANG environment variable,
e.g.
LANG=ca-ES wsjtx
On Windows systems the current locale can only be changed by
installing the relevant Windows Language Pack, selecting the UI
language either as the default or as an
override (Set-WinUILanguageOverride -Language ca-ES) and the signing
out and back in.
The two translations file sources above cam be overridden using a new
command line option:
[-l | -language] <language-code>[-<country-code>]
e.g. -language ca-ES which will load the first readable translation
file as found in the following order: :/Translations/wsjtx_ca_ES.qm,
:/Translation/wsjtx_ca.qm, :/Translations/wsjtx.qm. This search will
be preceded by the normal translation file load from resources
described above. Following that and the normal load from the current
working directory described above, the first readable translation file
as found in the following order: $cwd/wsjtx_ca_ES.qm,
$cwd/wsjtx_ca.qm, $cwd/wsjtx.qm.
This allows Windows testers to change the WSJT-X UI language without
having to change the system UI language and installing the relevant
language pack. Note that using this method will only change the
translated strings, number and date formatting will not change.
Because of this it should only be used for basic testing.
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
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.
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.
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.
Details of --config command line option. Note that low confidence
decodes '?' are not spotted and more generic text for --help command
line option now derived from CMakeLists description strings.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8005 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
The --config <configuration> (-c for short) command line option can be
used to select an existing configuration at start up. If the
configuration does not exist the last configuration used is selected.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7567 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
The class NetworkAccessManager sub-classes QNetworkAccessManager
adding a message box to ask the user if SSL errors may be
ignored. Ignored errors are ignored in future server replies so that
the user is not asked about he same peer certificate chain repeatedly.
The cache is currently per process only and not persistent.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7361 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
It seems that the OpenSSL version on some systems is not capable of
correctly handling intermediate certificates for some sites. These
sites include SourceForge which we use for serving sample files. This
change adds a global handler for QNAM SSL errors with the option to
ignore them at the users discretion.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7359 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
The change also includes a new MultiSettings feature that allows
settings keys common to all configurations. The splash screen disable
is the first of those to be used.
The MultiSettings class has been made safer to use by ensuring it
saves and re-enables the current QSettings group when doing multi
settings actions. This allows access to common, across configuration,
items while within a normal settings group without breaking the
MultiSettings internal implementation.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7073 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Even though the splash screen does not have a title it seems to
interfere with JTAlert which enumerates window titles to identify
WSJT-X instances. I'm not sure why this is necessary, but if it helps
it should be benign.
Ensure that the splash screen is hidden before any message boxes are
shown, this is essential at startup if there is a stale lock file or
rig control error.
Be far less aggressive about bringing the splash screen to the top of
the application window stack. This may cause the splash screen to be
obscured on some platforms.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7025 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
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
Move the FFTW3 cleanup into the main routine as it should only be
called once rather than every time the settings configuration is
changed or reset (MultiSettings).
Call the new fini_ldpc_ routine before exiting in the main routine to
free the LDPC resources.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6764 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Build now creates and installs a UDP library that contains the server
side of the UDP messaging facility. This library is used by the
udp_daemon and message_aggregator reference examples. The new library
is currently a static archive but can also be built as a shared
library. The library allows third party Qt applications to easily
access UDP messages from WSJT-X.
Refactored the message_aggregator reference example to split out
classes into separate translation units. Added new functionality to
exercise the new UDP status fields, highlight own call, CQ/QRZ
messages and decodes near Rx DF.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6691 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Changing configuration causes WSJT-X and JTAlert to get into a fight
for the temporary directory. By moving the creation and clearup of the
temporary directory outside of the configurations loop this issue is
minimized to no worse than before multiple configurations were added.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6630 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Multiple configurations are accessed and maintained from a new main
window menu bar pop up menu "Configurations". The prior settings are
the "Default" entry. New configurations may be added by cloning
existing ones. Maintenance and navigation is via sub menus for each
configuration.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6623 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Samples are downloaded from a web server, currently the SF download
server. The samples are stored in the source controlled samples
directory and the CMake script there builds a suitable directory tree
for upload to the web server under samples/web containing the samples
hierarchy and the generated JSON contents database file. The samples
CMake script also defines an 'upload-samples' target that uses rsync
to efficiently upload the samples and the accompanying contents JSON
database file.
Any directory structure under the samples directory may be created, to
add a new sample file simply add the file to source control and amend
the list of sample files (SAMPLE_FILES) in samples/CMakeLists.txt.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6308 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Also use correct C binding and have compilers determine sizes and
offsets.
The wsjtx.exe program now owns the decoder shared data that is shared
with symspec. It is now in struct dec_data, still a global variable
for now but hopefully a MainWindow member variable soon.
The struct dec_data (in both C/C++ and Fortran) has a sub structure
with the decoder parameters which enables copying and manipulating a
lot cleaner.
New of changed types of shared data must still be modified in
commons.h and a new file lib/jt9com.f90, they must stay in sync as a
pointer to the structure is passed between C and Fortran.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6290 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Also switched to qrand() in place of rand() where possible as it is
thread safe.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5716 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Working frequencies are mode dependent and a reset to defaults button
has been added.
Also re-factored much of the model and item delegate code to simplify
several of the model implementations. Introduced a single routine
called from main to register the custom types with Qt.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5453 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
To facilitate interaction with other applications WSJT-X now sends
status updates to a predefined UDP server or multicast group
address. The status updates include the information currently posted
to the decodes.txt and wsjtx_status.txt files. An optional back
communications channel is also implemented allowing the UDP server
application to control some basic actions in WSJT-X.
A reference implementaion of a typical UDP server written in C++ using
Qt is provided to demonstrate these facilities. This application is
not intended as a user tool but only as an example of how a third
party application may interact with WSJT-X.
The UDP messages Use QDataStream based serialization. Messages are
documented in NetworkMessage.hpp along with some helper classes that
simplify the building and decoding of messages.
Two message handling classes are introduced, MessageClient and
MessageServer. WSJT-X uses the MessageClient class to manage outgoing
and incoming UDP messages that allow communication with other
applications. The MessageServer class implements the kind of code
that a potential cooperating application might use. Although these
classes use Qt serialization facilities, the message formats are
easily read and written by applications that do not use the Qt
framework.
MessageAggregator is a demonstration application that uses
MessageServer and presents a GUI that displays messages from one or
more WSJT-X instances and allows sending back a CQ or QRZ reply
invocation by double clicking a decode. This application is not
intended as a user facing tool but rather as a demonstration of the
WSJT-X UDP messaging facility. It also demonstrates being a multicast
UDP server by allowing multiple instances to run concurrently. This is
enabled by using an appropriate multicast group address as the server
address. Cooperating applications need not implement multicast
techniques but it is recomended otherwise only a single appliaction
can act as a broadcast message (from WSJT-X) recipient.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5225 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Subversion keyword expansion of $Rev:$ in a file is hopeless as it is
impossible to coordinate with a release. Revert to an empty string
when it can't be discovered with svn info etc..
Further changes to the way verion and revision numbers are generated
Local builds from source tar balls or the two phase wsjtx-superbuild
no longer specify any revision, just the version number. Since these
sort of builds are expected to be release candidates or release
versions the revision (svn changeset number) is implicit from the svn
tag of the version.
Merged from wsjtx-1.4 branch.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4986 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Pass the temporary directory to jt9 and use it to give the correct
paths to temporary files. Also jt9 passes the absolute path to
kvasd.dat in the temporary directory to kvasd.
Clear out all the annoying cruft that has accumulated due to having to
run with $CWD as the temporary directory.
Use QStandardPaths to find the writable data directory where needed
rather than passing it around between objects. This now works because
the $CWD hasn't been changed.
Do away with the CMake option WSJT_STANDARD_FILE_LOCATIONS as it is no
longer needed.
Fix astro status file azel.dat formatting.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4732 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
The existing trace file location created when the CMake option
WSJT_QDEBUG_TO_FILE is ON is not usable with a Linux package installed
in /usr.
Moved location to the temporary directory as <APPNAME>_trace.log
Merged from wsjtx-1.4 branch.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4475 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Because of confilicts using the shared memory to communicate with jt9
only one instance of WSJT-X may run with each unique key (rig name).
Added a QLockFile for each unique key in the temp directory and logic
to deal with stale locks and retries.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4465 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
The error and information output from command line parsing needs to be
graphical on Windows since the application is not a console
application.
Made the output graphical on all platforms.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4462 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
If built with qmake the version string will now be "Not for Release"
since some many features essential to making a complete package are
currently only build when using CMake.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4372 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
The Qt test mode that uses special paths for writeable files (via
QtStandardPaths) doesn't make a special temporary file path. This
change appends " - test_mode" to the WSJT-X unique temporary file path
so that an application run in test mode will not interact with another
running in normal mode.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4240 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
I had inadvertantly locked WSJT-X into Qt 5.2 or later by using this
class which only appeared in Qt 5.2. I have made the usage
conditional on Qt version so that builds still work with any Qt 5
version.
As a result builds against Qt version < 5.2 no longer support command
line arguments, so multi-instance support now requires Qt 5.2.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4063 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Added a manpages sub-project to generate man pages for wsjtx from
AsciiDoc source.
Add items required by Debian packaging and Free Desktop Standards.
Add better command line processing to wsjtx including version and help
options.
Add a new command line option 'test-mode' that invokes the Qt test
mode where all writable file locations are moved to a common
directory. This is to allow application testing from a repeatable
start point rather than have the test application sharing files with
normal operations. See QStandardPaths::setTestModeEnabled() for
details of the test location.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4046 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
WSJT-X has a capability of redirecting Qt debugging output (qDebug,
qWarning etc.) to a trace file 'wsjtx_trace.log' which is created in
the application run directory if not already present.
Setting the CMake build option WSJT_QDEBUG_TO_FILE to ON will enable
this feature.
It should be noted that this option is not compatible with a
distributibutable official release since writing to the application
directory is not recommended. Also in a full Release configuration
build all Qt debugging code is elided so no useful trace would be
obtained anyway.
The CMake option WSJT_QDEBUG_IN_RELEASE may be useful in concert with
this option as it causes Qt debugging statements to remain in place in
a Release build configuration. Again not recommended in a full
Release build since the debugging code both slows down the application
and adds unecessary bloat to the executable size.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4032 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
all types of build.
CMake builds use 'svn info' (the git-svn equivalent is also supported)
to get the real latest revision of the workspace that is used to
source a build. If the sources are not in VCS workspace (build from
source snapshot archive for example) then the $Rev$ svn keyword
expansion in mainwindow.cpp is used despite its issues with accuracy.
Non-CMake builds use the $Rev$ keyword expansion where possible.
If a CMake build is from a VCS workspace with local modifications; a
'-dirty' suffix is added to the revision number to denote that.
If no revision number information can be found the word 'local' is
used as a revision number.
The revision specification is used in the WSJT-X "about" box and is
sent to PSKReporter.info as part of the local station information
(this can be viewed at the statistics page
http://pskreporter.info/cgi-bin/pskstats.pl).
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4017 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Svn revision number displayed in about window and sent PSKReporter
only.
About box text centred and uses Copyright symbol.
Window title on "Log QSO" dialog includes rig-name where
multi-instance support is enabled. This is necessary since the "Log
QSO" dialog is not modal.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3960 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
compromising qmake builds. Now it is required to directly include
svnversion.h to get the SVNVERSION macro defined.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3955 ab8295b8-cf94-4d9e-aec4-7959e3be5d79