From bfadf4eb9b4e14afbfcacb69767b4c43b0d5d672 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Thu, 25 Apr 2024 18:04:19 +0200 Subject: [PATCH] feat: moved widgets settings to the new design --- Kit/Widgets/BarChart.swift | 44 ++++++----- Kit/Widgets/Battery.swift | 13 ++-- Kit/Widgets/LineChart.swift | 88 ++++++++++------------ Kit/Widgets/Memory.swift | 33 ++++----- Kit/Widgets/Mini.swift | 35 ++++----- Kit/Widgets/NetworkChart.swift | 94 +++++++++++------------- Kit/Widgets/PieChart.swift | 21 +++--- Kit/Widgets/Speed.swift | 129 +++++++++++++++------------------ Kit/Widgets/Stack.swift | 30 ++++---- Kit/Widgets/State.swift | 25 +++---- Kit/Widgets/Tachometer.swift | 21 +++--- Kit/plugins/Charts.swift | 8 +- Kit/plugins/Store.swift | 5 +- Stats/Views/Dashboard.swift | 2 +- 14 files changed, 247 insertions(+), 301 deletions(-) diff --git a/Kit/Widgets/BarChart.swift b/Kit/Widgets/BarChart.swift index 1a73be38..99421f68 100644 --- a/Kit/Widgets/BarChart.swift +++ b/Kit/Widgets/BarChart.swift @@ -22,8 +22,8 @@ public class BarChart: WidgetWrapper { private var _pressureLevel: DispatchSource.MemoryPressureEvent = .normal private var _colorZones: colorZones = (0.6, 0.8) - private var boxSettingsView: NSView? = nil - private var frameSettingsView: NSView? = nil + private var boxSettingsView: NSSwitch? = nil + private var frameSettingsView: NSSwitch? = nil public init(title: String, config: NSDictionary?, preview: Bool = false) { var widgetTitle: String = title @@ -240,32 +240,30 @@ public class BarChart: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Label"), - action: #selector(self.toggleLabel), - state: self.labelState - )) - - self.boxSettingsView = toggleSettingRow( - title: localizedString("Box"), + let box = switchView( action: #selector(self.toggleBox), state: self.boxState ) - view.addArrangedSubview(self.boxSettingsView!) - - self.frameSettingsView = toggleSettingRow( - title: localizedString("Frame"), + self.boxSettingsView = box + let frame = switchView( action: #selector(self.toggleFrame), state: self.frameState ) - view.addArrangedSubview(self.frameSettingsView!) + self.frameSettingsView = frame - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Color"), - action: #selector(self.toggleColor), - items: self.colors, - selected: self.colorState.key - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Label"), component: switchView( + action: #selector(self.toggleLabel), + state: self.labelState + )), + PreferencesRow(localizedString("Color"), component: selectView( + action: #selector(self.toggleColor), + items: self.colors, + selected: self.colorState.key + )), + PreferencesRow(localizedString("Box"), component: box), + PreferencesRow(localizedString("Frame"), component: frame) + ])) return view } @@ -281,7 +279,7 @@ public class BarChart: WidgetWrapper { Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_box", value: self.boxState) if self.frameState { - findAndToggleNSControlState(self.frameSettingsView, state: .off) + self.frameSettingsView?.state = .off self.frameState = false Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_frame", value: self.frameState) } @@ -294,7 +292,7 @@ public class BarChart: WidgetWrapper { Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_frame", value: self.frameState) if self.boxState { - findAndToggleNSControlState(self.boxSettingsView, state: .off) + self.boxSettingsView?.state = .off self.boxState = false Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_box", value: self.boxState) } diff --git a/Kit/Widgets/Battery.swift b/Kit/Widgets/Battery.swift index a89cb647..d65125f7 100644 --- a/Kit/Widgets/Battery.swift +++ b/Kit/Widgets/Battery.swift @@ -586,12 +586,13 @@ public class BatteryDetailsWidget: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Mode"), - action: #selector(self.toggleMode), - items: BatteryInfo, - selected: self.mode - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Mode"), component: selectView( + action: #selector(self.toggleMode), + items: BatteryInfo, + selected: self.mode + )) + ])) return view } diff --git a/Kit/Widgets/LineChart.swift b/Kit/Widgets/LineChart.swift index 51e057bb..063b4f0c 100644 --- a/Kit/Widgets/LineChart.swift +++ b/Kit/Widgets/LineChart.swift @@ -54,8 +54,8 @@ public class LineChart: WidgetWrapper { } } - private var boxSettingsView: NSView? = nil - private var frameSettingsView: NSView? = nil + private var boxSettingsView: NSSwitch? = nil + private var frameSettingsView: NSSwitch? = nil public init(title: String, config: NSDictionary?, preview: Bool = false) { var widgetTitle: String = title @@ -263,58 +263,48 @@ public class LineChart: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Label"), - action: #selector(self.toggleLabel), - state: self.labelState - )) - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Value"), - action: #selector(self.toggleValue), - state: self.valueState - )) - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Colorize value"), - action: #selector(self.toggleValueColor), - state: self.valueColorState - )) - - self.boxSettingsView = toggleSettingRow( - title: localizedString("Box"), + let box = switchView( action: #selector(self.toggleBox), state: self.boxState ) - view.addArrangedSubview(self.boxSettingsView!) - - self.frameSettingsView = toggleSettingRow( - title: localizedString("Frame"), + self.boxSettingsView = box + let frame = switchView( action: #selector(self.toggleFrame), state: self.frameState ) - view.addArrangedSubview(self.frameSettingsView!) + self.frameSettingsView = frame - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Color"), - action: #selector(self.toggleColor), - items: self.colors, - selected: self.colorState.key - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Number of reads in the chart"), - action: #selector(self.toggleHistoryCount), - items: self.historyNumbers, - selected: "\(self.historyCount)" - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Scaling"), - action: #selector(self.toggleScale), - items: Scale.allCases.filter({ $0 != .fixed }), - selected: self.scaleState.key - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Label"), component: switchView( + action: #selector(self.toggleLabel), + state: self.labelState + )), + PreferencesRow(localizedString("Value"), component: switchView( + action: #selector(self.toggleValue), + state: self.valueState + )), + PreferencesRow(localizedString("Box"), component: box), + PreferencesRow(localizedString("Frame"), component: frame), + PreferencesRow(localizedString("Color"), component: selectView( + action: #selector(self.toggleColor), + items: self.colors, + selected: self.colorState.key + )), + PreferencesRow(localizedString("Colorize value"), component: switchView( + action: #selector(self.toggleValueColor), + state: self.valueColorState + )), + PreferencesRow(localizedString("Number of reads in the chart"), component: selectView( + action: #selector(self.toggleHistoryCount), + items: self.historyNumbers, + selected: "\(self.historyCount)" + )), + PreferencesRow(localizedString("Scaling"), component: selectView( + action: #selector(self.toggleScale), + items: Scale.allCases.filter({ $0 != .fixed }), + selected: self.scaleState.key + )) + ])) return view } @@ -330,7 +320,7 @@ public class LineChart: WidgetWrapper { Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_box", value: self.boxState) if self.frameState { - findAndToggleNSControlState(self.frameSettingsView, state: .off) + self.frameSettingsView?.state = .off self.frameState = false Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_frame", value: self.frameState) } @@ -343,7 +333,7 @@ public class LineChart: WidgetWrapper { Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_frame", value: self.frameState) if self.boxState { - findAndToggleNSControlState(self.boxSettingsView, state: .off) + self.boxSettingsView?.state = .off self.boxState = false Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_box", value: self.boxState) } diff --git a/Kit/Widgets/Memory.swift b/Kit/Widgets/Memory.swift index 9aa7c043..8d3151d9 100644 --- a/Kit/Widgets/Memory.swift +++ b/Kit/Widgets/Memory.swift @@ -148,24 +148,21 @@ public class MemoryWidget: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Reverse values order"), - action: #selector(self.toggleOrder), - state: self.orderReversedState - )) - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Show symbols"), - action: #selector(self.toggleSymbols), - state: self.symbolsState - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Color"), - action: #selector(self.toggleColor), - items: Color.allCases.filter({ $0 != .cluster }), - selected: self.colorState.key - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Color"), component: selectView( + action: #selector(self.toggleColor), + items: Color.allCases.filter({ $0 != .cluster }), + selected: self.colorState.key + )), + PreferencesRow(localizedString("Show symbols"), component: switchView( + action: #selector(self.toggleSymbols), + state: self.symbolsState + )), + PreferencesRow(localizedString("Reverse order"), component: switchView( + action: #selector(self.toggleOrder), + state: self.orderReversedState + )) + ])) return view } diff --git a/Kit/Widgets/Mini.swift b/Kit/Widgets/Mini.swift index 1941eee2..7c7e4e77 100644 --- a/Kit/Widgets/Mini.swift +++ b/Kit/Widgets/Mini.swift @@ -189,25 +189,22 @@ public class Mini: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Label"), - action: #selector(self.toggleLabel), - state: self.labelState - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Color"), - action: #selector(self.toggleColor), - items: self.colors, - selected: self.colorState.key - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Alignment"), - action: #selector(self.toggleAlignment), - items: Alignments, - selected: self.alignmentState - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Label"), component: switchView( + action: #selector(self.toggleLabel), + state: self.labelState + )), + PreferencesRow(localizedString("Color"), component: selectView( + action: #selector(self.toggleColor), + items: self.colors, + selected: self.colorState.key + )), + PreferencesRow(localizedString("Alignment"), component: selectView( + action: #selector(self.toggleAlignment), + items: Alignments, + selected: self.alignmentState + )) + ])) return view } diff --git a/Kit/Widgets/NetworkChart.swift b/Kit/Widgets/NetworkChart.swift index 1b7c9c6d..6124da97 100644 --- a/Kit/Widgets/NetworkChart.swift +++ b/Kit/Widgets/NetworkChart.swift @@ -48,8 +48,8 @@ public class NetworkChart: WidgetWrapper { ] private var colors: [Color] = Color.allCases - private var boxSettingsView: NSView? = nil - private var frameSettingsView: NSView? = nil + private var boxSettingsView: NSSwitch? = nil + private var frameSettingsView: NSSwitch? = nil public var NSLabelCharts: [NSAttributedString] = [] @@ -253,59 +253,49 @@ public class NetworkChart: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Label"), - action: #selector(toggleLabel), - state: self.labelState - )) - - self.boxSettingsView = toggleSettingRow( - title: localizedString("Box"), - action: #selector(toggleBox), + let box = switchView( + action: #selector(self.toggleBox), state: self.boxState ) - view.addArrangedSubview(self.boxSettingsView!) - - self.frameSettingsView = toggleSettingRow( - title: localizedString("Frame"), - action: #selector(toggleFrame), + self.boxSettingsView = box + let frame = switchView( + action: #selector(self.toggleFrame), state: self.frameState ) - view.addArrangedSubview(self.frameSettingsView!) + self.frameSettingsView = frame - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Color of download"), - action: #selector(toggleDownloadColor), - items: self.colors, - selected: self.downloadColor.key - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Color of upload"), - action: #selector(toggleUploadColor), - items: self.colors, - selected: self.uploadColor.key - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Number of reads in the chart"), - action: #selector(toggleHistoryCount), - items: self.historyNumbers, - selected: "\(self.historyCount)" - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Scaling"), - action: #selector(toggleScale), - items: Scale.allCases.filter({ $0 != .fixed }), - selected: self.scaleState.key - )) - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Reverse order"), - action: #selector(toggleReverseOrder), - state: self.reverseOrderState - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Label"), component: switchView( + action: #selector(self.toggleLabel), + state: self.labelState + )), + PreferencesRow(localizedString("Box"), component: box), + PreferencesRow(localizedString("Frame"), component: frame), + PreferencesRow(localizedString("Reverse order"), component: switchView( + action: #selector(self.toggleReverseOrder), + state: self.reverseOrderState + )), + PreferencesRow(localizedString("Color of download"), component: selectView( + action: #selector(self.toggleDownloadColor), + items: self.colors, + selected: self.downloadColor.key + )), + PreferencesRow(localizedString("Color of upload"), component: selectView( + action: #selector(self.toggleUploadColor), + items: self.colors, + selected: self.uploadColor.key + )), + PreferencesRow(localizedString("Number of reads in the chart"), component: selectView( + action: #selector(self.toggleHistoryCount), + items: self.historyNumbers, + selected: "\(self.historyCount)" + )), + PreferencesRow(localizedString("Scaling"), component: selectView( + action: #selector(self.toggleScale), + items: Scale.allCases.filter({ $0 != .fixed }), + selected: self.scaleState.key + )) + ])) return view } @@ -321,7 +311,7 @@ public class NetworkChart: WidgetWrapper { Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_box", value: self.boxState) if self.frameState { - findAndToggleNSControlState(self.frameSettingsView, state: .off) + self.frameSettingsView?.state = .off self.frameState = false Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_frame", value: self.frameState) } @@ -334,7 +324,7 @@ public class NetworkChart: WidgetWrapper { Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_frame", value: self.frameState) if self.boxState { - findAndToggleNSControlState(self.boxSettingsView, state: .off) + self.boxSettingsView?.state = .off self.boxState = false Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_box", value: self.boxState) } diff --git a/Kit/Widgets/PieChart.swift b/Kit/Widgets/PieChart.swift index 08a7ef65..13d00101 100644 --- a/Kit/Widgets/PieChart.swift +++ b/Kit/Widgets/PieChart.swift @@ -108,17 +108,16 @@ public class PieChart: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Label"), - action: #selector(self.toggleLabel), - state: self.labelState - )) - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Monochrome accent"), - action: #selector(self.toggleMonochrome), - state: self.monochromeState - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Label"), component: switchView( + action: #selector(self.toggleLabel), + state: self.labelState + )), + PreferencesRow(localizedString("Monochrome accent"), component: switchView( + action: #selector(self.toggleMonochrome), + state: self.monochromeState + )) + ])) return view } diff --git a/Kit/Widgets/Speed.swift b/Kit/Widgets/Speed.swift index 2e058d7c..b73c403a 100644 --- a/Kit/Widgets/Speed.swift +++ b/Kit/Widgets/Speed.swift @@ -36,9 +36,9 @@ public class SpeedWidget: WidgetWrapper { private var width: CGFloat = 58 - private var valueColorView: NSView? = nil - private var transparentIconView: NSView? = nil - private var valueAlignmentView: NSView? = nil + private var valueColorView: NSSwitch? = nil + private var transparentIconView: NSSwitch? = nil + private var valueAlignmentView: NSPopUpButton? = nil private var downloadColor: NSColor { self.monochromeState ? MonochromeColor.blue : (self.downloadColorState.additional as? NSColor ?? NSColor.systemBlue) @@ -427,82 +427,69 @@ public class SpeedWidget: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Display mode"), - action: #selector(changeDisplayMode), - items: SensorsWidgetMode.filter({ $0.key == "oneRow" || $0.key == "twoRows"}), - selected: self.modeState - )) - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Reverse order"), - action: #selector(toggleReverseOrder), - state: self.reverseOrderState - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Pictogram"), - action: #selector(toggleIcon), - items: SpeedPictogram, - selected: self.icon - )) - - self.transparentIconView = toggleSettingRow( - title: localizedString("Transparent pictogram when no activity"), - action: #selector(toggleTransparentIcons), + let pictogramTransparency = switchView( + action: #selector(self.toggleTransparentIcons), state: self.transparentIconsState ) - view.addArrangedSubview(self.transparentIconView!) - findAndToggleEnableNSControlState(self.transparentIconView!, state: self.icon != "none") + pictogramTransparency.isEnabled = self.icon != "none" + self.transparentIconView = pictogramTransparency - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Value"), - action: #selector(toggleValue), - state: self.valueState - )) - - self.valueColorView = toggleSettingRow( - title: localizedString("Colorize value"), - action: #selector(toggleValueColor), + let colorizeValue = switchView( + action: #selector(self.toggleValueColor), state: self.valueColorState ) - view.addArrangedSubview(self.valueColorView!) - findAndToggleEnableNSControlState(self.valueColorView, state: self.valueState) + colorizeValue.isEnabled = self.valueState + self.valueColorView = colorizeValue - self.valueAlignmentView = selectSettingsRow( - title: localizedString("Alignment"), + let alignment = selectView( action: #selector(toggleValueAlignment), items: Alignments, selected: self.valueAlignmentState ) - view.addArrangedSubview(self.valueAlignmentView!) - findAndToggleEnableNSControlState(self.valueAlignmentView, state: self.valueState) + alignment.isEnabled = self.valueState + self.valueAlignmentView = alignment - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Units"), - action: #selector(toggleUnits), - state: self.unitsState - )) - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Monochrome accent"), - action: #selector(toggleMonochrome), - state: self.monochromeState - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Color of upload"), - action: #selector(toggleUploadColor), - items: Color.allColors, - selected: self.uploadColorState.key - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Color of download"), - action: #selector(toggleDownloadColor), - items: Color.allColors, - selected: self.downloadColorState.key - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Display mode"), component: selectView( + action: #selector(self.changeDisplayMode), + items: SensorsWidgetMode.filter({ $0.key == "oneRow" || $0.key == "twoRows"}), + selected: self.modeState + )), + PreferencesRow(localizedString("Reverse order"), component: switchView( + action: #selector(self.toggleReverseOrder), + state: self.reverseOrderState + )), + PreferencesRow(localizedString("Pictogrammode"), component: selectView( + action: #selector(self.toggleIcon), + items: SpeedPictogram, + selected: self.icon + )), + PreferencesRow(localizedString("Transparent pictogram when no activity"), component: pictogramTransparency), + PreferencesRow(localizedString("Value"), component: switchView( + action: #selector(self.toggleValue), + state: self.valueState + )), + PreferencesRow(localizedString("Colorize value"), component: colorizeValue), + PreferencesRow(localizedString("Alignment"), component: alignment), + PreferencesRow(localizedString("Units"), component: switchView( + action: #selector(self.toggleUnits), + state: self.unitsState + )), + PreferencesRow(localizedString("Monochrome accent"), component: switchView( + action: #selector(self.toggleMonochrome), + state: self.monochromeState + )), + PreferencesRow(localizedString("Color of download"), component: selectView( + action: #selector(self.toggleDownloadColor), + items: Color.allColors, + selected: self.downloadColorState.key + )), + PreferencesRow(localizedString("Color of upload"), component: selectView( + action: #selector(self.toggleUploadColor), + items: Color.allColors, + selected: self.uploadColorState.key + )) + ])) return view } @@ -523,8 +510,8 @@ public class SpeedWidget: WidgetWrapper { @objc private func toggleValue(_ sender: NSControl) { self.valueState = controlState(sender) - findAndToggleEnableNSControlState(self.valueColorView, state: self.valueState) - findAndToggleEnableNSControlState(self.valueAlignmentView, state: self.valueState) + self.valueColorView?.isEnabled = self.valueState + self.valueAlignmentView?.isEnabled = self.valueState Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_value", value: self.valueState) self.display() } @@ -538,7 +525,7 @@ public class SpeedWidget: WidgetWrapper { @objc private func toggleIcon(_ sender: NSMenuItem) { guard let key = sender.representedObject as? String else { return } self.icon = key - findAndToggleEnableNSControlState(self.transparentIconView, state: self.icon != "none") + self.transparentIconView?.isEnabled = self.icon != "none" Store.shared.set(key: "\(self.title)_\(self.type.rawValue)_icon", value: key) self.display() } diff --git a/Kit/Widgets/Stack.swift b/Kit/Widgets/Stack.swift index ac42fd24..abe456a6 100644 --- a/Kit/Widgets/Stack.swift +++ b/Kit/Widgets/Stack.swift @@ -231,26 +231,24 @@ public class StackWidget: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Display mode"), - action: #selector(self.changeDisplayMode), - items: SensorsWidgetMode, - selected: self.modeState.rawValue - )) - + var rows = [ + PreferencesRow(localizedString("Display mode"), component: selectView( + action: #selector(self.changeDisplayMode), + items: SensorsWidgetMode, + selected: self.modeState.rawValue + )), + PreferencesRow(localizedString("Monospaced font"), component: switchView( + action: #selector(self.toggleMonospacedFont), + state: self.monospacedFontState + )) + ] if self.title != "Clock" { - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Static width"), + rows.append(PreferencesRow(localizedString("Static width"), component: switchView( action: #selector(self.toggleSize), state: self.fixedSizeState - )) + ))) } - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Monospaced font"), - action: #selector(self.toggleMonospacedFont), - state: self.monospacedFontState - )) + view.addArrangedSubview(PreferencesSection(rows)) view.addArrangedSubview(self.orderTableView) diff --git a/Kit/Widgets/State.swift b/Kit/Widgets/State.swift index 478e0f38..e06e6e5c 100644 --- a/Kit/Widgets/State.swift +++ b/Kit/Widgets/State.swift @@ -74,19 +74,18 @@ public class StateWidget: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Active state color"), - action: #selector(self.toggleActiveColor), - items: self.colors, - selected: self.activeColorState.key - )) - - view.addArrangedSubview(selectSettingsRow( - title: localizedString("Nonactive state color"), - action: #selector(self.toggleNonactiveColor), - items: self.colors, - selected: self.nonactiveColorState.key - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Active state color"), component: selectView( + action: #selector(self.toggleActiveColor), + items: self.colors, + selected: self.activeColorState.key + )), + PreferencesRow(localizedString("Nonactive state color"), component: selectView( + action: #selector(self.toggleNonactiveColor), + items: self.colors, + selected: self.nonactiveColorState.key + )) + ])) return view } diff --git a/Kit/Widgets/Tachometer.swift b/Kit/Widgets/Tachometer.swift index 72578c63..ca1aebb6 100644 --- a/Kit/Widgets/Tachometer.swift +++ b/Kit/Widgets/Tachometer.swift @@ -90,17 +90,16 @@ public class Tachometer: WidgetWrapper { public override func settings() -> NSView { let view = SettingsContainerView() - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Label"), - action: #selector(self.toggleLabel), - state: self.labelState - )) - - view.addArrangedSubview(toggleSettingRow( - title: localizedString("Monochrome accent"), - action: #selector(self.toggleMonochrome), - state: self.monochromeState - )) + view.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("Label"), component: switchView( + action: #selector(self.toggleLabel), + state: self.labelState + )), + PreferencesRow(localizedString("Monochrome accent"), component: switchView( + action: #selector(self.toggleMonochrome), + state: self.monochromeState + )) + ])) return view } diff --git a/Kit/plugins/Charts.swift b/Kit/plugins/Charts.swift index d82a4b01..ee8509f4 100644 --- a/Kit/plugins/Charts.swift +++ b/Kit/plugins/Charts.swift @@ -245,14 +245,8 @@ public class LineChartView: NSView { var str: String = "" let flatList = self.points.map{ $0?.value ?? 0 } - if let value = flatList.min() { - str += self.toolTipFunc != nil ? self.toolTipFunc!(DoubleValue(value)) : "\(Int(value.rounded(toPlaces: 2) * 100))\(self.suffix)" - } if let value = flatList.max() { - if !str.isEmpty { - str += " / " - } - str += self.toolTipFunc != nil ? self.toolTipFunc!(DoubleValue(value)) : "\(Int(value.rounded(toPlaces: 2) * 100))\(self.suffix)" + str = self.toolTipFunc != nil ? self.toolTipFunc!(DoubleValue(value)) : "\(Int(value.rounded(toPlaces: 2) * 100))\(self.suffix)" } let textWidth = str.widthOfString(usingFont: stringAttributes[NSAttributedString.Key.font] as! NSFont) let y = self.flipY ? 1 : height - 9 diff --git a/Kit/plugins/Store.swift b/Kit/plugins/Store.swift index 781e5c0d..38a0029f 100644 --- a/Kit/plugins/Store.swift +++ b/Kit/plugins/Store.swift @@ -72,9 +72,6 @@ public class Store { public func `import`(from url: URL) { guard let id = Bundle.main.bundleIdentifier, let dict = NSDictionary(contentsOf: url) as? [String: Any] else { return } self.defaults.setPersistentDomain(dict, forName: id) - if let path = Bundle.main.resourceURL?.deletingLastPathComponent().deletingLastPathComponent().absoluteString { - asyncShell("/usr/bin/open \(path)") - NSApp.terminate(self) - } + restartApp(self) } } diff --git a/Stats/Views/Dashboard.swift b/Stats/Views/Dashboard.swift index c92309fd..9b62d71b 100644 --- a/Stats/Views/Dashboard.swift +++ b/Stats/Views/Dashboard.swift @@ -174,7 +174,7 @@ class Dashboard: NSStackView { scrollView.stackView.addArrangedSubview(self.deviceView()) scrollView.stackView.addArrangedSubview(PreferencesSection([ - PreferencesRow(localizedString("Processor"), component: textView(self.processorValue)), + PreferencesRow(localizedString("Processor"), "", component: textView(self.processorValue)), PreferencesRow(localizedString("Memory"), component: textView(self.memoryValue)), PreferencesRow(localizedString("Graphics"), component: textView(self.graphicsValue)) ]))