--- a/UIPainterView.st Thu Jun 04 18:31:19 1998 +0200
+++ b/UIPainterView.st Fri Jun 05 01:22:47 1998 +0200
@@ -644,7 +644,7 @@
'!! !!\\') withCRs.
^ code
- "Modified: / 26.10.1997 / 19:01:15 / cg"
+ "Modified: / 5.6.1998 / 01:17:41 / cg"
!
generateAspectMethods
@@ -652,7 +652,10 @@
- but do not overwrite existing ones.
Return a string ready to compile into the application class."
- |cls code skip menuSelector protoSpec thisCode|
+ |cls code skip menuSelector protoSpec thisCode
+ definedMethodSelectors|
+
+ definedMethodSelectors := IdentitySet new.
code := ''.
@@ -674,10 +677,16 @@
(modelSelector := aProp model) notNil ifTrue:[
self generateCodeFrom:(Array with:modelSelector) in:cls
do:[:aSel|
+ |sym|
+
+ sym := aSel asSymbol.
skip := false.
(cls isSubclassOf:SimpleDialog) ifTrue:[
- skip := SimpleDialog implements:aSel asSymbol
+ skip := SimpleDialog implements:sym
+ ].
+ (definedMethodSelectors includes:sym) ifTrue:[
+ skip := true.
].
skip ifFalse:[
@@ -689,36 +698,55 @@
] ifFalse:[
thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls).
].
- code := code, thisCode
+ code := code, thisCode.
+ definedMethodSelectors add:sym.
]
]
].
self generateCodeFrom:(aProp spec aspectSelectors) in:cls
do:[:aSel|
- thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls).
- code := code , thisCode
+ |sym|
+
+ sym := aSel asSymbol.
+ (definedMethodSelectors includes:sym) ifFalse:[
+ thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls).
+ code := code , thisCode.
+ definedMethodSelectors add:sym.
+ ]
].
self generateCodeFrom:(aProp spec actionSelectors) in:cls
do:[:aSel|
- thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls).
- code := code , thisCode
+ |sym|
+
+ sym := aSel asSymbol.
+ (definedMethodSelectors includes:sym) ifFalse:[
+ thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls).
+ code := code , thisCode.
+ definedMethodSelectors add:sym.
+ ]
].
self generateCodeFrom:(aProp spec valueSelectors) in:cls
do:[:aSel|
- "/ uppercase: - assume its a globals name.
- aSel first isUppercase ifFalse:[
- thisCode := (self generateValueMethodFor:aSel spec:protoSpec inClass:cls).
- code := code , thisCode
+ |sym|
+
+ sym := aSel asSymbol.
+ (definedMethodSelectors includes:sym) ifFalse:[
+ "/ uppercase: - assume its a globals name.
+ aSel first isUppercase ifFalse:[
+ thisCode := (self generateValueMethodFor:aSel spec:protoSpec inClass:cls).
+ code := code , thisCode.
+ definedMethodSelectors add:sym.
+ ]
]
].
].
^ code
- "Modified: / 21.4.1998 / 20:23:48 / cg"
+ "Modified: / 5.6.1998 / 01:21:35 / cg"
!
generateCodeFrom:aListOfSelectors in:aClass do:aBlock