Guest User

Untitled

a guest
Jul 8th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.06 KB | None | 0 0
  1. (in-package :anna)
  2.  
  3. (defclass prog-bar ()
  4.     ((total-steps
  5.       :initarg :total-steps
  6.       :initform 10)
  7.      (current-step
  8.       :initarg :current-step
  9.       :initform 0)
  10.      (size
  11.        :initarg :size
  12.        :initform 10)))
  13.  
  14. (defmethod update ((arg0 prog-bar))
  15.   (if (= (slot-value arg0 'current-step) (slot-value arg0 'total-steps))
  16.       nil
  17.       (incf (slot-value arg0 'current-step))))
  18.  
  19. (defmethod display ((arg0 prog-bar) window x y)
  20.   (let* ((open "[")
  21.          (done (string-n-times "#"
  22.                                (floor (* (/ (slot-value arg0 'current-step) (slot-value arg0 'total-steps)) (slot-value arg0 'size)))))
  23.          (left (string-n-times "."
  24.                                (- (slot-value arg0 'size) (length done))))
  25.          (close "]"))
  26.     (let ((old-pos (multiple-value-list (screen:window-cursor-position window))))
  27.       (screen:set-window-cursor-position window x y)
  28.       (format window "~A" (concatenate 'string open done left close))
  29.       (screen:set-window-cursor-position window (car old-pos) (second old-pos)))))
Add Comment
Please, Sign In to add comment