.../Source/App/Preferences/ColorTheme/CutBoxColorTheme.swift
Line | Count | Source |
1 | | // |
2 | | // CutBoxColorTheme.swift |
3 | | // CutBox |
4 | | // |
5 | | // Created by Jason Milkins on 12/4/18. |
6 | | // Copyright © 2018-2023 ocodo. All rights reserved. |
7 | | // |
8 | | |
9 | | import Cocoa |
10 | | |
11 | | struct SearchTextTheme: Equatable { |
12 | | var cursorColor: NSColor |
13 | | var textColor: NSColor |
14 | | var backgroundColor: NSColor |
15 | | var placeholderTextColor: NSColor |
16 | | } |
17 | | |
18 | | struct ClipTheme: Equatable { |
19 | | var backgroundColor: NSColor |
20 | | var textColor: NSColor |
21 | | var highlightColor: NSColor |
22 | | var highlightTextColor: NSColor |
23 | | } |
24 | | |
25 | | struct PreviewTheme: Equatable { |
26 | | var textColor: NSColor |
27 | | var backgroundColor: NSColor |
28 | | var selectedTextBackgroundColor: NSColor |
29 | | var selectedTextColor: NSColor |
30 | | } |
31 | | |
32 | | class CutBoxColorTheme: Equatable, CustomStringConvertible { |
33 | 3 | static func == (lhs: CutBoxColorTheme, rhs: CutBoxColorTheme) -> Bool { |
34 | 3 | lhs.description == rhs.description |
35 | 3 | } |
36 | | |
37 | | let name: String |
38 | | var spacing: CGFloat |
39 | | let popupBackgroundColor: NSColor |
40 | | let searchText: SearchTextTheme |
41 | | let clip: ClipTheme |
42 | | let preview: PreviewTheme |
43 | | |
44 | | init(name: String, |
45 | | popupBackgroundColor: NSColor, |
46 | | searchText: SearchTextTheme, |
47 | | clip: ClipTheme, |
48 | | preview: PreviewTheme, |
49 | 1.85k | spacing: CGFloat = 5) { |
50 | 1.85k | |
51 | 1.85k | self.name = name |
52 | 1.85k | self.spacing = spacing |
53 | 1.85k | self.popupBackgroundColor = popupBackgroundColor |
54 | 1.85k | self.searchText = searchText |
55 | 1.85k | self.clip = clip |
56 | 1.85k | self.preview = preview |
57 | 1.85k | } |
58 | | |
59 | 12 | var description: String { |
60 | 12 | """ |
61 | 12 | { |
62 | 12 | "name": "\(name)", |
63 | 12 | "popupBackgroundColor": "\(popupBackgroundColor)", |
64 | 12 | "searchText": { |
65 | 12 | "cursorColor": "\(searchText.cursorColor)", |
66 | 12 | "textColor": "\(searchText.textColor)", |
67 | 12 | "backgroundColor": "\(searchText.backgroundColor)", |
68 | 12 | "placeholderTextColor": "\(searchText.placeholderTextColor)" |
69 | 12 | }, |
70 | 12 | "clip": { |
71 | 12 | "backgroundColor": "\(clip.backgroundColor)", |
72 | 12 | "textColor": "\(clip.textColor)", |
73 | 12 | "highlightColor": "\(clip.highlightColor)", |
74 | 12 | "highlightTextColor": "\(clip.highlightTextColor)" |
75 | 12 | }, |
76 | 12 | "preview": { |
77 | 12 | "textColor": "\(preview.textColor)", |
78 | 12 | "backgroundColor": "\(preview.backgroundColor)", |
79 | 12 | "selectedTextBackgroundColor": "\(preview.selectedTextBackgroundColor)", |
80 | 12 | "selectedTextColor": "\(preview.selectedTextColor)" |
81 | 12 | }, |
82 | 12 | "spacing": \(spacing), |
83 | 12 | } |
84 | 12 | """ |
85 | 12 | } |
86 | | } |