[squeak-dev] The Inbox: System-ct.1221.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Mar 2 14:43:54 UTC 2021


Christoph Thiede uploaded a new version of System to project The Inbox:
http://source.squeak.org/inbox/System-ct.1221.mcz

==================== Summary ====================

Name: System-ct.1221
Author: ct
Time: 2 March 2021, 3:43:49.27617 pm
UUID: 9d574208-4d9d-9549-b398-2b34b8fce241
Ancestors: System-mt.1219

Refactors removal of selectors. Deprecates #confirmRemovalOf:on: because of its high coupling and magic number return values. Also improves multilingual support.

Please only merge together with {Tools-ct.1028. Protocols-ct.78}, (HelpSystem-Core-ct.124 isInTrunk ifTrue: [{HelpSystem-Core-ct.135}] ifFalse: [].) :-)

=============== Diff against System-mt.1219 ===============

Item was added:
+ ----- Method: SystemNavigation>>confirmAndRemoveSelector:class: (in category 'ui') -----
+ confirmAndRemoveSelector: selector class: aClass
+ 
+ 	| method allCalls browse remove |
+ 	method := MethodReference class: aClass selector: selector environment: self environment.
+ 	allCalls := self allCallsOn: selector.
+ 	
+ 	remove := true.
+ 	browse := false.
+ 	(allCalls anySatisfy: [:ea | ea ~= method]) ifTrue: [
+ 		| choice |
+ 		choice := UIManager default 
+ 			chooseFromLabeledValues: (OrderedDictionary newFrom: {
+ 				'Remove it' translated -> [].
+ 				'Remove, then browse senders' translated -> [browse := true].
+ 				'Don''t remove, but show me those senders' translated -> [remove := false. browse := true].
+ 				'Forget it -- do nothing -- sorry I asked' translated -> [remove := false] })
+ 			title: ('The message "{1}" has {2}.' translated format: {
+ 				selector.
+ 				allCalls size > 1
+ 					ifFalse: ['1 sender' translated]
+ 					ifTrue: ['{1} senders' translated format: {allCalls size}] }).
+ 		choice ifNil: [choice := [remove := false]].
+ 		choice value].
+ 	
+ 	remove ifTrue: [
+ 		aClass removeSelector: selector].
+ 	browse ifTrue: [
+ 		self headingAndAutoselectForLiteral: selector do: [ :label :autoSelect |
+ 			self
+ 				browseMessageList: allCalls
+ 				name: label
+ 				autoSelect: autoSelect]].
+ 	
+ 	^ remove!

Item was changed:
  ----- Method: SystemNavigation>>confirmRemovalOf:on: (in category 'ui') -----
  confirmRemovalOf: aSelector on: aClass 
  	"Determine if it is okay to remove the given selector. Answer 1 if it  
  	should be removed, 2 if it should be removed followed by a senders  
  	browse, and 3 if it should not be removed."
  	| count answer caption allCalls |
+ 	self deprecated: 'ct: Use #confirmAndRemoveSelector:class: instead.'.
+ 	
  	allCalls := self allCallsOn: aSelector.
  	(count := allCalls size) = 0
  		ifTrue: [^ 1].
  	"no senders -- let the removal happen without warning"
  	count = 1
  		ifTrue: [(allCalls first actualClass == aClass
  					and: [allCalls first methodSymbol == aSelector])
  				ifTrue: [^ 1]].
  	"only sender is itself"
  	caption := 'The message "{1}" has {2} sender{3}.' translated format: {aSelector. count. count > 1 ifTrue: ['s'] ifFalse: ['']}.
  
  	answer := UIManager default 
  		chooseFrom: #('Remove it'
  				'Remove, then browse senders'
  				'Don''t remove, but show me those senders'
  				'Forget it -- do nothing -- sorry I asked') title: caption.
  	answer = 3
  		ifTrue: [self
  				browseMessageList: allCalls
  				name: 'Senders of ' , aSelector
  				autoSelect: aSelector keywords first].
  	answer = 0
  		ifTrue: [answer := 3].
  	"If user didn't answer, treat it as cancel"
  	^ answer min: 3!



More information about the Squeak-dev mailing list