53 lines
1.3 KiB
Swift
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)
|
|
}
|
|
}
|