Banish KVASD
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6129 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
@ -1,43 +0,0 @@
 | 
			
		||||
#
 | 
			
		||||
# CMake script to fetch kvasd binary for the current platform
 | 
			
		||||
#
 | 
			
		||||
set (kvasd_NAME "${URL}/${SYSTEM_NAME}/kvasd${EXECUTABLE_SUFFIX}")
 | 
			
		||||
set (kvasd_target "contrib/kvasd${EXECUTABLE_SUFFIX}")
 | 
			
		||||
 | 
			
		||||
message (STATUS "downloading file: ${kvasd_NAME}.md5")
 | 
			
		||||
file (
 | 
			
		||||
  DOWNLOAD "${kvasd_NAME}.md5" "${kvasd_target}.md5"
 | 
			
		||||
  TIMEOUT 120
 | 
			
		||||
  STATUS status
 | 
			
		||||
  LOG log
 | 
			
		||||
  SHOW_PROGRESS
 | 
			
		||||
  )
 | 
			
		||||
list (GET status 0 rc)
 | 
			
		||||
if (rc)
 | 
			
		||||
  message (WARNING "${status}")
 | 
			
		||||
  message (FATAL_ERROR "${log}")
 | 
			
		||||
endif (rc)
 | 
			
		||||
file (READ "${kvasd_target}.md5" md5sum)
 | 
			
		||||
string (REGEX MATCH "[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]" md5sum "${md5sum}")
 | 
			
		||||
 | 
			
		||||
if (EXISTS "${kvasd_target}")
 | 
			
		||||
  file (MD5 "${kvasd_target}" current_md5sum)
 | 
			
		||||
endif (EXISTS "${kvasd_target}")
 | 
			
		||||
if (NOT "${md5sum}" STREQUAL "${current_md5sum}")
 | 
			
		||||
  message (STATUS "downloading file: ${kvasd_NAME}")
 | 
			
		||||
  file (
 | 
			
		||||
    DOWNLOAD ${kvasd_NAME} contrib/kvasd${EXECUTABLE_SUFFIX}
 | 
			
		||||
    TIMEOUT 120
 | 
			
		||||
    STATUS status
 | 
			
		||||
    LOG log
 | 
			
		||||
    SHOW_PROGRESS
 | 
			
		||||
    EXPECTED_MD5 "${md5sum}"
 | 
			
		||||
    )
 | 
			
		||||
  list (GET status 0 rc)
 | 
			
		||||
  if (rc)
 | 
			
		||||
    message (WARNING "${status}")
 | 
			
		||||
    message (FATAL_ERROR "${log}")
 | 
			
		||||
  endif (rc)
 | 
			
		||||
else (NOT "${md5sum}" STREQUAL "${current_md5sum}")
 | 
			
		||||
  message (STATUS "file: ${kvasd_NAME} up to date")
 | 
			
		||||
endif (NOT "${md5sum}" STREQUAL "${current_md5sum}")
 | 
			
		||||
@ -14,11 +14,9 @@ set (CPACK_STRIP_FILES TRUE)
 | 
			
		||||
#
 | 
			
		||||
# components
 | 
			
		||||
#
 | 
			
		||||
#set (CPACK_COMPONENTS_ALL runtime kvasd)
 | 
			
		||||
#set (CPACK_COMPONENTS_ALL runtime)
 | 
			
		||||
#set (CPACK_COMPONENT_RUNTIME_DISPLAY_NAME "@PROJECT_NAME@ Application")
 | 
			
		||||
#set (CPACK_COMPONENT_RUNTIME_DESCRIPTION "@WSJTX_DESCRIPTION_SUMMARY@")
 | 
			
		||||
#set (CPACK_COMPONENT_KVASD_DISPLAY_NAME "KVASD Reed Solomon Decoder")
 | 
			
		||||
#set (CPACK_COMPONENT_KVASD_DESCRIPTION "Optional decoder component")
 | 
			
		||||
 | 
			
		||||
if (CPACK_GENERATOR MATCHES "NSIS")
 | 
			
		||||
  set (CPACK_STRIP_FILES FALSE)	# breaks Qt packaging on Windows
 | 
			
		||||
