--- 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.
].
! !