Boris,
Sorry that I've been so quiet in the discussion about Cheese. In general, I'd _love_ to have some native window support if the platform supports it. It makes one feel like being at home ;-) I have had a look at a previous version of Cheese and I like the general approach of it. There are, however, still some open questions I would like to raise. Such as for instance the question, how events should be handled. To give an example, your OS/2 implementation defines an external callback function for the window events. While this is a suitable approach, it hides some significant functionality from the ST side. There may be events one wishes to process directly (i.e. blocking resizes or other stuff) and not to leave to the VM. An example for this is, how I intercept the usual ALT-F4 window closing mechanism in the Windows VM of Squeak. There is probably no easy way of dealing with it, but here is a suggestion: One could try to "configure" the VM (i.e. the external callback) with actions to be taken, such as: * do the default action (this is triggered if the window has not registered interest in an event) * ignore it (don't do anything upon receiving this event) * do the default action and inform the window that this has happened (could be default for actions like window resize etc.) * ignore it and inform the window of this event (could be default for closing a window, when the contents of the window needs to be checked for modifications)
Another question is that of drawing graphics. While the modern GUIs provide us with some high-level widgets for things like scroll bars, lists or even whole text editors, in a whole lot of applications this is just not enough. Given that Cheese is not only for "08-15" applications [1] we need some sort of graphics output device. I could think of using class Canvas as a base for these operations. It's already in the image and its functionality seems rather clear and well structured to me. Even more, by using Canvas as the base, we would immediately have the ability to run any morphic world in any OS window.
Finally, I would love to see a pure emulation layer in Cheese which is entirely based on the current Squeak desktop approach. Since Squeak can be used on machines with virtually no OS there should also be some way of using Cheese on it. Because then, we could easily use an approach like "develop on your desktop machine - run it on any handheld device". And I would love to see Squeak/Cheese on any toaster in this universe ;-)
Just some thoughts, Andreas
[1] "08-15" - the standard rifle of the germans in world war I. Has become a general synonym for not doing anything besides the main direction (or, with Alan's words, entirely pink stuff).
Given that Cheese is not only for "08-15" applications [1] we need some sort of graphics output device. I could think of using class Canvas as a base for these operations. It's already in the image and its functionality seems rather clear and well structured to me. Even more, by using Canvas as the base, we would immediately have the ability to run any morphic world in any OS window.
Finally, I would love to see a pure emulation layer in Cheese which is entirely based on the current Squeak desktop approach. Since Squeak can be used on machines with virtually no OS there should also be some way of using Cheese on it. Because then, we could easily use an approach like "develop on your desktop machine - run it on any handheld device". And I would love to see Squeak/Cheese on any toaster in this universe ;-)
Just some thoughts, Andreas
[1] "08-15" - the standard rifle of the germans in world war I. Has become a general synonym for not doing anything besides the main direction (or, with Alan's words, entirely pink stuff).
A vote in support of Andreas' comments! While I, too, might enjoy the option of native widgets in Squeak, I definitely want to retain the option of the all-Squeak desktop. It's important not just for running on a toaster, but as an amazing learning/thinking tool.
This last quarter in my Sophomore Squeak-using class, the last assignment was to build an object-oriented drawing editor WITHOUT WINDOWS -- just blast everything directly to the Display and read the Sensor to determine user input. The idea was to get students to think at a different level than looking for canvas/button/viewport/etc., and instead think of how these pieces are implemented -- and how they might be improved. I was really excited about the results -- from interesting styles of interactions (e.g., rubber-banding polygons) and interesting visual looks (e.g., wide range of buttons).
I really WANT my students to be able to think outside of "08-15" (nice phrase, Andreas!), and Squeak is a great place to do it. While being able to build on all of the neat native stuff that's out there is a nice advantage, let's not lose the wonderful benefits of going off in entirely new directions.
Mark
-------------------------- Mark Guzdial : Georgia Tech : College of Computing : Atlanta, GA 30332-0280 (404) 894-5618 : Fax (404) 894-0673 : guzdial@cc.gatech.edu http://www.cc.gatech.edu/gvu/people/Faculty/Mark.Guzdial.html
squeak-dev@lists.squeakfoundation.org