Parse widgets v1 - switch
authorFrank Duncan <frank@kank.net>
Wed, 20 Apr 2016 05:37:11 +0000 (00:37 -0500)
committerFrank Duncan <frank@kank.net>
Wed, 20 Apr 2016 05:37:11 +0000 (00:37 -0500)
src/main/model.lisp

index a919120b7d9fec6ac996486d34102cfd23bfa476..8aa37159b3e70ddec0cd4b228f264a0eec2f8af7 100644 (file)
@@ -78,7 +78,8 @@ DESCRIPTION:
     (defstruct ,type
      ,@(remove nil
         (mapcar
-         (lambda (def) (when (find (car def) (list :int :double :boolean :choice :string :option)) (second def)))
+         (lambda (def)
+          (when (find (car def) (list :int :double :inverted-boolean :boolean :choice :string :option)) (second def)))
          definitions)))
     (push
      (list
@@ -94,6 +95,7 @@ DESCRIPTION:
                (:int `(parse-integer ,line :junk-allowed t))
                (:double `(ignore-errors (coerce (read-from-string ,line) 'double-float)))
                (:boolean `(or (string= "1" ,line) (string= "0" ,line)))
+               (:inverted-boolean `(or (string= "0" ,line) (string= "1" ,line)))
                (:choice `(find ,line ',(mapcar #'car (third def)) :test #'string=)))))
             definitions
             (loop for i to (length definitions) collect i)))))
@@ -109,6 +111,7 @@ DESCRIPTION:
                  (:int `(parse-integer ,line))
                  (:double `(coerce (read-from-string ,line) 'double-float))
                  (:boolean `(string= "1" ,line))
+                 (:inverted-boolean `(string= "0" ,line))
                  (:choice `(cadr (find ,line ',(third def) :key #'car :test #'string=)))
                  (:option `(when (string/= ,line ,(third def)) ,line))
                  (:string line))))
@@ -161,6 +164,18 @@ DESCRIPTION:
  (:option units "NIL")
  (:choice direction (("HORIZONTAL" :horizontal) ("VERTICAL" :vertical))))
 
+(defwidget-definition switch
+ (:specified "SWITCH")
+ (:int left)
+ (:int top)
+ (:int right)
+ (:int bottom)
+ (:string display)
+ (:string varname)
+ (:inverted-boolean on)
+ (:reserved)
+ (:reserved))
+
 (defun parse-interface (interface-as-strings)
  (let
   ((widgets-as-strings