second commit

This commit is contained in:
Alex E. Tafoya
2026-09-17 16:15:02 -05:00
parent 87fe7927c4
commit 7e3801c7c6
10 changed files with 585 additions and 151 deletions
@@ -38,6 +38,7 @@ final class DestinationPickerWindowController: NSWindowController, NSWindowDeleg
window.isReleasedWhenClosed = false
window.level = .floating
window.center()
Theme.styleWindowChrome(window)
super.init(window: window)
window.delegate = self
buildInterface()
@@ -54,15 +55,19 @@ final class DestinationPickerWindowController: NSWindowController, NSWindowDeleg
private func buildInterface() {
guard let window, let contentView = window.contentView else { return }
let background = Theme.backdrop(material: .windowBackground, blending: .behindWindow)
contentView.addSubview(background)
NSLayoutConstraint.activate([
background.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
background.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
background.topAnchor.constraint(equalTo: contentView.topAnchor),
background.bottomAnchor.constraint(equalTo: contentView.bottomAnchor)
])
let preview = NSImageView()
preview.image = capture.nsImage
preview.imageScaling = .scaleProportionallyDown
preview.imageAlignment = .alignCenter
preview.wantsLayer = true
preview.layer?.backgroundColor = NSColor.underPageBackgroundColor.cgColor
preview.layer?.borderColor = NSColor.separatorColor.cgColor
preview.layer?.borderWidth = 1
preview.layer?.cornerRadius = 4
preview.translatesAutoresizingMaskIntoConstraints = false
preview.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
preview.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
@@ -86,17 +91,19 @@ final class DestinationPickerWindowController: NSWindowController, NSWindowDeleg
separator.boxType = .separator
separator.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(preview)
let previewWell = Theme.panel(preview, radius: Theme.panelRadius, inset: 8)
contentView.addSubview(previewWell)
contentView.addSubview(separator)
contentView.addSubview(buttonRow)
contentView.addSubview(rememberCheckbox)
NSLayoutConstraint.activate([
preview.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16),
preview.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16),
preview.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16),
previewWell.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16),
previewWell.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16),
previewWell.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16),
separator.topAnchor.constraint(equalTo: preview.bottomAnchor, constant: 14),
separator.topAnchor.constraint(equalTo: previewWell.bottomAnchor, constant: 14),
separator.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16),
separator.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16),
@@ -113,7 +120,7 @@ final class DestinationPickerWindowController: NSWindowController, NSWindowDeleg
let aspect = capture.pointSize.height / max(1, capture.pointSize.width)
let previewWidth: CGFloat = 528
let previewHeight = min(max(180, previewWidth * aspect), 380)
preview.heightAnchor.constraint(equalToConstant: previewHeight).isActive = true
previewWell.heightAnchor.constraint(equalToConstant: previewHeight + 16).isActive = true
window.setContentSize(NSSize(width: 560, height: previewHeight + 190))
window.center()
}