[UPDATES] 1 for Squeak3.7alpha

dway at mailcan.com dway at mailcan.com
Sat Feb 14 08:12:30 UTC 2004



The latest approved items.  This includes a number of larger
enhancements, such as the Chronology package, Accufonts, BaseImageTests,
LargeLists, KCP change notification, etc.  So, proceed with caution! :-)

We are actually past the originally planned date for beta, but with this
large batch of changes, we should probably "let the bits settle" a bit
before moving to beta.  We could have one or possibly two more update
batches before beta, then... I'll shoot for the next one happening
relatively soon, maybe in 4-5 days.

(Sorry for the extended period since the last update, but I was busy
with other things for a while, and then the backup became large enough
that there was some effort in collecting them all and fixing conflicts.)

- Doug



------------------------------

5658openAnimGifs-asm -- Alejandro Magistrello -- 4 December 2003
added a file service to open gifs as if they were animated."

5659ProxyAuthEnh-al -- Adrian Lienhard -- 8 January 2004
Adds proxy authentication for squeak version 3.6 to HTTPSocket by
encoding to base64. Username and password is stored in the image. Code
is mainly from
http://minnow.cc.gatech.edu/squeak/uploads/23/HTTP-proxy-Mar02.cs. See
http://minnow.cc.gatech.edu/squeak/23 for discussion about being behind
a firewall.
Note: Monticello fixes a bug in HTTPSocket>>httpGetDocument: url args:
args accept: mimeType request: requestString. This fix is also included.
The method should be removed from monticello when this enhancement gets
into the main image because loading monticello will remoev the proxy
auth again."

5660PSFixes-nk -- Ned Konz -- 15 January 2003
15 January:
* removed IndentingListItemMorphWithIcon fixes (part of another package)
4 January:
* better DSC compatibility
* include DocumentFonts: at end
A number of fixes to the Postscript output routines:
* fix the bounding box and offset problems
* make the EPS output closer to valid
* use the right file extension
* make Bezier curve drawing more robust
* SimpleBorders are rendered more cleanly
* Move font mapping to the class side of PostscriptCanvas
* Render list item morphs with icons better
I tried to get the filled curves (Polygons, Beziers) to account for the
difference in the Postscript imaging model, but couldn't get it to look
right by clipping in the center of the borderline. So these filled
curves are going to be too large by half their border width.
Rectangles have their border drawing compensated for this effect.
Font mapping is still not very good, but you can edit the table if you
want now. There is not yet any API for doing this, but you can open an
Inspector on
PostscriptCanvas fontMap
to edit the map.

5661OnlyStartScriptsOnce-nk -- Ned Konz -- 2 December 2003
Currently, scripts or projects named on the command line will be started
again after the image is saved.
This change set fixes that problem by only starting them once at
startup.

5662ListViewVerificationFix-BG -- Boris Gaertner -- 22 January 2004
This fixes problems in PluggableListView>>verifyContents."

5663IntervalNewFromFix-raok -- Marcus Denker -- 14 January 2004
md: just reposting as changeset. Original Message:
Subject:		[FIX] Interval class>>newFrom:
Author:		Richard A. O'Keefe
Date Posted: 31 May 2002
Archive ID: 6326
Comments:	In Squeak 3.0.1, try
   Interval newFrom: (1 to: 1)
You expect a fresh copy of (1 to: 1).  You GET a division by 0.
This is because the implementation starts
   | newInterval |
   newInterval := self from: aCollection first to: aCollection last
      by: (aCollection last - aCollection first) // (aCollection size -
1).
If aCollection size = 0, this errs instead of returning an empty
Interval.
If aCollection size = 1, this gets a divide-by-zero.
Instead, it should read
    | newInterval n |
    (n := aCollection size) <= 1 ifTrue: [
	n = 0 ifTrue: [^self from: 1 to: 0].
	^self from: aCollection first to: aCollection last].
    newInterval := self from: aCollection first to: aCollection last
	by: (aCollection last - aCollection first) // (n - 1).
Has this already been fixed in 3.2?

