Skip to content

Commit

Permalink
Implement Reverso Context #19
Browse files Browse the repository at this point in the history
Speak selected text by Cmd in Safari
Rename Translator with GTranslator
  • Loading branch information
filimo committed Oct 10, 2019
1 parent 7531254 commit baf30b0
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 38 deletions.
24 changes: 12 additions & 12 deletions ReaderTranslator.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
F0AA69D4232E9762007CC07B /* ReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69D2232E9762007CC07B /* ReaderView.swift */; };
F0AA69D5232E9762007CC07B /* StatusBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69D3232E9762007CC07B /* StatusBarView.swift */; };
F0AA69DE232E97B0007CC07B /* SpeechSynthesizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DA232E97AF007CC07B /* SpeechSynthesizer.swift */; };
F0AA69DF232E97B0007CC07B /* Translator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DB232E97AF007CC07B /* Translator.swift */; };
F0AA69DF232E97B0007CC07B /* GTranslator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DB232E97AF007CC07B /* GTranslator.swift */; };
F0AA69E0232E97B0007CC07B /* WKRepresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DC232E97B0007CC07B /* WKRepresenter.swift */; };
F0AA69E1232E97B0007CC07B /* PDFKitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DD232E97B0007CC07B /* PDFKitView.swift */; };
F0AB12A3233F5798005B9F2A /* ReaderView_PDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AB12A2233F5798005B9F2A /* ReaderView_PDF.swift */; };
Expand All @@ -69,7 +69,7 @@
F0BB43722344843D00ADBEF1 /* FavoriteVoiceName.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F256C1233E6C4C00C9D719 /* FavoriteVoiceName.swift */; };
F0BB43742344844800ADBEF1 /* PDFKitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DD232E97B0007CC07B /* PDFKitView.swift */; };
F0BB43752344844800ADBEF1 /* SpeechSynthesizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DA232E97AF007CC07B /* SpeechSynthesizer.swift */; };
F0BB43762344844800ADBEF1 /* Translator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DB232E97AF007CC07B /* Translator.swift */; };
F0BB43762344844800ADBEF1 /* GTranslator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DB232E97AF007CC07B /* GTranslator.swift */; };
F0BB43772344844800ADBEF1 /* WKRepresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69DC232E97B0007CC07B /* WKRepresenter.swift */; };
F0BB43782344845000ADBEF1 /* StatusBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AA69D3232E9762007CC07B /* StatusBarView.swift */; };
F0BB43792344845000ADBEF1 /* StatusBarView_Tabs.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AB12A7233F5802005B9F2A /* StatusBarView_Tabs.swift */; };
Expand All @@ -96,8 +96,8 @@
F0C53179234B3EE1003174B5 /* WKCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C53177234B3EE1003174B5 /* WKCoordinator.swift */; };
F0D2E334234BA49000D95994 /* Safari.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0D2E333234BA49000D95994 /* Safari.swift */; };
F0D2E335234BA49000D95994 /* Safari.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0D2E333234BA49000D95994 /* Safari.swift */; };
F0D31C5123491C23003CF86B /* TranslatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0D31C5023491C23003CF86B /* TranslatorView.swift */; };
F0D31C5223491C23003CF86B /* TranslatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0D31C5023491C23003CF86B /* TranslatorView.swift */; };
F0D31C5123491C23003CF86B /* GTranslatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0D31C5023491C23003CF86B /* GTranslatorView.swift */; };
F0D31C5223491C23003CF86B /* GTranslatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0D31C5023491C23003CF86B /* GTranslatorView.swift */; };
F0EE0A1023478C86004A5EAD /* DOMEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE0A0F23478C86004A5EAD /* DOMEvent.swift */; };
F0EE0A122347AA0E004A5EAD /* DOMEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE0A0F23478C86004A5EAD /* DOMEvent.swift */; };
F0EE0A162347BF09004A5EAD /* WKPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE0A152347BF09004A5EAD /* WKPageView.swift */; };
Expand Down Expand Up @@ -179,7 +179,7 @@
F0AA69D3232E9762007CC07B /* StatusBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusBarView.swift; sourceTree = "<group>"; };
F0AA69D7232E978E007CC07B /* Store.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = "<group>"; };
F0AA69DA232E97AF007CC07B /* SpeechSynthesizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpeechSynthesizer.swift; sourceTree = "<group>"; };
F0AA69DB232E97AF007CC07B /* Translator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Translator.swift; sourceTree = "<group>"; };
F0AA69DB232E97AF007CC07B /* GTranslator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GTranslator.swift; sourceTree = "<group>"; };
F0AA69DC232E97B0007CC07B /* WKRepresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WKRepresenter.swift; sourceTree = "<group>"; };
F0AA69DD232E97B0007CC07B /* PDFKitView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PDFKitView.swift; sourceTree = "<group>"; };
F0AA69E5232E989F007CC07B /* ReaderTranslator.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ReaderTranslator.entitlements; sourceTree = "<group>"; };
Expand All @@ -198,7 +198,7 @@
F0C53173234B06D3003174B5 /* WKScriptsSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WKScriptsSetup.swift; sourceTree = "<group>"; };
F0C53177234B3EE1003174B5 /* WKCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WKCoordinator.swift; sourceTree = "<group>"; };
F0D2E333234BA49000D95994 /* Safari.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Safari.swift; sourceTree = "<group>"; };
F0D31C5023491C23003CF86B /* TranslatorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranslatorView.swift; sourceTree = "<group>"; };
F0D31C5023491C23003CF86B /* GTranslatorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GTranslatorView.swift; sourceTree = "<group>"; };
F0EE0A0F23478C86004A5EAD /* DOMEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DOMEvent.swift; sourceTree = "<group>"; };
F0EE0A152347BF09004A5EAD /* WKPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WKPageView.swift; sourceTree = "<group>"; };
F0EE0A18234897CC004A5EAD /* StatusBarView_Safari.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarView_Safari.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -384,7 +384,7 @@
F0EE0A1B2348A645004A5EAD /* PDFKitView */,
F0EE0A142347BEDB004A5EAD /* WebKit */,
F0A9F35A2349228A00970C97 /* ReversoContext.swift */,
F0AA69DB232E97AF007CC07B /* Translator.swift */,
F0AA69DB232E97AF007CC07B /* GTranslator.swift */,
F0AA69DA232E97AF007CC07B /* SpeechSynthesizer.swift */,
F06DB109234504FD00C2DE90 /* EditorNSTextView.swift */,
F0D2E333234BA49000D95994 /* Safari.swift */,
Expand Down Expand Up @@ -430,7 +430,7 @@
F0AB12A2233F5798005B9F2A /* ReaderView_PDF.swift */,
F0AB12A4233F57B3005B9F2A /* ReaderView_Web.swift */,
F01A50E823492398001DCC11 /* ReversoContextView.swift */,
F0D31C5023491C23003CF86B /* TranslatorView.swift */,
F0D31C5023491C23003CF86B /* GTranslatorView.swift */,
F026B1E72344830200E032B9 /* SafariView.swift */,
);
path = Modes;
Expand Down Expand Up @@ -620,9 +620,9 @@
F0C4EDA52349260000CCD97A /* ReversoContextView.swift in Sources */,
F06DB10B234504FD00C2DE90 /* EditorNSTextView.swift in Sources */,
F06DB10E23450B6000C2DE90 /* View.swift in Sources */,
F0D31C5223491C23003CF86B /* TranslatorView.swift in Sources */,
F0D31C5223491C23003CF86B /* GTranslatorView.swift in Sources */,
F0BB437F2344845000ADBEF1 /* StatusBarView_Voice_Favorite.swift in Sources */,
F0BB43762344844800ADBEF1 /* Translator.swift in Sources */,
F0BB43762344844800ADBEF1 /* GTranslator.swift in Sources */,
F0C4EDA7234926D400CCD97A /* ReversoContext.swift in Sources */,
F0EE0A1023478C86004A5EAD /* DOMEvent.swift in Sources */,
F0C4EDAA2349271C00CCD97A /* ViewRepresentable.swift in Sources */,
Expand Down Expand Up @@ -696,12 +696,12 @@
F0F256C2233E6C4C00C9D719 /* FavoriteVoiceName.swift in Sources */,
F06DB10D23450B6000C2DE90 /* View.swift in Sources */,
F0EE0A19234897CC004A5EAD /* StatusBarView_Safari.swift in Sources */,
F0AA69DF232E97B0007CC07B /* Translator.swift in Sources */,
F0AA69DF232E97B0007CC07B /* GTranslator.swift in Sources */,
F0AA69A3232E9710007CC07B /* SceneDelegate.swift in Sources */,
F06DB1042344975E00C2DE90 /* Stack.swift in Sources */,
F0AA69E0232E97B0007CC07B /* WKRepresenter.swift in Sources */,
F0C4EDA6234926D400CCD97A /* ReversoContext.swift in Sources */,
F0D31C5123491C23003CF86B /* TranslatorView.swift in Sources */,
F0D31C5123491C23003CF86B /* GTranslatorView.swift in Sources */,
F0AB12AA233F58A2005B9F2A /* StatusBarView_Zoom.swift in Sources */,
F0AB12AC233F5908005B9F2A /* StatusBarView_ViewMode.swift in Sources */,
F0AB12A5233F57B3005B9F2A /* ReaderView_Web.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Combine
import SwiftUI
import WebKit

struct Translator : ViewRepresentable, WKScriptsSetup {
struct GTranslator : ViewRepresentable, WKScriptsSetup {
@Binding var selectedText: TranslateAction
private let defaultUrl = "https://translate.google.com?sl=auto&tl=ru"
static var hasSentTranslateAction = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,21 @@

import SwiftUI

struct TranslatorView: View {
struct GTranslatorView: View {
@ObservedObject private var store = Store.shared

var body: some View {
VStack {
/** Hack: it or `Divider()` required to display TranslatorView properly `Divider()` takes more space **/
/** Hack: it or `Divider()` required to display GTranslatorView properly `Divider()` takes more space **/
Text("").frame(height: 1)
Translator(selectedText: $store.translateAction)
GTranslator(selectedText: $store.translateAction)
}
}
}

