Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (in-package :anna)
- (defclass prog-bar ()
- ((total-steps
- :initarg :total-steps
- :initform 10)
- (current-step
- :initarg :current-step
- :initform 0)
- (size
- :initarg :size
- :initform 10)))
- (defmethod update ((arg0 prog-bar))
- (if (= (slot-value arg0 'current-step) (slot-value arg0 'total-steps))
- nil
- (incf (slot-value arg0 'current-step))))
- (defmethod display ((arg0 prog-bar) window x y)
- (let* ((open "[")
- (done (string-n-times "#"
- (floor (* (/ (slot-value arg0 'current-step) (slot-value arg0 'total-steps)) (slot-value arg0 'size)))))
- (left (string-n-times "."
- (- (slot-value arg0 'size) (length done))))
- (close "]"))
- (let ((old-pos (multiple-value-list (screen:window-cursor-position window))))
- (screen:set-window-cursor-position window x y)
- (format window "~A" (concatenate 'string open done left close))
- (screen:set-window-cursor-position window (car old-pos) (second old-pos)))))
Add Comment
Please, Sign In to add comment