aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-01-21 22:13:14 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2019-01-21 22:13:14 +0100
commitd7a88300f6ceef7f566147298626a65b7669e6ee (patch)
tree57b70088b4147801ee3eaa9f76c312d7841cb16d /WireGuard/WireGuard/UI
parentAvoid using return in single-line closures (diff)
downloadwireguard-apple-d7a88300f6ceef7f566147298626a65b7669e6ee.tar.xz
wireguard-apple-d7a88300f6ceef7f566147298626a65b7669e6ee.zip
macOS: Make highlighter themes static
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'WireGuard/WireGuard/UI')
-rw-r--r--WireGuard/WireGuard/UI/macOS/View/ConfTextColorTheme.swift12
-rw-r--r--WireGuard/WireGuard/UI/macOS/View/ConfTextStorage.swift23
-rw-r--r--WireGuard/WireGuard/UI/macOS/View/ConfTextView.swift4
3 files changed, 18 insertions, 21 deletions
diff --git a/WireGuard/WireGuard/UI/macOS/View/ConfTextColorTheme.swift b/WireGuard/WireGuard/UI/macOS/View/ConfTextColorTheme.swift
index c3a1eb2..5229d50 100644
--- a/WireGuard/WireGuard/UI/macOS/View/ConfTextColorTheme.swift
+++ b/WireGuard/WireGuard/UI/macOS/View/ConfTextColorTheme.swift
@@ -4,13 +4,13 @@
import Cocoa
protocol ConfTextColorTheme {
- var defaultColor: NSColor { get }
- var colorMap: [UInt32: NSColor] { get }
+ static var defaultColor: NSColor { get }
+ static var colorMap: [UInt32: NSColor] { get }
}
struct ConfTextAquaColorTheme: ConfTextColorTheme {
- var defaultColor = NSColor(hex: "#000000")
- var colorMap: [UInt32: NSColor] = [
+ static let defaultColor = NSColor(hex: "#000000")
+ static let colorMap: [UInt32: NSColor] = [
HighlightSection.rawValue: NSColor(hex: "#326D74"), // Class name in Xcode
HighlightField.rawValue: NSColor(hex: "#9B2393"), // Keywords in Xcode
HighlightPublicKey.rawValue: NSColor(hex: "#643820"), // Preprocessor directives in Xcode
@@ -28,8 +28,8 @@ struct ConfTextAquaColorTheme: ConfTextColorTheme {
}
struct ConfTextDarkAquaColorTheme: ConfTextColorTheme {
- var defaultColor = NSColor(hex: "#FFFFFF") // Plain text in Xcode
- var colorMap: [UInt32: NSColor] = [
+ static let defaultColor = NSColor(hex: "#FFFFFF") // Plain text in Xcode
+ static let colorMap: [UInt32: NSColor] = [
HighlightSection.rawValue: NSColor(hex: "#91D462"), // Class name in Xcode
HighlightField.rawValue: NSColor(hex: "#FC5FA3"), // Keywords in Xcode
HighlightPublicKey.rawValue: NSColor(hex: "#FD8F3F"), // Preprocessor directives in Xcode
diff --git a/WireGuard/WireGuard/UI/macOS/View/ConfTextStorage.swift b/WireGuard/WireGuard/UI/macOS/View/ConfTextStorage.swift
index 423e7cd..fb8a382 100644
--- a/WireGuard/WireGuard/UI/macOS/View/ConfTextStorage.swift
+++ b/WireGuard/WireGuard/UI/macOS/View/ConfTextStorage.swift
@@ -11,7 +11,7 @@ class ConfTextStorage: NSTextStorage {
private let boldFont = NSFont.boldSystemFont(ofSize: fontSize)
private lazy var italicFont = NSFontManager.shared.convert(defaultFont, toHaveTrait: .italicFontMask)
- private var textColorTheme: ConfTextColorTheme?
+ private var textColorTheme: ConfTextColorTheme.Type?
private let backingStore: NSMutableAttributedString
private(set) var hasError = false
@@ -47,7 +47,7 @@ class ConfTextStorage: NSTextStorage {
}
}
- func updateAttributes(for textColorTheme: ConfTextColorTheme) {
+ func updateAttributes(for textColorTheme: ConfTextColorTheme.Type) {
self.textColorTheme = textColorTheme
highlightSyntax()
}
@@ -82,19 +82,18 @@ class ConfTextStorage: NSTextStorage {
}
func highlightSyntax() {
+ guard let textColorTheme = textColorTheme else { return }
hasError = false
privateKeyString = nil
let fullTextRange = NSRange(location: 0, length: (backingStore.string as NSString).length)
backingStore.beginEditing()
- if let textColorTheme = textColorTheme {
- let defaultAttributes: [NSAttributedString.Key: Any] = [
- .foregroundColor: textColorTheme.defaultColor,
- .font: defaultFont
- ]
- backingStore.setAttributes(defaultAttributes, range: fullTextRange)
- }
+ let defaultAttributes: [NSAttributedString.Key: Any] = [
+ .foregroundColor: textColorTheme.defaultColor,
+ .font: defaultFont
+ ]
+ backingStore.setAttributes(defaultAttributes, range: fullTextRange)
var spans = highlight_config(backingStore.string.cString(using: String.Encoding.utf8))!
while spans.pointee.type != HighlightEnd {
@@ -102,10 +101,8 @@ class ConfTextStorage: NSTextStorage {
let range = NSRange(location: span.start, length: span.len)
backingStore.setAttributes(nonColorAttributes(for: span.type), range: range)
- if let textColorTheme = textColorTheme {
- let color = textColorTheme.colorMap[span.type.rawValue] ?? textColorTheme.defaultColor
- backingStore.addAttribute(.foregroundColor, value: color, range: range)
- }
+ let color = textColorTheme.colorMap[span.type.rawValue] ?? textColorTheme.defaultColor
+ backingStore.addAttribute(.foregroundColor, value: color, range: range)
if span.type == HighlightError {
hasError = true
diff --git a/WireGuard/WireGuard/UI/macOS/View/ConfTextView.swift b/WireGuard/WireGuard/UI/macOS/View/ConfTextView.swift
index 481cbaa..bf0f822 100644
--- a/WireGuard/WireGuard/UI/macOS/View/ConfTextView.swift
+++ b/WireGuard/WireGuard/UI/macOS/View/ConfTextView.swift
@@ -46,9 +46,9 @@ class ConfTextView: NSTextView {
private func updateTheme() {
switch effectiveAppearance.bestMatch(from: [.aqua, .darkAqua]) ?? .aqua {
case .darkAqua:
- confTextStorage.updateAttributes(for: ConfTextDarkAquaColorTheme())
+ confTextStorage.updateAttributes(for: ConfTextDarkAquaColorTheme.self)
default:
- confTextStorage.updateAttributes(for: ConfTextAquaColorTheme())
+ confTextStorage.updateAttributes(for: ConfTextAquaColorTheme.self)
}
}