drag/drop
This commit is contained in:
+38
-1
@@ -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))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user