From 2c038192f2483f79dd508ebec36c7bf8e4317d33 Mon Sep 17 00:00:00 2001 From: jiangzhh Date: Wed, 25 Dec 2024 10:41:27 +0800 Subject: [PATCH] init --- .gitignore | 27 ++ README.md | 21 + Translator.xcodeproj/project.pbxproj | 372 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/swiftpm/Package.resolved | 15 + Translator/AppDelegate.swift | 93 +++++ Translator/Constants.swift | 5 + Translator/EventMonitor.swift | 27 ++ .../AppIcon.appiconset/Contents.json | 68 ++++ .../icons8-itranslate-1024.png | Bin 0 -> 56725 bytes .../icons8-itranslate-128.png | Bin 0 -> 3980 bytes .../icons8-itranslate-16.png | Bin 0 -> 396 bytes .../icons8-itranslate-256 1.png | Bin 0 -> 9068 bytes .../icons8-itranslate-256.png | Bin 0 -> 9068 bytes .../icons8-itranslate-32 1.png | Bin 0 -> 947 bytes .../icons8-itranslate-32.png | Bin 0 -> 947 bytes .../icons8-itranslate-512 1.png | Bin 0 -> 23321 bytes .../icons8-itranslate-512.png | Bin 0 -> 23321 bytes .../icons8-itranslate-64.png | Bin 0 -> 1919 bytes Translator/Images.xcassets/Contents.json | 6 + .../TranslateMenuImage.imageset/Contents.json | 24 ++ .../icons8-global-40.png | Bin 0 -> 917 bytes Translator/Info.plist | 59 +++ Translator/MainMenu.xib | 41 ++ Translator/TranslateViewController.swift | 62 +++ Translator/TranslateViewController.xib | 43 ++ Translator/TranslateWebView.swift | 54 +++ license.md | 7 + 29 files changed, 939 insertions(+) create mode 100644 .gitignore create mode 100755 README.md create mode 100755 Translator.xcodeproj/project.pbxproj create mode 100755 Translator.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Translator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Translator.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100755 Translator/AppDelegate.swift create mode 100644 Translator/Constants.swift create mode 100755 Translator/EventMonitor.swift create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-1024.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-128.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-16.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-256 1.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-256.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-32 1.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-32.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-512 1.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-512.png create mode 100644 Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-64.png create mode 100755 Translator/Images.xcassets/Contents.json create mode 100644 Translator/Images.xcassets/TranslateMenuImage.imageset/Contents.json create mode 100644 Translator/Images.xcassets/TranslateMenuImage.imageset/icons8-global-40.png create mode 100755 Translator/Info.plist create mode 100755 Translator/MainMenu.xib create mode 100755 Translator/TranslateViewController.swift create mode 100755 Translator/TranslateViewController.xib create mode 100644 Translator/TranslateWebView.swift create mode 100644 license.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03eea50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint + +.DS_Store + +release \ No newline at end of file diff --git a/README.md b/README.md new file mode 100755 index 0000000..4a9c667 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# osx-translator + +MenuBar Translate is a very simple app that lets you have a quick shortcut to Google Translate in your OS X menu bar and integrate it with the OS X "Services" menu. + +NOTE: This project uses the code of [osx-menubar-translate](https://github.com/zetxek/osx-menubar-translate) under the MIT license. I want to customize many styles and features, which may not be consistent with the author's intention, so I decided to develop on my own branch, totally. If possible, I will contribute some meaningful features to the original repository. + +My version provides global keyboard shortcuts, a more beautiful interface and icons. More features will be added continuously. + +## Global keyboard shortcuts + +- activate app: `cmd + e`, configure in `Translator/Constants.swift` +- translate selected text: any, add a keyboard shortcut for the service at "Settings > Keyboard > Keyboard Shortcuts > Services > Translate Selected Text". + +## License + +MIT License, available in [license.md](license.md). + +## Thanks + +- CODES: [osx-menubar-translate](https://github.com/zetxek/osx-menubar-translate) +- ICONS: [icons8](https://icons8.com) diff --git a/Translator.xcodeproj/project.pbxproj b/Translator.xcodeproj/project.pbxproj new file mode 100755 index 0000000..2ec4b95 --- /dev/null +++ b/Translator.xcodeproj/project.pbxproj @@ -0,0 +1,372 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 0AC0CE191C81AEEF00305ACF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AC0CE141C81AEEF00305ACF /* AppDelegate.swift */; }; + 0AC0CE1A1C81AEEF00305ACF /* EventMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AC0CE151C81AEEF00305ACF /* EventMonitor.swift */; }; + 0AC0CE1C1C81AEEF00305ACF /* TranslateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AC0CE171C81AEEF00305ACF /* TranslateViewController.swift */; }; + 0AC0CE1D1C81AEEF00305ACF /* TranslateViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0AC0CE181C81AEEF00305ACF /* TranslateViewController.xib */; }; + 0AC0CE1F1C81AEF700305ACF /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0AC0CE1E1C81AEF700305ACF /* Images.xcassets */; }; + 0AC0CE271C81B02B00305ACF /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AC0CE261C81B02B00305ACF /* WebKit.framework */; }; + 5077E61A2CEA791500EFBF1B /* TranslateWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5077E6192CEA791500EFBF1B /* TranslateWebView.swift */; }; + D75DE19E2D1A62C200A3C977 /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = D75DE19D2D1A62C200A3C977 /* KeyboardShortcuts */; }; + D75DE1A02D1A62E500A3C977 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = D75DE19F2D1A62E500A3C977 /* Constants.swift */; }; + E7DE0D3B2344A24C00A9CBAD /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = E7DE0D3A2344A24C00A9CBAD /* MainMenu.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0AC0CE141C81AEEF00305ACF /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = Translator/AppDelegate.swift; sourceTree = SOURCE_ROOT; }; + 0AC0CE151C81AEEF00305ACF /* EventMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EventMonitor.swift; path = Translator/EventMonitor.swift; sourceTree = SOURCE_ROOT; }; + 0AC0CE171C81AEEF00305ACF /* TranslateViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TranslateViewController.swift; path = Translator/TranslateViewController.swift; sourceTree = SOURCE_ROOT; }; + 0AC0CE181C81AEEF00305ACF /* TranslateViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = TranslateViewController.xib; path = Translator/TranslateViewController.xib; sourceTree = SOURCE_ROOT; }; + 0AC0CE1E1C81AEF700305ACF /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Translator/Images.xcassets; sourceTree = SOURCE_ROOT; }; + 0AC0CE261C81B02B00305ACF /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + 5077E6192CEA791500EFBF1B /* TranslateWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TranslateWebView.swift; path = Translator/TranslateWebView.swift; sourceTree = SOURCE_ROOT; }; + 78A6BBCB1ADCB5EE00554D13 /* Translator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Translator.app; sourceTree = BUILT_PRODUCTS_DIR; }; + D75DE19F2D1A62E500A3C977 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Constants.swift; path = Translator/Constants.swift; sourceTree = SOURCE_ROOT; }; + E7DE0D382344A22D00A9CBAD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = Translator/Info.plist; sourceTree = SOURCE_ROOT; }; + E7DE0D3A2344A24C00A9CBAD /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainMenu.xib; path = Translator/MainMenu.xib; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 78A6BBC81ADCB5EE00554D13 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0AC0CE271C81B02B00305ACF /* WebKit.framework in Frameworks */, + D75DE19E2D1A62C200A3C977 /* KeyboardShortcuts in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 78A6BBC21ADCB5EE00554D13 = { + isa = PBXGroup; + children = ( + 0AC0CE261C81B02B00305ACF /* WebKit.framework */, + 78A6BBCD1ADCB5EE00554D13 /* Translator */, + 78A6BBCC1ADCB5EE00554D13 /* Products */, + ); + sourceTree = ""; + }; + 78A6BBCC1ADCB5EE00554D13 /* Products */ = { + isa = PBXGroup; + children = ( + 78A6BBCB1ADCB5EE00554D13 /* Translator.app */, + ); + name = Products; + sourceTree = ""; + }; + 78A6BBCD1ADCB5EE00554D13 /* Translator */ = { + isa = PBXGroup; + children = ( + 0AC0CE141C81AEEF00305ACF /* AppDelegate.swift */, + 0AC0CE151C81AEEF00305ACF /* EventMonitor.swift */, + 0AC0CE171C81AEEF00305ACF /* TranslateViewController.swift */, + 0AC0CE181C81AEEF00305ACF /* TranslateViewController.xib */, + E7DE0D3A2344A24C00A9CBAD /* MainMenu.xib */, + 5077E6192CEA791500EFBF1B /* TranslateWebView.swift */, + 0AC0CE1E1C81AEF700305ACF /* Images.xcassets */, + E7DE0D382344A22D00A9CBAD /* Info.plist */, + D75DE19F2D1A62E500A3C977 /* Constants.swift */, + ); + name = Translator; + path = Quotes; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 78A6BBCA1ADCB5EE00554D13 /* Translator */ = { + isa = PBXNativeTarget; + buildConfigurationList = 78A6BBE51ADCB5EE00554D13 /* Build configuration list for PBXNativeTarget "Translator" */; + buildPhases = ( + 78A6BBC71ADCB5EE00554D13 /* Sources */, + 78A6BBC81ADCB5EE00554D13 /* Frameworks */, + 78A6BBC91ADCB5EE00554D13 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Translator; + productName = Quotes; + productReference = 78A6BBCB1ADCB5EE00554D13 /* Translator.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 78A6BBC31ADCB5EE00554D13 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftMigration = 0720; + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 1620; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 78A6BBCA1ADCB5EE00554D13 = { + CreatedOnToolsVersion = 6.3; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 78A6BBC61ADCB5EE00554D13 /* Build configuration list for PBXProject "Translator" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 78A6BBC21ADCB5EE00554D13; + packageReferences = ( + D75DE19C2D1A62C200A3C977 /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */, + ); + productRefGroup = 78A6BBCC1ADCB5EE00554D13 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 78A6BBCA1ADCB5EE00554D13 /* Translator */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 78A6BBC91ADCB5EE00554D13 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0AC0CE1D1C81AEEF00305ACF /* TranslateViewController.xib in Resources */, + 0AC0CE1F1C81AEF700305ACF /* Images.xcassets in Resources */, + E7DE0D3B2344A24C00A9CBAD /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 78A6BBC71ADCB5EE00554D13 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D75DE1A02D1A62E500A3C977 /* Constants.swift in Sources */, + 5077E61A2CEA791500EFBF1B /* TranslateWebView.swift in Sources */, + 0AC0CE1A1C81AEEF00305ACF /* EventMonitor.swift in Sources */, + 0AC0CE191C81AEEF00305ACF /* AppDelegate.swift in Sources */, + 0AC0CE1C1C81AEEF00305ACF /* TranslateViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 78A6BBE31ADCB5EE00554D13 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = 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_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 78A6BBE41ADCB5EE00554D13 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = 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_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + }; + name = Release; + }; + 78A6BBE61ADCB5EE00554D13 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = CP4J269SGB; + INFOPLIST_FILE = Translator/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + MARKETING_VERSION = 1.0.0; + PRODUCT_BUNDLE_IDENTIFIER = site.akynazh.Translator; + PRODUCT_NAME = Translator; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 78A6BBE71ADCB5EE00554D13 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = CP4J269SGB; + INFOPLIST_FILE = Translator/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + MARKETING_VERSION = 1.0.0; + PRODUCT_BUNDLE_IDENTIFIER = site.akynazh.Translator; + PRODUCT_NAME = Translator; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 78A6BBC61ADCB5EE00554D13 /* Build configuration list for PBXProject "Translator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 78A6BBE31ADCB5EE00554D13 /* Debug */, + 78A6BBE41ADCB5EE00554D13 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 78A6BBE51ADCB5EE00554D13 /* Build configuration list for PBXNativeTarget "Translator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 78A6BBE61ADCB5EE00554D13 /* Debug */, + 78A6BBE71ADCB5EE00554D13 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + D75DE19C2D1A62C200A3C977 /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/sindresorhus/KeyboardShortcuts"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.2.4; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + D75DE19D2D1A62C200A3C977 /* KeyboardShortcuts */ = { + isa = XCSwiftPackageProductDependency; + package = D75DE19C2D1A62C200A3C977 /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */; + productName = KeyboardShortcuts; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 78A6BBC31ADCB5EE00554D13 /* Project object */; +} diff --git a/Translator.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Translator.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100755 index 0000000..919434a --- /dev/null +++ b/Translator.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Translator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Translator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Translator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Translator.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Translator.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..09c8646 --- /dev/null +++ b/Translator.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "69c39523ac0471922b625cc56b8722155cfd2afd660bdd4f5ff67335b5b87714", + "pins" : [ + { + "identity" : "keyboardshortcuts", + "kind" : "remoteSourceControl", + "location" : "https://github.com/sindresorhus/KeyboardShortcuts", + "state" : { + "revision" : "7ecc38bb6edf7d087d30e737057b8d8a9b7f51eb", + "version" : "2.2.4" + } + } + ], + "version" : 3 +} diff --git a/Translator/AppDelegate.swift b/Translator/AppDelegate.swift new file mode 100755 index 0000000..424adcb --- /dev/null +++ b/Translator/AppDelegate.swift @@ -0,0 +1,93 @@ +import Cocoa +import KeyboardShortcuts + +@NSApplicationMain +class AppDelegate: NSObject, NSApplicationDelegate { + @IBOutlet weak var statusMenu: NSMenu! + + let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength) + let popover = NSPopover() + let translateViewController = TranslateViewController(nibName: "TranslateViewController", bundle: nil) + var eventMonitor: EventMonitor? + + func applicationDidFinishLaunching(_ notification: Notification) { + NSLog("MenuTranslate: starting") + + KeyboardShortcuts.onKeyUp(for: .toggleApp) { + self.showPopover(sender: nil) + } + + if let button = statusItem.button { + button.image = NSImage(named:NSImage.Name("TranslateMenuImage")) + button.action = #selector(statusItemButtonActivated(sender:)) + button.sendAction(on: [ .leftMouseDown, .leftMouseUp, .rightMouseDown, .rightMouseUp ]) + } + + popover.contentViewController = translateViewController + + eventMonitor = EventMonitor(mask: [.leftMouseDown, .rightMouseDown]) { [unowned self] event in + if self.popover.isShown { + self.closePopover(sender: event) + } + } + + eventMonitor?.start() + + NSApplication.shared.servicesProvider = self + NSLog("MenuTranslate: started") + + } + + @IBAction + func statusItemButtonActivated(sender: AnyObject?) { + let buttonMask = NSEvent.pressedMouseButtons + var primaryDown = ((buttonMask & (1 << 0)) != 0) + var secondaryDown = ((buttonMask & (1 << 1)) != 0) + + // Treat a control-click as a secondary click + if (primaryDown && (NSEvent.modifierFlags == NSEvent.ModifierFlags.control)) { + primaryDown = false; + secondaryDown = true; + } + + if (primaryDown) { + if popover.isShown { + closePopover(sender: sender) + } else { + showPopover(sender: sender) + } + } else if (secondaryDown) { + statusItem.menu = self.statusMenu + statusItem.button?.performClick(nil) + statusItem.menu = nil + } + } + + func showPopover(sender: AnyObject?, keyword : String? = nil) { + if let button = statusItem.button { + popover.show(relativeTo: button.bounds, of: button, preferredEdge: NSRectEdge.minY) + } + eventMonitor?.start() + } + + func closePopover(sender: AnyObject?) { + popover.performClose(sender) + eventMonitor?.stop() + } + + @objc func translateService(_ pasteboard: NSPasteboard, userData: String, error: AutoreleasingUnsafeMutablePointer) { + let text = pasteboard.string(forType: .string) + translateViewController.loadText(text: text!) + self.showPopover(sender: nil, keyword: text) + } + + @IBAction func quitApp(_ sender: Any) { + NSApplication.shared.terminate(self) + } + + @IBAction + func aboutMenuActivated(sender: AnyObject?) { + NSWorkspace().open(URL(string: "https://github.com/akynazh/osx-translator")!) + } + +} diff --git a/Translator/Constants.swift b/Translator/Constants.swift new file mode 100644 index 0000000..25769f3 --- /dev/null +++ b/Translator/Constants.swift @@ -0,0 +1,5 @@ +import KeyboardShortcuts + +extension KeyboardShortcuts.Name { + static let toggleApp = Self("toggleApp", default: .init(.e, modifiers: [.command])) +} diff --git a/Translator/EventMonitor.swift b/Translator/EventMonitor.swift new file mode 100755 index 0000000..9fc9dff --- /dev/null +++ b/Translator/EventMonitor.swift @@ -0,0 +1,27 @@ +import Cocoa + +public class EventMonitor { + private var monitor: AnyObject? + private let mask: NSEvent.EventTypeMask + private let handler: (NSEvent?) -> () + + public init(mask: NSEvent.EventTypeMask, handler: @escaping (NSEvent?) -> ()) { + self.mask = mask + self.handler = handler + } + + deinit { + self.stop() + } + + public func start() { + self.monitor = NSEvent.addGlobalMonitorForEvents(matching: mask, handler: handler) as AnyObject? + } + + public func stop() { + if self.monitor != nil { + NSEvent.removeMonitor(self.monitor!) + self.monitor = nil + } + } +} diff --git a/Translator/Images.xcassets/AppIcon.appiconset/Contents.json b/Translator/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..78b33e1 --- /dev/null +++ b/Translator/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "filename" : "icons8-itranslate-16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "icons8-itranslate-32 1.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "icons8-itranslate-32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "icons8-itranslate-64.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "icons8-itranslate-128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "icons8-itranslate-256.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "icons8-itranslate-256 1.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "icons8-itranslate-512.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "icons8-itranslate-512 1.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "icons8-itranslate-1024.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-1024.png b/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..b467410496d544774e9131374f1edf8e2cbb28b6 GIT binary patch literal 56725 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 a9q?6Z$WZyRWlGCC#FdF8T6Wvfh=2GX`D43i5T` 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

