[squeak-dev] The Trunk: Morphic-ar.420.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Apr 10 04:40:55 UTC 2010


Andreas Raab uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-ar.420.mcz

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

Name: Morphic-ar.420
Author: ar
Time: 9 April 2010, 9:38:13.361 pm
UUID: 0074d6ae-4430-8a47-9ede-966bb6b35a01
Ancestors: Morphic-laza.419

Add the welcome workspaces to the help menu. That moves them from being on-offs to be open for improvement by the community. 

Also adds a neat hack for editing those workspaces interactively: When enabled in the method showWelcomeText:label:in:, accepting the text will cause it to be compiled in the proper place.


=============== Diff against Morphic-laza.419 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>welcomeWorkspacesOn: (in category 'submenu - help') -----
+ welcomeWorkspacesOn: menu
+ 
+ 	menu addItem:[:item|
+ 		item
+ 			contents: 'Welcome to Squeak 4.1' translated;
+ 			help: 'A Welcome Workspace' translated;
+ 			target: self;
+ 			selector: #showWelcomeText:label:in:;
+ 			arguments: {
+ 				#welcomeToSqueak41. 
+ 				'Welcome to Squeak 4.1'. 
+ 				(140 at 140 extent: 500 at 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 at 160 extent: 500 at 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 at 180 extent: 500 at 300)
+ 			}].
+ 	menu addItem:[:item|
+ 		item
+ 			contents: 'License Information' translated;
+ 			help: 'A Welcome Workspace' translated;
+ 			target: self;
+ 			selector: #showWelcomeText:label:in:;
+ 			arguments: {
+ 				#licenseInformation. 
+ 				'License Information'. 
+ 				(200 at 200 extent: 500 at 300)
+ 			}].!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>squeakOnlineResources (in category 'submenu - help') -----
+ squeakOnlineResources
+ 	^'Squeak web sites
+ 	http://www.squeak.org	- The main Squeak site.
+ 	http://news.squeak.org	- The Weekly Squeak
+ 	http://board.squeak.org	- The Squeak Oversight Board
+ 	http://ftp.squeak.org	- Downloads for many Squeak versions.
+ 	http://squeakvm.org	- Development of the Squeak virtual machine
+ 	
+ Squeak-dev - The main Squeak mailing list
+ 	http://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
+ 	http://dir.gmane.org/gmane.comp.lang.smalltalk.squeak.general
+ 	http://n4.nabble.com/Squeak-Dev-f45488.html
+ 
+ Squeak-Beginners - The place to ask even the most basic questions
+ 	http://lists.squeakfoundation.org/mailman/listinfo/beginners
+ 	http://dir.gmane.org/gmane.comp.lang.smalltalk.squeak.beginners
+ 	http://n4.nabble.com/Squeak-Beginners-f107673.html
+ 
+ Squeak By Example
+ 	http://www.squeakbyexample.org/
+ 
+ Squeak, Open Personal Computing and Multimedia
+ 	http://coweb.cc.gatech.edu/squeakbook/
+ 	http://stephane.ducasse.free.fr/FreeBooks/CollectiveNBlueBook/
+ 
+ Squeak, Open Personal Computing for Multimedia
+ 	http://www.cc.gatech.edu/~mark.guzdial/drafts/
+ 	http://stephane.ducasse.free.fr/FreeBooks/GuzdialBookDrafts/
+ 
+ More Books about Squeak and Smalltalk
+ 	http://stephane.ducasse.free.fr/FreeBooks.html
+ !!
+ ]style[(16 274 41 173 65 181 17 35 46 106 46 112 37 49)bu,,bu,,bu,,bu,,bu,,bu,,bu,!!' readStream nextChunkText!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>squeakUserInterface (in category 'submenu - help') -----
+ squeakUserInterface
+ 	^'The Squeak UI has some unusual elements that you may not have seen before. Here is a brief introduction to those elements:
+ 
+ Projects
+ A project is an entire Squeak desktop full of windows.  Projects are can be used to change quickly from one task to another.  An inactive project is represented by a project window that shows a thumbnail of that project''s windows.  Project windows are actually more like doors than windows, since you can enter the project just by clicking on its project window.  You can create a new project by choosing ''open...project'' from the screen menu.  To exit a project (and return to its parent project), choose ''previous project'' from the screen menu.  Each project maintains its set of windows, plus its own set of Smalltalk changes and its own screen color depth.
+ 
+ Morphic Halos
+ In a morphic project, cmd-click (alt-click) on a window or other graphical object will bring up a constellation of colored circles called "halo handles" around that object.  Additional clicks will cycle through the halos for other graphical objects in the nesting structure.  If you hold down the Shift key while cmd-clicking, the nested morphs will be traversed from innermost outward.  Clicking without the cmd (alt) key will dismiss the halo.  While the halo is up, letting the cursor linger over one of the halo handles for a few seconds will cause a balloon to pop up with the name of that handle.  Three useful handles are the top-left "X" handle (delete), the bottom-right yellow handle (resize), and the brown handle (slide the object within its containing object).  Halos allow complex graphical objects to be explored--or even disassembled (using the black halo handle).  Usually no harm results from taking apart an object; you can just discard the pieces and create a new one.
+ 
+ Flaps
+ To enable Flaps, click on the desktop to show the world menu, choose the "Flaps..." menu and "show shared tags". Tabs labeled "Squeak", "Tools", "Supplies", etc., will appear along the edges of the Squeak desktop.  Click on any tab to open the corresponding flap.  Drag a tab to resize the flap and to relocate the tab.  Bring up the halo on any tab and click on its menu handle to be presented with many options relating to the flap.  Use the "Flaps..." menu, reached via the desktop menu, to control which flaps are visible and for other flap-related options and assistance.
+ 
+ Parts Bins
+ You can obtain new objects in many ways.  The "Objects Catalog" (choose "objects'' from the world menu or open the objects flap) and several of the standard flaps (e.g. "Tools" and "Supplies") serve as "Parts Bins" the for new objects.  Drag any icon you see in a Parts Bin and a fresh copy of the kind of object it represents will appear "in your hand"; click to deposit the new object anywhere you wish.  You can also add your own objects to any of the flaps -- just drag your object over the tab, wait for the flap to pop open, then drop the object at the desired position in the flap.
+ !!
+ ]style[(123 9 663 13 991 5 579 10 589),bu,,bu,,bu,,bu,!!' readStream nextChunkText!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>workingWithSqueak (in category 'submenu - help') -----
+ workingWithSqueak
+ 	^'Starting and Quitting
+ Obviously you have figured out how to start the system.  One way is to double-click on an image.  If you have several different interpreters, you may want to drag the image to the appropriate interpreter; that lets you decide which interpreter should be used.
+ 
+ To quit a Squeak session, choose ''quit'' from the menu bar.  If you save, your previous image file will be overwritten.  You may choose ''save as...'' or ''save as new version'' to save a copy of your image and changes files with a new name (see below).
+ 
+ Image File
+ All of the objects -- classes, dictionaries, windows and other objects -- that make up the Squeak environment are stored in an image file (this must be named ''SomeName.image'' or ''SomeName.ima'').  When you start up an image, everything is right where you left it when you last saved that image.
+ 
+ Sources and Changes
+ The source code associated with the Squeak code in an image file is stored in two other files.  The code of the base system (e.g., Squeak version 4.1) is stored in the file ''SqueakV41.sources'', and the sources for methods added or changed since that time are in the changes file (which must similarly be named ''SomeName.changes'').
+ 
+ Storing the source code in a separate file has several advantages.  To begin with, if you have been working for a couple of hours, and your dog pulls out the power cord, you will still have a sequential record of all your program edits, and these can be perused and replayed to recover your work.  This feature has also saved many a hacker who got too adventurous while changing the system he or she was using.
+ 
+ However, if you wish to run the system with severely limited resources, it can be operated without any source code, owing to its ability to decompile the bytecode methods into a readable and editable version of the original source code (only comments and temporary variable names are lost).
+ 
+ Finally, since the changes file does not consume memory space, Squeak keeps a complete history of all your program changes.  This makes it easy to examine or even reinstate older versions of methods (see ''versions'' option in browser selector pane).  This encourages experimentation, since you can easily revert to the original versions of any set of methods.
+ 
+ FileOut, FileIn
+ In addition to the ''save'' command that saves the entire state of your Squeak image, individual methods, categories and classes may be ''filed out''.  Filing out a method, category, or class results in the creation of a text file containing the code in question.  This file can be read into the same or another Squeak image to recreate the saved classes and methods.
+ 
+ ChangeLists, ChangeSets, and ChangeSorters
+ A ChangeList is a method-by-method view of a fileOut.  Note that the changes file records all your programming actions using the same fileOut format, so a ChangeList can browse the change history of any Squeak image.  The "recover changes" command of the Extras menu is one way to do this. You can also open a ChangeList on any fileOut file by selecting the file in the FileList and selecting the "browse changes" command.
+ 
+ In addition to the image-wide record of changes kept in the changes file, a record of changes is also associated with every project.  This "change set" records only the class and method changes you made within that project. This allows you to make a fileOut of all the changes that constitute your work on that project.  Single and dual ChangeSorters allow one to examine the change set of the current project and other projects, and also allows changes to be moved between change sets.  These are very useful tools for more experienced Squeak programmers.
+ 
+ Organizing your Disk
+ Squeak will look for the sources file either in the folder containing the image.  If the sources file is not found there, then it looks in the folder containing the VM.  In general, it is simplest to keep a single copy of the sources file in the folder containing the VM.  You can use any number of image/changes pairs anywhere on your disk.
+ 
+ If you wish to maintain several versions of the VM, here is the easiest way:  place all VMs in one folder along with the sources file.  Then, in each folder with images for version X, place an alias of the VM for version X.  You can then start VM version X on that image by dragging the image onto the VM alias.  (If you start Squeak by double-clicking on the image, it might use the wrong version of the VM to run that image.)  Another technique is to keep an alias for your favorite VM on the desktop and start images by dropping them on this alias.  These instructions apply to Mac and Windows, but the same general strategy can be applied to Linux, Unix, and many other platforms.
+ !!
+ ]style[(21 512 10 296 19 1397 15 366 42 983 20 1029)bu,,bu,,bu,,bu,,bu,,bu,!!' readStream nextChunkText!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>showWelcomeText:label:in: (in category 'submenu - help') -----
+ showWelcomeText: aSelector label: labelString in: bounds
+ 	"Show a welcome text. Linked in here so that the text can be edited
+ 	by changing the acceptBlock below."
+ 	| acceptBlock window |
+ 	"Change the following to allow editing the text"
+ 	false ifTrue:[
+ 		acceptBlock := [:text|
+ 			self class
+ 				compile: aSelector,'
+ 	^', (String streamContents:[:s| s nextChunkPutWithStyle: text]) storeString, ' readStream nextChunkText'
+ 				classified: (self class organization categoryOfElement: aSelector).
+ 		].
+ 	].
+ 
+ 	window := UIManager default 
+ 		edit: (self perform: aSelector)
+ 		label: labelString
+ 		accept: acceptBlock.
+ 	window bounds: bounds.
+ !

Item was added:
+ ----- 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 changed:
+ ----- Method: TheWorldMainDockingBar>>showSqueakResources (in category 'submenu - help') -----
- ----- Method: TheWorldMainDockingBar>>showSqueakResources (in category 'menu actions') -----
  showSqueakResources
  	^(StringHolder new contents:
  'Squeak web sites:
  	http://www.squeak.org	- The main Squeak site.
  	http://news.squeak.org	- The Weekly Squeak
  	http://board.squeak.org	- The Squeak Oversight Board
  	http://ftp.squeak.org	- Downloads for many Squeak versions.
  	http://squeakvm.org	- Development of the Squeak virtual machine
  	
  Squeak-dev - The main Squeak mailing list.
  	http://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
  	http://dir.gmane.org/gmane.comp.lang.smalltalk.squeak.general
  	http://n4.nabble.com/Squeak-Dev-f45488.html
  
  Squeak-Beginners - The place to ask even the most basic questions.
  	http://lists.squeakfoundation.org/mailman/listinfo/beginners
  	http://dir.gmane.org/gmane.comp.lang.smalltalk.squeak.beginners
  	http://n4.nabble.com/Squeak-Beginners-f107673.html
  
  Squeak By Example: 
  	http://www.squeakbyexample.org/
  
  Squeak, Open Personal Computing and Multimedia (The NuBlue Book - Draft):
  	http://coweb.cc.gatech.edu/squeakbook/
  	http://stephane.ducasse.free.fr/FreeBooks/CollectiveNBlueBook/
  
  Squeak, Open Personal Computing for Multimedia (The White Book - Draft):
  	http://www.cc.gatech.edu/~mark.guzdial/drafts/
  	http://stephane.ducasse.free.fr/FreeBooks/GuzdialBookDrafts/
  
  More Books about Squeak and Smalltalk:
  	http://stephane.ducasse.free.fr/FreeBooks.html
  
  ') openLabel: 'Squeak Online Resources'!

Item was changed:
+ ----- Method: TheWorldMainDockingBar>>helpMenuOn: (in category 'submenu - help') -----
- ----- Method: TheWorldMainDockingBar>>helpMenuOn: (in category 'construction') -----
  helpMenuOn: aDockingBar
  
  	aDockingBar addItem: [ :it |
  		it	contents: 'Help' translated;
  			addSubMenu: [ :menu |  'Todo'.
  				menu addItem:[:item|
  					item
  						contents: 'Online Resources' translated;
  						help: 'Online resources for Squeak' translated;
  						target: self;
  						icon: MenuIcons smallHelpIcon;
+ 						selector: #showWelcomeText:label:in:;
+ 						arguments: {
+ 							#squeakOnlineResources. 
+ 							'Squeak Online Resources'. 
+ 							(140 at 140 extent: 560 at 360)
+ 						}].
- 						selector: #showSqueakResources ].
  				menu addItem:[:item|
  					item
  						contents: 'Keyboard Shortcuts' translated;
  						help: 'Keyboard bindings used in Squeak' translated;
  						target: Utilities;
  						selector: #openCommandKeyHelp ].
  				menu addItem:[:item|
  					item
  						contents: 'Font Size Summary' translated;
  						help: 'Font size summary from the old Squeak 3.10.2 help menu.' translated;
  						target: TextStyle;
  						selector: #fontSizeSummary ].
  				menu addItem:[:item|
  					item
  						contents: 'Useful Expressions' translated;
  						help: 'Useful expressions from the old Squeak 3.10.2 help menu.' translated;
  						target: Utilities;
  						selector: #openStandardWorkspace ].
+ 				menu addLine.
+ 				menu addItem:[:item|
+ 					item
+ 						contents: 'Welcome Workspaces' translated;
+ 						help: 'The Welcome Workspaces' translated;
+ 						addSubMenu:[:submenu| self welcomeWorkspacesOn: submenu]].
  			]].!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>licenseInformation (in category 'submenu - help') -----
+ licenseInformation
+ 	"Should NOT be edited interactively"
+ 	^Smalltalk license asText!




More information about the Squeak-dev mailing list