[Morphologie-cvs] r13 - trunk/src

ksprotte at common-lisp.net ksprotte at common-lisp.net
Thu Jul 5 16:28:01 UTC 2007


Author: ksprotte
Date: Thu Jul  5 12:27:57 2007
New Revision: 13

Added:
   trunk/src/package.lisp
   trunk/src/utils.lisp
Log:
added two files


Added: trunk/src/package.lisp
==============================================================================
--- (empty file)
+++ trunk/src/package.lisp	Thu Jul  5 12:27:57 2007
@@ -0,0 +1,4 @@
+(defpackage :morphologie
+  (:use :cl :ompw)
+  (:nicknames :morph))
+

Added: trunk/src/utils.lisp
==============================================================================
--- (empty file)
+++ trunk/src/utils.lisp	Thu Jul  5 12:27:57 2007
@@ -0,0 +1,72 @@
+(in-package :morph)
+
+(defun list! (thing)
+  (if (listp thing) thing (list thing)))
+
+(defun mat-trans (matrix)
+  (assert (apply #'= (mapcar #'length matrix)) nil
+	  "this should not happen. Please report this to Kilian Sprotte")
+  (when matrix (apply #'mapcar #'list matrix)))
+
+(defun group-list (list segmentation mode)  
+  "Segments a <list> in successives sublists 
+which lengths are successive values of the list <segmentation>.
+ <mode> indicates if <list> is to be read in a circular way."
+  (let ((list2 list) (res nil))
+    (catch 'gl
+      (loop for segment in segmentation
+	 while (or list2 (eq mode 'circular))
+	 do (push (loop for i from 1 to segment
+		     when (null list2)
+		     do (ecase mode
+			  (linear (push sublist res) (throw 'gl 0))
+			  (circular (setf list2 list)))
+		     end
+		     collect (pop list2) into sublist
+		     finally (return sublist))
+		  res)))
+    (nreverse res)))
+
+(defun flat-once (list)
+  (if (consp (car list))
+      (apply 'append list)  list))
+
+#-(or lispworks digitool)
+(defun choose-new-file-dialog (&key (prompt "Enter the path for a new file:")
+			       button-string)
+  (declare (ignore button-string))
+  (format *query-io* "~&~a~%[please enter a path like /tmp/test.txt]~%" prompt)
+  (force-output *query-io*)
+  (parse-namestring (read-line *query-io*)))
+
+#+digitool
+(defun choose-new-file-dialog (&key (prompt "Enter the path for a new file:")
+			       button-string)
+  (ccl::choose-new-file-dialog :prompt prompt :button-string button-string))
+
+#+lispworks
+(defun choose-new-file-dialog (&key (prompt "Enter the path for a new file:")
+                                    button-string)
+  (capi:prompt-for-file prompt :operation :save))
+
+#-(or lispworks digitool)
+(defun choose-file-dialog (&key (prompt "Enter the path for an existing file:")
+                                button-string)  
+  (format *query-io* "~&~a~%[please enter a path like /tmp/test.txt]~%" prompt)
+  (force-output *query-io*)
+  (let ((path (parse-namestring (read-line *query-io*))))
+    (if (probe-file path)
+	path
+      (progn
+        (format *query-io* "~&ERROR: ~A does not exist.~%" path)
+        (choose-file-dialog :prompt prompt :button-string button-string)))))
+
+#+digitool
+(defun choose-file-dialog (&key (prompt "Enter the path for an existing file:")
+                                button-string)  
+  (ccl::choose-file-dialog :prompt prompt :button-string button-string))
+
+#+lispworks
+(defun choose-file-dialog (&key (prompt "Enter the path for a new file:")
+                                button-string)
+  (capi:prompt-for-file prompt))



More information about the Morphologie-cvs mailing list