private static let gamePageURL = "http://www.dmm.com/netgame/social/-/gadgets/=/app_id=854854/"
private static let loginPageURLPrefix = "https://www.dmm.com/my/-/login/=/"
- @IBOutlet var webView: WebView!
+ @IBOutlet private var webView: WebView!
override var nibName: NSNib.Name {
guard let _ = webView.mainFrameURL else {
webView.mainFrameURL = GameViewController.gamePageURL
+
return
}
let panel = ProgressPanel()
- guard let window = view.window else { return }
- guard let panelWindow = panel.window else { return }
+ guard let window = view.window else {
+
+ return
+ }
+ guard let panelWindow = panel.window else {
+
+ return
+ }
panel.title = ""
panel.message = LocalizedStrings.deletingCacheInfo.string
window.endSheet(panelWindow)
}
- @IBAction func screenShot(_ sender: AnyObject?) {
+ func screenshotOld() {
- let frame = view.visibleRect
-// let screenshotBorder = UserDefaults.standard[.screenShotBorderWidth]
-// let f = frame.insetBy(dx: -screenshotBorder, dy: -screenshotBorder)
+ let frame = webView.visibleRect
+ let screenshotBorder = UserDefaults.standard[.screenShotBorderWidth]
+ let f = frame.insetBy(dx: -screenshotBorder, dy: -screenshotBorder)
- guard let window = view.window else { return Logger.shared.log("Can not get window") }
+ guard let rep = webView.bitmapImageRepForCachingDisplay(in: f) else {
+
+ return
+ }
- let windowCoordinateFrame = view.convert(frame, to: nil)
+ webView.cacheDisplay(in: frame, to: rep)
+ ScreenshotRegister(ApplicationDirecrories.shared.screenshotSaveDirectoryURL)
+ .registerScreenshot(rep, name: localizedAppName())
+ }
+
+ @available(OSX 10.13, *)
+ func screenshot() {
+
+ let frame = view.visibleRect
+ let screenshotBorder = UserDefaults.standard[.screenShotBorderWidth]
+ let f = frame.insetBy(dx: -screenshotBorder, dy: -screenshotBorder)
+ let windowCoordinateFrame = view.convert(f, to: nil)
+
+ guard let window = view.window else {
+
+ Logger.shared.log("Can not get window")
+
+ return
+ }
let screenCoordinsteFrame = window.convertToScreen(windowCoordinateFrame)
- guard let screen = NSScreen.main else { return Logger.shared.log("Can not get Screen") }
+ guard let screen = NSScreen.main else {
+
+ Logger.shared.log("Can not get Screen")
+
+ return
+ }
let scFrame = screen.frame
- guard let cxt = window.graphicsContext?.cgContext else { return Logger.shared.log("Cannot get Context") }
+ guard let cxt = window.graphicsContext?.cgContext else {
+
+ Logger.shared.log("Cannot get Context")
+
+ return
+ }
let deviceCoordinateFrame = cxt.convertToDeviceSpace(screenCoordinsteFrame)
let raio = deviceCoordinateFrame.size.width / screenCoordinsteFrame.size.width
width: raio * screenCoordinsteFrame.size.width,
height: raio * screenCoordinsteFrame.size.height)
- guard let fullSizeImage = CGDisplayCreateImage(CGMainDisplayID()) else { return Logger.shared.log("Can not get Image") }
+ guard let fullSizeImage = CGDisplayCreateImage(CGMainDisplayID()) else {
+
+ Logger.shared.log("Can not get Image")
+
+ return
+ }
- guard let image = fullSizeImage.cropping(to: trimRect) else { return Logger.shared.log("Can not trim image") }
+ guard let image = fullSizeImage.cropping(to: trimRect) else {
+
+ Logger.shared.log("Can not trim image")
+
+ return
+ }
let rep = NSBitmapImageRep(cgImage: image)
- AppDelegate.shared.registerScreenshot(rep, fromOnScreen: .zero)
+ if rep.size != NSSize(width: 800, height: 480) {
+
+ rep.size = NSSize(width: 800, height: 480)
+ }
+
+ ScreenshotRegister(ApplicationDirecrories.shared.screenshotSaveDirectoryURL)
+ .registerScreenshot(rep, name: localizedAppName())
+ }
+
+ @IBAction func screenShot(_ sender: AnyObject?) {
+
+ if #available(OSX 10.13, *) {
+
+ screenshot()
+
+ } else {
+
+ screenshotOld()
+ }
}
override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
- guard let action: Selector = menuItem.action else { return false }
+ guard let action: Selector = menuItem.action else {
+
+ return false
+ }
switch action {
case #selector(GameViewController.reloadContent(_:)):
- guard let _ = webView.mainFrame else { return true }
- guard let frameURL = webView.mainFrameURL else { return true }
+
+ guard let _ = webView.mainFrame else {
+
+ return true
+ }
+ guard let frameURL = webView.mainFrameURL else {
+
+ return true
+ }
switch frameURL {
+
case GameViewController.gamePageURL:
menuItem.title = LocalizedStrings.reload.string
default:
menuItem.title = LocalizedStrings.backToGame.string
+
}
return true
case #selector(GameViewController.deleteCacheAndReload(_:)):
+
return true
case #selector(GameViewController.screenShot(_:)):
+
return true
default: return false
+
}
}
}
func webView(_ sender: WebView!, didFinishLoadFor frame: WebFrame!) {
- guard let path = frame.dataSource?.initialRequest.url?.path else { return }
+ guard let path = frame.dataSource?.initialRequest.url?.path else {
+
+ return
+ }
let handler: (JSContext?, JSValue?) -> Void = { (_, exception) in
if path.hasSuffix("gadgets/ifr") {
- guard let context = frame.javaScriptContext else { return }
+ guard let context = frame.javaScriptContext else {
+
+ return
+ }
context.exceptionHandler = handler
context.evaluateScript(
if path.hasSuffix("app_id=854854") {
- guard let context = frame.javaScriptContext else { return }
+ guard let context = frame.javaScriptContext else {
+
+ return
+ }
context.exceptionHandler = handler
context.evaluateScript(
)
let validIframe = context.objectForKeyedSubscript("validIframe").toInt32()
- guard validIframe != 0 else { return }
+ guard validIframe != 0 else {
+
+ return
+ }
let top = context.objectForKeyedSubscript("atop").toDouble()
let left = context.objectForKeyedSubscript("aleft").toDouble()
func webView(_ sender: WebView!, contextMenuItemsForElement element: [AnyHashable: Any]!, defaultMenuItems: [Any]!) -> [Any]! {
- guard let menuItems = defaultMenuItems as? [NSMenuItem] else { return [] }
+ guard let menuItems = defaultMenuItems as? [NSMenuItem] else {
+
+ return []
+ }
return menuItems.filter { !GameViewController.excludeMenuItemTag.contains($0.tag) }
}