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]]] + ! |
Free forum by Nabble | Edit this page |