def test_single_top_level_menu_with_no_group(self):
        """ single top level menu with no group """

        action_sets = [
            ActionSet(
                menus = [
                    Menu(name='&File', path='MenuBar'),
                ]
            )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_bar_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that the 'File' menu was added to the 'additions' group
        # of the menubar.
        self.assertEqual(1, len(menu_bar_manager.groups))

        group = menu_bar_manager.find_group('additions')
        ids = [item.id for item in group.items]
        self.assertEqual(['File'], ids)

        return
    def test_top_level_menu_group(self):
        """ top level menu group """

        action_sets = [
            ActionSet(
                groups = [
                    Group(id='FileMenuGroup', path='MenuBar')
                ],

                menus = [
                    Menu(name='&File', path='MenuBar', group='FileMenuGroup'),
                ],
            )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that the 'File' menu was added to the 'FileMenuGroup'
        # group of the menubar.
        self.assertEqual(2, len(menu_manager.groups))

        ids = [group.id for group in menu_manager.groups]
        self.assertEqual(['FileMenuGroup', 'additions'], ids)

        group = menu_manager.find_group('FileMenuGroup')
        self.assertEqual('File', group.items[0].id)

        return
示例#3
0
    def test_sub_menus_no_groups(self):
        """ sub-menus no groups """

        # We split the contributions into different action sets just because
        # that is how it might end up in an actual application... not because
        # you *have* to split them up this way!
        action_sets = [
            ActionSet(menus=[
                Menu(name='&File', path='MenuBar'),
                Menu(name='&Edit', path='MenuBar'),
                Menu(name='&Tools', path='MenuBar'),
                Menu(name='&Help', path='MenuBar')
            ], ),
            ActionSet(menus=[
                Menu(name='&New', path='MenuBar/File'),
            ], )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure the 'New' sub-menu got added to the 'additions' group
        # of the 'File' menu.
        menu = menu_manager.find_item('File')
        additions = menu.find_group('additions')

        self.assertEqual('New', additions.items[0].id)

        return
示例#4
0
    def test_top_level_menus_no_groups_before_and_after(self):
        """ top level menus no groups, before and after """

        action_sets = [
            ActionSet(menus=[
                Menu(name='&Edit', path='MenuBar', after='File'),
            ], ),
            ActionSet(menus=[
                Menu(name='&File', path='MenuBar'),
            ], ),
            ActionSet(menus=[Menu(name='&Help', path='MenuBar')], ),
            ActionSet(menus=[
                Menu(name='&Tools', path='MenuBar', before='Help'),
            ], )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that all of the menus were added the the 'additions' group
        # of the menubar.
        self.assertEqual(1, len(menu_manager.groups))

        additions = menu_manager.find_group('additions')
        ids = [item.id for item in additions.items]
        self.assertEqual(['File', 'Edit', 'Tools', 'Help'], ids)

        return
示例#5
0
    def test_top_level_menu_group(self):
        """ top level menu group """

        action_sets = [
            ActionSet(
                groups=[Group(id='FileMenuGroup', path='MenuBar')],
                menus=[
                    Menu(name='&File', path='MenuBar', group='FileMenuGroup'),
                ],
            )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that the 'File' menu was added to the 'FileMenuGroup'
        # group of the menubar.
        self.assertEqual(2, len(menu_manager.groups))

        ids = [group.id for group in menu_manager.groups]
        self.assertEqual(['FileMenuGroup', 'additions'], ids)

        group = menu_manager.find_group('FileMenuGroup')
        self.assertEqual('File', group.items[0].id)

        return
示例#6
0
    def test_top_level_menus_with_no_groups(self):
        """ top level menus with_no groups """

        action_sets = [
            ActionSet(menus=[
                Menu(name='&File', path='MenuBar'),
                Menu(name='&Edit', path='MenuBar'),
                Menu(name='&Tools', path='MenuBar'),
                Menu(name='&Help', path='MenuBar')
            ], )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_bar_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that all of the menus were added the the 'additions' group
        # of the menubar (and in the right order!).
        self.assertEqual(1, len(menu_bar_manager.groups))

        group = menu_bar_manager.find_group('additions')
        ids = [item.id for item in group.items]
        self.assertEqual(['File', 'Edit', 'Tools', 'Help'], ids)

        return
    def test_top_level_menus_with_no_groups(self):
        """ top level menus with_no groups """

        action_sets = [
            ActionSet(
                menus = [
                    Menu(name='&File', path='MenuBar'),
                    Menu(name='&Edit', path='MenuBar'),
                    Menu(name='&Tools', path='MenuBar'),
                    Menu(name='&Help', path='MenuBar')
                ],
            )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_bar_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that all of the menus were added the the 'additions' group
        # of the menubar (and in the right order!).
        self.assertEqual(1, len(menu_bar_manager.groups))

        group = menu_bar_manager.find_group('additions')
        ids = [item.id for item in group.items]
        self.assertEqual(['File', 'Edit', 'Tools', 'Help'], ids)

        return
示例#8
0
    def test_actions_and_menus_in_groups(self):
        """ actions and menus in groups """

        action_sets = [
            ActionSet(menus=[
                Menu(name='&File',
                     path='MenuBar',
                     groups=['NewGroup', 'ExitGroup']),
                Menu(name='&Edit', path='MenuBar'),
                Menu(name='&Tools', path='MenuBar'),
                Menu(name='&Help', path='MenuBar')
            ], ),
            ActionSet(menus=[
                Menu(name='&New', path='MenuBar/File', group='NewGroup'),
            ], ),
            ActionSet(actions=[
                Action(
                    class_name='Exit', path='MenuBar/File', group='ExitGroup'),
            ]),
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that all of the menus were added the the 'additions' group
        # of the menubar.
        self.assertEqual(1, len(menu_manager.groups))

        additions = menu_manager.find_group('additions')
        ids = [item.id for item in additions.items]
        self.assertEqual(['File', 'Edit', 'Tools', 'Help'], ids)

        # Make sure the 'File' menu has got 3 groups, 'NewGroup', 'ExitGroup'
        # and 'additions' (and in that order!).
        menu = menu_manager.find_item('File')
        self.assertEqual(3, len(menu.groups))

        ids = [group.id for group in menu.groups]
        self.assertEqual(['NewGroup', 'ExitGroup', 'additions'], ids)

        # Make sure the 'New' sub-menu got added to the 'NewGroup' group
        # of the 'File' menu.
        menu = menu_manager.find_item('File')
        group = menu.find_group('NewGroup')

        self.assertEqual('New', group.items[0].id)

        # Make sure the 'Exit' action got added to the 'ExitGroup' group
        # of the 'File' menu.
        menu = menu_manager.find_item('File')
        group = menu.find_group('ExitGroup')

        self.assertEqual('Exit', group.items[0].id)

        return
    def test_actions_make_submenus_before_and_after(self):
        """ actions make submenus before and after """

        action_sets = [
            ActionSet(
                actions = [
                    Action(
                        class_name = 'File',
                        path       = 'MenuBar/File/New',
                        after      = 'Folder'
                    ),

                    Action(
                        class_name = 'Project',
                        path       = 'MenuBar/File/New',
                        before     = 'Folder'
                    ),

                    Action(
                        class_name = 'Folder',
                        path       = 'MenuBar/File/New',
                    ),
                ]
            )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure the 'File' menu got added to the 'additions' group of the
        # menubar.
        self.assertEqual(1, len(menu_manager.groups))

        additions = menu_manager.find_group('additions')
        self.assertEqual('File', additions.items[0].id)

        # Make sure the 'New' sub-menu got added to the 'additions' group
        # of the 'File' menu.
        menu = menu_manager.find_item('File')
        additions = menu.find_group('additions')

        self.assertEqual('New', additions.items[0].id)

        # Make sure the new 'Folder' and 'File' actions got added to the
        # 'additions' group of the 'New' menu.
        menu = menu_manager.find_item('File/New')
        additions = menu.find_group('additions')

        ids = [item.id for item in additions.items]
        self.assertEqual(['Project', 'Folder', 'File'], ids)

        return
    def test_duplicate_group(self):
        """ duplicate group """

        action_sets = [
            ActionSet(
                menus = [
                    Menu(
                        name   = '&File',
                        path   = 'MenuBar',
                        groups = ['NewGroup', 'ExitGroup']
                    ),
                ],
            ),

            ActionSet(
                menus = [
                    Menu(
                        name   = '&File',
                        path   = 'MenuBar',
                        groups = ['NewGroup']
                    ),
                ],
            ),
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that all of the menus were added the the 'additions' group
        # of the menubar.
        self.assertEqual(1, len(menu_manager.groups))

        # Make sure we only get *one* 'File' menu.
        additions = menu_manager.find_group('additions')
        ids = [item.id for item in additions.items]
        self.assertEqual(['File'], ids)

        # Make sure the 'File' menu has got 3 groups, 'NewGroup', 'ExitGroup'
        # and 'additions' (and in that order!).
        menu = menu_manager.find_item('File')
        self.assertEqual(3, len(menu.groups))

        ids = [group.id for group in menu.groups]
        self.assertEqual(
            ['NewGroup', 'ExitGroup', 'additions'], ids
        )

        return
示例#11
0
    def test_actions_make_submenus_before_and_after(self):
        """ actions make submenus before and after """

        action_sets = [
            ActionSet(actions=[
                Action(class_name='File',
                       path='MenuBar/File/New',
                       after='Folder'),
                Action(class_name='Project',
                       path='MenuBar/File/New',
                       before='Folder'),
                Action(
                    class_name='Folder',
                    path='MenuBar/File/New',
                ),
            ])
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure the 'File' menu got added to the 'additions' group of the
        # menubar.
        self.assertEqual(1, len(menu_manager.groups))

        additions = menu_manager.find_group('additions')
        self.assertEqual('File', additions.items[0].id)

        # Make sure the 'New' sub-menu got added to the 'additions' group
        # of the 'File' menu.
        menu = menu_manager.find_item('File')
        additions = menu.find_group('additions')

        self.assertEqual('New', additions.items[0].id)

        # Make sure the new 'Folder' and 'File' actions got added to the
        # 'additions' group of the 'New' menu.
        menu = menu_manager.find_item('File/New')
        additions = menu.find_group('additions')

        ids = [item.id for item in additions.items]
        self.assertEqual(['Project', 'Folder', 'File'], ids)

        return
    def test_actions_no_groups(self):
        """ actions no groups """

        # We split the contributions into different action sets just because
        # that is how it might end up in an actual application... not because
        # you *have* to split them up this way!
        action_sets = [
            ActionSet(
                menus = [
                    Menu(name='&File', path='MenuBar'),
                    Menu(name='&Edit', path='MenuBar'),
                    Menu(name='&Tools', path='MenuBar'),
                    Menu(name='&Help', path='MenuBar')
                ]
            ),

            ActionSet(
                actions = [
                    Action(class_name='Exit', path='MenuBar/File'),
                    Action(class_name='About', path='MenuBar/Help')
                ]
            )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure the 'ExitAction' action got added to the 'additions' group
        # of the 'File' menu.
        menu = menu_manager.find_item('File')
        additions = menu.find_group('additions')

        self.assertEqual('Exit', additions.items[0].id)

        # Make sure the 'AboutAction' action got added to the 'additions' group
        # of the 'File' menu.
        menu = menu_manager.find_item('Help')
        additions = menu.find_group('additions')

        self.assertEqual('About', additions.items[0].id)

        return
    def test_top_level_menus_no_groups_before_and_after(self):
        """ top level menus no groups, before and after """

        action_sets = [
            ActionSet(
                menus = [
                    Menu(name='&Edit', path='MenuBar', after='File'),
                ],
            ),

            ActionSet(
                menus = [
                    Menu(name='&File', path='MenuBar'),
                ],
            ),

            ActionSet(
                menus = [
                    Menu(name='&Help', path='MenuBar')
                ],
            ),

            ActionSet(
                menus = [
                    Menu(name='&Tools', path='MenuBar', before='Help'),
                ],
            )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that all of the menus were added the the 'additions' group
        # of the menubar.
        self.assertEqual(1, len(menu_manager.groups))

        additions = menu_manager.find_group('additions')
        ids = [item.id for item in additions.items]
        self.assertEqual(['File', 'Edit', 'Tools', 'Help'], ids)

        return
示例#14
0
    def test_single_top_level_group(self):
        """ single top level group """

        action_sets = [
            ActionSet(groups=[
                Group(id='FileMenuGroup', path='MenuBar'),
            ])
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_bar_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that the group was added before the 'additions' group.
        self.assertEqual(2, len(menu_bar_manager.groups))

        ids = [group.id for group in menu_bar_manager.groups]
        self.assertEqual(['FileMenuGroup', 'additions'], ids)

        return
示例#15
0
    def test_duplicate_menu(self):
        """ duplicate menu """

        action_sets = [
            ActionSet(menus=[
                Menu(name='&File',
                     path='MenuBar',
                     groups=['NewGroup', 'ExitGroup']),
            ], ),
            ActionSet(menus=[
                Menu(name='&File', path='MenuBar', groups=['ExtraGroup']),
            ], ),
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that all of the menus were added the the 'additions' group
        # of the menubar.
        self.assertEqual(1, len(menu_manager.groups))

        # Make sure we only get *one* 'File' menu.
        additions = menu_manager.find_group('additions')
        ids = [item.id for item in additions.items]
        self.assertEqual(['File'], ids)

        # Make sure the 'File' menu has got 4 groups, 'NewGroup', 'ExitGroup',
        # 'ExtraGroup' and 'additions' (and in that order!).
        menu = menu_manager.find_item('File')
        self.assertEqual(4, len(menu.groups))

        ids = [group.id for group in menu.groups]
        self.assertEqual(['NewGroup', 'ExitGroup', 'ExtraGroup', 'additions'],
                         ids)

        return
示例#16
0
    def test_single_top_level_menu_with_no_group(self):
        """ single top level menu with no group """

        action_sets = [
            ActionSet(menus=[
                Menu(name='&File', path='MenuBar'),
            ])
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_bar_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that the 'File' menu was added to the 'additions' group
        # of the menubar.
        self.assertEqual(1, len(menu_bar_manager.groups))

        group = menu_bar_manager.find_group('additions')
        ids = [item.id for item in group.items]
        self.assertEqual(['File'], ids)

        return
    def test_single_top_level_group(self):
        """ single top level group """

        action_sets = [
            ActionSet(
                groups = [
                    Group(id='FileMenuGroup', path='MenuBar'),
                ]
            )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_bar_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that the group was added before the 'additions' group.
        self.assertEqual(2, len(menu_bar_manager.groups))

        ids = [group.id for group in menu_bar_manager.groups]
        self.assertEqual(['FileMenuGroup', 'additions'], ids)

        return
示例#18
0
    def test_menu_with_nonexistent_sibling(self):
        """ menu with non-existent sibling """

        action_sets = [
            ActionSet(
                menus=[Menu(name='&File', path='MenuBar', before='Bogus')])
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        self.failUnlessRaises(ValueError, builder.create_menu_bar_manager,
                              'MenuBar')

        return
示例#19
0
    def test_top_level_menu_non_existent_group(self):
        """ top level menu non-existent group """

        action_sets = [
            ActionSet(menus=[
                Menu(name='&File', path='MenuBar', group='FileMenuGroup'),
            ], )
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        self.failUnlessRaises(ValueError, builder.create_menu_bar_manager,
                              'MenuBar')

        return
示例#20
0
    def test_action_with_nonexistent_group(self):
        """ action with non-existent group """

        action_sets = [
            ActionSet(actions=[
                Action(class_name='Exit', path='MenuBar/File', group='Bogus'),
            ]),
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        self.failUnlessRaises(ValueError, builder.create_menu_bar_manager,
                              'MenuBar')

        return
示例#21
0
    def test_action_with_path_component_that_is_not_a_menu(self):
        """ action with path component that is not a menu """

        action_sets = [
            ActionSet(actions=[
                Action(class_name='Exit', path='MenuBar/File'),
                Action(
                    class_name='Broken',
                    path='MenuBar/File/Exit',
                ),
            ]),
        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        self.failUnlessRaises(ValueError, builder.create_menu_bar_manager,
                              'MenuBar')

        return
    def test_actions_and_menus_in_groups(self):
        """ actions and menus in groups """

        action_sets = [
            ActionSet(
                menus = [
                    Menu(
                        name   = '&File',
                        path   = 'MenuBar',
                        groups = ['NewGroup', 'ExitGroup']
                    ),

                    Menu(name='&Edit', path='MenuBar'),
                    Menu(name='&Tools', path='MenuBar'),
                    Menu(name='&Help', path='MenuBar')
                ],
            ),

            ActionSet(
                menus = [
                    Menu(name='&New', path='MenuBar/File', group='NewGroup'),
                ],
            ),

            ActionSet(
                actions = [
                    Action(
                        class_name = 'Exit',
                        path       = 'MenuBar/File',
                        group      = 'ExitGroup'
                    ),
                ]
            ),

        ]

        # Create a builder containing the action set.
        builder = DummyActionManagerBuilder(action_sets=action_sets)

        # Create a menu bar manager for the 'MenuBar'.
        menu_manager = builder.create_menu_bar_manager('MenuBar')

        # Make sure that all of the menus were added the the 'additions' group
        # of the menubar.
        self.assertEqual(1, len(menu_manager.groups))

        additions = menu_manager.find_group('additions')
        ids = [item.id for item in additions.items]
        self.assertEqual(['File', 'Edit', 'Tools', 'Help'], ids)

        # Make sure the 'File' menu has got 3 groups, 'NewGroup', 'ExitGroup'
        # and 'additions' (and in that order!).
        menu = menu_manager.find_item('File')
        self.assertEqual(3, len(menu.groups))

        ids = [group.id for group in menu.groups]
        self.assertEqual(['NewGroup', 'ExitGroup', 'additions'], ids)

        # Make sure the 'New' sub-menu got added to the 'NewGroup' group
        # of the 'File' menu.
        menu = menu_manager.find_item('File')
        group = menu.find_group('NewGroup')

        self.assertEqual('New', group.items[0].id)

        # Make sure the 'Exit' action got added to the 'ExitGroup' group
        # of the 'File' menu.
        menu = menu_manager.find_item('File')
        group = menu.find_group('ExitGroup')

        self.assertEqual('Exit', group.items[0].id)

        return