5664RectangleMerging-btr -- Brian T Rice <water at tunes.org> -- 14
February 2003
			


md: just reposting as gzip-compressed mime attachement...

I modified Rectangle class>>merging: to only allocate a new point once
all the coordinates have been collected, to correct some GC issues
reported by Eddie Cottingim."

5665Chrnl-c-ANSIDateTimeDur -- Brent Pinkney -- 24 August 2003



This change set introduces the ANSI compliant DateAndTime and Duration
classes.

It also introduces the new Timespan,Week, Month, Year, and Schedule
classes."

5666Chrnl-d-YearMonthWk -- Brent Pinkney -- 24 August 2003
This change set refactors the existing 3.6 classes Week and Month. 
It also introduces the new Timespan, Year, and Schedule classes."

5667Chrnl-e-TempDateTimeSpn -- Brent Pinkney -- 24 August 2003
This changeset introduces temporary TDate, TTime, TTimeStamp classes
which will eventually replace the existing 3.6 classes.
This allows the new system to be developed without affecting the
existing system"

5668Chrnl-i-CnvtTDateTTime1 -- Brent Pinkney -- 24 August 2003
This change set it the first of two required to migrate the system from
the existing Date, Time, TimeStamp classes"

5669Chrnl-j-CnvtTDateTTime2 -- Brent Pinkney -- 24 August 2003
This is the second of two change sets to migrate the system to the new
Date, Time, and TimeStamp classes."

5670Chrnl-l-Morphic

5671MouseClickState-nk -- Ned Konz -- 9 May 2003
This makes a double click event be noticed on the second mouseUp rather
than on the second mouseDown event.

5672SmallLandRepository-dgd -- Diego Gomez Deck
<DiegoGomezDeck at ConsultAr.com> -- 17 January 2004
Add support to publish or download projects from Small-Land Project
Repository (SLPR).
The SLPR has virtual folders where the projects appears.  The SLPR can
be acceded from the FileList or from the web interface at
http://repository.small-land.org:8080
This changeset add the class (a type of ServerDirectory) needed to
access SLPR and register it in the server list.

