Fixes I had to make to the latest pharo image to be able to work with it

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Fixes I had to make to the latest pharo image to be able to work with it

hernan.wilkinson
Hi,
 I know this is not the right way to send fixes, but it is the fastest... so maybe it is useful for those who need them.
 I had a lot of problems using the last pharo image, some are related with the new debugger, some are old errors related with buttons, some are related with the OmmiBrowser (I send them here too because I know that the OB authors are subscribed to this list and because that is the main pharo browser), etc. 
 Most of the problems are because nil receives a message that does not understand. I did not look for the reason that made the variable reference nil (maybe the best solution) but only added a #isNil check (the fastest solution).
 I had to disable the new debugger and get back to the old one (Debugger) because I was getting to many errors with the new one saying "It could not debug a running process".
 Here are the fixes:

1) This one made the image to crash because it entered a infinite loop. The problem is that sometime getStateSelector is nil. 

PluggableButtonMorph>>getModelState
"Answer the result of sending the receiver's model the getStateSelector message."

^(getStateSelector isNil or: [ model isNil ])
ifTrue: [false]
ifFalse: [model perform: getStateSelector]
---------------

2) This one is related with what Sean Allen reported. Again leftMorphs is nil, so I added a #isNil check. (For me this class is a mess, but I do not have the experience to change it yet)

MouseOverHandler>>noticeMouseOver: aMorph event: anEvent
"Remember that the mouse is currently over some morph"
leftMorphs isNil ifFalse: [
(leftMorphs includes: aMorph) 
ifTrue:[leftMorphs remove: aMorph]
ifFalse:[enteredMorphs nextPut: aMorph].
overMorphs nextPut: aMorph.]
--------------

3) OCompletion does not work with the old debugger because#guessTypeForName: references tempNames that is not defined... So I just disallowed it.

Debugger>>guessTypeForName: aString 
| index object |
index := nil. "tempNames
indexOf: aString
ifAbsent: []."
object := index
ifNil: [index := self receiver class allInstVarNames
indexOf: aString
ifAbsent: [].
index ifNil: [^ nil].
self receiver instVarAt: index]
ifNotNil: [self selectedContext tempAt: index].
^ object class
--------------
All the rest are OB related. 
4) When pressing the mouse right button (on windows) I had a error saying OBTextSelection does not understand #isClassNode, so I implemented returning false. Again, I did not verify if an OBTextSelection should receive that message or not, I just implemented.

OBTextSelection>>isClassNode

^false
---------------
5) After loading a Monticello package I could not open an OB browser anymore. Again, the problem is that ea is nil sometimes.

OBBrowser>>scanNodeCommands: ann 
(cmdFactories select: [:ea | ea notNil and: [ ea takesNodes]]) 
do: [:ea | ann addFactory: ea]
-------------------
6) Similar to 5.

OBBrowser>>scanTextCommands: ann 
(cmdFactories select: [:ea | ea notNil and: [ ea takesText ]]) do: [:ea | ann addFactory: ea]
------------------
7) This is an error I reported to OB a long time ago, related with pressing or selecting the cancel option.

