Skip to content

Commit

Permalink
Attempt to fix copy-paste
Browse files Browse the repository at this point in the history
  • Loading branch information
zetxek committed Nov 17, 2024
1 parent 5321024 commit 0a98b8e
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 9 deletions.
4 changes: 4 additions & 0 deletions Translate Menu.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -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 */

Expand All @@ -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; };
Expand Down Expand Up @@ -65,6 +67,7 @@
0AC0CE171C81AEEF00305ACF /* TranslateViewController.swift */,
0AC0CE181C81AEEF00305ACF /* TranslateViewController.xib */,
E7DE0D3A2344A24C00A9CBAD /* MainMenu.xib */,
5077E6192CEA791500EFBF1B /* TranslateWebView.swift */,
0AC0CE1E1C81AEF700305ACF /* Images.xcassets */,
E7DE0D382344A22D00A9CBAD /* Info.plist */,
);
Expand Down Expand Up @@ -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 */,
Expand Down
8 changes: 8 additions & 0 deletions Translate Menu/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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")!)
}

}
5 changes: 4 additions & 1 deletion Translate Menu/MainMenu.xib
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
</dependencies>
<objects>
Expand All @@ -16,14 +17,16 @@
<outlet property="statusMenu" destination="CJx-Hc-3bo" id="ECK-aB-8Hl"/>
</connections>
</customObject>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu id="CJx-Hc-3bo">
<items>
<menuItem title="Version XXX" id="Lwn-HC-wyy">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="About Translate Menu" id="OqD-PK-giP">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="aboutMenuActivatedWithSender:" target="-1" id="gIz-wT-ijM"/>
</connections>
</menuItem>
<menuItem title="Quit Translate Menu" id="6XE-G3-hw7">
<modifierMask key="keyEquivalentModifierMask"/>
Expand Down
35 changes: 32 additions & 3 deletions Translate Menu/TranslateViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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){
Expand All @@ -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)
}

}
20 changes: 15 additions & 5 deletions Translate Menu/TranslateViewController.xib
Original file line number Diff line number Diff line change
@@ -1,31 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
<plugIn identifier="com.apple.WebKit2IBPlugin" version="21507"/>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
<plugIn identifier="com.apple.WebKit2IBPlugin" version="23504"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="TranslateViewController" customModule="Translate_Menu" customModuleProvider="target">
<connections>
<outlet property="progressIndicator" destination="uWu-yJ-6n1" id="rzE-U3-Qhp"/>
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
<outlet property="webView" destination="1Pe-3f-qfo" id="I0r-Gt-9a6"/>
<outlet property="webViewContainer" destination="Hz6-mo-xeY" id="7dh-PG-qrH"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="Hz6-mo-xeY">
<customView id="Hz6-mo-xeY" userLabel="PlaceholderView">
<rect key="frame" x="0.0" y="0.0" width="800" height="400"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<wkWebView wantsLayer="YES" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1Pe-3f-qfo">
<wkWebView wantsLayer="YES" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1Pe-3f-qfo" userLabel="WebView" customClass="TranslateWebView" customModule="Translate_Menu">
<rect key="frame" x="0.0" y="0.0" width="800" height="400"/>
<autoresizingMask key="autoresizingMask"/>
<wkWebViewConfiguration key="configuration">
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
<wkPreferences key="preferences"/>
</wkWebViewConfiguration>
<connections>
<outlet property="navigationDelegate" destination="-2" id="GnZ-uB-oc0"/>
</connections>
</wkWebView>
<progressIndicator fixedFrame="YES" maxValue="100" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="uWu-yJ-6n1">
<rect key="frame" x="392" y="192" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
</progressIndicator>
</subviews>
<point key="canvasLocation" x="139" y="154"/>
</customView>
Expand Down
69 changes: 69 additions & 0 deletions TranslateWebView.swift
Original file line number Diff line number Diff line change
@@ -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.
}
}


}

0 comments on commit 0a98b8e

Please sign in to comment.