The Trunk: Morphic-mt.1767.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Morphic-mt.1767.mcz

commits-2
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1767.mcz

==================== Summary ====================

Name: Morphic-mt.1767
Author: mt
Time: 30 April 2021, 10:11:09.230936 am
UUID: ebeb7f55-0ca6-a04c-8b5c-87008f09c697
Ancestors: Morphic-mt.1766

Now that I recently discovered the various ways to browse changes ... make the (rather new) changes menu in the docking bar feel more complete.

Note that I have no real clue on the actual uses of browsing single change sets or sets of changed methods. Maybe you can help me with some experience reports so that we might remove one or the other menu item again.

=============== Diff against Morphic-mt.1766 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangeSet (in category 'submenu - changes') -----
+ browseChangeSet
+
+ ChangeSetBrowser openOnCurrent.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangedMethods (in category 'submenu - changes') -----
+ browseChangedMethods
+
+ ChangedMessageSet openFor: ChangeSet current.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangesDual (in category 'submenu - changes') -----
+ browseChangesDual
+
+ DualChangeSorter open.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listChangesOn: (in category 'submenu - changes') -----
  listChangesOn: menu
 
  | latestMethodChanges latestClassChanges|
  latestMethodChanges := (Array streamContents: [:s |
  ChangeSet current changedMethodsDo: [:method :changeType :dateAndTime :category |
  s nextPut: { dateAndTime. method. changeType. category }]])
  sorted: [:a :b | a first >= b first].
 
  1 to: (10 min: latestMethodChanges size) do: [:index | | spec method |
  spec := latestMethodChanges at: index.
  method := spec second.
  menu addItem: [:item |
  item
  contents: ('{1} {2} \{{3}\} \{{4}\}' format: {method methodClass. method selector. spec fourth. method methodClass category}) ;
  target: ToolSet;
  balloonText: spec third asString;
  icon: ((#(remove addedThenRemoved) includes: spec third) ifTrue: [MenuIcons smallDeleteIcon] ifFalse: [
  spec third = #add ifTrue: [MenuIcons smallNewIcon] ifFalse: [MenuIcons blankIcon]]);
  selector: (method isInstalled ifTrue: [#browseMethod:] ifFalse: [#browseMethodVersion:]);
  arguments: {method}]].
 
  latestClassChanges := (Array streamContents: [:s |
  ChangeSet current changedClassesDo: [:class :changeTypes :dateAndTime :category |
  "We are not interested in classes whose method's did only change."
  changeTypes ifNotEmpty: [s nextPut: { dateAndTime. class. changeTypes. category }]]])
  sorted: [:a :b | a first >= b first].
 
  latestClassChanges ifNotEmpty: [menu addLine].
  1 to: (10 min: latestClassChanges size) do: [:index | | spec class |
  spec := latestClassChanges at: index.
  class := spec second.
  menu addItem: [:item |
  item
  contents: ('{1} \{{2}\}' format: {class name. spec fourth }) ;
  target: ToolSet;
  balloonText: (spec third sorted joinSeparatedBy: Character space);
  icon: ((spec third includesAnyOf: #(remove addedThenRemoved))
  ifTrue: [MenuIcons smallDeleteIcon]
  ifFalse: [
  (spec third includes: #add)
  ifTrue: [MenuIcons smallNewIcon]
  ifFalse: [MenuIcons blankIcon]]);
  selector: ((spec third includes: #remove) ifTrue: [#inspect:] ifFalse: [#browseClass:]);
  arguments: {class}]].
+
+ menu defaultTarget: self.
+ menu addTranslatedList: #(
+ -
+ ('Browse current change set' browseChangeSet)
+ ('Browse changed methods' browseChangedMethods)
+ -
+ ('Simple Change Sorter' browseChanges)
+ ('Dual Change Sorter' browseChangesDual)).
+
+
+ !
-
- menu addLine; addItem: [:item |
- item
- contents: 'Browse current change set...' translated;
- target: self;
- selector: #browseChanges].!

Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances..'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances.'!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Morphic-mt.1767.mcz

Christoph Thiede

Hi Marcel,


thanks again. Here are some -- new and recycled :-) -- ideas:


  • IMO the ChangeSetBrowser does not really add value here. It is only a subset of a regular SimpleChangeSorter, isn't it?
  • I noticed multiple lags when opening the new menu because the change list is compiled dynamically. Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)
  • Despite the new options, I use the change sorter options most frequently. To make them easier to find (and to guarantee their visibility, considering very large changesets ...), I would still prefer to find the tool section at the beginning but not the end of the menu.

What do you think? :-)


Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Freitag, 30. April 2021 10:11 Uhr
An: [hidden email]; [hidden email]
Betreff: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1767.mcz

==================== Summary ====================

Name: Morphic-mt.1767
Author: mt
Time: 30 April 2021, 10:11:09.230936 am
UUID: ebeb7f55-0ca6-a04c-8b5c-87008f09c697
Ancestors: Morphic-mt.1766

Now that I recently discovered the various ways to browse changes ... make the (rather new) changes menu in the docking bar feel more complete.

Note that I have no real clue on the actual uses of browsing single change sets or sets of changed methods. Maybe you can help me with some experience reports so that we might remove one or the other menu item again.

=============== Diff against Morphic-mt.1766 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangeSet (in category 'submenu - changes') -----
+ browseChangeSet
+
+        ChangeSetBrowser openOnCurrent.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangedMethods (in category 'submenu - changes') -----
+ browseChangedMethods
+
+        ChangedMessageSet openFor: ChangeSet current.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangesDual (in category 'submenu - changes') -----
+ browseChangesDual
+
+        DualChangeSorter open.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listChangesOn: (in category 'submenu - changes') -----
  listChangesOn: menu
 
         | latestMethodChanges latestClassChanges|
         latestMethodChanges := (Array streamContents: [:s |
                 ChangeSet current changedMethodsDo: [:method :changeType :dateAndTime :category |
                         s nextPut: { dateAndTime. method. changeType. category }]])
                         sorted: [:a :b | a first >= b first].
 
         1 to: (10 min: latestMethodChanges size) do: [:index | | spec method |
                 spec := latestMethodChanges at: index.
                 method := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} {2} \{{3}\} \{{4}\}' format: {method methodClass. method selector. spec fourth. method methodClass category}) ;
                                 target: ToolSet;
                                 balloonText: spec third asString;
                                 icon: ((#(remove addedThenRemoved) includes: spec third) ifTrue: [MenuIcons smallDeleteIcon] ifFalse: [
                                         spec third = #add ifTrue: [MenuIcons smallNewIcon] ifFalse: [MenuIcons blankIcon]]);
                                 selector: (method isInstalled ifTrue: [#browseMethod:] ifFalse: [#browseMethodVersion:]);
                                 arguments: {method}]].
                                
         latestClassChanges := (Array streamContents: [:s |
                 ChangeSet current changedClassesDo: [:class :changeTypes :dateAndTime :category |
                         "We are not interested in classes whose method's did only change."
                         changeTypes ifNotEmpty: [s nextPut: { dateAndTime. class. changeTypes. category }]]])
                         sorted: [:a :b | a first >= b first].
 
         latestClassChanges ifNotEmpty: [menu addLine].
         1 to: (10 min: latestClassChanges size) do: [:index | | spec class |
                 spec := latestClassChanges at: index.
                 class := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} \{{2}\}' format: {class name. spec fourth }) ;
                                 target: ToolSet;
                                 balloonText: (spec third sorted joinSeparatedBy: Character space);
                                 icon: ((spec third includesAnyOf: #(remove addedThenRemoved))
                                         ifTrue: [MenuIcons smallDeleteIcon]
                                         ifFalse: [
                                                 (spec third includes: #add)
                                                         ifTrue: [MenuIcons smallNewIcon]
                                                         ifFalse: [MenuIcons blankIcon]]);
                                 selector: ((spec third includes: #remove) ifTrue: [#inspect:] ifFalse: [#browseClass:]);
                                 arguments: {class}]].
+       
+        menu defaultTarget: self.
+        menu addTranslatedList: #(
+                -
+                ('Browse current change set'            browseChangeSet)
+                ('Browse changed methods'               browseChangedMethods)
+                -
+                ('Simple Change Sorter'                         browseChanges)
+                ('Dual Change Sorter'                                   browseChangesDual)).
+
+
+ !
-                               
-        menu addLine; addItem: [:item |
-                item
-                        contents: 'Browse current change set...' translated;
-                        target: self;
-                        selector: #browseChanges].!

Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances..'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances.'!




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Morphic-mt.1767.mcz

marcel.taeumel
Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"? Maybe that's not a good. :-)

How big was the changeset that produced those lags?

Best,
Marcel

Am 01.05.2021 19:31:52 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


thanks again. Here are some -- new and recycled :-) -- ideas:


  • IMO the ChangeSetBrowser does not really add value here. It is only a subset of a regular SimpleChangeSorter, isn't it?
  • I noticed multiple lags when opening the new menu because the change list is compiled dynamically. Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)
  • Despite the new options, I use the change sorter options most frequently. To make them easier to find (and to guarantee their visibility, considering very large changesets ...), I would still prefer to find the tool section at the beginning but not the end of the menu.

What do you think? :-)


Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Freitag, 30. April 2021 10:11 Uhr
An: [hidden email]; [hidden email]
Betreff: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1767.mcz

==================== Summary ====================

Name: Morphic-mt.1767
Author: mt
Time: 30 April 2021, 10:11:09.230936 am
UUID: ebeb7f55-0ca6-a04c-8b5c-87008f09c697
Ancestors: Morphic-mt.1766

Now that I recently discovered the various ways to browse changes ... make the (rather new) changes menu in the docking bar feel more complete.

Note that I have no real clue on the actual uses of browsing single change sets or sets of changed methods. Maybe you can help me with some experience reports so that we might remove one or the other menu item again.

=============== Diff against Morphic-mt.1766 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangeSet (in category 'submenu - changes') -----
+ browseChangeSet
+
+        ChangeSetBrowser openOnCurrent.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangedMethods (in category 'submenu - changes') -----
+ browseChangedMethods
+
+        ChangedMessageSet openFor: ChangeSet current.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangesDual (in category 'submenu - changes') -----
+ browseChangesDual
+
+        DualChangeSorter open.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listChangesOn: (in category 'submenu - changes') -----
  listChangesOn: menu
 
         | latestMethodChanges latestClassChanges|
         latestMethodChanges := (Array streamContents: [:s |
                 ChangeSet current changedMethodsDo: [:method :changeType :dateAndTime :category |
                         s nextPut: { dateAndTime. method. changeType. category }]])
                         sorted: [:a :b | a first >= b first].
 
         1 to: (10 min: latestMethodChanges size) do: [:index | | spec method |
                 spec := latestMethodChanges at: index.
                 method := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} {2} \{{3}\} \{{4}\}' format: {method methodClass. method selector. spec fourth. method methodClass category}) ;
                                 target: ToolSet;
                                 balloonText: spec third asString;
                                 icon: ((#(remove addedThenRemoved) includes: spec third) ifTrue: [MenuIcons smallDeleteIcon] ifFalse: [
                                         spec third = #add ifTrue: [MenuIcons smallNewIcon] ifFalse: [MenuIcons blankIcon]]);
                                 selector: (method isInstalled ifTrue: [#browseMethod:] ifFalse: [#browseMethodVersion:]);
                                 arguments: {method}]].
                                
         latestClassChanges := (Array streamContents: [:s |
                 ChangeSet current changedClassesDo: [:class :changeTypes :dateAndTime :category |
                         "We are not interested in classes whose method's did only change."
                         changeTypes ifNotEmpty: [s nextPut: { dateAndTime. class. changeTypes. category }]]])
                         sorted: [:a :b | a first >= b first].
 
         latestClassChanges ifNotEmpty: [menu addLine].
         1 to: (10 min: latestClassChanges size) do: [:index | | spec class |
                 spec := latestClassChanges at: index.
                 class := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} \{{2}\}' format: {class name. spec fourth }) ;
                                 target: ToolSet;
                                 balloonText: (spec third sorted joinSeparatedBy: Character space);
                                 icon: ((spec third includesAnyOf: #(remove addedThenRemoved))
                                         ifTrue: [MenuIcons smallDeleteIcon]
                                         ifFalse: [
                                                 (spec third includes: #add)
                                                         ifTrue: [MenuIcons smallNewIcon]
                                                         ifFalse: [MenuIcons blankIcon]]);
                                 selector: ((spec third includes: #remove) ifTrue: [#inspect:] ifFalse: [#browseClass:]);
                                 arguments: {class}]].
+       
+        menu defaultTarget: self.
+        menu addTranslatedList: #(
+                -
+                ('Browse current change set'            browseChangeSet)
+                ('Browse changed methods'               browseChangedMethods)
+                -
+                ('Simple Change Sorter'                         browseChanges)
+                ('Dual Change Sorter'                                   browseChangesDual)).
+
+
+ !
-                               
-        menu addLine; addItem: [:item |
-                item
-                        contents: 'Browse current change set...' translated;
-                        target: self;
-                        selector: #browseChanges].!

Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances..'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances.'!




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Morphic-mt.1767.mcz

Christoph Thiede

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"?


This, of course, would only work if the list could only grow at its end. But I see your point ... I often have a similar situation with the thumbnails in the project menu (around 10 - 20 projects). Lazy loading might actually save me around 60 seconds per day. :D


How big was the changeset that produced those lags?


Very small, maybe a dozen of changes.

Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 6. Mai 2021 20:26:33
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"? Maybe that's not a good. :-)

How big was the changeset that produced those lags?

Best,
Marcel

Am 01.05.2021 19:31:52 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


thanks again. Here are some -- new and recycled :-) -- ideas:


  • IMO the ChangeSetBrowser does not really add value here. It is only a subset of a regular SimpleChangeSorter, isn't it?
  • I noticed multiple lags when opening the new menu because the change list is compiled dynamically. Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)
  • Despite the new options, I use the change sorter options most frequently. To make them easier to find (and to guarantee their visibility, considering very large changesets ...), I would still prefer to find the tool section at the beginning but not the end of the menu.

What do you think? :-)


Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Freitag, 30. April 2021 10:11 Uhr
An: [hidden email]; [hidden email]
Betreff: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1767.mcz

==================== Summary ====================

Name: Morphic-mt.1767
Author: mt
Time: 30 April 2021, 10:11:09.230936 am
UUID: ebeb7f55-0ca6-a04c-8b5c-87008f09c697
Ancestors: Morphic-mt.1766

Now that I recently discovered the various ways to browse changes ... make the (rather new) changes menu in the docking bar feel more complete.

Note that I have no real clue on the actual uses of browsing single change sets or sets of changed methods. Maybe you can help me with some experience reports so that we might remove one or the other menu item again.

=============== Diff against Morphic-mt.1766 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangeSet (in category 'submenu - changes') -----
+ browseChangeSet
+
+        ChangeSetBrowser openOnCurrent.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangedMethods (in category 'submenu - changes') -----
+ browseChangedMethods
+
+        ChangedMessageSet openFor: ChangeSet current.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangesDual (in category 'submenu - changes') -----
+ browseChangesDual
+
+        DualChangeSorter open.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listChangesOn: (in category 'submenu - changes') -----
  listChangesOn: menu
 
         | latestMethodChanges latestClassChanges|
         latestMethodChanges := (Array streamContents: [:s |
                 ChangeSet current changedMethodsDo: [:method :changeType :dateAndTime :category |
                         s nextPut: { dateAndTime. method. changeType. category }]])
                         sorted: [:a :b | a first >= b first].
 
         1 to: (10 min: latestMethodChanges size) do: [:index | | spec method |
                 spec := latestMethodChanges at: index.
                 method := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} {2} \{{3}\} \{{4}\}' format: {method methodClass. method selector. spec fourth. method methodClass category}) ;
                                 target: ToolSet;
                                 balloonText: spec third asString;
                                 icon: ((#(remove addedThenRemoved) includes: spec third) ifTrue: [MenuIcons smallDeleteIcon] ifFalse: [
                                         spec third = #add ifTrue: [MenuIcons smallNewIcon] ifFalse: [MenuIcons blankIcon]]);
                                 selector: (method isInstalled ifTrue: [#browseMethod:] ifFalse: [#browseMethodVersion:]);
                                 arguments: {method}]].
                                
         latestClassChanges := (Array streamContents: [:s |
                 ChangeSet current changedClassesDo: [:class :changeTypes :dateAndTime :category |
                         "We are not interested in classes whose method's did only change."
                         changeTypes ifNotEmpty: [s nextPut: { dateAndTime. class. changeTypes. category }]]])
                         sorted: [:a :b | a first >= b first].
 
         latestClassChanges ifNotEmpty: [menu addLine].
         1 to: (10 min: latestClassChanges size) do: [:index | | spec class |
                 spec := latestClassChanges at: index.
                 class := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} \{{2}\}' format: {class name. spec fourth }) ;
                                 target: ToolSet;
                                 balloonText: (spec third sorted joinSeparatedBy: Character space);
                                 icon: ((spec third includesAnyOf: #(remove addedThenRemoved))
                                         ifTrue: [MenuIcons smallDeleteIcon]
                                         ifFalse: [
                                                 (spec third includes: #add)
                                                         ifTrue: [MenuIcons smallNewIcon]
                                                         ifFalse: [MenuIcons blankIcon]]);
                                 selector: ((spec third includes: #remove) ifTrue: [#inspect:] ifFalse: [#browseClass:]);
                                 arguments: {class}]].
+       
+        menu defaultTarget: self.
+        menu addTranslatedList: #(
+                -
+                ('Browse current change set'            browseChangeSet)
+                ('Browse changed methods'               browseChangedMethods)
+                -
+                ('Simple Change Sorter'                         browseChanges)
+                ('Dual Change Sorter'                                   browseChangesDual)).
+
+
+ !
-                               
-        menu addLine; addItem: [:item |
-                item
-                        contents: 'Browse current change set...' translated;
-                        target: self;
-                        selector: #browseChanges].!

Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances..'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances.'!




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Morphic-mt.1767.mcz

marcel.taeumel
A rather big change set (81 changed methods, 474 changed methods) has about 150 ms lag in that menu. An empty change set has 5 ms lag. For comparison, the Extras-Menu has 15 ms lag.

[self owner selectItem: self event: ActiveHand lastEvent.
ActiveWorld displayWorldSafely.
self deselect: ActiveHand lastEvent.
ActiveWorld displayWorldSafely] bench

Best,
Marcel

Am 06.05.2021 22:59:20 schrieb Thiede, Christoph <[hidden email]>:

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"?


This, of course, would only work if the list could only grow at its end. But I see your point ... I often have a similar situation with the thumbnails in the project menu (around 10 - 20 projects). Lazy loading might actually save me around 60 seconds per day. :D


How big was the changeset that produced those lags?


Very small, maybe a dozen of changes.

Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 6. Mai 2021 20:26:33
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"? Maybe that's not a good. :-)

How big was the changeset that produced those lags?

Best,
Marcel

Am 01.05.2021 19:31:52 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


thanks again. Here are some -- new and recycled :-) -- ideas:


  • IMO the ChangeSetBrowser does not really add value here. It is only a subset of a regular SimpleChangeSorter, isn't it?
  • I noticed multiple lags when opening the new menu because the change list is compiled dynamically. Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)
  • Despite the new options, I use the change sorter options most frequently. To make them easier to find (and to guarantee their visibility, considering very large changesets ...), I would still prefer to find the tool section at the beginning but not the end of the menu.

What do you think? :-)


Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Freitag, 30. April 2021 10:11 Uhr
An: [hidden email]; [hidden email]
Betreff: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1767.mcz

==================== Summary ====================

Name: Morphic-mt.1767
Author: mt
Time: 30 April 2021, 10:11:09.230936 am
UUID: ebeb7f55-0ca6-a04c-8b5c-87008f09c697
Ancestors: Morphic-mt.1766

Now that I recently discovered the various ways to browse changes ... make the (rather new) changes menu in the docking bar feel more complete.

Note that I have no real clue on the actual uses of browsing single change sets or sets of changed methods. Maybe you can help me with some experience reports so that we might remove one or the other menu item again.

=============== Diff against Morphic-mt.1766 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangeSet (in category 'submenu - changes') -----
+ browseChangeSet
+
+        ChangeSetBrowser openOnCurrent.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangedMethods (in category 'submenu - changes') -----
+ browseChangedMethods
+
+        ChangedMessageSet openFor: ChangeSet current.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangesDual (in category 'submenu - changes') -----
+ browseChangesDual
+
+        DualChangeSorter open.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listChangesOn: (in category 'submenu - changes') -----
  listChangesOn: menu
 
         | latestMethodChanges latestClassChanges|
         latestMethodChanges := (Array streamContents: [:s |
                 ChangeSet current changedMethodsDo: [:method :changeType :dateAndTime :category |
                         s nextPut: { dateAndTime. method. changeType. category }]])
                         sorted: [:a :b | a first >= b first].
 
         1 to: (10 min: latestMethodChanges size) do: [:index | | spec method |
                 spec := latestMethodChanges at: index.
                 method := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} {2} \{{3}\} \{{4}\}' format: {method methodClass. method selector. spec fourth. method methodClass category}) ;
                                 target: ToolSet;
                                 balloonText: spec third asString;
                                 icon: ((#(remove addedThenRemoved) includes: spec third) ifTrue: [MenuIcons smallDeleteIcon] ifFalse: [
                                         spec third = #add ifTrue: [MenuIcons smallNewIcon] ifFalse: [MenuIcons blankIcon]]);
                                 selector: (method isInstalled ifTrue: [#browseMethod:] ifFalse: [#browseMethodVersion:]);
                                 arguments: {method}]].
                                
         latestClassChanges := (Array streamContents: [:s |
                 ChangeSet current changedClassesDo: [:class :changeTypes :dateAndTime :category |
                         "We are not interested in classes whose method's did only change."
                         changeTypes ifNotEmpty: [s nextPut: { dateAndTime. class. changeTypes. category }]]])
                         sorted: [:a :b | a first >= b first].
 
         latestClassChanges ifNotEmpty: [menu addLine].
         1 to: (10 min: latestClassChanges size) do: [:index | | spec class |
                 spec := latestClassChanges at: index.
                 class := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} \{{2}\}' format: {class name. spec fourth }) ;
                                 target: ToolSet;
                                 balloonText: (spec third sorted joinSeparatedBy: Character space);
                                 icon: ((spec third includesAnyOf: #(remove addedThenRemoved))
                                         ifTrue: [MenuIcons smallDeleteIcon]
                                         ifFalse: [
                                                 (spec third includes: #add)
                                                         ifTrue: [MenuIcons smallNewIcon]
                                                         ifFalse: [MenuIcons blankIcon]]);
                                 selector: ((spec third includes: #remove) ifTrue: [#inspect:] ifFalse: [#browseClass:]);
                                 arguments: {class}]].
+       
+        menu defaultTarget: self.
+        menu addTranslatedList: #(
+                -
+                ('Browse current change set'            browseChangeSet)
+                ('Browse changed methods'               browseChangedMethods)
+                -
+                ('Simple Change Sorter'                         browseChanges)
+                ('Dual Change Sorter'                                   browseChangesDual)).
+
+
+ !
-                               
-        menu addLine; addItem: [:item |
-                item
-                        contents: 'Browse current change set...' translated;
-                        target: self;
-                        selector: #browseChanges].!

Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances..'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances.'!




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Morphic-mt.1767.mcz

Christoph Thiede

I think this depends on your machine. :-) As I have already mentioned somewhere else on the list, for unknown reasons, I often have very slow access to my changes file. When the menu is opened, my image spends about 1000 ms in StandardFileStream >> #open:forWrite:, invoked by CompiledMethod >> #timeStamp as part of TheWorldMainDockingBar >> #listChangesOn:. It would be great if there was a way to keep the image and menus responsive even on systems with not-so-fast access to the file system. :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 7. Mai 2021 19:36:04
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
A rather big change set (81 changed methods, 474 changed methods) has about 150 ms lag in that menu. An empty change set has 5 ms lag. For comparison, the Extras-Menu has 15 ms lag.

[self owner selectItem: self event: ActiveHand lastEvent.
ActiveWorld displayWorldSafely.
self deselect: ActiveHand lastEvent.
ActiveWorld displayWorldSafely] bench

Best,
Marcel

Am 06.05.2021 22:59:20 schrieb Thiede, Christoph <[hidden email]>:

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"?


This, of course, would only work if the list could only grow at its end. But I see your point ... I often have a similar situation with the thumbnails in the project menu (around 10 - 20 projects). Lazy loading might actually save me around 60 seconds per day. :D


How big was the changeset that produced those lags?


Very small, maybe a dozen of changes.

Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 6. Mai 2021 20:26:33
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"? Maybe that's not a good. :-)

How big was the changeset that produced those lags?

Best,
Marcel

Am 01.05.2021 19:31:52 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


thanks again. Here are some -- new and recycled :-) -- ideas:


  • IMO the ChangeSetBrowser does not really add value here. It is only a subset of a regular SimpleChangeSorter, isn't it?
  • I noticed multiple lags when opening the new menu because the change list is compiled dynamically. Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)
  • Despite the new options, I use the change sorter options most frequently. To make them easier to find (and to guarantee their visibility, considering very large changesets ...), I would still prefer to find the tool section at the beginning but not the end of the menu.

What do you think? :-)


Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Freitag, 30. April 2021 10:11 Uhr
An: [hidden email]; [hidden email]
Betreff: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1767.mcz

==================== Summary ====================

Name: Morphic-mt.1767
Author: mt
Time: 30 April 2021, 10:11:09.230936 am
UUID: ebeb7f55-0ca6-a04c-8b5c-87008f09c697
Ancestors: Morphic-mt.1766

Now that I recently discovered the various ways to browse changes ... make the (rather new) changes menu in the docking bar feel more complete.

Note that I have no real clue on the actual uses of browsing single change sets or sets of changed methods. Maybe you can help me with some experience reports so that we might remove one or the other menu item again.

=============== Diff against Morphic-mt.1766 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangeSet (in category 'submenu - changes') -----
+ browseChangeSet
+
+        ChangeSetBrowser openOnCurrent.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangedMethods (in category 'submenu - changes') -----
+ browseChangedMethods
+
+        ChangedMessageSet openFor: ChangeSet current.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangesDual (in category 'submenu - changes') -----
+ browseChangesDual
+
+        DualChangeSorter open.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listChangesOn: (in category 'submenu - changes') -----
  listChangesOn: menu
 
         | latestMethodChanges latestClassChanges|
         latestMethodChanges := (Array streamContents: [:s |
                 ChangeSet current changedMethodsDo: [:method :changeType :dateAndTime :category |
                         s nextPut: { dateAndTime. method. changeType. category }]])
                         sorted: [:a :b | a first >= b first].
 
         1 to: (10 min: latestMethodChanges size) do: [:index | | spec method |
                 spec := latestMethodChanges at: index.
                 method := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} {2} \{{3}\} \{{4}\}' format: {method methodClass. method selector. spec fourth. method methodClass category}) ;
                                 target: ToolSet;
                                 balloonText: spec third asString;
                                 icon: ((#(remove addedThenRemoved) includes: spec third) ifTrue: [MenuIcons smallDeleteIcon] ifFalse: [
                                         spec third = #add ifTrue: [MenuIcons smallNewIcon] ifFalse: [MenuIcons blankIcon]]);
                                 selector: (method isInstalled ifTrue: [#browseMethod:] ifFalse: [#browseMethodVersion:]);
                                 arguments: {method}]].
                                
         latestClassChanges := (Array streamContents: [:s |
                 ChangeSet current changedClassesDo: [:class :changeTypes :dateAndTime :category |
                         "We are not interested in classes whose method's did only change."
                         changeTypes ifNotEmpty: [s nextPut: { dateAndTime. class. changeTypes. category }]]])
                         sorted: [:a :b | a first >= b first].
 
         latestClassChanges ifNotEmpty: [menu addLine].
         1 to: (10 min: latestClassChanges size) do: [:index | | spec class |
                 spec := latestClassChanges at: index.
                 class := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} \{{2}\}' format: {class name. spec fourth }) ;
                                 target: ToolSet;
                                 balloonText: (spec third sorted joinSeparatedBy: Character space);
                                 icon: ((spec third includesAnyOf: #(remove addedThenRemoved))
                                         ifTrue: [MenuIcons smallDeleteIcon]
                                         ifFalse: [
                                                 (spec third includes: #add)
                                                         ifTrue: [MenuIcons smallNewIcon]
                                                         ifFalse: [MenuIcons blankIcon]]);
                                 selector: ((spec third includes: #remove) ifTrue: [#inspect:] ifFalse: [#browseClass:]);
                                 arguments: {class}]].
+       
+        menu defaultTarget: self.
+        menu addTranslatedList: #(
+                -
+                ('Browse current change set'            browseChangeSet)
+                ('Browse changed methods'               browseChangedMethods)
+                -
+                ('Simple Change Sorter'                         browseChanges)
+                ('Dual Change Sorter'                                   browseChangesDual)).
+
+
+ !
-                               
-        menu addLine; addItem: [:item |
-                item
-                        contents: 'Browse current change set...' translated;
-                        target: self;
-                        selector: #browseChanges].!

Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances..'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances.'!




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Morphic-mt.1767.mcz

marcel.taeumel
I think this depends on your machine. :-) 

Exactly. I wanted to motivate you to share some statistics from your environment so that I can better understand the issue here. ;-)

Best,
Marcel

Am 17.05.2021 12:16:58 schrieb Thiede, Christoph <[hidden email]>:

I think this depends on your machine. :-) As I have already mentioned somewhere else on the list, for unknown reasons, I often have very slow access to my changes file. When the menu is opened, my image spends about 1000 ms in StandardFileStream >> #open:forWrite:, invoked by CompiledMethod >> #timeStamp as part of TheWorldMainDockingBar >> #listChangesOn:. It would be great if there was a way to keep the image and menus responsive even on systems with not-so-fast access to the file system. :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 7. Mai 2021 19:36:04
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
A rather big change set (81 changed methods, 474 changed methods) has about 150 ms lag in that menu. An empty change set has 5 ms lag. For comparison, the Extras-Menu has 15 ms lag.

[self owner selectItem: self event: ActiveHand lastEvent.
ActiveWorld displayWorldSafely.
self deselect: ActiveHand lastEvent.
ActiveWorld displayWorldSafely] bench

Best,
Marcel

Am 06.05.2021 22:59:20 schrieb Thiede, Christoph <[hidden email]>:

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"?


This, of course, would only work if the list could only grow at its end. But I see your point ... I often have a similar situation with the thumbnails in the project menu (around 10 - 20 projects). Lazy loading might actually save me around 60 seconds per day. :D


How big was the changeset that produced those lags?


Very small, maybe a dozen of changes.

Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 6. Mai 2021 20:26:33
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"? Maybe that's not a good. :-)

How big was the changeset that produced those lags?

Best,
Marcel

Am 01.05.2021 19:31:52 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


thanks again. Here are some -- new and recycled :-) -- ideas:


  • IMO the ChangeSetBrowser does not really add value here. It is only a subset of a regular SimpleChangeSorter, isn't it?
  • I noticed multiple lags when opening the new menu because the change list is compiled dynamically. Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)
  • Despite the new options, I use the change sorter options most frequently. To make them easier to find (and to guarantee their visibility, considering very large changesets ...), I would still prefer to find the tool section at the beginning but not the end of the menu.

What do you think? :-)


Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Freitag, 30. April 2021 10:11 Uhr
An: [hidden email]; [hidden email]
Betreff: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1767.mcz

==================== Summary ====================

Name: Morphic-mt.1767
Author: mt
Time: 30 April 2021, 10:11:09.230936 am
UUID: ebeb7f55-0ca6-a04c-8b5c-87008f09c697
Ancestors: Morphic-mt.1766

Now that I recently discovered the various ways to browse changes ... make the (rather new) changes menu in the docking bar feel more complete.

Note that I have no real clue on the actual uses of browsing single change sets or sets of changed methods. Maybe you can help me with some experience reports so that we might remove one or the other menu item again.

=============== Diff against Morphic-mt.1766 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangeSet (in category 'submenu - changes') -----
+ browseChangeSet
+
+        ChangeSetBrowser openOnCurrent.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangedMethods (in category 'submenu - changes') -----
+ browseChangedMethods
+
+        ChangedMessageSet openFor: ChangeSet current.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangesDual (in category 'submenu - changes') -----
+ browseChangesDual
+
+        DualChangeSorter open.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listChangesOn: (in category 'submenu - changes') -----
  listChangesOn: menu
 
         | latestMethodChanges latestClassChanges|
         latestMethodChanges := (Array streamContents: [:s |
                 ChangeSet current changedMethodsDo: [:method :changeType :dateAndTime :category |
                         s nextPut: { dateAndTime. method. changeType. category }]])
                         sorted: [:a :b | a first >= b first].
 
         1 to: (10 min: latestMethodChanges size) do: [:index | | spec method |
                 spec := latestMethodChanges at: index.
                 method := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} {2} \{{3}\} \{{4}\}' format: {method methodClass. method selector. spec fourth. method methodClass category}) ;
                                 target: ToolSet;
                                 balloonText: spec third asString;
                                 icon: ((#(remove addedThenRemoved) includes: spec third) ifTrue: [MenuIcons smallDeleteIcon] ifFalse: [
                                         spec third = #add ifTrue: [MenuIcons smallNewIcon] ifFalse: [MenuIcons blankIcon]]);
                                 selector: (method isInstalled ifTrue: [#browseMethod:] ifFalse: [#browseMethodVersion:]);
                                 arguments: {method}]].
                                
         latestClassChanges := (Array streamContents: [:s |
                 ChangeSet current changedClassesDo: [:class :changeTypes :dateAndTime :category |
                         "We are not interested in classes whose method's did only change."
                         changeTypes ifNotEmpty: [s nextPut: { dateAndTime. class. changeTypes. category }]]])
                         sorted: [:a :b | a first >= b first].
 
         latestClassChanges ifNotEmpty: [menu addLine].
         1 to: (10 min: latestClassChanges size) do: [:index | | spec class |
                 spec := latestClassChanges at: index.
                 class := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} \{{2}\}' format: {class name. spec fourth }) ;
                                 target: ToolSet;
                                 balloonText: (spec third sorted joinSeparatedBy: Character space);
                                 icon: ((spec third includesAnyOf: #(remove addedThenRemoved))
                                         ifTrue: [MenuIcons smallDeleteIcon]
                                         ifFalse: [
                                                 (spec third includes: #add)
                                                         ifTrue: [MenuIcons smallNewIcon]
                                                         ifFalse: [MenuIcons blankIcon]]);
                                 selector: ((spec third includes: #remove) ifTrue: [#inspect:] ifFalse: [#browseClass:]);
                                 arguments: {class}]].
+       
+        menu defaultTarget: self.
+        menu addTranslatedList: #(
+                -
+                ('Browse current change set'            browseChangeSet)
+                ('Browse changed methods'               browseChangedMethods)
+                -
+                ('Simple Change Sorter'                         browseChanges)
+                ('Dual Change Sorter'                                   browseChangesDual)).
+
+
+ !
-                               
-        menu addLine; addItem: [:item |
-                item
-                        contents: 'Browse current change set...' translated;
-                        target: self;
-                        selector: #browseChanges].!

Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances..'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances.'!




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Morphic-mt.1767.mcz

Christoph Thiede

No problem. I have attached the entire output of the InteractiveProfilingTool. :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Montag, 17. Mai 2021 12:19:39
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
I think this depends on your machine. :-) 

Exactly. I wanted to motivate you to share some statistics from your environment so that I can better understand the issue here. ;-)

Best,
Marcel

Am 17.05.2021 12:16:58 schrieb Thiede, Christoph <[hidden email]>:

I think this depends on your machine. :-) As I have already mentioned somewhere else on the list, for unknown reasons, I often have very slow access to my changes file. When the menu is opened, my image spends about 1000 ms in StandardFileStream >> #open:forWrite:, invoked by CompiledMethod >> #timeStamp as part of TheWorldMainDockingBar >> #listChangesOn:. It would be great if there was a way to keep the image and menus responsive even on systems with not-so-fast access to the file system. :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 7. Mai 2021 19:36:04
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
A rather big change set (81 changed methods, 474 changed methods) has about 150 ms lag in that menu. An empty change set has 5 ms lag. For comparison, the Extras-Menu has 15 ms lag.

[self owner selectItem: self event: ActiveHand lastEvent.
ActiveWorld displayWorldSafely.
self deselect: ActiveHand lastEvent.
ActiveWorld displayWorldSafely] bench

Best,
Marcel

Am 06.05.2021 22:59:20 schrieb Thiede, Christoph <[hidden email]>:

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"?


This, of course, would only work if the list could only grow at its end. But I see your point ... I often have a similar situation with the thumbnails in the project menu (around 10 - 20 projects). Lazy loading might actually save me around 60 seconds per day. :D


How big was the changeset that produced those lags?


Very small, maybe a dozen of changes.

Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 6. Mai 2021 20:26:33
An: squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)

So that the user can watch the list grow and repeatedly miss the click on the intended item because it moved away "just in time"? Maybe that's not a good. :-)

How big was the changeset that produced those lags?

Best,
Marcel

Am 01.05.2021 19:31:52 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


thanks again. Here are some -- new and recycled :-) -- ideas:


  • IMO the ChangeSetBrowser does not really add value here. It is only a subset of a regular SimpleChangeSorter, isn't it?
  • I noticed multiple lags when opening the new menu because the change list is compiled dynamically. Could we add lazy menu loading (i.e., adding some items to the menu *after* it has been opened) to our future wish-list? :-)
  • Despite the new options, I use the change sorter options most frequently. To make them easier to find (and to guarantee their visibility, considering very large changesets ...), I would still prefer to find the tool section at the beginning but not the end of the menu.

What do you think? :-)


Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Freitag, 30. April 2021 10:11 Uhr
An: [hidden email]; [hidden email]
Betreff: [squeak-dev] The Trunk: Morphic-mt.1767.mcz
 
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1767.mcz

==================== Summary ====================

Name: Morphic-mt.1767
Author: mt
Time: 30 April 2021, 10:11:09.230936 am
UUID: ebeb7f55-0ca6-a04c-8b5c-87008f09c697
Ancestors: Morphic-mt.1766

Now that I recently discovered the various ways to browse changes ... make the (rather new) changes menu in the docking bar feel more complete.

Note that I have no real clue on the actual uses of browsing single change sets or sets of changed methods. Maybe you can help me with some experience reports so that we might remove one or the other menu item again.

=============== Diff against Morphic-mt.1766 ===============

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangeSet (in category 'submenu - changes') -----
+ browseChangeSet
+
+        ChangeSetBrowser openOnCurrent.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangedMethods (in category 'submenu - changes') -----
+ browseChangedMethods
+
+        ChangedMessageSet openFor: ChangeSet current.!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browseChangesDual (in category 'submenu - changes') -----
+ browseChangesDual
+
+        DualChangeSorter open.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listChangesOn: (in category 'submenu - changes') -----
  listChangesOn: menu
 
         | latestMethodChanges latestClassChanges|
         latestMethodChanges := (Array streamContents: [:s |
                 ChangeSet current changedMethodsDo: [:method :changeType :dateAndTime :category |
                         s nextPut: { dateAndTime. method. changeType. category }]])
                         sorted: [:a :b | a first >= b first].
 
         1 to: (10 min: latestMethodChanges size) do: [:index | | spec method |
                 spec := latestMethodChanges at: index.
                 method := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} {2} \{{3}\} \{{4}\}' format: {method methodClass. method selector. spec fourth. method methodClass category}) ;
                                 target: ToolSet;
                                 balloonText: spec third asString;
                                 icon: ((#(remove addedThenRemoved) includes: spec third) ifTrue: [MenuIcons smallDeleteIcon] ifFalse: [
                                         spec third = #add ifTrue: [MenuIcons smallNewIcon] ifFalse: [MenuIcons blankIcon]]);
                                 selector: (method isInstalled ifTrue: [#browseMethod:] ifFalse: [#browseMethodVersion:]);
                                 arguments: {method}]].
                                
         latestClassChanges := (Array streamContents: [:s |
                 ChangeSet current changedClassesDo: [:class :changeTypes :dateAndTime :category |
                         "We are not interested in classes whose method's did only change."
                         changeTypes ifNotEmpty: [s nextPut: { dateAndTime. class. changeTypes. category }]]])
                         sorted: [:a :b | a first >= b first].
 
         latestClassChanges ifNotEmpty: [menu addLine].
         1 to: (10 min: latestClassChanges size) do: [:index | | spec class |
                 spec := latestClassChanges at: index.
                 class := spec second.
                 menu addItem: [:item |
                         item
                                 contents: ('{1} \{{2}\}' format: {class name. spec fourth }) ;
                                 target: ToolSet;
                                 balloonText: (spec third sorted joinSeparatedBy: Character space);
                                 icon: ((spec third includesAnyOf: #(remove addedThenRemoved))
                                         ifTrue: [MenuIcons smallDeleteIcon]
                                         ifFalse: [
                                                 (spec third includes: #add)
                                                         ifTrue: [MenuIcons smallNewIcon]
                                                         ifFalse: [MenuIcons blankIcon]]);
                                 selector: ((spec third includes: #remove) ifTrue: [#inspect:] ifFalse: [#browseClass:]);
                                 arguments: {class}]].
+       
+        menu defaultTarget: self.
+        menu addTranslatedList: #(
+                -
+                ('Browse current change set'            browseChangeSet)
+                ('Browse changed methods'               browseChangedMethods)
+                -
+                ('Simple Change Sorter'                         browseChanges)
+                ('Dual Change Sorter'                                   browseChangesDual)).
+
+
+ !
-                               
-        menu addLine; addItem: [:item |
-                item
-                        contents: 'Browse current change set...' translated;
-                        target: self;
-                        selector: #browseChanges].!

Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances..'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances.'!





profile-changelist-menu.txt (33K) Download Attachment
Carpe Squeak!