UIPainter.st
changeset 1357 ba372586f899
parent 1356 189c9cec8ce6
child 1360 555429506474
--- a/UIPainter.st	Thu Feb 17 10:13:33 2000 +0100
+++ b/UIPainter.st	Thu Feb 17 13:15:58 2000 +0100
@@ -3308,6 +3308,16 @@
 
 !
 
+doGenerateAspectSelectorsMethod
+    "generates aspectSelectors method for the exported aspects"
+
+
+    self askForSectionModification.
+
+    (ReadStream on:self painter generateAspectSelectorsMethod) fileIn.
+
+!
+
 doGenerateHookMethods
     "generates hook methods for the application class"
 
@@ -3502,12 +3512,13 @@
         superclassName:specSuperclass
         selector:specSelector.
 
+    Transcript showCR:'generating windowSpec code...'.
+
     code := painter generateWindowSpecMethodSource withCRs.
-
-    Transcript showCR:'generating windowSpec code...'.
-
     (ReadStream on:code) fileIn.
 
+    self doGenerateAspectSelectorsMethod.
+
     self helpTool installHelpSpecsOnClass:specClass.
 
     self updateInfoLabel.
@@ -3658,7 +3669,7 @@
 canvasSpec
     "returns spec assigned to canvas"
 
-    |spec list key block exported cls canvas|
+    |spec list key block cls canvas modelBlock|
 
     spec := WindowSpec new.
     canvas := self canvas.
@@ -3670,33 +3681,21 @@
     ].
 
     spec exportedAspects isNil ifTrue:[
-        exported := IdentitySet new.
-
         (     (cls  := canvas className) notNil
-         and:[(cls  := canvas resolveName:cls) notNil
-         and:[(list := cls perform:#aspectSelectors ifNotUnderstood:nil) notNil]]
+         and:[(cls  := canvas resolveName:cls) notNil]
         ) ifTrue:[
-            list do:[:el| exported add:el]
+            list := cls perform:#aspectSelectors ifNotUnderstood:nil.
         ].
-        spec exportedAspects:exported.
-
-        windowSpec notNil ifTrue:[
-            windowSpec exportedAspects:(exported copy)
-        ].
+        spec setExportedAspectsFrom:list.
+        windowSpec exportedAspects:(spec exportedAspects).
     ].
 
-    list  := OrderedCollection new.
-    block := [:k|
-        (k isSymbol and:[(list includesIdentical:k) not]) ifTrue:[list add:k]
+    self propertiesDo:[:aProp| |aspect entry|
+        spec exportedAspectsAddKey:(aProp model) type:nil.
+        aProp spec aspectSelectors do:[:aKey|spec exportedAspectsAddKey:aKey type:nil].
+        aProp spec actionSelectors do:[:aKey|spec exportedAspectsAddKey:aKey type:#action].
     ].
-
-    self propertiesDo:[:aProp|
-        block value:(aProp model).
-        aProp spec aspectSelectors do:block.
-    ].
-    spec listOfExportedAspects:list.
   ^ spec
-
 !
 
 canvasSpec:aSpec
@@ -3712,6 +3711,14 @@
     spec setAttributesIn:(self canvas topView) with:(UIBuilder new isEditing:true).
 !
 
+exportedAspects
+    "returns spec assigned to canvas"
+
+    windowSpec isNil ifTrue:[^ #()].
+    ^ windowSpec exportedAspects ? #()
+
+!
+
 itemOfView:aView
     "returns item assigned to view or nil"