Skip to content

Commit 070b60e

Browse files
committed
Made switching themes more responsive
1 parent 65e5705 commit 070b60e

File tree

7 files changed

+57
-8
lines changed

7 files changed

+57
-8
lines changed

Nyxian.xcodeproj/xcuserdata/seanistethered.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,21 @@
2020
landmarkType = "9">
2121
</BreakpointContent>
2222
</BreakpointProxy>
23+
<BreakpointProxy
24+
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
25+
<BreakpointContent
26+
uuid = "4A7CF9B0-35AF-4413-94B9-49914262D4A4"
27+
shouldBeEnabled = "Yes"
28+
ignoreCount = "0"
29+
continueAfterRunningActions = "No"
30+
filePath = "Nyxian/UI/Settings/CustomizationViewController.swift"
31+
startingColumnNumber = "9223372036854775807"
32+
endingColumnNumber = "9223372036854775807"
33+
startingLineNumber = "122"
34+
endingLineNumber = "122"
35+
landmarkName = "tableView(_:cellForRowAt:)"
36+
landmarkType = "7">
37+
</BreakpointContent>
38+
</BreakpointProxy>
2339
</Breakpoints>
2440
</Bucket>

Nyxian/UI/CodeEditor/CodeEditor.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ import TreeSitterObjc
2525
import TreeSitterXML
2626
import GameController
2727

