--- a/UIGalleryView.st Wed May 20 08:32:45 2009 +0200
+++ b/UIGalleryView.st Wed May 20 09:17:22 2009 +0200
@@ -20,7 +20,8 @@
View subclass:#Canvas
instanceVariableNames:'clientSpecHolder selection specification lastClickPoint
- menuSelector uiBuilder hiddenCounter showBorders'
+ menuSelector uiBuilder hiddenCounter showBorders
+ didWarnAboutUnknownSpecs'
classVariableNames:''
poolDictionaries:''
privateIn:UIGalleryView
@@ -362,20 +363,29 @@
!
specification:aSpecOrSpecArray
- "set a new specification
- "
- |builder|
+ "set a new specification"
+
+ |builder newSpec|
self selection:nil.
self destroySubViews.
- ( aSpecOrSpecArray notNil
- and:[(specification := UISpecification from:aSpecOrSpecArray) notNil
- and:[specification respondsTo:#'buildViewFor:in:']]
- ) ifFalse:[
- specification := nil.
- ^ self
+ specification := nil.
+ aSpecOrSpecArray isNil ifTrue:[^ self].
+
+ "/ only warn once - otherwise, its annoying
+ Array missingClassInLiteralArrayErrorSignal handle:[:ex |
+ didWarnAboutUnknownSpecs == true ifFalse:[
+ Dialog warn:(ex description,'\\(Will not warn again - please check for unloaded classes/packages)' withCRs).
+ ].
+ didWarnAboutUnknownSpecs := true.
+ ex proceed.
+ ] do:[
+ newSpec := UISpecification from:aSpecOrSpecArray.
].
+ newSpec isNil ifTrue:[^ self].
+ (newSpec respondsTo:#'buildViewFor:in:') ifFalse:[^ self].
+ specification := newSpec.
(builder := uiBuilder) isNil ifTrue:[
builder := UIBuilder new isEditing:true.