X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=gtk%2Fgtk.demo.lisp;h=d0c3645ec4b97c58c593f2c9d225abe945b1956f;hb=c5a046da8c5ca824b266ff48034a860790dc1aa3;hp=86dc30297f6b6767e13548f26e148ad1a2f3faeb;hpb=21d699e54bb7bd571519afeaf44592cd329face0;p=cl-gtk2.git diff --git a/gtk/gtk.demo.lisp b/gtk/gtk.demo.lisp index 86dc302..d0c3645 100644 --- a/gtk/gtk.demo.lisp +++ b/gtk/gtk.demo.lisp @@ -30,7 +30,8 @@ #:test-entry-completion #:test-ui-markup #:test-list-store - #:test-tree-store)) + #:test-tree-store + #:test-gdk)) (in-package :gtk-demo) @@ -53,12 +54,12 @@ (lambda (widget event) (declare (ignore widget event)) (let* ((gdk-window (widget-window window)) - (gc (gdk-gc-new gdk-window)) + (gc (graphics-context-new gdk-window)) (layout (widget-create-pango-layout window (format nil "X: ~F~%Y: ~F" x y)))) - (gdk-draw-layout gdk-window gc 0 0 layout) - (gdk-gc-set-rgb-fg-color gc (make-color :red 65535 :green 0 :blue 0)) + (draw-layout gdk-window gc 0 0 layout) + (setf (graphics-context-rgb-fg-color gc) (make-color :red 65535 :green 0 :blue 0)) (multiple-value-bind (x y) (drawable-get-size gdk-window) - (gdk-draw-line gdk-window gc 0 0 x y))))) + (draw-line gdk-window gc 0 0 x y))))) (g-signal-connect window "configure-event" (lambda (widget event) (declare (ignore widget event)) @@ -1028,7 +1029,7 @@ (for it = (tree-store-insert-with-values l nil i n s)) (iter (for j from 0 below 10) (for n2 = (random 10000000)) - (for s2 = (format nil "~R" n)) + (for s2 = (format nil "~R" n2)) (tree-store-insert-with-values l it j n2 s2))) (setf (tree-view-model tv) l) (let ((column (make-instance 'tree-view-column :title "Number" :sort-column-id 0)) @@ -1053,3 +1054,59 @@ (dialog-run dialog) (object-destroy dialog))))) (widget-show w)))) + +(defun test-gdk-expose (gdk-window) + (let* ((gc (graphics-context-new gdk-window))) + (multiple-value-bind (w h) (drawable-get-size gdk-window) + (setf (graphics-context-rgb-bg-color gc) (make-color :red 0 :green 0 :blue 0)) + (draw-polygon gdk-window gc t (list (make-point :x 0 :y 0) + (make-point :x (truncate w 2) :y 0) + (make-point :x w :y (truncate h 2)) + (make-point :x w :y h) + (make-point :x (truncate w 2) :y h) + (make-point :x 0 :y (truncate h 2)))) + (setf (graphics-context-rgb-fg-color gc) (make-color :red 65535 :green 0 :blue 0)) + (draw-point gdk-window gc 20 10) + (setf (graphics-context-rgb-fg-color gc) (make-color :red 0 :green 65535 :blue 0)) + (draw-points gdk-window gc (list (make-point :x 15 :y 20) (make-point :x 35 :y 40))) + (setf (graphics-context-rgb-fg-color gc) (make-color :red 0 :green 0 :blue 65535)) + (draw-line gdk-window gc 60 30 40 50) + (setf (graphics-context-rgb-fg-color gc) (make-color :red 65535 :green 65535 :blue 0)) + (draw-lines gdk-window gc (list (make-point :x 10 :y 30) (make-point :x 15 :y 40) + (make-point :x 15 :y 50) (make-point :x 10 :y 56))) + (setf (graphics-context-rgb-fg-color gc) (make-color :red 0 :green 65535 :blue 65535)) + (draw-segments gdk-window gc (list (make-segment :x1 35 :y1 35 :x2 55 :y2 35) + (make-segment :x1 65 :y1 35 :x2 43 :y2 17))) + (setf (graphics-context-rgb-fg-color gc) (make-color :red 65535 :green 0 :blue 65535) + (graphics-context-rgb-bg-color gc) (make-color :red 32767 :green 0 :blue 32767)) + (draw-arc gdk-window gc nil 70 30 75 50 (* 64 75) (* 64 200)) + (draw-polygon gdk-window gc nil (list (make-point :x 20 :y 40) + (make-point :x 30 :y 50) + (make-point :x 40 :y 70) + (make-point :x 30 :y 80) + (make-point :x 10 :y 55))) + (setf (graphics-context-rgb-fg-color gc) (make-color :red 16384 :green 16384 :blue 65535)) + (draw-trapezoids gdk-window gc (list (make-trapezoid :y1 50.0d0 :y2 70.0d0 + :x11 30.0d0 :x12 45.0d0 + :x21 70.0d0 :x22 50.0d0)))))) + +(defun test-gdk () + "Test various gdk primitives" + (within-main-loop + (let ((window (make-instance 'gtk-window :type :toplevel :app-paintable t))) + (g-signal-connect window "destroy" (lambda (widget) + (declare (ignore widget)) + (leave-gtk-main))) + (g-signal-connect window "destroy" (lambda (widget) + (declare (ignore widget)) + (leave-gtk-main))) + (g-signal-connect window "expose-event" + (lambda (widget event) + (declare (ignore widget event)) + (test-gdk-expose (widget-window window)))) + (g-signal-connect window "configure-event" + (lambda (widget event) + (declare (ignore widget event)) + (widget-queue-draw window))) + (widget-show window) + (push :pointer-motion-mask (gdk-window-events (widget-window window))))))