Kilian Hofmann ca171e44f3 Fixed critical bug in loss logging functions (pointer realloced to early)
Implemented Converter tool -> needs refactoring toward non document based
2017-06-21 23:36:33 +02:00

74 lines
2.9 KiB
Swift

//
// GraphWindow.swift
// Graphic Analysis 2
//
// Created by Kilian Hofmann on 17.06.17.
// Copyright © 2017 Kilian Hofmann. All rights reserved.
//
import Cocoa
class GraphWindow: NSWindowController {
var collectionViewItem: CollectionViewItemMonth!
@IBOutlet var scrollView: NSScrollView!
let opQueue: OperationQueue = OperationQueue()
override var windowNibName: String! {
return "GraphWindow"
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
init(collectionViewItem: CollectionViewItemMonth) {
super.init(window: nil)
self.collectionViewItem = collectionViewItem
opQueue.maxConcurrentOperationCount = 4
}
override func windowDidLoad() {
super.windowDidLoad()
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
var upstreamFiles: [FileWrapper] = []
var downstreamFiles: [FileWrapper] = []
guard collectionViewItem.dayFW != nil else { return }
for file in (collectionViewItem.dayFW?.fileWrappers)! {
if file.key.contains("Upstream") {
upstreamFiles.append(file.value)
} else if file.key.contains("Downstream") {
downstreamFiles.append(file.value)
}
}
let content: FlippedView = FlippedView(frame: NSMakeRect(0, 0, CGFloat(FrequencyGraph.maxGraphSize), CGFloat(((upstreamFiles.count + downstreamFiles.count) * FrequencyGraph.graphSizeWithSeparator)-1)))
scrollView.documentView = content
var numGraphs: Int = 0
for item in upstreamFiles {
let graph: FrequencyGraph = FrequencyGraph(upstream: true, frame: NSMakeRect(0, CGFloat(numGraphs * FrequencyGraph.graphSizeWithSeparator), CGFloat(FrequencyGraph.maxGraphSize), CGFloat(FrequencyGraph.graphSize)), superview: content)
graph.dataLoss = collectionViewItem.distribution
opQueue.addOperation(GraphLoadOperation(graph: graph, item: item, downstream: false))
numGraphs += 1
}
for item in downstreamFiles {
let graph: FrequencyGraph = FrequencyGraph(upstream: false, frame: NSMakeRect(0, CGFloat(numGraphs * FrequencyGraph.graphSizeWithSeparator), CGFloat(FrequencyGraph.maxGraphSize), CGFloat(FrequencyGraph.graphSize)), superview: content)
graph.dataLoss = collectionViewItem.distribution
opQueue.addOperation(GraphLoadOperation(graph: graph, item: item, downstream: true))
numGraphs += 1
}
}
}
extension GraphWindow: NSWindowDelegate {
func windowShouldClose(_ sender: Any) -> Bool {
opQueue.cancelAllOperations()
collectionViewItem?.isSelected = false
collectionViewItem?.view.layer?.borderColor = NSColor.clear.cgColor
return true
}
}