[squeak-dev] The Trunk: Collections-dtl.550.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Dec 14 21:37:12 UTC 2013


David T. Lewis uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-dtl.550.mcz

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

Name: Collections-dtl.550
Author: dtl
Time: 14 December 2013, 4:36:35.768 pm
UUID: b493ee27-501d-44f9-86fe-237401bdeee4
Ancestors: Collections-fbs.549

Move Transcriptor back to Collections.
Make the emergency evaluator work in Morphic if MVC is not present, and vice versa.
Use Paragraph in MVC, and NewParagraph in Morphic.
Morphic implementation is adapted from Cuis.
Resolve MVC/Morphic differences through Project current.

=============== Diff against Collections-fbs.549 ===============

Item was added:
+ ReadWriteStream subclass: #Transcripter
+ 	instanceVariableNames: 'frame para'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'Collections-Streams'!
+ 
+ !Transcripter commentStamp: '<historical>' prior: 0!
+ Transcripter is a dog-simple scrolling stream with display.  It is intended to operate with no support from MVC or color in a minimal, or headless version of Squeak.  No attention has been paid to appearance or performance.!

Item was added:
+ ----- Method: Transcripter class>>emergencyEvaluator (in category 'utilities') -----
+ emergencyEvaluator
+ 	(Transcripter newInFrame: (0 at 0 corner: 320 at 200))
+ 		show: 'Type ''revert'' to revert your last method change.
+ Type ''exit'' to exit the emergency evaluator.';
+ 		readEvalPrint!

Item was added:
+ ----- Method: Transcripter class>>newInFrame: (in category 'instance creation') -----
+ newInFrame: frame
+ "
+ (Transcripter newInFrame: (0 at 0 extent: 100 at 200))
+ 	nextPutAll: 'Hello there'; endEntry;
+ 	cr; print: 355.0/113; endEntry;
+ 	readEvalPrint.
+ "
+ 	| transcript |
+ 	transcript := self on: (String new: 100).
+ 	transcript initInFrame: frame.
+ 	^ transcript clear!

Item was added:
+ ----- Method: Transcripter class>>startTranscriptProcess (in category 'instance creation') -----
+ startTranscriptProcess   "Transcripter startTranscriptProcess"
+ 	| activeProcess |
+ 	Transcript := self newInFrame: Display boundingBox.
+ 	activeProcess := [Transcript readEvalPrint.
+ 					Smalltalk processShutDownList: true; quitPrimitive]
+ 						newProcess
+ 					priority: Processor userSchedulingPriority.
+ 	activeProcess resume.
+ 	Processor terminateActive
+ !

Item was added:
+ ----- Method: Transcripter>>black (in category 'private') -----
+ black
+ 	Display depth = 1 ifTrue: [^ Bitmap with: 16rFFFFFFFF "Works without color support"].
+ 	^ Color black!

Item was added:
+ ----- Method: Transcripter>>clear (in category 'accessing') -----
+ clear
+ 	Display fill: (frame insetBy: -2) fillColor: self black;
+ 			fill: frame fillColor: self white.
+ 	self on: (String new: 100); endEntry!

Item was added:
+ ----- Method: Transcripter>>confirm: (in category 'command line') -----
+ confirm: queryString 
+ 
+ 	| choice |
+ 	[choice := self request: queryString , '
+ Please type yes or no followed by return'.
+ 	choice first asUppercase = $Y ifTrue: [^ true].
+ 		choice first asUppercase = $N ifTrue: [^ false]] repeat!

Item was added:
+ ----- Method: Transcripter>>endEntry (in category 'accessing') -----
+ endEntry
+ 	| c d cb |
+ 	c := self contents.
+ 	Display extent ~= DisplayScreen actualScreenSize ifTrue:
+ 		["Handle case of user resizing physical window"
+ 		DisplayScreen startUp.
+ 		frame := frame intersect: Display boundingBox.
+ 		^ self clear; show: c].
+ 	Project current displayTranscripter: self.
+ 	d := para compositionRectangle bottom - frame bottom.
+ 	d > 0 ifTrue:
+ 		["Scroll up to keep all contents visible"
+ 		cb := para characterBlockAtPoint: para compositionRectangle topLeft
+ 											+ (0@(d+para lineGrid)).
+ 		self on: (c copyFrom: cb stringIndex to: c size).
+ 		readLimit:= position:= collection size.
+ 		^ self endEntry].
+ !

Item was added:
+ ----- Method: Transcripter>>initInFrame: (in category 'initialization') -----
+ initInFrame: rect
+ 	frame := rect insetBy: 2.  "Leave room for border"
+ 	Project current initializeParagraphForTranscripter: self
+ !

Item was added:
+ ----- Method: Transcripter>>readEvalPrint (in category 'command line') -----
+ readEvalPrint
+ 	| line okToRevert |
+ 	okToRevert := true.
+ 	[#('quit' 'exit' 'done' ) includes: (line := self request: '>')]
+ 		whileFalse:
+ 		[line = 'revert'
+ 		ifTrue: [okToRevert
+ 			ifTrue: [RecentMessages default revertMostRecent.
+ 					self cr; show: 'reverted: ' , RecentMessages default mostRecent.
+ 					okToRevert := false]
+ 			ifFalse: [self cr; show: 'Only one level of revert currently supported']]
+ 		ifFalse: [self cr; show: ([Compiler evaluate: line] ifError: [:err :ex | err])]]!

Item was added:
+ ----- Method: Transcripter>>request: (in category 'command line') -----
+ request: prompt
+ 	| startPos char contents | 
+ 	self cr; show: prompt.
+ 	startPos := position.
+ 	[[Sensor keyboardPressed] whileFalse.
+ 	(char := Sensor keyboard) = Character cr]
+ 		whileFalse:
+ 		[char = Character backspace
+ 			ifTrue: [readLimit := position := (position - 1 max: startPos)]
+ 			ifFalse: [self nextPut: char].
+ 		self endEntry].
+ 	contents := self contents.
+ 	^ contents copyFrom: startPos + 1 to: contents size!

Item was added:
+ ----- Method: Transcripter>>show: (in category 'accessing') -----
+ show: anObject
+ 	self nextPutAll: anObject asString; endEntry!

Item was added:
+ ----- Method: Transcripter>>white (in category 'private') -----
+ white
+ 	Display depth = 1 ifTrue: [^ Bitmap with: 0 "Works without color support"].
+ 	^ Color white!



More information about the Squeak-dev mailing list