Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer instead of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser + instanceVariableNames: 'packageOrganizer package packageListIndex packageList' - instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
+ !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0! + A package browser represents a hierarchical query path through an organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty). - !PackagePaneBrowser commentStamp: '<historical>' prior: 0! - A package browser represents a hierarchical query path through an organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables: + packageOrganizer <PackageOrganizer> the organizer of packages in the current environment package <Symbol> the "category header," e.g., #Magnitudes or #Collections packageListIndex <Integer> The index in the package list + packageList <OrderedCollection of String> the list of package names! - packageList <OrderedCollection of String> the list of package names - !
Item was added: + ----- Method: PackagePaneBrowser>>initialize (in category 'initialize-release') ----- + initialize + + super initialize. + + self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package list') ----- packageList - "Answer a list of the packages in the current system organization."
+ ^ self packageOrganizer packageNames sorted! - | str stream | - str := Set new: 100. - stream := WriteStream on: (Array new: 100). - systemOrganizer categories do: - [ :categ | | cats | - cats := categ asString copyUpTo: $-. - (str includes: cats) ifFalse: - [str add: cats. - stream nextPut: cats]]. - ^stream contents!
Item was added: + ----- Method: PackagePaneBrowser>>packageOrganizer (in category 'accessing') ----- + packageOrganizer + + ^ packageOrganizer!
Item was added: + ----- Method: PackagePaneBrowser>>packageOrganizer: (in category 'initialize-release') ----- + packageOrganizer: aPackageOrganizer + + packageOrganizer := aPackageOrganizer. + + self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added: + ----- Method: PackagePaneBrowser>>selectEnvironment: (in category 'accessing') ----- + selectEnvironment: anEnvironment + + super selectEnvironment: anEnvironment. + self packageOrganizer: anEnvironment packages.!
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Best, Karl
On Mon, Sep 12, 2022 at 7:12 PM commits@source.squeak.org wrote:
Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer instead of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser
instanceVariableNames: 'packageOrganizer package packageListIndex
packageList'
instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
- !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0!
- A package browser represents a hierarchical query path through an
organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty).
- !PackagePaneBrowser commentStamp: '<historical>' prior: 0!
- A package browser represents a hierarchical query path through an
organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables:
packageOrganizer <PackageOrganizer> the organizer of
packages in the current environment package <Symbol> the "category header," e.g., #Magnitudes or #Collections packageListIndex <Integer> The index in the package list
packageList <OrderedCollection of String> the list of package
names!
packageList <OrderedCollection of String> the list of package
names
- !
Item was added:
- ----- Method: PackagePaneBrowser>>initialize (in category
'initialize-release') -----
- initialize
super initialize.
self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package list') ----- packageList
"Answer a list of the packages in the current system organization."
^ self packageOrganizer packageNames sorted!
| str stream |
str := Set new: 100.
stream := WriteStream on: (Array new: 100).
systemOrganizer categories do:
[ :categ | | cats |
cats := categ asString copyUpTo: $-.
(str includes: cats) ifFalse:
[str add: cats.
stream nextPut: cats]].
^stream contents!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer (in category
'accessing') -----
- packageOrganizer
^ packageOrganizer!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer: (in category
'initialize-release') -----
- packageOrganizer: aPackageOrganizer
packageOrganizer := aPackageOrganizer.
self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added:
- ----- Method: PackagePaneBrowser>>selectEnvironment: (in category
'accessing') -----
- selectEnvironment: anEnvironment
super selectEnvironment: anEnvironment.
self packageOrganizer: anEnvironment packages.!
Hi
On 12. Sep 2022, at 21:41, karl ramberg karlramberg@gmail.com wrote:
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
…which you can _currently_ only find out via the monticello browser. :(
Best regards -Tobias
Best, Karl
On Mon, Sep 12, 2022 at 7:12 PM commits@source.squeak.org wrote: Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer instead of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser
instanceVariableNames: 'packageOrganizer package packageListIndex packageList'
instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
- !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0!
- A package browser represents a hierarchical query path through an organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty).
!PackagePaneBrowser commentStamp: '<historical>' prior: 0!
A package browser represents a hierarchical query path through an organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables:
packageOrganizer <PackageOrganizer> the organizer of packages in the current environment package <Symbol> the "category header," e.g., #Magnitudes or #Collections packageListIndex <Integer> The index in the package list
packageList <OrderedCollection of String> the list of package names!
packageList <OrderedCollection of String> the list of package names
- !
Item was added:
- ----- Method: PackagePaneBrowser>>initialize (in category 'initialize-release') -----
- initialize
super initialize.
self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package list') ----- packageList
"Answer a list of the packages in the current system organization."
^ self packageOrganizer packageNames sorted!
| str stream |
str := Set new: 100.
stream := WriteStream on: (Array new: 100).
systemOrganizer categories do:
[ :categ | | cats |
cats := categ asString copyUpTo: $-.
(str includes: cats) ifFalse:
[str add: cats.
stream nextPut: cats]].
^stream contents!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer (in category 'accessing') -----
- packageOrganizer
^ packageOrganizer!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer: (in category 'initialize-release') -----
- packageOrganizer: aPackageOrganizer
packageOrganizer := aPackageOrganizer.
self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added:
- ----- Method: PackagePaneBrowser>>selectEnvironment: (in category 'accessing') -----
- selectEnvironment: anEnvironment
super selectEnvironment: anEnvironment.
self packageOrganizer: anEnvironment packages.!
Hi Tobias, Hi Karl,
I noticed a few packages are empty:
Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
Yes. EToys is interesting, though, as it reveals that PackagePaneBrowser>>#systemCategoryList still uses an insufficient substring mechanism. I will revise that in the next few days. Sorry for the inconvenience.
…which you can _currently_ only find out via the monticello browser. :(
There is "browse extensions" in the browsers' class list/package menu. :-)
[cid:f719b6bd-aedf-47ee-a7b0-ba8de35d96fb]
Best, Christoph
________________________________ Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Tobias Pape Das.Linux@gmx.de Gesendet: Montag, 12. September 2022 21:58:27 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
Hi
On 12. Sep 2022, at 21:41, karl ramberg karlramberg@gmail.com wrote:
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
…which you can _currently_ only find out via the monticello browser. :(
Best regards -Tobias
Best, Karl
On Mon, Sep 12, 2022 at 7:12 PM commits@source.squeak.org wrote: Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer instead of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser
instanceVariableNames: 'packageOrganizer package packageListIndex packageList'
instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
- !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0!
- A package browser represents a hierarchical query path through an organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty).
!PackagePaneBrowser commentStamp: '<historical>' prior: 0!
A package browser represents a hierarchical query path through an organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables:
packageOrganizer <PackageOrganizer> the organizer of packages in the current environment package <Symbol> the "category header," e.g., #Magnitudes or #Collections packageListIndex <Integer> The index in the package list
packageList <OrderedCollection of String> the list of package names!
packageList <OrderedCollection of String> the list of package names
- !
Item was added:
- ----- Method: PackagePaneBrowser>>initialize (in category 'initialize-release') -----
- initialize
super initialize.
self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package list') ----- packageList
"Answer a list of the packages in the current system organization."
^ self packageOrganizer packageNames sorted!
| str stream |
str := Set new: 100.
stream := WriteStream on: (Array new: 100).
systemOrganizer categories do:
[ :categ | | cats |
cats := categ asString copyUpTo: $-.
(str includes: cats) ifFalse:
[str add: cats.
stream nextPut: cats]].
^stream contents!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer (in category 'accessing') -----
- packageOrganizer
^ packageOrganizer!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer: (in category 'initialize-release') -----
- packageOrganizer: aPackageOrganizer
packageOrganizer := aPackageOrganizer.
self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added:
- ----- Method: PackagePaneBrowser>>selectEnvironment: (in category 'accessing') -----
- selectEnvironment: anEnvironment
super selectEnvironment: anEnvironment.
self packageOrganizer: anEnvironment packages.!
On Mon, Sep 12, 2022 at 10:14 PM Thiede, Christoph < Christoph.Thiede@student.hpi.uni-potsdam.de> wrote:
Hi Tobias, Hi Karl,
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools,
WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
Yes. EToys is interesting, though, as it reveals that PackagePaneBrowser>>#systemCategoryList still uses an insufficient substring mechanism. I will revise that in the next few days. Sorry for the inconvenience.
Etoys would be more than just extensions :-)
…which you can _currently_ only find out via the monticello browser. :(
There is "browse extensions" in the browsers' class list/package menu. :-)
Ok, that explains the most cases
Best, Karl
Best, Christoph
*Von:* Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Tobias Pape Das.Linux@gmx.de *Gesendet:* Montag, 12. September 2022 21:58:27 *An:* The general-purpose Squeak developers list *Betreff:* Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
Hi
On 12. Sep 2022, at 21:41, karl ramberg karlramberg@gmail.com wrote:
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools,
WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
…which you can _currently_ only find out via the monticello browser. :(
Best regards -Tobias
Best, Karl
On Mon, Sep 12, 2022 at 7:12 PM commits@source.squeak.org wrote: Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer instead
of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser
instanceVariableNames: 'packageOrganizer package
packageListIndex packageList'
instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
- !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0!
- A package browser represents a hierarchical query path through an
organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty).
- !PackagePaneBrowser commentStamp: '<historical>' prior: 0!
- A package browser represents a hierarchical query path through an
organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables:
packageOrganizer <PackageOrganizer> the organizer of
packages in the current environment
package <Symbol> the "category header," e.g., #Magnitudes or
#Collections
packageListIndex <Integer> The index in the package list
packageList <OrderedCollection of String> the list of package
names!
packageList <OrderedCollection of String> the list of package
names
- !
Item was added:
- ----- Method: PackagePaneBrowser>>initialize (in category
'initialize-release') -----
- initialize
super initialize.
self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package
list') -----
packageList
"Answer a list of the packages in the current system
organization."
^ self packageOrganizer packageNames sorted!
| str stream |
str := Set new: 100.
stream := WriteStream on: (Array new: 100).
systemOrganizer categories do:
[ :categ | | cats |
cats := categ asString copyUpTo: $-.
(str includes: cats) ifFalse:
[str add: cats.
stream nextPut: cats]].
^stream contents!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer (in category
'accessing') -----
- packageOrganizer
^ packageOrganizer!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer: (in category
'initialize-release') -----
- packageOrganizer: aPackageOrganizer
packageOrganizer := aPackageOrganizer.
self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added:
- ----- Method: PackagePaneBrowser>>selectEnvironment: (in category
'accessing') -----
- selectEnvironment: anEnvironment
super selectEnvironment: anEnvironment.
self packageOrganizer: anEnvironment packages.!
On 12. Sep 2022, at 22:14, Thiede, Christoph Christoph.Thiede@student.hpi.uni-potsdam.de wrote:
Hi Tobias, Hi Karl,
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
Yes. EToys is interesting, though, as it reveals that PackagePaneBrowser>>#systemCategoryList still uses an insufficient substring mechanism. I will revise that in the next few days. Sorry for the inconvenience.
…which you can _currently_ only find out via the monticello browser. :(
There is "browse extensions" in the browsers' class list/package menu. :-)
Which is _different_ from the way the monticello browser displays it…
:D
<pastedImage.png>
Best, Christoph Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Tobias Pape Das.Linux@gmx.de Gesendet: Montag, 12. September 2022 21:58:27 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
Hi
On 12. Sep 2022, at 21:41, karl ramberg karlramberg@gmail.com wrote:
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
…which you can _currently_ only find out via the monticello browser. :(
Best regards -Tobias
Best, Karl
On Mon, Sep 12, 2022 at 7:12 PM commits@source.squeak.org wrote: Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer instead of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser
instanceVariableNames: 'packageOrganizer package packageListIndex packageList'
instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
- !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0!
- A package browser represents a hierarchical query path through an organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty).
!PackagePaneBrowser commentStamp: '<historical>' prior: 0!
A package browser represents a hierarchical query path through an organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables:
packageOrganizer <PackageOrganizer> the organizer of packages in the current environment package <Symbol> the "category header," e.g., #Magnitudes or #Collections packageListIndex <Integer> The index in the package list
packageList <OrderedCollection of String> the list of package names!
packageList <OrderedCollection of String> the list of package names
- !
Item was added:
- ----- Method: PackagePaneBrowser>>initialize (in category 'initialize-release') -----
- initialize
super initialize.
self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package list') ----- packageList
"Answer a list of the packages in the current system organization."
^ self packageOrganizer packageNames sorted!
| str stream |
str := Set new: 100.
stream := WriteStream on: (Array new: 100).
systemOrganizer categories do:
[ :categ | | cats |
cats := categ asString copyUpTo: $-.
(str includes: cats) ifFalse:
[str add: cats.
stream nextPut: cats]].
^stream contents!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer (in category 'accessing') -----
- packageOrganizer
^ packageOrganizer!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer: (in category 'initialize-release') -----
- packageOrganizer: aPackageOrganizer
packageOrganizer := aPackageOrganizer.
self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added:
- ----- Method: PackagePaneBrowser>>selectEnvironment: (in category 'accessing') -----
- selectEnvironment: anEnvironment
super selectEnvironment: anEnvironment.
self packageOrganizer: anEnvironment packages.!
<pastedImage.png>
Hi all,
geez, I seem to have opened a can of worms with that change to the package browser. In the past, it was just a normal browser that splits up the system category into two parts. Now, I have -- yet inconsistently -- switched it to use the actual package artifacts. However, these package artifacts do not match the system categories-classes structure completely:
* A package may have system categories that do not have the package name as their prefixes. E.g., for package MyPackage, valid system categories include not only MyPackage-Core, but also MyPackage, MyPackageTests, and OurPackage. * A package may have extension methods that belong to extension classes that are not defined by the package itself.
So the question is, how should the package browser deal with these artifacts?
* Should it rather mimic the MCSnapshotBrowser as much as possible, including a display for extension methods? * Or should it stick with the idea of a traditional browser, do not display extension methods, and * just show matching system categories? * or also show the system categories for all other classes contained in the package? * Or should we better revert the recent change and stick with a "package browser" that is actually a "hierarchical system category browser"? * Or yet something else?
If it helps, we can also add a "browse package snapshot" item to the package menu of browsers (similar to what Squit's commit dialog's #browseOriginalEdition: offers). This would bring up what I think Tobias was asking for:
(MCSnapshotBrowser forSnapshot: Morph packageInfo mcPackage snapshot) showLabelled: 'Snapshot of package'.
[cid:75ccafeb-262b-4858-abe3-bf42ac4b5b4a]
So, looking forward to your opinions and arguments!
Best, Christoph
________________________________ Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Tobias Pape Das.Linux@gmx.de Gesendet: Montag, 12. September 2022 23:24 Uhr An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
On 12. Sep 2022, at 22:14, Thiede, Christoph Christoph.Thiede@student.hpi.uni-potsdam.de wrote:
Hi Tobias, Hi Karl,
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
Yes. EToys is interesting, though, as it reveals that PackagePaneBrowser>>#systemCategoryList still uses an insufficient substring mechanism. I will revise that in the next few days. Sorry for the inconvenience.
…which you can _currently_ only find out via the monticello browser. :(
There is "browse extensions" in the browsers' class list/package menu. :-)
Which is _different_ from the way the monticello browser displays it…
:D
<pastedImage.png>
Best, Christoph Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Tobias Pape Das.Linux@gmx.de Gesendet: Montag, 12. September 2022 21:58:27 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
Hi
On 12. Sep 2022, at 21:41, karl ramberg karlramberg@gmail.com wrote:
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
…which you can _currently_ only find out via the monticello browser. :(
Best regards -Tobias
Best, Karl
On Mon, Sep 12, 2022 at 7:12 PM commits@source.squeak.org wrote: Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer instead of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser
instanceVariableNames: 'packageOrganizer package packageListIndex packageList'
instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
- !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0!
- A package browser represents a hierarchical query path through an organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty).
!PackagePaneBrowser commentStamp: '<historical>' prior: 0!
A package browser represents a hierarchical query path through an organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables:
packageOrganizer <PackageOrganizer> the organizer of packages in the current environment package <Symbol> the "category header," e.g., #Magnitudes or #Collections packageListIndex <Integer> The index in the package list
packageList <OrderedCollection of String> the list of package names!
packageList <OrderedCollection of String> the list of package names
- !
Item was added:
- ----- Method: PackagePaneBrowser>>initialize (in category 'initialize-release') -----
- initialize
super initialize.
self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package list') ----- packageList
"Answer a list of the packages in the current system organization."
^ self packageOrganizer packageNames sorted!
| str stream |
str := Set new: 100.
stream := WriteStream on: (Array new: 100).
systemOrganizer categories do:
[ :categ | | cats |
cats := categ asString copyUpTo: $-.
(str includes: cats) ifFalse:
[str add: cats.
stream nextPut: cats]].
^stream contents!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer (in category 'accessing') -----
- packageOrganizer
^ packageOrganizer!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer: (in category 'initialize-release') -----
- packageOrganizer: aPackageOrganizer
packageOrganizer := aPackageOrganizer.
self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added:
- ----- Method: PackagePaneBrowser>>selectEnvironment: (in category 'accessing') -----
- selectEnvironment: anEnvironment
super selectEnvironment: anEnvironment.
self packageOrganizer: anEnvironment packages.!
<pastedImage.png>
Hi Christoph,
Not thinking of the effort for the moment, here is my opinion: The Browser already serves its purpose. There is no need for the Package Browser to mimic it. Therefore it makes more sense for the Package Browser to correctly present the system decomposition into packages. That means, do display extensions and do display "adopted" categories like OurPackage in MyPackage. This implies that it becomes closer to the MCSnapshotBrowser in presentation.
Question 1: does PackageInfo even find classes and methods of MyPackage in the category OurPackage? If not, then this feature that the Monticello package can contain "adopted" categories could not work. Question 2: since when does MyPackageTest belong into package MyPackage unless the feature from Question 1 is used? Can you give concrete examples where this is the case (and works)?
Kind regards, Jakob
Am Di., 13. Sept. 2022 um 14:34 Uhr schrieb Thiede, Christoph < Christoph.Thiede@student.hpi.uni-potsdam.de>:
Hi all,
geez, I seem to have opened a can of worms with that change to the package browser. In the past, it was just a normal browser that splits up the system category into two parts. Now, I have -- yet inconsistently -- switched it to use the actual package artifacts. However, these package artifacts do not match the system categories-classes structure completely:
- A package may have system categories that do not have the package
name as their prefixes. E.g., for package MyPackage, valid system categories include not only MyPackage-Core, but also MyPackage, MyPackageTests, and OurPackage.
- A package may have extension methods that belong to extension
classes that are not defined by the package itself.
So the question is, how should the package browser deal with these artifacts?
- Should it rather mimic the MCSnapshotBrowser as much as possible,
including a display for extension methods?
- Or should it stick with the idea of a traditional browser, do not
display extension methods, and - just show matching system categories? - or also show the system categories for all other classes contained in the package?
- Or should we better revert the recent change and stick with a
"package browser" that is actually a "hierarchical system category browser"?
- Or yet something else?
If it helps, we can also add a "browse package snapshot" item to the package menu of browsers (similar to what Squit's commit dialog's # browseOriginalEdition: offers). This would bring up what I think Tobias was asking for:
(MCSnapshotBrowser forSnapshot: Morph packageInfo mcPackage snapshot) showLabelled: 'Snapshot of package'.
So, looking forward to your opinions and arguments!
Best, Christoph
*Von:* Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Tobias Pape Das.Linux@gmx.de *Gesendet:* Montag, 12. September 2022 23:24 Uhr *An:* The general-purpose Squeak developers list *Betreff:* Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
On 12. Sep 2022, at 22:14, Thiede, Christoph <
Christoph.Thiede@student.hpi.uni-potsdam.de> wrote:
Hi Tobias, Hi Karl,
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools,
WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
Yes. EToys is interesting, though, as it reveals that
PackagePaneBrowser>>#systemCategoryList still uses an insufficient substring mechanism. I will revise that in the next few days. Sorry for the inconvenience.
…which you can _currently_ only find out via the monticello browser. :(
There is "browse extensions" in the browsers' class list/package menu.
:-)
Which is _different_ from the way the monticello browser displays it…
:D
<pastedImage.png>
Best, Christoph Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im
Auftrag von Tobias Pape Das.Linux@gmx.de
Gesendet: Montag, 12. September 2022 21:58:27 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
Hi
On 12. Sep 2022, at 21:41, karl ramberg karlramberg@gmail.com wrote:
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools,
WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
…which you can _currently_ only find out via the monticello browser. :(
Best regards -Tobias
Best, Karl
On Mon, Sep 12, 2022 at 7:12 PM commits@source.squeak.org wrote: Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer
instead of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser
instanceVariableNames: 'packageOrganizer package
packageListIndex packageList'
instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
- !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0!
- A package browser represents a hierarchical query path through an
organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty).
- !PackagePaneBrowser commentStamp: '<historical>' prior: 0!
- A package browser represents a hierarchical query path through an
organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables:
packageOrganizer <PackageOrganizer> the organizer of
packages in the current environment
package <Symbol> the "category header," e.g., #Magnitudes or
#Collections
packageListIndex <Integer> The index in the package list
packageList <OrderedCollection of String> the list of package
names!
packageList <OrderedCollection of String> the list of package
names
- !
Item was added:
- ----- Method: PackagePaneBrowser>>initialize (in category
'initialize-release') -----
- initialize
super initialize.
self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package
list') -----
packageList
"Answer a list of the packages in the current system
organization."
^ self packageOrganizer packageNames sorted!
| str stream |
str := Set new: 100.
stream := WriteStream on: (Array new: 100).
systemOrganizer categories do:
[ :categ | | cats |
cats := categ asString copyUpTo: $-.
(str includes: cats) ifFalse:
[str add: cats.
stream nextPut: cats]].
^stream contents!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer (in category
'accessing') -----
- packageOrganizer
^ packageOrganizer!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer: (in category
'initialize-release') -----
- packageOrganizer: aPackageOrganizer
packageOrganizer := aPackageOrganizer.
self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added:
- ----- Method: PackagePaneBrowser>>selectEnvironment: (in category
'accessing') -----
- selectEnvironment: anEnvironment
super selectEnvironment: anEnvironment.
self packageOrganizer: anEnvironment packages.!
<pastedImage.png>
Hi Jakob,
thank you for questioning my statements from my previous post!
Question 1: does PackageInfo even find classes and methods of MyPackage in the category OurPackage? If not, then this feature that the Monticello package can contain "adopted" categories could not work.
Question 2: since when does MyPackageTest belong into package MyPackage unless the feature from Question 1 is used? Can you give concrete examples where this is the case (and works)?
No, it doesn't. I was wrong. See PackageInfo>>#category:matches:. The system category needs to start with the package name, but case-insensitively, followed by a dash. So for package MyPackage, valid system categories include only MyPackage-Core but NOT MyPackage, MyPackageTests, and OurPackage.
This changes everything (well, not everything, but it simplifies the task of the PackagePaneBrowser). Please see Tools-ct.1177 (trunk) for the next revision of the PackagePaneBrowser. Looking forward to your feedback! :-)
Best, Christoph
________________________________ Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Jakob Reschke jakres+squeak@gmail.com Gesendet: Mittwoch, 14. September 2022 08:51:22 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
Hi Christoph,
Not thinking of the effort for the moment, here is my opinion: The Browser already serves its purpose. There is no need for the Package Browser to mimic it. Therefore it makes more sense for the Package Browser to correctly present the system decomposition into packages. That means, do display extensions and do display "adopted" categories like OurPackage in MyPackage. This implies that it becomes closer to the MCSnapshotBrowser in presentation.
Question 1: does PackageInfo even find classes and methods of MyPackage in the category OurPackage? If not, then this feature that the Monticello package can contain "adopted" categories could not work. Question 2: since when does MyPackageTest belong into package MyPackage unless the feature from Question 1 is used? Can you give concrete examples where this is the case (and works)?
Kind regards, Jakob
Am Di., 13. Sept. 2022 um 14:34 Uhr schrieb Thiede, Christoph <Christoph.Thiede@student.hpi.uni-potsdam.demailto:Christoph.Thiede@student.hpi.uni-potsdam.de>:
Hi all,
geez, I seem to have opened a can of worms with that change to the package browser. In the past, it was just a normal browser that splits up the system category into two parts. Now, I have -- yet inconsistently -- switched it to use the actual package artifacts. However, these package artifacts do not match the system categories-classes structure completely:
* A package may have system categories that do not have the package name as their prefixes. E.g., for package MyPackage, valid system categories include not only MyPackage-Core, but also MyPackage, MyPackageTests, and OurPackage. * A package may have extension methods that belong to extension classes that are not defined by the package itself.
So the question is, how should the package browser deal with these artifacts?
* Should it rather mimic the MCSnapshotBrowser as much as possible, including a display for extension methods? * Or should it stick with the idea of a traditional browser, do not display extension methods, and * just show matching system categories? * or also show the system categories for all other classes contained in the package? * Or should we better revert the recent change and stick with a "package browser" that is actually a "hierarchical system category browser"? * Or yet something else?
If it helps, we can also add a "browse package snapshot" item to the package menu of browsers (similar to what Squit's commit dialog's #browseOriginalEdition: offers). This would bring up what I think Tobias was asking for:
(MCSnapshotBrowser forSnapshot: Morph packageInfo mcPackage snapshot) showLabelled: 'Snapshot of package'.
[cid:1833aba0a15f456b1e51]
So, looking forward to your opinions and arguments!
Best, Christoph
________________________________ Von: Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.orgmailto:squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Tobias Pape <Das.Linux@gmx.demailto:Das.Linux@gmx.de> Gesendet: Montag, 12. September 2022 23:24 Uhr An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
On 12. Sep 2022, at 22:14, Thiede, Christoph <Christoph.Thiede@student.hpi.uni-potsdam.demailto:Christoph.Thiede@student.hpi.uni-potsdam.de> wrote:
Hi Tobias, Hi Karl,
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
Yes. EToys is interesting, though, as it reveals that PackagePaneBrowser>>#systemCategoryList still uses an insufficient substring mechanism. I will revise that in the next few days. Sorry for the inconvenience.
…which you can _currently_ only find out via the monticello browser. :(
There is "browse extensions" in the browsers' class list/package menu. :-)
Which is _different_ from the way the monticello browser displays it…
:D
<pastedImage.png>
Best, Christoph Von: Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.orgmailto:squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Tobias Pape <Das.Linux@gmx.demailto:Das.Linux@gmx.de> Gesendet: Montag, 12. September 2022 21:58:27 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Trunk: Tools-ct.1173.mcz
Hi
On 12. Sep 2022, at 21:41, karl ramberg <karlramberg@gmail.commailto:karlramberg@gmail.com> wrote:
I noticed a few packages are empty: Etoys, MonticelloForTraits, MonticelloMocks, ST80Tools, SUnitsTools, WebClient-HTTP, XML-Explorer
Yeah, these only carry extension methods…
…which you can _currently_ only find out via the monticello browser. :(
Best regards -Tobias
Best, Karl
On Mon, Sep 12, 2022 at 7:12 PM <commits@source.squeak.orgmailto:commits@source.squeak.org> wrote: Christoph Thiede uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-ct.1173.mcz
==================== Summary ====================
Name: Tools-ct.1173 Author: ct Time: 8 September 2022, 3:05:12.665836 pm UUID: f0fe2b64-b27c-6d4b-9670-d920d0580baf Ancestors: Tools-ct.1171
Fixes package pane browser to actually use the package organizer instead of parsing the system category list. Resolves https://github.com/squeak-smalltalk/squeak-object-memory/issues/28.
=============== Diff against Tools-ct.1171 ===============
Item was changed: Browser subclass: #PackagePaneBrowser
instanceVariableNames: 'packageOrganizer package packageListIndex packageList'
instanceVariableNames: 'package packageListIndex packageList' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'!
- !PackagePaneBrowser commentStamp: 'ct 9/8/2022 15:05' prior: 0!
- A package browser represents a hierarchical query path through an organization of class and method information. It nests classes into a two-level hierarchy that consists of the package (e.g., Kernel, FFI-Kernel) and the system category (e.g., Exception, Exceptions-Kernel; Support, empty).
!PackagePaneBrowser commentStamp: '<historical>' prior: 0!
A package browser represents a hierarchical query path through an organization of class and method information. It parses class categories into a two-level hierarchy on the first '-' character, giving "packages" (e.g., Magnitude, Collections, Graphics, etc.), and "categories" (e.g., Magnitude-General and Magnitude-Number).
Instance Variables:
packageOrganizer <PackageOrganizer> the organizer of packages in the current environment package <Symbol> the "category header," e.g., #Magnitudes or #Collections packageListIndex <Integer> The index in the package list
packageList <OrderedCollection of String> the list of package names!
packageList <OrderedCollection of String> the list of package names
- !
Item was added:
- ----- Method: PackagePaneBrowser>>initialize (in category 'initialize-release') -----
- initialize
super initialize.
self packageOrganizer: self environment packageOrganizer.!
Item was changed: ----- Method: PackagePaneBrowser>>packageList (in category 'package list') ----- packageList
"Answer a list of the packages in the current system organization."
^ self packageOrganizer packageNames sorted!
| str stream |
str := Set new: 100.
stream := WriteStream on: (Array new: 100).
systemOrganizer categories do:
[ :categ | | cats |
cats := categ asString copyUpTo: $-.
(str includes: cats) ifFalse:
[str add: cats.
stream nextPut: cats]].
^stream contents!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer (in category 'accessing') -----
- packageOrganizer
^ packageOrganizer!
Item was added:
- ----- Method: PackagePaneBrowser>>packageOrganizer: (in category 'initialize-release') -----
- packageOrganizer: aPackageOrganizer
packageOrganizer := aPackageOrganizer.
self systemOrganizer: self systemOrganizer. "reset selections"!
Item was added:
- ----- Method: PackagePaneBrowser>>selectEnvironment: (in category 'accessing') -----
- selectEnvironment: anEnvironment
super selectEnvironment: anEnvironment.
self packageOrganizer: anEnvironment packages.!
<pastedImage.png>
squeak-dev@lists.squeakfoundation.org