[Pkg] The Trunk: Morphic-tpr.1384.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Dec 28 20:28:36 UTC 2017
tim Rowledge uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-tpr.1384.mcz
==================== Summary ====================
Name: Morphic-tpr.1384
Author: tpr
Time: 28 December 2017, 12:25:28.683916 pm
UUID: 022f21d5-ede8-4485-8d3e-8f31554aca5d
Ancestors: Morphic-mt.1383
Connect the new file dialogs to assorted image & project load/save methods
=============== Diff against Morphic-mt.1383 ===============
Item was changed:
----- Method: ImageMorph>>readFromFile (in category 'menu commands') -----
readFromFile
+ "This would benefit from a way to get a list of the plausible file extensions for image files"
| fileName |
fileName := UIManager default
+ chooseFileMatchingSuffixes: Form allTypicalFileExtensions
+ label: 'Please enter the image file name'.
- request: 'Please enter the image file name'
- initialAnswer: 'fileName'.
fileName isEmpty ifTrue: [^ self].
+ self image: (Form fromFileNamed: fileName).
- self image: (Form fromFileNamed: fileName).
!
Item was changed:
----- Method: Morph>>attachToResource (in category 'fileIn/out') -----
attachToResource
+ "Connect a file -- either a saved .morph file or a graphics file as my resource.
+ There appears to be nothing preventing a user from attaching a completely unrelated file ?"
- "Produce a morph from a file -- either a saved .morph file or a graphics file"
| pathName |
+ pathName := UIManager default chooseFileMatchingSuffixes: (Form allTypicalFileExtensions add: 'morph'; yourself) label: 'Choose a file to load' translated.
- pathName := Utilities chooseFileWithSuffixFromList: (#('.morph'), Utilities graphicsFileSuffixes)
- withCaption: 'Choose a file
- to load'.
pathName ifNil: [^ self]. "User made no choice"
- pathName == #none ifTrue: [^ self inform:
- 'Sorry, no suitable files found
- (names should end with .morph, .gif,
- .bmp, .jpeg, .jpe, .jp, or .form)'].
self setProperty: #resourceFilePath toValue: pathName!
Item was changed:
----- Method: Morph>>exportAsBMP (in category 'menus') -----
exportAsBMP
| fName |
+ fName := UIManager default saveFilenameRequest:'Please enter the name' translated initialAnswer: self externalName,'.bmp'.
+ fName ifNil:[^self].
- fName := UIManager default request:'Please enter the name' translated initialAnswer: self externalName,'.bmp'.
- fName isEmpty ifTrue:[^self].
self exportAsBMPNamed: fName!
Item was changed:
----- Method: Morph>>exportAsGIF (in category 'menus') -----
exportAsGIF
| fName |
+ fName := UIManager default saveFilenameRequest:'Please enter the name' translated initialAnswer: self externalName,'.gif'.
+ fName ifNil:[^self].
- fName := UIManager default request:'Please enter the name' translated initialAnswer: self externalName,'.gif'.
- fName isEmpty ifTrue:[^self].
self exportAsGIFNamed: fName!
Item was changed:
----- Method: Morph>>exportAsJPEG (in category 'menus') -----
exportAsJPEG
| fName |
+ fName := UIManager default saveFilenameRequest: 'Please enter the name' translated initialAnswer: self externalName,'.jpeg'.
+ fName ifNil: [^ self].
- fName := UIManager default request: 'Please enter the name' translated initialAnswer: self externalName,'.jpeg'.
- fName isEmpty ifTrue: [^ self].
self exportAsJPEGNamed: fName!
Item was changed:
----- Method: Morph>>exportAsPNG (in category 'menus') -----
exportAsPNG
| fName |
+ fName := UIManager default saveFilenameRequest:'Please enter the name' translated initialAnswer: self externalName,'.png'.
+ fName ifNil:[^self].
- fName := UIManager default request:'Please enter the name' translated initialAnswer: self externalName,'.png'.
- fName isEmpty ifTrue:[^self].
self exportAsPNGNamed: fName!
Item was changed:
----- Method: Morph>>saveOnFile (in category 'fileIn/out') -----
saveOnFile
"Ask the user for a filename and save myself on a SmartReferenceStream file. Writes out the version and class structure. The file is fileIn-able. UniClasses will be filed out."
+ | aFileName |
+ aFileName := ('my {1}.morph' translated format: {self class name}) asFileName. "do better?"
+ aFileName := UIManager default saveFilenameRequest: 'File name?' translated
- | aFileName ok |
- aFileName := ('my {1}' translated format: {self class name}) asFileName. "do better?"
- aFileName := UIManager default request: 'File name? (".morph" will be added to end)' translated
initialAnswer: aFileName.
+ aFileName ifNil: [^ Beeper beep].
+
- aFileName isEmpty ifTrue: [^ Beeper beep].
self allMorphsDo: [:m | m prepareToBeSaved].
- ok := aFileName endsWith: '.morph'. "don't double them"
- ok := ok | (aFileName endsWith: '.sp').
- ok ifFalse: [aFileName := aFileName,'.morph'].
self saveOnFileNamed: aFileName!
Item was changed:
----- Method: PasteUpMorph>>saveOnFile (in category 'objects from disk') -----
saveOnFile
"Ask the user for a filename and save myself on a SmartReferenceStream file. Writes out the version and class structure. The file is fileIn-able. UniClasses will be filed out."
+ | aFileName fileStream |
- | aFileName fileStream ok |
self flag: #bob0302.
self isWorldMorph ifTrue: [^self project saveAs].
+ aFileName := ('my {1}.project' translated format: {self class name}) asFileName. "do better?"
+ aFileName := UIManager default saveFilenameRequest: 'File name?' translated
- aFileName := ('my {1}' translated format: {self class name}) asFileName. "do better?"
- aFileName := UIManager default request: 'File name? (".project" will be added to end)' translated
initialAnswer: aFileName.
+ aFileName ifNil: [^ Beeper beep].
- aFileName isEmpty ifTrue: [^ Beeper beep].
self allMorphsDo: [:m | m prepareToBeSaved].
+ fileStream := FileStream newFileNamed: aFileName.
- ok := aFileName endsWith: '.project'. "don't double them"
- ok := ok | (aFileName endsWith: '.sp').
- ok ifFalse: [aFileName := aFileName,'.project'].
- fileStream := FileStream newFileNamed: aFileName asFileName.
fileStream fileOutClass: nil andObject: self. "Puts UniClass definitions out anyway"!
Item was changed:
----- Method: ScorePlayerMorph>>openMIDIFile (in category 'initialization') -----
openMIDIFile
"Open a MIDI score and re-init controls..."
| score fileName f player |
+ fileName := UIManager default chooseFileMatchingSuffixes: #('mid' 'midi') label: 'Choose a MIDI file to open' translated.
+ fileName isNil
+ ifTrue: [^ self ].
+
- fileName := Utilities chooseFileWithSuffixFromList: #('.mid' '.midi')
- withCaption: 'Choose a MIDI file to open' translated.
- (fileName isNil or: [ fileName == #none ])
- ifTrue: [^ self inform: 'No .mid/.midi files found in the Squeak directory' translated].
f := FileStream readOnlyFileNamed: fileName.
score := (MIDIFileReader new readMIDIFrom: f binary) asScore.
f close.
player := ScorePlayer onScore: score.
self onScorePlayer: player title: fileName!
Item was changed:
----- Method: TextEditor>>saveContentsInFile (in category 'menu messages') -----
saveContentsInFile
"Save the receiver's contents string to a file, prompting the user for a file-name. Suggest a reasonable file-name."
| fileName stringToSave parentWindow labelToUse suggestedName |
stringToSave := paragraph text string.
stringToSave size = 0 ifTrue: [^self inform: 'nothing to save.'].
parentWindow := model dependents
detect: [:dep | dep isKindOf: SystemWindow]
ifNone: [nil].
labelToUse := parentWindow ifNil: ['Untitled']
ifNotNil: [parentWindow label].
suggestedName := nil.
#(#('Decompressed contents of: ' '.gz')) do:
[:leaderTrailer | | lastIndex |
"can add more here..."
(labelToUse beginsWith: leaderTrailer first)
ifTrue:
[suggestedName := labelToUse copyFrom: leaderTrailer first size + 1
to: labelToUse size.
(labelToUse endsWith: leaderTrailer last)
ifTrue:
[suggestedName := suggestedName copyFrom: 1
to: suggestedName size - leaderTrailer last size]
ifFalse:
[lastIndex := suggestedName lastIndexOf: $..
lastIndex > 1
ifTrue: [suggestedName := suggestedName copyFrom: 1 to: lastIndex - 1]]]].
suggestedName ifNil: [suggestedName := labelToUse , '.text'].
+ fileName := UIManager default saveFilenameRequest: 'File name?'
- fileName := UIManager default request: 'File name?'
initialAnswer: suggestedName.
fileName isEmptyOrNil
ifFalse:
[(FileStream newFileNamed: fileName)
nextPutAll: stringToSave;
close]!
Item was changed:
----- Method: TheWorldMenu>>loadProject (in category 'commands') -----
loadProject
+ | fName |
- | stdFileMenuResult path |
"Put up a Menu and let the user choose a '.project' file to load. Create a thumbnail and jump into the project."
Project canWeLoadAProjectNow ifFalse: [^ self].
+ fName := UIManager default chooseFileMatchingSuffixes: #('pr' 'project').
+ fName ifNil:[^nil].
+
+ FileDirectory splitName: fName to:[:dir :file|
+ ProjectLoading
+ openFromDirectory: dir
+ andFileName: file]
- path := FileList2 modalFolderSelector.
- path ifNil: [^ nil].
- stdFileMenuResult := ((StandardFileMenu new) pattern: '*.pr';
- oldFileFrom: path)
- startUpWithCaption: 'Select a File:' translated.
- stdFileMenuResult ifNil: [^ nil].
- ProjectLoading
- openFromDirectory: stdFileMenuResult directory
- andFileName: stdFileMenuResult name
!
Item was changed:
----- Method: TheWorldMenu>>readMorphFromAFile (in category 'commands') -----
readMorphFromAFile
"Produce a morph from a file -- either a saved .morph file or a graphics file"
| morphOrList ff aName f m |
+ aName := UIManager default chooseFileMatchingSuffixes: (Form allTypicalFileExtensions add: 'morph'; yourself) label: 'Choose a file to load' translated.
- aName := Utilities chooseFileWithSuffixFromList:
- (#('.morph'), Utilities graphicsFileSuffixes) withCaption: 'Choose a file
- to load' translated.
aName ifNil: [^ self]. "User made no choice"
- aName == #none ifTrue: [^ self inform:
- 'Sorry, no suitable files found
- (names should end with .morph, .gif,
- .bmp, .jpeg, .jpe, .jp, or .form)' translated].
(aName asLowercase endsWith: '.morph')
ifTrue:
[ff := FileStream readOnlyFileNamed: aName.
morphOrList := ff fileInObjectAndCode. "code filed in is the Model class"
"the file may contain either a single morph or an array of morphs"
myWorld addMorphsAndModel: morphOrList]
ifFalse:
[f := Form fromFileNamed: aName.
f ifNil: [^ self error: 'unrecognized image file format' translated].
m := myWorld drawingClass new form: f.
myHand attachMorph: m]
!
More information about the Packages
mailing list