diff --git a/lib/python/Plugins/Extensions/FileCommander/plugin.py b/lib/python/Plugins/Extensions/FileCommander/plugin.py index c36056d0157..e662381e26f 100644 --- a/lib/python/Plugins/Extensions/FileCommander/plugin.py +++ b/lib/python/Plugins/Extensions/FileCommander/plugin.py @@ -1010,7 +1010,7 @@ def makeSymlinkCallback(newName): def keyManageBookmarks(self, current): bookmarks = config.plugins.FileCommander.bookmarks.value - order = config.misc.pluginlist.fc_bookmarks_order.value.split(",") + order = eval(config.misc.pluginlist.fc_bookmarks_order.value) directory = current and self.sourceColumn.getCurrentDirectory() or self.sourceColumn.getPath() if directory in bookmarks: bookmarks.remove(directory) @@ -1024,7 +1024,7 @@ def keyManageBookmarks(self, current): self.displayStatus(_("Bookmark added.")) config.plugins.FileCommander.bookmarks.value = bookmarks config.plugins.FileCommander.bookmarks.save() - config.misc.pluginlist.fc_bookmarks_order.value = ",".join(order) + config.misc.pluginlist.fc_bookmarks_order.value = str(order) config.misc.pluginlist.fc_bookmarks_order.save() def keyMediaInfo(self): @@ -1576,11 +1576,11 @@ def selectBookmarkCallback(answer): bookmarks = [(x, x) for x in config.plugins.FileCommander.bookmarks.value] bookmarks.insert(0, (_("Storage Devices"), None)) - order = config.misc.pluginlist.fc_bookmarks_order.value.split(",") + order = eval(config.misc.pluginlist.fc_bookmarks_order.value) if order and _("Storage Devices") in order: order.remove(_("Storage Devices")) order.insert(0, _("Storage Devices")) - config.misc.pluginlist.fc_bookmarks_order.value = ",".join(order) + config.misc.pluginlist.fc_bookmarks_order.value = str(order) config.misc.pluginlist.fc_bookmarks_order.save() self.session.openWithCallback(selectBookmarkCallback, ChoiceBox, title=_("Select Bookmark"), list=bookmarks, reorderConfig="fc_bookmarks_order") diff --git a/lib/python/Screens/ChoiceBox.py b/lib/python/Screens/ChoiceBox.py index b6d2cbb4112..5f8e74ede2d 100644 --- a/lib/python/Screens/ChoiceBox.py +++ b/lib/python/Screens/ChoiceBox.py @@ -7,9 +7,9 @@ from Screens.Screen import Screen, ScreenSummary config.misc.pluginlist = ConfigSubsection() -config.misc.pluginlist.eventinfo_order = ConfigText(default="") -config.misc.pluginlist.extension_order = ConfigText(default="") -config.misc.pluginlist.fc_bookmarks_order = ConfigText(default="") +config.misc.pluginlist.eventinfo_order = ConfigText(default="[]") +config.misc.pluginlist.extension_order = ConfigText(default="[]") +config.misc.pluginlist.fc_bookmarks_order = ConfigText(default=f"['{_("Storage Devices")}']") class ChoiceBoxNew(Screen): @@ -32,7 +32,7 @@ def __init__(self, session, text="", choiceList=None, selection=0, buttonList=No if self.configOrder.value: prevList = [x for x in zip(choiceList, buttonList)] newList = [] - for button in self.configOrder.value.split(","): + for button in eval(self.configOrder.value): for entry in prevList: if entry[0][0] == button: prevList.remove(entry) @@ -181,7 +181,7 @@ def moveItem(self, direction): self["list"].instance.goLineDown() else: self["list"].instance.goLineUp() - self.configOrder.value = ",".join(x[0][0] for x in self.choiceList) + self.configOrder.value = str([x[0][0] for x in self.choiceList]) self.configOrder.save() def keyResetList(self): diff --git a/lib/python/Tools/Migration.py b/lib/python/Tools/Migration.py index a6333279c64..6b2c666ab04 100644 --- a/lib/python/Tools/Migration.py +++ b/lib/python/Tools/Migration.py @@ -1,3 +1,4 @@ +from ast import literal_eval from Components.config import ConfigBoolean, ConfigText, config @@ -10,9 +11,9 @@ def migrateSettings(): if migrationVersion < 1: migrateMenuSort() migrateTimeshift() - # elif migrationVersion < 2: - # migrateNextChange() - config.misc.migrationVersion.value = "1" + if migrationVersion < 2: + migrateReorderConfig() + config.misc.migrationVersion.value = "2" config.misc.migrationVersion.save() @@ -105,3 +106,16 @@ def migrateTimeshift(): getattr(config.timeshift, item[1]).save() except Exception as err: print("[Migration] migrateTimeshift Error: %s!" % str(err)) + +def migrateReorderConfig(): + # Convert ChoiceBox reorderConfig settings from ", " seperator to list representation. + try: + for (k, c) in config.misc.pluginlist.dict().items(): + try: + literal_eval(c.value) + except Exception: + print("[Migration] migrateReorderConfig: Value converted from '%s' to '%s'." % (c.value, str(c.value.split(",")))) + c.value = str(c.value.split(",")) + c.save() + except Exception as err: + print("[Migration] migrateReorderConfig Error: %s!" % str(err))