diff --git a/Translate Menu.xcodeproj/project.pbxproj b/Translate Menu.xcodeproj/project.pbxproj index 94d425e..22087d1 100755 --- a/Translate Menu.xcodeproj/project.pbxproj +++ b/Translate Menu.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ 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 */; }; E7DE0D3B2344A24C00A9CBAD /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = E7DE0D3A2344A24C00A9CBAD /* MainMenu.xib */; }; /* End PBXBuildFile section */ @@ -23,6 +24,7 @@ 0AC0CE181C81AEEF00305ACF /* TranslateViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = TranslateViewController.xib; path = "Translate Menu/TranslateViewController.xib"; sourceTree = SOURCE_ROOT; }; 0AC0CE1E1C81AEF700305ACF /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "Translate Menu/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; path = TranslateWebView.swift; sourceTree = SOURCE_ROOT; }; 78A6BBCB1ADCB5EE00554D13 /* Translate Menu.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Translate Menu.app"; sourceTree = BUILT_PRODUCTS_DIR; }; E7DE0D382344A22D00A9CBAD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "Translate Menu/Info.plist"; sourceTree = SOURCE_ROOT; }; E7DE0D3A2344A24C00A9CBAD /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainMenu.xib; path = "Translate Menu/MainMenu.xib"; sourceTree = SOURCE_ROOT; }; @@ -65,6 +67,7 @@ 0AC0CE171C81AEEF00305ACF /* TranslateViewController.swift */, 0AC0CE181C81AEEF00305ACF /* TranslateViewController.xib */, E7DE0D3A2344A24C00A9CBAD /* MainMenu.xib */, + 5077E6192CEA791500EFBF1B /* TranslateWebView.swift */, 0AC0CE1E1C81AEF700305ACF /* Images.xcassets */, E7DE0D382344A22D00A9CBAD /* Info.plist */, ); @@ -147,6 +150,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5077E61A2CEA791500EFBF1B /* TranslateWebView.swift in Sources */, 0AC0CE1A1C81AEEF00305ACF /* EventMonitor.swift in Sources */, 0AC0CE191C81AEEF00305ACF /* AppDelegate.swift in Sources */, 0AC0CE1C1C81AEEF00305ACF /* TranslateViewController.swift in Sources */, diff --git a/Translate Menu/AppDelegate.swift b/Translate Menu/AppDelegate.swift index 67c37c0..a0ff1f7 100755 --- a/Translate Menu/AppDelegate.swift +++ b/Translate Menu/AppDelegate.swift @@ -106,4 +106,12 @@ class AppDelegate: NSObject, NSApplicationDelegate { @IBAction func quitApp(_ sender: Any) { NSApplication.shared.terminate(self) } + + + @IBAction + func aboutMenuActivated(sender: AnyObject?) { + NSLog("MenuTranslate: opening github site") + NSWorkspace().open(URL(string: "https://github.com/zetxek/osx-menubar-translate")!) + } + } diff --git a/Translate Menu/MainMenu.xib b/Translate Menu/MainMenu.xib index 3547096..a54ce7f 100755 --- a/Translate Menu/MainMenu.xib +++ b/Translate Menu/MainMenu.xib @@ -1,6 +1,7 @@ + @@ -16,7 +17,6 @@ - @@ -24,6 +24,9 @@ + + + diff --git a/Translate Menu/TranslateViewController.swift b/Translate Menu/TranslateViewController.swift index f3494a3..b95bb97 100755 --- a/Translate Menu/TranslateViewController.swift +++ b/Translate Menu/TranslateViewController.swift @@ -22,19 +22,24 @@ import Cocoa import WebKit -class TranslateViewController: NSViewController { - @IBOutlet var webView: WKWebView! +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 true } + override var acceptsFirstResponder: Bool { return false } var urlLoaded = false let defaultUrl = "https://translate.google.com?text=" + override func viewWillAppear() { super.viewWillAppear() NSLog("TranslateViewController: willAppear") + progressIndicator.display() if (!self.urlLoaded) { NSLog("TranslateViewController: loadURL") @@ -43,6 +48,12 @@ class TranslateViewController: NSViewController { } } + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + NSLog("URL did Finish") + progressIndicator.isHidden = true + } + + public func loadText(text: String){ NSLog("TranslateViewController, Loading text: " + text) if (webView != nil){ @@ -61,4 +72,22 @@ class TranslateViewController: NSViewController { return NSURLRequest(url: url ?? URL(string: defaultUrl)!) as URLRequest } + + public override func keyDown(with event: NSEvent) { + NSLog("keyDown in TranslateviewController: " + (event.characters ?? "") ) + switch event.modifierFlags.intersection(.deviceIndependentFlagsMask) { + case [.command] where event.characters == "c", + [.command ] where event.characters == "v", + [.command ] where event.characters == "a": + print("cmd + c / v / a") + default: + break + } + + var logMsg = "key = " + (event.charactersIgnoringModifiers + ?? "") + logMsg += "\ncharacter = " + (event.characters ?? "") + NSLog(logMsg) + } + } diff --git a/Translate Menu/TranslateViewController.xib b/Translate Menu/TranslateViewController.xib index 0547bd5..1a46e21 100755 --- a/Translate Menu/TranslateViewController.xib +++ b/Translate Menu/TranslateViewController.xib @@ -1,31 +1,41 @@ - + - - + + + + + - + - + + + + + + + + diff --git a/TranslateWebView.swift b/TranslateWebView.swift new file mode 100644 index 0000000..983ce09 --- /dev/null +++ b/TranslateWebView.swift @@ -0,0 +1,69 @@ +// +// TranslateWebView.swift +// Translate Menu +// +// Created by Adrián Moreno Peña on 17/11/2024. +// Copyright © 2024 Adrian Moreno Peña. All rights reserved. +// + +import WebKit + +class TranslateWebView: WKWebView { + + override var acceptsFirstResponder: Bool { return true } + override func becomeFirstResponder() -> Bool { + return true + } + + override func keyDown(with event: NSEvent) { + NSLog("keyDown translateWebView: " + (event.characters ?? "") ) + + + switch event.modifierFlags.intersection(.deviceIndependentFlagsMask) { + case [.command] where event.characters == "c": + NSLog("c -> copy") + self.copy(event) + case [.command] where event.characters == "v": + self.paste(event) + default: + break + } + + if [48, 34, 40, 4, 1, 3, 32].contains(event.keyCode) { + // no funk + } else { + NSLog("super key down") + super.keyDown(with: event) + } + + + + } + + public func keyPress(event: NSEvent){ + super.keyDown(with: event) + } + + + @IBAction func copy(_ sender: Any?) { + // Implement your copy logic here + NSLog("copy!") + let pasteboard = NSPasteboard.general + pasteboard.clearContents() + pasteboard.setString("Your data to copy", forType: .string) + } + + @IBAction func paste(_ sender: Any?) { + NSLog("paste!") + + // Implement your paste logic here + let pasteboard = NSPasteboard.general + if let copiedString = pasteboard.string(forType: .string) { + // Use the copied string + print("Pasted: \(copiedString)") + pasteboard. + } + } + + +}