Files

53 lines
1.3 KiB
Swift

//
// PreferencePane.swift
// Cyberlock
//
// Created by Jura on 9/11/19.
// Copyright © 2019 Omicronmedia. All rights reserved.
//
import Foundation
import AppKit
public struct PreferencePaneIdentifier: Hashable, RawRepresentable, Codable {
public typealias Identifier = PreferencePaneIdentifier
public let rawValue: String
public init(rawValue: String) {
self.rawValue = rawValue
}
}
public protocol PreferencePane: NSViewController {
typealias Identifier = PreferencePaneIdentifier
var preferencePaneIdentifier: Identifier { get }
var preferencePaneTitle: String { get }
var toolbarItemIcon: NSImage { get }
}
extension PreferencePane {
public var toolbarItemIdentifier: NSToolbarItem.Identifier {
return preferencePaneIdentifier.toolbarItemIdentifier
}
public var toolbarItemIcon: NSImage {
return NSImage(size: .zero)
}
}
extension PreferencePane.Identifier {
public init(_ rawValue: String) {
self.init(rawValue: rawValue)
}
public init(fromToolbarItemIdentifier itemIdentifier: NSToolbarItem.Identifier) {
self.init(rawValue: itemIdentifier.rawValue)
}
public var toolbarItemIdentifier: NSToolbarItem.Identifier {
return NSToolbarItem.Identifier(rawValue)
}
}