1. I manually loaded ConfigurationOfTimeZoneDatabase from
sqs/TimeZoneDatabase
2. "ConfigurationOfTimeZoneDatabase project stableVersion load" -> unknown
selector #stableVersion
3. "ConfigurationOfTimeZoneDatabase project" -> hangs 4e on "Downloading
Metacello-Base-DaleHenrichs.2.mcz"
4. Install Metacello manually via SqS Catalog -> Hangs 4e on "Downloading
Time-PaulDeBruicker.53"; unable to interrupt; eventually crashes with no
crash dump or debug log
The configuration seems to be okay because I successfully loaded in Pharo
6.1 via:
Metacello new
configuration: 'TimeZoneDatabase';
squeaksource: 'TimeZoneDatabase';
load
There were just a few failed test (93 passed, 5 fails, 2 errors).
-----
Cheers,
Sean
--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html
Chris Muller uploaded a new version of ToolBuilder-Morphic to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Morphic-cmm.209.mcz
==================== Summary ====================
Name: ToolBuilder-Morphic-cmm.209
Author: cmm
Time: 30 March 2018, 6:01:58.101354 pm
UUID: da0cc990-c84a-49e8-ad16-99d84013a244
Ancestors: ToolBuilder-Morphic-tpr.208
Various fixes and improvements to Tim's cool new FileSaverDialog. Restores the convenience of simply typing a name and pressing [Return], by opening with the filename field directly under the mouse, ready to type. It is also once again not required to type the filename extension, the system will add it or prompt the user for it if there are multiple possibilities. If an invalid filename is specified, the user is alerted appropriately, instead of silently not saving their file.
=============== Diff against ToolBuilder-Morphic-tpr.208 ===============
Item was changed:
----- Method: DialogWindow>>openAsTool (in category '*ToolBuilder-Morphic-opening') -----
openAsTool
+ self flag: #dev.
+ "cm: The following line may no longer be necessary."
+ preferredPosition isMorph ifFalse: [ self moveToHand ].
+ ^ self getUserResponse!
-
- self flag: #fishy. "mt: Why does the dialog not return its Morphic form but data?"
- ^ self
- moveToHand;
- getUserResponse!
Item was changed:
Model subclass: #FileAbstractSelectionDialog
+ instanceVariableNames: 'patternList directory directoryCache message listIndex fileName finalChoice nameList sizeList dateList suffixList'
- instanceVariableNames: 'patternList directory directoryCache message listIndex fileName finalChoice nameList sizeList dateList'
classVariableNames: ''
poolDictionaries: ''
category: 'ToolBuilder-Morphic-Tools'!
!FileAbstractSelectionDialog commentStamp: 'tpr 11/21/2017 18:18' prior: 0!
FileAbstractSelectionDialog is the abstract superclass for the file chooser & saver modal dialogs.
The UI provides a message to the user, a text input field, a directory tree widget and a list of files within any chosen directory, and buttons to accept the selected file name/path or cancel the operation. See subclass comments and class side methods for specific usage examples.
Instance Variables
directory: <FileDirectory> used for the currently selected directory
directoryCache: <WeakIdentityKeyDictionary> used to cache a boolean to help us more quickly populate the directory tree widget when revisiting a directory
fileName: <String|nil> the name of the currently selected file, if any
finalChoice: <String|nil> pathname of the finally chosen file, returned as the result of accepting; nil is returned otherwise
list: <Array> the list of String of filenames (and date/size) that match the current pattern
listIndex: <Integer> list index of the currently selected file
patternList: <OrderedCollection of String> the patterns are held as a collection of string that may include * or # wildcards. See FileAbstractSelectionDialog>>#parsePatternString for details
message: <String> a message to the user to explain what is expected
nameList,DateList, sizeList: <Array> the list of file names matching the pattern and the appropriate date and size values, formatted for a PluggableMultiColumnListMorph!
Item was changed:
----- Method: FileAbstractSelectionDialog>>buildTextInputWith: (in category 'toolbuilder') -----
buildTextInputWith: builder
| textSpec |
textSpec := builder pluggableInputFieldSpec new.
textSpec
model: self;
+ name: #inputText ;
font: self textViewFont;
+ getText: #inputText;
+ setText: #selectFilename:;
+ selection: #contentsSelection.
- getText: #inputText;
- setText: #inputText:.
^textSpec
!
Item was changed:
----- Method: FileAbstractSelectionDialog>>initialize (in category 'initialize-release') -----
initialize
super initialize.
directoryCache := WeakIdentityKeyDictionary new.
listIndex := 0.
+ patternList := self defaultPatternList.
+ suffixList := OrderedCollection new!
- patternList := self defaultPatternList!
Item was changed:
----- Method: FileAbstractSelectionDialog>>suffixList: (in category 'path and pattern') -----
+ suffixList: listOfStrings
- suffixList: listOfStrings
"Make a pattern list from a one or more filename suffix strings in a list , i.e. #('jpg' 'mpeg') "
-
listOfStrings isEmptyOrNil
+ ifTrue: [ patternList := self defaultPatternList ]
+ ifFalse:
+ [ patternList := OrderedCollection new.
+ listOfStrings do:
+ [ : each | each isEmptyOrNil ifFalse:
+ [ patternList add: '*.' , each.
+ suffixList add: each ] ] ]!
- ifTrue: [patternList := self defaultPatternList]
- ifFalse: [patternList := OrderedCollection new.
- listOfStrings do: [:each|
- each isEmptyOrNil ifFalse:[ patternList add: '*.',each] ] ]!
Item was changed:
----- Method: FileChooserDialog class>>openOn:suffixList:label: (in category 'instance creation') -----
+ openOn: aDirectory suffixList: aCollection label: labelString
+ "Open a modal dialog to choose a file. Start the dialog with aDirectory selected and files matching the file name suffixes in aCollection. Set the user message to labelString."
- openOn: aDirectory suffixList: patternList label: labelString
- "Open a modal dialog to choose a file. Start the dialog with aDirectory selected
- and files matching the file name suffixes in patternList. Set the user message
- to labelString."
"FileChooserDialog openOn: FileDirectory default suffixList: { 'changes' . 'image' } label: 'Do something with the selected files' "
^self new
directory: aDirectory;
+ suffixList: aCollection;
- suffixList: patternList;
message: labelString;
getUserResponse!
Item was changed:
----- Method: FileSaverDialog>>buildWith: (in category 'toolbuilder') -----
buildWith: builder
"assemble the spec for the saver dialog UI and build the window"
| window windowSpec |
windowSpec := self buildWindowWith: builder specs: {
(self topConstantHeightFrame: self textViewHeight + self viewSpacing
fromLeft: 0
width: 1) -> [self buildTextInputWith: builder].
(self frameOffsetFromTop: self textViewHeight + self viewSpacing
fromLeft: 0.25
width: 0.75
offsetFromBottom: 0) -> [self buildFileListWith: builder].
(self frameOffsetFromTop: self textViewHeight + self viewSpacing
fromLeft: 0
width: 0.25
offsetFromBottom: 0) -> [self buildDirectoryTreeWith: builder].
}.
windowSpec buttons addAll: ( self buildButtonsWith: builder ).
window := builder build: windowSpec.
window addKeyboardCaptureFilter: self.
self changed: #selectedPath.
self inputText: fileName.
+ window positionOverWidgetNamed: #inputText.
^window
!
Item was added:
+ ----- Method: FileSaverDialog>>contentsSelection (in category 'ui details') -----
+ contentsSelection
+ ^ 1 to: 9999!
Item was changed:
----- Method: FileSaverDialog>>inputText: (in category 'filename') -----
inputText: aText
+ "Initialize the filename entry field to aString. If a file with that name already exists, set up to highlight it."
+ fileName := aText asString.
+ self selectExistingFilename!
- "user has entered a potential filename in the text field.
- Check it against the current pattern; if it is ok we can accept it and then if it is a file in
- the current list, highlight it.
- If it would not match the pattern, alert the user as best we can"
- | candidate |
- candidate := aText asString.
- (patternList anySatisfy: [:p | p match: candidate])
- ifTrue: [fileName := candidate.
- listIndex := nameList findFirst: [:nm | nm = fileName].
- self changed: #fileListIndex.
- ^true]
- ifFalse: [fileName := nil.
- self changed: #flash.
- ^false]!
Item was added:
+ ----- Method: FileSaverDialog>>selectExistingFilename (in category 'private') -----
+ selectExistingFilename
+ "Answer whether an existing file in the list matches my proposed filename, selecting it if it does."
+ ^ (patternList anySatisfy:
+ [ : each | (each
+ compare: fileName
+ caseSensitive: FileDirectory default isCaseSensitive) = 2 ])
+ and:
+ [ listIndex := nameList findFirst: [ : each | each = fileName ].
+ true ]!
Item was added:
+ ----- Method: FileSaverDialog>>selectFilename: (in category 'filename') -----
+ selectFilename: aText
+ "The user has entered a potential filename in the text field. Check it against the current pattern; if it is ok we can accept it and then if it is a file in the current list, highlight it. If it would not match the pattern, alert the user."
+ fileName := aText asString.
+ ^ self selectExistingFilename
+ ifTrue:
+ [ self changed: #fileListIndex.
+ true ]
+ ifFalse:
+ [ suffixList size = 1
+ ifTrue:
+ [ fileName := fileName , '.' , suffixList first.
+ true ]
+ ifFalse:
+ [ suffixList
+ at:
+ (UIManager default
+ chooseFrom: suffixList
+ title: 'Please choose the type of file to save.')
+ ifPresent:
+ [ : choice | fileName := fileName , '.' , choice.
+ true ]
+ ifAbsent:
+ [ fileName := nil.
+ UIManager default inform: 'WARNING: File not saved!! A filename matching one of ' , patternList asArray asString , ' patterns is required.'.
+ false ] ] ]!
Nicolas Cellier uploaded a new version of Files to project The Trunk:
http://source.squeak.org/trunk/Files-nice.180.mcz
==================== Summary ====================
Name: Files-nice.180
Author: nice
Time: 6 April 2018, 11:42:51.959975 pm
UUID: 8c7f5f6d-f3db-4d3e-afd3-e47351332573
Ancestors: Files-tpr.179
Fix typo according to http://bugs.squeak.org/view.php?id=7854
=============== Diff against Files-tpr.179 ===============
Item was changed:
----- Method: FileStream class>>encodeAndDecodeStdioFiles (in category 'stdio') -----
encodeAndDecodeStdioFiles
<preference: 'Encode and decode the contents of stdio files.'
category: 'Files'
+ description: 'If true, then the contents of stdin, stdout and stderr are encoded/decoded using the system default text converter.'
- description: 'It true, then the contents of stdin, stdout and stderr are encoded/decoded using the system default text converter.'
type: #Boolean>
^EncodeAndDecodeStdioFiles ifNil: [ true ]!
Nicolas Cellier uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-nice.1412.mcz
==================== Summary ====================
Name: Morphic-nice.1412
Author: nice
Time: 6 April 2018, 11:39:20.148358 pm
UUID: 9fec9c6d-77db-4708-ab00-15746432945b
Ancestors: Morphic-nice.1411
Fix one typo and one preference description according to http://bugs.squeak.org/view.php?id=7854
=============== Diff against Morphic-nice.1411 ===============
Item was changed:
----- Method: FontImporterTool>>import (in category 'actions') -----
import
| megaSize filenames fonts |
fonts := self currentSelection.
filenames := fonts allFilenames.
megaSize := ((filenames inject: 0 into: [ :sum :fn |
sum + (FileStream readOnlyFileNamed: fn do: [:file | file size])]) / (1024 * 1024)) asFloat.
(UIManager default confirm: (
+ 'About to import {1}{2}.\\This is at least {3} MB of space required in the image.\
- 'About to import {1}{2}.\\This is at least {3} MB of space required int the image.\
Please respect the copyright and embedding restrictions of the font.\
Proceed?'
withCRs format: {
self currentParent
ifNotNil: [:p| p fontname, ' ', self currentSelection fontname]
ifNil: [self currentSelection fontname].
filenames size > 1 ifTrue: [' (', filenames size, ' font files)'] ifFalse: [''].
megaSize printShowingDecimalPlaces: 2}))
ifTrue: [
filenames do: [:filename | | readFonts |
readFonts := TTCFontDescription addFromTTFile: filename.
readFonts isCollection
ifFalse: [TTCFont newTextStyleFromTT: readFonts]
ifTrue: [self importFontFamily: readFonts]]].
self allFonts: nil. "force redraw"
!
Item was changed:
----- Method: PluggableListMorph class>>menuRequestUpdatesSelection (in category 'preferences') -----
menuRequestUpdatesSelection
<preference: 'Menu request updates list/tree selection'
category: #Morphic
+ description: 'When invoking a menu, the action is applied to the current selection in the list. If the mouse cursor it at a different location, however, this preference will update the selection before showing the menu if enabled.'
- description: 'When invoking a menu, this will for the current selection by default. If the mouse cursor it at a different location, however, this preference will update the selection before showing the menu if enabled.'
type: #Boolean>
^ MenuRequestUpdatesSelection ifNil: [ false ]!
And I should have changed the subject.
Done
2018-04-06 22:20 GMT+02:00 Nicolas Cellier <
nicolas.cellier.aka.nice(a)gmail.com>:
> Hi David,
> Just a small brook for washing yet another https://en.wikipedia.org/wiki/
> Labours_of_Hercules#Fifth_labour:_Augean_stables ;)
>
> My advice would be to inspect the entries updated these last two years,
> and if still relevant confirm (or fix) else close.
> Fortunately, there are not so much of them.
>
> Then I would close all the rest (resolution = timeout).
> Other teams including Pharo have such a policy.
>
> Generally, I hate when my opened issues are closed like that, because I
> mostly don't use Pharo, so I consider these as pure gifts.
> There is a side effect that I'm not encouraged to report anymore, and I
> rarely reopen them, because I have no time to check.
> There is no such thing as gift-support-service.
>
> But, in the end, Pharo team is right: accumulation of rotten issues is not
> sustainable
> - either the issue is important, and it must/will be reopened
> - or no one cares and the issue can be closed.
>
> If Heracles himself wants to inspect and resolve the timed-out issues, he
> would just have to set a filter with a few clicks.
> But there's no hurry, the Augean stables had to wait 30 years...
>
> 2018-04-06 21:58 GMT+02:00 David T. Lewis <lewis(a)mail.msen.com>:
>
>> Nicolas,
>>
>> It is really good to see those Mantis issues being addressed. Thank you!
>>
>> Dave
>>
>> > Hi Marcel, Tobias,
>> > I encountered a bug, when playing a sound, the default SoundService
>> (class
>> > inst var) was not a class (BasedSoundService) but an instance (a
>> > BasedSoundService).
>> >
>> > Why?
>> > Because, there is a TileMorphTest>>setUp that remember which is the
>> > default, then tries to restore it in tearDown.
>> > It used to work.
>> >
>> > But, in between, SoundService default and defaultOrNil have been
>> > re-defined
>> > so as to answer an instance rather than a class.
>> >
>> > Thus, when we play the tests, we can no more play the sounds...
>> >
>> > I hesitate to open a Mantis issue, no one read nor close them, so the
>> bug
>> > report is only here for the moment.
>> >
>> >
>>
>>
>>
>>
>
Chris Muller uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-cmm.1408.mcz
==================== Summary ====================
Name: Morphic-cmm.1408
Author: cmm
Time: 3 April 2018, 11:15:51.160237 pm
UUID: 35b2e2ad-c421-4510-a635-774bfd84e597
Ancestors: Morphic-cmm.1407
The responsibility of #anyOpenWindowLikeMe, as indicated by its name, is to look in the actual World world for any open window like the receiver, not the receivers #world (which is nil, because because we wish to look in the real world first!).
Fixes the Reuse Windows preference.
=============== Diff against Morphic-cmm.1407 ===============
Item was changed:
----- Method: SystemWindow>>anyOpenWindowLikeMe (in category 'open/close') -----
anyOpenWindowLikeMe
self class reuseWindows ifFalse: [ ^Array empty ].
^ SystemWindow
+ windowsIn: World
- windowsIn: self world
satisfying:
[ : each |
each model class = self model class
and: [ (each model respondsTo: #representsSameBrowseeAs:)
and: [ each model representsSameBrowseeAs: self model ] ] ]
!