drag/drop

This commit is contained in:
2026-05-04 15:41:24 +02:00
parent 57be1f327a
commit 167ef6d8ac
6 changed files with 96 additions and 4 deletions
+38 -1
View File
@@ -2,10 +2,11 @@
(require racket/class
"music-library.rkt"
racket-sound
racket-audio
"utils.rkt"
racket-sprintf
keystore/class
racket/list
)
(provide track%
@@ -331,6 +332,42 @@
(send this save-tab!))
)
(define/public (move-track from-idx to-idx)
(let ((tr (list-ref tracks from-idx))
(idx 0))
(if (= from-idx to-idx)
#t
(begin
(when (< from-idx to-idx)
(set! to-idx (- to-idx 1)))
(let* ((l1 (if (= from-idx 0)
'()
(take tracks from-idx)))
(l2 (drop tracks (+ from-idx 1)))
(l (append l1 l2))
)
(set! tracks (append
(if (= to-idx 0) '() (take l to-idx))
(list tr)
(drop l to-idx)))
)
(send this save-tab!)
)
)
)
)
(define/public (drop-id track-id)
(let ((idx (send this index track-id)))
(let* ((l1 (if (= idx 0) '() (take tracks idx)))
(l2 (drop tracks (+ idx 1)))
(l (append l1 l2)))
(set! tracks l)
(send this save-tab!)
)
)
)
(define/public (track i)
(list-ref tracks i))