samer@0
|
1 (import "java.util.*")
|
samer@0
|
2 (import "java.awt.*")
|
samer@0
|
3 (import "java.io.*")
|
samer@0
|
4 (import "javax.swing.*")
|
samer@0
|
5
|
samer@0
|
6 (define (edit-list L)
|
samer@0
|
7 (define dlg (JFileChooser.))
|
samer@0
|
8 (.setMultiSelectionEnabled dlg #t)
|
samer@0
|
9 (if (pair? L)
|
samer@0
|
10 (begin
|
samer@0
|
11 (.setCurrentDirectory dlg (car L))
|
samer@0
|
12 (.setSelectedFiles dlg (list->array java.io.File.class L))
|
samer@0
|
13 )
|
samer@0
|
14 )
|
samer@0
|
15 (.showDialog dlg null "Done")
|
samer@0
|
16 (vector->list (.getSelectedFiles dlg))
|
samer@0
|
17 )
|
samer@0
|
18
|
samer@0
|
19 (define (restore-list name) (map File. (eval-string (get name))))
|
samer@0
|
20 (define (store-list name L)
|
samer@0
|
21 (X.store name (string-append "'"
|
samer@0
|
22 (.toString (map .toString L)))))
|
samer@0
|
23
|
samer@0
|
24
|
samer@0
|
25 (define filesrc null)
|
samer@0
|
26
|
samer@0
|
27 (define (get-playlist) (array->list (.toArray (.getPlaylist filesrc))))
|
samer@0
|
28 (define (set-playlist L)
|
samer@0
|
29 (.setPlaylist filesrc (Arrays.asList (list->vector L)))
|
samer@0
|
30 (.rewind filesrc))
|
samer@0
|
31
|
samer@0
|
32 (define (edit-playlist) (set-playlist (edit-list (get-playlist))))
|
samer@0
|
33 (define (restore-playlist) (set-playlist (restore-list "playlist.files")))
|
samer@0
|
34 (define (store-playlist) (store-list "playlist.files" (get-playlist)))
|
samer@0
|
35 (define (clear-playlist) (set-playlist ()))
|
samer@0
|
36 (define (rewind) (.rewind filesrc))
|
samer@0
|
37
|
samer@0
|
38 (define (filesource . format)
|
samer@0
|
39 (set! filesrc (samer.audio.FileSource.))
|
samer@0
|
40 (if (not (null? format)) (.setTargetFormat filesrc (car format)))
|
samer@0
|
41 (tryCatch (restore-playlist) (lambda (ex) ()))
|
samer@0
|
42 filesrc)
|
samer@0
|
43
|
samer@0
|
44 (define (dirsource ext . format)
|
samer@0
|
45 (define dir (VFile. "playlist.directory"))
|
samer@0
|
46 (set! filesrc (samer.audio.FileSource.))
|
samer@0
|
47 (if (not (null? format)) (.setTargetFormat filesrc (car format)))
|
samer@0
|
48 (on-change dir
|
samer@0
|
49 (.setDirectory filesrc (.getFile dir) ext)
|
samer@0
|
50 (.rewind filesrc))
|
samer@0
|
51 (tryCatch (.changed dir) (lambda (ex) ()))
|
samer@0
|
52 filesrc)
|
samer@0
|
53
|
samer@0
|
54 (define (wav? f) (.endsWith (.toString f) ".wav"))
|
samer@0
|
55
|
samer@0
|
56
|