Mercurial > hg > jslab
diff src/scheme/filelist.scm @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/scheme/filelist.scm Tue Jan 17 17:50:20 2012 +0000 @@ -0,0 +1,56 @@ +(import "java.util.*") +(import "java.awt.*") +(import "java.io.*") +(import "javax.swing.*") + +(define (edit-list L) + (define dlg (JFileChooser.)) + (.setMultiSelectionEnabled dlg #t) + (if (pair? L) + (begin + (.setCurrentDirectory dlg (car L)) + (.setSelectedFiles dlg (list->array java.io.File.class L)) + ) + ) + (.showDialog dlg null "Done") + (vector->list (.getSelectedFiles dlg)) +) + +(define (restore-list name) (map File. (eval-string (get name)))) +(define (store-list name L) + (X.store name (string-append "'" + (.toString (map .toString L))))) + + +(define filesrc null) + +(define (get-playlist) (array->list (.toArray (.getPlaylist filesrc)))) +(define (set-playlist L) + (.setPlaylist filesrc (Arrays.asList (list->vector L))) + (.rewind filesrc)) + +(define (edit-playlist) (set-playlist (edit-list (get-playlist)))) +(define (restore-playlist) (set-playlist (restore-list "playlist.files"))) +(define (store-playlist) (store-list "playlist.files" (get-playlist))) +(define (clear-playlist) (set-playlist ())) +(define (rewind) (.rewind filesrc)) + +(define (filesource . format) + (set! filesrc (samer.audio.FileSource.)) + (if (not (null? format)) (.setTargetFormat filesrc (car format))) + (tryCatch (restore-playlist) (lambda (ex) ())) + filesrc) + +(define (dirsource ext . format) + (define dir (VFile. "playlist.directory")) + (set! filesrc (samer.audio.FileSource.)) + (if (not (null? format)) (.setTargetFormat filesrc (car format))) + (on-change dir + (.setDirectory filesrc (.getFile dir) ext) + (.rewind filesrc)) + (tryCatch (.changed dir) (lambda (ex) ())) + filesrc) + +(define (wav? f) (.endsWith (.toString f) ".wav")) + +