;;;;
;;;; source file of the GNU LilyPond music typesetter
;;;;
-;;;; (c) 2004--2005 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2004--2006 Jan Nieuwenhuizen <janneke@gnu.org>
;;;; See output-gnome.scm for usage information.
(define-module (scm framework-gnome))
-(use-modules (guile) (oop goops) (lily))
+(use-modules (guile)
+ (oop goops)
+ (scm page)
+ (scm paper-system)
+ (lily))
(use-modules
(srfi srfi-2)
(define (gnome-main book name)
(let* ((paper (ly:paper-book-paper book))
- (hsize (ly:output-def-lookup paper 'hsize))
- (vsize (ly:output-def-lookup paper 'vsize))
- (page-width (inexact->exact (ceiling (* OUTPUT-SCALE hsize))))
- (page-height (inexact->exact (ceiling (* OUTPUT-SCALE vsize))))
- ;;(page-width (inexact->exact (ceiling hsize)))
- ;;(page-height (inexact->exact (ceiling vsize)))
+ (paper-width (ly:output-def-lookup paper 'paper-width))
+ (paper-height (ly:output-def-lookup paper 'paper-height))
+ (page-width (inexact->exact (ceiling (* OUTPUT-SCALE paper-width))))
+ (page-height (inexact->exact (ceiling (* OUTPUT-SCALE paper-height))))
+ ;;(page-width (inexact->exact (ceiling paper-width)))
+ ;;(page-height (inexact->exact (ceiling paper-height)))
(screen-width (gdk-screen-width))
(screen-height (gdk-screen-height))
(go (make <gnome-outputter>
#:name name
- #:page-stencils (list->vector (ly:paper-book-pages book))
+ #:page-stencils (list->vector (map page-stencil (ly:paper-book-pages book)))
#:canvas-width page-width
#:canvas-height page-height
#:window-width
(define (spawn-editor location)
(let* ((file-name (car location))
(line (cadr location))
- (column (caddr location))
- (command (get-editor-command file line column)))
+ (char (caddr location))
+ (column (cadddr location))
+ (command (get-editor-command file line char column)))
(debugf "spawning: ~s\n" command)
(if (= (primitive-fork) 0)
(let ((command-list (string-split command #\ )));; (get-ifs))))
(define location-callback spawn-editor)
(define (get-location grob)
- (and-let* ((p? (procedure? point-and-click))
+ (and-let* ((p (procedure? point-and-click))
(g grob)
(cause (ly:grob-property grob 'cause))
- (music-origin (if (ly:music? cause)
- (ly:music-property cause 'origin)
- ;; How come #<unspecied> [and '()]
+ (music-origin (if (ly:event? cause)
+ (ly:event-property cause 'origin)
+ ;; How come #<unspecified> [and '()]
;; are #t? :-(
#f)))
(if (ly:input-location? music-origin)
(ly:input-location music-origin)
#f)))
+;; todo: how to integrate nicely?
+;(define-public (tweak-grob-property grob sym val)
+; (set! (ly:grob-property grob sym) val))
+
(define-method (tweak (go <gnome-outputter>) item offset)
(let* ((grob (hashq-ref (item-grobs go) item #f))