diff options
author | Thomas White <taw@physics.org> | 2023-04-29 18:19:20 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2023-04-29 18:19:20 +0200 |
commit | 55a076a607b5e65f90f98e4e5e9bac5852df1d3e (patch) | |
tree | dec50ded070f3a54e6d76c0288fce47c1d0c19c9 /guile/starlet/state.scm | |
parent | e3e87c503057931fa746804172d094da2b5e46c9 (diff) |
Move selection stuff to a separate module
Diffstat (limited to 'guile/starlet/state.scm')
-rw-r--r-- | guile/starlet/state.scm | 43 |
1 files changed, 4 insertions, 39 deletions
diff --git a/guile/starlet/state.scm b/guile/starlet/state.scm index e760d2a..a2cb65d 100644 --- a/guile/starlet/state.scm +++ b/guile/starlet/state.scm @@ -23,6 +23,7 @@ #:use-module (starlet colours) #:use-module (starlet utils) #:use-module (starlet attributes) + #:use-module (starlet selection) #:use-module (oop goops) #:use-module (ice-9 pretty-print) #:use-module (ice-9 atomic) @@ -53,11 +54,6 @@ home-fixture! blackout blackout! - sel - desel - selection-hook - get-selection - selected? value->number atomically-overlay-state! update-state! @@ -425,7 +421,8 @@ pre-existing contents." ;; NB Can't set multiple fixtures and attributes: (at fix1 pan 35 fix2 tilt 22) (define (at . args) - (receive (fixtures attribute value) + (let ((selection (get-selection))) + (receive (fixtures attribute value) (partition3 fixture? attribute? (flatten-sublists args)) (cond @@ -451,39 +448,7 @@ pre-existing contents." (set-fixtures selection (car attribute) (car value)))) (else - (set-fixtures fixtures (car attribute) (car value)))))) - - -(define selection-hook (make-hook 1)) - -(define selection '()) - -(define (get-selection) - selection) - - -(define (sel . fixture-list) - (if (nil? fixture-list) - (set! selection '()) - (if (not (car fixture-list)) - (set! selection '()) - (set! selection (flatten-sublists fixture-list)))) - (run-hook selection-hook selection)) - - -(define (selected? . fixture-list) - (every (lambda (fix) - (memq fix selection)) - (flatten-sublists fixture-list))) - - -(define (desel . fixture-list) - (let ((remove-us (flatten-sublists fixture-list))) - (set! selection - (filter (lambda (fix) - (not (memq fix remove-us))) - selection))) - (run-hook selection-hook selection)) + (set-fixtures fixtures (car attribute) (car value))))))) (define (state-empty? st) |