struct TranslatorView_Previews: PreviewProvider {
struct GTranslatorView_Previews: PreviewProvider {
static var previews: some View {
TranslatorView()
GTranslatorView()
.environmentObject(Store.shared)
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// TranslatorView.swift
// GTranslatorView.swift
// ReaderTranslator
//
// Created by Viktor Kushnerov on 10/5/19.
Expand All @@ -13,7 +13,7 @@ struct ReversoContextView: View {

var body: some View {
VStack {
/** Hack: it or `Divider()` required to display TranslatorView properly `Divider()` takes more space **/
/** Hack: it or `Divider()` required to display GTranslatorView properly `Divider()` takes more space **/
Text("").frame(height: 1)
ReversoContext(selectedText: $store.translateAction)
}
Expand Down
27 changes: 15 additions & 12 deletions ReaderTranslator/Views/ReaderView/Modes/SafariView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,23 @@ struct SafariView: View {
switch event.name {
case "keydown":
if let extra = event.extra,
extra.shiftKey == false,
extra.metaKey == false {
extra.shiftKey == false {

if extra.keyCode == 65 { // a
self.store.isVoiceEnabled.toggle()
}
if extra.keyCode == 83 { // s
self.store.canSafariSendSelectedText.toggle()
if self.store.canSafariSendSelectedText {
self.store.translateAction = .translator(event.extra?.selectedText ?? "")
}
}
if extra.keyCode == 82 { // r
if extra.metaKey == true {
SpeechSynthesizer.speak()
}else{
if extra.keyCode == 65 { // a
self.store.isVoiceEnabled.toggle()
}
if extra.keyCode == 83 { // s
self.store.canSafariSendSelectedText.toggle()
if self.store.canSafariSendSelectedText {
self.store.translateAction = .translator(event.extra?.selectedText ?? "")
}
}
if extra.keyCode == 82 { // r
SpeechSynthesizer.speak()
}
}
}
case "selectionchange":
Expand Down
4 changes: 2 additions & 2 deletions ReaderTranslator/Views/ReaderView/ReaderView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ struct ReaderView: View {
#endif
if store.viewMode == .safari {
ReversoContextView()
TranslatorView()
GTranslatorView()
}else{
TranslatorView()
GTranslatorView()
ReversoContextView()
}
}
Expand Down
4 changes: 2 additions & 2 deletions ReaderTranslator/Views/StatusBarView/StatusBarView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ struct StatusBarView: View {
Spacer()
Button(action: {
self.store.translateAction = .translator("")
Translator.pageView?.goBack()
GTranslator.pageView?.goBack()
}) { Text("􀉍") }
Button(action: {
Translator.pageView?.goForward()
GTranslator.pageView?.goForward()
}) { Text("􀉑") }
}.padding(.trailing, 20)
}
Expand Down
4 changes: 2 additions & 2 deletions ReaderTranslatorSafari/reader-translate-extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
})

window.addEventListener('keydown', (e) => {
if (e.keyCode >= 65 && e.keyCode <= 90) {
if((e.keyCode >= 65 && e.keyCode <= 91)) {
if(['text', 'textarea'].indexOf(e.srcElement.type) != -1) {
if(!(e.ctrlKey || e.altKey)) return
if(!(e.ctrlKey || e.altKey) && e.keyCode != 91) return
}
var txt = document.getSelection().toString()
let event = {
Expand Down

0 comments on commit baf30b0

Please sign in to comment.