Update of /project/gsharp/cvsroot/gsharp In directory clnet:/tmp/cvs-serv31679
Modified Files: packages.lisp score-pane.lisp gui.lisp Log Message: Display page numbers in the info pane.
--- /project/gsharp/cvsroot/gsharp/packages.lisp 2006/06/13 19:39:56 1.56 +++ /project/gsharp/cvsroot/gsharp/packages.lisp 2006/06/14 03:38:56 1.57 @@ -47,7 +47,7 @@ #:with-suspended-note-offset #:with-notehead-left-offsets #:with-light-glyphs #:score-pane #:clef #:staff #:fiveline-staff #:lyrics-staff #:notehead - #:score-view)) + #:score-view #:number-of-pages #:current-page-number))
(defpackage :gsharp-buffer (:use :common-lisp :gsharp-utilities :esa-buffer) --- /project/gsharp/cvsroot/gsharp/score-pane.lisp 2006/06/08 18:54:47 1.35 +++ /project/gsharp/cvsroot/gsharp/score-pane.lisp 2006/06/14 03:38:56 1.36 @@ -1,6 +1,8 @@ (in-package :score-pane)
-(defclass score-view (view) ()) +(defclass score-view (view) + ((%number-of-pages :initform "-" :accessor number-of-pages) + (%current-page-number :initform "-" :accessor current-page-number)))
(defclass score-pane (esa-pane-mixin application-pane) ())
--- /project/gsharp/cvsroot/gsharp/gui.lisp 2006/06/13 19:39:56 1.65 +++ /project/gsharp/cvsroot/gsharp/gui.lisp 2006/06/14 03:38:56 1.66 @@ -54,6 +54,11 @@ (princ " " pane) (with-text-face (pane :bold) (format pane "~25A" (name buffer))) + (princ " " pane) + (format pane "[~a/~a]" + (score-pane:current-page-number view) + (score-pane:number-of-pages view)) + (princ " " pane) (with-text-family (pane :sans-serif) (princ (if (recordingp *application-frame*) "Def" @@ -109,7 +114,9 @@ (:top-level (esa-top-level)))
(defmethod buffers ((application-frame gsharp)) - (remove-duplicates (mapcar #'buffer (views application-frame)) :test #'eq)) + (remove-duplicates (mapcar (lambda (window) (buffer (view window))) + (windows application-frame)) + :test #'eq))
(defmethod current-buffer ((application-frame gsharp)) (buffer (view (car (windows application-frame))))) @@ -161,9 +168,28 @@ for dx from (+ right 5) by 5 do (score-pane:draw-dot pane (+ xpos dx) 4)))))))))
+(defun update-page-numbers (frame) + (loop for window in (windows frame) + do (let ((page-number 0) + (view (view window))) + (gsharp-measure::new-map-over-obseq-subsequences + (lambda (all-measures) + (incf page-number) + (when (member-if (lambda (measure) (member (bar (cursor view)) + (measure-bars measure) + :test #'eq)) + all-measures) + (setf (score-pane:current-page-number view) page-number))) + (buffer view)) + (setf (score-pane:number-of-pages view) page-number)))) + +(defmethod redisplay-frame-panes :before ((frame gsharp) &key force-p) + (declare (ignore force-p)) + (mapc #'recompute-measures (buffers frame)) + (update-page-numbers frame)) + (defmethod display-score ((frame gsharp) pane) (let* ((buffer (buffer (view pane)))) - (recompute-measures buffer) (score-pane:with-score-pane pane (draw-buffer pane buffer (current-cursor) (left-margin buffer) 100)