8$3WP?s>-ju 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 BWIX@? literal 0 HcmV?d00001 diff --git a/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-128.png b/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-128.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf314f54a129a97b74f608c0e9f5c5ee349dafd GIT binary patch literal 3980 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 literal 0 HcmV?d00001 diff --git a/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-256.png b/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-256.png new file mode 100644 index 0000000000000000000000000000000000000000..22d146b7104ecbed9ed8c3aa0a8f258c9350b056 GIT binary patch literal 9068 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 literal 0 HcmV?d00001 diff --git a/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-32 1.png b/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-32 1.png new file mode 100644 index 0000000000000000000000000000000000000000..2b13f5139c7b93e8d14815e30432c13a4e87daf2 GIT binary patch literal 947 zcmV;k15EshP)2xTo#Xb~-Iqz@r2Cw?)Y=~$oZ21*q0yoTV$A?E#+@)>{w3OTEg z78--cgVojp4c0;ZGwt(`Gcd4KBOZ4gXN!yZt~79uPzHjN!ZUkv#^Yg)yjBOqwQBz( z`Lz$z7rDRDTZ-aV^W` z@?+!U+g;|2LVhooYv3sxR2G0e%Ts0#>0Jg!T_a;aRKJAWl?XuE=OJr3Eh(V>lDl|P z1HBNQkVbwkFH?L?k1i^pMTrZIG}00P1w1eQlqW6n{9quJ9o^fJ8{1bYFFe^(KvyF# zIAe5F1ZFY-$k`O|xia)QI<0|kTY&V#1-c|8-=S}BDa12ndOYq{K)GfCY)Gmpi&_jv7Hq!dDpt4l;Q~h(6aF*@N6_7ZMN{6H~<>ym6fCQk{rJc z^{*xe06b@TL7({DP#A;?gWdv9nv78K3kEyU`=K zE!gJ6Pl|lczpN13rQlS`n<9kRu8^-p^gQkvAK#{tKDJbfwa3H86+nwF@cGEu2~&Ox zrP!2Zo-FKZ&%dC6KZUg<+j1|^$ZOJ2q_IeYk)VuiMo4$Uy;*5orWs+rtE?u}1EA}) zV*z2R8PJSaFRfQHr3e6crO=M$jA_T_a{ijU9YdXg#I#fz5r4Wwoicn#n=T9_Dc?U~ zh7_VsIb)u^hUIk!l5{qoYB-W1El6XL*Qk^a2Ntg~;1Z8yvSf5_ARHN1c%?X$n(t(C zQY)Oel>umz;Uh7KCP}hM0yP#u0Yq5sHuc9uEN^&ubcvrNSpN3cOmxKh-1)y8=MSHa VyN*i^4WR%4002ovPDHLkV1jRRsCfVY literal 0 HcmV?d00001 diff --git a/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-32.png b/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-32.png new file mode 100644 index 0000000000000000000000000000000000000000..2b13f5139c7b93e8d14815e30432c13a4e87daf2 GIT binary patch literal 947 zcmV;k15EshP)2xTo#Xb~-Iqz@r2Cw?)Y=~$oZ21*q0yoTV$A?E#+@)>{w3OTEg z78--cgVojp4c0;ZGwt(`Gcd4KBOZ4gXN!yZt~79uPzHjN!ZUkv#^Yg)yjBOqwQBz( z`Lz$z7rDRDTZ-aV^W` z@?+!U+g;|2LVhooYv3sxR2G0e%Ts0#>0Jg!T_a;aRKJAWl?XuE=OJr3Eh(V>lDl|P z1HBNQkVbwkFH?L?k1i^pMTrZIG}00P1w1eQlqW6n{9quJ9o^fJ8{1bYFFe^(KvyF# zIAe5F1ZFY-$k`O|xia)QI<0|kTY&V#1-c|8-=S}BDa12ndOYq{K)GfCY)Gmpi&_jv7Hq!dDpt4l;Q~h(6aF*@N6_7ZMN{6H~<>ym6fCQk{rJc z^{*xe06b@TL7({DP#A;?gWdv9nv78K3kEyU`=K zE!gJ6Pl|lczpN13rQlS`n<9kRu8^-p^gQkvAK#{tKDJbfwa3H86+nwF@cGEu2~&Ox zrP!2Zo-FKZ&%dC6KZUg<+j1|^$ZOJ2q_IeYk)VuiMo4$Uy;*5orWs+rtE?u}1EA}) zV*z2R8PJSaFRfQHr3e6crO=M$jA_T_a{ijU9YdXg#I#fz5r4Wwoicn#n=T9_Dc?U~ zh7_VsIb)u^hUIk!l5{qoYB-W1El6XL*Qk^a2Ntg~;1Z8yvSf5_ARHN1c%?X$n(t(C zQY)Oel>umz;Uh7KCP}hM0yP#u0Yq5sHuc9uEN^&ubcvrNSpN3cOmxKh-1)y8=MSHa VyN*i^4WR%4002ovPDHLkV1jRRsCfVY literal 0 HcmV?d00001 diff --git a/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-512 1.png b/Translator/Images.xcassets/AppIcon.appiconset/icons8-itranslate-512 1.png new file mode 100644 index 0000000000000000000000000000000000000000..577a5fbd8ecd6c0b43278bdb376db73801fe0101 GIT binary patch literal 23321 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�r2UNDM92v;wV84^jX~i z(7^j+nL(t#jk%sn4FJ+JiOnGJfqI(33*u~)hqEJw%-x`byXUVhd|9HzQD zLfXBi%NTJ##SM)b=O;47olU<3>?y81*iqr@pY($>0iwdL%mx5uD8fp?kc7W7Mgp3; z217t=t1G}vcL1Fzg~J89D^@r>K!MQ-C-engW&pWN0sm}RFO$k^eG_J;5#>iGy$WH|F@aGY7d=kH$muW_b4*MxF2~|T?LhYNQ{H1zBZXESDM#0G*bUbm<+SjZz9LD}lGvoEA4y>t5+xyuS_py$&L+kk2$6 z0PRk?SBewzjub0=AHgY)73|sa++Tp#XqBum(%CsmiYprV>9E3xS3dt?NK0ed{TgMZ zvB3THvo+=CG)`%3ptD7;2;(B%Yv@w#yeKjS3Y2*fa<%;4l0HYmoj<^5xT%$02ot#9mV|3Q3cL*&yMZ zTcBNo007!itwF+5crnj>Z4DBeQ!)|zd`4<@Ra<1dly{sK8K<;f;NE!JK7$q+6_LtL zs27fi$5=~~lv8^EnpfS)iE{*ka$aNG5k=Oc4n4cSV*X(lilg= zs;{fMs;erOTc%}7CjiZ17_PV0?v_z37T3wQTmxx^we|pjdnCt5PLrIC4EZ)DYpk{V zWzRwYYXWc%z}FZ+vq=NM7m{a%$Gjl3)@~;`k^tZXfDQmB0E{MpePgZNR#$Mwm{TMt zm5^}&Pu2hD`pyMGunNGi0xxUF)%r;}NL|1IxT^0JfbM)gzZ$?tFDwj08{J2;2w=(q z9F;vJd-Qz;aHS@2Bs)pYIELQ=9CV=Dm5|#Bhr6TJwfVgOez@;5Vx2jG3xZ&?*8s_% zBzGv_kDbsd0BaI>6af5oJO&l;osMUjhcRYjwfI&7c<&hhvDUVzxh9g|9P=k>i~u}y zd?vI9OPCVgZtktf%#6-jds><1Rz%<~HFrLZ7s-oi{muxlK0jxSIa!VNe4P75@+iqx zKL89Ur|Hyl6-K85I1u4=%*iOn$xK=lN2oRkvwovB6(Grn4Fvcgiw4W)b%8d{WZoo0 z8O-ZVIi#*k-2AXIb7hhjz{foR*DGk)dtOiKY5(o%^%0?hQo4Lx6bwlKx2OxB5^H!DDrH&dLX+dD~WsnDP>^V0GByr=^;fcs1T zsmn!@1^1vYo@Ak#bjxIjg*wFOq_>uI%WLtS_dHkE>V$Qo&I#*CRSBz*#G{0ie^90C z`AR$rg+icG{zq{szpL;zR0S?lZpIZ&ZR!g2RoYMTZqxzfg;GV+bj{_bl!i)(FudW) z&T?@sTC~=NG5bnhds5WLl$~<$%Qb;h!a7n4_ZRvJa|d{pP`Hcd9?#X2q+KCxi-aIM zD&`VzbPc6SvF>#khFf#3` + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + LSUIElement + + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + NSServices + + + NSMenuItem + + default + Translate Selected Text + + NSMessage + translateService + NSPortName + MenuTranslate + NSRequiredContext + + NSServiceCategory + public.item + + NSSendTypes + + NSStringPboardType + + + + + diff --git a/Translator/MainMenu.xib b/Translator/MainMenu.xib new file mode 100755 index 0000000..6f28387 --- /dev/null +++ b/Translator/MainMenu.xib @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + diff --git a/Translator/TranslateViewController.swift b/Translator/TranslateViewController.swift new file mode 100755 index 0000000..f6431b6 --- /dev/null +++ b/Translator/TranslateViewController.swift @@ -0,0 +1,62 @@ +import Cocoa +import WebKit + +class TranslateViewController: NSViewController, WKNavigationDelegate { + @IBOutlet var webView: TranslateWebView! + @IBOutlet var webViewContainer: NSView! + @IBOutlet var progressIndicator: NSProgressIndicator! + + @IBOutlet var popOverViewController: NSPopover! + + override var acceptsFirstResponder: Bool { return false } + + var urlLoaded = false + let defaultUrl = "https://translate.google.com?sl=auto&tl=zh-CN&text=" + let url="https://translate.google.com.hk/?hl=en&sl=auto&tl=zh-CN&text=yonder&op=translate" + + + override func viewWillAppear() { + super.viewWillAppear() + + progressIndicator.display() + + if (!self.urlLoaded) { + self.urlLoaded = true + webView.load(NSURLRequest(url: NSURL(string: defaultUrl)! as URL) as URLRequest) + } + } + + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + progressIndicator.isHidden = true + } + + + public func loadText(text: String){ + if (webView != nil){ + webView.load(getTranslateURL(textToTranslate: text)) + } + } + + public func getTranslateURL(textToTranslate: String) -> URLRequest{ + + var allowedQueryParamAndKey = NSCharacterSet.urlQueryAllowed + allowedQueryParamAndKey.remove(charactersIn: ";/?:@&=+$, ") + let sanitizedInput = textToTranslate.addingPercentEncoding(withAllowedCharacters: allowedQueryParamAndKey) ?? textToTranslate + + let urlString = String(format: "%@%@", defaultUrl, sanitizedInput) + let url = URL(string: urlString) + return NSURLRequest(url: url ?? URL(string: defaultUrl)!) as URLRequest + } + + public override func keyDown(with event: NSEvent) { + switch event.modifierFlags.intersection(.deviceIndependentFlagsMask) { + case [.command] where event.characters == "c", + [.command ] where event.characters == "v", + [.command ] where event.characters == "a": + () + default: + break + } + } + +} diff --git a/Translator/TranslateViewController.xib b/Translator/TranslateViewController.xib new file mode 100755 index 0000000..5b21fb4 --- /dev/null +++ b/Translator/TranslateViewController.xib @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Translator/TranslateWebView.swift b/Translator/TranslateWebView.swift new file mode 100644 index 0000000..db85c96 --- /dev/null +++ b/Translator/TranslateWebView.swift @@ -0,0 +1,54 @@ +import WebKit + +class TranslateWebView: WKWebView { + + override var acceptsFirstResponder: Bool { return true } + + override func becomeFirstResponder() -> Bool { + return true + } + + override func keyDown(with event: NSEvent) { + + switch event.modifierFlags.intersection(.deviceIndependentFlagsMask) { + case [.command] where event.characters == "c": + self.copy(event) + case [.command] where event.characters == "v": + self.paste(event) + case [.command] where event.characters == "a": + self.selectAll(event) + default: + break + } + + super.keyDown(with: event) + } + + public func keyPress(event: NSEvent){ + super.keyDown(with: event) + } + + @IBAction override func selectAll(_ sender: Any?) { + super.selectAll(sender) + } + + @IBAction func copy(_ sender: Any?) { + let pasteboard = NSPasteboard.general + pasteboard.clearContents() + + let script = "window.getSelection().toString()"; + self.evaluateJavaScript(script){ selectedText, error in + pasteboard.setString(selectedText as! String, forType: .string) + } + } + + @IBAction func paste(_ sender: Any?) { + let pasteboard = NSPasteboard.general + if let copiedString = pasteboard.string(forType: .string) { + let javascript = "document.execCommand('insertText', false, '\(copiedString)');" + self.evaluateJavaScript(javascript, completionHandler: nil) + } + } + + +} diff --git a/license.md b/license.md new file mode 100644 index 0000000..17fd12c --- /dev/null +++ b/license.md @@ -0,0 +1,7 @@ +Copyright 2018 Adrián Moreno Peña + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.