A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.121.mcz
==================== Summary ====================
Name: SystemEditor-mtf.121
Author: mtf
Time: 26 September 2008, 11:33:22 am
UUID: 543836e8-e91c-4680-97de-31aec2547aee
Ancestors: SystemEditor-mtf.120
Made edSuperclass not unnecessarily add an editor to SystemEditor. This was causing SystemEditor to be modified while iterating to build the transaction, causing a bad transaction to be created, and a segfault.
=============== Diff against SystemEditor-mtf.120 ===============
Item was changed:
----- Method: ClassDescriptionEditor>>edSuperclass (in category 'building') -----
edSuperclass
"Answer my product's superclass, building it if necessary"
+ | classOrEditor |
+ classOrEditor := self superclassOrEditor.
+ ^ classOrEditor edIsEditor
+ ifTrue: [classOrEditor product]
+ ifFalse: [classOrEditor]!
- ^ self superclass product!
A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.120.mcz
==================== Summary ====================
Name: SystemEditor-mtf.120
Author: mtf
Time: 25 September 2008, 6:03:49 pm
UUID: 1d442c36-bc08-4747-8ef8-40bf1b3548d9
Ancestors: SystemEditor-mtf.119
fix an infinite loop when doing ClassEditor on: nil
=============== Diff against SystemEditor-mtf.119 ===============
Item was changed:
----- Method: AbstractEditor class>>on:for:ifNotHandled: (in category 'as yet unclassified') -----
on: subject for: collectionEditor ifNotHandled: aBlock
"Try to find the most specialized subclass willing to edit, for extensibility"
| editor |
+ "nil subject is always permitted; it means new object"
+ subject ifNil: [^ self new on: subject for: collectionEditor].
self subclassesDo: [:class |
editor := class on: subject for: collectionEditor ifNotHandled: [nil].
editor ifNotNil: [^ editor]].
+ (self canEdit: subject for: collectionEditor)
- (subject isNil "nil subject is always permitted; it means new object"
- or: [self canEdit: subject for: collectionEditor])
ifTrue: [^ self new on: subject for: collectionEditor].
^ aBlock value!
C. David Shaffer uploaded a new version of Monticello.impl to project Monticello Public:
http://www.squeaksource.com/mc/Monticello.impl-cds.573.mcz
==================== Summary ====================
Name: Monticello.impl-cds.573
Author: cds
Time: 19 September 2008, 7:43:04 am
UUID: 23a5a8b7-3e13-4f40-929f-9d6f9c0af9a5
Ancestors: Monticello.impl-kph.572
Patched MCHttpRepository>>writeStreamForFileNamed:replace:do: to consider any "2xx" HTTP status code to indicate success. This is needed, for example, since many WebDAV servers answer 204 (NO CONTENT) to PUT requests which are updating an existing file. See http://www.w3.org/Protocols/HTTP/HTRESP.html.
=============== Diff against Monticello.impl-kph.572 ===============
Item was changed:
----- Method: MCHttpRepository>>writeStreamForFileNamed:replace:do: (in category 'required') -----
writeStreamForFileNamed: aString replace: ignoreBoolean do: aBlock
| stream response statusLine code |
stream := RWBinaryOrTextStream on: String new.
aBlock value: stream.
response := HTTPSocket
httpPut: stream contents
to: (self urlForFileNamed: aString)
user: self user
passwd: self password.
statusLine := response copyUpTo: Character cr.
code := (statusLine findTokens: ' ') second asInteger.
+ (code >= 200 and: [code < 300])
- (#(200 201) includes: code)
ifFalse: [self error: response].!
Matthew Fulmer uploaded a new version of SystemEditor to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.117.mcz
==================== Summary ====================
Name: SystemEditor-mtf.117
Author: mtf
Time: 18 September 2008, 11:06:01 am
UUID: 4a548d30-0c97-4225-b51d-bd1ec559e348
Ancestors: SystemEditor-mtf.116
MethodDictionaryEditor had Dictionary as its superclass, rather than DictionaryEditor; fixed.
Made MetaclassEditor>>isDebuggingAsEditor runtime, rather than compile-time, configurable (just send debug: true to the SystemEditor)
=============== Diff against SystemEditor-mtf.116 ===============
Item was changed:
+ DictionaryEditor subclass: #MethodDictionaryEditor
- Dictionary subclass: #MethodDictionaryEditor
instanceVariableNames: 'classEditor'
classVariableNames: ''
poolDictionaries: ''
category: 'SystemEditor-Editors'!
Item was added:
+ ----- Method: SystemEditor>>debug: (in category 'debugging') -----
+ debug: aBoolean
+ "see MetaclassEditor>>isDebuggingAsEditor"
+
+ debug := aBoolean!
Item was changed:
----- Method: OldMetaclassEditor>>isDebuggingAsEditor (in category 'debugging') -----
isDebuggingAsEditor
"To be transparent enough to fool most existing software,
MetaclassEditors must answer their subject's instance variables when
sent the message allInstVarNames. However, this message is also used by
the debugger, inspector, and explorer, when inspecting ClassEditors, and
an inspector should see the real instance variables of ClassEditor rather
than those of the MetaclassEditor's subject. So there is a conflict of
interest already.
But it gets worse. If you do open an inspector on an object that is
reporting wrong information about it's instance variables, Bad things
happen. Specifically, the inspector calls instVarAt: on an instance
variable that does not exist, leading to an error every time the display
is updated. Less severe, instVarAt: will answer nonsensical.
So I took the instance variable proxying behavior all the way so that it
successfully fools the debugger, inspector, and explorer into seeing
proxied instance variables (see the senders af this message if you want
to know how). But there is still the original problem that you, the
programmer want to see the real state of ClassEditor. That is where this
method comes in.
If this method returns false, everybody sees the proxied instance
variables. This is the correct behavior. If this method returns false,
everyone sees the true instance variables of ClassEditor. This is
incorrect behavior, and breaks the Unit tests, but it is invaluable if
+ you are debugging ClassEditor"
+
+ ^ self environment debug!
- you are debugging ClassEditor.
-
- Just be sure to make sure this returns false whenever making a release"
- ^ false!
Item was changed:
DictionaryEditor subclass: #SystemEditor
+ instanceVariableNames: 'organization showProgress debug'
- instanceVariableNames: 'organization showProgress'
classVariableNames: ''
poolDictionaries: ''
category: 'SystemEditor-Editors'!
Item was added:
+ ----- Method: SystemEditor>>debug (in category 'accessing') -----
+ debug
+ "see MetaclassEditor>>isDebuggingAsEditor"
+
+ ^ debug ifNil: [false]!
Item was changed:
----- Method: MetaclassEditor>>isDebuggingAsEditor (in category 'debugging') -----
isDebuggingAsEditor
"To be transparent enough to fool most existing software,
MetaclassEditors must answer their subject's instance variables when
sent the message allInstVarNames. However, this message is also used by
the debugger, inspector, and explorer, when inspecting ClassEditors, and
an inspector should see the real instance variables of ClassEditor rather
than those of the MetaclassEditor's subject. So there is a conflict of
interest already.
But it gets worse. If you do open an inspector on an object that is
reporting wrong information about it's instance variables, Bad things
happen. Specifically, the inspector calls instVarAt: on an instance
variable that does not exist, leading to an error every time the display
is updated. Less severe, instVarAt: will answer nonsensical.
So I took the instance variable proxying behavior all the way so that it
successfully fools the debugger, inspector, and explorer into seeing
proxied instance variables (see the senders af this message if you want
to know how). But there is still the original problem that you, the
programmer want to see the real state of ClassEditor. That is where this
method comes in.
If this method returns false, everybody sees the proxied instance
variables. This is the correct behavior. If this method returns false,
everyone sees the true instance variables of ClassEditor. This is
incorrect behavior, and breaks the Unit tests, but it is invaluable if
+ you are debugging ClassEditor"
+
+ ^ self environment debug!
- you are debugging ClassEditor.
-
- Just be sure to make sure this returns false whenever making a release"
- ^ false!
C. David Shaffer uploaded a new version of PackageInfo-Base to project Monticello Public:
http://www.squeaksource.com/mc/PackageInfo-Base-cds.53.mcz
==================== Summary ====================
Name: PackageInfo-Base-cds.53
Author: cds
Time: 20 September 2008, 1:10:23 am
UUID: f881e06a-f5ba-481a-adc5-5fd85b0c5bca
Ancestors: PackageInfo-Base-kph.52
Added PackageInfo class>>allPackages which existed in earlier versions and many class browsers rely on.
=============== Diff against PackageInfo-Base-kph.52 ===============
Item was added:
+ ----- Method: PackageInfo class>>allPackages (in category 'packages access') -----
+ allPackages
+ ^PackageOrganizer default packages!