diff options
Diffstat (limited to 'QuickLook/PreviewViewController.swift')
| -rw-r--r-- | QuickLook/PreviewViewController.swift | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/QuickLook/PreviewViewController.swift b/QuickLook/PreviewViewController.swift index 9dbc5f2..8a3467f 100644 --- a/QuickLook/PreviewViewController.swift +++ b/QuickLook/PreviewViewController.swift @@ -1,9 +1,6 @@ import Cocoa import Quartz -import SwiftTreeSitter -import SwiftTreeSitterLayer import SwiftUI -import TreeSitterWmap import WmapParser class PreviewViewController: NSViewController, QLPreviewingController { @@ -99,113 +96,3 @@ class PreviewViewController: NSViewController, QLPreviewingController { } } } - -// A SwiftUI view specifically for QuickLook preview -struct MapPreviewView: View { - let parsedMap: WmapParser.Map - @State private var selectedEvolution: StageType = .general - - var body: some View { - GeometryReader { geometry in - let mapSize = Dimensions.Map.size - let padding = Dimensions.Map.padding - let totalWidth = mapSize.width + 2 * padding - let totalHeight = mapSize.height + 2 * padding - - // Calculate scale to fit the available space - let scaleX = geometry.size.width / totalWidth - let scaleY = geometry.size.height / totalHeight - let scale = min(scaleX, scaleY, 1.0) // Don't scale up, only down - - ScrollView([.horizontal, .vertical]) { - MapRenderView( - parsedMap: parsedMap, - evolution: $selectedEvolution - ) - .drawingGroup(opaque: false) - .scaleEffect(scale) - .frame( - width: totalWidth * scale, - height: totalHeight * scale - ) - } - .frame(maxWidth: .infinity, maxHeight: .infinity) - .background(Color.white) - } - } -} - -// A read-only text editor for QuickLook that shows syntax highlighting -struct QuickLookTextEditor: NSViewRepresentable { - let content: String - - func makeNSView(context: Context) -> NSScrollView { - let scrollView = NSTextView.scrollableTextView() - let textView = scrollView.documentView as! NSTextView - - // Configure the scroll view - scrollView.hasVerticalScroller = true - scrollView.hasHorizontalScroller = true - scrollView.autohidesScrollers = false - - // Configure the text view for read-only display - textView.isEditable = false - textView.isSelectable = true - textView.backgroundColor = NSColor.textBackgroundColor - textView.font = NSFont.monospacedSystemFont(ofSize: 13, weight: .regular) - textView.string = content - textView.isVerticallyResizable = true - textView.isHorizontallyResizable = true - textView.textContainer?.widthTracksTextView = false - textView.textContainer?.containerSize = NSSize( - width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude) - - // Apply syntax highlighting using tree-sitter - if let textStorage = textView.textStorage { - applyTreeSitterHighlighting(textStorage: textStorage, content: content) - } - - return scrollView - } - - func updateNSView(_ nsView: NSScrollView, context: Context) { - // No updates needed for read-only view - } - - private func applyTreeSitterHighlighting(textStorage: NSTextStorage, content: String) { - // Set up tree-sitter language layer - guard let wmapConfiguration = try? LanguageConfiguration(tree_sitter_wmap(), name: "wmap") - else { return } - - let languageConfiguration = LanguageLayer.Configuration(languageProvider: { name in - switch name { - case "wmap": return wmapConfiguration - default: return nil - } - }) - - guard - let rootLayer = try? LanguageLayer( - languageConfig: wmapConfiguration, configuration: languageConfiguration) - else { return } - - // Update layer with content - rootLayer.replaceContent(with: content) - - // Set default text color - let fullRange = NSRange(location: 0, length: textStorage.length) - textStorage.addAttribute(.foregroundColor, value: NSColor.textColor, range: fullRange) - - // Apply tree-sitter highlighting - guard - let highlights = try? rootLayer.highlights( - in: fullRange, provider: content.predicateTextProvider) - else { return } - - for highlight in highlights { - let color = NSColor.Theme.Syntax.colorForSyntax(highlight.name) - textStorage.addAttribute(.foregroundColor, value: color, range: highlight.range) - } - } - -} |