[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Making a simple window, and dumplisp in allegro (was Re: Problem in running express-windows !! )
You can't make a window until you call (initialize-window-system).
Have you tried running the demos, by doing
(run-program 'lisp-listener) ; see frames.lisp
The mouse window should show you what the buttons do.
Click right to get a menu, or type S<space>M<space>, which is an abbreviation
for System Menu.
You don't need to load the common windows at all, just CLX. I don't think
this should cause any problems; at its most harmless will probably only make
method dispatch just a little bit slower.
Here's what I just tried:
#<PRESENTATION-WINDOW 70014576> ;this is default superior if I don't specify
<cl> (setq w2 (make-window 'WINDOW :BORDERS 1
:LEFT 10 :TOP 10
:HEIGHT 250 :WIDTH 400))
<cl> (expose-window w2)
;;; now we see it
<cl> (let ((*query-io* w2))
(querying-values (*query-io* :label "Just a test.")
(query '((alist-member :alist (one two three)))
:prompt "Choose one" :default 'two)))
<cl> (print "Hello." w2)
<cl> (force-output w2) ; forces out any waiting output.
Normally, your application will be using Express-Windows for input, and the
output will automatically be flushed, so (force-output ..) is rarely necessary.
You can also use (sync) for this, which will take care of any waiting output
(for the X display).
Again, you should look at the demos for example i/o coding and use of
BUILDING A CORE:
Here's how I did it. If the following is make-ew-core.lisp, then (in allegro)
cl -qq < make-ew-core.lisp > make-ew-core.output
You'll have to load pcl & clx yourself (my core already had these).
Note that I call (load-ew) directly, otherwise I would be prompted for
(compile, load) x (pcl, clx, ew).
Also, I put the optional files onto the ew-files, and set optional files to
(), so I don't get prompted for those either. You might want to replace the
call to (load-ew) with similar loading code, depending on your needs.
;;; Dump a core with express windows loaded.
(load (make-pathname :name "system" :type "lisp" :defaults *Default-EW-Code-Pathname*))
;; Don't ask about optional files, just do 'em
(setf *Ew-Files-Copy* (append *Ew-Files-Copy* *Optional-Ew-Files-Copy*)
(setq ew::*Default-Host* "unix") ; will this give better results?
;;; Okay, now save the world...
;; are these necesary? right order?
(excl:dumplisp :name "express"
; :restart-actions nil
(print "Core dumped.")
(excl:exit 0 :no-unwind t)
It was my first dumplisp for allegro, and though it works, I'm not satisfied
with the way (room) looks; there seems to be several empty oldspaces taking
up a couple meg, and the core file is 12M (on a sparc (RISC)); space in core
(by (room)) shows 6.5M used. I tried a couple gc tweaks, but it didn't seem
to change. Anyone have hints?