Hi All,
Clément and I were talking earlier today (about issues around the solving of issue 444) and later on we talked a it about UI. It has been a goal of Tudor Girba to have a VMMaker that uses the Glamorous Toolkit for richer inspection facilities, a project than makes sense to me too. But it is one I have failed to contribute to because of issues I have with Pharo. However, richer inspection could be implemented in Squeak too, without taking on the task of porting GT to Squeak (a worth-while project I encourage anyone interested to consider).
So what would be required to do something slick in Squeak? I'm hacking up a few ideas right now but there are some things I'd like, and I'm not sure of how to get them, hence my sending the message here and cc'ing Marcel.
One thing is handling double click in text so that it triggers not a selection, but some semantic action. I'm imagining a three column inspector where on the left are the inst vars of a VM object, such as the interpreter. In the next column is a default display of the selected inst var, for example, the output of the print: routine, which for the specialObjectsArray looks like this:
16r2FAF998: a(n) Array
16r734500 nil 16r734510 false 16r734520 true 16rD09B20 a Global #Processor -> 16r00745CD8
16rB01D20 class Bitmap 16r124FCB8 class SmallInteger 16rB02140 class ByteString 16rB01C00 class Array
16rB4D228 a SmalltalkImage 16r106E708 class BoxedFloat64 16rB05380 class Context 16r734500 nil
16rB04BA0 class Point 16rAFF358 class LargePositiveInteger 16r780B30 a DisplayScreen 16rB00018 class Message
16rB01F00 class CompiledMethod 16r2000B8 a Semaphore 16rB02440 class Semaphore 16rAFF4D8 class Character
16r93F0A8 #doesNotUnderstand: 16r93F0C8 #cannotReturn: 16r734500 nil 16r241C998 an Array
16r734500 nil 16r93F0E0 #mustBeBoolean 16rB01FC0 class ByteArray 16r116E800 class Process
16r2FB10B8 an Array 16r1365050 a Semaphore 16r100048 a Semaphore 16r734500 nil
16r734500 nil 16r734500 nil 16r980DF8 #cannotInterpret: 16r734500 nil
16rB192C0 class BlockClosure 16r734500 nil 16r100068 an Array 16r734500 nil
16r10AB350 a LinkedList 16r759080 a Semaphore 16rAFF2F8 class LargeNegativeInteger 16r2F82230 class ExternalAddress
16r2F820E8 class ExternalStructure 16r2F82D00 class ExternalData 16r2F88508 class ExternalFunction 16r2F82950 class ExternalLibrary
16r9B2090 #aboutToReturn:through: 16r9CB820 #run:with:in: 16r10BBBD0 #attemptToAssign:withIndex: 16r2FB10C8 an Array
16r2F4DF88 class Alien 16r10BBD20 #invokeCallbackContext: 16r2F51228 class UnsafeAlien 16r734500 nil
16r734500 nil 16rCE3570 #unusedBytecode 16r10BBBA0 #conditionalBranchCounterTrippedOn: 16r10BAB98 #classTrapFor: