diff --git a/CodeEditor/ViewController.swift b/CodeEditor/ViewController.swift index 44d7a8f..838dc7c 100755 --- a/CodeEditor/ViewController.swift +++ b/CodeEditor/ViewController.swift @@ -7,8 +7,9 @@ // import Cocoa +import Quartz -class ViewController: NSViewController, NSTextViewDelegate, NSTextStorageDelegate { +class ViewController: NSViewController, NSTextViewDelegate, NSTextStorageDelegate, QLPreviewPanelDataSource, QLPreviewPanelDelegate { /// Appdelegate let app = NSApp.delegate as! AppDelegate @@ -112,6 +113,14 @@ class ViewController: NSViewController, NSTextViewDelegate, NSTextStorageDelegat filer.saveDefaults() } + func numberOfPreviewItems(in panel: QLPreviewPanel!) -> Int { + return 1 + } + + func previewPanel(_ panel: QLPreviewPanel!, previewItemAt index: Int) -> QLPreviewItem! { + return filer.currentDocument.url! as QLPreviewItem + } + @objc func setTheme() { let goDark = Settings.shared.isDarkTheme if #available(OSX 10.14, *) { @@ -266,8 +275,6 @@ class ViewController: NSViewController, NSTextViewDelegate, NSTextStorageDelegat // Remove old attributes let old = NSRange(location: 0, length: textEditor.textStorage?.length ?? 0) textEditor.textStorage?.removeAttribute(NSAttributedString.Key.foregroundColor, range: old) - //textEditor.textStorage?.setAttributes([:], range: all) - //textEditor.textStorage?.setAttributedString(NSAttributedString(string: "")) textEditor.string = "" // Assign new text @@ -283,6 +290,14 @@ class ViewController: NSViewController, NSTextViewDelegate, NSTextStorageDelegat } catch { print("Error loading file ", file.url ?? "No file") textEditor.string = "[\(file.name) is not editable]" + + // Preview with Quickview + if let sharedPanel = QLPreviewPanel.shared() { + sharedPanel.delegate = self + sharedPanel.dataSource = self + sharedPanel.makeKeyAndOrderFront(self) + } + resetEditor() } diff --git a/Macaw.xcodeproj/project.pbxproj b/Macaw.xcodeproj/project.pbxproj index da8b31b..60c1669 100755 --- a/Macaw.xcodeproj/project.pbxproj +++ b/Macaw.xcodeproj/project.pbxproj @@ -61,6 +61,7 @@ BC59EB3F2274715900880767 /* Preferences.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Preferences.storyboard; sourceTree = ""; }; BC59EB41227472DB00880767 /* PreferencesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewController.swift; sourceTree = ""; }; BC59EB432274741F00880767 /* PreferencesWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = ""; }; + BCDD662722A1A65900A6A5C4 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; }; DE4AB1AB1F9D1E76006B16FA /* php.default.yaml */ = {isa = PBXFileReference; lastKnownFileType = text; path = php.default.yaml; sourceTree = ""; }; DE500211228F1B5E00A31EFF /* Macaw.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Macaw.entitlements; sourceTree = ""; }; /* End PBXFileReference section */ @@ -100,6 +101,7 @@ BC59EB3E2274713800880767 /* PreferencesWindow */, 3D106F341E29BFDF0081E0EC /* CodeEditor */, 3D106F331E29BFDF0081E0EC /* Products */, + BCDD662622A1A65900A6A5C4 /* Frameworks */, ); sourceTree = ""; }; @@ -143,6 +145,14 @@ path = PreferencesWindow; sourceTree = ""; }; + BCDD662622A1A65900A6A5C4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + BCDD662722A1A65900A6A5C4 /* QuickLook.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */