@@ -218,6 +218,64 @@ public struct AppKitBackend: AppBackend {
218
218
container. addView ( widget, in: . center)
219
219
}
220
220
}
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
+ }
221
279
}
222
280
223
281
// Source: https://gist.github.com/sindresorhus/3580ce9426fff8fafb1677341fca4815
0 commit comments