Mercurial > hg > jslab
view src/scheme/filelist.scm @ 1:5df24c91468d
Oh my what a mess.
author | samer |
---|---|
date | Fri, 05 Apr 2019 16:26:00 +0100 |
parents | bf79fb79ee13 |
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"))