guile-gtk-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: using/wrapping container?


From: Jan Nieuwenhuizen
Subject: Re: using/wrapping container?
Date: Sun, 14 Nov 2004 02:37:12 +0100
User-agent: Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50 (gnu/linux)

Jan Nieuwenhuizen writes:

The problem condenses in that the gnome-canvas-path-def cannot be set

This

    (let ((bezier (make <gnome-canvas-bpath> #:bpath def)))

yields

   <unnamed port>: In procedure scm->gvalue in expression (scm->gvalue 
pspec-value-type option-value):
   <unnamed port>: Don't know how to make values of type #<gtype gpointer>

Tested C-snippet:

  GnomeCanvasPathDef *def = gnome_canvas_path_def_new ();

  gnome_canvas_path_def_moveto (def, 50.0, 110.0);
  gnome_canvas_path_def_curveto (def, 80.0, 105.0, 90.0, 105.0, 110.0, 110.0);
  gnome_canvas_path_def_lineto (def, 50.0, 110.0);
  gnome_canvas_path_def_closepath (def);
  
  gnome_canvas_item_new (root, gnome_canvas_bpath_get_type (),
                         "bpath", def,
                         "fill-color", "black",
                         "width-pixels", 4,
                         NULL);

I very much want to get beziers to work, that's an important bit for
LilyPond output.

Jan.


#! /usr/bin/guile -s
!#

(use-modules (gnome gtk)
             (gnome gtk gdk-event)
             (gnome canvas))

(debug-enable 'debug)
(debug-enable 'backtrace)

(define canvas-width 300)
(define canvas-height canvas-width)
(define output-scale 1.8)

(define-class <gnome-canvas-path-def> (<gobject>)
  (closure #:init-value (gnome-canvas-path-def-new)
           #:getter get-def #:setter set-def))

(define-method (moveto (this <gnome-canvas-path-def>) x y)
  (gnome-canvas-path-def-moveto (get-def this) x y))
(define-method (curveto (this <gnome-canvas-path-def>) x1 y1 x2 y2 x3 y3)
  (gnome-canvas-path-def-curveto (get-def this)  x1 y1 x2 y2 x3 y3))
(define-method (lineto (this <gnome-canvas-path-def>) x y)
  (gnome-canvas-path-def-lineto (get-def this) x y))
(define-method (closepath (this <gnome-canvas-path-def>))
  (gnome-canvas-path-def-closepath (get-def this)))

(define (main)

  (let* ((window (make <gtk-window> #:type 'toplevel))
         (button (make <gtk-button> #:label "Exit"))
         (canvas (make <gnome-canvas>))
         (vbox (make <gtk-vbox>))
         (canvas-root (root canvas)))

    (add window vbox)
    (add vbox canvas)

    (let ((def (make <gnome-canvas-path-def>)))
      
      (moveto def 50.0 110.0)
      (curveto def 80.0 105.0 90.0 105.0 110.0 110.0)
      (lineto def 50.0 110.0)
      (closepath def)

      (let ((bezier (make <gnome-canvas-bpath> #:bpath def)))
      ;;
      ;;<unnamed port>: In procedure scm->gvalue in expression (scm->gvalue 
pspec-value-type option-value):
      ;;<unnamed port>: Don't know how to make values of type #<gtype gpointer>
      ;;

      
      ;; this could be an alternative, but segfaults when addressing bezier.
        ;;(let ((bezier (make <gnome-canvas-bpath>)))
        ;;(set-path-def bezier (get-def def))
        
        ;; segfault
        (set bezier 'fill-color "black")
        ;;(set bezier 'width-pixels 2)

        ;; segfault
        ;;(move bezier -40 55)
      )
      
    (add vbox button)
    (connect button 'clicked (lambda (b) (gtk-main-quit)))
    (set-child-packing vbox button #f #f 0 'end)
    (set-size-request canvas canvas-width canvas-height)
    (show-all window)
    (gtk-main))))

(main)

-- 
Jan Nieuwenhuizen <address@hidden> | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien       | http://www.lilypond.org




reply via email to

[Prev in Thread] Current Thread [Next in Thread]