samer@0: (import "java.util.*") samer@0: (import "java.awt.*") samer@0: (import "java.io.*") samer@0: (import "javax.swing.*") samer@0: samer@0: (define (edit-list L) samer@0: (define dlg (JFileChooser.)) samer@0: (.setMultiSelectionEnabled dlg #t) samer@0: (if (pair? L) samer@0: (begin samer@0: (.setCurrentDirectory dlg (car L)) samer@0: (.setSelectedFiles dlg (list->array java.io.File.class L)) samer@0: ) samer@0: ) samer@0: (.showDialog dlg null "Done") samer@0: (vector->list (.getSelectedFiles dlg)) samer@0: ) samer@0: samer@0: (define (restore-list name) (map File. (eval-string (get name)))) samer@0: (define (store-list name L) samer@0: (X.store name (string-append "'" samer@0: (.toString (map .toString L))))) samer@0: samer@0: samer@0: (define filesrc null) samer@0: samer@0: (define (get-playlist) (array->list (.toArray (.getPlaylist filesrc)))) samer@0: (define (set-playlist L) samer@0: (.setPlaylist filesrc (Arrays.asList (list->vector L))) samer@0: (.rewind filesrc)) samer@0: samer@0: (define (edit-playlist) (set-playlist (edit-list (get-playlist)))) samer@0: (define (restore-playlist) (set-playlist (restore-list "playlist.files"))) samer@0: (define (store-playlist) (store-list "playlist.files" (get-playlist))) samer@0: (define (clear-playlist) (set-playlist ())) samer@0: (define (rewind) (.rewind filesrc)) samer@0: samer@0: (define (filesource . format) samer@0: (set! filesrc (samer.audio.FileSource.)) samer@0: (if (not (null? format)) (.setTargetFormat filesrc (car format))) samer@0: (tryCatch (restore-playlist) (lambda (ex) ())) samer@0: filesrc) samer@0: samer@0: (define (dirsource ext . format) samer@0: (define dir (VFile. "playlist.directory")) samer@0: (set! filesrc (samer.audio.FileSource.)) samer@0: (if (not (null? format)) (.setTargetFormat filesrc (car format))) samer@0: (on-change dir samer@0: (.setDirectory filesrc (.getFile dir) ext) samer@0: (.rewind filesrc)) samer@0: (tryCatch (.changed dir) (lambda (ex) ())) samer@0: filesrc) samer@0: samer@0: (define (wav? f) (.endsWith (.toString f) ".wav")) samer@0: samer@0: