コード例 #1
0
 def test_absolute_ordering(self):
     """ Does specifying absolute_position work?
     """
     schema = MenuBarSchema(
         MenuSchema(
             GroupSchema(
                 self.action1, self.action2, id='FileGroup'),
             id='File'))
     extras = [
         SchemaAddition(
             factory=lambda: self.action3,
             absolute_position='last',
             path='MenuBar/File/FileGroup'), SchemaAddition(
                 factory=lambda: self.action4,
                 absolute_position='first',
                 path='MenuBar/File/FileGroup'), SchemaAddition(
                     factory=lambda: self.action5,
                     absolute_position='first',
                     path='MenuBar/File/FileGroup')
     ]
     builder = TaskActionManagerBuilder(task=Task(
         menu_bar=schema, extra_actions=extras))
     actual = builder.create_menu_bar_manager()
     desired = MenuBarManager(
         MenuManager(
             Group(
                 self.action4,
                 self.action5,
                 self.action1,
                 self.action2,
                 self.action3,
                 id='FileGroup'),
             id='File'),
         id='MenuBar')
     self.assertActionElementsEqual(actual, desired)
コード例 #2
0
 def test_additions_menu_bar(self):
     """ Does constructing a menu with a few additions work?
     """
     schema = MenuBarSchema(
         MenuSchema(
             GroupSchema(
                 self.action1, self.action2, id='FileGroup'),
             id='File'))
     extras = [
         SchemaAddition(
             factory=lambda: self.action3,
             before='action1',
             path='MenuBar/File/FileGroup'), SchemaAddition(
                 factory=lambda: self.action4,
                 before='action1',
                 path='MenuBar/File/FileGroup'), SchemaAddition(
                     factory=lambda: self.action5,
                     path='MenuBar/File/FileGroup')
     ]
     builder = TaskActionManagerBuilder(task=Task(
         menu_bar=schema, extra_actions=extras))
     actual = builder.create_menu_bar_manager()
     desired = MenuBarManager(
         MenuManager(
             Group(
                 self.action3,
                 self.action4,
                 self.action1,
                 self.action2,
                 self.action5,
                 id='FileGroup'),
             id='File'),
         id='MenuBar')
     self.assertActionElementsEqual(actual, desired)
コード例 #3
0
    def _actions_default(self):
        """ Traits default.
        :return: list of schema's to be added to all tasks ("globally").
        """

        return [
            SchemaAddition(
                path='mymenu',
                factory=self.file_menu,
                id='file.menu.schema',
            ),
            SchemaAddition(
                path='mymenu',
                factory=self.view_menu,
                id='file.view.schema',
            ),
            SchemaAddition(
                path='mymenu',
                factory=self.help_menu,
                id='file.help.schema',
            ),
            SchemaAddition(
                path='',
                factory=self.run_tools,
                id='tools.run.schema',
            ),
        ]
コード例 #4
0
    def _extra_actions_default(self):
        """ Extra application-wide menu items

        This adds a collection of standard Tasks application menu items and
        groups to a Task's set of menus.  Whether or not they actually appear
        depends on whether the appropriate menus are provided by the Task.

        These default additions assume that the window will hold an editor pane
        so that Ctrl-N and Ctrl-W will be bound to creating/closing new editors
        rather than new task windows.
        """
        from pyface.action.api import (
            AboutAction,
            CloseActiveWindowAction,
            ExitAction,
        )
        from pyface.tasks.action.api import (
            CreateTaskWindowAction,
            SchemaAddition,
            SMenu,
            TaskWindowToggleGroup,
        )

        return [
            SchemaAddition(
                factory=CreateTaskWindowAction.factory(
                    application=self, accelerator="Ctrl+Shift+N"),
                path="MenuBar/File/new_group",
            ),
            SchemaAddition(
                id="close_action",
                factory=CloseActiveWindowAction.factory(
                    application=self, accelerator="Ctrl+Shift+W"),
                path="MenuBar/File/close_group",
            ),
            SchemaAddition(
                id="exit_action",
                factory=ExitAction.factory(application=self),
                path="MenuBar/File/close_group",
                absolute_position="last",
            ),
            SchemaAddition(
                # id='Window',
                factory=lambda: SMenu(
                    TaskWindowToggleGroup(application=self),
                    id="Window",
                    name="&Window",
                ),
                path="MenuBar",
                after="View",
                before="Help",
            ),
            SchemaAddition(
                id="about_action",
                factory=AboutAction.factory(application=self),
                path="MenuBar/Help",
                absolute_position="first",
            ),
        ]
コード例 #5
0
    def _extra_actions_default(self):
        addition_list = [
            SchemaAddition(
                id='krom.new_study_group',
                path='MenuBar/File',
                absolute_position='first',
                after='RecentProjectGroup',
                factory=self.create_new_project_group,
            ),
            SchemaAddition(
                id='krom.recent_proj_group',
                path='MenuBar/File',
                before='SaveGroup',
                factory=self.create_recent_project_group,
            ),
            SchemaAddition(
                id='krom.close_group',
                path='MenuBar/File',
                absolute_position='last',
                factory=self.create_close_group,
            ),
            SchemaAddition(
                id='krom.undo_group',
                path='MenuBar/Edit',
                absolute_position='first',
                factory=self.create_undo_group,
            ),
            SchemaAddition(
                id='krom.copy_group',
                path='MenuBar/Edit',
                after='UndoGroup',
                factory=self.create_copy_group,
            ),
            SchemaAddition(
                id='krom.preferences_group',
                path='MenuBar/Edit',
                after='CopyGroup',
                factory=self.create_preference_group,
            ),
            SchemaAddition(
                id='krom.help_group',
                path='MenuBar/Help',
                after='DocsGroup',
                factory=self.create_bug_report_group,
            ),
            SchemaAddition(
                id='krom.help_docs_menu',
                path='MenuBar/Help',
                absolute_position='first',
                factory=self.create_documentation_group,
            ),
            SchemaAddition(
                id='krom.help_update',
                path='MenuBar/Help',
                absolute_position='last',
                factory=self.create_update_group,
            ),
        ]

        return addition_list
コード例 #6
0
 def test_absolute_and_before_after(self):
     """ Does specifying absolute_position along with before, after work?
     """
     schema = MenuBarSchema(
         MenuSchema(
             GroupSchema(self.action1, self.action2, id="FileGroup"),
             id="File",
         ))
     extras = [
         SchemaAddition(
             factory=lambda: self.action3,
             id="action3",
             after="action2",
             path="MenuBar/File/FileGroup",
         ),
         SchemaAddition(
             factory=lambda: self.action4,
             after="action3",
             path="MenuBar/File/FileGroup",
         ),
         SchemaAddition(
             factory=lambda: self.action5,
             id="action5",
             absolute_position="last",
             path="MenuBar/File/FileGroup",
         ),
         SchemaAddition(
             factory=lambda: self.action6,
             absolute_position="last",
             before="action5",
             path="MenuBar/File/FileGroup",
         ),
     ]
     builder = TaskActionManagerBuilder(
         task=Task(menu_bar=schema, extra_actions=extras))
     actual = builder.create_menu_bar_manager()
     desired = MenuBarManager(
         MenuManager(
             Group(
                 self.action1,
                 self.action2,
                 self.action3,
                 self.action4,
                 self.action6,
                 self.action5,
                 id="FileGroup",
             ),
             id="File",
         ),
         id="MenuBar",
     )
     self.assertActionElementsEqual(actual, desired)
コード例 #7
0
ファイル: plugin.py プロジェクト: jomason/omnivore
    def _osx_actions_default(self):
        from omnivore.framework.actions import NewFileGroup

        submenu = lambda: SMenu(id='NewFileSubmenu', name="New")
        actions = [
            SchemaAddition(factory=submenu,
                           path='MenuBar/File',
                           before="OpenGroup"),
            SchemaAddition(
                factory=NewFileGroup,
                path='MenuBar/File/NewFileSubmenu',
            ),
        ]

        return actions
コード例 #8
0
    def _osx_actions_default(self):
        submenu = lambda: SMenu(id='OpenRecentSubmenu', name="Open Recent")
        actions = [
            SchemaAddition(
                factory=submenu,
                path='MenuBar/File',
                after="OpenGroup",
                before="OpenGroupEnd",
            ),
            SchemaAddition(id='OpenRecent',
                           factory=OpenRecentGroup,
                           path='MenuBar/File/OpenRecentSubmenu'),
        ]

        return actions
コード例 #9
0
    def test_merging_items_with_same_id_but_different_class(self):
        """ Schemas with the same path but different types (menus, groups)
        are not merged together.

        Having a group and a menu with the same path is of course bad practice,
        but we need a predictable outcome.

        """

        # Initial menu.
        schema = MenuBarSchema(
            MenuSchema(GroupSchema(self.action1, id='FileGroup'),
                       id='FileSchema'))

        # Contributed menus.
        extra_group = GroupSchema(self.action2, id='FileSchema')

        extra_actions = [
            SchemaAddition(path='MenuBar',
                           factory=(lambda: extra_group),
                           id='DummyActionsSMenu'),
        ]

        # Build the final menu.
        builder = TaskActionManagerBuilder(
            task=Task(menu_bar=schema, extra_actions=extra_actions))
        actual = builder.create_menu_bar_manager()

        desired = MenuBarManager(MenuManager(Group(self.action1,
                                                   id='FileGroup'),
                                             id='FileSchema'),
                                 Group(self.action2, id='FileSchema'),
                                 id='MenuBar')
        self.assertActionElementsEqual(actual, desired)
コード例 #10
0
    def test_extra_menu(self):
        """ Test contributing a whole new menu to the menu bar. """

        # Initial menu.
        schema = MenuBarSchema(
            MenuSchema(GroupSchema(self.action1, id='FileGroup'),
                       id='FileMenu'))

        # Contributed menu.
        extra_menu = MenuSchema(
            GroupSchema(self.action2, id='BarGroup'),
            id='DummyActionsMenu',
        )

        extra_actions = [
            SchemaAddition(path='MenuBar',
                           factory=lambda: extra_menu,
                           id='DummyActionsSMenu'),
        ]

        # Build the final menu.
        builder = TaskActionManagerBuilder(
            task=Task(menu_bar=schema, extra_actions=extra_actions))
        actual = builder.create_menu_bar_manager()

        desired = MenuBarManager(MenuManager(Group(self.action1,
                                                   id='FileGroup'),
                                             id='FileMenu'),
                                 MenuManager(Group(self.action2,
                                                   id='BarGroup'),
                                             id='DummyActionsMenu'),
                                 id='MenuBar')

        self.assertActionElementsEqual(actual, desired)
コード例 #11
0
    def test_merging_redundant_items_that_are_not_schemas(self):
        """ Items that are not schemas cannot be merged, but we should
        not crash, either. """

        # Initial menu.
        schema = MenuBarSchema(
            # This menu is not a schema...
            MenuManager(Group(self.action1, id='FileGroup'), id='FileMenu'))

        # Contributed menus.
        extra_menu = MenuSchema(
            GroupSchema(self.action2, id='FileGroup'),
            id='FileMenu',
        )

        extra_actions = [
            SchemaAddition(path='MenuBar',
                           factory=lambda: extra_menu,
                           id='DummyActionsSMenu'),
        ]

        # Build the final menu.
        builder = TaskActionManagerBuilder(
            task=Task(menu_bar=schema, extra_actions=extra_actions))
        actual = builder.create_menu_bar_manager()

        desired = MenuBarManager(MenuManager(Group(self.action1,
                                                   id='FileGroup'),
                                             id='FileMenu'),
                                 MenuManager(Group(self.action2,
                                                   id='FileGroup'),
                                             id='FileMenu'),
                                 id='MenuBar')
        self.assertActionElementsEqual(actual, desired)
コード例 #12
0
    def _my_task_extensions_default(self):
        from .action.exit_action import ExitAction
        from .action.preferences_action import PreferencesGroup
        from .task_extension import TaskExtension
        from pyface.tasks.action.api import DockPaneToggleGroup, SchemaAddition

        actions = [
            SchemaAddition(id='Exit', factory=ExitAction, path='MenuBar/File'),
            SchemaAddition(id='Preferences',
                           factory=PreferencesGroup,
                           path='MenuBar/Edit'),
            SchemaAddition(id='DockPaneToggleGroup',
                           factory=DockPaneToggleGroup,
                           path='MenuBar/View')
        ]

        return [TaskExtension(actions=actions)]
