On 21 Mar 2013, at 12:08, Benjamin <benjamin.vanryseghem.ph...@gmail.com> wrote:
> Yes, endless loop with step as far as I remember > > stepAt: millisecondClockValue in: aWindow > | newText | > > (CodeHolder smartUpdating and: [(millisecondClockValue - self > timeOfLastListUpdate) > 8000]) "Not more often than once every 8 seconds" > ifTrue: > [self updateListsAndCodeIn: aWindow. > timeOfLastListUpdate := millisecondClockValue]. > > newText := self contentsIsString > ifTrue: [self selection] > ifFalse: ["keep it short to reduce time to compute it" > self selectionPrintString ]. > newText = contents ifFalse: > [contents := newText. > self changed: #contents] > > stepTimeIn: aSystemWindow > ^ (selectionUpdateTime ifNil: [0]) * 10 max: 1000 > > Tadaaa :) > The old Browser was doing the same, and a lot of Morphs are doing this :s Yeah ;-) Now, from the user/developer standpoint it is of course nice to have an IDE that is as close as possible to a live objects environment. For browsers, announcement are a solution. For inspectors or debuggers showing arbitrary instance variables of objects, the question of how to implement that behaviour seems like an open question. > Ben > > On Mar 21, 2013, at 12:00 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote: > >> Ben, >> >> But then how does this work ? >> >> | point | >> point := 1@2. >> point inspect. >> [ 5 seconds asDelay wait. >> point setX: 10 setY: 20 ] fork. >> >> You can see the inspector change its printString, without >> ValueHolders>>contents: being involved, just a direct instance variable >> assignment. >> >> Sven >> >> On 21 Mar 2013, at 11:41, Benjamin <benjamin.vanryseghem.ph...@gmail.com> >> wrote: >> >>> For this kind of situation, my solution is to use a valueHolder >>> >>> instead of storing your string directly in an inst var, store it into the >>> value holder >>> >>> initialize >>> string := '' asValueHolder >>> >>> string: aString >>> string contents: aString >>> >>> string >>> ^ string contents >>> >>> And then what you can do in your initialise is >>> >>> string whenChangedDo: [:newValue | self label contents: newValue ] >>> >>> Something like this should work ^^ >>> >>> >>> The other solution (which is baaad, but can still be seen) is to have a >>> step method refreshing the Morph. >>> But this is really not efficient >>> >>> Hope it helps, >>> Ben >>> >>> On Mar 21, 2013, at 11:24 AM, MartinW <w...@fastmail.fm> wrote: >>> >>>> I asked the same question on Stackoverflow >>>> (http://stackoverflow.com/questions/15534305/how-to-bind-a-labelmorph-textmorph-to-a-variable-so-that-the-morph-reflects-chan) >>>> but as i do not know how much the audiences overlap i hope you do not mind >>>> if i repeat it here: >>>> >>>> How to bind a LabelMorph/TextMorph to a variable so that the Morph reflects >>>> changes of the variable? >>>> >>>> - I have an object with a variable containing a String. >>>> - I have a window containing a LabelMorph/TextMorph (or some other Morph >>>> that displays Text?). >>>> How do i bind the LabelMorph/TextMorph to the variable, so that the label >>>> updates when the String in the variable changes? >>>> >>>> - classic Smalltalk-80 dependent/change/update mechanism? >>>> - Pharo Announcement framework? >>>> - something different?? >>>> How would i do this? Which Morph should i use? >>>> >>>> Martin. >>>> >>>> >>>> >>>> -- >>>> View this message in context: >>>> http://forum.world.st/How-can-my-Morph-reflect-changes-in-the-object-it-displays-tp4677629.html >>>> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com. >>>> >>> >> >> >