On Mon, 04 Jun 2007 05:02:57 -0700, Peter Denno <[EMAIL PROTECTED]>
wrote:
On Sunday 03 June 2007 12:45, Martin Flack wrote:
Hi all,
I'm writing some stock equities charting software in Common Lisp
for my own amusement and to learn the language. I'd like to start
by porting over a simple program I had in Perl to draw daily price
bars. I used Tk in Perl so I was planning to use LTK but cells-gtk
caught my eye and looks interesting.
I noticed the drawing.lisp is commented out in the asdf file - is
anyone actively using this widget in their code? I uncommented it
and got it to compile on SBCL.
I wrote it, but I'm not using it yet.
I am in a similar situation, so if you guys would like to collaborate on
the issue, that'd be great.
I'm writing a little GUI app as a frontend for my research project. I
really like the way cells-gtk works, but I miss the drawing-area widget.
My approach so far is based on Cairo (exporting the graphs to svg or
postscript would be awesome, given I'd like to use them in a paper).
I started with Warren Wilkinson's patch (posted here on May 22):
http://www3.telus.net/public/thomasw2/dl/cells-gtk-cairo-patch.diff
I have fixed the button handlers to work properly. Now I am in the
process of rewriting the drawing methods to use cairo internally. My idea
is to store all objects in a (hash-)table, which is a cells slot in the
drawing-area. draw-* functions will just drop new entries in the list,
and return a unique handle for every object. update functions can take
this handle and update existing objects (move them, change color, etc.). A
delete method can delete them.
The draw-fn function will iterate over the list to draw the current
layout. Later some export-to-svg or -ps can be implemented.
In a final version it might make sense to use a hash-table. For now I am
playing with a simple list, the entries of which are cons of an id and a
struct like (defstruct circle center-x center-y radius color).
There are cairo bindings for lisp out there, and it might be useful to
integrate them. I am looking into them right now.
http://www.cliki.net/cl-cairo
http://cairographics.org/cl-cairo/
Secondly, I can't seem to get the widget to come up. I lifted some
example code from Google, but something's wrong. What I'm trying is
below - what happens is the program runs fine but there is no
graphic element, just the text label and entry box.
Tk does offer a canvas widget which might be helpful to my
application, but I'm thinking that since the objects I'd want to
handle will be conceptually higher than lines, rectangles, etc.
that I could program my own canvas-type abstraction anyway.
Any comments would be appreciated. Thanks! ;-)
Same from my side.
Thanks,
Peter
I've got a paper due today, so I can't comment now, but I did get
things to work. I had some ideas for the design of this thing that
I'll try to recall. Tomorrow.
Martin
(require :cells)
(require :cells-gtk)
(defpackage hello-world
(:use :cl :cells :cells-gtk)
(:export :main))
(in-package :hello-world)
(defmodel hello-world (gtk-app)
()
(:default-initargs
:title "Test"
:position :center
:width 650 :height 550
:kids (list
(mk-notebook
:tab-labels (list "Tab 1")
:kids (list
(mk-vbox
:kids (list
(mk-label :text (c? (md-value (fm^ :mytext))))
(mk-entry :md-name :mytext :auto-aupdate t :init "Hello, World.")
(mk-drawing-area :md-name :drawing-area :width 100 :height 100
:draw-fn
#'(lambda (self)
(with-pixmap (p "demo" :widget self :width 100 :height 100)
(with-gc (p :fg "red")
(draw-line p 0 0 100 100))
(draw-text p "this is text" 10 70)
(draw-rectangle p 10 10 30 30)
(draw-rectangle p 1 1 97 97)
(insert-pixmap p 0 0)
p))))))))))
(defun main (&optional dbg)
(cells-gtk-init)
(start-app 'hello-world :debug dbg))
_______________________________________________
cells-gtk-devel site list
[email protected]
http://common-lisp.net/mailman/listinfo/cells-gtk-devel
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
_______________________________________________
cells-gtk-devel site list
[email protected]
http://common-lisp.net/mailman/listinfo/cells-gtk-devel