diff --git a/CMakeCPackOptions.cmake.in b/CMakeCPackOptions.cmake.in index f30e6cd9c..2946ad647 100644 --- a/CMakeCPackOptions.cmake.in +++ b/CMakeCPackOptions.cmake.in @@ -2,10 +2,10 @@ # To pass variables to cpack from cmake, they must be configured # in this file. -set (CPACK_PACKAGE_VENDOR "Joe Taylor, K1JT") -set (CPACK_PACKAGE_CONTACT "k1jt@arrl.net") +set (CPACK_PACKAGE_VENDOR "@PROJECT_VENDOR@") +set (CPACK_PACKAGE_CONTACT "@PROJECT_CONTACT@") set (CPACK_PACKAGE_DESCRIPTION_FILE "@PROJECT_SOURCE_DIR@/Copyright.txt") -set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "WSJT-X - JT9 and JT65 Modes for LF, MF and HF Amateur Radio") +set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "@PROJECT_SUMMARY_DESCRIPTION@") set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/license.txt") set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) set (CPACK_PACKAGE_EXECUTABLES wsjtx "WSJT-X") @@ -15,6 +15,7 @@ set (CPACK_STRIP_FILES TRUE) # # components # +set (CPACK_COMPONENTS_ALL Runtime) #set (CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "WSJT-X Application") #set (CPACK_COMPONENT_APPLICATIONS_DESCRIPTION "@WSJTX_DESCRIPTION_SUMMARY@") @@ -74,8 +75,11 @@ if ("${CPACK_GENERATOR}" STREQUAL "WIX") endif () if ("${CPACK_GENERATOR}" STREQUAL "DEB") + set (CPACK_DEBIAN_PACKAGE_DESCRIPTION "@PROJECT_DESCRIPTION@") set (CPACK_PACKAGE_FILE_NAME "@DEBIAN_PACKAGE_FILE_NAME@") set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "@PROJECT_HOMEPAGE@") + set (CPACK_DEBIAN_PACKAGE_DEPENDS "libgfortran3 (>=4.8.2), libqt5multimedia5-plugins (>=5), libqt5widgets5 (>=5), libc6 (>=2.19)") + set (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} Debian) endif ("${CPACK_GENERATOR}" STREQUAL "DEB") message (STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") diff --git a/CMakeLists.txt b/CMakeLists.txt index 56fbac20e..7acd62d3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,38 @@ cmake_minimum_required (VERSION 2.8.9 FATAL_ERROR) project (wsjtx C CXX Fortran) -set (WSJTX_COPYRIGHT "Copyright (C) 2001-2014 by Joe Taylor, K1JT") +# +# project information +# +set (PROJECT_VENDOR "Joe Taylor, K1JT") +set (PROJECT_CONTACT "Joe Taylor ") +set (PROJECT_COPYRIGHT "Copyright (C) 2001-2014 by Joe Taylor, K1JT") +set (PROJECT_HOMEPAGE "http://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html") +set (PROJECT_MANUAL "http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjtx-main-toc2.html") +set (PROJECT_SUMMARY_DESCRIPTION "WSJT-X - JT9 and JT65 Modes for LF, MF and HF Amateur Radio.") +set (PROJECT_DESCRIPTION "${PROJECT_SUMMARY_DESCRIPTION} + WSJT-X implements JT9, a new mode designed especially for the LF, MF, + and HF bands, as well as the popular mode JT65. Both modes were + designed for making reliable, confirmed QSOs under extreme weak-signal + conditions. They use nearly identical message structure and source + encoding. JT65 was designed for EME (“moonbounce”) on the VHF/UHF + bands and has also proved very effective for worldwide QRP + communication at HF; in contrast, JT9 is optimized for HF and lower + frequencies. JT9 is about 2 dB more sensitive than JT65A while using + less than 10% of the bandwidth. World-wide QSOs are possible with + power levels of a few watts and compromise antennas. A 2 kHz slice of + spectrum is essentially full when occupied by ten JT65 signals. As + many as 100 JT9 signals can fit into the same space, without overlap. + . + WSJT-X offers a “bi-lingual“ operating mode in which you can transmit + and receive JT65 and JT9 signals, switching between modes + automatically as needed. Displayed bandwidth can be as large as 5 + kHz. If your receiver has as upper-sideband filter at least 4 kHz + wide, you can have all the typical JT65 and JT9 activity on screen at + once, available for making QSOs with a click of the mouse. Even with + standard SSB-width IF filters, switching between JT65 and JT9 modes is + quick and convenient. Be sure to read the online WSJT-X User's + Guide.") set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake/Modules) @@ -34,18 +65,12 @@ option (WSJT_SOFT_KEYING "Apply a ramp to CW keying envelope to reduce transient set (WSJT_BIN_DESTINATION bin) set (WSJT_LIB_DESTINATION lib) set (WSJT_SHARE_DESTINATION share/wsjtx) -set (WSJT_DOC_DESTINATION share/wsjtx/doc) +set (WSJT_DOC_DESTINATION share/doc/wsjtx) +set (WSJT_MANPAGE_DESTINATION share) set (WSJT_PLUGIN_DESTINATION lib/plugins) set (WSJT_QT_CONF_DESTINATION bin) -# -# project information -# -set (PROJECT_HOMEPAGE "http://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html") -set (PROJECT_MANUAL "http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjtx-main-toc2.html") - - # # Project sources # @@ -349,14 +374,10 @@ if (APPLE) set (WSJT_PLUGIN_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/PlugIns) set (WSJT_QT_CONF_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/Resources) set (WSJT_SHARE_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/Resources) + set (WSJT_DOC_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/Resources) set (WSJT_BIN_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/MacOS) endif (APPLE) -#set (QT_NEED_RPATH FALSE) -#if (NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib64" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib64") -# set (QT_NEED_RPATH TRUE) -#endif () - # # C & C++ setup @@ -430,7 +451,7 @@ set (CMAKE_SKIP_BUILD_RPATH FALSE) # later on in the install phase set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) -set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}") +# set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}") # add the automaticaly determined parts of the RPATH which point to # directories outside of the build tree to the install RPATH @@ -438,10 +459,15 @@ set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # the RPATH to be used when installing, but only if it's not a system # directory -list (FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}" isSystemDir) -if ("${isSystemDir}" STREQUAL "-1") - set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}") -endif ("${isSystemDir}" STREQUAL "-1") +# list (FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}" isSystemDir) +# if ("${isSystemDir}" STREQUAL "-1") +# set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}") +# endif ("${isSystemDir}" STREQUAL "-1") + +set (QT_NEED_RPATH FALSE) +if (NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib64" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib64") + set (QT_NEED_RPATH TRUE) +endif () # @@ -450,6 +476,7 @@ endif ("${isSystemDir}" STREQUAL "-1") find_package (FFTW3 COMPONENTS single REQUIRED) include_directories (${FFTW3_INCLUDE_DIRS}) + # # libhamlib setup # @@ -584,9 +611,22 @@ qt5_use_modules (jt9 Core) #qt5_use_modules (ConfigTest Widgets OpenGL Network Multimedia) # build the main application -add_executable (wsjtx WIN32 MACOSX_BUNDLE ${wsjtx_CXXSRCS} ${wsjtx_GENUISRCS} wsjtx.rc ${WSJTX_ICON_FILE} ${wsjtx_RESOURCES_RCC} contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX}) +add_executable (wsjtx WIN32 MACOSX_BUNDLE + ${wsjtx_CXXSRCS} + ${wsjtx_GENUISRCS} + wsjtx.rc + ${WSJTX_ICON_FILE} + ${wsjtx_RESOURCES_RCC} + contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX} + ) qt5_use_modules (wsjtx Widgets OpenGL Network Multimedia) +if (UNIX) + add_subdirectory (manpages) + add_subdirectory (debian) + add_dependencies (wsjtx manpages debian) +endif (UNIX) + set_target_properties (wsjtx PROPERTIES MACOSX_BUNDLE_INFO_STRING "${WSJTX_DESCRIPTION_SUMMARY}" MACOSX_BUNDLE_ICON_FILE "${WSJTX_ICON_FILE}" @@ -594,7 +634,7 @@ set_target_properties (wsjtx PROPERTIES MACOSX_BUNDLE_SHORT_VERSION_STRING "v${wsjtx_VERSION}" MACOSX_BUNDLE_LONG_VERSION_STRING "Version ${wsjtx_VERSION}" MACOSX_BUNDLE_BUNDLE_NAME "WSJT-X" - MACOSX_BUNDLE_COPYRIGHT "${WSJTX_COPYRIGHT}" + MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}" ) target_link_libraries (wsjtx wsjt wsjt_qt ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES}) @@ -615,20 +655,20 @@ install (TARGETS wsjtx RUNTIME DESTINATION ${WSJT_BIN_DESTINATION} LIBRARY DESTINATION ${WSJT_LIB_DESTINATION} BUNDLE DESTINATION . - # COMPONENT Runtime + COMPONENT Runtime ) install (TARGETS jt9 RUNTIME DESTINATION ${WSJT_BIN_DESTINATION} LIBRARY DESTINATION ${WSJT_LIB_DESTINATION} BUNDLE DESTINATION ${WSJT_BIN_DESTINATION} - # COMPONENT Runtime + COMPONENT Runtime ) install (PROGRAMS ${CMAKE_BINARY_DIR}/contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX} DESTINATION ${WSJT_BIN_DESTINATION} - # COMPONENT Runtime + COMPONENT Runtime ) diff --git a/artwork/make_graphics.sh b/artwork/make_graphics.sh old mode 100644 new mode 100755 diff --git a/debian/CMakeLists.txt b/debian/CMakeLists.txt new file mode 100644 index 000000000..ceccb7664 --- /dev/null +++ b/debian/CMakeLists.txt @@ -0,0 +1,38 @@ +find_program (GZIP_EXECUTABLE NAMES gzip) + +string (TIMESTAMP ts "%w, %d [%m] %Y %H:%M:%S +0000" UTC) + +set (__days Sun Mon Tue Wed Thu Fri Sat) +string (SUBSTRING ${ts} 0 1 __index) +list (GET __days ${__index} __day) +string (REPLACE "${__index}," "${__day}," ts ${ts}) + +set (__months Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) +string (SUBSTRING ${ts} 9 2 __month_index) +math (EXPR __index "${__month_index} - 1") +list (GET __months "${__index}" __month) +string (REPLACE "[${__month_index}]" "${__month}" ts ${ts}) + +configure_file ( + "${CMAKE_CURRENT_SOURCE_DIR}/changelog.in" + "${CMAKE_CURRENT_BINARY_DIR}/changelog" + @ONLY) + +add_custom_target (debian + COMMAND ${GZIP_EXECUTABLE} --keep --best --force changelog + DEPENDS changelog.in + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Compressing Debian changelog" + ) + +configure_file ( + "${CMAKE_CURRENT_SOURCE_DIR}/copyright.in" + "${CMAKE_CURRENT_BINARY_DIR}/copyright" + @ONLY) + +install (FILES + ${CMAKE_CURRENT_BINARY_DIR}/changelog.gz + ${CMAKE_CURRENT_BINARY_DIR}/copyright + DESTINATION ${WSJT_DOC_DESTINATION} + COMPONENT Debian + ) diff --git a/debian/changelog.in b/debian/changelog.in new file mode 100644 index 000000000..c0016242f --- /dev/null +++ b/debian/changelog.in @@ -0,0 +1,6 @@ +@CMAKE_PROJECT_NAME@ (@wsjtx_VERSION@) experimental; urgency=low + + * wsjtx Debian maintainer and upstream author are identical. + Therefore see also normal changelog file for Debian changes. + + -- @PROJECT_CONTACT@ @ts@ diff --git a/debian/copyright.in b/debian/copyright.in new file mode 100644 index 000000000..110219a91 --- /dev/null +++ b/debian/copyright.in @@ -0,0 +1,10 @@ +Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat +Upstream-Name: @CMAKE_PROJECT_NAME@ +Upstream-Maintainer: @PROJECT_CONTACT@ +Upstream-Source: @PROJECT_HOMEPAGE@ + +Files: * +Copyright: @PROJECT_COPYRIGHT@. +License: GPL v3 + The full text of the GPL is distributed in + /usr/share/common-licenses/GPL-3 on Debian systems. diff --git a/main.cpp b/main.cpp index eee2c5a38..7f84ec182 100644 --- a/main.cpp +++ b/main.cpp @@ -18,6 +18,9 @@ #include #include #include +#include +#include +#include #include "revision_utils.hpp" @@ -35,29 +38,50 @@ int main(int argc, char *argv[]) try { setlocale (LC_NUMERIC, "C"); // ensure number forms are in - // consistent format, do this after - // instantiating QApplication so - // that GUI has correct l18n - + // consistent format, do this after + // instantiating QApplication so + // that GUI has correct l18n + // Override programs executable basename as application name. a.setApplicationName ("WSJT-X"); + a.setApplicationVersion (WSJTX_STRINGIZE (WSJTX_VERSION_MAJOR) + "." WSJTX_STRINGIZE (WSJTX_VERSION_MINOR) + "." WSJTX_STRINGIZE (WSJTX_VERSION_PATCH) " " + revision ()); + + QCommandLineParser parser; + parser.setApplicationDescription ("\nJT65A & JT9 Weak Signal Communications Program."); + parser.addHelpOption (); + parser.addVersionOption (); + +#if WSJT_STANDARD_FILE_LOCATIONS + // support for multiple instances running from a single installation + QCommandLineOption rig_option (QStringList {} << "r" << "rig-name" + , a.translate ("main", "Where is for multi-instance support.") + , a.translate ("main", "rig-name")); + parser.addOption (rig_option); +#endif + + QCommandLineOption test_option (QStringList {} << "test-mode" + , a.translate ("main", "Writable files in test location. Use with caution, for testing only.")); + parser.addOption (test_option); + + parser.process (a); + + QStandardPaths::setTestModeEnabled (parser.isSet (test_option)); bool multiple {false}; #if WSJT_STANDARD_FILE_LOCATIONS // support for multiple instances running from a single installation - auto args = a.arguments (); - auto rig_arg_index = args.lastIndexOf (QRegularExpression {R"((-r)|(--r(i?(g?))))"}); - if (rig_arg_index > 0 // not interested if somehow the exe is called -r or --rig - && rig_arg_index + 1 < args.size ()) + if (parser.isSet (rig_option)) { - auto temp_name = args.at (rig_arg_index + 1); - if ('-' != temp_name[0] - && !temp_name.isEmpty ()) + auto temp_name = parser.value (rig_option); + if (!temp_name.isEmpty ()) { if (temp_name.contains (QRegularExpression {R"([\\/])"})) { - throw std::runtime_error (QObject::tr ("Invalid rig name - \\ & / not allowed").toLocal8Bit ().data ()); + std::cerr << QObject::tr ("Invalid rig name - \\ & / not allowed").toLocal8Bit ().data () << std::endl; + parser.showHelp (-1); } a.setApplicationName (a.applicationName () + " - " + temp_name); diff --git a/manpages/CMakeLists.txt b/manpages/CMakeLists.txt new file mode 100644 index 000000000..3e45208fd --- /dev/null +++ b/manpages/CMakeLists.txt @@ -0,0 +1,59 @@ +set (ASCIIDOC_MANS + man1/wsjtx.1.txt + ) + +find_program (A2X_EXECUTABLE NAMES a2x a2x.py) +if (NOT A2X_EXECUTABLE) + message (SEND_ERROR "Failed to find a2x.") +endif () +find_program (GZIP_EXECUTABLE NAMES gzip) +if (NOT GZIP_EXECUTABLE) + message (SEND_ERROR "Failed to find gzip.") +endif () +find_program (SED_EXECUTABLE NAMES sed) +if (NOT SED_EXECUTABLE) + message (SEND_ERROR "Failed to find sed.") +endif () + +set (XSLTPROC_OPTS + "-param man.endnotes.list.enabled 0 -param man.endnotes.are.numbered 0" + ) +set (A2X_OPTS + --format=manpage + --xsltproc-opts=${XSLTPROC_OPTS} + --doctype=manpage + --no-xmllint + ) + +set (MANPAGES) +if (A2X_EXECUTABLE AND GZIP_EXECUTABLE) + file (MAKE_DIRECTORY man) + foreach (f IN LISTS ASCIIDOC_MANS) + get_filename_component (d "${f}" PATH) + string (SUBSTRING "${d}" 3 -1 section) + if (NOT section MATCHES "[1-9]") + message (SEND_ERROR "Invalid man section ${section} in ${f}") + endif (NOT section MATCHES "[1-9]") + get_filename_component (filename "${f}" NAME_WE) + set (f "${CMAKE_CURRENT_SOURCE_DIR}/${f}") + set (d "man/${d}") + set (o "${d}/${filename}.${section}") + add_custom_command (OUTPUT "${o}.gz" + COMMAND ${CMAKE_COMMAND} ARGS -E make_directory "${d}" + COMMAND ${A2X_EXECUTABLE} ARGS ${A2X_OPTS} -D "${d}" "${f}" + COMMAND ${GZIP_EXECUTABLE} ARGS -r --force --best "${o}" + COMMAND ${SED_EXECUTABLE} ARGS --in-place "s@.so @.so man${section}/@" "${d}/*.${section}" + COMMAND ${GZIP_EXECUTABLE} ARGS -r --force --best "${d}/*.${section}" + DEPENDS "${f}" + COMMENT "Generating ${o}.gz" + ) + list (APPEND MANPAGES "${o}.gz") + endforeach () + + install ( + DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man + DESTINATION ${WSJT_MANPAGE_DESTINATION} + ) +endif (A2X_EXECUTABLE AND GZIP_EXECUTABLE) + +add_custom_target (manpages DEPENDS ${MANPAGES}) diff --git a/manpages/man1/wsjtx.1.txt b/manpages/man1/wsjtx.1.txt new file mode 100644 index 000000000..6fb99f8a0 --- /dev/null +++ b/manpages/man1/wsjtx.1.txt @@ -0,0 +1,120 @@ +:doctype: manpage +:man source: AsciiDoc +:man version: {revnumber} +:man manual: WSJT-X Manual += wsjtx(1) + +== NAME + +wsjtx, jt9 - Weak signal communications program. + +== SYNOPSIS + +*wsjtx* [OPTIONS] + +== DESCRIPTION + +*wsjtx* is a weak signal communications program supporting two operating +modes: JT65 and JT9 (*wsjtx* version 1 supported JT9 only). + +WSJT-X home page:: http://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html + +WSJT-X User's Guide:: http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjtx-main-toc2.html + +An alternative JT65 decoder executable *kvasd* for i386 Ubuntu is +available at http://www.physics.princeton.edu/pulsar/K1JT/kvasd . +This decoder is not open-source, is not included in the wsjtx package, +and is not required for JT65 decoding. + +== OPTIONS +*-r, --rig-name*[=RIGNAME]:: + +Enable multiple instances of the wsjtx(1) application to run +concurrently. Each RIGNAME must be unique. One instance may use no +RIGNAME. If this option is not supplied then only one instance of +wsjtx(1) may be run at any time. + +*-v, --version*:: Display the application version. + +*-h,--help*:: Display usage information. + +*--test-mode*:: + +When this option is provided all writable files will be placed in a +special test location (~/.qttest). This option is only for +application testing and is not designed for normal operations. **Use +with caution**. + +== FILES + +Most of the following files are in a directory path containing the +directory name *WSJT-X[ - RIGNAME]* which indicates the value of the +command line option *--rig=RIGNAME* to indicate multiple instances of +*wsjtx* running concurrently. All writable files listed below are +therefore unique to each concurrent instance of *wsjtx*. If the +*--rig* command line option is not supplied or the *RIGNAME* argument +is not supplied then the directory paths below will have the directory +*WSJT-X*. + +~/.config/WSJT-X[ - RIGNAME].ini:: + +This file stores the application +configuration settings. + +~/.local/share/WSJT-X[ - RIGNAME]/ALL.txt:: + +*ALL.txt* contains a record of transmitted and received messages and +other activity such as frequency or band changes. + +~/.local/share/WSJT-X[ - RIGNAME]/save/:: + +Is the default location for saved .WAV files recorded by the +application. The .WAV file save location may be changed in the +applications settings dialog. + +~/.local/share/WSJT-X[ - RIGNAME]/save/samples/:: + +Sample .WAV files suppied with the application are found in this +directory, they may be played back in the application and are referred +to in the user guide tutorial sections. + +~/.local/share/WSJT-X[ -RIGNAME]/timer.out:: + +This is a diagnostic file that records decode performance profiling +information. + +~/.local/share/WSJT-X[ - RIGNAME]/cty.dat:: + +This file is not required as a version of it is embedded in the +application, but if you wish an updated version can be placed here. +If present that version will be used in preference to the embedded +version. + +~/.local/share/WSJT-X[ - RIGNAME]/wsjtx.log:: + +This is a plain text CSV record of logged QSOs. + +~/.local/share/WSJT-X[ - RIGNAME]/wsjtx_log.adi:: + +This is a record of QSOs logged in the ADIF format which is suitable +for import into many Ham Radio logging programs. + +== AUTHOR + +Joe Taylor, K1JT. + +== COPYING + +*wsjtx* is Copyright (C) 2001 - 2014 by Joseph H. Taylor, Jr., K1JT, +with contributions from additional authors. WSJT-X is Open Source +software, licensed under the GNU General Public License (GPLv3). + +*wsjtx* includes the ``**Hamlib - Ham Radio Control Libraries**'' +software which is licensed under the GNU Lesser General Public License +(LGPL). Home page https://sourceforge.net/apps/mediawiki/hamlib, +sources from https://sourceforge.net/p/hamlib/code/ci/master/tree/. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. diff --git a/wsjtx.desktop b/wsjtx.desktop index dd663036f..147fc7cee 100644 --- a/wsjtx.desktop +++ b/wsjtx.desktop @@ -3,9 +3,9 @@ Version=1.0 Name=wsjtx Comment=Amateur Radio Weak Signal Operating Exec=wsjtx -Icon=wsjtx_icon.png +Icon=wsjtx_icon Terminal=false X-MultipleArgs=false Type=Application -Categories=Amateur Radio; +Categories=AudioVideo;Audio;HamRadio; StartupNotify=true