-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRadarWindow.swift
117 lines (96 loc) · 4.16 KB
/
RadarWindow.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//
// RadarWindow.swift
// Meteorologist
//
// Swift code written by Ed Danley on 9/19/15.
// Copyright © 2015 The Meteorologist Group, LLC. All rights reserved.
//
// Original source by Joe Crobak and Meteorologist Group
// Some new graphics by Matthew Fahrenbacher
//
// 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.
//
import Cocoa
import WebKit
class RadarWindow: NSWindowController, NSWindowDelegate {
@IBOutlet weak var radarDisplayWebView: WebView!
@IBOutlet weak var radarWind: NSWindow!
let radarURL = "http://www.weather.com/weather/radar/interactive/l/"
// THIS NEEDS LOTS OF WORK - RIGHT NOW IS HARD CODED TO WEATHER.COM
// THIS NEEDS LOTS OF WORK - RIGHT NOW IS HARD CODED TO WEATHER.COM
// THIS NEEDS LOTS OF WORK - RIGHT NOW IS HARD CODED TO WEATHER.COM
// THIS NEEDS LOTS OF WORK - RIGHT NOW IS HARD CODED TO WEATHER.COM
// THIS NEEDS LOTS OF WORK - RIGHT NOW IS HARD CODED TO WEATHER.COM
// https://maps.darksky.net/@radar,41.735,-88.0949,9
var weatherComTag = "60565"
// Allow Command-W to close the window
override func keyDown(with theEvent: (NSEvent?))
{
if (theEvent?.modifierFlags.contains(NSEvent.ModifierFlags.command))! {
switch theEvent?.charactersIgnoringModifiers! {
case "w":
self.window?.close()
default:
break
}
}
}
override func windowDidLoad() {
super.windowDidLoad()
self.window?.center()
self.window?.makeKeyAndOrderFront(self)
NSApp.activate(ignoringOtherApps: true)
let defaults = UserDefaults.standard
var ourURL = radarURL
let weatherDataSource = defaults.string(forKey: "weatherSource_1")!
if (weatherDataSource == YAHOO_WEATHER) {
ourURL.append(weatherComTag)
}
else if (weatherDataSource == OPENWEATHERMAP) {
ourURL.append(weatherComTag)
}
else if (weatherDataSource == WEATHERUNDERGROUND) {
ourURL.append(weatherComTag)
}
else{
let i = Int(defaults.string(forKey: "weatherSource")!)! + 1
// Something bad should happen to let the developer know this option hasn't been implemented ...
let ErrorMsg = String(format:"Radar option %d hasn't been implemented", i)
ErrorLog(ErrorMsg)
let alert:NSAlert = NSAlert()
alert.messageText = ErrorMsg
alert.informativeText = "Contact the developer and choose another weather source"
alert.runModal()
//self.window!.makeKeyAndOrderFront(self.window!)
}
radarWind.title = localizedString(forKey: "Radar_")
radarDisplayWebView.mainFrame.load(URLRequest(url: URL(string: ourURL)!))
}
/* TODO
override var windowNibName : String! {
return "RadarWindow"
}
*/
override func windowWillLoad() {
}
func windowWillClose(_ notification: Notification) {
}
func radarDisplay(_ weatherTag: String) {
weatherComTag = weatherTag
} // radarDisplay
} // class RadarWindow