5673MessageTallyEnsure-avi -- Brent Vukmer <brentvukmer at yahoo.com> -- 25
January 2004
Tweaked slightly for 3.7 (changed 'Smalltalk' refs to 'SmalltalkImage
current')."

5674SmallLandRepoComment-dgd -- Marcus Denker -- 26 January 2004
This just adds a comment to PRServerDirectory
to be filed in *after* SmallLandRepository-dgd"

5675MPEGDisplayMorphFix -- Masashi Umezawa -- 25 June 2003
MPEGDisplayMorph failed to play MPEG files if pathnames of the files
were changed between snapshots.
Now, MPEGDisplayMorph asks new pathnames if it encounters such
situation.

5676HTTPSocketPort-tlk -- tlk -- 22 January 2004
(merged with conflicting update 5663 -dew)"

5677InstallAccuFonts-dew -- Doug Way, Bob Arning, Ned Konz, Duane
Maxwell -- 24 January 2004
Installs new Accufont bitmap StrikeFonts.  This also replaces most
existing Squeak fonts (including the Apple NewYork font), making the
Apple font clause in the Squeak license irrelevant.  The acknowledgement
to Arts Management Systems Ltd.required by the Accufont license is added
to the StrikeFont class comment.
The Accufonts were encoded in this postscript by first installing the
AccuFonts.4.sar from SqueakMap, and then appending each Accufont to a
file via TextStyle>>compressedMIMEEncodedStream.
Possible remaining problems:  Character widths for some punctuation
characters could use some adjusting... e.g. the Accuny period character
is quite wide.  Also, some fonts such as Accuny09 and Accuny10 have the
same size of 12, which can cause problems for some tools.
- Doug Way
v5:
Converted the .sar file to a single changeset for inclusion in the
update stream.  Font files are encoded and installed in the postscript. 
The original Apple fonts are also replaced at the end of the postscript.
v4:
* Reset default sizes for system font, code font, etoys font and flaps
font.
* Removed SystemWindowIcons-nk.cs from the .sar (no longer needed)
* Removed the Dingbats fonts (Accumo, Accuca). They clutter up the
'system fonts...' menu by appearing as jibberish, which is annoying.
Also, I'm not sure we really want such obviously Apple-related dingbats
in the image such as the Apple logo, compact Mac, etc., even if they
were "cleanly" generated.
* Added acknowledgement from the AccuFonts license (the contact info for
Doug Easterbrook) to the StrikeFont class comment.  The license
specifies that the acknowledgement appear somewhere, and that seemed
like as good a place as any.
v3:
added X and O window icons if you replace the stock fonts.
v2:
Reduced memory usage by throwing away original font data.
v1:
This code is the first attempt to replace existing Squeak fonts with new
ones.  The first pass replaces all instance of the existing fonts with
'Accu'  versions.  The second pass loads in additional fonts.  The
transcript will show the progress
on loading the various fonts.  An attempt is made to make existing
windows still display, even though the font will change - in doing so,
there may be duplicates of the Accuny font until those windows are
closed and the garbage collector scavenges them.
Per the arrangement with Arts Management Systems, Ltd, an attempt has
been made to encode copyright information into the fonts.  This is done
by converting the copyright notice as a bitmap in glyph 16rF0, which is
unused in these fonts.  Depending upon the pointsize of the font,
various versions of this notice appear.
Submitted by:  Duane Maxwell, exobox
AccuFontLicense:
---------------------
Copyright Arts Management Systems, Ltd.
© Arts Management Systems Ltd.
 The fonts distributed as part of this base image are derived from fonts
copyright Arts Management Systems, Ltd. Use of the fonts in derivative
software products is allowed. 
 The fonts should retain their AccuFont names.
 The acknowledgement should read: 
>Doug Easterbrook
>Arts Management Systems Ltd.
>mailto:doug at artsman.com
>http://www.artsman.com
>Phone (403) 215-5701    Fax (403) 215-5704

5678HandMorphCursor-kfr -- Karl Ramberg -- 13 July 2003
When morphs are picked up with the hand the cursor changes from a black
arrow with a white outline to a black arrow. This single line fix
changes that so the cursor look the same when picking up stuff."

5679AssociationsEqual-LC -- Leandro Caniglia -- 13 January 2004
md: V2: added Associations>>hash
Change Set:		Associations-equal
Date:			20 November 2001
Author:			Leandro Caniglia
Defines the method Association >> #= in such a way that the values,
other than the keys, get compared too. Previously this was inherited
from LookupKey which only compares the keys."

5680intNewFix-bf -- Bert Freudenberg -- 2 February 2004
Fixes a bug in Integer class>>byte1:byte2:byte3:byte4: reported by Peter
William Lount"

5681browseWithComments-ls -- Lex Spoon -- 28 October 2003
This changeset causes class comments to appear in the system browser
whenever a class definition is being viewed."

5682MVCParEditorCursor-BG -- Boris Gaertner -- 12 December 2003
Change set 5500 introduced a lot of interesting improvements to the
editing functionality. It works fine in Morphic, but in MVC we see an
annoying flaw: When you scroll a longer piece of text, you see two or
more carets after scrolling.
This change set is an attempt to fix this. Test reports are of course
welcome. "

5683Tests-md -- Marcus Denker -- 29 January 2004
These are all the tests from the BaseImage tests package on SqueakMap.
We decided to add these to the image to make it more  easy to add new
tests
and, most important, allow the tests to be used as runnable
documentation.
Conventions used:
a) All tests are in a parallel class-category with the prefix Tests-
    This makes it easy to remove all tests.
b) Tests for single classes: These tests are named ClassToBeTestedTest,
all
    tests that test a single method are named testOriginalMethod, and
are
    in a method-categorie named like the original, but with the prefix 
    'testing - '.
    For these kinds of tests an abstrakt subclass of TestCase (named
ClassTestCase)
    is provided that adds common tests that seem to be usefull in all
cases.
    (three up to now: a test if all methods are categoriesed, a test to
send new
    and a test that looks if a class comment is provided)
c) Tests that are testing more than one class (whole subsystems) or test

    for complex bugs are of course possible. These can be put in an
existing
    'Tests-*' category or even add their own (like Tests-KCP, or
Tests-Bugs).

5684ifEmptyParam-md -- Marcus Denker -- 30 January 2004
Julian Fitzell posted a changeset to add ifEmpty/ifNotEmpty methods to
Collection. This
is now part of 3.7a.
>From his changeset preamble:
--
There was some discussion and it was agreed that they should all take
0-arg blocks in all their forms and we could add #ifEmptyDo:, etc. at a
later point if desired.  
--
Now there's a nice way of having ifEmpty: take both a 0-arg block (like
ifNotNil:)
and a 1-arg block (like ifNotNilDo:) by using valueWithPossibleArgs: to
double-dispatch on
the number of arguments in the block. 
ifNotEmpty: aBlock
	^self isEmpty ifFalse: [aBlock valueWithPossibleArgs: {self}].
	
enabeling both	
	
#(1) ifNotEmpty: [:i | i first] 
#(1) ifNotEmpty: ['hello']     
This changeset changes ifNotEmpty:/ifNotEmpty:ifEmpty and
ifEmpty:ifNotEmpty to use
valueWithPossibleArgs.
I think it would be good to have the ifNotNil inlining and the methods
to take
both 0-Arg and 1-Arg blocks, too. I will look into this later.

5685CursorWithMaskFix -- Karl Ramberg -- 12 July 2003
There is a little bug in CursorWithMask that crops off the cursor forms.
 
Changes the forms of some cursors (crossHair, move,read, write,
resizeLeft and wait).
(merged later conflict with update 5515 -dew)"

5686crlMP3StereoFix

5687ZipArchiveExtractAll -- Andreas Raab -- 6 February 2004
When interactively extracting zip files (from the file list or similar)
inform the user before overwriting existing files, leaving her with a
choice of either
- overwrite this file only
- skip this file only
- overwrite all files
- cancel the entire operation
(added missing method timestamps -dew)

5688raok-Equality -- Richard A. O'Keefe -- 10 June 2002
Provides useful definitions of #= for Bag and Dictionary.
Richard answerd 3 queries from Tom on January 25, 2004 
tlk(1):    In your version of the = method, there is no special test for
identity. For Bag, the comment says
    Two bags are equal if
     (a) they are the same 'kind' of thing,
     (b) they have the same size,
     (c) each element occurs the same number of times in both of them
raok: If you managed to create a Bag b which contained an object which
... contained b, then then b = b would loop forever.  An identity test
would prevent this.  However, it would not prevent other cases.
To clarify this, SequenceableCollection>> = has an identity check,
but it doesn't tame the following example:
  x <- Array new: 1.  x at: 1 put: x.
  y <- Array new: 1.  y at: 1 put: (Array new: 1). (y at: 1) at: 1 put:
y.
  x = y
If you want to add it, go ahead.  It won't hurt anything.
tlk: accept your analysis, didn't add
tlk(2): For Dictionary, the comment says Two dictionaries are equal if
     (a) they are the same 'kind' of thing,
     (b) they have the same set of keys,
     (c) for each (common) key they have the same value
raok: Again, an identity test isn't *needed* for anything, doesn't
prevent recursive loops, but is pretty harmless.  If you want to
add an identity test, go ahead.
Let's look at Set>> = .  In 3.0 it read
    = aSet
        (aSet isKindOf: Set) ifFalse: [^false].
        self size = aSet size ifFalse: [^false].
        self do: [:each | (aSet includes: each) ifFalse: [^false]].
        ^true
In 3.5, it reads
    = aSet
	self == aSet ifTrue: [^true]. ""stop recursion""
	...remainder the same as in 3.0...
