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