Skip to content

Commit 0bff1ce

Browse files
committed
AppKitBackend: Implement slider and picker
1 parent 337d2b8 commit 0bff1ce

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

Sources/AppKitBackend/AppKitBackend.swift

+58
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,64 @@ public struct AppKitBackend: AppBackend {
218218
container.addView(widget, in: .center)
219219
}
220220
}
221+
222+
public func createSlider() -> NSView {
223+
return NSSlider()
224+
}
225+
226+
public func updateSlider(
227+
_ slider: NSView,
228+
minimum: Double,
229+
maximum: Double,
230+
decimalPlaces: Int,
231+
onChange: @escaping (Double) -> Void
232+
) {
233+
// TODO: Implement decimalPlaces
234+
let slider = slider as! NSSlider
235+
slider.minValue = minimum
236+
slider.maxValue = maximum
237+
slider.onAction = { slider in
238+
let slider = slider as! NSSlider
239+
onChange(slider.doubleValue)
240+
}
241+
}
242+
243+
public func setValue(ofSlider slider: NSView, to value: Double) {
244+
let slider = slider as! NSSlider
245+
slider.doubleValue = value
246+
}
247+
248+
public func createPicker() -> NSView {
249+
return NSPopUpButton()
250+
}
251+
252+
public func updatePicker(
253+
_ picker: NSView, options: [String], onChange: @escaping (Int?) -> Void
254+
) {
255+
let picker = picker as! NSPopUpButton
256+
picker.addItems(withTitles: options)
257+
picker.onAction = { picker in
258+
let picker = picker as! NSPopUpButton
259+
onChange(picker.indexOfSelectedItem)
260+
}
261+
}
262+
263+
public func setSelectedOption(ofPicker picker: NSView, to selectedOption: Int?) {
264+
let picker = picker as! NSPopUpButton
265+
if let index = selectedOption {
266+
picker.selectItem(at: index)
267+
} else {
268+
picker.select(nil)
269+
}
270+
}
271+
272+
public func createStyleContainer(for child: NSView) -> NSView {
273+
return child
274+
}
275+
276+
public func setForegroundColor(ofStyleContainer container: NSView, to color: Color) {
277+
// TODO: Implement foreground color
278+
}
221279
}
222280

223281
// Source: https://gist.github.com/sindresorhus/3580ce9426fff8fafb1677341fca4815

0 commit comments

Comments
 (0)