OBDefinitionPanel>>aboutToChange: ann

    | ans answerResult vetoBlock |

    self canDiscardEdits ifTrue: [^ true].
    vetoBlock := [ ann veto ].
    ans := OBChoiceRequest
            prompt: 'Code has been modified. Do you want to accept or discard the changes?'
            labels: {'Accept'. 'Discard'. 'Cancel'}
            values: (Array
                        with: [self changed: #accept]
                        with: [self changed: #clearUserEdits]
                        with: vetoBlock ).
 
    answerResult := ans value.
answerResult isNil ifTrue: vetoBlock.
--------------------

I hope it helps.

Hernan.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Fixes I had to make to the latest pharo image to be able to work with it

Stéphane Ducasse
Thanks.

I think that for the MouseOverHandler it would be good to know if this  
is related to Sensor changes.
Mike what you think?

Stef

On Jun 3, 2009, at 11:38 PM, Hernan Wilkinson wrote:

> Hi,
>  I know this is not the right way to send fixes, but it is the  
> fastest... so maybe it is useful for those who need them.
>  I had a lot of problems using the last pharo image, some are  
> related with the new debugger, some are old errors related with  
> buttons, some are related with the OmmiBrowser (I send them here too  
> because I know that the OB authors are subscribed to this list and  
> because that is the main pharo browser), etc.
>  Most of the problems are because nil receives a message that does  
> not understand. I did not look for the reason that made the variable  
> reference nil (maybe the best solution) but only added a #isNil  
> check (the fastest solution).
>  I had to disable the new debugger and get back to the old one  
> (Debugger) because I was getting to many errors with the new one  
> saying "It could not debug a running process".
>  Here are the fixes:
>
> 1) This one made the image to crash because it entered a infinite  
> loop. The problem is that sometime getStateSelector is nil.
>
> PluggableButtonMorph>>getModelState
> "Answer the result of sending the receiver's model the  
> getStateSelector message."
>
> ^(getStateSelector isNil or: [ model isNil ])
> ifTrue: [false]
> ifFalse: [model perform: getStateSelector]
> ---------------
>
> 2) This one is related with what Sean Allen reported. Again  
> leftMorphs is nil, so I added a #isNil check. (For me this class is  
> a mess, but I do not have the experience to change it yet)
>
> MouseOverHandler>>noticeMouseOver: aMorph event: anEvent
> "Remember that the mouse is currently over some morph"
> leftMorphs isNil ifFalse: [
> (leftMorphs includes: aMorph)
> ifTrue:[leftMorphs remove: aMorph]
> ifFalse:[enteredMorphs nextPut: aMorph].
> overMorphs nextPut: aMorph.]
> --------------
>
> 3) OCompletion does not work with the old debugger  
> because#guessTypeForName: references tempNames that is not  
> defined... So I just disallowed it.
>
> Debugger>>guessTypeForName: aString
> | index object |
> index := nil. "tempNames
> indexOf: aString
> ifAbsent: []."
> object := index
> ifNil: [index := self receiver class allInstVarNames
> indexOf: aString
> ifAbsent: [].
> index ifNil: [^ nil].
> self receiver instVarAt: index]
> ifNotNil: [self selectedContext tempAt: index].
> ^ object class
> --------------
> All the rest are OB related.
> 4) When pressing the mouse right button (on windows) I had a error  
> saying OBTextSelection does not understand #isClassNode, so I  
> implemented returning false. Again, I did not verify if an  
> OBTextSelection should receive that message or not, I just  
> implemented.
>
> OBTextSelection>>isClassNode
>
> ^false
> ---------------
> 5) After loading a Monticello package I could not open an OB browser  
> anymore. Again, the problem is that ea is nil sometimes.
>
> OBBrowser>>scanNodeCommands: ann
> (cmdFactories select: [:ea | ea notNil and: [ ea takesNodes]])
> do: [:ea | ann addFactory: ea]
> -------------------
> 6) Similar to 5.
>
> OBBrowser>>scanTextCommands: ann
> (cmdFactories select: [:ea | ea notNil and: [ ea takesText ]]) do:  
> [:ea | ann addFactory: ea]
> ------------------
> 7) This is an error I reported to OB a long time ago, related with  
> pressing or selecting the cancel option.
>
> OBDefinitionPanel>>aboutToChange: ann
>
>     | ans answerResult vetoBlock |
>
>     self canDiscardEdits ifTrue: [^ true].
>     vetoBlock := [ ann veto ].
>     ans := OBChoiceRequest
>             prompt: 'Code has been modified. Do you want to accept  
> or discard the changes?'
>             labels: {'Accept'. 'Discard'. 'Cancel'}
>             values: (Array
>                         with: [self changed: #accept]
>                         with: [self changed: #clearUserEdits]
>                         with: vetoBlock ).
>
>     answerResult := ans value.
> answerResult isNil ifTrue: vetoBlock.
> --------------------
>
> I hope it helps.
>
> Hernan.
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Fixes I had to make to the latest pharo image to be able to work with it

David Röthlisberger-2
In reply to this post by hernan.wilkinson
Hi Hernan,

thanks for your fixes!
Some comments of mine:

> All the rest are OB related.
> 4) When pressing the mouse right button (on windows) I had a error
> saying OBTextSelection does not understand #isClassNode, so I
> implemented returning false. Again, I did not verify if an
> OBTextSelection should receive that message or not, I just implemented.

Integrated in latest OB.

> ---------------
> 5) After loading a Monticello package I could not open an OB browser
> anymore. Again, the problem is that ea is nil sometimes.
>
> OBBrowser>>scanNodeCommands: ann
> (cmdFactories select: [:ea | ea notNil and: [ ea takesNodes]])
> do: [:ea | ann addFactory: ea]
> -------------------

Cna you tell me how to reproduce this? Which MC package did you load when you got the
problem?

> OBBrowser>>scanTextCommands: ann
> (cmdFactories select: [:ea | ea notNil and: [ ea takesText ]]) do: [:ea
> | ann addFactory: ea]
> ------------------
> 7) This is an error I reported to OB a long time ago, related with
> pressing or selecting the cancel option.

Integrated in latest OB.


David

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Fixes I had to make to the latest pharo image to be able to work with it

Stéphane Ducasse
In reply to this post by hernan.wilkinson
http://code.google.com/p/pharo/issues/detail?id=867



On Jun 3, 2009, at 11:38 PM, Hernan Wilkinson wrote:

> PluggableButtonMorph>>getModelState
> "Answer the result of sending the receiver's model the  
> getStateSelector message."
>
> ^(getStateSelector isNil or: [ model isNil ])
> ifTrue: [false]
> ifFalse: [model perform: getStateSelector]


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Fixes I had to make to the latest pharo image to be able to work with it

Stéphane Ducasse
In reply to this post by hernan.wilkinson
http://code.google.com/p/pharo/issues/detail?id=86



On Jun 3, 2009, at 11:38 PM, Hernan Wilkinson wrote:

> 2) This one is related with what Sean Allen reported. Again  
> leftMorphs is nil, so I added a #isNil check. (For me this class is  
> a mess, but I do not have the experience to change it yet)
>
> MouseOverHandler>>noticeMouseOver: aMorph event: anEvent
> "Remember that the mouse is currently over some morph"
> leftMorphs isNil ifFalse: [
> (leftMorphs includes: aMorph)
> ifTrue:[leftMorphs remove: aMorph]
> ifFalse:[enteredMorphs nextPut: aMorph].
> overMorphs nextPut: aMorph.]


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project