diff --git a/i18n/si/msgs.jaml b/i18n/si/msgs.jaml index 3b098c6f8..3ea574729 100644 --- a/i18n/si/msgs.jaml +++ b/i18n/si/msgs.jaml @@ -976,6 +976,10 @@ utils/filedialogs.py: (none): false def `update_file_list`: basedir: false + class `LocalRecentPathsWComboMixin`: + def `migrate_to_local_recent_paths`: + recent_paths: false + active_path: false utils/itemdelegates.py: A: false class `ModelItemCache`: diff --git a/orangewidget/utils/filedialogs.py b/orangewidget/utils/filedialogs.py index d1b396644..297edcc54 100644 --- a/orangewidget/utils/filedialogs.py +++ b/orangewidget/utils/filedialogs.py @@ -624,3 +624,10 @@ def merge_paths(cls, old_paths: list[RecentPath]): def last_path(self): return self.active_path and self.active_path.abspath + + @classmethod + def migrate_to_local_recent_paths(cls, settings): + paths = settings.pop("recent_paths", []) + if paths: + cls.merge_paths(paths) + settings["active_path"] = paths[0] \ No newline at end of file diff --git a/orangewidget/utils/tests/test_filedialogs.py b/orangewidget/utils/tests/test_filedialogs.py index c29d4eb20..e9c3de44e 100644 --- a/orangewidget/utils/tests/test_filedialogs.py +++ b/orangewidget/utils/tests/test_filedialogs.py @@ -6,6 +6,7 @@ import unittest from unittest.mock import Mock, patch from tempfile import NamedTemporaryFile +import time from AnyQt.QtCore import QSettings, QCoreApplication @@ -336,6 +337,13 @@ def test_add_select_file(self): self.assertEqual(["baz.txt", "foo.txt", "bar.txt"], [path.basename for path in a.recent_paths]) + def test_use_migrate_settings_from_mixin(self): + # Fail after jan 1, 2028 + if time.gmtime().tm_year >= 2028: + self.fail( + "The mixin provides migrate_to_local_recent_paths, but widgets duplicate its code instead.\n" + "Call the provided method instead, and remove this test.") + class TestLocalRecentPathsWComboMixin(WidgetTest): def test_init(self):