aboutsummaryrefslogtreecommitdiff
path: root/Map/Data/AppState.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Map/Data/AppState.swift')
-rw-r--r--Map/Data/AppState.swift103
1 files changed, 0 insertions, 103 deletions
diff --git a/Map/Data/AppState.swift b/Map/Data/AppState.swift
deleted file mode 100644
index d0d5670..0000000
--- a/Map/Data/AppState.swift
+++ /dev/null
@@ -1,103 +0,0 @@
-import Cocoa
-import Foundation
-import SwiftUI
-
-struct AppState {
- var selectedEvolution: StageType = .general
-}
-
-enum AppAction {
- case selectEvolution(evolution: StageType)
- case exportMapAsImage(map: Map)
- case exportMapAsText(map: Map)
- case deleteMap(map: Map)
-}
-
-func appStateReducer(state: inout AppState, action: AppAction) {
-
- switch action {
-
- case .selectEvolution(let evolution):
- state.selectedEvolution = evolution
-
- case .exportMapAsImage(let map):
- let window = NSWindow(
- contentRect: .init(
- origin: .zero,
- size: .init(
- width: NSScreen.main!.frame.width,
- height: NSScreen.main!.frame.height)),
- styleMask: [.closable],
- backing: .buffered,
- defer: false)
-
- window.title = map.title ?? "Untitled Map"
- window.isOpaque = true
- window.center()
- window.isMovableByWindowBackground = true
- window.makeKeyAndOrderFront(nil)
-
- let renderView = MapRenderView(
- content: Binding.constant(map.content ?? ""),
- evolution: Binding.constant(state.selectedEvolution))
-
- let view = NSHostingView(rootView: renderView)
- window.contentView = view
-
- let imageRepresentation = view.bitmapImageRepForCachingDisplay(in: view.bounds)!
- view.cacheDisplay(in: view.bounds, to: imageRepresentation)
- let image = NSImage(cgImage: imageRepresentation.cgImage!, size: view.bounds.size)
-
- let dialog = NSSavePanel()
-
- dialog.title = "Save Map"
- dialog.showsResizeIndicator = false
- dialog.canCreateDirectories = true
- dialog.showsHiddenFiles = false
- dialog.allowedContentTypes = [.png]
- dialog.nameFieldStringValue = map.title ?? "Untitled Map"
-
- if dialog.runModal() == NSApplication.ModalResponse.OK {
- let result = dialog.url
-
- if result != nil {
-
- image.writePNG(toURL: result!)
- print("saved at \(result!)")
- }
- } else {
- print("Cancel")
- }
- window.orderOut(nil)
-
- case .exportMapAsText(let map):
- let dialog = NSSavePanel()
-
- dialog.title = "Save Map Text"
- dialog.showsResizeIndicator = false
- dialog.canCreateDirectories = true
- dialog.showsHiddenFiles = false
- dialog.allowedContentTypes = [.text]
- dialog.nameFieldStringValue = map.title ?? "Untitled Map"
-
- if let content = map.content {
-
- if dialog.runModal() == NSApplication.ModalResponse.OK {
- let result = dialog.url
-
- if let result = result {
- try? content.write(to: result, atomically: true, encoding: String.Encoding.utf8)
- }
- } else {
- print("Cancel")
- }
- }
- case .deleteMap(let map):
- let context = PersistenceController.shared.container.viewContext
- context.delete(map)
-
- try? context.save()
- }
-}
-
-typealias AppStore = Store<AppState, AppAction>