@ -45,198 +43,6 @@ if (CPACK_GENERATOR MATCHES "NSIS")
 | 
			
		||||
  set (CPACK_NSIS_CONTACT "${CPACK_PACKAGE_CONTACT}")
 | 
			
		||||
  set (CPACK_NSIS_MUI_FINISHPAGE_RUN "wsjtx.exe")
 | 
			
		||||
  set (CPACK_NSIS_MODIFY_PATH ON)
 | 
			
		||||
 | 
			
		||||
  set (CPACK_NSIS_EXTRA_DEFINES "
 | 
			
		||||
    ;
 | 
			
		||||
    ; enable local plugins
 | 
			
		||||
    ;
 | 
			
		||||
    !ifdef NSIS_WIN32_MAKENSIS
 | 
			
		||||
      !define NSISCONF_3 ';' ; NSIS 2 tries to parse some preprocessor instructions inside \"!if 0\" blocks!
 | 
			
		||||
      !addincludedir '@CMAKE_CURRENT_SOURCE_DIR@\\contrib\\NSIS\\Include'
 | 
			
		||||
      !if \${NSIS_PACKEDVERSION} > 0x02ffffff ; NSIS 3+:
 | 
			
		||||
        !define /redef NSISCONF_3 ''
 | 
			
		||||
    \${NSISCONF_3}  !addplugindir /x86-ansi '@CMAKE_CURRENT_SOURCE_DIR@\\contrib\\NSIS\\Plugins-i386-ansi'
 | 
			
		||||
    \${NSISCONF_3}  !addplugindir /x86-unicode '@CMAKE_CURRENT_SOURCE_DIR@\\contrib\\NSIS\\Plugins-i386-unicode'
 | 
			
		||||
      !else ; NSIS 2:
 | 
			
		||||
        !addplugindir '@CMAKE_CURRENT_SOURCE_DIR@\\contrib\\NSIS\\Plugins-i386-ansi'
 | 
			
		||||
      !endif ;~ NSIS_PACKEDVERSION
 | 
			
		||||
      !undef NSISCONF_3
 | 
			
		||||
    !endif ;~ NSIS_WIN32_MAKENSIS
 | 
			
		||||
 | 
			
		||||
    ; global variables
 | 
			
		||||
    Var KVASD_EXECUTABLE
 | 
			
		||||
    Var CB_INSTALL_KVASD
 | 
			
		||||
    Var INSTALL_KVASD
 | 
			
		||||
    Var RichEditLicense
 | 
			
		||||
    Var CheckBoxAgree
 | 
			
		||||
    Var KVASD_LICENSE
 | 
			
		||||
 | 
			
		||||
    ; page callbacks
 | 
			
		||||
    Function KVASD_page_create
 | 
			
		||||
      Push $R0
 | 
			
		||||
 | 
			
		||||
      \${If} $INSTALL_KVASD = \${BST_CHECKED}
 | 
			
		||||
          \${AndIfNot} \${FileExists} $KVASD_LICENSE
 | 
			
		||||
        GetTempFileName $KVASD_LICENSE
 | 
			
		||||
retry_eula:
 | 
			
		||||
        NSISdl::download /TIMEOUT=30000 @PROJECT_KVASD_URL@/kvasd_eula.txt $KVASD_LICENSE
 | 
			
		||||
        Pop $R0
 | 
			
		||||
        \${If} $R0 != success
 | 
			
		||||
          MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'Download: @PROJECT_KVASD_URL@/kvasd_eula.txt$\\nFailed: $R0' IDRETRY retry_eula
 | 
			
		||||
          StrCpy $INSTALL_KVASD \${BST_UNCHECKED}
 | 
			
		||||
          Delete $KVASD_LICENSE
 | 
			
		||||
        \${EndIf}
 | 
			
		||||
      \${EndIf}
 | 
			
		||||
 | 
			
		||||
      \${If} $INSTALL_KVASD = \${BST_CHECKED}
 | 
			
		||||
          \${AndIf} \${FileExists} $KVASD_LICENSE
 | 
			
		||||
        !insertmacro MUI_HEADER_TEXT `$(MUI_TEXT_LICENSE_TITLE)` `Please agree the terms of this license before installing KVASD`
 | 
			
		||||
 | 
			
		||||
        ; disable install button until agreed
 | 
			
		||||
        GetDlgItem $R0 $HWNDPARENT 1
 | 
			
		||||
        EnableWindow $R0 0
 | 
			
		||||
 | 
			
		||||
        nsDialogs::Create 1018
 | 
			
		||||
        Pop $R0
 | 
			
		||||
;        \${If} $R0 == error
 | 
			
		||||
;          Abort
 | 
			
		||||
;        \${EndIf}
 | 
			
		||||
 | 
			
		||||
        nsDialogs::CreateControl RichEdit20A \${WS_VISIBLE}|\${WS_CHILD}|\${WS_TABSTOP}|\${WS_VSCROLL}|\${ES_MULTILINE}|\${ES_READONLY} \${__NSD_Text_EXSTYLE} 0 0 100% -24u ''
 | 
			
		||||
        Pop $RichEditLicense
 | 
			
		||||
 | 
			
		||||
        nsRichEdit::Load $RichEditLicense $KVASD_LICENSE
 | 
			
		||||
 | 
			
		||||
        \${NSD_CreateCheckBox} 0 -20u 160u 12u `$(^AcceptBtn)`
 | 
			
		||||
        Pop $CheckBoxAgree
 | 
			
		||||
        \${NSD_OnClick} $CheckBoxAgree KVASD_Page_CheckBoxAgree_Click
 | 
			
		||||
        nsDialogs::Show
 | 
			
		||||
      \${Else}
 | 
			
		||||
        Abort ; skip page
 | 
			
		||||
      \${EndIf}
 | 
			
		||||
 | 
			
		||||
      Pop $R0
 | 
			
		||||
    FunctionEnd
 | 
			
		||||
 | 
			
		||||
    Function KVASD_page_leave
 | 
			
		||||
    FunctionEnd
 | 
			
		||||
 | 
			
		||||
    ; field callbacks
 | 
			
		||||
    Function KVASD_Page_CheckBoxAgree_Click
 | 
			
		||||
      Pop $0
 | 
			
		||||
 | 
			
		||||
      \${NSD_GetState} $CheckBoxAgree $R0
 | 
			
		||||
      \${If} $R0 = \${BST_CHECKED}
 | 
			
		||||
        GetDlgItem $R0 $HWNDPARENT 1
 | 
			
		||||
        EnableWindow $R0 1
 | 
			
		||||
      \${Else}
 | 
			
		||||
        GetDlgItem $R0 $HWNDPARENT 1
 | 
			
		||||
        EnableWindow $R0 0
 | 
			
		||||
      \${EndIf}
 | 
			
		||||
    FunctionEnd"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
  set (CPACK_NSIS_EXTRA_INIT_COMMANDS "
 | 
			
		||||
    ; initial value of $INSATLL_KVASD chack box
 | 
			
		||||
    IntOp $INSTALL_KVASD 0 + \${BST_CHECKED}"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
  set (CPACK_NSIS_EXTRA_PAGES "
 | 
			
		||||
    ; custom page for KVASD license display and acceptance
 | 
			
		||||
    Page custom KVASD_page_create KVASD_page_leave"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
  set (CPACK_NSIS_EXTRA_INSTALL_OPTIONS "
 | 
			
		||||
    ; add a chackbox for installing KVASD
 | 
			
		||||
    \${NSD_CreateCheckBox} 0u 110u 100% 10u 'Install the optional KVASD decoder'
 | 
			
		||||
    Pop $CB_INSTALL_KVASD
 | 
			
		||||
    \${NSD_SetState} $CB_INSTALL_KVASD $INSTALL_KVASD"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
  set (CPACK_NSIS_EXTRA_INSTALL_OPTIONS_READ "
 | 
			
		||||
    \${NSD_GetState} $CB_INSTALL_KVASD $INSTALL_KVASD"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
  set (CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "
 | 
			
		||||
    \${If} $INSTALL_KVASD = \${BST_CHECKED}
 | 
			
		||||
      ;
 | 
			
		||||
      ; fetch KVASD license
 | 
			
		||||
      ;
 | 
			
		||||
      StrCpy $5 @PROJECT_KVASD_URL@/@SYSTEM_NAME@/kvasd@CMAKE_EXECUTABLE_SUFFIX@
 | 
			
		||||
      GetTempFileName $1
 | 
			
		||||
retry:
 | 
			
		||||
      NSISdl::download /TIMEOUT=30000 $5.md5 $1
 | 
			
		||||
      Pop $R0
 | 
			
		||||
      \${If} $R0 != success
 | 
			
		||||
        MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'Download: $5.md5$\\nFailed: $R0' IDRETRY retry
 | 
			
		||||
        Abort
 | 
			
		||||
      \${EndIf}
 | 
			
		||||
      ClearErrors
 | 
			
		||||
      FileOpen $2 $1 r
 | 
			
		||||
      \${If} \${Errors}
 | 
			
		||||
        MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'Failed to read MD5 hash file: $5.md5' IDRETRY retry
 | 
			
		||||
        Abort
 | 
			
		||||
      \${EndIf}
 | 
			
		||||
 | 
			
		||||
      ; extract MD5 hash
 | 
			
		||||
      FileRead $2 $3 32
 | 
			
		||||
      FileClose $2
 | 
			
		||||
 | 
			
		||||
      ;
 | 
			
		||||
      ; fetch kvasd executable
 | 
			
		||||
      ;
 | 
			
		||||
      GetTempFileName $KVASD_EXECUTABLE  
 | 
			
		||||
      NSISdl::download /TIMEOUT=30000 $5 $KVASD_EXECUTABLE
 | 
			
		||||
      Pop $R0
 | 
			
		||||
      \${If} $R0 != success
 | 
			
		||||
        MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'Download: $5$\\nFailed: $R0' IDRETRY retry
 | 
			
		||||
        Abort
 | 
			
		||||
      \${EndIf}
 | 
			
		||||
 | 
			
		||||
      ; calculate MD5 hash
 | 
			
		||||
      md5dll::GetMD5File $KVASD_EXECUTABLE
 | 
			
		||||
      Pop $0
 | 
			
		||||
 | 
			
		||||
      \${If} $3 != $0
 | 
			
		||||
        MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'MD5 hash check failed on: $5$\\nExpected: [$4]$\\n  Actual: [$0]' IDRETRY retry
 | 
			
		||||
        Abort
 | 
			
		||||
      \${EndIf}
 | 
			
		||||
 | 
			
		||||
skip_kvasd:
 | 
			
		||||
      Delete $1 ; MD5 hash file
 | 
			
		||||
    \${EndIf}
 | 
			
		||||
 | 
			
		||||
    ; save $INSTALL_KVASD to registry for use in teh un-installer
 | 
			
		||||
    WriteRegDWORD SHCTX 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${CPACK_PACKAGE_INSTALL_REGISTRY_KEY}' \\
 | 
			
		||||
      'InstallKvasd' $INSTALL_KVASD"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
  set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
 | 
			
		||||
    ; install the kvasd executable and ensure it can be executed
 | 
			
		||||
    \${If} $INSTALL_KVASD = \${BST_CHECKED}
 | 
			
		||||
        \${AndIf} \${FileExists} $KVASD_EXECUTABLE
 | 
			
		||||
      DetailPrint 'Installing: $INSTDIR\\@WSJT_BIN_DESTINATION@\\kvasd@CMAKE_EXECUTABLE_SUFFIX@'
 | 
			
		||||
      Rename $KVASD_EXECUTABLE '$INSTDIR\\@WSJT_BIN_DESTINATION@\\kvasd@CMAKE_EXECUTABLE_SUFFIX@'
 | 
			
		||||
      AccessControl::ClearOnFile '$INSTDIR\\@WSJT_BIN_DESTINATION@\\kvasd@CMAKE_EXECUTABLE_SUFFIX@' '(BU)' 'GenericRead + GenericExecute'
 | 
			
		||||
      Pop $R0
 | 
			
		||||
      \${If} $R0 != ok
 | 
			
		||||
        Pop $R0
 | 
			
		||||
        MessageBox MB_OK 'Failed to set KVASD file permissions.\\n$R0'
 | 
			
		||||
        Abort
 | 
			
		||||
      \${EndIf}
 | 
			
		||||
    \${EndIf}"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
  set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
 | 
			
		||||
    ; fetch $INSTALL_KVASD from registry
 | 
			
		||||
    ReadRegDWORD $INSTALL_KVASD SHCTX \\
 | 
			
		||||
      'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${CPACK_PACKAGE_INSTALL_REGISTRY_KEY}' 'InstallKvasd'
 | 
			
		||||
 | 
			
		||||
    ; conditionally un-install the kvasd executable
 | 
			
		||||
    \${If} $INSTALL_KVASD = \${BST_CHECKED}
 | 
			
		||||
      Delete '$INSTDIR\\@WSJT_BIN_DESTINATION@\\kvasd@CMAKE_EXECUTABLE_SUFFIX@'
 | 
			
		||||
    \${EndIf}"
 | 
			
		||||
    )
 | 
			
		||||
endif ()
 | 
			
		||||
 | 
			
		||||
if ("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
 | 
			
		||||
 | 
			
		||||
@ -79,7 +79,6 @@ set (PROJECT_DESCRIPTION "${PROJECT_SUMMARY_DESCRIPTION}
 | 
			
		||||
 standard SSB-width IF filters, switching between JT65 and JT9 modes
 | 
			
		||||
 is quick and convenient. Be sure to read the online ${PROJECT_NAME} User's
 | 
			
		||||
 Guide.")
 | 
			
		||||
set (PROJECT_KVASD_URL http://svn.code.sf.net/p/wsjt/wsjt/trunk/kvasd-binary)
 | 
			
		||||
 | 
			
		||||
set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake/Modules ${CMAKE_MODULE_PATH})
 | 
			
		||||
 | 
			
		||||
@ -128,12 +127,6 @@ If you just want to see the debug output from the application then the easiest w
 | 
			
		||||
attach a debugger which will then receive the console output inside its console." ON
 | 
			
		||||
  "WIN32" OFF)
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# decide if we are bundling kvasd (non-FOSS)
 | 
			
		||||
#
 | 
			
		||||
CMAKE_DEPENDENT_OPTION (WSJT_INCLUDE_KVASD "Include kvasd in the package." OFF
 | 
			
		||||
  "NOT is_debug_build" ON)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
set (PROJECT_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
 | 
			
		||||
if (NOT PROJECT_ARCHITECTURE)
 | 
			
		||||
@ -979,24 +972,6 @@ if (WSJT_CREATE_WINMAIN)
 | 
			
		||||
  set_target_properties (message_aggregator PROPERTIES WIN32_EXECUTABLE ON)
 | 
			
		||||
endif (WSJT_CREATE_WINMAIN)
 | 
			
		||||
 | 
			
		||||
set (SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
 | 
			
		||||
if (WIN32)
 | 
			
		||||
  set (SYSTEM_NAME "${SYSTEM_NAME}i386")
 | 
			
		||||
endif (WIN32)
 | 
			
		||||
if (WSJT_INCLUDE_KVASD)
 | 
			
		||||
  #
 | 
			
		||||
  # fetch and validate kvasd
 | 
			
		||||
  #
 | 
			
		||||
  set (KVASD_BINARY contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX})
 | 
			
		||||
 | 
			
		||||
  add_custom_target (kvasd ALL
 | 
			
		||||
    ${CMAKE_COMMAND} -D SYSTEM_NAME=${SYSTEM_NAME} -D EXECUTABLE_SUFFIX=${CMAKE_EXECUTABLE_SUFFIX} -D URL=${PROJECT_KVASD_URL} -P ${CMAKE_SOURCE_DIR}/CMake/download_kvasd.cmake
 | 
			
		||||
    COMMENT "Downloading kvasd for ${SYSTEM_NAME}"
 | 
			
		||||
    VERBATIM
 | 
			
		||||
    )
 | 
			
		||||
endif (WSJT_INCLUDE_KVASD)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if (UNIX)
 | 
			
		||||
  if (NOT WSJT_SKIP_MANPAGES)
 | 
			
		||||
    add_subdirectory (manpages)
 | 
			
		||||
@ -1021,21 +996,6 @@ install (TARGETS jt9 jt65code jt9code jt4code wsprd message_aggregator
 | 
			
		||||
  BUNDLE DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
if (WSJT_INCLUDE_KVASD)
 | 
			
		||||
  install (PROGRAMS
 | 
			
		||||
    ${CMAKE_BINARY_DIR}/${KVASD_BINARY}
 | 
			
		||||
    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
 | 
			
		||||
  ${RIGCTL_EXE}
 | 
			
		||||
  DESTINATION ${WSJT_BIN_DESTINATION}
 | 
			
		||||
 | 
			
		||||
@ -1,306 +0,0 @@
 | 
			
		||||
// !$*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 = "<group>"; };
 | 
			
		||||
		A924154C1A2143F400B34EFA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
 | 
			
		||||
		A924154E1A2143F400B34EFA /* KVASD-installer-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "KVASD-installer-Prefix.pch"; sourceTree = "<group>"; };
 | 
			
		||||
		A92415521A2143F400B34EFA /* WSJTAppDelegate.applescript */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.applescript; path = WSJTAppDelegate.applescript; sourceTree = "<group>"; };
 | 
			
		||||
		A92415571A2143F400B34EFA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
 | 
			
		||||
		A99DD3EB1A267FF900951324 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = InfoPlist.strings; sourceTree = "<group>"; };
 | 
			
		||||
		A99DD3ED1A26801100951324 /* Credits.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = "<group>"; };
 | 
			
		||||
		A99DD3EF1A26801D00951324 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
 | 
			
		||||
/* 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 = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		A924153C1A2143F400B34EFA /* Products */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				A924153B1A2143F400B34EFA /* KVASD-installer.app */,
 | 
			
		||||
			);
 | 
			
		||||
			name = Products;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		A924153D1A2143F400B34EFA /* Frameworks */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				A924153E1A2143F400B34EFA /* Cocoa.framework */,
 | 
			
		||||
				A92415401A2143F400B34EFA /* AppleScriptObjC.framework */,
 | 
			
		||||
				A92415421A2143F400B34EFA /* Other Frameworks */,
 | 
			
		||||
			);
 | 
			
		||||
			name = Frameworks;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		A92415421A2143F400B34EFA /* Other Frameworks */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				A92415431A2143F400B34EFA /* AppKit.framework */,
 | 
			
		||||
				A92415441A2143F400B34EFA /* CoreData.framework */,
 | 
			
		||||
				A92415451A2143F400B34EFA /* Foundation.framework */,
 | 
			
		||||
			);
 | 
			
		||||
			name = "Other Frameworks";
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		A92415461A2143F400B34EFA /* KVASD-installer */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				A92415521A2143F400B34EFA /* WSJTAppDelegate.applescript */,
 | 
			
		||||
				A99DD3EF1A26801D00951324 /* MainMenu.xib */,
 | 
			
		||||
				A92415571A2143F400B34EFA /* Images.xcassets */,
 | 
			
		||||
				A92415471A2143F400B34EFA /* Supporting Files */,
 | 
			
		||||
			);
 | 
			
		||||
			path = "KVASD-installer";
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		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 = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
/* 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 = 10.7;
 | 
			
		||||
				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 = 10.7;
 | 
			
		||||
				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 */;
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Workspace
 | 
			
		||||
   version = "1.0">
 | 
			
		||||
   <FileRef
 | 
			
		||||
      location = "self:KVASD-installer.xcodeproj">
 | 
			
		||||
   </FileRef>
 | 
			
		||||
</Workspace>
 | 
			
		||||
@ -1,30 +0,0 @@
 | 
			
		||||
{\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.\
 | 
			
		||||
}
 | 
			
		||||
@ -1,68 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "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"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 10 KiB  | 
| 
		 Before Width: | Height: | Size: 28 KiB  | 
| 
		 Before Width: | Height: | Size: 1.1 KiB  | 
| 
		 Before Width: | Height: | Size: 2.4 KiB  | 
| 
		 Before Width: | Height: | Size: 28 KiB  | 
| 
		 Before Width: | Height: | Size: 70 KiB  | 
| 
		 Before Width: | Height: | Size: 2.4 KiB  | 
| 
		 Before Width: | Height: | Size: 5.7 KiB  | 
| 
		 Before Width: | Height: | Size: 70 KiB  | 
| 
		 Before Width: | Height: | Size: 177 KiB  | 
@ -1,2 +0,0 @@
 | 
			
		||||
/* Localized versions of Info.plist keys */
 | 
			
		||||
 | 
			
		||||
@ -1,51 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>CFBundleDevelopmentRegion</key>
 | 
			
		||||
	<string>en</string>
 | 
			
		||||
	<key>CFBundleDocumentTypes</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>CFBundleTypeRole</key>
 | 
			
		||||
			<string>Viewer</string>
 | 
			
		||||
			<key>LSItemContentTypes</key>
 | 
			
		||||
			<array>
 | 
			
		||||
				<string>com.apple.application-bundle</string>
 | 
			
		||||
			</array>
 | 
			
		||||
		</dict>
 | 
			
		||||
	</array>
 | 
			
		||||
	<key>CFBundleExecutable</key>
 | 
			
		||||
	<string>${EXECUTABLE_NAME}</string>
 | 
			
		||||
	<key>CFBundleIconFile</key>
 | 
			
		||||
	<string></string>
 | 
			
		||||
	<key>CFBundleIdentifier</key>
 | 
			
		||||
	<string>org.k1jt.${PRODUCT_NAME:rfc1034identifier}</string>
 | 
			
		||||
	<key>CFBundleInfoDictionaryVersion</key>
 | 
			
		||||
	<string>6.0</string>
 | 
			
		||||
	<key>CFBundleName</key>
 | 
			
		||||
	<string>${PRODUCT_NAME}</string>
 | 
			
		||||
	<key>CFBundlePackageType</key>
 | 
			
		||||
	<string>APPL</string>
 | 
			
		||||
	<key>CFBundleShortVersionString</key>
 | 
			
		||||
	<string>1.0</string>
 | 
			
		||||
	<key>CFBundleSignature</key>
 | 
			
		||||
	<string>????</string>
 | 
			
		||||
	<key>CFBundleVersion</key>
 | 
			
		||||
	<string>1</string>
 | 
			
		||||
	<key>LSApplicationCategoryType</key>
 | 
			
		||||
	<string>public.app-category.utilities</string>
 | 
			
		||||
	<key>LSMinimumSystemVersion</key>
 | 
			
		||||
	<string>${MACOSX_DEPLOYMENT_TARGET}</string>
 | 
			
		||||
	<key>NSHumanReadableCopyright</key>
 | 
			
		||||
	<string>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.</string>
 | 
			
		||||
	<key>NSMainNibFile</key>
 | 
			
		||||
	<string>MainMenu</string>
 | 
			
		||||
	<key>NSPrincipalClass</key>
 | 
			
		||||
	<string>NSApplication</string>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
@ -1,9 +0,0 @@
 | 
			
		||||
//
 | 
			
		||||
//  Prefix header
 | 
			
		||||
//
 | 
			
		||||
//  The contents of this file are implicitly included at the beginning of every source file.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifdef __OBJC__
 | 
			
		||||
    #import <Cocoa/Cocoa.h>
 | 
			
		||||
#endif
 | 
			
		||||
@ -1,290 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="4514" systemVersion="12F45" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <deployment version="1070" defaultVersion="1070" identifier="macosx"/>
 | 
			
		||||
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="4514"/>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
    <objects>
 | 
			
		||||
        <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
 | 
			
		||||
            <connections>
 | 
			
		||||
                <outlet property="delegate" destination="494" id="495"/>
 | 
			
		||||
            </connections>
 | 
			
		||||
        </customObject>
 | 
			
		||||
        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
 | 
			
		||||
        <customObject id="-3" userLabel="Application">
 | 
			
		||||
            <connections>
 | 
			
		||||
                <outlet property="delegate" destination="494" id="B9w-iE-h6m"/>
 | 
			
		||||
            </connections>
 | 
			
		||||
        </customObject>
 | 
			
		||||
        <menu title="AMainMenu" systemMenu="main" id="29" userLabel="MainMenu">
 | 
			
		||||
            <items>
 | 
			
		||||
                <menuItem title="KVASD-installer" id="56">
 | 
			
		||||
                    <menu key="submenu" title="KVASD-installer" systemMenu="apple" id="57">
 | 
			
		||||
                        <items>
 | 
			
		||||
                            <menuItem title="About KVASD-installer" id="58">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="doAbout:" target="494" id="u46-Dy-iCH"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="236">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" command="YES"/>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Preferences…" keyEquivalent="," id="129" userLabel="121"/>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="143">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" command="YES"/>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Services" id="131">
 | 
			
		||||
                                <menu key="submenu" title="Services" systemMenu="services" id="130"/>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="144">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" command="YES"/>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Hide KVASD-installer" keyEquivalent="h" id="134">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="hide:" target="-1" id="367"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Hide Others" keyEquivalent="h" id="145">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="hideOtherApplications:" target="-1" id="368"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Show All" id="150">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="unhideAllApplications:" target="-1" id="370"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="149">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" command="YES"/>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Quit KVASD-installer" keyEquivalent="q" id="136" userLabel="1111">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="performClose:" target="371" id="cEn-Uc-6XC"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                    </menu>
 | 
			
		||||
                </menuItem>
 | 
			
		||||
                <menuItem title="Window" id="19">
 | 
			
		||||
                    <menu key="submenu" title="Window" systemMenu="window" id="24">
 | 
			
		||||
                        <items>
 | 
			
		||||
                            <menuItem title="Minimize" keyEquivalent="m" id="23">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="performMiniaturize:" target="-1" id="37"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Zoom" id="239">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="performZoom:" target="-1" id="240"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="92">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" command="YES"/>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Bring All to Front" id="5">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="arrangeInFront:" target="-1" id="39"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                    </menu>
 | 
			
		||||
                </menuItem>
 | 
			
		||||
                <menuItem title="Help" id="490">
 | 
			
		||||
                    <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                    <menu key="submenu" title="Help" systemMenu="help" id="491">
 | 
			
		||||
                        <items>
 | 
			
		||||
                            <menuItem title="KVASD-installer Help" keyEquivalent="?" id="492">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="showHelp:" target="-1" id="493"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                    </menu>
 | 
			
		||||
                </menuItem>
 | 
			
		||||
            </items>
 | 
			
		||||
        </menu>
 | 
			
		||||
        <window title="KVASD-installer" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="371">
 | 
			
		||||
            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
 | 
			
		||||
            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
 | 
			
		||||
            <rect key="contentRect" x="80" y="390" width="496" height="492"/>
 | 
			
		||||
            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1058"/>
 | 
			
		||||
            <value key="minSize" type="size" width="524" height="564"/>
 | 
			
		||||
            <view key="contentView" id="372">
 | 
			
		||||
                <rect key="frame" x="0.0" y="0.0" width="496" height="492"/>
 | 
			
		||||
                <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
                <subviews>
 | 
			
		||||
                    <button toolTip="Invoke a file chooser dialog to pick a WSJT-X application bundle to install KVASD into." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zDT-OA-GKH">
 | 
			
		||||
                        <rect key="frame" x="20" y="63" width="113" height="25"/>
 | 
			
		||||
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                        <buttonCell key="cell" type="squareTextured" title="Choose target ..." bezelStyle="texturedSquare" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="wka-Od-w4K">
 | 
			
		||||
                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
 | 
			
		||||
                            <font key="font" metaFont="system"/>
 | 
			
		||||
                        </buttonCell>
 | 
			
		||||
                        <connections>
 | 
			
		||||
                            <action selector="doChooseTarget:" target="494" id="T3v-Fi-ceL"/>
 | 
			
		||||
                        </connections>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <button toolTip="Click to process all the WSJT-X application bundles you have selected." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WgE-a2-qYH">
 | 
			
		||||
                        <rect key="frame" x="430" y="63" width="46" height="25"/>
 | 
			
		||||
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                        <buttonCell key="cell" type="squareTextured" title="Install" bezelStyle="texturedSquare" imagePosition="overlaps" alignment="center" enabled="NO" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wul-Wc-vif">
 | 
			
		||||
                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
 | 
			
		||||
                            <font key="font" metaFont="system"/>
 | 
			
		||||
                        </buttonCell>
 | 
			
		||||
                        <connections>
 | 
			
		||||
                            <action selector="doInstall:" target="494" id="tMW-3E-gQh"/>
 | 
			
		||||
                        </connections>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <progressIndicator maxValue="100" displayedWhenStopped="NO" indeterminate="YES" style="bar" translatesAutoresizingMaskIntoConstraints="NO" id="C3t-a8-lOf">
 | 
			
		||||
                        <rect key="frame" x="20" y="157" width="456" height="20"/>
 | 
			
		||||
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                    </progressIndicator>
 | 
			
		||||
                    <scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FDk-OM-v7f">
 | 
			
		||||
                        <rect key="frame" x="20" y="184" width="456" height="288"/>
 | 
			
		||||
                        <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
                        <string key="toolTip">Please read the agreement and tick the "Agree" checkbox below if you accept the terms and wish to continue with the installation.</string>
 | 
			
		||||
                        <clipView key="contentView" id="hfA-a7-tlo">
 | 
			
		||||
                            <rect key="frame" x="1" y="1" width="439" height="286"/>
 | 
			
		||||
                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                            <subviews>
 | 
			
		||||
                                <textView importsGraphics="NO" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" usesFontPanel="YES" verticallyResizable="YES" allowsNonContiguousLayout="YES" quoteSubstitution="YES" dashSubstitution="YES" spellingCorrection="YES" smartInsertDelete="YES" id="7ov-Rl-J8r">
 | 
			
		||||
                                    <rect key="frame" x="0.0" y="0.0" width="439" height="286"/>
 | 
			
		||||
                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                                    <size key="minSize" width="439" height="286"/>
 | 
			
		||||
                                    <size key="maxSize" width="648" height="10000000"/>
 | 
			
		||||
                                    <color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                                    <size key="minSize" width="439" height="286"/>
 | 
			
		||||
                                    <size key="maxSize" width="648" height="10000000"/>
 | 
			
		||||
                                </textView>
 | 
			
		||||
                            </subviews>
 | 
			
		||||
                            <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                        </clipView>
 | 
			
		||||
                        <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="U59-MZ-pYE">
 | 
			
		||||
                            <rect key="frame" x="-100" y="-100" width="87" height="18"/>
 | 
			
		||||
                            <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
                        </scroller>
 | 
			
		||||
                        <scroller key="verticalScroller" verticalHuggingPriority="750" horizontal="NO" id="yPp-8r-Jdr">
 | 
			
		||||
                            <rect key="frame" x="440" y="1" width="15" height="286"/>
 | 
			
		||||
                            <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
                        </scroller>
 | 
			
		||||
                    </scrollView>
 | 
			
		||||
                    <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Ykk-0Z-lxG">
 | 
			
		||||
                        <rect key="frame" x="17" y="20" width="462" height="37"/>
 | 
			
		||||
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                        <constraints>
 | 
			
		||||
                            <constraint firstAttribute="height" constant="37" id="hQV-aJ-MXM"/>
 | 
			
		||||
                        </constraints>
 | 
			
		||||
                        <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="Use "Choose target ..." to pick WSJT-X application bundles to install KVASD into" id="3OK-wt-WuN">
 | 
			
		||||
                            <font key="font" metaFont="system"/>
 | 
			
		||||
                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
 | 
			
		||||
                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
 | 
			
		||||
                        </textFieldCell>
 | 
			
		||||
                    </textField>
 | 
			
		||||
                    <box autoresizesSubviews="NO" title="License" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="wa1-Gy-wEE">
 | 
			
		||||
                        <rect key="frame" x="17" y="91" width="462" height="59"/>
 | 
			
		||||
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                        <view key="contentView">
 | 
			
		||||
                            <rect key="frame" x="1" y="1" width="460" height="43"/>
 | 
			
		||||
                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                            <subviews>
 | 
			
		||||
                                <button verticalHuggingPriority="750" tag="-1" translatesAutoresizingMaskIntoConstraints="NO" id="zHE-FK-uha">
 | 
			
		||||
                                    <rect key="frame" x="12" y="5" width="102" height="32"/>
 | 
			
		||||
                                    <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
                                    <constraints>
 | 
			
		||||
                                        <constraint firstAttribute="width" constant="90" id="93n-sN-xbH"/>
 | 
			
		||||
                                    </constraints>
 | 
			
		||||
                                    <buttonCell key="cell" type="push" title="Save ..." bezelStyle="rounded" alignment="center" enabled="NO" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="qaP-zQ-Ead">
 | 
			
		||||
                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
 | 
			
		||||
                                        <font key="font" metaFont="system"/>
 | 
			
		||||
                                        <connections>
 | 
			
		||||
                                            <action selector="doSave:" target="494" id="KPT-pj-YyW"/>
 | 
			
		||||
                                        </connections>
 | 
			
		||||
                                    </buttonCell>
 | 
			
		||||
                                </button>
 | 
			
		||||
                                <button verticalHuggingPriority="750" tag="-1" translatesAutoresizingMaskIntoConstraints="NO" id="ylZ-OO-wid">
 | 
			
		||||
                                    <rect key="frame" x="179" y="5" width="102" height="32"/>
 | 
			
		||||
                                    <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
                                    <constraints>
 | 
			
		||||
                                        <constraint firstAttribute="width" constant="90" id="x77-Gu-2d1"/>
 | 
			
		||||
                                    </constraints>
 | 
			
		||||
                                    <buttonCell key="cell" type="push" title="Print ..." bezelStyle="rounded" alignment="center" enabled="NO" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="2cB-RL-2Da">
 | 
			
		||||
                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
 | 
			
		||||
                                        <font key="font" metaFont="system"/>
 | 
			
		||||
                                    </buttonCell>
 | 
			
		||||
                                    <connections>
 | 
			
		||||
                                        <action selector="doPrint:" target="494" id="879-hA-tbm"/>
 | 
			
		||||
                                    </connections>
 | 
			
		||||
                                </button>
 | 
			
		||||
                                <button tag="-1" translatesAutoresizingMaskIntoConstraints="NO" id="art-4p-gjI">
 | 
			
		||||
                                    <rect key="frame" x="347" y="-1" width="102" height="47"/>
 | 
			
		||||
                                    <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
                                    <constraints>
 | 
			
		||||
                                        <constraint firstAttribute="width" constant="98" id="tcI-KQ-cBc"/>
 | 
			
		||||
                                    </constraints>
 | 
			
		||||
                                    <buttonCell key="cell" type="check" title="Agree" bezelStyle="regularSquare" imagePosition="left" enabled="NO" inset="2" id="NP4-SZ-zup">
 | 
			
		||||
                                        <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
 | 
			
		||||
                                        <font key="font" metaFont="system"/>
 | 
			
		||||
                                        <connections>
 | 
			
		||||
                                            <action selector="doAgree:" target="494" id="AEf-cK-aSu"/>
 | 
			
		||||
                                        </connections>
 | 
			
		||||
                                    </buttonCell>
 | 
			
		||||
                                </button>
 | 
			
		||||
                            </subviews>
 | 
			
		||||
                        </view>
 | 
			
		||||
                        <constraints>
 | 
			
		||||
                            <constraint firstItem="art-4p-gjI" firstAttribute="top" secondItem="wa1-Gy-wEE" secondAttribute="top" constant="14" id="0zn-cU-8Qd"/>
 | 
			
		||||
                            <constraint firstItem="ylZ-OO-wid" firstAttribute="centerY" secondItem="art-4p-gjI" secondAttribute="centerY" id="P4Z-tf-K7i"/>
 | 
			
		||||
                            <constraint firstAttribute="trailing" secondItem="art-4p-gjI" secondAttribute="trailing" constant="11" id="PaV-Cy-yPe"/>
 | 
			
		||||
                            <constraint firstItem="zHE-FK-uha" firstAttribute="top" secondItem="wa1-Gy-wEE" secondAttribute="top" constant="25" id="Vbl-9p-bwR"/>
 | 
			
		||||
                            <constraint firstItem="zHE-FK-uha" firstAttribute="leading" secondItem="wa1-Gy-wEE" secondAttribute="leading" constant="16" id="gSc-ts-7Qh"/>
 | 
			
		||||
                            <constraint firstItem="ylZ-OO-wid" firstAttribute="centerX" secondItem="wa1-Gy-wEE" secondAttribute="centerX" id="hzs-Tk-cqg"/>
 | 
			
		||||
                            <constraint firstItem="ylZ-OO-wid" firstAttribute="baseline" secondItem="zHE-FK-uha" secondAttribute="baseline" id="jka-sT-Thn"/>
 | 
			
		||||
                            <constraint firstAttribute="bottom" secondItem="art-4p-gjI" secondAttribute="bottom" constant="-2" id="oKe-JP-bfb"/>
 | 
			
		||||
                        </constraints>
 | 
			
		||||
                        <color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
 | 
			
		||||
                        <color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
 | 
			
		||||
                    </box>
 | 
			
		||||
                </subviews>
 | 
			
		||||
                <constraints>
 | 
			
		||||
                    <constraint firstItem="C3t-a8-lOf" firstAttribute="trailing" secondItem="FDk-OM-v7f" secondAttribute="trailing" id="4DP-Kp-1q2"/>
 | 
			
		||||
                    <constraint firstItem="zDT-OA-GKH" firstAttribute="top" secondItem="wa1-Gy-wEE" secondAttribute="bottom" constant="8" symbolic="YES" id="ML8-yC-89i"/>
 | 
			
		||||
                    <constraint firstItem="FDk-OM-v7f" firstAttribute="leading" secondItem="372" secondAttribute="leading" constant="20" symbolic="YES" id="NMg-Ck-obh"/>
 | 
			
		||||
                    <constraint firstItem="zDT-OA-GKH" firstAttribute="leading" secondItem="wa1-Gy-wEE" secondAttribute="leading" id="T51-Uf-1WE"/>
 | 
			
		||||
                    <constraint firstItem="wa1-Gy-wEE" firstAttribute="leading" secondItem="C3t-a8-lOf" secondAttribute="leading" id="TGy-7g-zAJ"/>
 | 
			
		||||
                    <constraint firstItem="Ykk-0Z-lxG" firstAttribute="leading" secondItem="zDT-OA-GKH" secondAttribute="leading" id="bbq-7t-f68"/>
 | 
			
		||||
                    <constraint firstItem="C3t-a8-lOf" firstAttribute="trailing" secondItem="wa1-Gy-wEE" secondAttribute="trailing" id="d1F-PM-eaa"/>
 | 
			
		||||
                    <constraint firstItem="FDk-OM-v7f" firstAttribute="top" secondItem="372" secondAttribute="top" constant="20" symbolic="YES" id="kJJ-dt-NRz"/>
 | 
			
		||||
                    <constraint firstItem="C3t-a8-lOf" firstAttribute="leading" secondItem="FDk-OM-v7f" secondAttribute="leading" id="kgo-AY-mzZ"/>
 | 
			
		||||
                    <constraint firstItem="Ykk-0Z-lxG" firstAttribute="top" secondItem="zDT-OA-GKH" secondAttribute="bottom" constant="8" symbolic="YES" id="lnw-0d-qNt"/>
 | 
			
		||||
                    <constraint firstItem="zDT-OA-GKH" firstAttribute="baseline" secondItem="WgE-a2-qYH" secondAttribute="baseline" id="ohE-qi-Dfp"/>
 | 
			
		||||
                    <constraint firstItem="Ykk-0Z-lxG" firstAttribute="trailing" secondItem="WgE-a2-qYH" secondAttribute="trailing" id="p2f-9z-tE5"/>
 | 
			
		||||
                    <constraint firstItem="C3t-a8-lOf" firstAttribute="top" secondItem="FDk-OM-v7f" secondAttribute="bottom" constant="8" symbolic="YES" id="qZp-QK-6Gr"/>
 | 
			
		||||
                    <constraint firstAttribute="trailing" secondItem="FDk-OM-v7f" secondAttribute="trailing" constant="20" symbolic="YES" id="rjX-vJ-uNw"/>
 | 
			
		||||
                    <constraint firstItem="wa1-Gy-wEE" firstAttribute="top" secondItem="C3t-a8-lOf" secondAttribute="bottom" constant="8" symbolic="YES" id="rjt-GZ-jeN"/>
 | 
			
		||||
                    <constraint firstAttribute="bottom" secondItem="Ykk-0Z-lxG" secondAttribute="bottom" constant="20" symbolic="YES" id="vBM-jI-CPn"/>
 | 
			
		||||
                    <constraint firstItem="wa1-Gy-wEE" firstAttribute="trailing" secondItem="WgE-a2-qYH" secondAttribute="trailing" id="wYS-jM-6G3"/>
 | 
			
		||||
                </constraints>
 | 
			
		||||
            </view>
 | 
			
		||||
            <connections>
 | 
			
		||||
                <outlet property="delegate" destination="494" id="E9E-qr-Qke"/>
 | 
			
		||||
            </connections>
 | 
			
		||||
        </window>
 | 
			
		||||
        <customObject id="494" customClass="WSJTAppDelegate">
 | 
			
		||||
            <connections>
 | 
			
		||||
                <outlet property="agreeCheckBox" destination="NP4-SZ-zup" id="BvB-Ac-MFu"/>
 | 
			
		||||
                <outlet property="chooseTargetButton" destination="zDT-OA-GKH" id="q8b-d7-xok"/>
 | 
			
		||||
                <outlet property="eulaTextView" destination="7ov-Rl-J8r" id="986-TU-OO8"/>
 | 
			
		||||
                <outlet property="installButton" destination="WgE-a2-qYH" id="0yv-Eu-yHW"/>
 | 
			
		||||
                <outlet property="licenceBox" destination="wa1-Gy-wEE" id="eR5-0y-iYi"/>
 | 
			
		||||
                <outlet property="mainWindow" destination="371" id="JZA-eM-kJw"/>
 | 
			
		||||
                <outlet property="printButton" destination="ylZ-OO-wid" id="Nf6-fU-NSK"/>
 | 
			
		||||
                <outlet property="progressBar" destination="C3t-a8-lOf" id="ioI-hZ-ytR"/>
 | 
			
		||||
                <outlet property="saveButton" destination="zHE-FK-uha" id="FMI-0f-Pat"/>
 | 
			
		||||
            </connections>
 | 
			
		||||
        </customObject>
 | 
			
		||||
        <customObject id="420" customClass="NSFontManager"/>
 | 
			
		||||
    </objects>
 | 
			
		||||
</document>
 | 
			
		||||
@ -1,357 +0,0 @@
 | 
			
		||||
--
 | 
			
		||||
--  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 --show-error --output " & |file| & " " & |url| & fileName
 | 
			
		||||
        on error errorString
 | 
			
		||||
            error "An error occurred downloading:" & return & |url| & fileName & return & return & errorString
 | 
			
		||||
        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 errorString
 | 
			
		||||
            error "An error occurred downloading" & return & return & fileName & md5Ext & return & return & errorString
 | 
			
		||||
        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 targetName : "kvasd"
 | 
			
		||||
    
 | 
			
		||||
    on destination()
 | 
			
		||||
        return system attribute "TMPDIR"
 | 
			
		||||
    end destination
 | 
			
		||||
    
 | 
			
		||||
    on fetchEULA()
 | 
			
		||||
        return curl's download(serverPath,targetName  & "_eula.txt",my 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,my 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 (my destination() & targetName & "_eula.txt") as POSIX file to dest
 | 
			
		||||
    end saveLicense
 | 
			
		||||
    
 | 
			
		||||
    on printLicense()
 | 
			
		||||
        tell application "Finder" to ¬
 | 
			
		||||
            print (my destination() & targetName & "_eula.txt") as POSIX file
 | 
			
		||||
    end printLicense
 | 
			
		||||
    
 | 
			
		||||
    on cleanUp()
 | 
			
		||||
        tell application "Finder"
 | 
			
		||||
            if exists (my destination() & targetName & "_eula.txt") as POSIX file then
 | 
			
		||||
                delete (my destination() & targetName & "_eula.txt") as POSIX file
 | 
			
		||||
            end if
 | 
			
		||||
            if exists (my destination() & targetName) as POSIX file then
 | 
			
		||||
                delete (my destination() & targetName) as POSIX file
 | 
			
		||||
            end if
 | 
			
		||||
        end tell
 | 
			
		||||
    end cleanUp
 | 
			
		||||
end script
 | 
			
		||||
 | 
			
		||||
script WSJTAppDelegate
 | 
			
		||||
	property parent : class "NSObject"
 | 
			
		||||
    
 | 
			
		||||
    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
 | 
			
		||||
    global licenceAgreed
 | 
			
		||||
    
 | 
			
		||||
    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
 | 
			
		||||
                        do shell script "cp " & kvasd's destination() & kvasd's targetName & space & target
 | 
			
		||||
                        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
 | 
			
		||||
 | 
			
		||||
    --
 | 
			
		||||
    -- NSApplicationDelegate Protocol
 | 
			
		||||
    --
 | 
			
		||||
    on applicationWillFinishLaunching_(aNotification)
 | 
			
		||||
        try
 | 
			
		||||
--            mainWindow's registerForDraggedTypes_({"public.file-url"})
 | 
			
		||||
            
 | 
			
		||||
            set defaultNotificationCentre to current application's NSNotificationCenter's defaultCenter()
 | 
			
		||||
            set licenceAgreed to false
 | 
			
		||||
            eulaTextView's setEditable_(false)
 | 
			
		||||
            
 | 
			
		||||
            script downloadEula
 | 
			
		||||
                eulaTextView's setString_(read kvasd's fetchEULA())
 | 
			
		||||
            end script
 | 
			
		||||
            my doWithRetry(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 applicationWillTerminate_(sender)
 | 
			
		||||
        defaultNotificationCentre's removeObserver_(me)
 | 
			
		||||
        kvasd's cleanUp()
 | 
			
		||||
	end applicationWillTerminate_
 | 
			
		||||
    
 | 
			
		||||
    --
 | 
			
		||||
    -- NSDraggingDestination (NSWindow Delgate) Protocol (Not working on 10.7)
 | 
			
		||||
    --
 | 
			
		||||
    
 | 
			
		||||
    -- Accept Generic drag&drop sources
 | 
			
		||||
--    on draggingEntered_(sender)
 | 
			
		||||
--        return current application's NSDragOperationGeneric
 | 
			
		||||
--    end draggingEntered_
 | 
			
		||||
    
 | 
			
		||||
    -- Process a drop on our window
 | 
			
		||||
--    on performDragOperation_(sender)
 | 
			
		||||
--        try
 | 
			
		||||
--            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
 | 
			
		||||
--        on error errorString
 | 
			
		||||
--            abort(errorString)
 | 
			
		||||
--        end try
 | 
			
		||||
--        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 doWithRetry(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)
 | 
			
		||||
        try
 | 
			
		||||
            process()
 | 
			
		||||
            set bundlesToProcess to {}
 | 
			
		||||
            installButton's setEnabled_(false)
 | 
			
		||||
        on error errorString
 | 
			
		||||
            abort(errorString)
 | 
			
		||||
        end try
 | 
			
		||||
    end doInstall_
 | 
			
		||||
 | 
			
		||||
    -- handler called on eulaTextView scroll or view changes
 | 
			
		||||
    -- enables agree/install button once the bottom is reached
 | 
			
		||||
    on viewChanged_(aNotification)
 | 
			
		||||
        try
 | 
			
		||||
            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
 | 
			
		||||
        on error errorString
 | 
			
		||||
            abort(errorString)
 | 
			
		||||
        end try
 | 
			
		||||
    end viewChanged
 | 
			
		||||
 | 
			
		||||
    -- Do something with retries
 | 
			
		||||
    on doWithRetry(action)
 | 
			
		||||
        set done to false
 | 
			
		||||
        repeat until done
 | 
			
		||||
            try
 | 
			
		||||
                my progressAction(action)
 | 
			
		||||
                set done to true
 | 
			
		||||
            on error errorString
 | 
			
		||||
                set userCanceled to false
 | 
			
		||||
                try
 | 
			
		||||
                    set dialogResult to display alert errorString as warning ¬
 | 
			
		||||
                        buttons {"Cancel", "Retry"} default button "Retry" cancel button "Cancel"
 | 
			
		||||
                on error number -128
 | 
			
		||||
                    set userCanceled to true
 | 
			
		||||
                end try
 | 
			
		||||
                if userCanceled then
 | 
			
		||||
                    error "User canceled operation"
 | 
			
		||||
                end if
 | 
			
		||||
            end try
 | 
			
		||||
        end repeat
 | 
			
		||||
    end doWithRetry
 | 
			
		||||
 | 
			
		||||
    -- 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
 | 
			
		||||
 | 
			
		||||
    -- 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
 | 
			
		||||
@ -1,17 +0,0 @@
 | 
			
		||||
//
 | 
			
		||||
//  main.m
 | 
			
		||||
//  KVASD-installer
 | 
			
		||||
//
 | 
			
		||||
//  Created by Bill Somerville (G4WJS) on 22/11/2014.
 | 
			
		||||
//  Copyright (c) 2014 WSJT. All rights reserved.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#import <Cocoa/Cocoa.h>
 | 
			
		||||
 | 
			
		||||
#import <AppleScriptObjC/AppleScriptObjC.h>
 | 
			
		||||
 | 
			
		||||
int main(int argc, const char * argv[])
 | 
			
		||||
{
 | 
			
		||||
    [[NSBundle mainBundle] loadAppleScriptObjectiveCScripts];
 | 
			
		||||
    return NSApplicationMain(argc, argv);
 | 
			
		||||
}
 | 
			
		||||
@ -49,18 +49,6 @@ NEXT:
 | 
			
		||||
 | 
			
		||||
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 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.
 | 
			
		||||
 | 
			
		||||
@ -1,24 +1,3 @@
 | 
			
		||||
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.
 | 
			
		||||
======================================================
 | 
			
		||||
 | 
			
		||||
@ -40,7 +19,7 @@ The installer DMG is read only and shrunk to exactly the size of the contents, a
 | 
			
		||||
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
 | 
			
		||||
hdiutil convert wsjtx-1.7.0-rc1-Darwin.dmg -format UDRW -o rw.dmg
 | 
			
		||||
 | 
			
		||||
# expand the R/W copy to make room for changes
 | 
			
		||||
# first find the current number of sectors
 | 
			
		||||
@ -58,10 +37,10 @@ hdiutil resize -sectors 110000 rw.dmg
 | 
			
		||||
hdiutil attach rw.dmg
 | 
			
		||||
 | 
			
		||||
# change the hidden attribute on the background PNG
 | 
			
		||||
chflags nohidden /Volumes/wsjtx-1.4.0-rc1-Darwin/background.png
 | 
			
		||||
chflags nohidden /Volumes/wsjtx-1.7.0-rc1-Darwin/background.png
 | 
			
		||||
 | 
			
		||||
# make the .DS_Store file writeable
 | 
			
		||||
chmod 644 /Volumes/wsjtx-1.4.0-rc1-Darwin/.DS_Store
 | 
			
		||||
chmod 644 /Volumes/wsjtx-1.7.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
 | 
			
		||||
@ -73,19 +52,19 @@ chmod 644 /Volumes/wsjtx-1.4.0-rc1-Darwin/.DS_Store
 | 
			
		||||
# changes are saved.
 | 
			
		||||
 | 
			
		||||
# set the background PNG as a hidden file
 | 
			
		||||
chflags hidden /Volumes/wsjtx-1.4.0-rc1-Darwin/background.png
 | 
			
		||||
chflags hidden /Volumes/wsjtx-1.7.0-rc1-Darwin/background.png
 | 
			
		||||
 | 
			
		||||
# make the .DS_Store file read only
 | 
			
		||||
chmod 444 /Volumes/wsjtx-1.4.0-rc1-Darwin/.DS_Store
 | 
			
		||||
chmod 444 /Volumes/wsjtx-1.7.0-rc1-Darwin/.DS_Store
 | 
			
		||||
 | 
			
		||||
# update the custom .DS_Store file in the source repository (NOTE the file name)
 | 
			
		||||
cp /Volumes/wsjtx-1.4.0-rc1-Darwin/.DS_Store ~/src/wsjtx/wsjtx_DMG.DS_Store
 | 
			
		||||
cp /Volumes/wsjtx-1.7.0-rc1-Darwin/.DS_Store ~/src/wsjtx/wsjtx_DMG.DS_Store
 | 
			
		||||
 | 
			
		||||
# build a new package and try out the new installer to test your changes
 | 
			
		||||
# if all is well commit the changes
 | 
			
		||||
 | 
			
		||||
# dismount and eject the R/W DMG and discard it
 | 
			
		||||
hdiutil detach /Volumes/wsjtx-1.4.0-rc1-Darwin
 | 
			
		||||
hdiutil detach /Volumes/wsjtx-1.7.0-rc1-Darwin
 | 
			
		||||
rm rw.dmg
 | 
			
		||||
 | 
			
		||||
# That's all Folks!
 | 
			
		||||
@ -1,67 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>BuildMachineOSBuild</key>
 | 
			
		||||
	<string>12F45</string>
 | 
			
		||||
	<key>CFBundleDevelopmentRegion</key>
 | 
			
		||||
	<string>en</string>
 | 
			
		||||
	<key>CFBundleDocumentTypes</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>CFBundleTypeRole</key>
 | 
			
		||||
			<string>Viewer</string>
 | 
			
		||||
			<key>LSItemContentTypes</key>
 | 
			
		||||
			<array>
 | 
			
		||||
				<string>com.apple.application-bundle</string>
 | 
			
		||||
			</array>
 | 
			
		||||
		</dict>
 | 
			
		||||
	</array>
 | 
			
		||||
	<key>CFBundleExecutable</key>
 | 
			
		||||
	<string>KVASD-installer</string>
 | 
			
		||||
	<key>CFBundleIconFile</key>
 | 
			
		||||
	<string>AppIcon</string>
 | 
			
		||||
	<key>CFBundleIdentifier</key>
 | 
			
		||||
	<string>org.k1jt.KVASD-installer</string>
 | 
			
		||||
	<key>CFBundleInfoDictionaryVersion</key>
 | 
			
		||||
	<string>6.0</string>
 | 
			
		||||
	<key>CFBundleName</key>
 | 
			
		||||
	<string>KVASD-installer</string>
 | 
			
		||||
	<key>CFBundlePackageType</key>
 | 
			
		||||
	<string>APPL</string>
 | 
			
		||||
	<key>CFBundleShortVersionString</key>
 | 
			
		||||
	<string>1.0</string>
 | 
			
		||||
	<key>CFBundleSignature</key>
 | 
			
		||||
	<string>????</string>
 | 
			
		||||
	<key>CFBundleVersion</key>
 | 
			
		||||
	<string>1</string>
 | 
			
		||||
	<key>DTCompiler</key>
 | 
			
		||||
	<string>com.apple.compilers.llvm.clang.1_0</string>
 | 
			
		||||
	<key>DTPlatformBuild</key>
 | 
			
		||||
	<string>5A2053</string>
 | 
			
		||||
	<key>DTPlatformVersion</key>
 | 
			
		||||
	<string>GM</string>
 | 
			
		||||
	<key>DTSDKBuild</key>
 | 
			
		||||
	<string>13A595</string>
 | 
			
		||||
	<key>DTSDKName</key>
 | 
			
		||||
	<string>macosx10.9</string>
 | 
			
		||||
	<key>DTXcode</key>
 | 
			
		||||
	<string>0501</string>
 | 
			
		||||
	<key>DTXcodeBuild</key>
 | 
			
		||||
	<string>5A2053</string>
 | 
			
		||||
	<key>LSApplicationCategoryType</key>
 | 
			
		||||
	<string>public.app-category.utilities</string>
 | 
			
		||||
	<key>LSMinimumSystemVersion</key>
 | 
			
		||||
	<string>10.7</string>
 | 
			
		||||
	<key>NSHumanReadableCopyright</key>
 | 
			
		||||
	<string>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.</string>
 | 
			
		||||
	<key>NSMainNibFile</key>
 | 
			
		||||
	<string>MainMenu</string>
 | 
			
		||||
	<key>NSPrincipalClass</key>
 | 
			
		||||
	<string>NSApplication</string>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
@ -1 +0,0 @@
 | 
			
		||||
APPL????
 | 
			
		||||
@ -1,30 +0,0 @@
 | 
			
		||||
{\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.\
 | 
			
		||||
}
 | 
			
		||||
@ -1,9 +0,0 @@
 | 
			
		||||
NSIS Addons
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
This directory contains archives of NSIS plugins and includes that are
 | 
			
		||||
used in making the WSJT-X Windows  installer. The plugin DLLs are also
 | 
			
		||||
extracted and deployed in sub-directories  where they are added to the
 | 
			
		||||
project  NSIS plugin  path in  the project  CMakeCPackOptions.cmake.in
 | 
			
		||||
template which is in turn used in generating the NSIS installer script
 | 
			
		||||
from the CMake/Modules/NSIS.template.in template file.
 | 
			
		||||