--- a/DoWhatIMeanSupport.st Mon Sep 11 09:05:47 2017 +0200
+++ b/DoWhatIMeanSupport.st Mon Sep 11 09:11:07 2017 +0200
@@ -2918,7 +2918,7 @@
allSelectors
selectorsForIsXXXTests selectorsSentInClass selectorsImplementedInSuper
editAction editActionForArg argNames selectorsForVars
- selectorTypedSoFar addIfNotYetImplemented alreadyOK|
+ selectorTypedSoFar addIfNotYetImplemented alreadyOK processMenu|
allSelectors := Set new.
@@ -2942,7 +2942,7 @@
sel ~= selectorTypedSoFar ifTrue:[
(allSelectors includes:sel) ifFalse:[
(classOrNil implements:sel asSymbol) ifFalse:[
- selectorsForVars add:sel.
+ list add:sel.
allSelectors add:sel.
].
].
@@ -2999,6 +2999,63 @@
]
]
].
+ "/ if on the instance side, and the class side has menu- or windowspecs,
+ "/ also add messages named as callbacks or aspects
+ (classOrNil theNonMetaclass inheritsFrom:ApplicationModel) ifTrue:[
+ processMenu :=
+ [:menu |
+ menu itemsDo:[:item |
+ |sel subMenu|
+
+ (sel := item choice) notNil ifTrue:[
+ addIfNotYetImplemented value:selectorsSentInClass value:sel
+ ].
+ (sel := item itemValue) notNil ifTrue:[
+ addIfNotYetImplemented value:selectorsSentInClass value:sel
+ ].
+ (sel := item submenuChannel) notNil ifTrue:[
+ addIfNotYetImplemented value:selectorsSentInClass value:sel
+ ].
+ (subMenu := item submenu) notNil ifTrue:[
+ processMenu value:subMenu
+ ].
+ ].
+ ].
+
+ classOrNil withAllSuperclassesDo:[:eachSuperclass |
+ eachSuperclass theMetaclass methodDictionary keysAndValuesDo:[:sel :mthd |
+ |spec bodyNode retVal specArray menu|
+
+ (mthd hasMenuResource) ifTrue:[
+ bodyNode := mthd parseTree body.
+ bodyNode lastIsReturn ifTrue:[
+ (retVal := bodyNode statements last value) isLiteralArray ifTrue:[
+ specArray := retVal value.
+ menu := specArray decodeAsLiteralArray.
+ processMenu value:menu.
+ ].
+ ].
+ ].
+ (mthd hasCanvasResource) ifTrue:[
+ bodyNode := mthd parseTree body.
+ bodyNode lastIsReturn ifTrue:[
+ (retVal := bodyNode statements last value) isLiteralArray ifTrue:[
+ specArray := retVal value.
+ spec := specArray decodeAsLiteralArray.
+ spec aspectSelectors do:[:sel | addIfNotYetImplemented value:selectorsSentInClass value:sel].
+ spec valueSelectors do:[:sel | addIfNotYetImplemented value:selectorsSentInClass value:sel].
+ spec actionSelectors do:[:sel | addIfNotYetImplemented value:selectorsSentInClass value:sel].
+ ].
+ ].
+ ].
+ ].
+ eachSuperclass selectorsDo:[:sel |
+ (sel startsWith:selectorTypedSoFar) ifTrue:[
+ addIfNotYetImplemented value:selectorsImplementedInSuper value:sel.
+ ]
+ ]
+ ]
+ ].
].
].
@@ -3161,7 +3218,7 @@
"Modified: / 04-07-2006 / 18:48:26 / fm"
"Created: / 10-11-2006 / 13:46:44 / cg"
"Modified: / 16-02-2010 / 10:13:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 10-02-2017 / 10:32:45 / cg"
+ "Modified: / 10-09-2017 / 14:51:26 / cg"
!
codeCompletionForTempVariable:node into:actionBlock