Add URLPasteboardWriter to RSCore. It takes a string and writes a URL (if possible) and a string to the pasteboard.
This commit is contained in:
parent
9aa1d0a166
commit
fb45ae11eb
|
@ -156,6 +156,7 @@
|
||||||
84CFF56A1AC3D1B000CEA6C8 /* RSScaling.m in Sources */ = {isa = PBXBuildFile; fileRef = 84CFF5681AC3D1B000CEA6C8 /* RSScaling.m */; };
|
84CFF56A1AC3D1B000CEA6C8 /* RSScaling.m in Sources */ = {isa = PBXBuildFile; fileRef = 84CFF5681AC3D1B000CEA6C8 /* RSScaling.m */; };
|
||||||
84CFF56D1AC3D20A00CEA6C8 /* NSImage+RSCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFF56B1AC3D20A00CEA6C8 /* NSImage+RSCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
84CFF56D1AC3D20A00CEA6C8 /* NSImage+RSCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFF56B1AC3D20A00CEA6C8 /* NSImage+RSCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
84CFF56E1AC3D20A00CEA6C8 /* NSImage+RSCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 84CFF56C1AC3D20A00CEA6C8 /* NSImage+RSCore.m */; };
|
84CFF56E1AC3D20A00CEA6C8 /* NSImage+RSCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 84CFF56C1AC3D20A00CEA6C8 /* NSImage+RSCore.m */; };
|
||||||
|
84D5BA1E201E87E2009092BD /* URLPasteboardWriter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D5BA1D201E87E2009092BD /* URLPasteboardWriter.swift */; };
|
||||||
84E34DA61F9FA1070077082F /* UndoableCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E34DA51F9FA1070077082F /* UndoableCommand.swift */; };
|
84E34DA61F9FA1070077082F /* UndoableCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E34DA51F9FA1070077082F /* UndoableCommand.swift */; };
|
||||||
84F20F831F16BA6200D8E682 /* PropertyList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F20F821F16BA6200D8E682 /* PropertyList.swift */; };
|
84F20F831F16BA6200D8E682 /* PropertyList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F20F821F16BA6200D8E682 /* PropertyList.swift */; };
|
||||||
84FE9FC31C00453900081CE9 /* NSStoryboard+RSCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 84FE9FC11C00453900081CE9 /* NSStoryboard+RSCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
84FE9FC31C00453900081CE9 /* NSStoryboard+RSCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 84FE9FC11C00453900081CE9 /* NSStoryboard+RSCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
@ -273,6 +274,7 @@
|
||||||
84CFF5681AC3D1B000CEA6C8 /* RSScaling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RSScaling.m; sourceTree = "<group>"; };
|
84CFF5681AC3D1B000CEA6C8 /* RSScaling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RSScaling.m; sourceTree = "<group>"; };
|
||||||
84CFF56B1AC3D20A00CEA6C8 /* NSImage+RSCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage+RSCore.h"; sourceTree = "<group>"; };
|
84CFF56B1AC3D20A00CEA6C8 /* NSImage+RSCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage+RSCore.h"; sourceTree = "<group>"; };
|
||||||
84CFF56C1AC3D20A00CEA6C8 /* NSImage+RSCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage+RSCore.m"; sourceTree = "<group>"; };
|
84CFF56C1AC3D20A00CEA6C8 /* NSImage+RSCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage+RSCore.m"; sourceTree = "<group>"; };
|
||||||
|
84D5BA1D201E87E2009092BD /* URLPasteboardWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = URLPasteboardWriter.swift; path = AppKit/URLPasteboardWriter.swift; sourceTree = "<group>"; };
|
||||||
84E34DA51F9FA1070077082F /* UndoableCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UndoableCommand.swift; path = RSCore/UndoableCommand.swift; sourceTree = "<group>"; };
|
84E34DA51F9FA1070077082F /* UndoableCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UndoableCommand.swift; path = RSCore/UndoableCommand.swift; sourceTree = "<group>"; };
|
||||||
84F20F821F16BA6200D8E682 /* PropertyList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PropertyList.swift; sourceTree = "<group>"; };
|
84F20F821F16BA6200D8E682 /* PropertyList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PropertyList.swift; sourceTree = "<group>"; };
|
||||||
84FE9FC11C00453900081CE9 /* NSStoryboard+RSCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSStoryboard+RSCore.h"; sourceTree = "<group>"; };
|
84FE9FC11C00453900081CE9 /* NSStoryboard+RSCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSStoryboard+RSCore.h"; sourceTree = "<group>"; };
|
||||||
|
@ -464,6 +466,7 @@
|
||||||
84C687341FBC025600345C9E /* Log.swift */,
|
84C687341FBC025600345C9E /* Log.swift */,
|
||||||
84C687371FBC028900345C9E /* LogItem.swift */,
|
84C687371FBC028900345C9E /* LogItem.swift */,
|
||||||
8434D15B200BD6F400D6281E /* UserApp.swift */,
|
8434D15B200BD6F400D6281E /* UserApp.swift */,
|
||||||
|
84D5BA1D201E87E2009092BD /* URLPasteboardWriter.swift */,
|
||||||
842DD7F91E1499FA00E061EB /* Views */,
|
842DD7F91E1499FA00E061EB /* Views */,
|
||||||
);
|
);
|
||||||
name = AppKit;
|
name = AppKit;
|
||||||
|
@ -755,6 +758,7 @@
|
||||||
84C687321FBAA3DF00345C9E /* LogWindowController.swift in Sources */,
|
84C687321FBAA3DF00345C9E /* LogWindowController.swift in Sources */,
|
||||||
84C687381FBC028900345C9E /* LogItem.swift in Sources */,
|
84C687381FBC028900345C9E /* LogItem.swift in Sources */,
|
||||||
8432B1861DACA0E90057D6DF /* NSResponder-Extensions.swift in Sources */,
|
8432B1861DACA0E90057D6DF /* NSResponder-Extensions.swift in Sources */,
|
||||||
|
84D5BA1E201E87E2009092BD /* URLPasteboardWriter.swift in Sources */,
|
||||||
849B08981BF7BCE30090CEE4 /* NSPasteboard+RSCore.m in Sources */,
|
849B08981BF7BCE30090CEE4 /* NSPasteboard+RSCore.m in Sources */,
|
||||||
842635571D7FA1C800196285 /* NSTableView+Extensions.swift in Sources */,
|
842635571D7FA1C800196285 /* NSTableView+Extensions.swift in Sources */,
|
||||||
84F20F831F16BA6200D8E682 /* PropertyList.swift in Sources */,
|
84F20F831F16BA6200D8E682 /* PropertyList.swift in Sources */,
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
//
|
||||||
|
// URLPasteboardWriter.swift
|
||||||
|
// RSCore
|
||||||
|
//
|
||||||
|
// Created by Brent Simmons on 1/28/18.
|
||||||
|
// Copyright © 2018 Ranchero Software, LLC. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import AppKit
|
||||||
|
|
||||||
|
// Takes a string, not a URL, but writes it as a URL (when possible) and as a String.
|
||||||
|
|
||||||
|
@objc public final class URLPasteboardWriter: NSObject, NSPasteboardWriting {
|
||||||
|
|
||||||
|
let urlString: String
|
||||||
|
|
||||||
|
public init(urlString: String) {
|
||||||
|
|
||||||
|
self.urlString = urlString
|
||||||
|
}
|
||||||
|
|
||||||
|
public class func write(urlString: String, to pasteboard: NSPasteboard) {
|
||||||
|
|
||||||
|
pasteboard.clearContents()
|
||||||
|
let writer = URLPasteboardWriter(urlString: urlString)
|
||||||
|
pasteboard.writeObjects([writer])
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - NSPasteboardWriting
|
||||||
|
|
||||||
|
public func writableTypes(for pasteboard: NSPasteboard) -> [NSPasteboard.PasteboardType] {
|
||||||
|
|
||||||
|
if let _ = URL(string: urlString) {
|
||||||
|
return [.URL, .string]
|
||||||
|
}
|
||||||
|
return [.string]
|
||||||
|
}
|
||||||
|
|
||||||
|
public func pasteboardPropertyList(forType type: NSPasteboard.PasteboardType) -> Any? {
|
||||||
|
|
||||||
|
guard type == .string || type == .URL else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return urlString
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue