handling Inbox contributions was: [squeak-dev] The Inbox: Morphic-kb.428.mcz

Chris Muller asqueaker at gmail.com
Mon Apr 26 17:14:01 UTC 2010


When someone commits to trunk, the e-mail gives the name of the
contriibutor.  Would that also be useful for inbox contributions?

On Sun, Apr 25, 2010 at 10:11 AM,  <commits at source.squeak.org> wrote:
> A new version of Morphic was added to project The Inbox:
> http://source.squeak.org/inbox/Morphic-kb.428.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-kb.428
> Author: kb
> Time: 25 April 2010, 5:10:40.092 pm
> UUID: a1cf4a4c-027b-4789-919e-dbdca41d10be
> Ancestors: Morphic-ar.427
>
> First stab at refactoring TheWorldMainDockingBar to allow external packages to insert new menus, or menu items. We use two pragmas to fill the docking bar.
>
> A method in TheWorldMainDockingBar marked with pragma: <createDockingBarMenuWithPriority: NN> will get a chance to build on the DockingBarMorph, which it gets as its sole argument.
>
> A method in TheWorldMainDockingBar marked with pragma: <fillDockingBarMenu: #MENUNAME priority: NN> will get a chance to build on a menu, which it gets as its sole argument, when someone calls TheWorldMainDockingBar >> fillMenu: menu with: #MENUNAME
>
> Priority controls the order in which these methods are called.
>
> Currently there are three menus filled with this technique: #tools, #extras, #help
>
> So if you want to add a new menu item to the #extras menu from your package, you'll need to create an extension method on TheWorldMainDockingBar containing the pragma <fillDockingBarMenu: #extras priority: 50>, and evaluate [TheWorldMainDockingBar updateInstances]
>
> You can find examples in TheWorldMainDockingBar.
>
>
> =============== Diff against Morphic-ar.427 ===============
>
> Item was changed:
> + ----- Method: TheWorldMainDockingBar>>toolsMenuOn: (in category 'submenu - tools') -----
> - ----- Method: TheWorldMainDockingBar>>toolsMenuOn: (in category 'construction') -----
>  toolsMenuOn: aDockingBar
> +
> +       <createDockingBarMenuWithPriority: 30>
> -
>        aDockingBar addItem: [ :item |
>                item
>                        contents: 'Tools' translated;
>                        addSubMenu: [ :menu |
> +                               self fillMenu: menu with: #tools ] ]!
> -                               self
> -                                       browserMenuItemOn: menu;
> -                                       workspaceMenuItemOn: menu;
> -                                       transcriptMenuItemOn: menu;
> -                                       testRunnerMenuItemOn: menu.
> -                               menu addLine.
> -                               self
> -                                       monticelloBrowserMenuItemOn: menu;
> -                                       monticelloConfigurationsMenuItemOn: menu;
> -                                       simpleChangeSorterMenuItemOn: menu;
> -                                       dualChangeSorterMenuItemOn: menu.
> -                               menu addLine.
> -                               self
> -                                       processBrowserMenuItemOn: menu;
> -                                       preferenceBrowserMenuItemOn: menu;
> -                                       fileListMenuItemOn: menu.
> -                       ] ]!
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>displayMenuItemsOn: (in category 'submenu - extras') -----
> + displayMenuItemsOn: menu
> +
> +       <fillDockingBarMenu: #extras priority: 20>
> +       menu addItem: [ :item |
> +               item
> +                       contents: 'Window Colors' translated;
> +                       help: 'Changes the window color scheme' translated;
> +                       addSubMenu: [ :submenu | self windowColorsOn: submenu ] ].
> +       menu addItem: [ :item |
> +               item
> +                       contents: 'Restore Display (r)' translated;
> +                       help: 'Redraws the entire display' translated;
> +                       target: World;
> +                       selector: #restoreMorphicDisplay ].
> +       menu addItem: [ :item |
> +               item
> +                       contents: 'Rebuild Menus' translated;
> +                       help: 'Rebuilds the menu bar' translated;
> +                       target: self class;
> +                       selector: #updateInstances ].!
>
> Item was changed:
> + ----- Method: TheWorldMainDockingBar>>windowColorsOn: (in category 'submenu - extras') -----
> - ----- Method: TheWorldMainDockingBar>>windowColorsOn: (in category 'construction') -----
>  windowColorsOn: menu
>
>        menu addItem:[:item|
>                item
>                        contents: 'Uniform Windows' translated;
>                        help: 'Use uniform window colors' translated;
>                        target: Preferences;
>                        selector: #installUniformWindowColors].
>
>        menu addItem:[:item|
>                item
>                        contents: 'Colorful Windows' translated;
>                        help: 'Use bright window colors' translated;
>                        target: Preferences;
>                        selector: #installBrightWindowColors].
>  !
>
> Item was changed:
> + ----- Method: TheWorldMainDockingBar>>windowsMenuOn: (in category 'submenu - windows') -----
> - ----- Method: TheWorldMainDockingBar>>windowsMenuOn: (in category 'construction') -----
>  windowsMenuOn: aDockingBar
> +
> +       <createDockingBarMenuWithPriority: 50>
> -
>        aDockingBar addItem: [ :item |
>                item
>                        contents: 'Windows' translated;
>                        subMenuUpdater: self
>                        selector: #listWindowsOn: ]
>  !
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>changesMenuItemsOn: (in category 'submenu - extras') -----
> + changesMenuItemsOn: menu
> +
> +       <fillDockingBarMenu: #extras priority: 10>
> +       menu addItem: [ :item |
> +               item
> +                       contents: 'Recover Changes' translated;
> +                       help: 'Recover changes after a crash' translated;
> +                       icon: MenuIcons smallHelpIcon;
> +                       target: ChangeList;
> +                       selector: #browseRecentLog ].
> +       menu addItem: [ :item |
> +               item
> +                       contents: 'Set Author Initials' translated;
> +                       help: 'Sets the author initials' translated;
> +                       target: Utilities;
> +                       selector: #setAuthorInitials ].!
>
> Item was changed:
> + ----- Method: TheWorldMainDockingBar>>extrasMenuOn: (in category 'submenu - extras') -----
> - ----- Method: TheWorldMainDockingBar>>extrasMenuOn: (in category 'construction') -----
>  extrasMenuOn: aDockingBar
>
> +       <createDockingBarMenuWithPriority: 40>
> +       aDockingBar addItem: [ :it |
> -       aDockingBar addItem: [ :it|
>                it      contents: 'Extras' translated;
> +                       addSubMenu: [ :menu |
> +                               self fillMenu: menu with: #extras ] ]!
> -                       addSubMenu: [:menu|
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Recover Changes' translated;
> -                                               help: 'Recover changes after a crash' translated;
> -                                               icon: MenuIcons smallHelpIcon;
> -                                               target: ChangeList;
> -                                               selector: #browseRecentLog].
> -                               menu addLine.
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Window Colors' translated;
> -                                               help: 'Changes the window color scheme' translated;
> -                                               addSubMenu:[:submenu| self windowColorsOn: submenu]].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Set Author Initials' translated;
> -                                               help: 'Sets the author initials' translated;
> -                                               target: Utilities;
> -                                               selector: #setAuthorInitials].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Restore Display (r)' translated;
> -                                               help: 'Redraws the entire display' translated;
> -                                               target: World;
> -                                               selector: #restoreMorphicDisplay].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Rebuild Menus' translated;
> -                                               help: 'Rebuilds the menu bar' translated;
> -                                               target: TheWorldMainDockingBar;
> -                                               selector: #updateInstances].
> -                               menu addLine.
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Start Profiler' translated;
> -                                               help: 'Starts the profiler' translated;
> -                                               target: self;
> -                                               selector: #startMessageTally].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Collect Garbage' translated;
> -                                               help: 'Run the garbage collector and report space usage' translated;
> -                                               target: Utilities;
> -                                               selector: #garbageCollectAndReport].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Purge Undo Records' translated;
> -                                               help: 'Save space by removing all the undo information remembered in all projects' translated;
> -                                               target: CommandHistory;
> -                                               selector: #resetAllHistory].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'VM statistics' translated;
> -                                               help: 'Virtual Machine information' translated;
> -                                               target: self;
> -                                               selector: #vmStatistics].
> -                               menu addLine.
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Graphical Imports' translated;
> -                                               help: 'View the global repository called ImageImports; you can easily import external graphics into ImageImports via the FileList' translated;
> -                                               target: (Imports default);
> -                                               selector: #viewImages].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Standard Graphics Library' translated;
> -                                               help: 'Lets you view and change the system''s standard library of graphics' translated;
> -                                               target: ScriptingSystem;
> -                                               selector: #inspectFormDictionary].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Annotation Setup' translated;
> -                                               help: 'Click here to get a little window that will allow you to specify which types of annotations, in which order, you wish to see in the annotation panes of browsers and other tools' translated;
> -                                               target: Preferences;
> -                                               selector: #editAnnotations].
> -                       ] ]!
>
> Item was changed:
> + ----- Method: TheWorldMainDockingBar>>projectsMenuOn: (in category 'submenu - projects') -----
> - ----- Method: TheWorldMainDockingBar>>projectsMenuOn: (in category 'construction') -----
>  projectsMenuOn: aDockingBar
> +
> +       <createDockingBarMenuWithPriority: 20>
> -
>        aDockingBar addItem: [ :item |
>                item
>                        contents: 'Projects' translated;
>                        addSubMenu: [ :menu |
>                                self
>                                        newProjectMenuItemOn: menu;
>                                        saveProjectMenuItemOn: menu;
>                                        loadProjectMenuItemOn: menu;
>                                        previousProjectMenuItemOn: menu;
>                                        jumpToProjectMenuItemOn: menu ] ]
>  !
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>developerToolMenuItemsOn: (in category 'submenu - tools') -----
> + developerToolMenuItemsOn: menu
> +
> +       <fillDockingBarMenu: #tools priority: 10>
> +       self
> +               browserMenuItemOn: menu;
> +               workspaceMenuItemOn: menu;
> +               transcriptMenuItemOn: menu;
> +               testRunnerMenuItemOn: menu!
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>graphicsMenuItemsOn: (in category 'submenu - extras') -----
> + graphicsMenuItemsOn: menu
> +
> +       <fillDockingBarMenu: #extras priority: 40>
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Graphical Imports' translated;
> +                       help: 'View the global repository called ImageImports; you can easily import external graphics into ImageImports via the FileList' translated;
> +                       target: (Imports default);
> +                       selector: #viewImages].
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Standard Graphics Library' translated;
> +                       help: 'Lets you view and change the system''s standard library of graphics' translated;
> +                       target: ScriptingSystem;
> +                       selector: #inspectFormDictionary].
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Annotation Setup' translated;
> +                       help: 'Click here to get a little window that will allow you to specify which types of annotations, in which order, you wish to see in the annotation panes of browsers and other tools' translated;
> +                       target: Preferences;
> +                       selector: #editAnnotations].!
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>helpMenuItemsOn: (in category 'submenu - help') -----
> + helpMenuItemsOn: menu
> +
> +       <fillDockingBarMenu: #help priority: 10>
> +       menu addItem: [ :item |
> +               item
> +                       contents: 'Online Resources' translated;
> +                       help: 'Online resources for Squeak' translated;
> +                       target: self;
> +                       icon: MenuIcons smallHelpIcon;
> +                       selector: #showWelcomeText:label:in:;
> +                       arguments: {
> +                               #squeakOnlineResources.
> +                               'Squeak Online Resources'.
> +                               (140 at 140 extent: 560 at 360)
> +                       }].
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Keyboard Shortcuts' translated;
> +                       help: 'Keyboard bindings used in Squeak' translated;
> +                       target: Utilities;
> +                       selector: #openCommandKeyHelp ].
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Font Size Summary' translated;
> +                       help: 'Font size summary from the old Squeak 3.10.2 help menu.' translated;
> +                       target: TextStyle;
> +                       selector: #fontSizeSummary ].
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Useful Expressions' translated;
> +                       help: 'Useful expressions from the old Squeak 3.10.2 help menu.' translated;
> +                       target: Utilities;
> +                       selector: #openStandardWorkspace ].
> +       menu addLine.
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Extending the system' translated;
> +                       help: 'Includes code snippets to evaluate for extending the system' translated;
> +                       target: self;
> +                       icon: MenuIcons smallHelpIcon;
> +                       selector: #showWelcomeText:label:in:;
> +                       arguments: {
> +                               #extendingTheSystem.
> +                               'How to extend the system'.
> +                               (140 at 140 extent: 560 at 360)
> +                       }].
> +       menu addLine.
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Welcome Workspaces' translated;
> +                       help: 'The Welcome Workspaces' translated;
> +                       addSubMenu:[:submenu| self welcomeWorkspacesOn: submenu]].!
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>vmMenuItemsOn: (in category 'submenu - extras') -----
> + vmMenuItemsOn: menu
> +
> +       <fillDockingBarMenu: #extras priority: 30>
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Start Profiler' translated;
> +                       help: 'Starts the profiler' translated;
> +                       target: self;
> +                       selector: #startMessageTally].
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Collect Garbage' translated;
> +                       help: 'Run the garbage collector and report space usage' translated;
> +                       target: Utilities;
> +                       selector: #garbageCollectAndReport].
> +       menu addItem:[:item|
> +               item
> +                       contents: 'Purge Undo Records' translated;
> +                       help: 'Save space by removing all the undo information remembered in all projects' translated;
> +                       target: CommandHistory;
> +                       selector: #resetAllHistory].
> +       menu addItem:[:item|
> +               item
> +                       contents: 'VM statistics' translated;
> +                       help: 'Virtual Machine information' translated;
> +                       target: self;
> +                       selector: #vmStatistics]!
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>fillMenu:with: (in category 'private') -----
> + fillMenu: menu with: menuName
> +
> +       | priority |
> +       priority := nil.
> +       (Pragma
> +               allNamed: #fillDockingBarMenu:priority:
> +               in: self class
> +               sortedByArgument: 2) do: [ :pragma |
> +                       pragma arguments first = menuName ifTrue: [
> +                               pragma arguments second = priority ifFalse: [ menu addLine ].
> +                               self perform: pragma selector with: menu ] ].!
>
> Item was changed:
> + ----- Method: TheWorldMainDockingBar>>squeakMenuOn: (in category 'submenu - squeak') -----
> - ----- Method: TheWorldMainDockingBar>>squeakMenuOn: (in category 'construction') -----
>  squeakMenuOn: aDockingBar
>        "Private - fill the given docking bar"
>
> +       <createDockingBarMenuWithPriority: 10>
>        aDockingBar addItem: [ :item |
>                item
>                        contents: '';
>                        icon: MenuIcons squeakLogoIcon;
>                        selectedIcon: MenuIcons squeakLogoInvertedIcon;
>                        addSubMenu: [ :menu |
>                                self
>                                        aboutMenuItemOn: menu;
>                                        updateMenuItemOn: menu.
>                                menu addLine.
>                                self
>                                        saveMenuItemOn: menu;
>                                        saveAsMenuItemOn: menu;
>                                        saveAsNewVersionMenuItemOn: menu.
>                                menu addLine.
>                                self
>                                        saveAndQuitMenuItemOn: menu;
>                                        quitMenuItemOn: menu ] ]!
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>otherToolMenuItemsOn: (in category 'submenu - tools') -----
> + otherToolMenuItemsOn: menu
> +
> +       <fillDockingBarMenu: #tools priority: 30>
> +       self
> +               processBrowserMenuItemOn: menu;
> +               preferenceBrowserMenuItemOn: menu;
> +               fileListMenuItemOn: menu.!
>
> Item was changed:
>  ----- Method: TheWorldMainDockingBar>>helpMenuOn: (in category 'submenu - help') -----
>  helpMenuOn: aDockingBar
> +
> +       <createDockingBarMenuWithPriority: 60>
> +       aDockingBar addItem: [ :item |
> +               item
> +                       contents: 'Help' translated;
> +                       addSubMenu: [ :menu |
> +                               self fillMenu: menu with: #help ] ].!
> -
> -       aDockingBar addItem: [ :it |
> -               it      contents: 'Help' translated;
> -                       addSubMenu: [ :menu |  'Todo'.
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Online Resources' translated;
> -                                               help: 'Online resources for Squeak' translated;
> -                                               target: self;
> -                                               icon: MenuIcons smallHelpIcon;
> -                                               selector: #showWelcomeText:label:in:;
> -                                               arguments: {
> -                                                       #squeakOnlineResources.
> -                                                       'Squeak Online Resources'.
> -                                                       (140 at 140 extent: 560 at 360)
> -                                               }].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Keyboard Shortcuts' translated;
> -                                               help: 'Keyboard bindings used in Squeak' translated;
> -                                               target: Utilities;
> -                                               selector: #openCommandKeyHelp ].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Font Size Summary' translated;
> -                                               help: 'Font size summary from the old Squeak 3.10.2 help menu.' translated;
> -                                               target: TextStyle;
> -                                               selector: #fontSizeSummary ].
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Useful Expressions' translated;
> -                                               help: 'Useful expressions from the old Squeak 3.10.2 help menu.' translated;
> -                                               target: Utilities;
> -                                               selector: #openStandardWorkspace ].
> -                               menu addLine.
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Extending the system' translated;
> -                                               help: 'Includes code snippets to evaluate for extending the system' translated;
> -                                               target: self;
> -                                               icon: MenuIcons smallHelpIcon;
> -                                               selector: #showWelcomeText:label:in:;
> -                                               arguments: {
> -                                                       #extendingTheSystem.
> -                                                       'How to extend the system'.
> -                                                       (140 at 140 extent: 560 at 360)
> -                                               }].
> -                               menu addLine.
> -                               menu addItem:[:item|
> -                                       item
> -                                               contents: 'Welcome Workspaces' translated;
> -                                               help: 'The Welcome Workspaces' translated;
> -                                               addSubMenu:[:submenu| self welcomeWorkspacesOn: submenu]].
> -                       ]].!
>
> Item was added:
> + ----- Method: TheWorldMainDockingBar>>changeManagementToolMenuItemsOn: (in category 'submenu - tools') -----
> + changeManagementToolMenuItemsOn: menu
> +
> +       <fillDockingBarMenu: #tools priority: 20>
> +       self
> +               monticelloBrowserMenuItemOn: menu;
> +               monticelloConfigurationsMenuItemOn: menu;
> +               simpleChangeSorterMenuItemOn: menu;
> +               dualChangeSorterMenuItemOn: menu.!
>
> Item was changed:
>  ----- Method: TheWorldMainDockingBar>>menusOn: (in category 'construction') -----
>  menusOn: aDockingBar
>
> +       (Pragma
> +               allNamed: #createDockingBarMenuWithPriority:
> +               in: self class
> +               sortedByArgument: 1) do: [ :pragma |
> +                       self perform: pragma selector with: aDockingBar ].
> -       self
> -               squeakMenuOn: aDockingBar;
> -               projectsMenuOn: aDockingBar;
> -               toolsMenuOn: aDockingBar;
> -               extrasMenuOn: aDockingBar;
> -               windowsMenuOn: aDockingBar;
> -               helpMenuOn: aDockingBar.
>        aDockingBar addSpacer.
>        self
>                searchBarOn: aDockingBar;
>                clockOn: aDockingBar!
>
>
>


More information about the Squeak-dev mailing list