The Trunk: Tools-topa.564.mcz

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

The Trunk: Tools-topa.564.mcz

commits-2
Tobias Pape uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-topa.564.mcz

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

Name: Tools-topa.564
Author: topa
Time: 27 March 2015, 1:24:02.733 am
UUID: 8c4d15ea-663a-4c4e-b3c3-a31f6ac20214
Ancestors: Tools-topa.563

Amend to: Fix menu entry sort to actually match (intended) description

=============== Diff against Tools-topa.563 ===============

Item was changed:
  ----- Method: Browser>>classListMenuHook:shifted: (in category 'pluggable menus - hooks') -----
  classListMenuHook: aMenu shifted: aBoolean
  <classListMenu>
+ <menuPriority: 400>
  ^ self menuHook: aMenu named: #classListMenu shifted: aBoolean.
  !

Item was changed:
  ----- Method: Browser>>messageCategoryMenuHook:shifted: (in category 'pluggable menus - hooks') -----
  messageCategoryMenuHook: aMenu shifted: aBoolean
  <messageCategoryMenu>
+ <menuPriority: 400>
  ^ self menuHook: aMenu named: #messageCategoryMenu shifted: aBoolean.
  !

Item was changed:
  ----- Method: Browser>>messageListMenuHook:shifted: (in category 'pluggable menus - hooks') -----
  messageListMenuHook: aMenu shifted: aBoolean
  <messageListMenu>
+ <menuPriority: 400>
  ^ self menuHook: aMenu named: #messageListMenu shifted: aBoolean.
  !

Item was changed:
  ----- Method: Browser>>systemCategoryMenuHook:shifted: (in category 'pluggable menus - hooks') -----
  systemCategoryMenuHook: aMenu shifted: aBoolean
  <systemCategoryMenu>
+ <menuPriority: 400>
  ^ self menuHook: aMenu named: #systemCategoryMenu shifted: aBoolean.
  !

Item was changed:
  ----- Method: StringHolder>>buildMenu:withBuilders:shifted: (in category '*Tools-pluggable menus') -----
  buildMenu: aMenu withBuilders: builders shifted: aBoolean
  " We let every builder modify the menu.
  The builder should indicate whether to abort by returning nil."
  | menu |
  menu := aMenu.
  builders do: [:builder |
+ menu := self perform: builder method selector withEnoughArguments: { menu . aBoolean }.
- menu := self perform: builder method selector withEnoughArguments: { aMenu . aBoolean }.
  menu ifNil: [^ aMenu]].
  ^ menu
  !

Item was changed:
  ----- Method: StringHolder>>codePaneMenuHook:shifted: (in category '*Tools-pluggable menus - hooks') -----
  codePaneMenuHook: aMenu shifted: aBoolean
  <codePaneMenu>
+ <menuPriority: 400>
  ^ self menuHook: aMenu named: #codePaneMenu shifted: aBoolean.
  !

Item was changed:
  ----- Method: StringHolder>>menu:for:shifted: (in category '*Tools-pluggable menus') -----
  menu: aMenu for: aMenuSymbolOrCollection shifted: aBoolean
 
  | builders |
+ builders := self menuBuildersFor: aMenuSymbolOrCollection in: self class shifted: aBoolean.
+ builders := self sortMenuBuilders: builders.
- builders := self menuBuildersFor: aMenuSymbolOrCollection in: self class.
- builders := aBoolean
- ifTrue:  [builders reject: [:builder | builder arguments = #(false)]]
- ifFalse: [builders reject: [:builder | builder arguments = #(true)]].
-
  ^ self buildMenu: aMenu withBuilders: builders shifted: aBoolean
  !

Item was removed:
- ----- Method: StringHolder>>menuBuildersFor:in: (in category '*Tools-pluggable menus') -----
- menuBuildersFor: someMenus in: aClass
- "Find all builders and sort them by
- 1. Priority (default 500)
- 2. selector name
- 3. inheritance
- "
- ^ (self menuPragmasFor: someMenus in: aClass) sorted: [:a :b |
- |ma mb pa pb|
- ma := a method.
- mb := b method.
- pa := self methodMenuPriority: ma.
- pb := self methodMenuPriority: mb.
- pa <= pb or: [
- pa = pb and: [
- ma selector <= mb selector and: [
- mb methodClass inheritsFrom: ma methodClass]]]]
- !

Item was added:
+ ----- Method: StringHolder>>menuBuildersFor:in:shifted: (in category '*Tools-pluggable menus') -----
+ menuBuildersFor: someMenus in: aClass shifted: aBoolean
+ "Find all builders but reject the ones not matching the shift state "
+ | pragmas |
+ pragmas := (self menuPragmasFor: someMenus in: aClass) .
+ ^ aBoolean
+ ifTrue:  [pragmas reject: [:builder | builder arguments = #(false)]]
+ ifFalse: [pragmas reject: [:builder | builder arguments = #(true)]].
+ !

Item was added:
+ ----- Method: StringHolder>>sortMenuBuilders: (in category '*Tools-pluggable menus') -----
+ sortMenuBuilders: builders
+ " Sort them by
+ 1. Priority (default 500)
+ 2. selector name
+ "
+ ^  builders sorted: [:a :b |
+ | ma mb pa pb |
+ ma := a method.
+ mb := b method.
+ pa := self methodMenuPriority: ma.
+ pb := self methodMenuPriority: mb.
+ pa < pb or: [pa = pb and: [ma selector <= mb selector]]]
+ !