Unimplemented Messages?

Ned Konz ned at bike-nomad.com
Wed Jul 16 23:14:29 UTC 2003


On Wednesday 16 July 2003 02:46 pm, Yoshiki.Ohshima at acm.org wrote:
>   Hello,
>
>   I'm playing around 3.6b-5331 (updated from 3.6a-5325).  The first
> thing I noticed is there are quite a few unimplemented messages. 
> If you call 'Smalltalk browseAllUnimplementedCalls', there are 161
> unimplemented calls.  It looks like most of them have explaination:
> some are primitives, which is ok, but some are in removed packages,
> which isn't great.  But isn't it be nice if there are a lot of few
> such methods.

That should be

SystemNavigation new browseAllUnimplementedCalls

(see below)

>   There are a few more unimplemented call cases that can't be check
> with the unimplemented check mechanism. 
> FileList>>openMorphFromFile should is 'called' from
> FileList>>fullFileListMenu:shifted: but is not there anymore.  What
> happened to #openMorphFromFile?  (I admit that I don't follow all
> of the email traffic...)

It seems to have gone away.

Actually, the only callers of it should have been replaced when the 
registering file list was done. Unfortunately, you still see those 
entries in some cases.

We still can do this, it's just that those hard-coded lists need to go 
away.

The convention was supposed to be that the classes that registered 
file list services should see a suffix of '*' as a flag to add all of 
their services that might be appropriate in the "all services" list. 
I notice that not all of them do that; I'll fix this.

FileList itemsForFile: 'fred.morph' 
=> an OrderedCollection(
Service: (ProjectViewMorph --- openFromDirectoryAndFileName: 
Service: (Morph --- fromFileName: 
Service: (ArchiveViewer --- addFileToNewZip: 
Service: (GZipWriteStream --- compressFile:)

So Morph>>fromFileName: is called ordinarily from the file list.

Once the corrections are made to the various methods, you get the 
equivalent of the following (31 items) for

FileList itemsForFile: 'a.*'

'open in midi player'		ScorePlayerMorph	#playMidiFile:
'load as project'		ProjectViewMorph	#openFromDirectoryAndFileName:
'open as movie'		MoviePlayerMorph	#openAsMovie:
'open for playback'		EventRecorderMorph	#openTapeFromFile:
'load as book'		BookMorph	#openFromFile:
'load as morph'		Morph	#fromFileName:
'read graphic into ImageImports'		Form	#importImage:
'open graphic in a window'		Form	#openImageInWindow:
'use graphic as background'		Form	#openAsBackground:
'open as Flash'		FlashMorphReader	#openAsFlash:
'remove line feeds'		FileStream	#removeLineFeeds:
'fileIn entire file'		FileStream	#fileIn:
'code-file browser'		FileContentsBrowser	#browseFile:
'changelist browser'		ChangeList	#browseChangesFile:
'recent changes in file'		ChangeList	#browseRecentLogOnPath:
'changelist browser'		ChangeList	#browseCompressedChangesFile:
'install into new change set'		ChangeSorter	#fileIntoNewChangeSet:
'fileIn entire file'		GZipReadStream	#fileIn:
'install into new change set'		GZipReadStream	#fileIntoNewChangeSet:
'view decompressed'		GZipReadStream	#viewContents:
'decompress to file'		GZipReadStream	#saveContents:
'load Genie Gesture Dictionary'		CRRecognizer	#loadCRDictionary:
'load Genie Display Properties'		CRRecognizer	
#loadCRDisplayProperties:
'add file to new zip'		ArchiveViewer	#addFileToNewZip:
'open in zip viewer'		ArchiveViewer	#openOn:
'extract all to...'		ArchiveViewer	#extractAllFrom:
'open true type font'		TTFontReader	#openTTFFile:
'play in MPEG player'		MPEGMoviePlayerMorph	#playFile:
'compress file'		GZipWriteStream	#compressFile:
'install SAR'		SARInstaller	#installSAR:
'install ttf style'		TTCFont	#newTextStyleFromTTFile:


Which should replace the hard-coded list in 
#fullFileListMenu:shifted:.

Similar logic can be used to get rid of the other hard-coded lists.

>   And, The deprecated method notice says 'Use
> SystemNavigation>>browseUnimplementedCalls'.  However, how can I
> use this exactly?  This is an instance method of SystemNavigation,
> and I saw some discussion about adding #default instance creation
> method to the class side, but there is no such method. 

> And since
> #systemNavigation is not implemented in SystemNavigation itself,
>
>   SystemNavigation new browseUnimplementedCalls
>
> or such fails.  Probably, we should implement #systemNavigation in
> SystemNavigation?

Fixed in 5338. The latest is 5352.

You can do:

Smalltalk systemNavigation ...

or

Utilities systemNavigation ...

-- 
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE



More information about the Squeak-dev mailing list