def test_add_script_doesnt_add_duplicates(self, get, set):
        menu = RecentlyClosedScriptsMenu(None)

        menu.add_script_to_settings("C:/script1.py")

        get.assert_called_once_with(RECENT_SCRIPTS_KEY)
        set.assert_not_called()
    def test_add_script_doesnt_add_empty_string(self, get, set):
        menu = RecentlyClosedScriptsMenu(None)

        menu.add_script_to_settings("")

        get.assert_not_called()
        set.assert_not_called()
    def test_remove_script_from_settings_removes_given_path(self, get, set):
        menu = RecentlyClosedScriptsMenu(None)

        menu.remove_script_from_settings("C:/script1.py")

        get.assert_called_once_with(RECENT_SCRIPTS_KEY)
        set.assert_called_once_with(RECENT_SCRIPTS_KEY, [(0, "C:/script2.py")])
    def test_add_script_to_settings_adds_a_script_to_settings(self, get, set):
        menu = RecentlyClosedScriptsMenu(None)

        menu.add_script_to_settings("C:/script3.py")

        get.assert_called_once_with(RECENT_SCRIPTS_KEY)
        set.assert_called_once_with(RECENT_SCRIPTS_KEY, [(0, "C:/script3.py"),
                                                         (1, "C:/script1.py"),
                                                         (2, "C:/script2.py")])
    def test_load_scripts_loads_scripts_from_settings(self, get):
        menu = RecentlyClosedScriptsMenu(None)

        load = menu._get_scripts_from_settings()

        get.assert_called_once_with(RECENT_SCRIPTS_KEY)
        self.assertEqual(3, len(load))
        self.assertTrue("C:/script1.py" in load)
        self.assertTrue("C:/script2.py" in load)
        self.assertTrue("C:/script3.py" in load)
    def test_open_script_doesnt_open_script_that_doesnt_exist(
            self, warning, remove_script_from_settings, __):
        mock_mainwindow = MockQObject()
        menu = RecentlyClosedScriptsMenu(mock_mainwindow)

        menu.open_script(fake_script)

        mock_mainwindow.editor.open_file_in_new_tab.assert_not_called()
        remove_script_from_settings.assert_called_once_with(fake_script)
        warning.assert_called_once()
    def test_open_script_attempts_to_open_scripts_that_exists(self, _):
        mock_mainwindow = MockQObject()
        menu = RecentlyClosedScriptsMenu(mock_mainwindow)
        os.mkdir(working_directory)
        open(fake_script, "w+").close()

        menu.open_script(fake_script)

        mock_mainwindow.editor.open_file_in_new_tab.assert_called_once_with(
            fake_script)
    def test_add_script_adds_new_scripts_to_the_first_index_and_removes_excess_scripts_from_the_last_index(
            self, get, set):
        menu = RecentlyClosedScriptsMenu(None)

        menu.add_script_to_settings("11")

        get.assert_called_once_with(RECENT_SCRIPTS_KEY)
        set.assert_called_once_with(RECENT_SCRIPTS_KEY, [(0, '11'), (1, '1'),
                                                         (2, '2'), (3, '3'),
                                                         (4, '4'), (5, '5'),
                                                         (6, '6'), (7, '7'),
                                                         (8, '8'), (9, '9')])
    def test_add_script_doesnt_add_more_than_max_number_of_scripts(
            self, get, set):
        menu = RecentlyClosedScriptsMenu(None)

        menu.add_script_to_settings("11")

        get.assert_called_once_with(RECENT_SCRIPTS_KEY)
        self.assertEqual(RECENT_SCRIPT_MAX_NUMBER, len(set.call_args[0][1]))
        set.assert_called_once_with(RECENT_SCRIPTS_KEY, [(0, '11'), (1, '1'),
                                                         (2, '2'), (3, '3'),
                                                         (4, '4'), (5, '5'),
                                                         (6, '6'), (7, '7'),
                                                         (8, '8'), (9, '9')])
    def test_repopulate_menu_is_called_on_aboutToShow_signal_being_triggered(
            self, repopulate_menu, _):
        menu = RecentlyClosedScriptsMenu(None)

        menu.aboutToShow.emit()

        repopulate_menu.assert_called_once()
    def test_repopulate_menu_clears_and_then_populates(self, populate_menu, _):
        fake_object = FakeQObject()
        menu = RecentlyClosedScriptsMenu(None)
        menu.addAction(QAction(fake_object))

        self.assertEqual(len(menu.actions()), 1)

        menu.repopulate_menu()

        self.assertEqual(len(menu.actions()), 0)
        populate_menu.assert_called_once()
    def test_populate_menu_adds_same_number_of_actions_as_script_paths(
            self, _, __):
        fake_object = FakeQObject()
        menu = RecentlyClosedScriptsMenu(fake_object)

        self.assertEqual(len(menu.actions()), 0)
        menu.populate_menu()

        self.assertEqual(len(menu.actions()), 3)
        self.assertEqual(menu.actions()[0].text(), "1")
        self.assertEqual(menu.actions()[1].text(), "2")
        self.assertEqual(menu.actions()[2].text(), "3")
    def test_populate_menu_adds_a_default_if_no_scripts_found(self, _, __):
        fake_object = FakeQObject()
        menu = RecentlyClosedScriptsMenu(fake_object)

        self.assertEqual(len(menu.actions()), 0)

        menu.populate_menu()

        self.assertEqual(len(menu.actions()), 1)
        self.assertEqual(menu.actions()[0].text(),
                         "No recently closed scripts found")
