mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: added fieldSettingRow for setting with text field
This commit is contained in:
@@ -361,6 +361,46 @@ public extension NSView {
|
||||
return view
|
||||
}
|
||||
|
||||
func fieldSettingRow(_ sender: NSTextFieldDelegate, title: String, value: String, placeholder: String? = nil, width: CGFloat = 200) -> NSView {
|
||||
let view: NSStackView = NSStackView()
|
||||
view.translatesAutoresizingMaskIntoConstraints = false
|
||||
view.heightAnchor.constraint(equalToConstant: Constants.Settings.row).isActive = true
|
||||
view.orientation = .horizontal
|
||||
view.alignment = .centerY
|
||||
view.distribution = .fill
|
||||
view.spacing = 0
|
||||
|
||||
let titleField: NSTextField = LabelField(frame: NSRect.zero, title)
|
||||
titleField.font = NSFont.systemFont(ofSize: 12, weight: .regular)
|
||||
titleField.textColor = .textColor
|
||||
|
||||
let valueField: NSTextField = NSTextField()
|
||||
valueField.font = NSFont.systemFont(ofSize: 12, weight: .regular)
|
||||
valueField.textColor = .textColor
|
||||
valueField.isEditable = true
|
||||
valueField.isSelectable = true
|
||||
valueField.isBezeled = false
|
||||
valueField.wantsLayer = true
|
||||
valueField.canDrawSubviewsIntoLayer = true
|
||||
valueField.usesSingleLineMode = true
|
||||
valueField.maximumNumberOfLines = 1
|
||||
valueField.focusRingType = .none
|
||||
valueField.stringValue = value
|
||||
valueField.delegate = sender
|
||||
if let placeholder {
|
||||
valueField.placeholderString = placeholder
|
||||
}
|
||||
valueField.alignment = .natural
|
||||
|
||||
view.addArrangedSubview(titleField)
|
||||
view.addArrangedSubview(NSView())
|
||||
view.addArrangedSubview(valueField)
|
||||
|
||||
valueField.widthAnchor.constraint(equalToConstant: width).isActive = true
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
func selectView(action: Selector, items: [KeyValue_p], selected: String) -> NSPopUpButton {
|
||||
let select: NSPopUpButton = NSPopUpButton(frame: NSRect(x: 0, y: 0, width: 50, height: 28))
|
||||
select.target = self
|
||||
|
||||
@@ -118,7 +118,12 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
|
||||
))
|
||||
}
|
||||
|
||||
self.addArrangedSubview(self.connectivityHost())
|
||||
self.addArrangedSubview(fieldSettingRow(self,
|
||||
title: localizedString("Connectivity host (ICMP)"),
|
||||
value: self.ICMPHost,
|
||||
placeholder: localizedString("Leave empty to disable the check"),
|
||||
width: 220
|
||||
))
|
||||
}
|
||||
|
||||
private func interfaceSelector() -> NSView {
|
||||
@@ -222,44 +227,6 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
|
||||
return view
|
||||
}
|
||||
|
||||
func connectivityHost() -> NSView {
|
||||
let view: NSStackView = NSStackView()
|
||||
view.translatesAutoresizingMaskIntoConstraints = false
|
||||
view.heightAnchor.constraint(equalToConstant: Constants.Settings.row).isActive = true
|
||||
view.orientation = .horizontal
|
||||
view.alignment = .centerY
|
||||
view.distribution = .fill
|
||||
view.spacing = 0
|
||||
|
||||
let titleField: NSTextField = LabelField(frame: NSRect(x: 0, y: 0, width: 0, height: 0), localizedString("Connectivity host (ICMP)"))
|
||||
titleField.font = NSFont.systemFont(ofSize: 12, weight: .regular)
|
||||
titleField.textColor = .textColor
|
||||
|
||||
let valueField: NSTextField = NSTextField()
|
||||
valueField.font = NSFont.systemFont(ofSize: 12, weight: .regular)
|
||||
valueField.textColor = .textColor
|
||||
valueField.isEditable = true
|
||||
valueField.isSelectable = true
|
||||
valueField.isBezeled = false
|
||||
valueField.wantsLayer = true
|
||||
valueField.canDrawSubviewsIntoLayer = true
|
||||
valueField.usesSingleLineMode = true
|
||||
valueField.maximumNumberOfLines = 1
|
||||
valueField.focusRingType = .none
|
||||
valueField.delegate = self
|
||||
valueField.stringValue = self.ICMPHost
|
||||
valueField.placeholderString = localizedString("Leave empty to disable the check")
|
||||
valueField.alignment = .natural
|
||||
|
||||
view.addArrangedSubview(titleField)
|
||||
view.addArrangedSubview(NSView())
|
||||
view.addArrangedSubview(valueField)
|
||||
|
||||
valueField.widthAnchor.constraint(equalToConstant: 200).isActive = true
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
@objc func handleSelection(_ sender: NSPopUpButton) {
|
||||
guard let item = sender.selectedItem, let id = item.identifier?.rawValue else { return }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user