コード例 #13
0
ファイル: exception_handler.py プロジェクト: jomason/omnivore
    def _actions_default(self):
        # Using the same actions as the minimal menu
        actions = [
            SchemaAddition(id='RaiseException',
                           factory=RaiseExceptionAction,
                           path='MenuBar/Help/Debug'),
        ]

        return [TaskExtension(actions=actions)]
コード例 #14
0
    def _my_task_extensions_default(self):
        from .action.exit_action import ExitAction
        from .action.preferences_action import PreferencesGroup
        from .task_extension import TaskExtension
        from pyface.tasks.action.api import DockPaneToggleGroup, SchemaAddition

        actions = [
            SchemaAddition(id="Exit", factory=ExitAction, path="MenuBar/File"),
            SchemaAddition(id="Preferences",
                           factory=PreferencesGroup,
                           path="MenuBar/Edit"),
            SchemaAddition(
                id="DockPaneToggleGroup",
                factory=DockPaneToggleGroup,
                path="MenuBar/View",
            ),
        ]

        return [TaskExtension(actions=actions)]
コード例 #15
0
    def _contributed_task_extensions_default(self):

        from .actions import StartQtConsoleAction

        def menu_factory():
            kernel = self.application.get_service(IPYTHON_KERNEL_PROTOCOL)
            return SGroup(StartQtConsoleAction(kernel=kernel), id='ipython')

        return [
            TaskExtension(actions=[
                SchemaAddition(
                    path='MenuBar/View',
                    factory=menu_factory,
                    id='IPythonSchema', ),
            ])
        ]
コード例 #16
0
    def test_merging_redundant_items(self):
        """ Menus and groups with matching path are merged together. """

        # Initial menu.
        schema = MenuBarSchema(
            MenuSchema(
                GroupSchema(self.action1, id="FileGroup"),
                name="File menu number one",
                id="FileMenu",
            ))

        # Contributed menus.
        extra_menu = MenuSchema(
            GroupSchema(self.action2, id="FileGroup"),
            name="File menu number two",
            id="FileMenu",
        )

        extra_actions = [
            SchemaAddition(
                path="MenuBar",
                factory=lambda: extra_menu,
                id="DummyActionsSMenu",
            )
        ]

        # Build the final menu.
        builder = TaskActionManagerBuilder(
            task=Task(menu_bar=schema, extra_actions=extra_actions))
        actual = builder.create_menu_bar_manager()

        # Note that we expect the name of the menu to be inherited from
        # the menu in the menu bar schema that is defined first.
        desired = MenuBarManager(
            MenuManager(
                Group(self.action1, self.action2, id="FileGroup"),
                name="File menu number one",
                id="FileMenu",
            ),
            id="MenuBar",
        )
        self.assertActionElementsEqual(actual, desired)
コード例 #17
0
    def test_unwanted_merge(self):
        """ Test that we don't have automatic merges due to forgetting to set
        a schema ID. """

        # Initial menu.
        schema = MenuBarSchema(
            MenuSchema(
                GroupSchema(
                    self.action1, id='FileGroup'), name='File 1'))

        # Contributed menus.
        extra_menu = MenuSchema(
            GroupSchema(
                self.action2, id='FileGroup'), name='File 2')

        extra_actions = [
            SchemaAddition(
                path='MenuBar',
                factory=lambda: extra_menu,
                id='DummyActionsSMenu'),
        ]

        # Build the final menu.
        builder = TaskActionManagerBuilder(task=Task(
            menu_bar=schema, extra_actions=extra_actions))
        actual = builder.create_menu_bar_manager()

        # Note that we expect the name of the menu to be inherited from
        # the menu in the menu bar schema that is defined first.
        desired = MenuBarManager(
            MenuManager(
                Group(
                    self.action1, id='FileGroup'),
                name='File 1',
                id='MenuSchema_1'),
            MenuManager(
                Group(
                    self.action2, id='FileGroup'),
                name='File 2',
                id='MenuSchema_2'),
            id='MenuBar')
        self.assertActionElementsEqual(actual, desired)