| //===----------------------------------------------------------------------===// |
| // |
| // This source file is part of the Swift.org open source project |
| // |
| // Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors |
| // Licensed under Apache License v2.0 with Runtime Library Exception |
| // |
| // See https://swift.org/LICENSE.txt for license information |
| // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors |
| // |
| //===----------------------------------------------------------------------===// |
| |
| import Foundation |
| @_exported import AppKit |
| |
| // NSCollectionView extensions |
| public extension IndexPath { |
| |
| /// Initialize for use with `NSCollectionView`. |
| public init(item: Int, section: Int) { |
| self.init(indexes: [section, item]) |
| } |
| |
| /// The item of this index path, when used with `NSCollectionView`. |
| /// |
| /// - precondition: The index path must have exactly two elements. |
| public var item : Int { |
| get { |
| precondition(count == 2, "Invalid index path for use with NSCollectionView. This index path must contain exactly two indices specifying the section and item.") |
| return self[1] |
| } |
| set { |
| precondition(count == 2, "Invalid index path for use with NSCollectionView. This index path must contain exactly two indices specifying the section and item.") |
| self[1] = newValue |
| } |
| } |
| |
| /// The section of this index path, when used with `NSCollectionView`. |
| /// |
| /// - precondition: The index path must have exactly two elements. |
| public var section : Int { |
| get { |
| precondition(count == 2, "Invalid index path for use with NSCollectionView. This index path must contain exactly two indices specifying the section and item.") |
| return self[0] |
| } |
| set { |
| precondition(count == 2, "Invalid index path for use with NSCollectionView. This index path must contain exactly two indices specifying the section and item.") |
| self[0] = newValue |
| } |
| } |
| |
| } |
| |
| public extension URLResourceValues { |
| /// Returns all thumbnails as a single NSImage. |
| @available(OSX 10.10, *) |
| public var thumbnail : NSImage? { |
| return allValues[URLResourceKey.thumbnailKey] as? NSImage |
| } |
| |
| /// The color of the assigned label. |
| public var labelColor: NSColor? { |
| return allValues[URLResourceKey.labelColorKey] as? NSColor |
| } |
| |
| /// The icon normally displayed for the resource |
| public var effectiveIcon: AnyObject? { |
| return allValues[URLResourceKey.effectiveIconKey] as? NSImage |
| } |
| |
| /// The custom icon assigned to the resource, if any (Currently not implemented) |
| public var customIcon: NSImage? { |
| return allValues[URLResourceKey.customIconKey] as? NSImage |
| } |
| |
| /// Returns a dictionary of NSImage objects keyed by size. |
| @available(OSX 10.10, *) |
| public var thumbnailDictionary : [URLThumbnailDictionaryItem : NSImage]? { |
| return allValues[URLResourceKey.thumbnailDictionaryKey] as? [URLThumbnailDictionaryItem : NSImage] |
| } |
| |
| } |