Mercurial > hg > jslab
view 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 source
(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"))