28+
func booleanDefaults(key: String, defaultValue: Bool) -> Bool {
29+
if UserDefaults.standard.object(forKey: key) == nil {
30+
return defaultValue
31+
}
32+
return UserDefaults.standard.bool(forKey: key)
33+
}
34+
2835
// MARK: - OnDissapear Container
2936
class CodeEditorViewController: UIViewController {
3037
private(set) var path: String
@@ -120,13 +127,6 @@ class CodeEditorViewController: UIViewController {
120127
self.navigationController?.navigationBar.standardAppearance = currentNavigationBarAppearance
121128
self.navigationController?.navigationBar.scrollEdgeAppearance = currentNavigationBarAppearance
122129

123-
func booleanDefaults(key: String, defaultValue: Bool) -> Bool {
124-
if UserDefaults.standard.object(forKey: key) == nil {
125-
return defaultValue
126-
}
127-
return UserDefaults.standard.bool(forKey: key)
128-
}
129-
130130
self.textView.showLineNumbers = booleanDefaults(key: "LDEShowLineNumbers", defaultValue: true)
131131
self.textView.showSpaces = booleanDefaults(key: "LDEShowSpaces", defaultValue: true)
132132
self.textView.isLineWrappingEnabled = booleanDefaults(key: "LDEWrapLines", defaultValue: true)

Nyxian/UI/Settings/CustomizationViewController.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,29 @@ int main(void)
118118
}
119119
} else if indexPath.row == 2 {
120120
cell = StepperTableCell(title: "Font Size", key: "LDEFontSize", defaultValue: 10, minValue: 8, maxValue: 15)
121+
(cell as! StepperTableCell).callback = { newValue in
122+
self.themePreviewCell!.switchTheme(theme: getCurrentSelectedTheme())
123+
}
121124
} else if indexPath.row == 3 {
122125
cell = SwitchTableCell(title: "Show Line Numbers", key: "LDEShowLineNumbers", defaultValue: true)
126+
(cell as! SwitchTableCell).callback = { newValue in
127+
self.themePreviewCell!.switchTheme(theme: getCurrentSelectedTheme())
128+
}
123129
} else if indexPath.row == 4 {
124130
cell = SwitchTableCell(title: "Show Spaces", key: "LDEShowSpaces", defaultValue: true)
131+
(cell as! SwitchTableCell).callback = { newValue in
132+
self.themePreviewCell!.switchTheme(theme: getCurrentSelectedTheme())
133+
}
125134
} else if indexPath.row == 5 {
126135
cell = SwitchTableCell(title: "Wrap Lines", key: "LDEWrapLines", defaultValue: true)
136+
(cell as! SwitchTableCell).callback = { newValue in
137+
self.themePreviewCell!.switchTheme(theme: getCurrentSelectedTheme())
138+
}
127139
} else {
128140
cell = SwitchTableCell(title: "Show Line Breaks", key: "LDEShowLineBreaks", defaultValue: true)
141+
(cell as! SwitchTableCell).callback = { newValue in
142+
self.themePreviewCell!.switchTheme(theme: getCurrentSelectedTheme())
143+
}
129144
}
130145
} else {
131146
cell = UITableViewCell(style: .default, reuseIdentifier: nil)

Nyxian/UI/TableCells/StepperCell.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import Foundation
2121
import UIKit
2222

2323
class StepperTableCell: UITableViewCell {
24+
var callback: (Int) -> Void = { _ in }
25+
2426
let title: String
2527

2628
let key: String
@@ -99,6 +101,7 @@ class StepperTableCell: UITableViewCell {
99101

100102
@objc func stepperValueChanged(sender: UIStepper) {
101103
self.value = Int(sender.value)
104+
self.callback(self.value)
102105
self.label?.text = "\(self.title): \(Int(sender.value))"
103106
}
104107
}

Nyxian/UI/TableCells/SwitchCell.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import Foundation
2121
import UIKit
2222

2323
class SwitchTableCell: UITableViewCell {
24+
var callback: (Bool) -> Void = { _ in }
25+
2426
let title: String
2527

2628
var toggle: UISwitch? = nil
@@ -98,5 +100,6 @@ class SwitchTableCell: UITableViewCell {
98100

99101
@objc private func toggleValueChanged(_ sender: UISwitch) {
100102
self.value = sender.isOn
103+
self.callback(self.value)
101104
}
102105
}

Nyxian/UI/TableCells/ThemePickerPreviewCell.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,16 +102,28 @@ extension ThemePickerPreviewCell {
102102
textView.selectionBarColor = viewModel.theme.textColor
103103
textView.selectionHighlightColor = viewModel.theme.textColor.withAlphaComponent(0.2)
104104
textView.textContainerInset = UIEdgeInsets(top: 4, left: 2, bottom: 4, right: 0)
105-
textView.showLineNumbers = true
106105
textView.isEditable = false
107106
textView.isSelectable = false
107+
textView.showLineNumbers = booleanDefaults(key: "LDEShowLineNumbers", defaultValue: true)
108+
textView.showSpaces = booleanDefaults(key: "LDEShowSpaces", defaultValue: true)
109+
textView.isLineWrappingEnabled = booleanDefaults(key: "LDEWrapLines", defaultValue: true)
110+
textView.showLineBreaks = booleanDefaults(key: "LDEShowLineBreaks", defaultValue: true)
111+
textView.lineSelectionDisplayType = .line
108112
}
109113

110114
func switchTheme(theme: LindDEThemer) {
115+
theme.fontSize = UserDefaults.standard.object(forKey: "LDEFontSize") == nil ? 10.0 : CGFloat(UserDefaults.standard.integer(forKey: "LDEFontSize"))
111116
textView.theme = theme
112117
textView.backgroundColor = theme.backgroundColor
113118
textView.insertionPointColor = theme.textColor
114119
textView.selectionBarColor = theme.textColor
115120
textView.selectionHighlightColor = theme.textColor.withAlphaComponent(0.2)
121+
textView.showLineNumbers = booleanDefaults(key: "LDEShowLineNumbers", defaultValue: true)
122+
textView.showSpaces = booleanDefaults(key: "LDEShowSpaces", defaultValue: true)
123+
textView.isLineWrappingEnabled = booleanDefaults(key: "LDEWrapLines", defaultValue: true)
124+
textView.showLineBreaks = booleanDefaults(key: "LDEShowLineBreaks", defaultValue: true)
125+
textView.lineSelectionDisplayType = .line
126+
textView.setNeedsLayout()
127+
textView.layoutIfNeeded()
116128
}
117129
}

0 commit comments

Comments
 (0)