Marcel Taeumel uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-mt.1219.mcz
==================== Summary ====================
Name: Tools-mt.1219 Author: mt Time: 5 June 2023, 11:21:12.203422 am UUID: 5b8b6246-fc9b-8f4e-b048-a8bc93db5f1f Ancestors: Tools-ct.1218, Tools-ct.1214, Tools-ct.1215, Tools-ct.1217
Merge, merge, merge.
Tools-ct.1214: Proposal: Sort classes in ClassListBrowser, analogously to SystemNavigation>>#allMethodsSelect:.
Tools-ct.1215: Proposal: Double-click a class or trait in hierarchy tree browser to switch the central class.
Tools-ct.1217: Fixes change logging for methods that are recompiled from a browser without its existing category being selected. Previously, this kept the organization in the image intact but logged a {nil} category to the change set and to the changes file.
=============== Diff against Tools-ct.1218 ===============
Item was changed: ----- Method: Browser>>defineMessageFrom:notifying: (in category 'message functions') ----- defineMessageFrom: aString notifying: aController "Compile the expressions in aString. Notify aController if a syntax error occurs. Install the compiled method in the selected class classified under the currently selected message category name. Answer the selector obtained if compilation succeeds, nil otherwise." | currentSelector selector category oldMessageList selectedClassOrMetaClass | currentSelector := self selectedMessageName. oldMessageList := self messageList. selectedClassOrMetaClass := self selectedClassOrMetaClass. contents := nil. selector := (selectedClassOrMetaClass newParser parseSelector: aString). (self metaClassIndicated and: [(selectedClassOrMetaClass includesSelector: selector) not and: [Metaclass isScarySelector: selector]]) ifTrue: ["A first-time definition overlaps the protocol of Metaclasses" (self confirm: ((selector , ' is used in the existing class system. Overriding it could cause serious problems. Is this really what you want to do?') asText makeBoldFrom: 1 to: selector size)) ifFalse: [^nil]]. category := currentSelector + ifNil: [ self selectedMessageCategoryName ifNil: [ selectedClassOrMetaClass whichCategoryIncludesSelector: selector ] ] - ifNil: [ self selectedMessageCategoryName ] ifNotNil: [ (selectedClassOrMetaClass >> selectedMessageName) methodReference ifNotNil: [ : ref | ref category ]]. selector := selectedClassOrMetaClass compile: aString classified: category notifying: aController. selector ifNil: [^ nil]. contents := aString copy.
self changed: #messageCategoryList. "Because the 'as yet unclassified' might just appear." self changed: #messageList. "Because we have code-dependent list formatting by now such as #isDeprecated." selector ~~ currentSelector ifTrue: [category = ClassOrganizer nullCategory ifTrue: [self changed: #classSelectionChanged. self changed: #classList. self messageCategoryListIndex: 1]. self setClassOrganizer. "In case organization not cached" (oldMessageList includes: selector) ifFalse: [self changed: #messageList]. self messageListIndex: (self messageList indexOf: selector)]. ^ selector!
Item was changed: ----- Method: ClassListBrowser class>>browseClassesSatisfying:title: (in category 'instance creation') ----- browseClassesSatisfying: classBlock title: aTitle "Put up a ClassListBrowser showing all classes that satisfy the classBlock."
self newOnClassesNamed: (self systemNavigation allClasses select: [:c | (classBlock value: c) == true] + thenCollect: [:c | c name]) sorted - thenCollect: [:c | c name]) label: aTitle!
Item was changed: ----- Method: TreeBrowser>>buildClassListWith: (in category 'toolbuilder') ----- buildClassListWith: builder
| tree | tree := builder pluggableTreeSpec new. tree model: self; roots: #classRoots; label: #classLabel:; getChildren: #classChildren:; hasChildren: #classHasChildren:; autoExpand: #classTreeExpanded; help: #classHelpAt:; getSelectedPath: #classPath; getSelected: #classChild; setSelected: #classChild:; + doubleClick: #doubleClickClassChild:; icon: #classIcon:; menu: #classListMenu:shifted:; keyPress: #classListKey:from:; filterMode: #visible; "not #all bc. class-tree is too deep, which makes filtering slow" searchMode: #depthFirst. SystemBrowser browseWithDragNDrop ifTrue: [ tree dragItem: #dragFromClassTree:; dragType: #dragTypeForClassTreeAt:]. ^ tree!
Item was added: + ----- Method: TreeBrowser>>doubleClickClassChild: (in category 'class tree - support') ----- + doubleClickClassChild: aClassNotMeta + + self isHierarchy ifFalse: [^ false]. + self hasClassSelected ifFalse: [^ false]. + self initHierarchyFor: self selectedClassOrMetaClass. + ^ true!
packages@lists.squeakfoundation.org