[Pkg] The Trunk: SMLoader-cmm.65.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Feb 12 22:49:24 UTC 2011


Chris Muller uploaded a new version of SMLoader to project The Trunk:
http://source.squeak.org/trunk/SMLoader-cmm.65.mcz

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

Name: SMLoader-cmm.65
Author: cmm
Time: 30 January 2011, 2:11:06.8 pm
UUID: 38a005b8-5df6-44eb-8ae5-6f0016fab290
Ancestors: SMLoader-cmm.64

- List releases in SqueakMap package-loader by newest to oldest rather than oldest-to-newest (which guarantees to require scrolling as releases grow), and, also, if there is a release named 'head', put it at the top.
- Honor the reuseWindows preference.
- Fixes.

=============== Diff against SMLoader-cmm.64 ===============

Item was changed:
  ----- Method: SMLoaderPlus>>itemChildren: (in category 'interface') -----
  itemChildren: anItem 
  	^ anItem isPackage
+ 		ifTrue: [ self sortReleases: anItem releases ]
+ 		ifFalse: [ #() ]!
- 		ifTrue: [anItem releases]
- 		ifFalse: [#()]!

Item was added:
+ ----- Method: SMLoaderPlus>>representsSameBrowseeAs: (in category 'private') -----
+ representsSameBrowseeAs: anotherSMLoaderPlus
+ 	^ true!

Item was added:
+ ----- Method: SMLoaderPlus>>sortReleases: (in category 'private') -----
+ sortReleases: anOrderedCollection 
+ 	"SqueakMap stores them in chronological order, let's list them in reverse-chronological order for easy-selection."
+ 	| answer headIndex |
+ 	answer := anOrderedCollection reversed.
+ 	"After that, look for the 'head' release, put it to the top."
+ 	headIndex := anOrderedCollection findFirst:
+ 		[ : each | each version = 'head' ].
+ 	headIndex > 1 ifTrue: [ answer addFirst: (answer removeAt: headIndex) ].
+ 	^ answer!

Item was changed:
  ----- Method: SMPackageRelease>>fullyQualifiedScriptName (in category '*smloader') -----
  fullyQualifiedScriptName
+ 	^ self package owner downloadsDirectory , '/', self scriptName !
- 	^ self package owner downloadsDirectory , self scriptName !

Item was changed:
  ----- Method: SMPackageRelease>>httpPostContent (in category '*smloader') -----
  httpPostContent
  	"Answer the url-encoded parameters for this object."
  	| allCategories |
+ 	^ String streamContents:
+ 		[ : stream | self isNewObject
+ 			ifTrue:
+ 				[ "Make the parent release the selected."
+ 				self parentReleaseIndex > 0 ifTrue: [ stream nextPutAll: '1-1=' , self parentReleaseIndex , '&' ] ]
+ 			ifFalse:
+ 				[ "Make this release the selected."
+ 				self releaseIndex > 0 ifTrue: [ stream nextPutAll: '1-1=' , self releaseIndex , '&' ] ].
- 	^ String streamContents: [ : stream |  | isNew |
- 	isNew := self isNewObject.
- 	"releaseIndex is dependent on my being one of my package's releases."
- 	self package addRelease: self.
- 	self releaseIndex > 0 ifTrue: [stream nextPutAll: '1-1=', (self releaseIndex) , '&' ].
- 	stream 
- 		nextPutAll: '1-3=', self version asString encodeForHTTP ;
  		"The following category fields must remain in alphabetical order.  Add 1 to category indexes because web-server expects the first item to always be nil."
+ 		stream
+ 			 nextPutAll: '1-3=' , self version asString encodeForHTTP ;
+ 			 nextPutAll: '&1-4=' , (self compatibilityIndex + 1) ;
+ 			 nextPutAll: '&1-5=' , (self licenseIndex + 1) ;
+ 			 nextPutAll: '&1-6=' , (self maturityIndex + 1) ;
+ 			 nextPutAll: '&1-7=' , (self squeakVersionIndex + 1) ;
+ 			 nextPutAll: '&1-8=' , self downloadUrl "already http encoded" ;
+ 			 nextPutAll: '&1-9=1&1-10=&1-11=' "No file selection, 'cool' name or summary".
- 		nextPutAll: '&1-4=', (self compatibilityIndex+1) ;
- 		nextPutAll: '&1-5=', (self licenseIndex+1) ;
- 		nextPutAll: '&1-6=', (self maturityIndex+1) ;
- 		nextPutAll: '&1-7=', (self squeakVersionIndex+1) ;
- 		nextPutAll: '&1-8=', self downloadUrl "already http encoded" ;
- 		nextPutAll: '&1-9=1&1-10=&1-11=' "No file selection, 'cool' name or summary".
  		"Specify only the mandatory categories for 'additional categories', otherwise prior mandatory selections will be reflected in the objects categories, causing the highest-in-the-list to always win.  Ugh.."
+ 		allCategories := SMSqueakMap default categories asSortedCollection:
+ 			[ : a : b | a name < b name ].
+ 		{allCategories indexOf: self compatibility. 
+ 		allCategories indexOf: self license. 
+ 		allCategories indexOf: self maturity. 
+ 		allCategories indexOf: self squeakVersion} do:
+ 			[ : each | stream nextPutAll: '&1-12=' , each asString ].
+ 		stream nextPutAll: '&1-13=' , self note asString encodeForHTTP.
+ 		self isNewObject
+ 			ifTrue: [ stream nextPutAll: '&1-18=Save+as+new+release' ]
+ 			ifFalse: [ stream nextPutAll: '&1-17=Save+changes' ].
+ 		self parentRelease ifNotNilDo:
+ 			[ : pr | stream nextPutAll: '&1-19=' , pr releaseIndex ] ]!
- 		allCategories := SMSqueakMap default categories asSortedCollection: [ : a : b | a name < b name ].
- 		{ allCategories indexOf: (self compatibility). allCategories indexOf: (self license). allCategories indexOf: (self maturity). allCategories indexOf: (self squeakVersion) } do:
- 			[ : each | stream nextPutAll: '&1-12=', each asString ].
- 		stream nextPutAll: '&1-13=', self note asString encodeForHTTP.
- 	isNew
- 		ifTrue: [ self stream nextPutAll: '&1-18=Save+as+new+release' ]
- 		ifFalse: [ stream nextPutAll: '&1-17=Save+changes'  ].
- 	self parentRelease ifNotNilDo: 
- 		[ : pr | stream 
- 			nextPutAll: '&1-19=', pr releaseIndex ] ]!

Item was changed:
  ----- Method: SMPackageRelease>>isNewObject (in category '*smloader') -----
  isNewObject
+ 	^ (self package releases includes: self) not!
- 	^ self package releases includes: self!

Item was added:
+ ----- Method: SMPackageRelease>>parentReleaseIndex (in category '*smloader') -----
+ parentReleaseIndex
+ 	"Answer my position in the list of my packages releases."
+ 	^ self parentRelease
+ 		ifNil: [ 0 ]
+ 		ifNotNil: [ : pr | pr releaseIndex ]!

Item was changed:
  ----- Method: SMPackageRelease>>scriptName (in category '*smloader') -----
  scriptName
+ 	^ 'install-', self id asString, '.st'!
- 	^ 'install', self id asString, '.st'!

Item was changed:
  ----- Method: SMReleaseBrowser>>newAuthenticationPane: (in category 'toolbuilder') -----
  newAuthenticationPane: aToolBuilder 
  	^ aToolBuilder pluggablePanelSpec new
  		 model: self ;
  		 children:
  		(OrderedCollection
  			with:
  				(aToolBuilder pluggableInputFieldSpec new
  					 model: self ;
  					 name: #username ;
  					 help: 'Your SqueakMap Id.' ;
  					 getText: #username ;
  					 setText: #username: ;
  					 frame: (0.02 at 0 corner: 0.38 at 1) ;
  					 yourself)
  			with:
  				(aToolBuilder pluggableInputFieldSpec new
  					 model: self ;
  					 name: #password ;
   					 help: 'Your SqueakMap password.' ;
  					 getText: #password ;
  					 setText: #password: ;
  					 frame: (0.40 at 0 corner: 0.75 at 1) ;
  					 yourself)
  			with:
  				(aToolBuilder pluggableButtonSpec new
  					 model: self ;
+ 					 help: 'Save this release to the SqueakMap server and close the window.' ;
- 					 help: 'Save this release to the SqueakMap server' ;
  					 label: 'Save' ;
  					 action: #save ;
  					 frame: (0.77 at 0 corner: 0.98 at 1) ;
  					 yourself)) ;
  		 yourself!

Item was added:
+ ----- Method: SMReleaseBrowser>>release (in category 'private') -----
+ release
+ 	^ release!

Item was added:
+ ----- Method: SMReleaseBrowser>>representsSameBrowseeAs: (in category 'private') -----
+ representsSameBrowseeAs: anotherModel
+ 	^ release = anotherModel release!

Item was changed:
  ----- Method: SMReleaseBrowser>>savePackageRelease (in category 'private') -----
  savePackageRelease
  	| response |
  	release downloadUrl: release fullyQualifiedScriptName.
  	response := smClient save: release.
+ 	"Saved, now ensure part of my package's releases in the local copy of the model."
+ 	release package addRelease: release.
  	response isSuccess ifFalse: [ self halt: 'non-successful response' ]!

Item was changed:
  ----- Method: SMReleaseBrowser>>writeInstallFile (in category 'private') -----
  writeInstallFile
+ 	FileDirectory default deleteFileNamed: release scriptName.
- 	| filename |
- 	filename := 'install' , release id asString , '.st'.
- 	FileDirectory default deleteFileNamed: filename.
  	FileStream
+ 		fileNamed: release scriptName
- 		fileNamed: filename
  		do:
  			[ : stream | stream nextPutAll: self loadScript asString ]!



More information about the Packages mailing list