WxSqueak 0.4rc First Impressions

Steven Swerling sswerling at yahoo.com
Tue Feb 22 19:57:32 UTC 2005


Hey Rob,

I just built WxSqueak on MSW using MSVC. It built after one small tweak 
-- I had to exlude the B3DAccelerator Plugin. I'm probably missing some 
support library for this and didn't want to fuss around with it. I'll 
post a little write up for people that wish to do same.

I haven't found any bugs using the demo, which looks and works great. No 
crashes so far. A lot of classes appear to have been cleaned up. Bravo.

A Request: Use Monticello. You would have to move all of your changes to 
the base system into a method protocal called *wx. It also would be nice 
to have a SAR install file that contains the monticello package along 
with the WxConstantMap file so that loading WX is a one click affair. If 
you'd like, I'd be happy to do these things for you. Using monticello 
will make it a lot easier for others to keep up with your changes, and 
easier to port WX to other versions of Squeak (I'm thinking Spoon here. 
Craig has said he'll either get a 3.7 Spoon going or backport some of 
the key tools like monticello). You will also find it's a lot easier to 
manage a monticello package then it is to manage a changeset.

FYI, I filed the WxSqueak changeset into my QuiteSmall image. (It works 
fine.) The difference in the image size was about 4.6mb after the filein 
(after deleting the changeset). Removing the Demo and Sample classes 
shaved off about 350k, leaving no obsolete references. QuiteSmall is 
about 3.6mb, and I estimate that the formal packagizing projects won't 
be able to shave much off of that without going into the base classes 
(Collection-*, Kernel-*, etc). Let's just guess they get about 0.5 mb 
improvement over QuiteSmall. So for now, we can guess that down the road 
a "core" wxSqueak image will be in the neighborhood of about 8mb.

[Request2: (Rob, I've made this request off list before but want to get 
it on the list just for the record).

Give the option of deferred event processing, an analog to 
WorldState>>addDeferred. In many cases methods won't need to be fired 
synchronously. Why risk callback trouble resulting from bugs in those 
methods?

It can be as simple as 1-2-3:
1. Add EvtHandler>>#on:id:lastId:send:to:defer:, just like 
#on:id:lastId:send:to, but it would take a boolean for defer. At the 
line where you have "(self handlerFor: eventSymbol) at: anId put: (Array 
with: anObject with: selector)", just add the "deferred" boolean as a 
3rd element of the array.
2. Add a method called "on:id:deferSend:" to go along with the sync 
"on:id:send". "on:id:send:" would call #on:id...defer: with the value of 
"false" for the value of defer, and the #on:...deferSend: method would 
call it with true.
3. When handling the event (the #handleEvent: method), check the 
deferred bit -- if it's deferred, rather than call the method, put it in 
a SharedQueue that works just like the one in WorldState.
]

Regards, Steve S.




More information about the Wxsqueak mailing list