diff -r 66257924fbf6 -r 25c0162deb43 MenuEditor.st --- a/MenuEditor.st Thu Mar 24 15:34:17 2011 +0100 +++ b/MenuEditor.st Fri Mar 25 21:05:13 2011 +0100 @@ -5335,7 +5335,7 @@ ! doBrowseImageClass - |cls sel| + |cls sel image| (cls := retrieverHolder value) isNil ifTrue:[ Dialog warn:'No resource retriever is defined.'. @@ -5346,6 +5346,13 @@ cls isNil ifTrue:[ Dialog warn:'No such resource retriever class.'. ] ifFalse:[ + (cls respondsTo:#visualFor:) ifTrue:[ + image := cls visualFor:sel. + image ~~ (cls perform:sel) ifTrue:[ + self warn:'The image is resolved via #visualFor: from some unknown class'. + sel := #visualFor:. + ]. + ]. UserPreferences current systemBrowserClass openInClass:cls class selector:sel ] ] @@ -5354,27 +5361,41 @@ ! doEditImage - |sel cls item| + |sel cls item image| item := imageHolder value. item notNil ifTrue:[ - item doEdit - ] ifFalse:[ - (sel := selectorHolder value) isNil ifTrue:[ - Dialog warn:'No selector is defined.'. - ] ifFalse:[ - (cls := retrieverHolder value) isNil ifTrue:[ - Dialog warn:'No resource retriever is defined.'. - ] ifFalse:[ - cls := Smalltalk classNamed:cls. - cls isNil ifTrue:[ - Dialog warn:'No such resource retriever class.'. - ] ifFalse:[ - ImageEditor openOnClass:cls andSelector:sel - ] - ] - ] + item doEdit. + ^ self. + ]. + + sel := selectorHolder value. + sel isNil ifTrue:[ + Dialog warn:'No selector is defined.'. + ^ self. + ]. + cls := retrieverHolder value. + cls isNil ifTrue:[ + Dialog warn:'No resource retriever is defined.'. + ^ self. ]. + cls := Smalltalk classNamed:cls. + cls isNil ifTrue:[ + Dialog warn:'No such resource retriever class.'. + ^ self. + ]. + (cls respondsTo:#visualFor:) ifTrue:[ + image := cls visualFor:sel. + image ~~ (cls perform:sel ifNotUnderstood:nil) ifTrue:[ + self warn:'The image is resolved via #visualFor: from some unknown class'. + image notNil ifTrue:[ + ImageEditor openOnImage:image. + ]. + ^ self. + ]. + ]. + + ImageEditor openOnClass:cls andSelector:sel ! ! !MenuEditor::ResourceEditor methodsFor:'aspects'! @@ -5595,7 +5616,13 @@ selector := aSelector asSymbol. selector numArgs == 0 ifFalse:[^ self]. - iconOrSymbol := aClass perform:selector. + "do waht the ResourceRetriever will do" + (aClass respondsTo:#visualFor:) ifTrue:[ + iconOrSymbol := aClass visualFor:selector. + ]. + iconOrSymbol isNil ifTrue:[ + iconOrSymbol := aClass perform:selector. + ]. iconOrSymbol isSymbol ifTrue:[ icon := ToolbarIconLibrary perform:iconOrSymbol. ] ifFalse:[ @@ -5625,14 +5652,22 @@ !MenuEditor::ResourceEditorItem methodsFor:'user operations'! doEdit - "open image browser on self - " - |parent| + "open image browser on self" + + |parent aClass image| parent := self parent. - - parent ifNotNil:[ - ImageEditor openOnClass:(parent selector) andSelector:selector + parent notNil ifTrue:[ + aClass := parent selector. + (aClass respondsTo:#visualFor:) ifTrue:[ + image := aClass visualFor:selector. + image ~~ (aClass perform:selector) ifTrue:[ + self warn:'The image is resolved via #visualFor: from some unknown class'. + ImageEditor openOnImage:image. + ^ self. + ]. + ]. + ImageEditor openOnClass:aClass andSelector:selector. ]. ! !