This change was made by 'tk' on 2001.08.11.  As I've explained above, it
DOESN'T in fact stop recursion in general, only sometimes.  And it
appears to be impossible to build a set with such a cycle without
violating the rules about stability of hash codes.
So you might like to add the lines
    Imitating Set (tk 2001.08.11), we start with an identity test.
     Strictly speaking, you cannot build a cyclic Set or Bag or
     Dictionary without violating the hash code stability riterion,
     so this should not be needed.  Nor is it actually successful in
     its aim; it is possible to build cyclic containers where this
     test is not adequate to block recursion.  It is here to soothe
     people who were scared by Set>> = .
    self == aBag ifTrue: [^true].
to Bag>> = and similar lines ending with
    self == aDictionary ifTrue: [^true].
to Dictionary>> =.
tlk: Again, accept your analysis, and didn't make the change
tlk (3)	Also in your version, 	Dictionaries do not have to be of exactly
the same class to be equal. 
raok: Recall that we have
    Set
      IdentitySet
      PluggableSet
      Dictionary
        IdentityDictionary
        PluggableDictionary
    Bag        
     *IdentityBag
     *PluggableBag
I don't know why Squeak doesn't provide IdentityBag and PluggableBag; I
have written these classes myself.  So for me, BOTH the Bag and
Dictionary equality tests act the same way.  There's a reason for this,
which I'll explain shortly.  Take another look at the Set>> = method
which is there right now in Squeak.  It faces the same problem as
Dictionary:  what about the Identity* and Pluggable* versions? And it
adopts the same solution: ignore the problem.  This is not surprising;
Dictionary>> = was adapted from Set>> = .
Now, what's the reason?  Arguably, two Sets should count as equal only
if they use the same equality test for elements, and two Dictionaries
should count as equal only if they use the same equality test for keys.
So how do we check that?
    (self isKindOf: PluggableDictionary) ifTrue: [
        (aDictionary isKindOf: PluggableDictionary) ifFalse: [^false].
        aDictionary equalBlock = self equalBlock ifFalse: [^false].
    ] ifFalse: [
    (self isKindOf: IdentityDictionary) ifTrue: [
	(aDictionary isKindOf: IdentityDictionary) ifFalse: [^false].
    ] ifFalse: [
	self class == Dictionary ifFalse: [^false]
    ]]
or something filthy like that using #class instead of #isKindOf:.
But (a) a PluggableDictionary using [:x :y | x = y] uses the same 
equality test as a plain Dictionary, but will be  incorrectly  rejected
from being equal to one, and similarly       a PluggableDictionary using
[:x :y | x == y] uses the same        equality test as an
IdentityDictionary, but will never be         regarded as equal to one
even when it should be.
    (b) worse still, two PluggableDictionary objects with the same
        equalBlock (that is, the result of a block expression with
        equal free variables) won't be equal, because their locks
        will NOT be equal.  To see why, type
	[:x | x] = [:y | y]
	in a workspace and PrintIt:  the answer is false, even though 	these
are the SAME function.
    (c) the whole thing breaks horribly as soon as someone adds another 
class descending from Dictionary.
    (d) Anything even remotely like this would disagree with Set>> =, 
and the definition of equality for dictionaries should surely  be
similar to the definition of equality for sets.
There really isn't any satisfactory way around this; the code I
provided is the least unsatisfactory way.  Perhaps this discussion
should be added to the preamble comment.
tlk: Done

5689paramTileFix-sw -- Scott Wallace -- 18 January 2004
Fixes a bug regarding parameter tiles reported by Diego Gomez Deck. 
Parameter tiles were not functioning correctly when they occurred
embedded within if/then/else substructures."

5690NewClassComments -- Göran Hultgren -- 2 May 2002
As a crusader for more class comments this changeset has comments for
AsertionFailure and AttemptToWriteReadOnlyGlobal. Hey, I take the harder
ones later... :-)."

5691UUID-printing-ar -- Andreas Raab -- 6 February 2004
v2: move printString to printing category and not *tweak...
sd
For serializing UUIDs the existing method for converting it into a
string was very slow. The new method speeds it up by a factor of ten.
(added missing method timestamps -dew)"

5692TimeStampReadFrom

5693FileDirExistence-ac

