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"))