diff --git a/CMakeLists.txt b/CMakeLists.txt index bb2e85e36..bde99ce7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,7 +102,7 @@ attach a debugger which will then receive the console output inside its console. # decide if we are bundling kvasd (non-FOSS) # CMAKE_DEPENDENT_OPTION (WSJT_INCLUDE_KVASD "Include kvasd in the package." OFF - "NOT is_debug_build;NOT WIN32;NOT APPLE" ON) + "NOT is_debug_build;NOT WIN32" ON) # @@ -759,6 +759,7 @@ set_target_properties (wsjtx PROPERTIES MACOSX_BUNDLE_LONG_VERSION_STRING "Version ${wsjtx_VERSION}" MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}" MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}" + MACOSX_BUNDLE_GUI_IDENTIFIER "org.k1jt.wsjtx" ) target_link_libraries (wsjtx wsjt wsjt_qt ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES}) @@ -786,6 +787,14 @@ if (WSJT_INCLUDE_KVASD) DESTINATION ${WSJT_BIN_DESTINATION} #COMPONENT Runtime ) +else (WSJT_INCLUDE_KVASD) + if (APPLE) + install (DIRECTORY contrib/Darwin/KVASD-installer.app + DESTINATION . + USE_SOURCE_PERMISSIONS + #COMPONENT Runtime + ) + endif (APPLE) endif (WSJT_INCLUDE_KVASD) install (PROGRAMS diff --git a/Darwin/KVASD-installer/KVASD-installer.xcodeproj/project.pbxproj b/Darwin/KVASD-installer/KVASD-installer.xcodeproj/project.pbxproj new file mode 100644 index 000000000..c400d5949 --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer.xcodeproj/project.pbxproj @@ -0,0 +1,306 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + A924153F1A2143F400B34EFA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A924153E1A2143F400B34EFA /* Cocoa.framework */; }; + A92415411A2143F400B34EFA /* AppleScriptObjC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92415401A2143F400B34EFA /* AppleScriptObjC.framework */; }; + A924154D1A2143F400B34EFA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A924154C1A2143F400B34EFA /* main.m */; }; + A92415531A2143F400B34EFA /* WSJTAppDelegate.applescript in Sources */ = {isa = PBXBuildFile; fileRef = A92415521A2143F400B34EFA /* WSJTAppDelegate.applescript */; }; + A92415581A2143F400B34EFA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A92415571A2143F400B34EFA /* Images.xcassets */; }; + A99DD3EC1A267FF900951324 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = A99DD3EB1A267FF900951324 /* InfoPlist.strings */; }; + A99DD3EE1A26801100951324 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = A99DD3ED1A26801100951324 /* Credits.rtf */; }; + A99DD3F01A26801D00951324 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = A99DD3EF1A26801D00951324 /* MainMenu.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + A924153B1A2143F400B34EFA /* KVASD-installer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "KVASD-installer.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + A924153E1A2143F400B34EFA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + A92415401A2143F400B34EFA /* AppleScriptObjC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppleScriptObjC.framework; path = System/Library/Frameworks/AppleScriptObjC.framework; sourceTree = SDKROOT; }; + A92415431A2143F400B34EFA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + A92415441A2143F400B34EFA /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + A92415451A2143F400B34EFA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + A92415481A2143F400B34EFA /* KVASD-installer-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "KVASD-installer-Info.plist"; sourceTree = ""; }; + A924154C1A2143F400B34EFA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + A924154E1A2143F400B34EFA /* KVASD-installer-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "KVASD-installer-Prefix.pch"; sourceTree = ""; }; + A92415521A2143F400B34EFA /* WSJTAppDelegate.applescript */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.applescript; path = WSJTAppDelegate.applescript; sourceTree = ""; }; + A92415571A2143F400B34EFA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + A99DD3EB1A267FF900951324 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = InfoPlist.strings; sourceTree = ""; }; + A99DD3ED1A26801100951324 /* Credits.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = ""; }; + A99DD3EF1A26801D00951324 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + A92415381A2143F400B34EFA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A92415411A2143F400B34EFA /* AppleScriptObjC.framework in Frameworks */, + A924153F1A2143F400B34EFA /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A92415321A2143F400B34EFA = { + isa = PBXGroup; + children = ( + A92415461A2143F400B34EFA /* KVASD-installer */, + A924153D1A2143F400B34EFA /* Frameworks */, + A924153C1A2143F400B34EFA /* Products */, + ); + sourceTree = ""; + }; + A924153C1A2143F400B34EFA /* Products */ = { + isa = PBXGroup; + children = ( + A924153B1A2143F400B34EFA /* KVASD-installer.app */, + ); + name = Products; + sourceTree = ""; + }; + A924153D1A2143F400B34EFA /* Frameworks */ = { + isa = PBXGroup; + children = ( + A924153E1A2143F400B34EFA /* Cocoa.framework */, + A92415401A2143F400B34EFA /* AppleScriptObjC.framework */, + A92415421A2143F400B34EFA /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + A92415421A2143F400B34EFA /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + A92415431A2143F400B34EFA /* AppKit.framework */, + A92415441A2143F400B34EFA /* CoreData.framework */, + A92415451A2143F400B34EFA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + A92415461A2143F400B34EFA /* KVASD-installer */ = { + isa = PBXGroup; + children = ( + A92415521A2143F400B34EFA /* WSJTAppDelegate.applescript */, + A99DD3EF1A26801D00951324 /* MainMenu.xib */, + A92415571A2143F400B34EFA /* Images.xcassets */, + A92415471A2143F400B34EFA /* Supporting Files */, + ); + path = "KVASD-installer"; + sourceTree = ""; + }; + A92415471A2143F400B34EFA /* Supporting Files */ = { + isa = PBXGroup; + children = ( + A92415481A2143F400B34EFA /* KVASD-installer-Info.plist */, + A99DD3ED1A26801100951324 /* Credits.rtf */, + A99DD3EB1A267FF900951324 /* InfoPlist.strings */, + A924154C1A2143F400B34EFA /* main.m */, + A924154E1A2143F400B34EFA /* KVASD-installer-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + A924153A1A2143F400B34EFA /* KVASD-installer */ = { + isa = PBXNativeTarget; + buildConfigurationList = A924155B1A2143F400B34EFA /* Build configuration list for PBXNativeTarget "KVASD-installer" */; + buildPhases = ( + A92415371A2143F400B34EFA /* Sources */, + A92415381A2143F400B34EFA /* Frameworks */, + A92415391A2143F400B34EFA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "KVASD-installer"; + productName = "KVASD-installer"; + productReference = A924153B1A2143F400B34EFA /* KVASD-installer.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + A92415331A2143F400B34EFA /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = WSJT; + LastUpgradeCheck = 0500; + ORGANIZATIONNAME = WSJT; + }; + buildConfigurationList = A92415361A2143F400B34EFA /* Build configuration list for PBXProject "KVASD-installer" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = A92415321A2143F400B34EFA; + productRefGroup = A924153C1A2143F400B34EFA /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + A924153A1A2143F400B34EFA /* KVASD-installer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + A92415391A2143F400B34EFA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A99DD3EC1A267FF900951324 /* InfoPlist.strings in Resources */, + A99DD3EE1A26801100951324 /* Credits.rtf in Resources */, + A92415581A2143F400B34EFA /* Images.xcassets in Resources */, + A99DD3F01A26801D00951324 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + A92415371A2143F400B34EFA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A92415531A2143F400B34EFA /* WSJTAppDelegate.applescript in Sources */, + A924154D1A2143F400B34EFA /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + A92415591A2143F400B34EFA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + A924155A1A2143F400B34EFA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + ONLY_ACTIVE_ARCH = NO; + SDKROOT = macosx; + }; + name = Release; + }; + A924155C1A2143F400B34EFA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "KVASD-installer/KVASD-installer-Prefix.pch"; + INFOPLIST_FILE = "KVASD-installer/KVASD-installer-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + A924155D1A2143F400B34EFA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "KVASD-installer/KVASD-installer-Prefix.pch"; + INFOPLIST_FILE = "KVASD-installer/KVASD-installer-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A92415361A2143F400B34EFA /* Build configuration list for PBXProject "KVASD-installer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A92415591A2143F400B34EFA /* Debug */, + A924155A1A2143F400B34EFA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A924155B1A2143F400B34EFA /* Build configuration list for PBXNativeTarget "KVASD-installer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A924155C1A2143F400B34EFA /* Debug */, + A924155D1A2143F400B34EFA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = A92415331A2143F400B34EFA /* Project object */; +} diff --git a/Darwin/KVASD-installer/KVASD-installer.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Darwin/KVASD-installer/KVASD-installer.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..90f9ef2a1 --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Darwin/KVASD-installer/KVASD-installer/Credits.rtf b/Darwin/KVASD-installer/KVASD-installer/Credits.rtf new file mode 100644 index 000000000..fb63b0835 --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer/Credits.rtf @@ -0,0 +1,30 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw11900\paperh16840\vieww9600\viewh8400\viewkind0 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + G4WJS - Bill Somerville\ +\ + +\b Human Interface Design: +\b0 \ + G4WJS - Bill Somerville\ +\ + +\b Testing: +\b0 \ + G4WJS - Bill Somerville\ +\ + +\b Documentation: +\b0 \ + G4WJS - Bill Somerville\ +\ + +\b With special thanks to: +\b0 \ + No one in particular.\ +} \ No newline at end of file diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/Contents.json b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..7cd4f8e12 --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon_16x16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon_16x16@2x.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "icon_32x32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "icon_32x32@2x.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "icon_128x128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "icon_128x128@2x.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "icon_256x256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "icon_256x256@2x.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "icon_512x512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "icon_512x512@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_128x128.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_128x128.png new file mode 100644 index 000000000..f27139e37 Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_128x128.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png new file mode 100644 index 000000000..eebc17e9b Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_16x16.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_16x16.png new file mode 100644 index 000000000..ecc5868e6 Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_16x16.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png new file mode 100644 index 000000000..9a8ee28d8 Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_256x256.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_256x256.png new file mode 100644 index 000000000..eebc17e9b Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_256x256.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png new file mode 100644 index 000000000..b4701fbbf Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_32x32.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_32x32.png new file mode 100644 index 000000000..9a8ee28d8 Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_32x32.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png new file mode 100644 index 000000000..88b285eea Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_512x512.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_512x512.png new file mode 100644 index 000000000..b4701fbbf Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_512x512.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_512x512@2x.png b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_512x512@2x.png new file mode 100644 index 000000000..9dd961d48 Binary files /dev/null and b/Darwin/KVASD-installer/KVASD-installer/Images.xcassets/AppIcon.appiconset/icon_512x512@2x.png differ diff --git a/Darwin/KVASD-installer/KVASD-installer/InfoPlist.strings b/Darwin/KVASD-installer/KVASD-installer/InfoPlist.strings new file mode 100644 index 000000000..477b28ff8 --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Darwin/KVASD-installer/KVASD-installer/KVASD-installer-Info.plist b/Darwin/KVASD-installer/KVASD-installer/KVASD-installer-Info.plist new file mode 100644 index 000000000..fd76b1ace --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer/KVASD-installer-Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDocumentTypes + + + CFBundleTypeRole + Viewer + LSItemContentTypes + + com.apple.application-bundle + + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + org.k1jt.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Created by Bill Somerville (G4WJS) on 12/11/2014. + + The author of this work hereby waives all claim of copyright (economic and moral) +in this work and immediately places it in the public domain; it may be used, distorted +or destroyed in any manner whatsoever without further attribution or notice to the creator. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/Darwin/KVASD-installer/KVASD-installer/KVASD-installer-Prefix.pch b/Darwin/KVASD-installer/KVASD-installer/KVASD-installer-Prefix.pch new file mode 100644 index 000000000..35d76409f --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer/KVASD-installer-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Darwin/KVASD-installer/KVASD-installer/MainMenu.xib b/Darwin/KVASD-installer/KVASD-installer/MainMenu.xib new file mode 100644 index 000000000..77c3b8b6a --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer/MainMenu.xib @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Please read the agreement and tick the "Agree" checkbox below if you accept the terms and wish to continue with the installation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Darwin/KVASD-installer/KVASD-installer/WSJTAppDelegate.applescript b/Darwin/KVASD-installer/KVASD-installer/WSJTAppDelegate.applescript new file mode 100644 index 000000000..b92befa87 --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer/WSJTAppDelegate.applescript @@ -0,0 +1,315 @@ +-- +-- WSJTAppDelegate.applescript +-- KVASD-installer +-- +-- This script is a drag and drop target that expects a WSJT-X app bundle path. +-- It can also be opened with a file list or by dropping a suitable WSJT-X app +-- bundle onto it. Alternatively a target WSJT-X application bundle may be +-- selected by clicking the "Choose target ..." button. +-- +-- It fetches the KVASD EULA text and displays it in a dialog which the reader +-- must at least scroll to the end before clicking the Agree button which then +-- downloads the appropriate KVASD executable. The MD5 hash checksum is checked +-- on the KVASD executable. +-- +-- Once the EULA has been accepted the "Install" button is enabled to install +-- the KVASD executable into the target WSJT-X application bundle(s) and the +-- RPATHs are modified to reference the libgcc support libraries inside the +-- WSJT-X application bundle. +-- +-- Created by Bill Somerville (G4WJS) on 12/11/2014. +-- +-- The author of this work hereby waives all claim of copyright (economic and moral) +-- in this work and immediately places it in the public domain; it may be used, distorted +-- or destroyed in any manner whatsoever without further attribution or notice to the creator. +-- + +-- curl wraps cURL to download files +script curl + on download(|url|, fileName, destination) + set |file| to destination & fileName + try + do shell script "curl --fail --retry 5 --silent --output " & |file| & " " & |url| & fileName + on error + error "An error occurred downloading:" & return & return & |url| & fileName + end try + return |file| as POSIX file + end download + + on downloadMD5(|url|, fileName) + set md5Ext to ".md5" + try + return do shell script "curl --fail --retry 5 --silent " & |url| & fileName & md5Ext ¬ + & " | awk '{match($0,\"[[:xdigit:]]{32}\"); print substr($0,RSTART,RLENGTH)}'" + on error + error "An error occurred downloading" & return & return & fileName & md5Ext + end try + end downloadMD5 +end script + +-- kvasd looks after fetching kvasd files from the web source +script kvasd + property serverPath : "https://svn.code.sf.net/p/wsjt/wsjt/trunk/kvasd-binary/" + property destination : "/tmp/" + property targetName : "kvasd" + + on fetchEULA() + return curl's download(serverPath,targetName & "_eula.txt",destination) + end fetchEULA + + on fetchBinary() + set |url| to serverPath & do shell script "echo `uname -s`-`uname -m`" & "/" + set md5Sum to curl's downloadMD5(|url|,targetName) + set |file| to curl's download(|url|,targetName,destination) + set md5Calc to do shell script "md5 " & (POSIX path of |file|) & " | cut -d' ' -f4" + if md5Calc ≠ md5Sum then + error "KVASD download corrupt MD5 hash check" & return & return ¬ + & " expected [" & md5Sum & "]" & return ¬ + & " actual [" & md5Calc & "]" ¬ + number 500 + end if + end fetchBinary + + on saveLicense() + set dest to choose folder ¬ + with prompt "Specify folder to save license to" ¬ + default location (path to documents folder) + tell application "Finder" to ¬ + duplicate (destination & targetName & "_eula.txt") as POSIX file to dest + end saveLicense + + on printLicense() + tell application "Finder" to ¬ + print (destination & targetName & "_eula.txt") as POSIX file + end printLicense +end script + +script WSJTAppDelegate + property parent : class "NSObject" + + property licenceAgreed : false + + property mainWindow : missing value + property eulaTextView : missing value + property progressBar : missing value + property saveButton : missing value + property printButton : missing value + property agreeCheckBox : missing value + property chooseTargetButton : missing value + property installButton : missing value + + property bundlesToProcess : {} + + global defaultNotificationCentre + + on split(theText,theDelimiters) + set oldDelimiters to AppleScript's text item delimiters + set AppleScript's text item delimiters to theDelimiters + set theResult to the text items of theText + set AppleScript's text item delimiters to oldDelimiters + return theResult + end split + + -- do the install + on process() + repeat with bundlePath in bundlesToProcess + try + set wsjtxBundle to current application's NSBundle's bundleWithPath_(bundlePath) + if wsjtxBundle = missing value or wsjtxBundle's bundleIdentifier() as text ≠ "org.k1jt.wsjtx" then + error "Not an appropriate WSJT-X application bundle: " & return & return ¬ + & bundlePath as text number 501 + end if + set installRoot to wsjtxBundle's bundlePath() as text + display dialog "Install KVASD into Aplication Bundle" & return & return ¬ + & installRoot ¬ + buttons {"Ok", "Skip"} default button {"Ok"} + if button returned of result = "Ok" then + try + set target to installRoot & "/Contents/MacOS/" & kvasd's targetName + log do shell script "mv " & kvasd's destination & kvasd's targetName & space & target + repeat with theLine in paragraphs of (do shell script "otool -L " & target) + if theLine contains ".dylib" and not theLine contains "libSystem" then + set theDylib to 2nd item of split(theLine,{tab,space}) + log do shell script "install_name_tool -change " & theDylib & " @executable_path/" & last item of split(theDylib,{"/"}) & space & target + end if + end repeat + log do shell script "chmod +x " & target + display alert "KVASD installed into application bundle:" & return & return & installRoot ¬ + buttons {"Ok"} default button "Ok" ¬ + giving up after 5 + on error errorString + error "Failed to move KVASD into application bundle:" & return & return & installRoot ¬ + & return & return & "Error: " & errorString + end try + end if + on error errorString + display alert errorString as warning buttons {"Ok"} default button "Ok" + end try + end repeat + end process + + -- execute around handler to display a progress bar during an action + on progressAction(action) + progressBar's startAnimation_(me) + tell action to run + progressBar's stopAnimation_(me) + end progressAction + + -- + -- NSApplicationDelegate Protocol + -- + on applicationWillFinishLaunching_(aNotification) + try + mainWindow's registerForDraggedTypes_({"public.file-url"}) + + set defaultNotificationCentre to current application's NSNotificationCenter's defaultCenter() + eulaTextView's setEditable_(false) + + script downloadEula + eulaTextView's setString_(read kvasd's fetchEULA()) + end script + my progressAction(downloadEula) + saveButton's setEnabled_(true) + printButton's setEnabled_(true) + + -- add observers for view port changes on EULA text view + set boundsChangeNotice to current application's NSViewBoundsDidChangeNotification + set frameChangeNotice to current application's NSViewFrameDidChangeNotification + defaultNotificationCentre's addObserver_selector_name_object_(me,"viewChanged:",boundsChangeNotice,missing value) + defaultNotificationCentre's addObserver_selector_name_object_(me,"viewChanged:",frameChangeNotice,missing value) + on error errorString + abort(errorString) + end try + end applicationWillFinishLaunching_ + + on applicationShouldTerminateAfterLastWindowClosed_(sender) + return true + end applicationShouldTerminateAfterLastWindowClosed_ + + on applicationShouldTerminate_(sender) + defaultNotificationCentre's removeObserver_(me) + return current application's NSTerminateNow + end applicationShouldTerminate_ + + -- + -- NSDraggingDestination (NSWindow Delgate) Protocol + -- + + -- Accept Generic drag&drop sources + on draggingEntered_(sender) + return current application's NSDragOperationGeneric + end draggingEntered_ + + -- Process a drop on our window + on performDragOperation_(sender) + set pb to sender's draggingPasteboard() + if pb's types() as list contains current application's NSURLPboardType then + set options to {NSPasteboardURLReadingContentsConformToTypesKey:{"com.apple.application-bundle"}} + repeat with u in pb's readObjectsForClasses_options_({current application's |NSURL|},options) + copy u's |path| to end of bundlesToProcess + end repeat + if bundlesToProcess ≠ {} and licenceAgreed then + installButton's setEnabled_(true) + end if + return true + end if + return false + end performDragOperation_ + + -- + -- UI handlers + -- + + -- Save EULA + on doSave_(sender) + try + kvasd's saveLicense() + on error errorString number errorNumber + if errorNumber is equal to -128 then + -- just ignore Cancel + else + abort(errorString) + end if + end try + end doSave_ + + -- Save EULA + on doPrint_(sender) + try + kvasd's printLicense() + on error errorString number errorNumber + if errorNumber is equal to -128 then + -- just ignore Cancel + else + abort(errorString) + end if + end try + end doPrint_ + + -- Agree Button handler + on doAgree_(sender) + if agreeCheckBox's state() as boolean then + try + script downloadKvasd + kvasd's fetchBinary() + end script + my progressAction(downloadKvasd) + on error errorString + abort(errorString) + end try + agreeCheckBox's setEnabled_(false) + set licenceAgreed to true + if bundlesToProcess ≠ {} then + installButton's setEnabled_(true) + end if + end if + end doAgree_ + + -- Choose target button handler + on doChooseTarget_(sender) + try + repeat with target in choose file ¬ + with prompt "Choose the WSJT-X application bundle you wish to install KVASD into" ¬ + of type "com.apple.application-bundle" ¬ + default location "/Applications" as POSIX file as alias ¬ + invisibles false ¬ + multiple selections allowed true + copy POSIX path of target to end of bundlesToProcess + end repeat + if bundlesToProcess ≠ {} and licenceAgreed then + installButton's setEnabled_(true) + end if + on error number -128 + -- just ignore Cancel + end try + end doChooseTarget_ + + -- Install button handler + on doInstall_(sender) + process() + set bundlesToProcess to {} + installButton's setEnabled_(false) + end doInstall_ + + -- handler called on eulaTextView scroll or view changes + -- enables agree/install button once the bottom is reached + on viewChanged_(aNotification) + set dr to eulaTextView's |bounds| as record + set vdr to eulaTextView's visibleRect as record + if height of |size| of dr - (y of origin of vdr + height of |size| of vdr) is less than or equal to 0 ¬ + and not licenceAgreed then + agreeCheckBox's setEnabled_(true) + end if + end viewChanged + + -- Abort handler + on abort(errorString) + display alert errorString as critical buttons {"Ok"} default button "Ok" + quit + end abort + + -- About menu item + on doAbout_(sender) + display alert "KVASD-installer v1.0" + end onAbout_ +end script diff --git a/Darwin/KVASD-installer/KVASD-installer/main.m b/Darwin/KVASD-installer/KVASD-installer/main.m new file mode 100644 index 000000000..ac15490cc --- /dev/null +++ b/Darwin/KVASD-installer/KVASD-installer/main.m @@ -0,0 +1,17 @@ +// +// main.m +// KVASD-installer +// +// Created by Bill Somerville (G4WJS) on 22/11/2014. +// Copyright (c) 2014 WSJT. All rights reserved. +// + +#import + +#import + +int main(int argc, const char * argv[]) +{ + [[NSBundle mainBundle] loadAppleScriptObjectiveCScripts]; + return NSApplicationMain(argc, argv); +} diff --git a/Darwin/ReadMe.txt b/Darwin/ReadMe.txt index a8d5ba71e..1eae7ee11 100644 --- a/Darwin/ReadMe.txt +++ b/Darwin/ReadMe.txt @@ -1,5 +1,5 @@ - Notes on WSJT-X Installation for Mac OS X - ----------------------------------------- + Notes on WSJT-X Installation for Mac OS X + ----------------------------------------- If you have already downloaded a previous version of WSJT-X then I suggest you change the name in the Applications folder from WSJT-X to WSJT-X_previous @@ -21,8 +21,8 @@ has to be increased. You can check the current allocation on your Mac by typin sysctl -a | grep sysv.shm -If your shmmax is already at least 33554432 (32 MB) then you can close the Terminal window -and skip the next steps and go to (NEXT). +If your shmmax is already at least 33554432 (32 MB) then you can close the Terminal +window and skip the next steps and go to (NEXT). You now have to increase the shared memory allocation. To view this file use TextEdit to open sysctl.conf. @@ -36,13 +36,14 @@ kern.sysv.shmmni=128 kern.sysv.shmseg=32 kern.sysv.shmall=8192 -You must now replace yourcomputername.local with the exact name of your computer. To find -this use the Terminal window and type: +You must now replace yourcomputername.local with the exact name of your computer. +To find this use the Terminal window and type: sysctl -a | grep hostname -and will find your computer name. Now use TextEdit to replace yourcomputername.local in this -file with the output from this command, including the .local at the end. Save the file. +and will find your computer name. Now use TextEdit to replace yourcomputername.local +in this file with the output from this command, including the .local at the end. Save +the file. Now move this file into place for the system to use by typing: (Note this assumes that you really did drag this file to your Desktop as required earlier.) @@ -68,40 +69,59 @@ version of WSJT-X. NEXT: -Drag the WSJT-X app to your preferred location, such as Applications. +Drag the WSJT-X app to your preferred location, such as Applications. + +WSJT-X can utilise a closed source proprietary tool called KVASD to get the best +possible sensitivity with JT65A signals. When used it increases the maximum sensitivity +by approximately 2dB. Because WSJT-X is an Open Source application released under the +GPL v3 license, the KVASD tool must be installed manually after WSJT-X installation. +The install DMG includes an installer tool KVASD-installer that allows you to install +KVASD into your WSJT-X application. When you run KVASD-installer you must have a +functioning Internet connection since it downloads KVASD during the installation. + +Run KVASD-installer and review the license terms then either drag the newly installed +WSJT-X application onto it or use the "Choose target …" button to select the WSJT-X +application you have just installed then; click "Install" to inject KVASD into the +WSJT-X application. -You need to configure your sound card. Visit Applications > Utilities > Audio MIDI Setup and -select your sound card and then set Format to be "48000Hz 2ch-16bit" for input and output. +You need to configure your sound card. Visit Applications > Utilities > Audio MIDI +Setup and select your sound card and then set Format to be "48000Hz 2ch-16bit" for +input and output. -Now double-click on the WSJT-X app and two windows will appear. Select Preferences under the -WSJT-X Menu and fill in various station details on the General panel. I recommend checking the -4 boxes under the Display heading and the first 4 boxes under the Behaviour heading. +Now double-click on the WSJT-X app and two windows will appear. Select Preferences +under the WSJT-X Menu and fill in various station details on the General panel. +I recommend checking the 4 boxes under the Display heading and the first 4 boxes under +the Behaviour heading. -Next visit the Audio panel and select the Audio Codec you use to communicate between WSJT-X -and your rig. There are so many audio interfaces available that it is not -possible to give detailed advice on selection. If you have difficulties contact me. Note -the location of the Save Directory. Decoded wave forms are located here. +Next visit the Audio panel and select the Audio Codec you use to communicate between +WSJT-X and your rig. There are so many audio interfaces available that it is not +possible to give detailed advice on selection. If you have difficulties contact me. +Note the location of the Save Directory. Decoded wave forms are located here. -Look at the Reporting panel. If you check the "Prompt me" box, a logging panel will appear -at the end of the QSO. Two log files are provided in Library/Application Support/WSJT-X. -These are a simple wsjtx.log file and wsjtx_log.adi which is formatted for use with logging -databases. If you are using Yosemite, the Library folder is hidden. Use Go on the Finder -menu but hold down the alt key. Library will then appear in the list of folders. +Look at the Reporting panel. If you check the "Prompt me" box, a logging panel will +appear at the end of the QSO. Two log files are provided in +Library/Application Support/WSJT-X. These are a simple wsjtx.log file and +wsjtx_log.adi which is formatted for use with logging databases. If you are using Yosemite, the Library folder is hidden. Use Go on the Finder menu but hold down +the alt key. Library will then appear in the list of folders. The "File" menu bar +items include a button "Open log directory" to open the log directory in Finder +for you, ready for processing by any logging application you use. -Finally, visit the Radio panel. WSJT-X is most effective when operated with CAT control. You -will need to install the relevant Mac driver for your rig. This must be located in the system -driver directory /dev. I use a Prolific USB-Serial Adapter to a Kenwood TS870s and the relevant -driver is /dev/tty.PL2303-00002226. You should install your driver and then re-launch WSJT-X. -Return to the the Radio panel in Preferences and insert the full name of your driver in the -Serial Port panel. Such as: /dev/tty.PL2303-00002226 or whatever driver you have. The /dev/ -prefix is mandatory. Set the relevant communication parameters as required by your transceiver. -and click Test CAT. +Finally, visit the Radio panel. WSJT-X is most effective when operated with CAT +control. You will need to install the relevant Mac driver for your rig. This must +be located in the system driver directory /dev. I use a Prolific USB-Serial Adapter +to a Kenwood TS870s and the relevant driver is /dev/tty.PL2303-00002226. You +should install your driver and then re-launch WSJT-X. Return to the the Radio panel +in Preferences and insert the full name of your driver in the Serial Port panel. +Such as: /dev/tty.PL2303-00002226 or whatever driver you have. The /dev/ prefix +is mandatory. Set the relevant communication parameters as required by your +transceiver. -WSJT-X needs the Mac clock to be accurate. Visit System Preferences > Date & Time and make sure that -date and time are set automatically. The drop-down menu will normally offer you several time -servers to choose from. +WSJT-X needs the Mac clock to be accurate. Visit System Preferences > Date & Time +and make sure that date and time are set automatically. The drop-down menu will +normally offer you several time servers to choose from. -On the Help menu, have a look at the new Online User's Guide for operational hints and tips. +On the Help menu, have a look at the new Online User's Guide for operational hints +and tips. Please email me if you have problems. diff --git a/Darwin/developer read me.txt b/Darwin/developer read me.txt index d78fcddac..2b5431205 100644 --- a/Darwin/developer read me.txt +++ b/Darwin/developer read me.txt @@ -1,7 +1,28 @@ +KVASD-installer +=============== +This is a small AppleScriptObjbC Xcode project that is an application bundle GUI tool +to install the KVASD tool into a WSJT-X application bundle. It fetches the KVASD EULA +from the SourceForge web svn server and presents it to the user, the user may store +license or print it. They must agree the license terms before the KVASD tool is also +downloaded from the SourceForge web svn server. The user then can select the target +WSJT-X application bundle for installation either via a file chooser dialog or simply +by dragging the target WSJT-X application bundle onto the KVASD-installer window. +Once selected the "Install" button starts the installation process. The installation +copies the kvasd binary into the WSJT-X bundle and adjusts the dylib paths in it to +point to the libgcc dylibs that are shipped inside the WSJT_X bundle. + +KVASD-installer is not built as part of the WSJT-X project build, instead it must be +built within Xcode and deployed into the source tree at the location 'contrib/Darwin' +as a bare application bundle which is then checked into source control. The WSJT-X +CMake build, when building a DragNDrop installer package for WSJT-X inserts the +KVASD-installer application bundle into the root of the package DMG ready to be used +after installing the main WSJT-X application bundle. + + Changing the content of the DragNDrop DMG root folder. ====================================================== -The files and links in this folder are populated by the WSJT-X CMake build script. There are install commands which are only run on Apple hosts, this is important becuase they will get installed at the install root on other platforms, which would be very bad on Linux for example since that is /usr normally! +The files and links in this folder are populated by the WSJT-X CMake build script. There are install commands which are only run on Apple hosts, this is important because they will get installed at the install root on other platforms, which would be very bad on Linux for example since that is /usr normally! The symlink to /Applications, the background image (derived from "~/src/wsjtx/artwork/DragNDrop Background.svg") and, the custom .DS_Store file ("~/src/wsjtx_DMG.DS_Store") are all handled specifically by the CPack DragNDrop packager so you don't need to install those. @@ -16,7 +37,9 @@ To modify this file, first you need to make a DragNDrop package then mount the D The installer DMG is read only and shrunk to exactly the size of the contents, also the .DS_Store file is read only and the background image PNG file is hidden. You need to undo all of these things before changing the .DS_Store file. Don't forget to redo these things before checking in a new version of the custom .DS_Store file. -# convert the DMG to a R/W copy +The following recipe shows how to amend the content and layout of the DMG root folder: + +# convert the DMG to a R/W copy (substitute the DMG you have built) hdiutil convert wsjtx-1.4.0-rc1-Darwin.dmg -format UDRW -o rw.dmg # expand the R/W copy to make room for changes @@ -40,10 +63,15 @@ chflags nohidden /Volumes/wsjtx-1.4.0-rc1-Darwin/background.png # make the .DS_Store file writeable chmod 644 /Volumes/wsjtx-1.4.0-rc1-Darwin/.DS_Store -# now you can change Finder view options, rearrange icons etc. Remember that you are only changing the folder options, not the folder content as that is controlled by the install steps in the project CMakeLists.txt -# if you are adding or removing a file to the DMG root folder, you need to have changed the install steps before doing this procedure so the content changes are reflected in the installer DMG you start with +# now you can change Finder view options, rearrange icons etc. Remember that you are +# only changing the folder options, not the folder content as that is controlled by +# the install steps in the project CMakeLists.txt if you are adding or removing a file +# to the DMG root folder, you need to have changed the install steps before doing this +# procedure so the content changes are reflected in the installer DMG you start with. + +# when you are happy with the layout etc. close the Finder window to ensure all +# changes are saved. -# when you are happy with the layout etc. # set the background PNG as a hidden file chflags hidden /Volumes/wsjtx-1.4.0-rc1-Darwin/background.png diff --git a/Darwin/wsjtx_DMG.DS_Store b/Darwin/wsjtx_DMG.DS_Store index 15d5d90ce..55e74587f 100644 Binary files a/Darwin/wsjtx_DMG.DS_Store and b/Darwin/wsjtx_DMG.DS_Store differ diff --git a/contrib/Darwin/KVASD-installer.app/Contents/Info.plist b/contrib/Darwin/KVASD-installer.app/Contents/Info.plist new file mode 100644 index 000000000..7ff85104c --- /dev/null +++ b/contrib/Darwin/KVASD-installer.app/Contents/Info.plist @@ -0,0 +1,67 @@ + + + + + BuildMachineOSBuild + 12F45 + CFBundleDevelopmentRegion + en + CFBundleDocumentTypes + + + CFBundleTypeRole + Viewer + LSItemContentTypes + + com.apple.application-bundle + + + + CFBundleExecutable + KVASD-installer + CFBundleIconFile + AppIcon + CFBundleIdentifier + org.k1jt.KVASD-installer + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + KVASD-installer + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 5A2053 + DTPlatformVersion + GM + DTSDKBuild + 13A595 + DTSDKName + macosx10.9 + DTXcode + 0501 + DTXcodeBuild + 5A2053 + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + + NSHumanReadableCopyright + Created by Bill Somerville (G4WJS) on 12/11/2014. + + The author of this work hereby waives all claim of copyright (economic and moral) +in this work and immediately places it in the public domain; it may be used, distorted +or destroyed in any manner whatsoever without further attribution or notice to the creator. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/contrib/Darwin/KVASD-installer.app/Contents/MacOS/KVASD-installer b/contrib/Darwin/KVASD-installer.app/Contents/MacOS/KVASD-installer new file mode 100755 index 000000000..d016d456e Binary files /dev/null and b/contrib/Darwin/KVASD-installer.app/Contents/MacOS/KVASD-installer differ diff --git a/contrib/Darwin/KVASD-installer.app/Contents/PkgInfo b/contrib/Darwin/KVASD-installer.app/Contents/PkgInfo new file mode 100644 index 000000000..bd04210fb --- /dev/null +++ b/contrib/Darwin/KVASD-installer.app/Contents/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/contrib/Darwin/KVASD-installer.app/Contents/Resources/AppIcon.icns b/contrib/Darwin/KVASD-installer.app/Contents/Resources/AppIcon.icns new file mode 100644 index 000000000..928b56e00 Binary files /dev/null and b/contrib/Darwin/KVASD-installer.app/Contents/Resources/AppIcon.icns differ diff --git a/contrib/Darwin/KVASD-installer.app/Contents/Resources/Credits.rtf b/contrib/Darwin/KVASD-installer.app/Contents/Resources/Credits.rtf new file mode 100644 index 000000000..fb63b0835 --- /dev/null +++ b/contrib/Darwin/KVASD-installer.app/Contents/Resources/Credits.rtf @@ -0,0 +1,30 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw11900\paperh16840\vieww9600\viewh8400\viewkind0 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + G4WJS - Bill Somerville\ +\ + +\b Human Interface Design: +\b0 \ + G4WJS - Bill Somerville\ +\ + +\b Testing: +\b0 \ + G4WJS - Bill Somerville\ +\ + +\b Documentation: +\b0 \ + G4WJS - Bill Somerville\ +\ + +\b With special thanks to: +\b0 \ + No one in particular.\ +} \ No newline at end of file diff --git a/contrib/Darwin/KVASD-installer.app/Contents/Resources/InfoPlist.strings b/contrib/Darwin/KVASD-installer.app/Contents/Resources/InfoPlist.strings new file mode 100644 index 000000000..5e45963c3 Binary files /dev/null and b/contrib/Darwin/KVASD-installer.app/Contents/Resources/InfoPlist.strings differ diff --git a/contrib/Darwin/KVASD-installer.app/Contents/Resources/MainMenu.nib b/contrib/Darwin/KVASD-installer.app/Contents/Resources/MainMenu.nib new file mode 100644 index 000000000..90a03af9a Binary files /dev/null and b/contrib/Darwin/KVASD-installer.app/Contents/Resources/MainMenu.nib differ diff --git a/contrib/Darwin/KVASD-installer.app/Contents/Resources/WSJTAppDelegate.scpt b/contrib/Darwin/KVASD-installer.app/Contents/Resources/WSJTAppDelegate.scpt new file mode 100644 index 000000000..91841ae6f Binary files /dev/null and b/contrib/Darwin/KVASD-installer.app/Contents/Resources/WSJTAppDelegate.scpt differ