5694LargeLists-ls -- Lex Spoon -- 5 February 2003
Adds an option to PluggableListMorph and friends so that very large
lists can be efficiently displayed.  The trick is to only process list
elements that are currently visible.  To use the functionality, a
pluggable list morph must be supplied with two additional selectors: one
to extract a single element of the list, and another to query the size
of the whole list without calculating the list itself.
Be warned that the model must call update: whenever the list changes,
and in particular whenever the list shrinks.  verifyContents does not
work properly for PLM's that have the two extra selectors specified."

5695FileDirCheckName-jf -- Julian Fitzell -- 7 February 2004
FileDirectory class>>checkName:fixErrors: was passing on only the local
name portion of the fileName you give it.  This is problematic if you
were trying to get a valid file name from, for example, a string that
happens to have a forward slash in it on a Unix filesystem.  The
behaviour is also unusual since the method returns the fixed string if
the second parameter is true, and this means that if you passed in a
full path you would get only the last segment back.  Non of the in-image
senders of this method depended on the behaviour since they all pass in
only a local path anyway.
This changeset changes the behaviour to pass the complete string on for
checking.  It also changes the fullName method parameter name to
fileName and changes the comment appropriately."

5696ColorFormTranslucent-ar -- Andreas Raab -- 10 February 2004
Fix to FormCanvas>>translucentImage:at: failing to draw translucent
color forms correctly."

5697FCBFixes-ar -- Andreas Raab -- 9 February 2004
Fixes a few problems with FileContentsBrowser:
- PseudoClass>>commentString didn't answer the string but a string
representation of the remote string (huh? ... oh well, just trust me it
was wrong).
- Filing out from FCB lost the method stamps and produced results which
were problematic for change list browser.
- FilePackage didn't close the file it was scanning.

5698clockMorph24hr-fc -- Frank Caggiano -- 8 February 2004
Added the ability for ClockMorph to display time in 24 hour mode. The
display mode (Am/Pm or 24 hour) is selected from ClockMorph's menu.

5699KCP135PrepareMovChangesLog -- Nathanael Schaerli & Stephane Ducasse
-- 16 January 2004
Moved changes file logging from SystemDictionary into SmalltalkImage.
IMPORTANT: Load this changeset before KCP-0116!!"

5700KCP136MoveChangesLog -- Nathanael Schaerli & Stephane Ducasse -- 16
January 2004
Moved changes file logging from SystemDictionary into SmalltalkImage.
(added missing method timestamps -dew)"

5701KCP137CleanUtilities -- stephane ducasse -- 16 January 2004
Yet another bundles of simple cleans
of Utilities. We will slowly get rid of it."

5702KCP147UtilEvaluateToCompiler -- stephane ducasse -- 19 January 2004
Move Utilities>>evaluate to Compiler its natural place"

5703KCP148moveBrowseUncMethod -- stephane ducasse -- 19 January 2004
moveBrowseUncommentedToSystemNavigation"

5704KCP160SystemChgNotif -- Roel Wuyts & Nathanael Schaerli -- 28
January 2004
New version of the system change notification framework. Working with
image v5623."

5705KCP165SystemChgNotifHooks -- Roel Wuyts -- 2 August 2003
System hooks that call the SystemChangeNotifier. Has to be filed in
last, since the notifications are already used during file-in. This is
the version for Squeak 3.7 and up. Users of Squeak 3.6 or older have to
load older versions available from Roel Wuyts (roel.wuyts at ulb.ac.be)."

5706KCP170CompilerPrtclRefactor -- Nathanael Schaerli -- 28 January 2004
v3: fixes a small bug (SystemNavigation default is used instead of
Smalltalk) and has the right order for a proper file-in.
The compiler protocol in Behavior and ClassDescription was complicated,
confusing and partly broken. This changeset refactors this framework
using the system change notifier."

5707KCP198Browser -- stephane ducasse -- 2 February 2004
remove one hardecoded reference in Browser"




<This automated message brought to you by the UpdateIncorporationTool.>
<See the UpdateIncorporationTool package on SqueakMap for details.>



More information about the Squeak-dev mailing list