示例#14
0
    def create_actions(self):
        # --- general application menu options --
        # file menu
        action_open = create_action(self,
                                    "Open Script",
                                    on_triggered=self.open_file,
                                    shortcut="Ctrl+O")
        action_load_project = create_action(self,
                                            "Open Project",
                                            on_triggered=self.load_project)
        action_save_script = create_action(self,
                                           "Save Script",
                                           on_triggered=self.save_script,
                                           shortcut="Ctrl+S")
        action_save_script_as = create_action(self,
                                              "Save Script as...",
                                              on_triggered=self.save_script_as)
        action_generate_ws_script = create_action(
            self,
            "Generate Recovery Script",
            on_triggered=self.generate_script_from_workspaces)
        action_save_project = create_action(self,
                                            "Save Project",
                                            on_triggered=self.save_project)
        action_save_project_as = create_action(
            self, "Save Project as...", on_triggered=self.save_project_as)
        action_manage_directories = create_action(
            self,
            "Manage User Directories",
            on_triggered=self.open_manage_directories)
        action_script_repository = create_action(
            self,
            "Script Repository",
            on_triggered=self.open_script_repository)
        action_settings = create_action(self,
                                        "Settings",
                                        on_triggered=self.open_settings_window)
        action_quit = create_action(self,
                                    "&Quit",
                                    on_triggered=self.close,
                                    shortcut="Ctrl+Q")
        action_clear_all_memory = create_action(
            self,
            "Clear All Memory",
            on_triggered=self.clear_all_memory_action,
            shortcut="Ctrl+Shift+L")

        menu_recently_closed_scripts = RecentlyClosedScriptsMenu(self)
        self.editor.editors.sig_tab_closed.connect(
            menu_recently_closed_scripts.add_script_to_settings)

        self.file_menu_actions = [
            action_open, action_load_project, None, action_save_script,
            action_save_script_as, menu_recently_closed_scripts,
            action_generate_ws_script, None, action_save_project,
            action_save_project_as, None, action_settings, None,
            action_manage_directories, None, action_script_repository, None,
            action_clear_all_memory, None, action_quit
        ]

        # view menu
        action_restore_default = create_action(
            self,
            "Restore Default Layout",
            on_triggered=self.setup_default_layouts,
            shortcut="Shift+F10",
            shortcut_context=Qt.ApplicationShortcut)

        self.view_menu_layouts = self.view_menu.addMenu("&User Layouts")
        self.populate_layout_menu()

        self.view_menu_actions = [action_restore_default, None
                                  ] + self.create_widget_actions()

        # help menu
        action_mantid_help = create_action(
            self,
            "Mantid Help",
            on_triggered=self.open_mantid_help,
            shortcut='F1',
            shortcut_context=Qt.ApplicationShortcut)
        action_algorithm_descriptions = create_action(
            self,
            'Algorithm Descriptions',
            on_triggered=self.open_algorithm_descriptions_help)
        action_mantid_concepts = create_action(
            self,
            "Mantid Concepts",
            on_triggered=self.open_mantid_concepts_help)
        action_mantid_homepage = create_action(
            self, "Mantid Homepage", on_triggered=self.open_mantid_homepage)
        action_mantid_forum = create_action(
            self, "Mantid Forum", on_triggered=self.open_mantid_forum)
        action_about = create_action(self,
                                     "About Mantid Workbench",
                                     on_triggered=self.open_about)

        self.help_menu_actions = [
            action_mantid_help, action_mantid_concepts,
            action_algorithm_descriptions, None, action_mantid_homepage,
            action_mantid_forum, None, action_about
        ]
    def test_load_scripts_from_settings_returns_nothing_if_config_is_missing(
            self, get):
        menu = RecentlyClosedScriptsMenu(None)

        self.assertEqual([], menu._get_scripts_from_settings())
        get.assert_called_once_with(RECENT_SCRIPTS_KEY)
    def test_size_path_doesnt_shorten_short_enough_string(self, _):
        menu = RecentlyClosedScriptsMenu(None)
        path = "12345678910"

        self.assertEqual(path, menu.size_path_correctly(path))
    def test_size_path_correctly_shortens_too_long_string(self, _):
        menu = RecentlyClosedScriptsMenu(None)
        path = "12345678912345678912345678912345678912845176451762534716412786459176549671549673"

        self.assertEqual("...534716412786459176549671549673",
                         menu.size_path_correctly(path))