Nicolas Cellier uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-nice.385.mcz
==================== Summary ====================
Name: Collections-nice.385
Author: nice
Time: 30 September 2010, 11:46:29.277 pm
UUID: 4d54da08-721a-4a4d-8387-914046189879
Ancestors: Collections-ul.384
Improve comment of Heap. Please feel free to improve me.
As the class comment did start with a bit misleading comparison against SortedCollection, provides an optional #fullySort operation to fully sort the Heap and restore comparison ground - hope I didn't spoil announced O(n log n) efficiency.
Of course, #fullySort has no interest for priority queues, but a Heap could be of more general use.
=============== Diff against Collections-ul.384 ===============
Item was changed:
SequenceableCollection subclass: #Heap
instanceVariableNames: 'array tally sortBlock indexUpdateBlock'
classVariableNames: ''
poolDictionaries: ''
category: 'Collections-Sequenceable'!
+ !Heap commentStamp: 'nice 9/30/2010 23:22' prior: 0!
+ Class Heap implements a special data structure commonly referred to as 'heap' [ http://en.wikipedia.org/wiki/Heap_%28data_structure%29 ]
+ A Heap is a kind of binary tree stored in a linear array - see details after the instance variables description.
- !Heap commentStamp: '<historical>' prior: 0!
- Class Heap implements a special data structure commonly referred to as 'heap'. Heaps are more efficient than SortedCollections if:
- a) Elements are only removed at the beginning
- b) Elements are added with arbitrary sort order.
- The sort time for a heap is O(n log n) in all cases.
+ Heaps are good at handling priority queues because:
+ 1) greatest priority element according to the sort block will be stored in first position and thus accessed in O(1) operations
+ 2) worse time for inserting or removing an element is in O(log n) operations, where n is the size of the Heap
+ Insertion/Removal times are more efficient than above upper bound, provided that:
+ a) Elements are only removed at the beginning
+ b) Elements are added with arbitrary sort order.
+ 3) there is no need to fully sort the Heap, which makes it more efficient than a SortedCollection
+
+ The heap can be fully sorted by sending the message #fullySort.
+ Worse time for fully sorting the Heap is in O(n log n) operations, but this is rarely used a feature.
+ Remind that the Heap does not fully sort the collection if you don't ask.
+ Thus don't expect #do: and other iterators to enumerate elements according to the sortBlock order.
+
Instance variables:
array <Array> The data repository
tally <Integer> The number of elements in the heap
sortBlock <Block|nil> A two-argument block defining the sort order,
or nil in which case the default sort order is
[:element1 :element2| element1 <= element2]
indexUpdateBlock <Block|nil>
A two-argument block of the form [:data :index | ... ]
which allows an application object to keep track of its
index within the heap. Useful for quick heap update
when object's sort value changes (for example, when an
object in a priority queue has its priority increased
by an external event, you don't want to have to search
through the whole heap to find the index before fixing
+ the heap). No update occurs if nil.
+
+ The Heap can be viewed as a binary tree (every node in the tree has at most two children).
+ The root is stored in first slot of internal array.
+ The children are stored in next two slots.
+ The children of children in next four slots.
+ etc...
+ For a node A of index i (1 based), the two children B1 and B2 are thus stored in indices (2*i) and (2*i+1).
+ Of course, the children indices must be less than the tally otherwise they are considered inexistent.
+
+ The Heap does arrange to preserve the following invariant:
+ For any children B of a node A, A is sorted before B, in other words, (self sort: A before: B) = true
+ This implies that the root is always the first element according to sort order.
+
+ !
- the heap). No update occurs if nil.!
Item was added:
+ ----- Method: Heap>>fullySort (in category 'accessing') -----
+ fullySort
+ "Fully sort the heap.
+ This method preserves the heap invariants and can thus be sent safely"
+ self privateReverseSort.
+ 1 to: tally // 2 do: [:i | array swap: i with: 1 + tally - i]!
Item was added:
+ ----- Method: Heap>>privateReverseSort (in category 'private') -----
+ privateReverseSort
+ "Arrange to have the array sorted in reverse order.
+ WARNING: this method breaks the heap invariants. It's up to the sender to restore them afterwards."
+ | oldTally |
+ oldTally := tally.
+ [tally > 1] whileTrue:
+ [array swap: 1 with: tally.
+ tally := tally - 1.
+ self downHeapSingle: 1].
+ tally := oldTally!
Nicolas Cellier uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-nice.385.mcz
==================== Summary ====================
Name: Collections-nice.385
Author: nice
Time: 30 September 2010, 11:46:29.277 pm
UUID: 4d54da08-721a-4a4d-8387-914046189879
Ancestors: Collections-ul.384
Improve comment of Heap. Please feel free to improve me.
As the class comment did start with a bit misleading comparison against SortedCollection, provides an optional #fullySort operation to fully sort the Heap and restore comparison ground - hope I didn't spoil announced O(n log n) efficiency.
Of course, #fullySort has no interest for priority queues, but a Heap could be of more general use.
=============== Diff against Collections-ul.384 ===============
Item was changed:
SequenceableCollection subclass: #Heap
instanceVariableNames: 'array tally sortBlock indexUpdateBlock'
classVariableNames: ''
poolDictionaries: ''
category: 'Collections-Sequenceable'!
+ !Heap commentStamp: 'nice 9/30/2010 23:22' prior: 0!
+ Class Heap implements a special data structure commonly referred to as 'heap' [ http://en.wikipedia.org/wiki/Heap_%28data_structure%29 ]
+ A Heap is a kind of binary tree stored in a linear array - see details after the instance variables description.
- !Heap commentStamp: '<historical>' prior: 0!
- Class Heap implements a special data structure commonly referred to as 'heap'. Heaps are more efficient than SortedCollections if:
- a) Elements are only removed at the beginning
- b) Elements are added with arbitrary sort order.
- The sort time for a heap is O(n log n) in all cases.
+ Heaps are good at handling priority queues because:
+ 1) greatest priority element according to the sort block will be stored in first position and thus accessed in O(1) operations
+ 2) worse time for inserting or removing an element is in O(log n) operations, where n is the size of the Heap
+ Insertion/Removal times are more efficient than above upper bound, provided that:
+ a) Elements are only removed at the beginning
+ b) Elements are added with arbitrary sort order.
+ 3) there is no need to fully sort the Heap, which makes it more efficient than a SortedCollection
+
+ The heap can be fully sorted by sending the message #fullySort.
+ Worse time for fully sorting the Heap is in O(n log n) operations, but this is rarely used a feature.
+ Remind that the Heap does not fully sort the collection if you don't ask.
+ Thus don't expect #do: and other iterators to enumerate elements according to the sortBlock order.
+
Instance variables:
array <Array> The data repository
tally <Integer> The number of elements in the heap
sortBlock <Block|nil> A two-argument block defining the sort order,
or nil in which case the default sort order is
[:element1 :element2| element1 <= element2]
indexUpdateBlock <Block|nil>
A two-argument block of the form [:data :index | ... ]
which allows an application object to keep track of its
index within the heap. Useful for quick heap update
when object's sort value changes (for example, when an
object in a priority queue has its priority increased
by an external event, you don't want to have to search
through the whole heap to find the index before fixing
+ the heap). No update occurs if nil.
+
+ The Heap can be viewed as a binary tree (every node in the tree has at most two children).
+ The root is stored in first slot of internal array.
+ The children are stored in next two slots.
+ The children of children in next four slots.
+ etc...
+ For a node A of index i (1 based), the two children B1 and B2 are thus stored in indices (2*i) and (2*i+1).
+ Of course, the children indices must be less than the tally otherwise they are considered inexistent.
+
+ The Heap does arrange to preserve the following invariant:
+ For any children B of a node A, A is sorted before B, in other words, (self sort: A before: B) = true
+ This implies that the root is always the first element according to sort order.
+
+ !
- the heap). No update occurs if nil.!
Item was added:
+ ----- Method: Heap>>fullySort (in category 'accessing') -----
+ fullySort
+ "Fully sort the heap.
+ This method preserves the heap invariants and can thus be sent safely"
+ self privateReverseSort.
+ 1 to: tally // 2 do: [:i | array swap: i with: 1 + tally - i]!
Item was added:
+ ----- Method: Heap>>privateReverseSort (in category 'private') -----
+ privateReverseSort
+ "Arrange to have the array sorted in reverse order.
+ WARNING: this method breaks the heap invariants. It's up to the sender to restore them afterwards."
+ | oldTally |
+ oldTally := tally.
+ [tally > 1] whileTrue:
+ [array swap: 1 with: tally.
+ tally := tally - 1.
+ self downHeapSingle: 1].
+ tally := oldTally!
A new version of File-Base was added to project Rio:
http://www.squeaksource.com/Rio/File-Base-jrd.33.mcz
==================== Summary ====================
Name: File-Base-jrd.33
Author: jrd
Time: 28 September 2010, 9:05:46 pm
UUID: b5cb0185-ee33-41b5-9af4-e82b1f8f8afe
Ancestors: File-Base-mtf.32
Changed:
- Added File>>filesMatching:toDepth: to do a recursive file search.
Alexander Lazarević uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-laza.468.mcz
==================== Summary ====================
Name: Morphic-laza.468
Author: laza
Time: 28 September 2010, 5:24:49.199 pm
UUID: 81a9b6d2-3dc7-4789-8e2f-fa9420a0afa9
Ancestors: Morphic-nice.467
- changed 41 to 42
- see if this triggers a hudson build
=============== Diff against Morphic-nice.467 ===============
Item was removed:
- ----- Method: TheWorldMainDockingBar>>welcomeToSqueak41 (in category 'submenu - help') -----
- welcomeToSqueak41
- ^'Squeak 4.1
- Welcome to Squeak - a free, open Smalltalk system.
-
- Squeak 4.1 combines the license change occuring in the 4.0 release with the development work that has been going on while the relicensing process took place. Here are the highlights of the changes that resulted in Squeak 4.1:
-
- User Interface
- We have adapted the ''face lift'' look originally developed for Newspeak. For those of us who like colored windows (quite a few as it turns out) you can switch between uniform and colored windows in the ''Extras'' menu under ''Window Colors''.
-
- The new menu bar makes Squeak much easier to discover than before. The process of transitioning from the world menu is not complete yet, there are still items that can only be accessed from the world menu (i.e., by clicking on the desktop).
-
- The search field integrated in the menu bar allows for direct navigation to classes and methods - simply type in a partial class or method name and see what happens.
-
- A new set of inexpensive sub-pixel antialiased fonts derived from the DejaVu fonts (''Bitmap DejaVu'' in the font chooser) has been added. True type font support has been upgraded to operate directly on files on disk without the need to load the entire file into memory.
-
- A new set of text editors has been added, which allowed us to decouple the Morphic and MVC implementations for improved modularity. Morphic now has regular blinking insertion point cursors instead of the (virtually invisible) static cursor previously.
-
- Compiler
- Squeak 4.1 includes the closure implementation from Cog as a prerequisite for full Cog adoption later. With this implementation Squeak finally has ''full'' closures, allowing classic recursive examples like the following to work:
-
- fac := [:n| n > 1 ifTrue:[n * (fac value: n-1)] ifFalse:[1]].
- fac value: 5.
-
- Support for literal ByteArray syntax has been added. Byte arrays can now be written as #[1 2 3] instead of #(1 2 3) asByteArray avoiding the need for conversion.
-
- Selectors including minus are now parsed correctly, for example 3 <- 4 is now parsed as (3) <- (4) instead of (3) < (-4). White space is no longer allowed after an unary minus to denote a negative number literal.
-
- Development
- Syntax highlighting, based on Shout, is now included in all Squeak tools by default. For workspaces, it can be explicitly disabled in the window menu (press the blue button; entry ''syntax highlighting'').
-
- Sources and changes files are no longer limited to 32MB max size. ExpandedSourceFileArray provides an implementation for source files of arbitrary length, based on the CompiledMethodTrailer changes.
-
- MessageTrace has been added, allowing senders and implementors to be viewed without opening new windows all the time. It utilizes a new AlternatePluggableListMorphOfMany, which allows quick and easy customization of the list. A quick adoption of DependencyBrowser has been added allowing to browse dependencies between packages.
-
- Core Libraries
- Sets can now store nil just as any other collection. The collection hierachy has been refactored to have both Set and Dictionary a subclass of HashedCollection instead of having Dictionary a subclass of Set. Squeak now uses a better distributed scaledIdentityHash for identity sets and dictionaries.
-
- StandardFilestream now performs read-buffering, dramatically speading up some operations like "Object compileAll" (2x improvement) as well as various other operations (scanning change lists etc).
-
- A new traits implementation has been added. The implementation is significantly smaller and simpler than the old version and can be unloaded and reloaded without loss of information (i.e., traits flattened during unload are restored during traits reloading).
-
- A new extensible number parser hierharchy has been introduced NumberParser and its subclasses provide support for parsing and building numbers from strings and streams.
-
- A new general cleanup protocol has been added. The cleanUp protocol takes an optional argument to indicate whether we''re doing an aggressive cleanup (which involves deleting projects, change sets, and possibly other destructive actions) or a more gentle cleanup that''s only supposed to clean out transient caches.
-
- SystemDictionary and SmalltalkImage have been refactored. Smalltalk is now an instance of SmalltalkImage, representing a facade for system-wide queries and actions. SmalltalkImage contains a global environment, an instance of SystemDictionary, which the environment used by classes. Thus, SmalltalkImage current == Smalltalk, Object environment == Smalltalk globals.
-
- Modularity
- The following packages have been made reloadable: ReleaseBuilder, ScriptLoader, 311Deprecated, 39Deprecated, Universes, SMLoader, SMBase, Installer-Core, VersionNumberTests, VersionNumber, Services-Base, PreferenceBrowser, Nebraska, CollectionsTests, GraphicsTests, KernelTests, MorphicTests, MultilingualTests, NetworkTests, ToolsTests, TraitsTests, XML-Parser, Traits, SystemChangeNotification-Tests, FlexibleVocabularies, EToys, Protocols, Tests, SUnitGUI. To unload all of these, execute:
-
- Smalltalk unloadAllKnownPackages.
- !!
- ]style[(11 53 228 14 920 251 2 8 309 376 2 11 206 529 2 14 302 197 1113 10 1 50 479)a2cblue;bFBitmap DejaVu Sans#14,c006006006bFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,f1,,bu,,FBitmap DejaVu Sans#14,!!' readStream nextChunkText!
Item was added:
+ ----- Method: TheWorldMainDockingBar>>welcomeToSqueak42 (in category 'submenu - help') -----
+ welcomeToSqueak42
+ ^'Squeak 4.2
+ Welcome to Squeak - a free, open Smalltalk system.
+
+ Needs to be updated:
+
+ Squeak 4.1 combines the license change occuring in the 4.0 release with the development work that has been going on while the relicensing process took place. Here are the highlights of the changes that resulted in Squeak 4.1:
+
+ User Interface
+ We have adapted the ''face lift'' look originally developed for Newspeak. For those of us who like colored windows (quite a few as it turns out) you can switch between uniform and colored windows in the ''Extras'' menu under ''Window Colors''.
+
+ The new menu bar makes Squeak much easier to discover than before. The process of transitioning from the world menu is not complete yet, there are still items that can only be accessed from the world menu (i.e., by clicking on the desktop).
+
+ The search field integrated in the menu bar allows for direct navigation to classes and methods - simply type in a partial class or method name and see what happens.
+
+ A new set of inexpensive sub-pixel antialiased fonts derived from the DejaVu fonts (''Bitmap DejaVu'' in the font chooser) has been added. True type font support has been upgraded to operate directly on files on disk without the need to load the entire file into memory.
+
+ A new set of text editors has been added, which allowed us to decouple the Morphic and MVC implementations for improved modularity. Morphic now has regular blinking insertion point cursors instead of the (virtually invisible) static cursor previously.
+
+ Compiler
+ Squeak 4.1 includes the closure implementation from Cog as a prerequisite for full Cog adoption later. With this implementation Squeak finally has ''full'' closures, allowing classic recursive examples like the following to work:
+
+ fac := [:n| n > 1 ifTrue:[n * (fac value: n-1)] ifFalse:[1]].
+ fac value: 5.
+
+ Support for literal ByteArray syntax has been added. Byte arrays can now be written as #[1 2 3] instead of #(1 2 3) asByteArray avoiding the need for conversion.
+
+ Selectors including minus are now parsed correctly, for example 3 <- 4 is now parsed as (3) <- (4) instead of (3) < (-4). White space is no longer allowed after an unary minus to denote a negative number literal.
+
+ Development
+ Syntax highlighting, based on Shout, is now included in all Squeak tools by default. For workspaces, it can be explicitly disabled in the window menu (press the blue button; entry ''syntax highlighting'').
+
+ Sources and changes files are no longer limited to 32MB max size. ExpandedSourceFileArray provides an implementation for source files of arbitrary length, based on the CompiledMethodTrailer changes.
+
+ MessageTrace has been added, allowing senders and implementors to be viewed without opening new windows all the time. It utilizes a new AlternatePluggableListMorphOfMany, which allows quick and easy customization of the list. A quick adoption of DependencyBrowser has been added allowing to browse dependencies between packages.
+
+ Core Libraries
+ Sets can now store nil just as any other collection. The collection hierachy has been refactored to have both Set and Dictionary a subclass of HashedCollection instead of having Dictionary a subclass of Set. Squeak now uses a better distributed scaledIdentityHash for identity sets and dictionaries.
+
+ StandardFilestream now performs read-buffering, dramatically speading up some operations like "Object compileAll" (2x improvement) as well as various other operations (scanning change lists etc).
+
+ A new traits implementation has been added. The implementation is significantly smaller and simpler than the old version and can be unloaded and reloaded without loss of information (i.e., traits flattened during unload are restored during traits reloading).
+
+ A new extensible number parser hierharchy has been introduced NumberParser and its subclasses provide support for parsing and building numbers from strings and streams.
+
+ A new general cleanup protocol has been added. The cleanUp protocol takes an optional argument to indicate whether we''re doing an aggressive cleanup (which involves deleting projects, change sets, and possibly other destructive actions) or a more gentle cleanup that''s only supposed to clean out transient caches.
+
+ SystemDictionary and SmalltalkImage have been refactored. Smalltalk is now an instance of SmalltalkImage, representing a facade for system-wide queries and actions. SmalltalkImage contains a global environment, an instance of SystemDictionary, which the environment used by classes. Thus, SmalltalkImage current == Smalltalk, Object environment == Smalltalk globals.
+
+ Modularity
+ The following packages have been made reloadable: ReleaseBuilder, ScriptLoader, 311Deprecated, 39Deprecated, Universes, SMLoader, SMBase, Installer-Core, VersionNumberTests, VersionNumber, Services-Base, PreferenceBrowser, Nebraska, CollectionsTests, GraphicsTests, KernelTests, MorphicTests, MultilingualTests, NetworkTests, ToolsTests, TraitsTests, XML-Parser, Traits, SystemChangeNotification-Tests, FlexibleVocabularies, EToys, Protocols, Tests, SUnitGUI. To unload all of these, execute:
+
+ Smalltalk unloadAllKnownPackages.
+ !!
+ ]style[(11 54 21 228 14 920 251 2 8 309 376 2 11 206 529 2 14 302 197 1113 10 1 50 479)a2cblue;bFBitmap DejaVu Sans#14,c005005005bFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bcred;,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,f1,,bu,,FBitmap DejaVu Sans#14,!!' readStream nextChunkText!
Item was changed:
----- Method: TheWorldMainDockingBar>>welcomeWorkspacesOn: (in category 'submenu - help') -----
welcomeWorkspacesOn: menu
menu addItem:[:item|
item
+ contents: 'Welcome to Squeak 4.2' translated;
- contents: 'Welcome to Squeak 4.1' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
+ #welcomeToSqueak42.
+ 'Welcome to Squeak 4.2'.
- #welcomeToSqueak41.
- 'Welcome to Squeak 4.1'.
(140@140 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'The Squeak User Interface' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#squeakUserInterface.
'The Squeak User Interface'.
(160@160 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'Working With Squeak' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#workingWithSqueak.
'Working With Squeak'.
(180@180 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'Terse Guide to Squeak' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#terseGuideToSqueak.
'Terse Guide to Squeak'.
(180@180 extent: 600@400)
}].
menu addItem:[:item|
item
contents: 'License Information' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#licenseInformation.
'License Information'.
(200@200 extent: 500@300)
}].!
Alexander Lazarević uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-laza.468.mcz
==================== Summary ====================
Name: Morphic-laza.468
Author: laza
Time: 28 September 2010, 5:24:49.199 pm
UUID: 81a9b6d2-3dc7-4789-8e2f-fa9420a0afa9
Ancestors: Morphic-nice.467
- changed 41 to 42
- see if this triggers a hudson build
=============== Diff against Morphic-nice.467 ===============
Item was removed:
- ----- Method: TheWorldMainDockingBar>>welcomeToSqueak41 (in category 'submenu - help') -----
- welcomeToSqueak41
- ^'Squeak 4.1
- Welcome to Squeak - a free, open Smalltalk system.
-
- Squeak 4.1 combines the license change occuring in the 4.0 release with the development work that has been going on while the relicensing process took place. Here are the highlights of the changes that resulted in Squeak 4.1:
-
- User Interface
- We have adapted the ''face lift'' look originally developed for Newspeak. For those of us who like colored windows (quite a few as it turns out) you can switch between uniform and colored windows in the ''Extras'' menu under ''Window Colors''.
-
- The new menu bar makes Squeak much easier to discover than before. The process of transitioning from the world menu is not complete yet, there are still items that can only be accessed from the world menu (i.e., by clicking on the desktop).
-
- The search field integrated in the menu bar allows for direct navigation to classes and methods - simply type in a partial class or method name and see what happens.
-
- A new set of inexpensive sub-pixel antialiased fonts derived from the DejaVu fonts (''Bitmap DejaVu'' in the font chooser) has been added. True type font support has been upgraded to operate directly on files on disk without the need to load the entire file into memory.
-
- A new set of text editors has been added, which allowed us to decouple the Morphic and MVC implementations for improved modularity. Morphic now has regular blinking insertion point cursors instead of the (virtually invisible) static cursor previously.
-
- Compiler
- Squeak 4.1 includes the closure implementation from Cog as a prerequisite for full Cog adoption later. With this implementation Squeak finally has ''full'' closures, allowing classic recursive examples like the following to work:
-
- fac := [:n| n > 1 ifTrue:[n * (fac value: n-1)] ifFalse:[1]].
- fac value: 5.
-
- Support for literal ByteArray syntax has been added. Byte arrays can now be written as #[1 2 3] instead of #(1 2 3) asByteArray avoiding the need for conversion.
-
- Selectors including minus are now parsed correctly, for example 3 <- 4 is now parsed as (3) <- (4) instead of (3) < (-4). White space is no longer allowed after an unary minus to denote a negative number literal.
-
- Development
- Syntax highlighting, based on Shout, is now included in all Squeak tools by default. For workspaces, it can be explicitly disabled in the window menu (press the blue button; entry ''syntax highlighting'').
-
- Sources and changes files are no longer limited to 32MB max size. ExpandedSourceFileArray provides an implementation for source files of arbitrary length, based on the CompiledMethodTrailer changes.
-
- MessageTrace has been added, allowing senders and implementors to be viewed without opening new windows all the time. It utilizes a new AlternatePluggableListMorphOfMany, which allows quick and easy customization of the list. A quick adoption of DependencyBrowser has been added allowing to browse dependencies between packages.
-
- Core Libraries
- Sets can now store nil just as any other collection. The collection hierachy has been refactored to have both Set and Dictionary a subclass of HashedCollection instead of having Dictionary a subclass of Set. Squeak now uses a better distributed scaledIdentityHash for identity sets and dictionaries.
-
- StandardFilestream now performs read-buffering, dramatically speading up some operations like "Object compileAll" (2x improvement) as well as various other operations (scanning change lists etc).
-
- A new traits implementation has been added. The implementation is significantly smaller and simpler than the old version and can be unloaded and reloaded without loss of information (i.e., traits flattened during unload are restored during traits reloading).
-
- A new extensible number parser hierharchy has been introduced NumberParser and its subclasses provide support for parsing and building numbers from strings and streams.
-
- A new general cleanup protocol has been added. The cleanUp protocol takes an optional argument to indicate whether we''re doing an aggressive cleanup (which involves deleting projects, change sets, and possibly other destructive actions) or a more gentle cleanup that''s only supposed to clean out transient caches.
-
- SystemDictionary and SmalltalkImage have been refactored. Smalltalk is now an instance of SmalltalkImage, representing a facade for system-wide queries and actions. SmalltalkImage contains a global environment, an instance of SystemDictionary, which the environment used by classes. Thus, SmalltalkImage current == Smalltalk, Object environment == Smalltalk globals.
-
- Modularity
- The following packages have been made reloadable: ReleaseBuilder, ScriptLoader, 311Deprecated, 39Deprecated, Universes, SMLoader, SMBase, Installer-Core, VersionNumberTests, VersionNumber, Services-Base, PreferenceBrowser, Nebraska, CollectionsTests, GraphicsTests, KernelTests, MorphicTests, MultilingualTests, NetworkTests, ToolsTests, TraitsTests, XML-Parser, Traits, SystemChangeNotification-Tests, FlexibleVocabularies, EToys, Protocols, Tests, SUnitGUI. To unload all of these, execute:
-
- Smalltalk unloadAllKnownPackages.
- !!
- ]style[(11 53 228 14 920 251 2 8 309 376 2 11 206 529 2 14 302 197 1113 10 1 50 479)a2cblue;bFBitmap DejaVu Sans#14,c006006006bFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,f1,,bu,,FBitmap DejaVu Sans#14,!!' readStream nextChunkText!
Item was added:
+ ----- Method: TheWorldMainDockingBar>>welcomeToSqueak42 (in category 'submenu - help') -----
+ welcomeToSqueak42
+ ^'Squeak 4.2
+ Welcome to Squeak - a free, open Smalltalk system.
+
+ Needs to be updated:
+
+ Squeak 4.1 combines the license change occuring in the 4.0 release with the development work that has been going on while the relicensing process took place. Here are the highlights of the changes that resulted in Squeak 4.1:
+
+ User Interface
+ We have adapted the ''face lift'' look originally developed for Newspeak. For those of us who like colored windows (quite a few as it turns out) you can switch between uniform and colored windows in the ''Extras'' menu under ''Window Colors''.
+
+ The new menu bar makes Squeak much easier to discover than before. The process of transitioning from the world menu is not complete yet, there are still items that can only be accessed from the world menu (i.e., by clicking on the desktop).
+
+ The search field integrated in the menu bar allows for direct navigation to classes and methods - simply type in a partial class or method name and see what happens.
+
+ A new set of inexpensive sub-pixel antialiased fonts derived from the DejaVu fonts (''Bitmap DejaVu'' in the font chooser) has been added. True type font support has been upgraded to operate directly on files on disk without the need to load the entire file into memory.
+
+ A new set of text editors has been added, which allowed us to decouple the Morphic and MVC implementations for improved modularity. Morphic now has regular blinking insertion point cursors instead of the (virtually invisible) static cursor previously.
+
+ Compiler
+ Squeak 4.1 includes the closure implementation from Cog as a prerequisite for full Cog adoption later. With this implementation Squeak finally has ''full'' closures, allowing classic recursive examples like the following to work:
+
+ fac := [:n| n > 1 ifTrue:[n * (fac value: n-1)] ifFalse:[1]].
+ fac value: 5.
+
+ Support for literal ByteArray syntax has been added. Byte arrays can now be written as #[1 2 3] instead of #(1 2 3) asByteArray avoiding the need for conversion.
+
+ Selectors including minus are now parsed correctly, for example 3 <- 4 is now parsed as (3) <- (4) instead of (3) < (-4). White space is no longer allowed after an unary minus to denote a negative number literal.
+
+ Development
+ Syntax highlighting, based on Shout, is now included in all Squeak tools by default. For workspaces, it can be explicitly disabled in the window menu (press the blue button; entry ''syntax highlighting'').
+
+ Sources and changes files are no longer limited to 32MB max size. ExpandedSourceFileArray provides an implementation for source files of arbitrary length, based on the CompiledMethodTrailer changes.
+
+ MessageTrace has been added, allowing senders and implementors to be viewed without opening new windows all the time. It utilizes a new AlternatePluggableListMorphOfMany, which allows quick and easy customization of the list. A quick adoption of DependencyBrowser has been added allowing to browse dependencies between packages.
+
+ Core Libraries
+ Sets can now store nil just as any other collection. The collection hierachy has been refactored to have both Set and Dictionary a subclass of HashedCollection instead of having Dictionary a subclass of Set. Squeak now uses a better distributed scaledIdentityHash for identity sets and dictionaries.
+
+ StandardFilestream now performs read-buffering, dramatically speading up some operations like "Object compileAll" (2x improvement) as well as various other operations (scanning change lists etc).
+
+ A new traits implementation has been added. The implementation is significantly smaller and simpler than the old version and can be unloaded and reloaded without loss of information (i.e., traits flattened during unload are restored during traits reloading).
+
+ A new extensible number parser hierharchy has been introduced NumberParser and its subclasses provide support for parsing and building numbers from strings and streams.
+
+ A new general cleanup protocol has been added. The cleanUp protocol takes an optional argument to indicate whether we''re doing an aggressive cleanup (which involves deleting projects, change sets, and possibly other destructive actions) or a more gentle cleanup that''s only supposed to clean out transient caches.
+
+ SystemDictionary and SmalltalkImage have been refactored. Smalltalk is now an instance of SmalltalkImage, representing a facade for system-wide queries and actions. SmalltalkImage contains a global environment, an instance of SystemDictionary, which the environment used by classes. Thus, SmalltalkImage current == Smalltalk, Object environment == Smalltalk globals.
+
+ Modularity
+ The following packages have been made reloadable: ReleaseBuilder, ScriptLoader, 311Deprecated, 39Deprecated, Universes, SMLoader, SMBase, Installer-Core, VersionNumberTests, VersionNumber, Services-Base, PreferenceBrowser, Nebraska, CollectionsTests, GraphicsTests, KernelTests, MorphicTests, MultilingualTests, NetworkTests, ToolsTests, TraitsTests, XML-Parser, Traits, SystemChangeNotification-Tests, FlexibleVocabularies, EToys, Protocols, Tests, SUnitGUI. To unload all of these, execute:
+
+ Smalltalk unloadAllKnownPackages.
+ !!
+ ]style[(11 54 21 228 14 920 251 2 8 309 376 2 11 206 529 2 14 302 197 1113 10 1 50 479)a2cblue;bFBitmap DejaVu Sans#14,c005005005bFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bcred;,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,f1,,bu,,FBitmap DejaVu Sans#14,!!' readStream nextChunkText!
Item was changed:
----- Method: TheWorldMainDockingBar>>welcomeWorkspacesOn: (in category 'submenu - help') -----
welcomeWorkspacesOn: menu
menu addItem:[:item|
item
+ contents: 'Welcome to Squeak 4.2' translated;
- contents: 'Welcome to Squeak 4.1' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
+ #welcomeToSqueak42.
+ 'Welcome to Squeak 4.2'.
- #welcomeToSqueak41.
- 'Welcome to Squeak 4.1'.
(140@140 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'The Squeak User Interface' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#squeakUserInterface.
'The Squeak User Interface'.
(160@160 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'Working With Squeak' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#workingWithSqueak.
'Working With Squeak'.
(180@180 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'Terse Guide to Squeak' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#terseGuideToSqueak.
'Terse Guide to Squeak'.
(180@180 extent: 600@400)
}].
menu addItem:[:item|
item
contents: 'License Information' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#licenseInformation.
'License Information'.
(200@200 extent: 500@300)
}].!
Alexander Lazarević uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-laza.468.mcz
==================== Summary ====================
Name: Morphic-laza.468
Author: laza
Time: 28 September 2010, 5:24:49.199 pm
UUID: 81a9b6d2-3dc7-4789-8e2f-fa9420a0afa9
Ancestors: Morphic-nice.467
- changed 41 to 42
- see if this triggers a hudson build
=============== Diff against Morphic-nice.467 ===============
Item was removed:
- ----- Method: TheWorldMainDockingBar>>welcomeToSqueak41 (in category 'submenu - help') -----
- welcomeToSqueak41
- ^'Squeak 4.1
- Welcome to Squeak - a free, open Smalltalk system.
-
- Squeak 4.1 combines the license change occuring in the 4.0 release with the development work that has been going on while the relicensing process took place. Here are the highlights of the changes that resulted in Squeak 4.1:
-
- User Interface
- We have adapted the ''face lift'' look originally developed for Newspeak. For those of us who like colored windows (quite a few as it turns out) you can switch between uniform and colored windows in the ''Extras'' menu under ''Window Colors''.
-
- The new menu bar makes Squeak much easier to discover than before. The process of transitioning from the world menu is not complete yet, there are still items that can only be accessed from the world menu (i.e., by clicking on the desktop).
-
- The search field integrated in the menu bar allows for direct navigation to classes and methods - simply type in a partial class or method name and see what happens.
-
- A new set of inexpensive sub-pixel antialiased fonts derived from the DejaVu fonts (''Bitmap DejaVu'' in the font chooser) has been added. True type font support has been upgraded to operate directly on files on disk without the need to load the entire file into memory.
-
- A new set of text editors has been added, which allowed us to decouple the Morphic and MVC implementations for improved modularity. Morphic now has regular blinking insertion point cursors instead of the (virtually invisible) static cursor previously.
-
- Compiler
- Squeak 4.1 includes the closure implementation from Cog as a prerequisite for full Cog adoption later. With this implementation Squeak finally has ''full'' closures, allowing classic recursive examples like the following to work:
-
- fac := [:n| n > 1 ifTrue:[n * (fac value: n-1)] ifFalse:[1]].
- fac value: 5.
-
- Support for literal ByteArray syntax has been added. Byte arrays can now be written as #[1 2 3] instead of #(1 2 3) asByteArray avoiding the need for conversion.
-
- Selectors including minus are now parsed correctly, for example 3 <- 4 is now parsed as (3) <- (4) instead of (3) < (-4). White space is no longer allowed after an unary minus to denote a negative number literal.
-
- Development
- Syntax highlighting, based on Shout, is now included in all Squeak tools by default. For workspaces, it can be explicitly disabled in the window menu (press the blue button; entry ''syntax highlighting'').
-
- Sources and changes files are no longer limited to 32MB max size. ExpandedSourceFileArray provides an implementation for source files of arbitrary length, based on the CompiledMethodTrailer changes.
-
- MessageTrace has been added, allowing senders and implementors to be viewed without opening new windows all the time. It utilizes a new AlternatePluggableListMorphOfMany, which allows quick and easy customization of the list. A quick adoption of DependencyBrowser has been added allowing to browse dependencies between packages.
-
- Core Libraries
- Sets can now store nil just as any other collection. The collection hierachy has been refactored to have both Set and Dictionary a subclass of HashedCollection instead of having Dictionary a subclass of Set. Squeak now uses a better distributed scaledIdentityHash for identity sets and dictionaries.
-
- StandardFilestream now performs read-buffering, dramatically speading up some operations like "Object compileAll" (2x improvement) as well as various other operations (scanning change lists etc).
-
- A new traits implementation has been added. The implementation is significantly smaller and simpler than the old version and can be unloaded and reloaded without loss of information (i.e., traits flattened during unload are restored during traits reloading).
-
- A new extensible number parser hierharchy has been introduced NumberParser and its subclasses provide support for parsing and building numbers from strings and streams.
-
- A new general cleanup protocol has been added. The cleanUp protocol takes an optional argument to indicate whether we''re doing an aggressive cleanup (which involves deleting projects, change sets, and possibly other destructive actions) or a more gentle cleanup that''s only supposed to clean out transient caches.
-
- SystemDictionary and SmalltalkImage have been refactored. Smalltalk is now an instance of SmalltalkImage, representing a facade for system-wide queries and actions. SmalltalkImage contains a global environment, an instance of SystemDictionary, which the environment used by classes. Thus, SmalltalkImage current == Smalltalk, Object environment == Smalltalk globals.
-
- Modularity
- The following packages have been made reloadable: ReleaseBuilder, ScriptLoader, 311Deprecated, 39Deprecated, Universes, SMLoader, SMBase, Installer-Core, VersionNumberTests, VersionNumber, Services-Base, PreferenceBrowser, Nebraska, CollectionsTests, GraphicsTests, KernelTests, MorphicTests, MultilingualTests, NetworkTests, ToolsTests, TraitsTests, XML-Parser, Traits, SystemChangeNotification-Tests, FlexibleVocabularies, EToys, Protocols, Tests, SUnitGUI. To unload all of these, execute:
-
- Smalltalk unloadAllKnownPackages.
- !!
- ]style[(11 53 228 14 920 251 2 8 309 376 2 11 206 529 2 14 302 197 1113 10 1 50 479)a2cblue;bFBitmap DejaVu Sans#14,c006006006bFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,f1,,bu,,FBitmap DejaVu Sans#14,!!' readStream nextChunkText!
Item was added:
+ ----- Method: TheWorldMainDockingBar>>welcomeToSqueak42 (in category 'submenu - help') -----
+ welcomeToSqueak42
+ ^'Squeak 4.2
+ Welcome to Squeak - a free, open Smalltalk system.
+
+ Needs to be updated:
+
+ Squeak 4.1 combines the license change occuring in the 4.0 release with the development work that has been going on while the relicensing process took place. Here are the highlights of the changes that resulted in Squeak 4.1:
+
+ User Interface
+ We have adapted the ''face lift'' look originally developed for Newspeak. For those of us who like colored windows (quite a few as it turns out) you can switch between uniform and colored windows in the ''Extras'' menu under ''Window Colors''.
+
+ The new menu bar makes Squeak much easier to discover than before. The process of transitioning from the world menu is not complete yet, there are still items that can only be accessed from the world menu (i.e., by clicking on the desktop).
+
+ The search field integrated in the menu bar allows for direct navigation to classes and methods - simply type in a partial class or method name and see what happens.
+
+ A new set of inexpensive sub-pixel antialiased fonts derived from the DejaVu fonts (''Bitmap DejaVu'' in the font chooser) has been added. True type font support has been upgraded to operate directly on files on disk without the need to load the entire file into memory.
+
+ A new set of text editors has been added, which allowed us to decouple the Morphic and MVC implementations for improved modularity. Morphic now has regular blinking insertion point cursors instead of the (virtually invisible) static cursor previously.
+
+ Compiler
+ Squeak 4.1 includes the closure implementation from Cog as a prerequisite for full Cog adoption later. With this implementation Squeak finally has ''full'' closures, allowing classic recursive examples like the following to work:
+
+ fac := [:n| n > 1 ifTrue:[n * (fac value: n-1)] ifFalse:[1]].
+ fac value: 5.
+
+ Support for literal ByteArray syntax has been added. Byte arrays can now be written as #[1 2 3] instead of #(1 2 3) asByteArray avoiding the need for conversion.
+
+ Selectors including minus are now parsed correctly, for example 3 <- 4 is now parsed as (3) <- (4) instead of (3) < (-4). White space is no longer allowed after an unary minus to denote a negative number literal.
+
+ Development
+ Syntax highlighting, based on Shout, is now included in all Squeak tools by default. For workspaces, it can be explicitly disabled in the window menu (press the blue button; entry ''syntax highlighting'').
+
+ Sources and changes files are no longer limited to 32MB max size. ExpandedSourceFileArray provides an implementation for source files of arbitrary length, based on the CompiledMethodTrailer changes.
+
+ MessageTrace has been added, allowing senders and implementors to be viewed without opening new windows all the time. It utilizes a new AlternatePluggableListMorphOfMany, which allows quick and easy customization of the list. A quick adoption of DependencyBrowser has been added allowing to browse dependencies between packages.
+
+ Core Libraries
+ Sets can now store nil just as any other collection. The collection hierachy has been refactored to have both Set and Dictionary a subclass of HashedCollection instead of having Dictionary a subclass of Set. Squeak now uses a better distributed scaledIdentityHash for identity sets and dictionaries.
+
+ StandardFilestream now performs read-buffering, dramatically speading up some operations like "Object compileAll" (2x improvement) as well as various other operations (scanning change lists etc).
+
+ A new traits implementation has been added. The implementation is significantly smaller and simpler than the old version and can be unloaded and reloaded without loss of information (i.e., traits flattened during unload are restored during traits reloading).
+
+ A new extensible number parser hierharchy has been introduced NumberParser and its subclasses provide support for parsing and building numbers from strings and streams.
+
+ A new general cleanup protocol has been added. The cleanUp protocol takes an optional argument to indicate whether we''re doing an aggressive cleanup (which involves deleting projects, change sets, and possibly other destructive actions) or a more gentle cleanup that''s only supposed to clean out transient caches.
+
+ SystemDictionary and SmalltalkImage have been refactored. Smalltalk is now an instance of SmalltalkImage, representing a facade for system-wide queries and actions. SmalltalkImage contains a global environment, an instance of SystemDictionary, which the environment used by classes. Thus, SmalltalkImage current == Smalltalk, Object environment == Smalltalk globals.
+
+ Modularity
+ The following packages have been made reloadable: ReleaseBuilder, ScriptLoader, 311Deprecated, 39Deprecated, Universes, SMLoader, SMBase, Installer-Core, VersionNumberTests, VersionNumber, Services-Base, PreferenceBrowser, Nebraska, CollectionsTests, GraphicsTests, KernelTests, MorphicTests, MultilingualTests, NetworkTests, ToolsTests, TraitsTests, XML-Parser, Traits, SystemChangeNotification-Tests, FlexibleVocabularies, EToys, Protocols, Tests, SUnitGUI. To unload all of these, execute:
+
+ Smalltalk unloadAllKnownPackages.
+ !!
+ ]style[(11 54 21 228 14 920 251 2 8 309 376 2 11 206 529 2 14 302 197 1113 10 1 50 479)a2cblue;bFBitmap DejaVu Sans#14,c005005005bFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bcred;,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14bu,FBitmap DejaVu Sans#14,f1,,bu,,FBitmap DejaVu Sans#14,!!' readStream nextChunkText!
Item was changed:
----- Method: TheWorldMainDockingBar>>welcomeWorkspacesOn: (in category 'submenu - help') -----
welcomeWorkspacesOn: menu
menu addItem:[:item|
item
+ contents: 'Welcome to Squeak 4.2' translated;
- contents: 'Welcome to Squeak 4.1' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
+ #welcomeToSqueak42.
+ 'Welcome to Squeak 4.2'.
- #welcomeToSqueak41.
- 'Welcome to Squeak 4.1'.
(140@140 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'The Squeak User Interface' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#squeakUserInterface.
'The Squeak User Interface'.
(160@160 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'Working With Squeak' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#workingWithSqueak.
'Working With Squeak'.
(180@180 extent: 500@300)
}].
menu addItem:[:item|
item
contents: 'Terse Guide to Squeak' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#terseGuideToSqueak.
'Terse Guide to Squeak'.
(180@180 extent: 600@400)
}].
menu addItem:[:item|
item
contents: 'License Information' translated;
help: 'A Welcome Workspace' translated;
target: self;
selector: #showWelcomeText:label:in:;
arguments: {
#licenseInformation.
'License Information'.
(200@200 extent: 500@300)
}].!
Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-topa.378.mcz
==================== Summary ====================
Name: System-topa.378
Author: topa
Time: 27 September 2010, 11:17:30.574 am
UUID: beb6b8d8-c9fb-41ff-b859-731ca8f6b843
Ancestors: System-nice.377
Fix the menu build method that relied on
coverting a collection of strings to a large string just to split it again.
=============== Diff against System-nice.377 ===============
Item was changed:
----- Method: SystemNavigation>>showMenuOf:withFirstItem:ifChosenDo:withCaption: (in category 'ui') -----
showMenuOf: selectorCollection withFirstItem: firstItem ifChosenDo: choiceBlock withCaption: aCaption
"Show a sorted menu of the given selectors, preceded by firstItem, and all abbreviated to 40 characters. Use aCaption as the menu title, if it is not nil. Evaluate choiceBlock if a message is chosen."
| index menuLabels sortedList |
sortedList := selectorCollection asSortedCollection.
+ menuLabels := Array streamContents:
+ [:strm | strm nextPut: (firstItem contractTo: 40).
+ sortedList do: [:sel | strm nextPut: (sel contractTo: 40)]].
+ index := UIManager default chooseFrom: menuLabels lines: #(1).
- menuLabels := String streamContents:
- [:strm | strm nextPutAll: (firstItem contractTo: 40).
- sortedList do: [:sel | strm cr; nextPutAll: (sel contractTo: 40)]].
- index := UIManager default chooseFrom: (menuLabels substrings) lines: #(1).
index = 1 ifTrue: [choiceBlock value: firstItem].
index > 1 ifTrue: [choiceBlock value: (sortedList at: index - 1)]!
Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-topa.378.mcz
==================== Summary ====================
Name: System-topa.378
Author: topa
Time: 27 September 2010, 11:17:30.574 am
UUID: beb6b8d8-c9fb-41ff-b859-731ca8f6b843
Ancestors: System-nice.377
Fix the menu build method that relied on
coverting a collection of strings to a large string just to split it again.
=============== Diff against System-nice.377 ===============
Item was changed:
----- Method: SystemNavigation>>showMenuOf:withFirstItem:ifChosenDo:withCaption: (in category 'ui') -----
showMenuOf: selectorCollection withFirstItem: firstItem ifChosenDo: choiceBlock withCaption: aCaption
"Show a sorted menu of the given selectors, preceded by firstItem, and all abbreviated to 40 characters. Use aCaption as the menu title, if it is not nil. Evaluate choiceBlock if a message is chosen."
| index menuLabels sortedList |
sortedList := selectorCollection asSortedCollection.
+ menuLabels := Array streamContents:
+ [:strm | strm nextPut: (firstItem contractTo: 40).
+ sortedList do: [:sel | strm nextPut: (sel contractTo: 40)]].
+ index := UIManager default chooseFrom: menuLabels lines: #(1).
- menuLabels := String streamContents:
- [:strm | strm nextPutAll: (firstItem contractTo: 40).
- sortedList do: [:sel | strm cr; nextPutAll: (sel contractTo: 40)]].
- index := UIManager default chooseFrom: (menuLabels substrings) lines: #(1).
index = 1 ifTrue: [choiceBlock value: firstItem].
index > 1 ifTrue: [choiceBlock value: (sortedList at: index - 1)]!
Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-topa.378.mcz
==================== Summary ====================
Name: System-topa.378
Author: topa
Time: 27 September 2010, 11:17:30.574 am
UUID: beb6b8d8-c9fb-41ff-b859-731ca8f6b843
Ancestors: System-nice.377
Fix the menu build method that relied on
coverting a collection of strings to a large string just to split it again.
=============== Diff against System-nice.377 ===============
Item was changed:
----- Method: SystemNavigation>>showMenuOf:withFirstItem:ifChosenDo:withCaption: (in category 'ui') -----
showMenuOf: selectorCollection withFirstItem: firstItem ifChosenDo: choiceBlock withCaption: aCaption
"Show a sorted menu of the given selectors, preceded by firstItem, and all abbreviated to 40 characters. Use aCaption as the menu title, if it is not nil. Evaluate choiceBlock if a message is chosen."
| index menuLabels sortedList |
sortedList := selectorCollection asSortedCollection.
+ menuLabels := Array streamContents:
+ [:strm | strm nextPut: (firstItem contractTo: 40).
+ sortedList do: [:sel | strm nextPut: (sel contractTo: 40)]].
+ index := UIManager default chooseFrom: menuLabels lines: #(1).
- menuLabels := String streamContents:
- [:strm | strm nextPutAll: (firstItem contractTo: 40).
- sortedList do: [:sel | strm cr; nextPutAll: (sel contractTo: 40)]].
- index := UIManager default chooseFrom: (menuLabels substrings) lines: #(1).
index = 1 ifTrue: [choiceBlock value: firstItem].
index > 1 ifTrue: [choiceBlock value: (sortedList at: index - 1)]!
Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-ul.380.mcz
==================== Summary ====================
Name: System-ul.380
Author: ul
Time: 27 September 2010, 1:58:00.722 pm
UUID: d9fb6dad-55ca-a048-82bd-161222f88e4d
Ancestors: System-ul.379, System-topa.378
merged
=============== Diff against System-ul.379 ===============
Item was changed:
----- Method: SystemNavigation>>showMenuOf:withFirstItem:ifChosenDo:withCaption: (in category 'ui') -----
showMenuOf: selectorCollection withFirstItem: firstItem ifChosenDo: choiceBlock withCaption: aCaption
"Show a sorted menu of the given selectors, preceded by firstItem, and all abbreviated to 40 characters. Use aCaption as the menu title, if it is not nil. Evaluate choiceBlock if a message is chosen."
| index menuLabels sortedList |
sortedList := selectorCollection asSortedCollection.
+ menuLabels := Array streamContents:
+ [:strm | strm nextPut: (firstItem contractTo: 40).
+ sortedList do: [:sel | strm nextPut: (sel contractTo: 40)]].
+ index := UIManager default chooseFrom: menuLabels lines: #(1).
- menuLabels := String streamContents:
- [:strm | strm nextPutAll: (firstItem contractTo: 40).
- sortedList do: [:sel | strm cr; nextPutAll: (sel contractTo: 40)]].
- index := UIManager default chooseFrom: (menuLabels substrings) lines: #(1).
index = 1 ifTrue: [choiceBlock value: firstItem].
index > 1 ifTrue: [choiceBlock value: (sortedList at: index - 1)]!