diff options
| author | Travis Lane <63308171+Tormak9970@users.noreply.github.com> | 2023-04-03 17:21:31 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-03 14:21:31 -0700 |
| commit | 0f36e87ccea0d9bf2a3db8ee858f27d9d1b2d796 (patch) | |
| tree | e3018e7096401d387923f388637c5a45f6fa6185 /backend | |
| parent | fd325ef1cc1d3e78b5e7686819e05606cc79d963 (diff) | |
| download | decky-loader-0f36e87ccea0d9bf2a3db8ee858f27d9d1b2d796.tar.gz decky-loader-0f36e87ccea0d9bf2a3db8ee858f27d9d1b2d796.zip | |
Add plugin reordering (#378)
* feat: started work on saving plugin order
* feat: implemented local ReorderableList
* feat: reoder complete except for usage of DFL
* switched to using dfl reorderableList
* fix: added missing file and removed frag
* updated to newest dfl
* Update defsettings.json
* fix: plugin order was missing on init
* fix: now await pluginOrder
* fix: moved the plugin-order load to plugin-loader
* chore: v6 and dfl bump
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/browser.py | 12 | ||||
| -rw-r--r-- | backend/main.py | 5 |
2 files changed, 15 insertions, 2 deletions
diff --git a/backend/browser.py b/backend/browser.py index 97fa3f11..12ca6644 100644 --- a/backend/browser.py +++ b/backend/browser.py @@ -30,10 +30,11 @@ class PluginInstallContext: self.hash = hash class PluginBrowser: - def __init__(self, plugin_path, plugins, loader) -> None: + def __init__(self, plugin_path, plugins, loader, settings) -> None: self.plugin_path = plugin_path self.plugins = plugins self.loader = loader + self.settings = settings self.install_requests = {} def _unzip_to_plugin_dir(self, zip, name, hash): @@ -123,6 +124,10 @@ class PluginBrowser: logger.debug("Plugin %s was stopped", name) del self.plugins[name] logger.debug("Plugin %s was removed from the dictionary", name) + current_plugin_order = self.settings.getSetting("pluginOrder") + current_plugin_order.remove(name) + self.settings.setSetting("pluginOrder", current_plugin_order) + logger.debug("Plugin %s was removed from the pluginOrder setting", name) logger.debug("removing files %s" % str(name)) rmtree(plugin_dir) except FileNotFoundError: @@ -170,6 +175,11 @@ class PluginBrowser: self.loader.plugins[name].stop() self.loader.plugins.pop(name, None) await sleep(1) + + current_plugin_order = self.settings.getSetting("pluginOrder") + current_plugin_order.append(name) + self.settings.setSetting("pluginOrder", current_plugin_order) + logger.debug("Plugin %s was added to the pluginOrder setting", name) self.loader.import_plugin(path.join(plugin_dir, "main.py"), plugin_folder) else: logger.fatal(f"Failed Downloading Remote Binaries") diff --git a/backend/main.py b/backend/main.py index de06e633..2c3ead79 100644 --- a/backend/main.py +++ b/backend/main.py @@ -71,8 +71,8 @@ class PluginManager: ) }) self.plugin_loader = Loader(self.web_app, CONFIG["plugin_path"], self.loop, CONFIG["live_reload"]) - self.plugin_browser = PluginBrowser(CONFIG["plugin_path"], self.plugin_loader.plugins, self.plugin_loader) self.settings = SettingsManager("loader", path.join(HOMEBREW_PATH, "settings")) + self.plugin_browser = PluginBrowser(CONFIG["plugin_path"], self.plugin_loader.plugins, self.plugin_loader, self.settings) self.utilities = Utilities(self) self.updater = Updater(self) @@ -109,6 +109,9 @@ class PluginManager: logger.debug("Loading plugins") self.plugin_loader.import_plugins() # await inject_to_tab("SP", "window.syncDeckyPlugins();") + if self.settings.getSetting("pluginOrder", None) == None: + self.settings.setSetting("pluginOrder", list(self.plugin_loader.plugins.keys())) + logger.debug("Did not find pluginOrder setting, set it to default") async def loader_reinjector(self): while True: |
