annotate src/scheme/filelist.scm @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
rev   line source
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