tim Rowledge uploaded a new version of ToolBuilder-Morphic to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Morphic-tpr.222.mcz
==================== Summary ====================
Name: ToolBuilder-Morphic-tpr.222
Author: tpr
Time: 6 January 2019, 4:17:48.50377 pm
UUID: fafb40ab-5f4c-4b83-ad8e-69ae5100c047
Ancestors: ToolBuilder-Morphic-pre.221
Add a 'new directory' button to DirectoryChooser and FileSaver dialogues.
The new directory will be a subdirectory of the current directory; the dialogue should update and select the new directory.
The position of the button is probably not ideal but can be moved later if we decide this is a facility to keep.
=============== Diff against ToolBuilder-Morphic-pre.221 ===============
Item was added:
+ ----- Method: DirectoryChooserDialog>>buildButtonsWith: (in category 'toolbuilder') -----
+ buildButtonsWith: builder
+ "add a 'new directory' button to the beginning of the row of buttons"
+ ^{ builder pluggableButtonSpec new
+ model: self;
+ label: 'New Directory' translated;
+ color: (self userInterfaceTheme get: #buttonColor for: #DialogWindow);
+ action: #newDirectoryName}, (super buildButtonsWith: builder)!
Item was added:
+ ----- Method: FileAbstractSelectionDialog>>newDirectoryName (in category 'directory tree') -----
+ newDirectoryName
+ "Create a new directory; will be a subdirectory of the current chosen directory.
+ If the user input is empty, or if the directory creation fails, fail this method.
+ Update the directory tree display afterwards and set the current directory to the newly created directory"
+ |userInput|
+ userInput := UIManager default request: 'New directory name' translated initialAnswer: 'newDir'.
+ userInput isEmptyOrNil ifTrue: [^nil].
+
+ [self directory createDirectory: userInput] ifError:[^nil]. "I hate using ifError: - it's so indiscriminate. Really ought to be a more precise error to catch properly"
+
+ self changed: #rootDirectoryList.
+ self directory: (self directory / userInput).
+ self changed: #selectedPath!
Item was added:
+ ----- Method: FileSaverDialog>>buildButtonsWith: (in category 'toolbuilder') -----
+ buildButtonsWith: builder
+ "add a 'new directory' button to the beginning of the row of buttons"
+ ^{ builder pluggableButtonSpec new
+ model: self;
+ label: 'New Directory' translated;
+ color: (self userInterfaceTheme get: #buttonColor for: #DialogWindow);
+ action: #newDirectoryName}, (super buildButtonsWith: builder)!
David T. Lewis uploaded a new version of MonticelloConfigurations to project The Trunk:
http://source.squeak.org/trunk/MonticelloConfigurations-dtl.155.mcz
==================== Summary ====================
Name: MonticelloConfigurations-dtl.155
Author: dtl
Time: 6 January 2019, 5:49:54.35982 pm
UUID: 2a3d8d3c-2f1e-48f0-818c-09372e553791
Ancestors: MonticelloConfigurations-dtl.154
When editing a MCConfiguration, add the name of the configuration to the browser window label. This helps keep track of the configuration map being edited, which may otherwise be confusing when updating configuration maps across more than one repository or update stream name.
=============== Diff against MonticelloConfigurations-dtl.154 ===============
Item was changed:
----- Method: MCConfiguration>>browse (in category 'actions') -----
browse
+ | browser |
+ browser := MCConfigurationBrowser new configuration: self.
+ name ifNotNil: [:nm | browser label: browser defaultLabel , ' ' , nm].
+ browser show!
- (MCConfigurationBrowser new configuration: self) show!
Item was changed:
----- Method: MCConfigurationBrowser>>defaultExtent (in category 'morphic ui') -----
defaultExtent
+ ^ 360@500!
- ^ 350@500!
David T. Lewis uploaded a new version of Chronology-Tests to project The Trunk:
http://source.squeak.org/trunk/Chronology-Tests-dtl.14.mcz
==================== Summary ====================
Name: Chronology-Tests-dtl.14
Author: dtl
Time: 6 January 2019, 11:42:13.906548 am
UUID: 5f14d4a9-46fc-4d54-926f-6b2a14e10bee
Ancestors: Chronology-Tests-dtl.13
The hash function for DateAndTime changed as of Chronology-Core-dtl.20. Update hash tests to match the new hash values.
=============== Diff against Chronology-Tests-dtl.13 ===============
Item was changed:
----- Method: DateAndTimeEpochTest>>testHash (in category 'tests') -----
testHash
self assert: aDateAndTime hash = DateAndTime new hash.
+ self assert: aDateAndTime hash = -2177452800000000
- self assert: aDateAndTime hash = 112557138
!
Item was changed:
----- Method: DateAndTimeLeapTest>>testHash (in category 'testing') -----
testHash
+ self assert: aDateAndTime hash = 1078054380000000
- self assert: aDateAndTime hash = 16256473
!
Well, I've been running the latest code and VM every day on my laptop
as a Personal Squeaksource server and using it for all of my
development these last weeks.
It went so smoothly I also decided push on it by downloading the
entire squeaksource.com (17GB!) and starting it locally using this
same new code, but with different Repository combination more suitable
to that application (ImagePersistence + FileSystem). That exposed a
couple of minor bugs which are now fixed and committed to the /ss
repository. I'm going to bang on it one more time but I believe that
guy is ready to upgrade too!
If you happened to try Personal SqueakSource and have any negative
feedback, please let me know soon, otherwise I'll start thinking about
upgrading it on the server and kissing the timeouts goodbye.
- Chris
Eliot Miranda uploaded a new version of Regex-Core to project The Trunk:
http://source.squeak.org/trunk/Regex-Core-eem.54.mcz
==================== Summary ====================
Name: Regex-Core-eem.54
Author: eem
Time: 4 January 2019, 5:26:00.659106 pm
UUID: 42807ecb-3ae0-469e-8d0a-73e6d0197bda
Ancestors: Regex-Core-ul.53
Remove an unnecessary store into block argument
=============== Diff against Regex-Core-ul.53 ===============
Item was changed:
----- Method: RxsCharSet>>enumerableSetIgnoringCase: (in category 'privileged') -----
enumerableSetIgnoringCase: aBoolean
"Answer a collection of characters that make up the portion of me that can be enumerated, or nil if there are no such characters. The case check is only used to determine the type of set to be used. The returned set won't contain characters of both cases, because this way the senders of this method can create more efficient checks."
| highestCharacterCode set |
highestCharacterCode := elements inject: -1 into: [ :max :each |
+ (each maximumCharacterCodeIgnoringCase: aBoolean) max: max ].
- max := (each maximumCharacterCodeIgnoringCase: aBoolean) max: max ].
highestCharacterCode = -1 ifTrue: [ ^nil ].
set := highestCharacterCode <= 255
ifTrue: [ CharacterSet new ]
ifFalse: [ WideCharacterSet new ].
elements do: [ :each | each enumerateTo: set ].
^set!
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1210.mcz
==================== Summary ====================
Name: Kernel-eem.1210
Author: eem
Time: 4 January 2019, 4:38:17.37951 pm
UUID: d4fc9cd7-ac05-442d-bfe6-8b29ee965a98
Ancestors: Kernel-eem.1209
Have printInstructionsOn: (but not printInstructionsOn:do:, which is used by the explorer) print nested full blocks indented inline, for compatibility with the behavior for embedded blocks.
=============== Diff against Kernel-eem.1209 ===============
Item was changed:
InstructionClient subclass: #InstructionPrinter
+ instanceVariableNames: 'method scanner stream oldPC innerIndents indent printPC indentSpanOfFollowingJump fullBlockRecursionSelector'
- instanceVariableNames: 'method scanner stream oldPC innerIndents indent printPC indentSpanOfFollowingJump'
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Methods'!
!InstructionPrinter commentStamp: 'md 4/8/2003 12:47' prior: 0!
My instances can print the object code of a CompiledMethod in symbolic format. They print into an instance variable, stream, and uses oldPC to determine how many bytes to print in the listing. The variable method is used to hold the method being printed.!
Item was changed:
----- Method: InstructionPrinter>>printInstructionsOn: (in category 'initialize-release') -----
printInstructionsOn: aStream
"Append to the stream, aStream, a description of each bytecode in the
instruction stream."
| end |
stream := aStream.
scanner := InstructionStream on: method.
end := method endPC.
oldPC := scanner pc.
innerIndents := Array new: end withAll: 0.
+ fullBlockRecursionSelector := #printInstructionsOn:.
[scanner pc <= end] whileTrue:
[scanner interpretNextInstructionFor: self]!
Item was changed:
----- Method: InstructionPrinter>>pushFullClosure:numCopied: (in category 'printing') -----
pushFullClosure: aCompiledBlock numCopied: numCopied
| literalIndex |
literalIndex := method literals identityIndexOf: aCompiledBlock.
literalIndex = 0
ifTrue:
[self print: 'closureNumCopied: ', numCopied printString
, ' numArgs: ', aCompiledBlock numArgs printString]
ifFalse:
[self print: 'pushFullClosure: (self literalAt: ', literalIndex printString,
') numCopied: ', numCopied printString,
+ ' "numArgs: ', aCompiledBlock numArgs printString, '"'].
+
+ fullBlockRecursionSelector ifNotNil:
+ [(self class on: aCompiledBlock)
+ indent: indent + 1;
+ perform: fullBlockRecursionSelector with: stream]!
- ' "numArgs: ', aCompiledBlock numArgs printString, '"']!