Commit Graph

84 Commits

Author SHA1 Message Date
Bill Somerville fe4c2b59ee
Revert to narrow character logging 2020-09-27 16:52:19 +01:00
Bill Somerville 030c8868ab
Dump current settings to trace log at startup 2020-09-26 15:14:51 +01:00
Bill Somerville 1d43ddd38b
Use wide character logging for efficiency as most o/p is QString 2020-09-26 14:56:16 +01:00
Bill Somerville e83b91de95
Move ExceptionCatchingApplication class to its own header 2020-09-24 18:32:58 +01:00
Bill Somerville f66788691d
Set up for Boost logging in WSJT-X
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.
2020-09-18 21:23:11 +01:00
Bill Somerville b420c9f6d3
Basic support for using the Boost log library 2020-09-18 21:12:53 +01:00
Bill Somerville 1b36183057
Reduce debug message length 2020-08-16 03:01:16 +01:00
Bill Somerville 02e19b687f
Status message to report approximate # of dropped Rx audio frames
This is  a first cut  at this to  evaluate buffer size  adjustments on
supported platforms. A final version might limit status bar reports to
>1000 dropped frames or similar.
2020-08-08 17:12:48 +01:00
Bill Somerville 9c22eb321d
Merge branch 'develop' into feat-fst280 2020-07-26 16:20:11 +01:00
Bill Somerville 7bb5a8e009
Merge branch 'develop' into feat-psk-reporter-re-work 2020-07-26 15:52:39 +01:00
Bill Somerville 9e6d31dff3
Debug print of shared memory size 2020-07-18 18:49:20 +01:00
Bill Somerville 0de538c723
Close orphaned jt9 sub-process before restarting 2020-07-18 12:31:35 +01:00
Bill Somerville fe28f48cce
Close orphaned jt9 sub-process before restarting 2020-07-18 12:17:21 +01:00
Bill Somerville a02535d655
Ensure configurations switches start with the right style sheet 2020-06-26 11:39:16 +01:00
Bill Somerville b48b23450d
First iteration of optional TCP/IP client for PSK Reporter 2020-06-21 01:36:30 +01:00
Bill Somerville 9c22b5c3ed
Qt v5.15 compatibility 2020-06-13 16:04:41 +01:00
Bill Somerville 0138bb9a75
Tidy up l10n and allow for override to 'en' with no translations
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.
2020-06-01 11:12:49 +01:00
Bill Somerville 7425f13abc
Add some polish to i18n
package Qt translations so that standard buttons etc. get l10n.
2020-05-25 22:44:05 +01:00
Bill Somerville 9de87fb137
Load language translations only when matching the primary language 2020-05-25 15:02:16 +01:00
Bill Somerville 4d5c865c61
Hierarchical translations lookup
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.
2020-05-19 15:48:48 +01:00
Bill Somerville e43cb59bd0
More translatable strings in the UI 2020-05-19 12:28:58 +01:00
Bill Somerville 9501cdf271
Sorting out how to test translation files
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.
2020-05-19 00:14:10 +01:00
Bill Somerville 46638f6f07
Add shared memory synchronization to make access safe 2020-03-15 00:25:35 +00:00
Bill Somerville 45b12e6028
Preparation for UI i18n
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
2019-06-06 12:56:25 +01:00
Bill Somerville 19c46774b4
Moving toward multiplier and dupe detection for contest modes
There's not  much to show  for this so far  but some of  the necessary
infrastructure is in place.
2019-05-30 22:20:09 +01:00
Joe Taylor e9a999cda1 Use the "TU; ..." message when starting another FT4 QSO almost right away. 2019-03-12 11:09:49 -04:00
Bill Somerville b8e4517718 Improve performance of Fox and contest log view windows
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.
2018-12-06 05:41:16 +00:00
Bill Somerville 179e093262 Improve handling of uncaught exceptions by catching them early and displaying in a message box 2018-11-20 23:43:18 +00:00
Bill Somerville ff7c2743b4 Open database outside of multi-settings loop to avoid reconnection warnings 2018-11-12 01:46:16 +00:00
Bill Somerville 947b429723 Start implememntation of database based Fox log model and a new Fox log window widget
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.
2018-11-07 17:49:45 +00:00
Bill Somerville 873b1d1c43 Updated decode highlighting and LotW user's data file management
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.
2018-10-17 00:26:04 +01:00
Bill Somerville 3d5b07173c User guide and help text updates
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
2017-08-05 13:29:55 +00:00
Bill Somerville b4ea0194f1 Support for a startup configuration
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
2017-02-17 12:32:47 +00:00
Bill Somerville bae3b94fd6 Build a cache of allowed SSL exceptions and use them on future network requests
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
2016-12-04 14:17:01 +00:00
Bill Somerville e61f5fa38f Make it possible to ignore SSL errors from network communications
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
2016-12-04 11:17:34 +00:00
Bill Somerville d8a2c1239c Make the splash screen less annoying with a permanent disable check box
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
2016-09-11 01:09:28 +00:00
Steven Franke ca19e977c0 Add early termination code to the msk144 long-message decoder. Remove references to Radford Neal's ldpc code, which served us well but is no longer needed.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7051 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-09-01 21:50:52 +00:00
Bill Somerville 3975e79c30 Ensure that splash screen is raosed to the top after startup
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7029 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-08-13 23:33:35 +00:00
Bill Somerville cc178ab6fa Create the splash screen before assigning the application name
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
2016-08-12 16:12:52 +00:00
Bill Somerville afed56d008 Proper splash screen and release notes help menu link
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7007 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-08-06 13:52:14 +00:00
Bill Somerville 3f1ea9d10c 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
2016-07-03 20:31:19 +00:00
Bill Somerville 282459b665 Clean up some memory leaks
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
2016-06-11 18:50:57 +00:00
Bill Somerville 3ec6d211c8 Extend UDP status message - added Rx/Tx DF, call and grid information
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
2016-05-24 10:08:35 +00:00
Bill Somerville 1cae0b8aa9 Move temporary directory creation and deletion outside of MainWindow
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
2016-04-20 21:59:22 +00:00
Bill Somerville 4cebdddfe5 Add multiple configurations navigation and management
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
2016-04-17 23:39:12 +00:00
Bill Somerville 79a2a65030 Improve time stamps in debug trace and dump settings to debug file
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6582 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-04-06 17:10:54 +00:00
Bill Somerville 924e20efa8 Add a sample download dialog and upload sub-system
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
2015-12-24 11:41:05 +00:00
Bill Somerville d5bc774641 Get rid of jt9com and npar common blocks
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
2015-12-17 20:29:55 +00:00
Bill Somerville 3962a3514a More PRNG rationalization
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6274 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-15 01:36:05 +00:00
Bill Somerville 5e3ec0e891 Move pseudo RNG seeding to start of application
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
2015-07-12 10:28:28 +00:00